@redocly/openapi-docs 3.0.0-alpha.23 → 3.0.0-alpha.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/console.redocly-openapi-docs.min.js +2 -2
  2. package/dist/oauth2-redirect.js +1 -1
  3. package/dist/redocly-openapi-docs.min.js +751 -754
  4. package/lib/components/ApiInfo/ApiInfo.js +1 -1
  5. package/lib/models/example.js +1 -1
  6. package/lib/models/field.js +1 -1
  7. package/lib/models/group.js +1 -1
  8. package/lib/models/operation.js +1 -1
  9. package/lib/models/request.js +1 -1
  10. package/lib/models/response.js +1 -1
  11. package/lib/models/schema.js +1 -1
  12. package/lib/models/security.js +1 -1
  13. package/lib/services/OpenAPIParser.js +1 -1
  14. package/lib/services/menu/builder.js +1 -1
  15. package/lib/services/menu/tags.js +1 -1
  16. package/lib/types/open-api.d.ts +35 -29
  17. package/lib/utils/helpers.d.ts +2 -1
  18. package/lib/utils/helpers.js +1 -1
  19. package/lib/utils/openapi.d.ts +2 -4
  20. package/lib/utils/openapi.js +1 -1
  21. package/lib-esm/components/ApiInfo/ApiInfo.js +1 -1
  22. package/lib-esm/models/example.js +1 -1
  23. package/lib-esm/models/field.js +1 -1
  24. package/lib-esm/models/group.js +1 -1
  25. package/lib-esm/models/operation.js +1 -1
  26. package/lib-esm/models/request.js +1 -1
  27. package/lib-esm/models/response.js +1 -1
  28. package/lib-esm/models/schema.js +1 -1
  29. package/lib-esm/models/security.js +1 -1
  30. package/lib-esm/services/OpenAPIParser.js +1 -1
  31. package/lib-esm/services/menu/builder.js +1 -1
  32. package/lib-esm/services/menu/tags.js +1 -1
  33. package/lib-esm/types/open-api.d.ts +35 -29
  34. package/lib-esm/utils/helpers.d.ts +2 -1
  35. package/lib-esm/utils/helpers.js +1 -1
  36. package/lib-esm/utils/openapi.d.ts +2 -4
  37. package/lib-esm/utils/openapi.js +1 -1
  38. package/package.json +2 -2
@@ -1,2 +1,2 @@
1
- import{extractExtensions,getOperationId,getOperationName,getStatusCodeType,isStatusCode,JsonPointer,mergeParams,normalizeServers,sortByField,sortByRequired}from"../utils";import{getInitialServerWithVariables}from"../components/rightPanel/utils";import{getCallback}from"./callback";import{getField}from"./field";import{getRequestBody}from"./request";import{getSecurityRequirement}from"./security";import{getCodeSample}from"../services";import{getResponse}from"./response";export function isPayloadSample(e){return"payload"===e.lang&&"requestBodyContent"in e}let isCodeSamplesWarningPrinted=!1;export function getOperation(e,t,r,a,o,i){var s,n,l,p;const d=t.isWebhook,m={operationDefinition:t,parent:r,pointer:t.pointer,description:t.description,externalDocs:t.externalDocs,deprecated:!!t.deprecated,httpVerb:t.httpVerb,operationId:t.operationId,path:t.pathName,isWebhook:d,isCallback:Boolean(null==i?void 0:i.isCallback),isEvent:(null==i?void 0:i.isCallback)||d,name:getOperationName(t),defaultExampleName:t.defaultSampleName,type:"operation",callbackId:null==i?void 0:i.id,href:o,get callbacks(){return Object.keys(t.callbacks||[]).map((i=>{var s;return getCallback(e,i,null===(s=t.callbacks)||void 0===s?void 0:s[i],m.pointer,a,o,r)}))},get responses(){let r=!1;return Object.keys(t.responses||[]).filter((e=>"default"===e||("success"===getStatusCodeType(e)&&(r=!0),isStatusCode(e)))).map((o=>getResponse({parser:e,code:o,defaultAsError:r,infoOrRef:t.responses[o],options:a,isEvent:m.isEvent,operation:m})))},get parameters(){let r=mergeParams(e,t.pathParameters,t.parameters,{pathPointer:JsonPointer.dirName(m.pointer),operationPointer:m.pointer}).map((({paramOrRef:t,pointer:r})=>getField(e,t,r,a,{operation:m,type:"request"})));return a.sortPropsAlphabetically&&(r=sortByField(r,"name")),a.requiredPropsFirst&&(r=sortByRequired(r)),r}};(null==i?void 0:i.isCallback)?(m.security=(t.security||[]).map((t=>getSecurityRequirement({requirement:t,parser:e}))),m.servers=normalizeServers("",t.servers||t.pathServers||[])):(m.id=getOperationId(t,r),m.security=(t.security||e.definition.security||[]).map((t=>getSecurityRequirement({requirement:t,parser:e}))),m.servers=normalizeServers(e.definitionUrl,mergeInMockServer(t.servers||t.pathServers||e.definition.servers||[],a.mockServer))),a.showExtensions&&(m.extensions=extractExtensions(t,a.showExtensions)),m.activeServer=getInitialServerWithVariables(m.servers),m.requestBody=t.requestBody&&getRequestBody({parser:e,infoOrRef:t.requestBody,options:a,operation:m,isEvent:m.isEvent});const c=null===(n=null===(s=m.requestBody)||void 0===s?void 0:s.content)||void 0===n?void 0:n.mediaTypes,[u]=c||[],[g]=Object.keys((null==u?void 0:u.examples)||[]);m.activeExampleName=!1===t.defaultSampleName?void 0:t.defaultSampleName||g;const v=null===(l=m.requestBody)||void 0===l?void 0:l.content;m.payload=(null==v?void 0:v.hasSample)?{lang:"payload",label:"Payload",source:"",requestBodyContent:v}:void 0,m.definitionSamples=t["x-codeSamples"]||t["x-code-samples"]||[],t["x-code-samples"]&&!isCodeSamplesWarningPrinted&&(isCodeSamplesWarningPrinted=!0,console.warn('"x-code-samples" is deprecated. Use "x-codeSamples" instead')),m.hasSamples=(null==v?void 0:v.hasSample)||m.definitionSamples.length>0;const{payloadSampleIdx:S,hideRequestPayloadSample:y}=a;let f=[];if(!d){const t=a.generateCodeSamples||{},r=new Set(m.definitionSamples.map((({lang:e})=>e.toLowerCase())));f=generateCodeSamples((null===(p=t.languages)||void 0===p?void 0:p.filter((({lang:e})=>!r.has(e.toLowerCase()))))||[],t,e.definition,a.generatedPayloadSamplesMaxDepth)}const h=m.definitionSamples.concat(f),b=Math.min(h.length,S);return m.payload&&!y&&h.splice(b,0,m.payload),m.allCodeSamples=h,m.hideTryItPanel=!0===t["x-hideTryItPanel"],m}function generateCodeSamples(e,{skipOptionalParameters:t,withOAuth2Call:r},a,o){return e.map((({lang:e,label:i,options:s})=>({lang:e,label:i,get:i=>getCodeSample(Object.assign(Object.assign({},i),{lang:e,options:Object.assign(Object.assign({},s),{skipOptionalParameters:t,withOAuth2Call:r,spec:a,generatedPayloadSamplesMaxDepth:o})}))})))}function mergeInMockServer(e,t){if(!t)return e;const r={url:t.url,description:t.description};switch(t.position){case"first":return[r,...e];case"last":return[...e,r];case"replace":return[r];default:return e}}
1
+ import{extractExtensions,getOperationId,getOperationName,getStatusCodeType,getValueFromMdParsedExtension,isStatusCode,JsonPointer,mergeParams,normalizeServers,sortByField,sortByRequired}from"../utils";import{getInitialServerWithVariables}from"../components/rightPanel/utils";import{getCallback}from"./callback";import{getField}from"./field";import{getRequestBody}from"./request";import{getSecurityRequirement}from"./security";import{getCodeSample}from"../services";import{getResponse}from"./response";export function isPayloadSample(e){return"payload"===e.lang&&"requestBodyContent"in e}let isCodeSamplesWarningPrinted=!1;export function getOperation(e,t,r,a,o,s){var i,n,l,p;const d=t.isWebhook,m={operationDefinition:t,parent:r,pointer:t.pointer,description:getValueFromMdParsedExtension(t,"description"),externalDocs:t.externalDocs,deprecated:!!t.deprecated,httpVerb:t.httpVerb,operationId:t.operationId,path:t.pathName,isWebhook:d,isCallback:Boolean(null==s?void 0:s.isCallback),isEvent:(null==s?void 0:s.isCallback)||d,name:getOperationName(t),defaultExampleName:t.defaultSampleName,type:"operation",callbackId:null==s?void 0:s.id,href:o,get callbacks(){return Object.keys(t.callbacks||[]).map((s=>{var i;return getCallback(e,s,null===(i=t.callbacks)||void 0===i?void 0:i[s],m.pointer,a,o,r)}))},get responses(){let r=!1;return Object.keys(t.responses||[]).filter((e=>"default"===e||("success"===getStatusCodeType(e)&&(r=!0),isStatusCode(e)))).map((o=>getResponse({parser:e,code:o,defaultAsError:r,infoOrRef:t.responses[o],options:a,isEvent:m.isEvent,operation:m})))},get parameters(){let r=mergeParams(e,t.pathParameters,t.parameters,{pathPointer:JsonPointer.dirName(m.pointer),operationPointer:m.pointer}).map((({paramOrRef:t,pointer:r})=>getField(e,t,r,a,{operation:m,type:"request"})));return a.sortPropsAlphabetically&&(r=sortByField(r,"name")),a.requiredPropsFirst&&(r=sortByRequired(r)),r}};(null==s?void 0:s.isCallback)?(m.security=(t.security||[]).map((t=>getSecurityRequirement({requirement:t,parser:e}))),m.servers=normalizeServers("",t.servers||t.pathServers||[])):(m.id=getOperationId(t,r),m.security=(t.security||e.definition.security||[]).map((t=>getSecurityRequirement({requirement:t,parser:e}))),m.servers=normalizeServers(e.definitionUrl,mergeInMockServer(t.servers||t.pathServers||e.definition.servers||[],a.mockServer))),a.showExtensions&&(m.extensions=extractExtensions(t,a.showExtensions)),m.activeServer=getInitialServerWithVariables(m.servers),m.requestBody=t.requestBody&&getRequestBody({parser:e,infoOrRef:t.requestBody,options:a,operation:m,isEvent:m.isEvent});const c=null===(n=null===(i=m.requestBody)||void 0===i?void 0:i.content)||void 0===n?void 0:n.mediaTypes,[u]=c||[],[g]=Object.keys((null==u?void 0:u.examples)||[]);m.activeExampleName=!1===t.defaultSampleName?void 0:t.defaultSampleName||g;const v=null===(l=m.requestBody)||void 0===l?void 0:l.content;m.payload=(null==v?void 0:v.hasSample)?{lang:"payload",label:"Payload",source:"",requestBodyContent:v}:void 0,m.definitionSamples=t["x-codeSamples"]||t["x-code-samples"]||[],t["x-code-samples"]&&!isCodeSamplesWarningPrinted&&(isCodeSamplesWarningPrinted=!0,console.warn('"x-code-samples" is deprecated. Use "x-codeSamples" instead')),m.hasSamples=(null==v?void 0:v.hasSample)||m.definitionSamples.length>0;const{payloadSampleIdx:S,hideRequestPayloadSample:y}=a;let f=[];if(!d){const t=a.generateCodeSamples||{},r=new Set(m.definitionSamples.map((({lang:e})=>e.toLowerCase())));f=generateCodeSamples((null===(p=t.languages)||void 0===p?void 0:p.filter((({lang:e})=>!r.has(e.toLowerCase()))))||[],t,e.definition,a.generatedPayloadSamplesMaxDepth)}const h=m.definitionSamples.concat(f),b=Math.min(h.length,S);return m.payload&&!y&&h.splice(b,0,m.payload),m.allCodeSamples=h,m.hideTryItPanel=!0===t["x-hideTryItPanel"],m}function generateCodeSamples(e,{skipOptionalParameters:t,withOAuth2Call:r},a,o){return e.map((({lang:e,label:s,options:i})=>({lang:e,label:s,get:s=>getCodeSample(Object.assign(Object.assign({},s),{lang:e,options:Object.assign(Object.assign({},i),{skipOptionalParameters:t,withOAuth2Call:r,spec:a,generatedPayloadSamplesMaxDepth:o})}))})))}function mergeInMockServer(e,t){if(!t)return e;const r={url:t.url,description:t.description};switch(t.position){case"first":return[r,...e];case"last":return[...e,r];case"replace":return[r];default:return e}}
2
2
  //# sourceMappingURL=operation.js.map
@@ -1,2 +1,2 @@
1
- import{getContentWithLegacyExamples,JsonPointer}from"../utils";import{getMediaContent}from"./mediaContent";export function getRequestBody({parser:e,infoOrRef:t,options:o,isEvent:n,operation:i}){const{resolved:r}=e.deref(t),s=r.description||"",p=!!r.required;let a;const d=!n,u=getContentWithLegacyExamples(r);return void 0!==u&&(a=getMediaContent({parser:e,info:u,isRequestType:d,options:o,data:{operation:i,type:"request",absolutePointer:t.$ref||JsonPointer.join(i.pointer,["requestBody"])}})),{description:s,required:p,content:a}}
1
+ import{getContentWithLegacyExamples,getValueFromMdParsedExtension,JsonPointer}from"../utils";import{getMediaContent}from"./mediaContent";export function getRequestBody({parser:e,infoOrRef:t,options:o,isEvent:n,operation:r}){const{resolved:i}=e.deref(t),s=getValueFromMdParsedExtension(i,"description")||"",a=!!i.required;let d;const p=!n,u=getContentWithLegacyExamples(i);return void 0!==u&&(d=getMediaContent({parser:e,info:u,isRequestType:p,options:o,data:{operation:r,type:"request",absolutePointer:t.$ref||JsonPointer.join(r.pointer,["requestBody"])}})),{description:s,required:a,content:d}}
2
2
  //# sourceMappingURL=request.js.map
@@ -1,2 +1,2 @@
1
- import{getStatusCodeType,getContentWithLegacyExamples,JsonPointer}from"../utils";import{getField}from"./field";import{getMediaContent}from"./mediaContent";export function getResponse({parser:e,code:o,defaultAsError:t,infoOrRef:n,options:s,isEvent:r,operation:i}){var p;const a=!!r,d="all"===s.expandResponses||(null===(p=s.expandResponses)||void 0===p?void 0:p[o])||!1,{resolved:m}=e.deref(n),c={code:o,expanded:d};void 0!==m["x-summary"]?(c.summary=m["x-summary"],c.description=m.description||""):(c.summary=m.description||"",c.description=""),c.type=getStatusCodeType(o,t);const l=m.headers,u=n.$ref||JsonPointer.join((null==i?void 0:i.pointer)||"",["responses",o]);void 0!==l&&(c.headers=Object.keys(l).map((o=>{const t=l[o];return getField(e,Object.assign(Object.assign({},t),{name:o}),JsonPointer.join(u,["headers",o]),s,{operation:i,type:"response",response:c})})));const g=getContentWithLegacyExamples(m);return void 0!==g&&(c.content=getMediaContent({parser:e,info:g,isRequestType:a,options:s,data:{operation:i,type:"response",response:c,absolutePointer:u}})),c}
1
+ import{getStatusCodeType,getContentWithLegacyExamples,JsonPointer,getValueFromMdParsedExtension}from"../utils";import{getField}from"./field";import{getMediaContent}from"./mediaContent";export function getResponse({parser:e,code:o,defaultAsError:t,infoOrRef:n,options:s,isEvent:r,operation:i}){var a;const d=!!r,p="all"===s.expandResponses||(null===(a=s.expandResponses)||void 0===a?void 0:a[o])||!1,{resolved:m}=e.deref(n),l={code:o,expanded:p};void 0!==m["x-summary"]?(l.summary=getValueFromMdParsedExtension(m,"x-summary"),l.description=getValueFromMdParsedExtension(m,"description")||""):(l.summary=getValueFromMdParsedExtension(m,"description")||"",l.description=""),l.type=getStatusCodeType(o,t);const u=m.headers,c=n.$ref||JsonPointer.join((null==i?void 0:i.pointer)||"",["responses",o]);void 0!==u&&(l.headers=Object.keys(u).map((o=>{const t=u[o];return getField(e,Object.assign(Object.assign({},t),{name:o}),JsonPointer.join(c,["headers",o]),s,{operation:i,type:"response",response:l})})));const g=getContentWithLegacyExamples(m);return void 0!==g&&(l.content=getMediaContent({parser:e,info:g,isRequestType:d,options:s,data:{operation:i,type:"response",response:l,absolutePointer:c}})),l}
2
2
  //# sourceMappingURL=response.js.map
@@ -1,2 +1,2 @@
1
- var __rest=this&&this.__rest||function(e,t){var i={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(i[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(n=Object.getOwnPropertySymbols(e);r<n.length;r++)t.indexOf(n[r])<0&&Object.prototype.propertyIsEnumerable.call(e,n[r])&&(i[n[r]]=e[n[r]])}return i};import{pushRef}from"../services/OpenAPIParser";import{detectType,extractExtensions,humanizeConstraints,isNamedDefinition,isObject,isPrimitiveType,JsonPointer,pluralizeType,sortByField,sortByRequired}from"../utils";import{l}from"../services";import{getField}from"./field";export function getSchema({parser:e,schemaOrRef:t,pointer:i,options:n,isChild:r=!1,baseRefsStack:s=[],deps:o,absolutePointer:a}){var p,d,c,f,m,y,u,O;const{resolved:h,refsStack:b}=e.deref(t,s,!0),v=t.$ref||i||"",P=pushRef(b,v),g=e.mergeAllOf(h,v,P,t.$ref||a),x=g.type||detectType(g),j={parser:e,options:n,deps:o,schemaOrRef:t,isChild:r,typePrefix:"",pointer:v,absolutePointer:a,refsStack:P,rawSchema:h,type:x,isCircular:!!g["x-circular-ref"],title:g.title||isNamedDefinition(v)&&JsonPointer.baseName(v)||"",description:g.description||"",format:g.format,enum:g.enum||[],example:g.example,deprecated:!!g.deprecated,pattern:g.pattern,externalDocs:g.externalDocs,displayFormat:g.format,isPrimitive:isPrimitiveType(g,x),constraints:humanizeConstraints(g),default:g.default,readOnly:!!g.readOnly,writeOnly:!!g.writeOnly,const:g.const||"",contentEncoding:g.contentEncoding,contentMediaType:g.contentMediaType,minItems:g.minItems,maxItems:g.maxItems,nullable:g.nullable||g["x-nullable"],schema:g,displayType:"",items:void 0,extensions:void 0,oneOfType:"",discriminatorProp:void 0,oneOf:void 0,"x-enumDescriptions":g["x-enumDescriptions"],get fields(){if(hasType(j,"object")||hasType(j,"array")&&(Array.isArray(g.items)||Array.isArray(g.prefixItems)))return buildFields(e,g,v,n,P,o)}};if((g.nullable||g["x-nullable"])&&(Array.isArray(j.type)&&!j.type.some((e=>null===e||"null"===e))?j.type=[...j.type,"null"]:Array.isArray(j.type)||null===j.type&&"null"===j.type||(j.type=[j.type,"null"])),j.displayType=Array.isArray(j.type)?j.type.map((e=>null===e?"null":e)).join(" or "):j.type,j.isCircular)return j;if(g.if&&g.then||g.if&&g.else){const{oneOf:t,oneOfType:i}=initConditionalOperators({schema:g,parser:e,pointer:v,options:n,deps:o,refsStack:P});return j.oneOf=t,j.oneOfType=i,j}if(!r&&void 0!==getDiscriminator(g)){const{oneOf:t,discriminatorProp:i}=initDiscriminator({schema:g,parser:e,deps:o,mergedSchema:g,options:n,pointer:v,refsStack:P});return j.oneOf=t,j.discriminatorProp=i,j}if(r&&Array.isArray(g.oneOf)&&g.oneOf.find((e=>e.$ref===v))&&delete g.oneOf,void 0!==g.oneOf){const{oneOf:t,displayType:i}=initOneOf({schemaOneOf:g.oneOf,parser:e,deps:o,options:n,pointer:v,refsStack:P,schema:g});return j.oneOfType="One of",t&&(j.oneOf=t),j.displayType=i,void 0!==g.anyOf&&console.warn(`oneOf and anyOf are not supported on the same level. Skipping anyOf at ${v}`),j}if(void 0!==g.anyOf){const{oneOf:t,displayType:i}=initOneOf({schemaOneOf:g.anyOf,parser:e,deps:o,options:n,pointer:v,refsStack:P,schema:g});return t&&(j.oneOf=t),j.displayType=i,j.oneOfType="Any of",j}if(hasType(j,"array")&&(g.items&&(j.items=getSchema({parser:e,schemaOrRef:g.items,pointer:v+"/items",options:n,baseRefsStack:P,deps:o,absolutePointer:JsonPointer.join(g.absolutePointer||"",["items"])})),j.displayType=g.prefixItems||Array.isArray(g.items)?"items":pluralizeType((null===(p=j.items)||void 0===p?void 0:p.displayType)||j.displayType),j.displayFormat=(null===(d=j.items)||void 0===d?void 0:d.format)||"",j.typePrefix=(null===(c=j.items)||void 0===c?void 0:c.typePrefix)||""+l("arrayOf"),j.title=j.title||(null===(f=j.items)||void 0===f?void 0:f.title)||"",j.isPrimitive=void 0!==(null===(m=j.items)||void 0===m?void 0:m.isPrimitive)?null===(y=j.items)||void 0===y?void 0:y.isPrimitive:j.isPrimitive,void 0===j.example&&void 0!==(null===(u=j.items)||void 0===u?void 0:u.example)&&(j.example=[j.items.example]),(null===(O=j.items)||void 0===O?void 0:O.isPrimitive)&&(j.enum=j.items.enum,j["x-enumDescriptions"]=j.items["x-enumDescriptions"]),Array.isArray(j.type))){const e=j.type.filter((e=>"array"!==e));e.length&&(j.displayType+=` or ${e.join(" or ")}`)}return j.enum.length&&n.sortEnumValuesAlphabetically&&j.enum.sort(),n.showExtensions&&(j.extensions=extractExtensions(g,n.showExtensions)),j}function initDiscriminator({schema:e,parser:t,pointer:i,options:n,refsStack:r,deps:s,mergedSchema:o}){const a=getDiscriminator(e),l=null==a?void 0:a.propertyName,p=t.findDerived([...o["x-parentRefs"]||[],i]);if(e.oneOf)for(const t of e.oneOf){if(void 0===t.$ref)continue;const e=JsonPointer.baseName(t.$ref);p[t.$ref]=e}const d=(null==a?void 0:a.mapping)||{};let c=(null==a?void 0:a["x-explicitMappingOnly"])||!1;0===Object.keys(d).length&&(c=!1);const f={};for(const e in d){const t=d[e];Array.isArray(f[t])?f[t].push(e):f[t]=[e]}const m=c?Object.assign({},f):Object.assign(Object.assign({},p),f);let y=[];for(const e of Object.keys(m)){const t=m[e];if(Array.isArray(t))for(const i of t)y.push({$ref:e,name:i});else y.push({$ref:e,name:t})}const u=Object.keys(d);0!==u.length&&(y=y.sort(((e,t)=>{const i=u.indexOf(e.name),n=u.indexOf(t.name);return i<0&&n<0?e.name.localeCompare(t.name):i<0?1:n<0?-1:i-n})));return{oneOf:y.map((({$ref:e,name:i},a)=>{const l=getSchema({parser:t,schemaOrRef:{$ref:e},pointer:e,options:n,isChild:!0,baseRefsStack:r.slice(0,-1),deps:Object.assign(Object.assign({},s),{parentFieldFullPath:s.parentFieldFullPath?s.parentFieldFullPath+"/"+a:a.toString()}),absolutePointer:o.absolutePointer});return l.title=i,l})),discriminatorProp:l}}function initOneOf({schemaOneOf:e,parser:t,refsStack:i,pointer:n,schema:r,options:s,deps:o}){const a=e.map(((e,a)=>{const{resolved:l,refsStack:p}=t.deref(e,i,!0),d=t.mergeAllOf(l,n+"/oneOf/"+a,p),c=isNamedDefinition(e.$ref)&&!d.title?JsonPointer.baseName(e.$ref):`${d.title||""}${d.const&&JSON.stringify(d.const)||""}`;return getSchema({parser:t,schemaOrRef:Object.assign(Object.assign({},d),{title:c,allOf:[Object.assign(Object.assign({},r),{oneOf:void 0,anyOf:void 0})],discriminator:l.allOf?void 0:d.discriminator}),pointer:e.$ref||n+"/oneOf/"+a,options:s,baseRefsStack:p,deps:Object.assign(Object.assign({},o),{parentFieldFullPath:o.parentFieldFullPath?o.parentFieldFullPath+"/"+a:a.toString()})})}));let l;if(s.simpleOneOfTypeLabel){l=collectUniqueOneOfTypesDeep(r).join(" or ")}else l=a.map((e=>{let t=e.typePrefix+(e.title?`${e.title} (${e.displayType})`:e.displayType);return t.indexOf(" or ")>-1&&(t=`(${t})`),t})).join(" or ");return{oneOf:a,displayType:l}}function initConditionalOperators({schema:e,parser:t,pointer:i,options:n,refsStack:r,deps:s}){const{if:o,else:a={},then:l={}}=e,p=__rest(e,["if","else","then"]);return{oneOf:[{allOf:[p,l,o],title:o&&o["x-displayName"]||(null==o?void 0:o.title)||"case 1"},{allOf:[p,a],title:a&&a["x-displayName"]||(null==a?void 0:a.title)||"case 2"}].map(((e,o)=>getSchema({parser:t,schemaOrRef:Object.assign({},e),pointer:i+"/oneOf/"+o,options:n,baseRefsStack:r,deps:Object.assign(Object.assign({},s),{parentFieldFullPath:s.parentFieldFullPath?s.parentFieldFullPath+"/"+o:o.toString()})}))),oneOfType:"One of"}}function normalizeField(e,t,i){return e||(console.warn(`Field "${t}" is invalid, skipping.\n Field must be an object but got ${typeof e} at "${i}"`),{})}function buildFields(e,t,i,n,r,s){const o=t.properties||t.prefixItems||t.items||{},a=t.patternProperties||{},l=t.additionalProperties||t.unevaluatedProperties,p=t.prefixItems?t.items:t.additionalItems,d=t.default||{};let c=Object.keys(o).map((a=>{var l;const p=normalizeField(o[a],a,i),c=void 0!==t.required&&t.required.indexOf(a)>-1;return getField(e,{name:t.properties?a:`[${a}]`,required:c,schema:Object.assign(Object.assign({},p),{example:(null===(l=t.example)||void 0===l?void 0:l[a])||p.example,default:void 0===p.default&&d?d[a]:p.default})},i+"/properties/"+a,n,s,r,JsonPointer.join(t.absolutePointer||"",["properties",a]))}));return n.sortPropsAlphabetically&&(c=sortByField(c,"name")),n.requiredPropsFirst&&(c=sortByRequired(c,n.sortPropsAlphabetically?void 0:t.required)),c.push(...Object.keys(a).map((t=>{const o=normalizeField(a[t],t,i);return getField(e,{name:t,required:!1,schema:o,kind:"patternProperties"},`${i}/patternProperties/${t}`,n,s,r)}))),(isObject(l)||!0===l)&&c.push(getField(e,{name:(isObject(l)&&l["x-additionalPropertiesName"]||"property name").concat("*"),required:!1,schema:!0===l?{}:l,kind:"additionalProperties"},i+"/additionalProperties",n,s,r,JsonPointer.join(t.absolutePointer||"",["additionalProperties"]))),c.push(...buildAdditionalItems({parser:e,schema:p,fieldsCount:c.length,$ref:i,options:n,refsStack:r,deps:s})),c}function buildAdditionalItems({parser:e,schema:t=!1,fieldsCount:i,$ref:n,options:r,refsStack:s,deps:o}){return"boolean"==typeof t?t?[getField(e,{name:`[${i}...]`,schema:{},kind:"additionalItems"},`${n}/additionalItems`,r,o,s)]:[]:Array.isArray(t)?[...t.map(((t,a)=>getField(e,{name:`[${i+a}]`,schema:t,kind:"additionalItems"},`${n}/additionalItems/${a}`,r,o,s)))]:isObject(t)?[getField(e,{name:`[${i}...]`,schema:t,kind:"additionalItems"},`${n}/additionalItems`,r,o,s)]:[]}function getDiscriminator(e){return e.discriminator||e["x-discriminator"]}function collectUniqueOneOfTypesDeep(e){const t=new Set;return function e(i){for(const n of i.oneOf||[])n.oneOf?e(n):n.type&&t.add(n.type)}(e),Array.from(t.values())}function hasType(e,t){return e.type===t||Array.isArray(e.type)&&e.type.includes(t)}
1
+ var __rest=this&&this.__rest||function(e,t){var i={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(i[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(n=Object.getOwnPropertySymbols(e);r<n.length;r++)t.indexOf(n[r])<0&&Object.prototype.propertyIsEnumerable.call(e,n[r])&&(i[n[r]]=e[n[r]])}return i};import{pushRef}from"../services/OpenAPIParser";import{detectType,extractExtensions,getValueFromMdParsedExtension,humanizeConstraints,isNamedDefinition,isObject,isPrimitiveType,JsonPointer,pluralizeType,sortByField,sortByRequired}from"../utils";import{l}from"../services";import{getField}from"./field";export function getSchema({parser:e,schemaOrRef:t,pointer:i,options:n,isChild:r=!1,baseRefsStack:s=[],deps:o,absolutePointer:a}){var p,d,m,c,f,u,y,O;const{resolved:h,refsStack:b}=e.deref(t,s,!0),v=t.$ref||i||"",P=pushRef(b,v),g=e.mergeAllOf(h,v,P,t.$ref||a),x=g.type||detectType(g),F={parser:e,options:n,deps:o,schemaOrRef:t,isChild:r,typePrefix:"",pointer:v,absolutePointer:a,refsStack:P,rawSchema:h,type:x,isCircular:!!g["x-circular-ref"],title:g.title||isNamedDefinition(v)&&JsonPointer.baseName(v)||"",description:getValueFromMdParsedExtension(g,"description")||"",format:g.format,enum:g.enum||[],example:g.example,deprecated:!!g.deprecated,pattern:g.pattern,externalDocs:g.externalDocs,displayFormat:g.format,isPrimitive:isPrimitiveType(g,x),constraints:humanizeConstraints(g),default:g.default,readOnly:!!g.readOnly,writeOnly:!!g.writeOnly,const:g.const||"",contentEncoding:g.contentEncoding,contentMediaType:g.contentMediaType,minItems:g.minItems,maxItems:g.maxItems,nullable:g.nullable||g["x-nullable"],schema:g,displayType:"",items:void 0,extensions:void 0,oneOfType:"",discriminatorProp:void 0,oneOf:void 0,"x-enumDescriptions":getValueFromMdParsedExtension(g,"x-enumDescriptions"),get fields(){if(hasType(F,"object")||hasType(F,"array")&&(Array.isArray(g.items)||Array.isArray(g.prefixItems)))return buildFields(e,g,v,n,P,o)}};if((g.nullable||g["x-nullable"])&&(Array.isArray(F.type)&&!F.type.some((e=>null===e||"null"===e))?F.type=[...F.type,"null"]:Array.isArray(F.type)||null===F.type&&"null"===F.type||(F.type=[F.type,"null"])),F.displayType=Array.isArray(F.type)?F.type.map((e=>null===e?"null":e)).join(" or "):F.type,F.isCircular)return F;if(g.if&&g.then||g.if&&g.else){const{oneOf:t,oneOfType:i}=initConditionalOperators({schema:g,parser:e,pointer:v,options:n,deps:o,refsStack:P});return F.oneOf=t,F.oneOfType=i,F}if(!r&&void 0!==getDiscriminator(g)){const{oneOf:t,discriminatorProp:i}=initDiscriminator({schema:g,parser:e,deps:o,mergedSchema:g,options:n,pointer:v,refsStack:P});return F.oneOf=t,F.discriminatorProp=i,F}if(r&&Array.isArray(g.oneOf)&&g.oneOf.find((e=>e.$ref===v))&&delete g.oneOf,void 0!==g.oneOf){const{oneOf:t,displayType:i}=initOneOf({schemaOneOf:g.oneOf,parser:e,deps:o,options:n,pointer:v,refsStack:P,schema:g});return F.oneOfType="One of",t&&(F.oneOf=t),F.displayType=i,void 0!==g.anyOf&&console.warn(`oneOf and anyOf are not supported on the same level. Skipping anyOf at ${v}`),F}if(void 0!==g.anyOf){const{oneOf:t,displayType:i}=initOneOf({schemaOneOf:g.anyOf,parser:e,deps:o,options:n,pointer:v,refsStack:P,schema:g});return t&&(F.oneOf=t),F.displayType=i,F.oneOfType="Any of",F}if(hasType(F,"array")&&(g.items&&(F.items=getSchema({parser:e,schemaOrRef:g.items,pointer:v+"/items",options:n,baseRefsStack:P,deps:o,absolutePointer:JsonPointer.join(g.absolutePointer||"",["items"])})),F.displayType=g.prefixItems||Array.isArray(g.items)?"items":pluralizeType((null===(p=F.items)||void 0===p?void 0:p.displayType)||F.displayType),F.displayFormat=(null===(d=F.items)||void 0===d?void 0:d.format)||"",F.typePrefix=(null===(m=F.items)||void 0===m?void 0:m.typePrefix)||""+l("arrayOf"),F.title=F.title||(null===(c=F.items)||void 0===c?void 0:c.title)||"",F.isPrimitive=void 0!==(null===(f=F.items)||void 0===f?void 0:f.isPrimitive)?null===(u=F.items)||void 0===u?void 0:u.isPrimitive:F.isPrimitive,void 0===F.example&&void 0!==(null===(y=F.items)||void 0===y?void 0:y.example)&&(F.example=[F.items.example]),(null===(O=F.items)||void 0===O?void 0:O.isPrimitive)&&(F.enum=F.items.enum,F["x-enumDescriptions"]=getValueFromMdParsedExtension(F.items,"x-enumDescriptions")),Array.isArray(F.type))){const e=F.type.filter((e=>"array"!==e));e.length&&(F.displayType+=` or ${e.join(" or ")}`)}return F.enum.length&&n.sortEnumValuesAlphabetically&&F.enum.sort(),n.showExtensions&&(F.extensions=extractExtensions(g,n.showExtensions)),F}function initDiscriminator({schema:e,parser:t,pointer:i,options:n,refsStack:r,deps:s,mergedSchema:o}){const a=getDiscriminator(e),l=null==a?void 0:a.propertyName,p=t.findDerived([...o["x-parentRefs"]||[],i]);if(e.oneOf)for(const t of e.oneOf){if(void 0===t.$ref)continue;const e=JsonPointer.baseName(t.$ref);p[t.$ref]=e}const d=(null==a?void 0:a.mapping)||{};let m=(null==a?void 0:a["x-explicitMappingOnly"])||!1;0===Object.keys(d).length&&(m=!1);const c={};for(const e in d){const t=d[e];Array.isArray(c[t])?c[t].push(e):c[t]=[e]}const f=m?Object.assign({},c):Object.assign(Object.assign({},p),c);let u=[];for(const e of Object.keys(f)){const t=f[e];if(Array.isArray(t))for(const i of t)u.push({$ref:e,name:i});else u.push({$ref:e,name:t})}const y=Object.keys(d);0!==y.length&&(u=u.sort(((e,t)=>{const i=y.indexOf(e.name),n=y.indexOf(t.name);return i<0&&n<0?e.name.localeCompare(t.name):i<0?1:n<0?-1:i-n})));return{oneOf:u.map((({$ref:e,name:i},a)=>{const l=getSchema({parser:t,schemaOrRef:{$ref:e},pointer:e,options:n,isChild:!0,baseRefsStack:r.slice(0,-1),deps:Object.assign(Object.assign({},s),{parentFieldFullPath:s.parentFieldFullPath?s.parentFieldFullPath+"/"+a:a.toString()}),absolutePointer:o.absolutePointer});return l.title=i,l})),discriminatorProp:l}}function initOneOf({schemaOneOf:e,parser:t,refsStack:i,pointer:n,schema:r,options:s,deps:o}){const a=e.map(((e,a)=>{const{resolved:l,refsStack:p}=t.deref(e,i,!0),d=t.mergeAllOf(l,n+"/oneOf/"+a,p),m=isNamedDefinition(e.$ref)&&!d.title?JsonPointer.baseName(e.$ref):`${d.title||""}${d.const&&JSON.stringify(d.const)||""}`;return getSchema({parser:t,schemaOrRef:Object.assign(Object.assign({},d),{title:m,allOf:[Object.assign(Object.assign({},r),{oneOf:void 0,anyOf:void 0})],discriminator:l.allOf?void 0:d.discriminator}),pointer:e.$ref||n+"/oneOf/"+a,options:s,baseRefsStack:p,deps:Object.assign(Object.assign({},o),{parentFieldFullPath:o.parentFieldFullPath?o.parentFieldFullPath+"/"+a:a.toString()})})}));let l;if(s.simpleOneOfTypeLabel){l=collectUniqueOneOfTypesDeep(r).join(" or ")}else l=a.map((e=>{let t=e.typePrefix+(e.title?`${e.title} (${e.displayType})`:e.displayType);return t.indexOf(" or ")>-1&&(t=`(${t})`),t})).join(" or ");return{oneOf:a,displayType:l}}function initConditionalOperators({schema:e,parser:t,pointer:i,options:n,refsStack:r,deps:s}){const{if:o,else:a={},then:l={}}=e,p=__rest(e,["if","else","then"]);return{oneOf:[{allOf:[p,l,o],title:o&&o["x-displayName"]||(null==o?void 0:o.title)||"case 1"},{allOf:[p,a],title:a&&a["x-displayName"]||(null==a?void 0:a.title)||"case 2"}].map(((e,o)=>getSchema({parser:t,schemaOrRef:Object.assign({},e),pointer:i+"/oneOf/"+o,options:n,baseRefsStack:r,deps:Object.assign(Object.assign({},s),{parentFieldFullPath:s.parentFieldFullPath?s.parentFieldFullPath+"/"+o:o.toString()})}))),oneOfType:"One of"}}function normalizeField(e,t,i){return e||(console.warn(`Field "${t}" is invalid, skipping.\n Field must be an object but got ${typeof e} at "${i}"`),{})}function buildFields(e,t,i,n,r,s){const o=t.properties||t.prefixItems||t.items||{},a=t.patternProperties||{},l=t.additionalProperties||t.unevaluatedProperties,p=t.prefixItems?t.items:t.additionalItems,d=t.default||{};let m=Object.keys(o).map((a=>{var l;const p=normalizeField(o[a],a,i),m=void 0!==t.required&&t.required.indexOf(a)>-1;return getField(e,{name:t.properties?a:`[${a}]`,required:m,schema:Object.assign(Object.assign({},p),{example:(null===(l=t.example)||void 0===l?void 0:l[a])||p.example,default:void 0===p.default&&d?d[a]:p.default})},i+"/properties/"+a,n,s,r,JsonPointer.join(t.absolutePointer||"",["properties",a]))}));return n.sortPropsAlphabetically&&(m=sortByField(m,"name")),n.requiredPropsFirst&&(m=sortByRequired(m,n.sortPropsAlphabetically?void 0:t.required)),m.push(...Object.keys(a).map((t=>{const o=normalizeField(a[t],t,i);return getField(e,{name:t,required:!1,schema:o,kind:"patternProperties"},`${i}/patternProperties/${t}`,n,s,r)}))),(isObject(l)||!0===l)&&m.push(getField(e,{name:(isObject(l)&&l["x-additionalPropertiesName"]||"property name").concat("*"),required:!1,schema:!0===l?{}:l,kind:"additionalProperties"},i+"/additionalProperties",n,s,r,JsonPointer.join(t.absolutePointer||"",["additionalProperties"]))),m.push(...buildAdditionalItems({parser:e,schema:p,fieldsCount:m.length,$ref:i,options:n,refsStack:r,deps:s})),m}function buildAdditionalItems({parser:e,schema:t=!1,fieldsCount:i,$ref:n,options:r,refsStack:s,deps:o}){return"boolean"==typeof t?t?[getField(e,{name:`[${i}...]`,schema:{},kind:"additionalItems"},`${n}/additionalItems`,r,o,s)]:[]:Array.isArray(t)?[...t.map(((t,a)=>getField(e,{name:`[${i+a}]`,schema:t,kind:"additionalItems"},`${n}/additionalItems/${a}`,r,o,s)))]:isObject(t)?[getField(e,{name:`[${i}...]`,schema:t,kind:"additionalItems"},`${n}/additionalItems`,r,o,s)]:[]}function getDiscriminator(e){return e.discriminator||e["x-discriminator"]}function collectUniqueOneOfTypesDeep(e){const t=new Set;return function e(i){for(const n of i.oneOf||[])n.oneOf?e(n):n.type&&t.add(n.type)}(e),Array.from(t.values())}function hasType(e,t){return e.type===t||Array.isArray(e.type)&&e.type.includes(t)}
2
2
  //# sourceMappingURL=schema.js.map
@@ -1,2 +1,2 @@
1
- export function getSecurityRequirement({requirement:e,parser:t}){const n=t.definition.components&&t.definition.components.securitySchemes||{};return{schemes:Object.keys(e||{}).map((r=>{const i=t.deref(n[r]).resolved,o=e[r]||[];if(i)return Object.assign(Object.assign({},i),{id:r,sectionId:r,scopes:o});console.warn(`Non existing security scheme referenced: ${r}. Skipping`)})).filter(Boolean)}}export function getSecurityScheme(e,t,n){if(!(null==e?void 0:e.deref))return{};const{resolved:r}=e.deref(n),i=t,o=r.type,c=r.description||"";let s,a,p,d={};switch(r.type){case"apiKey":s={name:r.name,in:r.in};break;case"http":a={scheme:r.scheme,bearerFormat:r.bearerFormat};break;case"openIdConnect":p={connectUrl:r.openIdConnectUrl};break;case"oauth2":d=r.flows}return{id:t,sectionId:i,type:o,description:c,apiKey:s,http:a,flows:d,openId:p}}export function getSecuritySchemes({parser:e}){var t,n;if(!e)return[];const r=(null===(n=null===(t=e.definition)||void 0===t?void 0:t.components)||void 0===n?void 0:n.securitySchemes)||{};return Object.keys(r).map((t=>getSecurityScheme(e,t,r[t])))}
1
+ import{getValueFromMdParsedExtension}from"../utils";export function getSecurityRequirement({requirement:e,parser:t}){const n=t.definition.components&&t.definition.components.securitySchemes||{};return{schemes:Object.keys(e||{}).map((r=>{const i=t.deref(n[r]).resolved,o=e[r]||[];if(i)return Object.assign(Object.assign({},i),{id:r,sectionId:r,scopes:o});console.warn(`Non existing security scheme referenced: ${r}. Skipping`)})).filter(Boolean)}}export function getSecurityScheme(e,t,n){if(!(null==e?void 0:e.deref))return{};const{resolved:r}=e.deref(n),i=t,o=r.type,s=getValueFromMdParsedExtension(r,"description")||"";let c,a,d,p={};switch(r.type){case"apiKey":c={name:r.name,in:r.in};break;case"http":a={scheme:r.scheme,bearerFormat:r.bearerFormat};break;case"openIdConnect":d={connectUrl:r.openIdConnectUrl};break;case"oauth2":p=r.flows}return{id:t,sectionId:i,type:o,description:s,apiKey:c,http:a,flows:p,openId:d}}export function getSecuritySchemes({parser:e}){var t,n;if(!e)return[];const r=(null===(n=null===(t=e.definition)||void 0===t?void 0:t.components)||void 0===n?void 0:n.securitySchemes)||{};return Object.keys(r).map((t=>getSecurityScheme(e,t,r[t])))}
2
2
  //# sourceMappingURL=security.js.map
@@ -1,2 +1,2 @@
1
- var __rest=this&&this.__rest||function(e,t){var r={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(r[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(i=Object.getOwnPropertySymbols(e);n<i.length;n++)t.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(e,i[n])&&(r[i[n]]=e[i[n]])}return r};import{IS_BROWSER,getDefinitionName}from"../utils";import{JsonPointer}from"../utils/JsonPointer";import{normalizeOptions}from"./Options/normalizeOptions";export function pushRef(e,t){return t&&e[e.length-1]!==t?[...e,t]:e}export function concatRefStacks(e,t){return t?e.concat(t):e}export class OpenAPIParser{constructor(e,t,r=normalizeOptions({})){Object.defineProperty(this,"options",{enumerable:!0,configurable:!0,writable:!0,value:r}),Object.defineProperty(this,"definitionUrl",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"definition",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"allowMergeRefs",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"byRef",{enumerable:!0,configurable:!0,writable:!0,value:e=>{let t;if(this.definition){"#"!==e.charAt(0)&&(e="#"+e),e=decodeURIComponent(e);try{t=JsonPointer.get(this.definition,e)}catch(e){}return t||{}}}}),this.validate(e),this.preprocess(e),this.definition=e,this.allowMergeRefs=e.openapi.startsWith("3.1");const i=IS_BROWSER?window.location.href:"";"string"==typeof t&&(this.definitionUrl=new URL(t,i).href)}validate(e){if(void 0===e.openapi)throw new Error("Document must be valid OpenAPI 3.0.0 definition")}preprocess(e){e.info&&this.options.hideInfoDescription&&(e.info.description="")}isRef(e){return!!e&&(void 0!==e.$ref&&null!==e.$ref)}deref(e,t=[],r=!1){const i=null==e?void 0:e["x-refsStack"];if(t=concatRefStacks(t,i),this.isRef(e)){const i=getDefinitionName(e.$ref);if(i&&this.options.ignoreNamedSchemas.has(i))return{resolved:{type:"object",title:i},refsStack:t};let n=this.byRef(e.$ref);if(!n)throw new Error(`Failed to resolve $ref "${e.$ref}"`);let o=t;if(t.includes(e.$ref))n=Object.assign({},n,{"x-circular-ref":!0});else if(this.isRef(n)){const e=this.deref(n,t,r);o=e.refsStack,n=e.resolved}return o=pushRef(t,e.$ref),n=this.allowMergeRefs?this.mergeRefs(e,n,r):n,{resolved:n,refsStack:o}}return{resolved:e,refsStack:concatRefStacks(t,i)}}mergeRefs(e,t,r){const{$ref:i}=e,n=__rest(e,["$ref"]),o=Object.keys(n);if(0===o.length)return t;if(r&&o.some((e=>!["description","title","externalDocs","x-refsStack","x-parentRefs","readOnly","writeOnly"].includes(e)))){const e=n,{description:r,title:i,readOnly:o,writeOnly:s}=e;return{allOf:[{description:r,title:i,readOnly:o,writeOnly:s},t,__rest(e,["description","title","readOnly","writeOnly"])]}}return Object.assign(Object.assign({},t),n)}mergeAllOf(e,t,r,i=""){var n;if(e["x-circular-ref"])return e;if(void 0===(e=this.hoistOneOfs(e)).allOf)return Object.assign({absolutePointer:i},e);let o=Object.assign(Object.assign({},e),{"x-parentRefs":[],absolutePointer:JsonPointer.join(i,["allOf"]),allOf:void 0,title:e.title||getDefinitionName(t)});void 0!==o.properties&&"object"==typeof o.properties&&(o.properties=Object.assign({},o.properties)),void 0!==o.items&&"object"==typeof o.items&&(o.items=Object.assign({},o.items));const s=e.allOf.map(((e,t)=>{var n;const{resolved:s,refsStack:l}=this.deref(e,r,!0),f=e.$ref,a=f||JsonPointer.join(i,[String(t)]),c=this.mergeAllOf(s,f,l,a);if(!c["x-circular-ref"]||!c.allOf)return f&&(null===(n=o["x-parentRefs"])||void 0===n||n.push(...c["x-parentRefs"]||[],f)),{$ref:f,refsStack:pushRef(l,f),schema:c,absolutePointer:a}})).filter((e=>void 0!==e));for(const[e,{schema:r,refsStack:i,absolutePointer:l}]of s.entries()){const{type:s,enum:f,properties:a,items:c,required:p,title:d,description:O,readOnly:u,writeOnly:y,oneOf:m,anyOf:b,"x-circular-ref":h}=r,v=__rest(r,["type","enum","properties","items","required","title","description","readOnly","writeOnly","oneOf","anyOf","x-circular-ref"]);if(o.type!==s&&void 0!==o.type&&void 0!==s&&console.warn(`Incompatible types in allOf at "${t}": "${o.type}" and "${s}"`),void 0!==s&&(Array.isArray(s)&&Array.isArray(o.type)?o.type=[...s,...o.type]:o.type=s),void 0!==f&&(Array.isArray(f)&&Array.isArray(o.enum)?o.enum=Array.from(new Set([...f,...o.enum])):o.enum=f),void 0!==a&&"object"==typeof a){o.properties=o.properties||{};for(const r in a){const s=concatRefStacks(i,null===(n=a[r])||void 0===n?void 0:n["x-refsStack"]);if(o.properties[r]){if(!h){const i=this.mergeAllOf({allOf:[o.properties[r],a[r]],"x-refsStack":s},t+"/properties/"+r,s,JsonPointer.join(l,["allOf",String(e),"properties",r]));o.properties[r]=i}}else o.properties[r]=Object.assign(Object.assign({},a[r]),{absolutePointer:JsonPointer.join(l,["properties",r]),"x-refsStack":s})}}if(void 0!==c&&!h){const e="boolean"==typeof o.items?{}:Object.assign({},o.items),n="boolean"==typeof r.items?{}:Object.assign({},r.items);o.items=this.mergeAllOf({allOf:[e,n]},t+"/items",i)}void 0!==m&&(o.oneOf=m),void 0!==b&&(o.anyOf=b),void 0!==p&&(o.required=[...o.required||[],...p]),o=Object.assign(Object.assign(Object.assign({},o),{title:o.title||d,description:o.description||O,readOnly:void 0!==o.readOnly?o.readOnly:u,writeOnly:void 0!==o.writeOnly?o.writeOnly:y,"x-circular-ref":o["x-circular-ref"]||h}),v)}return o}findDerived(e){const t={},r=this.definition.components&&this.definition.components.schemas||{};for(const i in r){const{resolved:n}=this.deref(r[i]);void 0!==n.allOf&&n.allOf.find((t=>void 0!==t.$ref&&e.indexOf(t.$ref)>-1))&&(t["#/components/schemas/"+i]=[n["x-discriminator-value"]||i])}return t}hoistOneOfs(e){if(void 0===e.allOf)return e;const t=e.allOf;for(let e=0;e<t.length;e++){const r=t[e];if(Array.isArray(r.oneOf)){const i=t.slice(0,e),n=t.slice(e+1);return{oneOf:r.oneOf.map((e=>({allOf:[...i,e,...n]})))}}}return e}}
1
+ var __rest=this&&this.__rest||function(e,t){var r={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(r[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(i=Object.getOwnPropertySymbols(e);n<i.length;n++)t.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(e,i[n])&&(r[i[n]]=e[i[n]])}return r};import{IS_BROWSER,getDefinitionName}from"../utils";import{JsonPointer}from"../utils/JsonPointer";import{normalizeOptions}from"./Options/normalizeOptions";export function pushRef(e,t){return t&&e[e.length-1]!==t?[...e,t]:e}export function concatRefStacks(e,t){return t?e.concat(t):e}export class OpenAPIParser{constructor(e,t,r=normalizeOptions({})){Object.defineProperty(this,"options",{enumerable:!0,configurable:!0,writable:!0,value:r}),Object.defineProperty(this,"definitionUrl",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"definition",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"allowMergeRefs",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"byRef",{enumerable:!0,configurable:!0,writable:!0,value:e=>{let t;if(this.definition){"#"!==e.charAt(0)&&(e="#"+e),e=decodeURIComponent(e);try{t=JsonPointer.get(this.definition,e)}catch(e){}return t||{}}}}),this.validate(e),this.preprocess(e),this.definition=e,this.allowMergeRefs=e.openapi.startsWith("3.1");const i=IS_BROWSER?window.location.href:"";"string"==typeof t&&(this.definitionUrl=new URL(t,i).href)}validate(e){if(void 0===e.openapi)throw new Error("Document must be valid OpenAPI 3.0.0 definition")}preprocess(e){if(e.info&&this.options.hideInfoDescription)return e.info.description="",void(e.info["x-parsed-md-description"]=void 0)}isRef(e){return!!e&&(void 0!==e.$ref&&null!==e.$ref)}deref(e,t=[],r=!1){const i=null==e?void 0:e["x-refsStack"];if(t=concatRefStacks(t,i),this.isRef(e)){const i=getDefinitionName(e.$ref);if(i&&this.options.ignoreNamedSchemas.has(i))return{resolved:{type:"object",title:i},refsStack:t};let n=this.byRef(e.$ref);if(!n)throw new Error(`Failed to resolve $ref "${e.$ref}"`);let o=t;if(t.includes(e.$ref))n=Object.assign({},n,{"x-circular-ref":!0});else if(this.isRef(n)){const e=this.deref(n,t,r);o=e.refsStack,n=e.resolved}return o=pushRef(t,e.$ref),n=this.allowMergeRefs?this.mergeRefs(e,n,r):n,{resolved:n,refsStack:o}}return{resolved:e,refsStack:concatRefStacks(t,i)}}mergeRefs(e,t,r){const{$ref:i}=e,n=__rest(e,["$ref"]),o=Object.keys(n);if(0===o.length)return t;if(r&&o.some((e=>!["description","title","externalDocs","x-refsStack","x-parentRefs","readOnly","writeOnly"].includes(e)))){const e=n,{description:r,title:i,readOnly:o,writeOnly:s}=e;return{allOf:[{description:r,title:i,readOnly:o,writeOnly:s},t,__rest(e,["description","title","readOnly","writeOnly"])]}}return Object.assign(Object.assign({},t),n)}mergeAllOf(e,t,r,i=""){var n;if(e["x-circular-ref"])return e;if(void 0===(e=this.hoistOneOfs(e)).allOf)return Object.assign({absolutePointer:i},e);let o=Object.assign(Object.assign({},e),{"x-parentRefs":[],absolutePointer:JsonPointer.join(i,["allOf"]),allOf:void 0,title:e.title||getDefinitionName(t)});void 0!==o.properties&&"object"==typeof o.properties&&(o.properties=Object.assign({},o.properties)),void 0!==o.items&&"object"==typeof o.items&&(o.items=Object.assign({},o.items));const s=e.allOf.map(((e,t)=>{var n;const{resolved:s,refsStack:f}=this.deref(e,r,!0),l=e.$ref,a=l||JsonPointer.join(i,[String(t)]),c=this.mergeAllOf(s,l,f,a);if(!c["x-circular-ref"]||!c.allOf)return l&&(null===(n=o["x-parentRefs"])||void 0===n||n.push(...c["x-parentRefs"]||[],l)),{$ref:l,refsStack:pushRef(f,l),schema:c,absolutePointer:a}})).filter((e=>void 0!==e));for(const[e,{schema:r,refsStack:i,absolutePointer:f}]of s.entries()){const{type:s,enum:l,properties:a,items:c,required:p,title:d,description:O,readOnly:u,writeOnly:y,oneOf:m,anyOf:b,"x-circular-ref":h}=r,v=__rest(r,["type","enum","properties","items","required","title","description","readOnly","writeOnly","oneOf","anyOf","x-circular-ref"]);if(o.type!==s&&void 0!==o.type&&void 0!==s&&console.warn(`Incompatible types in allOf at "${t}": "${o.type}" and "${s}"`),void 0!==s&&(Array.isArray(s)&&Array.isArray(o.type)?o.type=[...s,...o.type]:o.type=s),void 0!==l&&(Array.isArray(l)&&Array.isArray(o.enum)?o.enum=Array.from(new Set([...l,...o.enum])):o.enum=l),void 0!==a&&"object"==typeof a){o.properties=o.properties||{};for(const r in a){const s=concatRefStacks(i,null===(n=a[r])||void 0===n?void 0:n["x-refsStack"]);if(o.properties[r]){if(!h){const i=this.mergeAllOf({allOf:[o.properties[r],a[r]],"x-refsStack":s},t+"/properties/"+r,s,JsonPointer.join(f,["allOf",String(e),"properties",r]));o.properties[r]=i}}else o.properties[r]=Object.assign(Object.assign({},a[r]),{absolutePointer:JsonPointer.join(f,["properties",r]),"x-refsStack":s})}}if(void 0!==c&&!h){const e="boolean"==typeof o.items?{}:Object.assign({},o.items),n="boolean"==typeof r.items?{}:Object.assign({},r.items);o.items=this.mergeAllOf({allOf:[e,n]},t+"/items",i)}void 0!==m&&(o.oneOf=m),void 0!==b&&(o.anyOf=b),void 0!==p&&(o.required=[...o.required||[],...p]),o=Object.assign(Object.assign(Object.assign({},o),{title:o.title||d,description:o.description||O,readOnly:void 0!==o.readOnly?o.readOnly:u,writeOnly:void 0!==o.writeOnly?o.writeOnly:y,"x-circular-ref":o["x-circular-ref"]||h}),v)}return o}findDerived(e){const t={},r=this.definition.components&&this.definition.components.schemas||{};for(const i in r){const{resolved:n}=this.deref(r[i]);void 0!==n.allOf&&n.allOf.find((t=>void 0!==t.$ref&&e.indexOf(t.$ref)>-1))&&(t["#/components/schemas/"+i]=[n["x-discriminator-value"]||i])}return t}hoistOneOfs(e){if(void 0===e.allOf)return e;const t=e.allOf;for(let e=0;e<t.length;e++){const r=t[e];if(Array.isArray(r.oneOf)){const i=t.slice(0,e),n=t.slice(e+1);return{oneOf:r.oneOf.map((e=>({allOf:[...i,e,...n]})))}}}return e}}
2
2
  //# sourceMappingURL=OpenAPIParser.js.map
@@ -1,2 +1,2 @@
1
- import{getTagGroupsItems,getTagsItems,getTagsWithOperations}from"./tags";import{addMarkdownItems}from"./markdown";import{flattenByProp}from"../../utils";export function buildMenuStructure(t,e){const{definition:n}=t,o=[],i=[...n.tags||[]]||[];!i.find((t=>(null==t?void 0:t.name)===e.schemaDefinitionsTagName))&&e.schemaDefinitionsTagName&&i.push({name:e.schemaDefinitionsTagName});const s=getTagsWithOperations(t,i),a=n["x-tagGroups"];return o.push(...addMarkdownItems(n.info.description||"",void 0,1,e.markdownHeadingsAnchorLevel,e.pagination)),a&&a.length>0?o.push(...getTagGroupsItems(t,void 0,a,s,e)):o.push(...getTagsItems(t,s,void 0,void 0,e)),o}export function buildContentItems(t,e){const n=buildMenuStructure(t,e);return{contentItems:n,flatItems:flattenByProp(n||[],"items")}}
1
+ import{getTagGroupsItems,getTagsItems,getTagsWithOperations}from"./tags";import{addMarkdownItems}from"./markdown";import{flattenByProp,getValueFromMdParsedExtension}from"../../utils";export function buildMenuStructure(t,e){const{definition:n}=t,o=[],s=[...n.tags||[]]||[];!s.find((t=>(null==t?void 0:t.name)===e.schemaDefinitionsTagName))&&e.schemaDefinitionsTagName&&s.push({name:e.schemaDefinitionsTagName});const i=getTagsWithOperations(t,s),a=n["x-tagGroups"];return o.push(...addMarkdownItems(getValueFromMdParsedExtension(n.info,"description")||"",void 0,1,e.markdownHeadingsAnchorLevel,e.pagination)),a&&a.length>0?o.push(...getTagGroupsItems(t,void 0,a,i,e)):o.push(...getTagsItems(t,i,void 0,void 0,e)),o}export function buildContentItems(t,e){const n=buildMenuStructure(t,e);return{contentItems:n,flatItems:flattenByProp(n||[],"items")}}
2
2
  //# sourceMappingURL=builder.js.map
@@ -1,2 +1,2 @@
1
- import{getGroup}from"../../models";import{GROUP_DEPTH}from"../../constants";import{alphabeticallyByProp,isOperationName,JsonPointer}from"../../utils";import{getOperationsItems}from"./operation";import{addMarkdownItems}from"./markdown";export function getTagsItems(e,t,n,o,a){let s;if(s=void 0===o?Object.keys(t):o.tags,!Array.isArray(s))return console.warn("Unexpected values of tags. Check tags or x-tagGroups in your definition."),[];const i=s.map((e=>t[e]?(t[e].used=!0,t[e]):(console.warn(`Non-existing tag "${e}" is added to the group "${null==o?void 0:o.name}"`),null))),r=[];for(const t of i){if(!t)continue;const o=getGroup("tag",t,{pagination:a.pagination,markdownHeadingsAnchorLevel:a.markdownHeadingsAnchorLevel},n);if(o.depth=GROUP_DEPTH+1,""===t.name){const e=[...addMarkdownItems(t.description||"",o,o.depth+1,a.markdownHeadingsAnchorLevel,a.pagination),...getOperationsItems(void 0,t,o.depth+1,a)];r.push(...e);continue}const s=getTagRelatedSchema({definition:e.definition,tag:t,parent:o,schemaDefinitionsTagName:a.schemaDefinitionsTagName,options:{pagination:a.pagination,markdownHeadingsAnchorLevel:a.markdownHeadingsAnchorLevel}});o.items=[...s,...addMarkdownItems(t.description||"",o,o.depth+1,a.markdownHeadingsAnchorLevel,a.pagination),...getOperationsItems(o,t,o.depth+1,a)],r.push(o)}return a.sortTagsAlphabetically&&r.sort(alphabeticallyByProp("name")),r}export function getTagGroupsItems(e,t,n,o,a){const s=[];for(const i of n){const n=getGroup("group",i,{pagination:a.pagination,markdownHeadingsAnchorLevel:a.markdownHeadingsAnchorLevel},t);n.depth=GROUP_DEPTH,n.items=getTagsItems(e,o,n,i,a),s.push(n)}return s}function getTagRelatedSchema({definition:e,tag:t,parent:n,schemaDefinitionsTagName:o,options:a}){var s;const i=o?[o]:[];return Object.entries((null===(s=e.components)||void 0===s?void 0:s.schemas)||{}).map((([e,o])=>{if(!(o["x-tags"]||i).includes(t.name))return null;const s=getGroup("schema",{name:e,"x-displayName":`${o.title||e}`,description:`{% schemaDefinition showWriteOnly="true" schemaRef="#/components/schemas/${e}" /%}`,isSchema:!0,level:2},a,n);return s.depth=n.depth+1,s})).filter(Boolean)}export function getTagsWithOperations(e,t){const{definition:n}=e,o={},a=n["x-webhooks"]||n.webhooks;for(const e of t||[])o[e.name]=Object.assign(Object.assign({},e),{operations:[]});return n.paths&&getTags(e,n.paths,o),a&&getTags(e,a,o,!0),o}function getTags(e,t,n,o){for(const a of Object.keys(t||{})){const s=t[a],i=Object.keys(s).filter(isOperationName);for(const t of i){const i=s[t];if(s.$ref){const{resolved:t}=e.deref(s);getTags(e,{[a]:t},n,o);continue}let r=null==i?void 0:i.tags;r&&r.length||(r=[""]);for(const e of r){let r=n[e];void 0===r&&(r={name:e,operations:[]},n[e]=r),r["x-traitTag"]||r.operations.push(Object.assign(Object.assign({},i),{pathName:a,pointer:JsonPointer.compile(["paths",a,t]),httpVerb:t,pathParameters:s.parameters||[],pathServers:s.servers,isWebhook:!!o}))}}}}
1
+ import{getGroup}from"../../models";import{GROUP_DEPTH}from"../../constants";import{alphabeticallyByProp,getValueFromMdParsedExtension,isOperationName,JsonPointer}from"../../utils";import{getOperationsItems}from"./operation";import{addMarkdownItems}from"./markdown";export function getTagsItems(e,t,n,o,a){let s;if(s=void 0===o?Object.keys(t):o.tags,!Array.isArray(s))return console.warn("Unexpected values of tags. Check tags or x-tagGroups in your definition."),[];const i=s.map((e=>t[e]?(t[e].used=!0,t[e]):(console.warn(`Non-existing tag "${e}" is added to the group "${null==o?void 0:o.name}"`),null))),r=[];for(const t of i){if(!t)continue;const o=getGroup("tag",t,{pagination:a.pagination,markdownHeadingsAnchorLevel:a.markdownHeadingsAnchorLevel},n);if(o.depth=GROUP_DEPTH+1,""===t.name){const e=[...addMarkdownItems(getValueFromMdParsedExtension(t,"description")||"",o,o.depth+1,a.markdownHeadingsAnchorLevel,a.pagination),...getOperationsItems(void 0,t,o.depth+1,a)];r.push(...e);continue}const s=getTagRelatedSchema({definition:e.definition,tag:t,parent:o,schemaDefinitionsTagName:a.schemaDefinitionsTagName,options:{pagination:a.pagination,markdownHeadingsAnchorLevel:a.markdownHeadingsAnchorLevel}});o.items=[...s,...addMarkdownItems(getValueFromMdParsedExtension(t,"description")||"",o,o.depth+1,a.markdownHeadingsAnchorLevel,a.pagination),...getOperationsItems(o,t,o.depth+1,a)],r.push(o)}return a.sortTagsAlphabetically&&r.sort(alphabeticallyByProp("name")),r}export function getTagGroupsItems(e,t,n,o,a){const s=[];for(const i of n){const n=getGroup("group",i,{pagination:a.pagination,markdownHeadingsAnchorLevel:a.markdownHeadingsAnchorLevel},t);n.depth=GROUP_DEPTH,n.items=getTagsItems(e,o,n,i,a),s.push(n)}return s}function getTagRelatedSchema({definition:e,tag:t,parent:n,schemaDefinitionsTagName:o,options:a}){var s;const i=o?[o]:[];return Object.entries((null===(s=e.components)||void 0===s?void 0:s.schemas)||{}).map((([e,o])=>{if(!(o["x-tags"]||i).includes(t.name))return null;const s=getGroup("schema",{name:e,"x-displayName":`${o.title||e}`,description:`{% schemaDefinition showWriteOnly="true" schemaRef="#/components/schemas/${e}" /%}`,isSchema:!0,level:2},a,n);return s.depth=n.depth+1,s})).filter(Boolean)}export function getTagsWithOperations(e,t){const{definition:n}=e,o={},a=n["x-webhooks"]||n.webhooks;for(const e of t||[])o[e.name]=Object.assign(Object.assign({},e),{operations:[]});return n.paths&&getTags(e,n.paths,o),a&&getTags(e,a,o,!0),o}function getTags(e,t,n,o){for(const a of Object.keys(t||{})){const s=t[a],i=Object.keys(s).filter(isOperationName);for(const t of i){const i=s[t];if(s.$ref){const{resolved:t}=e.deref(s);getTags(e,{[a]:t},n,o);continue}let r=null==i?void 0:i.tags;r&&r.length||(r=[""]);for(const e of r){let r=n[e];void 0===r&&(r={name:e,operations:[]},n[e]=r),r["x-traitTag"]||r.operations.push(Object.assign(Object.assign({},i),{pathName:a,pointer:JsonPointer.compile(["paths",a,t]),httpVerb:t,pathParameters:s.parameters||[],pathServers:s.servers,isWebhook:!!o}))}}}}
2
2
  //# sourceMappingURL=tags.js.map
@@ -15,10 +15,10 @@ export interface OpenAPIDefinition {
15
15
  tags: Array<string>;
16
16
  }>;
17
17
  }
18
- export interface OpenAPIInfo {
18
+ export interface OpenAPIInfo extends ParsedDescriptionWithSummary {
19
19
  title: string;
20
20
  version: string;
21
- description?: string | GenericObject;
21
+ description?: string;
22
22
  summary?: string;
23
23
  termsOfService?: string;
24
24
  contact?: OpenAPIContact;
@@ -31,31 +31,31 @@ export interface XLogo {
31
31
  altText?: string;
32
32
  href?: string;
33
33
  }
34
- export interface OpenAPIServer {
34
+ export interface OpenAPIServer extends ParsedDescription {
35
35
  url: string;
36
- description?: string | GenericObject;
36
+ description?: string;
37
37
  variables?: {
38
38
  [name: string]: OpenAPIServerVariable;
39
39
  };
40
40
  }
41
- export interface OpenAPIServerVariable {
41
+ export interface OpenAPIServerVariable extends ParsedDescription {
42
42
  enum?: string[];
43
43
  default: string;
44
- description?: string | GenericObject;
44
+ description?: string;
45
45
  }
46
46
  export interface OpenAPIPaths {
47
47
  [path: string]: OpenAPIPath;
48
48
  }
49
- export interface OpenAPIRef {
49
+ export interface OpenAPIRef extends ParsedDescriptionWithSummary {
50
50
  $ref: string;
51
51
  'x-refsStack'?: string[];
52
52
  summary?: string;
53
- description?: string | GenericObject;
53
+ description?: string;
54
54
  }
55
55
  export type Referenced<T> = T | OpenAPIRef;
56
- export interface OpenAPIPath extends Partial<OpenAPIRef> {
56
+ export interface OpenAPIPath extends Partial<OpenAPIRef>, ParsedDescriptionWithSummary {
57
57
  summary?: string;
58
- description?: string | GenericObject;
58
+ description?: string;
59
59
  get?: OpenAPIOperation;
60
60
  put?: OpenAPIOperation;
61
61
  post?: OpenAPIOperation;
@@ -70,10 +70,10 @@ export interface OpenAPIPath extends Partial<OpenAPIRef> {
70
70
  export interface OpenAPIXCodeSample extends Sample {
71
71
  source: string;
72
72
  }
73
- export interface OpenAPIOperation {
73
+ export interface OpenAPIOperation extends ParsedDescriptionWithSummary {
74
74
  tags?: string[];
75
- summary?: string | GenericObject;
76
- description?: string | GenericObject;
75
+ summary?: string;
76
+ description?: string;
77
77
  externalDocs?: OpenAPIExternalDocumentation;
78
78
  operationId?: string;
79
79
  parameters?: Array<Referenced<OpenAPIParameter>>;
@@ -88,10 +88,10 @@ export interface OpenAPIOperation {
88
88
  'x-codeSamples'?: OpenAPIXCodeSample[];
89
89
  'x-code-samples'?: OpenAPIXCodeSample[];
90
90
  }
91
- export interface OpenAPIParameter {
91
+ export interface OpenAPIParameter extends ParsedDescription {
92
92
  name: string;
93
93
  in?: OpenAPIParameterLocation;
94
- description?: string | GenericObject;
94
+ description?: string;
95
95
  required?: boolean;
96
96
  deprecated?: boolean;
97
97
  allowEmptyValue?: boolean;
@@ -109,13 +109,13 @@ export interface OpenAPIParameter {
109
109
  encoding?: Record<string, OpenAPIEncoding>;
110
110
  const?: any;
111
111
  }
112
- export interface OpenAPIExample {
112
+ export interface OpenAPIExample extends ParsedDescriptionWithSummary {
113
113
  value: any;
114
114
  summary?: string;
115
- description?: string | GenericObject;
115
+ description?: string;
116
116
  externalValue?: string;
117
117
  }
118
- export interface OpenAPISchema {
118
+ export interface OpenAPISchema extends ParsedDescription {
119
119
  $ref?: string;
120
120
  type?: string | string[];
121
121
  properties?: {
@@ -126,7 +126,7 @@ export interface OpenAPISchema {
126
126
  };
127
127
  additionalProperties?: boolean | OpenAPISchema;
128
128
  unevaluatedProperties?: boolean | OpenAPISchema;
129
- description?: string | GenericObject;
129
+ description?: string;
130
130
  default?: any;
131
131
  items?: OpenAPISchema | OpenAPISchema[] | boolean;
132
132
  required?: string[];
@@ -195,8 +195,8 @@ export interface OpenAPIEncoding {
195
195
  }
196
196
  export type OpenAPIParameterLocation = 'query' | 'header' | 'path' | 'cookie';
197
197
  export type OpenAPIParameterStyle = 'matrix' | 'label' | 'form' | 'simple' | 'spaceDelimited' | 'pipeDelimited' | 'deepObject';
198
- export interface OpenAPIRequestBody {
199
- description?: string | GenericObject;
198
+ export interface OpenAPIRequestBody extends ParsedDescription {
199
+ description?: string;
200
200
  required?: boolean;
201
201
  content: {
202
202
  [mime: string]: OpenAPIMediaType;
@@ -213,8 +213,8 @@ export interface OpenAPIRequestBody {
213
213
  export interface OpenAPIResponses {
214
214
  [code: string]: OpenAPIResponse;
215
215
  }
216
- export interface OpenAPIResponse {
217
- description?: string | GenericObject;
216
+ export interface OpenAPIResponse extends ParsedDescription {
217
+ description?: string;
218
218
  headers?: {
219
219
  [name: string]: Referenced<OpenAPIHeader>;
220
220
  };
@@ -272,9 +272,9 @@ export interface OpenAPIComponents {
272
272
  export interface OpenAPISecurityRequirement {
273
273
  [name: string]: string[];
274
274
  }
275
- export interface OpenAPISecurityScheme {
275
+ export interface OpenAPISecurityScheme extends ParsedDescription {
276
276
  type: 'apiKey' | 'http' | 'oauth2' | 'openIdConnect';
277
- description?: string | GenericObject;
277
+ description?: string;
278
278
  name?: string;
279
279
  in?: 'query' | 'header' | 'cookie';
280
280
  scheme?: string;
@@ -312,14 +312,14 @@ export interface OpenAPISecurityScheme {
312
312
  };
313
313
  openIdConnectUrl?: string;
314
314
  }
315
- export interface OpenAPITag {
315
+ export interface OpenAPITag extends ParsedDescription {
316
316
  name: string;
317
- description?: string | GenericObject;
317
+ description?: string;
318
318
  externalDocs?: OpenAPIExternalDocumentation;
319
319
  'x-displayName'?: string;
320
320
  }
321
- export interface OpenAPIExternalDocumentation {
322
- description?: string | GenericObject;
321
+ export interface OpenAPIExternalDocumentation extends ParsedDescription {
322
+ description?: string;
323
323
  url: string;
324
324
  }
325
325
  export interface OpenAPIContact {
@@ -335,3 +335,9 @@ export interface OpenAPILicense {
335
335
  export interface ParsedDocument extends OpenAPIDefinition {
336
336
  swagger: unknown;
337
337
  }
338
+ export interface ParsedDescription {
339
+ 'x-parsed-md-description'?: GenericObject;
340
+ }
341
+ export interface ParsedDescriptionWithSummary extends ParsedDescription {
342
+ 'x-parsed-md-summary'?: GenericObject;
343
+ }
@@ -49,4 +49,5 @@ export declare function joinStringFactory(separator: string): (...args: (string
49
49
  export declare const dottedString: (...args: (string | undefined)[]) => string;
50
50
  export declare function getWindowReferenceOptions<T>(option: string): T | null;
51
51
  export declare function getJsUrl(): string;
52
- export declare const normalizeText: (description?: string | GenericObject) => string;
52
+ export declare const normalizeText: (text?: string | GenericObject) => string;
53
+ export declare const getValueFromMdParsedExtension: (item: GenericObject, key: 'description' | 'summary' | 'x-summary' | 'x-enumDescriptions') => any;
@@ -1,2 +1,2 @@
1
- import slugify from"slugify";import{format,parse}from"url";import{ZERO_BREAKPOINT}from"./media-css";import{isNamedDefinition}from"./openapi";import{JsonPointer}from"./JsonPointer";import{IS_BROWSER}from"./dom";import{isString}from"./typeGuards";export function mapWithLast(e,t){const r=[];for(let n=0;n<e.length-1;n++)r.push(t(e[n],!1));return 0!==e.length&&r.push(t(e[e.length-1],!0)),r}export function mapValues(e,t){const r={};for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=t(e[n],n,e));return r}export function flattenByProp(e,t){const r=[],n=e=>{for(const o of e)r.push(o),o[t]&&n(o[t])};return n(e),r}export function stripTrailingSlash(e){return e.endsWith("/")?e.substring(0,e.length-1):e}export function isNumeric(e){return!isNaN(parseFloat(e))&&isFinite(e)}export function appendToMdHeading(e,t,r){const n=new RegExp(`(^|\\n)#\\s?${t}\\s*\\n`,"i"),o=new RegExp(`((\\n|^)#\\s*${t}\\s*(\\n|$)(?:.|\\n)*?)(\\n#|$)`,"i");if(n.test(e))return e.replace(o,`$1\n\n${r}\n$4`);{const n=""===e||e.endsWith("\n\n")?"":e.endsWith("\n")?"\n":"\n\n";return`${e}${n}# ${t}\n\n${r}`}}export const mergeObjects=(e,...t)=>{if(!t.length)return e;const r=t.shift();return void 0===r?e:(isMergeableObject(e)&&isMergeableObject(r)&&Object.keys(r).forEach((t=>{isMergeableObject(r[t])?(e[t]||(e[t]={}),["string","number"].includes(typeof e[t])&&(r[t][ZERO_BREAKPOINT]||0===r[t][ZERO_BREAKPOINT]||console.warn(`Theme resolver: using default value of "${e[t]}" for "${t}". This is not recommended. Prefer adding default value by providing "${ZERO_BREAKPOINT}" property to ${JSON.stringify(r[t])}.`),e[t]={[ZERO_BREAKPOINT]:e[t]}),mergeObjects(e[t],r[t])):e[t]=r[t]})),mergeObjects(e,...t))};export const isObject=e=>null!==e&&"object"==typeof e;export const isArrayOfObjects=e=>Array.isArray(e)&&e.some((e=>isObject(e)));export const deleteEmptyArrayItem=e=>e.filter((e=>!!e));export const isMergeableObject=e=>isObject(e)&&!Array.isArray(e);export function safeSlugify(e){return slugify(e)||e.toString().toLowerCase().replace(/\s+/g,"-").replace(/&/g,"-and-").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,"")}export function isAbsoluteUrl(e){return/(?:^[a-z][a-z0-9+.-]*:|\/\/)/i.test(e)}export function resolveUrl(e,t){let r;if(t.startsWith("//")){const{protocol:n}=parse(e);r=`${n||"https:"}${t}`}else if(isAbsoluteUrl(t))r=t;else if(t.startsWith("/")){const n=parse(e);r=format(Object.assign(Object.assign({},n),{pathname:t}))}else r=stripTrailingSlash(e)+"/"+t;return stripTrailingSlash(r)}export function getBasePath(e){try{return parseURL(e).pathname}catch(t){return e}}export function titleize(e){return e.charAt(0).toUpperCase()+e.slice(1)}export function removeQueryStringAndHash(e){try{const t=parseURL(e);return t.search="",t.hash="",t.toString()}catch(t){return e}}function parseURL(e){return"undefined"==typeof URL?new(require("url").URL)(e):new URL(e)}export function escapeHTMLAttrChars(e){return e.replace(/["\\]/g,"\\$&")}export function unescapeHTMLChars(e){return e.replace(/&#(\d+);/g,((e,t)=>String.fromCharCode(parseInt(t,10)))).replace(/&amp;/g,"&").replace(/&quot;/g,'"')}export function sanitizeItemId(e){return e&&e.replace(/#/g,"_")}export function useSchemaTitle(e,t){return t||isNamedDefinition(e)&&JsonPointer.baseName(e)||""}export function get(e={},t,r){return"string"==typeof t&&(t=t.split(".")),t.reduce(((e,t)=>e&&e[t]?e[t]:r),e)}export function joinStringFactory(e){return(...t)=>t.filter(Boolean).join(e)}export const dottedString=joinStringFactory(".");export function getWindowReferenceOptions(e){var t;return IS_BROWSER?null===(t=null===window||void 0===window?void 0:window.REFERENCE_DOCS_OPTIONS)||void 0===t?void 0:t[e]:null}export function getJsUrl(){var e;if(!IS_BROWSER)return"";const t=+new Date+Math.random();try{return document.currentScript&&(document.currentScript.async||document.currentScript.defer)||document.write(`<script id="dummy${t}"><\/script>`),(null===(e=document.getElementById("dummy"+t))||void 0===e?void 0:e.previousSibling).src}catch(e){return""}}export const normalizeText=e=>isString(e)?e:null==e?void 0:e.raw;
1
+ import slugify from"slugify";import{format,parse}from"url";import{ZERO_BREAKPOINT}from"./media-css";import{isNamedDefinition}from"./openapi";import{JsonPointer}from"./JsonPointer";import{IS_BROWSER}from"./dom";import{isString}from"./typeGuards";export function mapWithLast(e,t){const r=[];for(let n=0;n<e.length-1;n++)r.push(t(e[n],!1));return 0!==e.length&&r.push(t(e[e.length-1],!0)),r}export function mapValues(e,t){const r={};for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&(r[n]=t(e[n],n,e));return r}export function flattenByProp(e,t){const r=[],n=e=>{for(const o of e)r.push(o),o[t]&&n(o[t])};return n(e),r}export function stripTrailingSlash(e){return e.endsWith("/")?e.substring(0,e.length-1):e}export function isNumeric(e){return!isNaN(parseFloat(e))&&isFinite(e)}export function appendToMdHeading(e,t,r){const n=new RegExp(`(^|\\n)#\\s?${t}\\s*\\n`,"i"),o=new RegExp(`((\\n|^)#\\s*${t}\\s*(\\n|$)(?:.|\\n)*?)(\\n#|$)`,"i");if(n.test(e))return e.replace(o,`$1\n\n${r}\n$4`);{const n=""===e||e.endsWith("\n\n")?"":e.endsWith("\n")?"\n":"\n\n";return`${e}${n}# ${t}\n\n${r}`}}export const mergeObjects=(e,...t)=>{if(!t.length)return e;const r=t.shift();return void 0===r?e:(isMergeableObject(e)&&isMergeableObject(r)&&Object.keys(r).forEach((t=>{isMergeableObject(r[t])?(e[t]||(e[t]={}),["string","number"].includes(typeof e[t])&&(r[t][ZERO_BREAKPOINT]||0===r[t][ZERO_BREAKPOINT]||console.warn(`Theme resolver: using default value of "${e[t]}" for "${t}". This is not recommended. Prefer adding default value by providing "${ZERO_BREAKPOINT}" property to ${JSON.stringify(r[t])}.`),e[t]={[ZERO_BREAKPOINT]:e[t]}),mergeObjects(e[t],r[t])):e[t]=r[t]})),mergeObjects(e,...t))};export const isObject=e=>null!==e&&"object"==typeof e;export const isArrayOfObjects=e=>Array.isArray(e)&&e.some((e=>isObject(e)));export const deleteEmptyArrayItem=e=>e.filter((e=>!!e));export const isMergeableObject=e=>isObject(e)&&!Array.isArray(e);export function safeSlugify(e){return slugify(e)||e.toString().toLowerCase().replace(/\s+/g,"-").replace(/&/g,"-and-").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,"")}export function isAbsoluteUrl(e){return/(?:^[a-z][a-z0-9+.-]*:|\/\/)/i.test(e)}export function resolveUrl(e,t){let r;if(t.startsWith("//")){const{protocol:n}=parse(e);r=`${n||"https:"}${t}`}else if(isAbsoluteUrl(t))r=t;else if(t.startsWith("/")){const n=parse(e);r=format(Object.assign(Object.assign({},n),{pathname:t}))}else r=stripTrailingSlash(e)+"/"+t;return stripTrailingSlash(r)}export function getBasePath(e){try{return parseURL(e).pathname}catch(t){return e}}export function titleize(e){return e.charAt(0).toUpperCase()+e.slice(1)}export function removeQueryStringAndHash(e){try{const t=parseURL(e);return t.search="",t.hash="",t.toString()}catch(t){return e}}function parseURL(e){return"undefined"==typeof URL?new(require("url").URL)(e):new URL(e)}export function escapeHTMLAttrChars(e){return e.replace(/["\\]/g,"\\$&")}export function unescapeHTMLChars(e){return e.replace(/&#(\d+);/g,((e,t)=>String.fromCharCode(parseInt(t,10)))).replace(/&amp;/g,"&").replace(/&quot;/g,'"')}export function sanitizeItemId(e){return e&&e.replace(/#/g,"_")}export function useSchemaTitle(e,t){return t||isNamedDefinition(e)&&JsonPointer.baseName(e)||""}export function get(e={},t,r){return"string"==typeof t&&(t=t.split(".")),t.reduce(((e,t)=>e&&e[t]?e[t]:r),e)}export function joinStringFactory(e){return(...t)=>t.filter(Boolean).join(e)}export const dottedString=joinStringFactory(".");export function getWindowReferenceOptions(e){var t;return IS_BROWSER?null===(t=null===window||void 0===window?void 0:window.REFERENCE_DOCS_OPTIONS)||void 0===t?void 0:t[e]:null}export function getJsUrl(){var e;if(!IS_BROWSER)return"";const t=+new Date+Math.random();try{return document.currentScript&&(document.currentScript.async||document.currentScript.defer)||document.write(`<script id="dummy${t}"><\/script>`),(null===(e=document.getElementById("dummy"+t))||void 0===e?void 0:e.previousSibling).src}catch(e){return""}}export const normalizeText=e=>isString(e)?e:null==e?void 0:e.raw;export const getValueFromMdParsedExtension=(e,t)=>e[`x-parsed-md-${t}`]||e[t];
2
2
  //# sourceMappingURL=helpers.js.map
@@ -5,7 +5,7 @@ import { OpenAPIParameter } from '../types';
5
5
  export declare function isStatusCode(statusCode: string): boolean;
6
6
  export declare function getStatusCodeType(statusCode: string | number, defaultAsError?: boolean): string;
7
7
  export declare function isOperationName(key: string): boolean;
8
- export declare function getOperationName({ operationId, description, summary, pathName, }: ExtendedOpenAPIOperation): string;
8
+ export declare function getOperationName(operation: ExtendedOpenAPIOperation): string;
9
9
  export declare function getOperationId(operation: ExtendedOpenAPIOperation, parent?: GroupModel): string;
10
10
  export declare function detectType(schema: OpenAPISchema): string;
11
11
  export declare function isPrimitiveType(schema: OpenAPISchema, type?: string | string[] | undefined): boolean;
@@ -16,9 +16,7 @@ export declare function urlFormEncodePayload(payload: GenericObject, encoding?:
16
16
  }): string;
17
17
  export declare function serializeQueryParameter(name: string, style: OpenAPIParameterStyle | undefined, explode: boolean, value: unknown): string;
18
18
  export declare function serializeParameterValueWithMime(value: unknown, mime: string): string;
19
- export declare function serializeParameterValue(parameter: OpenAPIParameter & {
20
- serializationMime?: string;
21
- }, value: unknown): string;
19
+ export declare function serializeParameterValue(parameter: FieldModel, value: unknown): string;
22
20
  export declare function langFromMime(contentType: string): string;
23
21
  export declare function isNamedDefinition(pointer?: string): boolean;
24
22
  export declare function getDefinitionName(pointer?: string): string | undefined;
@@ -1,2 +1,2 @@
1
- import{dirname}from"path";import UrlTemplate from"url-template";import{IS_BROWSER}from"./dom";import{deleteEmptyArrayItem,isArrayOfObjects,isNumeric,removeQueryStringAndHash,resolveUrl,sanitizeItemId,normalizeText}from"./helpers";import{MediaTypes}from"../constants";import{JsonPointer}from"./JsonPointer";function isWildcardStatusCode(e){return"string"==typeof e&&/\dxx/i.test(e)}export function isStatusCode(e){return"default"===e||isNumeric(e)||isWildcardStatusCode(e)}export function getStatusCodeType(e,r=!1){if("default"===e)return r?"error":"success";let t="string"==typeof e?parseInt(e,10):e;if(isWildcardStatusCode(e)&&(t*=100),t<100||t>599)throw new Error("invalid HTTP code");let i="success";return t>=300&&t<400?i="redirect":t>=400?i="error":t<200&&(i="info"),i}const operationNames={get:!0,post:!0,put:!0,head:!0,patch:!0,delete:!0,options:!0,$ref:!0};export function isOperationName(e){return e in operationNames}export function getOperationName({operationId:e,description:r,summary:t,pathName:i}){const n=normalizeText(r);return normalizeText(t)||e||n&&n.substring(0,50)||i||"<no summary>"}export function getOperationId(e,r){return sanitizeItemId(void 0!==e.operationId?"operation/"+e.operationId:void 0!==r?r.id+e.pointer:e.pointer)}const schemaKeywordTypes={multipleOf:"number",maximum:"number",exclusiveMaximum:"number",minimum:"number",exclusiveMinimum:"number",maxLength:"string",minLength:"string",pattern:"string",contentEncoding:"string",contentMediaType:"string",items:"array",maxItems:"array",minItems:"array",uniqueItems:"array",maxProperties:"object",minProperties:"object",required:"object",additionalProperties:"object",unevaluatedProperties:"object",patternProperties:"object",properties:"object"};export function detectType(e){if(void 0!==e.type&&!Array.isArray(e.type))return e.type;const r=Object.keys(schemaKeywordTypes);for(const t of r){const r=schemaKeywordTypes[t];if(void 0!==e[t])return r}return"any"}export function isPrimitiveType(e,r=e.type){if(e["x-circular-ref"])return!0;if(void 0!==e.oneOf||void 0!==e.anyOf)return!1;if(e.if&&e.then||e.if&&e.else)return!1;let t=!0;const i=Array.isArray(r);return("object"===r||i&&(null==r?void 0:r.includes("object")))&&(t=void 0!==e.properties?0===Object.keys(e.properties).length:void 0===e.additionalProperties&&void 0===e.unevaluatedProperties&&void 0===e.patternProperties),!Array.isArray(e.items)&&!Array.isArray(e.prefixItems)&&(void 0!==e.items&&"boolean"!=typeof e.items&&("array"===r||i&&(null==r?void 0:r.includes("array")))&&(t=isPrimitiveType(e.items,e.items.type)),t)}export function isJsonLike(e){return-1!==e.search(/json/i)}export function isFormUrlEncoded(e){return e===MediaTypes.URL_ENCODED}function delimitedEncodeField(e,r,t){return Array.isArray(e)?e.map((e=>e.toString())).join(t):"object"==typeof e?Object.keys(e).map((r=>`${r}${t}${e[r]}`)).join(t):r+"="+e.toString()}function deepObjectEncodeField(e,r){return Array.isArray(e)?(console.warn("deepObject style cannot be used with array value:"+e.toString()),""):"object"==typeof e?Object.keys(e).map((t=>e[t]?`${r}[${t}]=${e[t]}`:void 0)).filter(Boolean).join("&"):(console.warn("deepObject style cannot be used with non-object value:"+e.toString()),"")}function serializeFormValue(e,r,t){const i="__redoc_param_name__",n=r?"*":"";return UrlTemplate.parse(`{?${i}${n}}`).expand({[i]:t}).substring(1).replace(/__redoc_param_name__/g,e)}function serializeSimpleValue(e,r){const t=e?"*":"",i="__redoc_param_name__",n=UrlTemplate.parse(`{${i}${t}}`);return decodeURIComponent(n.expand({[i]:r}))}export function urlFormEncodePayload(e,r={}){if(Array.isArray(e))throw new Error("Payload must have fields: "+e.toString());return Object.keys(e).map((t=>{const i=e[t],{style:n="form",explode:o=!0}=r[t]||{};switch(n){case"form":return serializeFormValue(t,o,i);case"spaceDelimited":return delimitedEncodeField(i,t,"%20");case"pipeDelimited":return delimitedEncodeField(i,t,"|");case"deepObject":return deepObjectEncodeField(i,t);default:return console.warn("Incorrect or unsupported encoding style: "+n),""}})).join("&")}function serializePathParameter(e,r,t,i){const n=t?"*":"";let o="";"label"===r?o=".":"matrix"===r&&(o=";");const a="__redoc_param_name__";return UrlTemplate.parse(`{${o}${a}${n}}`).expand({[a]:i}).replace(/__redoc_param_name__/g,e)}export function serializeQueryParameter(e,r,t,i){const n=n=>{switch(r){case"form":return serializeFormValue(e,t,n);case"spaceDelimited":return Array.isArray(n)?t?serializeFormValue(e,t,n):`${e}=${n.join("%20")}`:(console.warn("The style spaceDelimited is only applicable to arrays"),"");case"pipeDelimited":return Array.isArray(n)?t?serializeFormValue(e,t,n):`${e}=${n.join("|")}`:(console.warn("The style pipeDelimited is only applicable to arrays"),"");case"deepObject":return!t||Array.isArray(n)||"object"!=typeof n?(console.warn("The style deepObject is only applicable for objects with explode=true"),""):deepObjectEncodeField(n,e);case"simple":return serializeSimpleValue(t,i);default:return console.warn("Unexpected style for query: "+r),""}};return isArrayOfObjects(i)&&(i=deleteEmptyArrayItem(i).map((e=>n(e)))),n(i)}function serializeHeaderParameter(e,r,t){return"simple"===e?serializeSimpleValue(r,t):(console.warn("Unexpected style for header: "+e),"")}function serializeCookieParameter(e,r,t,i){return"form"===r?serializeFormValue(e,t,i):(console.warn("Unexpected style for cookie: "+r),"")}export function serializeParameterValueWithMime(e,r){return isJsonLike(r)?JSON.stringify(e):(console.warn(`Parameter serialization as ${r} is not supported`),"")}export function serializeParameterValue(e,r){const{name:t,style:i,explode:n=!1,serializationMime:o}=e;if(o)switch(e.in){case"path":case"header":return serializeParameterValueWithMime(r,o);case"cookie":case"query":return`${t}=${serializeParameterValueWithMime(r,o)}`;default:return console.warn("Unexpected parameter location: "+e.in),""}if(!i)return console.warn(`Missing style attribute or content for parameter ${t}`),"";switch(e.in){case"path":return serializePathParameter(t,i,n,r);case"query":return serializeQueryParameter(t,i,n,r);case"header":return serializeHeaderParameter(i,n,r);case"cookie":return serializeCookieParameter(t,i,n,r);default:return console.warn("Unexpected parameter location: "+e.in),""}}export function langFromMime(e){return-1!==e.search(/xml/i)?"xml":"clike"}const DEFINITION_NAME_REGEX=/^#\/components\/(schemas|pathItems)\/([^/]+)$/;export function isNamedDefinition(e){return DEFINITION_NAME_REGEX.test(e||"")}export function getDefinitionName(e){var r;return null===(r=null==e?void 0:e.match(DEFINITION_NAME_REGEX))||void 0===r?void 0:r.pop()}function humanizeMultipleOfConstraint(e){if(void 0===e)return;const r=e.toString(10);return/^0\.0*1$/.test(r)?`decimal places <= ${r.split(".")[1].length}`:`multiple of ${r}`}function humanizeRangeConstraint(e,r,t){let i;return void 0!==r&&void 0!==t?i=r===t?`= ${r} ${e}`:`[ ${r} .. ${t} ] ${e}`:void 0!==t?i=`<= ${t} ${e}`:void 0!==r&&(i=1===r?"non-empty":`>= ${r} ${e}`),i}export function humanizeNumberRange(e){var r,t;const i="number"==typeof e.exclusiveMinimum?Math.min(e.exclusiveMinimum,null!==(r=e.minimum)&&void 0!==r?r:1/0):e.minimum,n="number"==typeof e.exclusiveMaximum?Math.max(e.exclusiveMaximum,null!==(t=e.maximum)&&void 0!==t?t:-1/0):e.maximum,o="number"==typeof e.exclusiveMinimum||e.exclusiveMinimum,a="number"==typeof e.exclusiveMaximum||e.exclusiveMaximum;return void 0!==i&&void 0!==n?`${o?"( ":"[ "}${i} .. ${n}${a?" )":" ]"}`:void 0!==n?`${a?"< ":"<= "}${n}`:void 0!==i?`${o?"> ":">= "}${i}`:void 0}export function humanizeConstraints(e){const r=[],t=humanizeRangeConstraint("characters",e.minLength,e.maxLength);void 0!==t&&r.push(t);const i=humanizeRangeConstraint("items",e.minItems,e.maxItems);void 0!==i&&r.push(i);const n=humanizeRangeConstraint("properties",e.minProperties,e.maxProperties);void 0!==n&&r.push(n);const o=humanizeMultipleOfConstraint(e.multipleOf);void 0!==o&&r.push(o);const a=humanizeNumberRange(e);return void 0!==a&&r.push(a),e.uniqueItems&&r.push("unique"),r}export function sortByRequired(e,r=[]){const t=[],i=[],n=[];return e.forEach((e=>{e.required?r.includes(e.name)?i.push(e):n.push(e):t.push(e)})),i.sort(((e,t)=>r.indexOf(e.name)-r.indexOf(t.name))),[...i,...n,...t]}export function sortByField(e,r){return[...e].sort(((e,t)=>e[r].localeCompare(t[r])))}export function mergeParams(e,r=[],t=[],{pathPointer:i,operationPointer:n}){const o={};t.forEach((r=>{({resolved:r}=e.deref(r)),o[r.name+"_"+r.in]=!0}));return[...r.map(((e,r)=>({paramOrRef:e,pointer:JsonPointer.join(i,["parameters",String(r)])}))).filter((({paramOrRef:r})=>(({resolved:r}=e.deref(r)),!o[r.name+"_"+r.in]))),...t.map(((e,r)=>({paramOrRef:e,pointer:JsonPointer.join(n,["parameters",String(r)])})))]}export function mergeSimilarMediaTypes(e){const r={};return Object.keys(e).forEach((t=>{const i=e[t],n=t.split(";")[0].trim();r[n]?r[n]=Object.assign(Object.assign({},r[n]),i):r[n]=i})),r}export function expandDefaultServerVariables(e,r={}){return e.replace(/(?:{)([\w-.]+)(?:})/g,((e,t)=>r[t]&&r[t].default||e))}export function normalizeServers(e,r){const t=void 0===e?removeQueryStringAndHash((()=>{if(!IS_BROWSER)return"";const e=window.location.href;return e.endsWith(".html")?dirname(e):e})()):dirname(e);return 0===r.length&&(r=[{url:"/"}]),r.map((e=>{return Object.assign(Object.assign({},e),{url:(r=e.url,resolveUrl(t,r)),description:e.description||""});var r}))}export const shortenHTTPVerb=e=>({delete:"del",options:"opts"}[e]||e);export function isRedocExtension(e){return e in{"x-circular-ref":!0,"x-parentRefs":!0,"x-refsStack":!0,"x-code-samples":!0,"x-codeSamples":!0,"x-displayName":!0,"x-examples":!0,"x-ignoredHeaderParameters":!0,"x-logo":!0,"x-nullable":!0,"x-servers":!0,"x-tagGroups":!0,"x-traitTag":!0,"x-additionalPropertiesName":!0,"x-explicitMappingOnly":!0,"x-enumDescriptions":!0,"x-hideTryItPanel":!0,"x-tokenEndpointAuthMethod":!0}}export function extractExtensions(e,r){return Object.keys(e).filter((e=>!0===r?e.startsWith("x-")&&!isRedocExtension(e):e.startsWith("x-")&&r.indexOf(e)>-1)).reduce(((r,t)=>(r[t]=e[t],r)),{})}export function pluralizeType(e){return e.split(" or ").map((e=>e.replace(/^(string|object|number|integer|array|boolean)s?( ?.*)/,"$1s$2"))).join(" or ")}export function getContentWithLegacyExamples(e){let r=e.content;const t=e["x-examples"],i=e["x-example"];if(t){r=Object.assign({},r);for(const e of Object.keys(t)){const i=t[e];r[e]=Object.assign(Object.assign({},r[e]),{examples:i})}}else if(i){r=Object.assign({},r);for(const e of Object.keys(i)){const t=i[e];r[e]=Object.assign(Object.assign({},r[e]),{example:t})}}return r}
1
+ import{dirname}from"path";import UrlTemplate from"url-template";import{IS_BROWSER}from"./dom";import{deleteEmptyArrayItem,isArrayOfObjects,isNumeric,removeQueryStringAndHash,resolveUrl,sanitizeItemId,normalizeText,getValueFromMdParsedExtension}from"./helpers";import{MediaTypes}from"../constants";import{JsonPointer}from"./JsonPointer";function isWildcardStatusCode(e){return"string"==typeof e&&/\dxx/i.test(e)}export function isStatusCode(e){return"default"===e||isNumeric(e)||isWildcardStatusCode(e)}export function getStatusCodeType(e,r=!1){if("default"===e)return r?"error":"success";let t="string"==typeof e?parseInt(e,10):e;if(isWildcardStatusCode(e)&&(t*=100),t<100||t>599)throw new Error("invalid HTTP code");let i="success";return t>=300&&t<400?i="redirect":t>=400?i="error":t<200&&(i="info"),i}const operationNames={get:!0,post:!0,put:!0,head:!0,patch:!0,delete:!0,options:!0,$ref:!0};export function isOperationName(e){return e in operationNames}export function getOperationName(e){const{operationId:r,pathName:t}=e,i=normalizeText(getValueFromMdParsedExtension(e,"description"));return normalizeText(getValueFromMdParsedExtension(e,"summary"))||r||i&&i.substring(0,50)||t||"<no summary>"}export function getOperationId(e,r){return sanitizeItemId(void 0!==e.operationId?"operation/"+e.operationId:void 0!==r?r.id+e.pointer:e.pointer)}const schemaKeywordTypes={multipleOf:"number",maximum:"number",exclusiveMaximum:"number",minimum:"number",exclusiveMinimum:"number",maxLength:"string",minLength:"string",pattern:"string",contentEncoding:"string",contentMediaType:"string",items:"array",maxItems:"array",minItems:"array",uniqueItems:"array",maxProperties:"object",minProperties:"object",required:"object",additionalProperties:"object",unevaluatedProperties:"object",patternProperties:"object",properties:"object"};export function detectType(e){if(void 0!==e.type&&!Array.isArray(e.type))return e.type;const r=Object.keys(schemaKeywordTypes);for(const t of r){const r=schemaKeywordTypes[t];if(void 0!==e[t])return r}return"any"}export function isPrimitiveType(e,r=e.type){if(e["x-circular-ref"])return!0;if(void 0!==e.oneOf||void 0!==e.anyOf)return!1;if(e.if&&e.then||e.if&&e.else)return!1;let t=!0;const i=Array.isArray(r);return("object"===r||i&&(null==r?void 0:r.includes("object")))&&(t=void 0!==e.properties?0===Object.keys(e.properties).length:void 0===e.additionalProperties&&void 0===e.unevaluatedProperties&&void 0===e.patternProperties),!Array.isArray(e.items)&&!Array.isArray(e.prefixItems)&&(void 0!==e.items&&"boolean"!=typeof e.items&&("array"===r||i&&(null==r?void 0:r.includes("array")))&&(t=isPrimitiveType(e.items,e.items.type)),t)}export function isJsonLike(e){return-1!==e.search(/json/i)}export function isFormUrlEncoded(e){return e===MediaTypes.URL_ENCODED}function delimitedEncodeField(e,r,t){return Array.isArray(e)?e.map((e=>e.toString())).join(t):"object"==typeof e?Object.keys(e).map((r=>`${r}${t}${e[r]}`)).join(t):r+"="+e.toString()}function deepObjectEncodeField(e,r){return Array.isArray(e)?(console.warn("deepObject style cannot be used with array value:"+e.toString()),""):"object"==typeof e?Object.keys(e).map((t=>e[t]?`${r}[${t}]=${e[t]}`:void 0)).filter(Boolean).join("&"):(console.warn("deepObject style cannot be used with non-object value:"+e.toString()),"")}function serializeFormValue(e,r,t){const i="__redoc_param_name__",n=r?"*":"";return UrlTemplate.parse(`{?${i}${n}}`).expand({[i]:t}).substring(1).replace(/__redoc_param_name__/g,e)}function serializeSimpleValue(e,r){const t=e?"*":"",i="__redoc_param_name__",n=UrlTemplate.parse(`{${i}${t}}`);return decodeURIComponent(n.expand({[i]:r}))}export function urlFormEncodePayload(e,r={}){if(Array.isArray(e))throw new Error("Payload must have fields: "+e.toString());return Object.keys(e).map((t=>{const i=e[t],{style:n="form",explode:o=!0}=r[t]||{};switch(n){case"form":return serializeFormValue(t,o,i);case"spaceDelimited":return delimitedEncodeField(i,t,"%20");case"pipeDelimited":return delimitedEncodeField(i,t,"|");case"deepObject":return deepObjectEncodeField(i,t);default:return console.warn("Incorrect or unsupported encoding style: "+n),""}})).join("&")}function serializePathParameter(e,r,t,i){const n=t?"*":"";let o="";"label"===r?o=".":"matrix"===r&&(o=";");const a="__redoc_param_name__";return UrlTemplate.parse(`{${o}${a}${n}}`).expand({[a]:i}).replace(/__redoc_param_name__/g,e)}export function serializeQueryParameter(e,r,t,i){const n=n=>{switch(r){case"form":return serializeFormValue(e,t,n);case"spaceDelimited":return Array.isArray(n)?t?serializeFormValue(e,t,n):`${e}=${n.join("%20")}`:(console.warn("The style spaceDelimited is only applicable to arrays"),"");case"pipeDelimited":return Array.isArray(n)?t?serializeFormValue(e,t,n):`${e}=${n.join("|")}`:(console.warn("The style pipeDelimited is only applicable to arrays"),"");case"deepObject":return!t||Array.isArray(n)||"object"!=typeof n?(console.warn("The style deepObject is only applicable for objects with explode=true"),""):deepObjectEncodeField(n,e);case"simple":return serializeSimpleValue(t,i);default:return console.warn("Unexpected style for query: "+r),""}};return isArrayOfObjects(i)&&(i=deleteEmptyArrayItem(i).map((e=>n(e)))),n(i)}function serializeHeaderParameter(e,r,t){return"simple"===e?serializeSimpleValue(r,t):(console.warn("Unexpected style for header: "+e),"")}function serializeCookieParameter(e,r,t,i){return"form"===r?serializeFormValue(e,t,i):(console.warn("Unexpected style for cookie: "+r),"")}export function serializeParameterValueWithMime(e,r){return isJsonLike(r)?JSON.stringify(e):(console.warn(`Parameter serialization as ${r} is not supported`),"")}export function serializeParameterValue(e,r){const{name:t,style:i,explode:n=!1,serializationMime:o}=e;if(o)switch(e.in){case"path":case"header":return serializeParameterValueWithMime(r,o);case"cookie":case"query":return`${t}=${serializeParameterValueWithMime(r,o)}`;default:return console.warn("Unexpected parameter location: "+e.in),""}if(!i)return console.warn(`Missing style attribute or content for parameter ${t}`),"";switch(e.in){case"path":return serializePathParameter(t,i,n,r);case"query":return serializeQueryParameter(t,i,n,r);case"header":return serializeHeaderParameter(i,n,r);case"cookie":return serializeCookieParameter(t,i,n,r);default:return console.warn("Unexpected parameter location: "+e.in),""}}export function langFromMime(e){return-1!==e.search(/xml/i)?"xml":"clike"}const DEFINITION_NAME_REGEX=/^#\/components\/(schemas|pathItems)\/([^/]+)$/;export function isNamedDefinition(e){return DEFINITION_NAME_REGEX.test(e||"")}export function getDefinitionName(e){var r;return null===(r=null==e?void 0:e.match(DEFINITION_NAME_REGEX))||void 0===r?void 0:r.pop()}function humanizeMultipleOfConstraint(e){if(void 0===e)return;const r=e.toString(10);return/^0\.0*1$/.test(r)?`decimal places <= ${r.split(".")[1].length}`:`multiple of ${r}`}function humanizeRangeConstraint(e,r,t){let i;return void 0!==r&&void 0!==t?i=r===t?`= ${r} ${e}`:`[ ${r} .. ${t} ] ${e}`:void 0!==t?i=`<= ${t} ${e}`:void 0!==r&&(i=1===r?"non-empty":`>= ${r} ${e}`),i}export function humanizeNumberRange(e){var r,t;const i="number"==typeof e.exclusiveMinimum?Math.min(e.exclusiveMinimum,null!==(r=e.minimum)&&void 0!==r?r:1/0):e.minimum,n="number"==typeof e.exclusiveMaximum?Math.max(e.exclusiveMaximum,null!==(t=e.maximum)&&void 0!==t?t:-1/0):e.maximum,o="number"==typeof e.exclusiveMinimum||e.exclusiveMinimum,a="number"==typeof e.exclusiveMaximum||e.exclusiveMaximum;return void 0!==i&&void 0!==n?`${o?"( ":"[ "}${i} .. ${n}${a?" )":" ]"}`:void 0!==n?`${a?"< ":"<= "}${n}`:void 0!==i?`${o?"> ":">= "}${i}`:void 0}export function humanizeConstraints(e){const r=[],t=humanizeRangeConstraint("characters",e.minLength,e.maxLength);void 0!==t&&r.push(t);const i=humanizeRangeConstraint("items",e.minItems,e.maxItems);void 0!==i&&r.push(i);const n=humanizeRangeConstraint("properties",e.minProperties,e.maxProperties);void 0!==n&&r.push(n);const o=humanizeMultipleOfConstraint(e.multipleOf);void 0!==o&&r.push(o);const a=humanizeNumberRange(e);return void 0!==a&&r.push(a),e.uniqueItems&&r.push("unique"),r}export function sortByRequired(e,r=[]){const t=[],i=[],n=[];return e.forEach((e=>{e.required?r.includes(e.name)?i.push(e):n.push(e):t.push(e)})),i.sort(((e,t)=>r.indexOf(e.name)-r.indexOf(t.name))),[...i,...n,...t]}export function sortByField(e,r){return[...e].sort(((e,t)=>e[r].localeCompare(t[r])))}export function mergeParams(e,r=[],t=[],{pathPointer:i,operationPointer:n}){const o={};t.forEach((r=>{({resolved:r}=e.deref(r)),o[r.name+"_"+r.in]=!0}));return[...r.map(((e,r)=>({paramOrRef:e,pointer:JsonPointer.join(i,["parameters",String(r)])}))).filter((({paramOrRef:r})=>(({resolved:r}=e.deref(r)),!o[r.name+"_"+r.in]))),...t.map(((e,r)=>({paramOrRef:e,pointer:JsonPointer.join(n,["parameters",String(r)])})))]}export function mergeSimilarMediaTypes(e){const r={};return Object.keys(e).forEach((t=>{const i=e[t],n=t.split(";")[0].trim();r[n]?r[n]=Object.assign(Object.assign({},r[n]),i):r[n]=i})),r}export function expandDefaultServerVariables(e,r={}){return e.replace(/(?:{)([\w-.]+)(?:})/g,((e,t)=>r[t]&&r[t].default||e))}export function normalizeServers(e,r){const t=void 0===e?removeQueryStringAndHash((()=>{if(!IS_BROWSER)return"";const e=window.location.href;return e.endsWith(".html")?dirname(e):e})()):dirname(e);return 0===r.length&&(r=[{url:"/"}]),r.map((e=>{return Object.assign(Object.assign({},e),{url:(r=e.url,resolveUrl(t,r)),description:e.description||""});var r}))}export const shortenHTTPVerb=e=>({delete:"del",options:"opts"}[e]||e);export function isRedocExtension(e){return e in{"x-circular-ref":!0,"x-parentRefs":!0,"x-refsStack":!0,"x-code-samples":!0,"x-codeSamples":!0,"x-displayName":!0,"x-examples":!0,"x-ignoredHeaderParameters":!0,"x-logo":!0,"x-nullable":!0,"x-servers":!0,"x-tagGroups":!0,"x-traitTag":!0,"x-additionalPropertiesName":!0,"x-explicitMappingOnly":!0,"x-enumDescriptions":!0,"x-hideTryItPanel":!0,"x-tokenEndpointAuthMethod":!0}||e.startsWith("x-parsed-md-")}export function extractExtensions(e,r){return Object.keys(e).filter((e=>!0===r?e.startsWith("x-")&&!isRedocExtension(e):e.startsWith("x-")&&r.indexOf(e)>-1)).reduce(((r,t)=>(r[t]=e[t],r)),{})}export function pluralizeType(e){return e.split(" or ").map((e=>e.replace(/^(string|object|number|integer|array|boolean)s?( ?.*)/,"$1s$2"))).join(" or ")}export function getContentWithLegacyExamples(e){let r=e.content;const t=e["x-examples"],i=e["x-example"];if(t){r=Object.assign({},r);for(const e of Object.keys(t)){const i=t[e];r[e]=Object.assign(Object.assign({},r[e]),{examples:i})}}else if(i){r=Object.assign({},r);for(const e of Object.keys(i)){const t=i[e];r[e]=Object.assign(Object.assign({},r[e]),{example:t})}}return r}
2
2
  //# sourceMappingURL=openapi.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/openapi-docs",
3
- "version": "3.0.0-alpha.23",
3
+ "version": "3.0.0-alpha.24",
4
4
  "description": "Redocly OpenAPI Docs",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-esm/index.js",
@@ -92,7 +92,7 @@
92
92
  "devDependencies": {
93
93
  "@percy/cli": "^1.10.3",
94
94
  "@percy/cypress": "^3.1.1",
95
- "@redocly/theme": "^0.9.4",
95
+ "@redocly/theme": "^0.9.6",
96
96
  "@testing-library/jest-dom": "^5.15.1",
97
97
  "@testing-library/react": "^12.1.4",
98
98
  "@testing-library/react-hooks": "^8.0.1",