@redocly/api-docs 0.2.0-next.2 → 0.2.0-next.4
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
import{REDOCLY_TEAMS_RBAC as
|
|
1
|
+
import{REDOCLY_TEAMS_RBAC as w}from"@redocly/config";import{registerExample as O,registerSchema as R,resolveContent as M,resolveRef as S,readRbacScope as q,rbacProp as A}from"../helpers.js";import{panelKind as P,schemaKind as j}from"../../types/common.js";import{isStatusCode as T}from"../../utils/status-code.js";import{encodeJsonPointerSegment as g}from"../../utils/refPointer.js";import{applyIgnoreNamedSchemasDeep as C}from"./utils/applyIgnoreNamedSchemasDeep.js";import{mergeInMockServer as U,pickOperationServers as L}from"./utils/merge-mock-server.js";import{mergeSecurityIntoScheme as B}from"./configure/merge-utils.js";import{hasOpenApiExampleValue as _,resolveOpenApiExampleValue as E}from"./resolve-openapi-example-value.js";function $(r,n,t){const a=S(n,r,t)??r;return C(a,t)}function ee(r,n,t,a,l,d){const u=n?.document??{},o=F(r,u,t),s=K(r,u,n,a),e=N(r,n),c=D(r,u,n,a),y=G(r),m=r.responses,p=m?Object.keys(m).filter(T):void 0,f=r.security;return{kind:P.CODE_SAMPLE,operationType:l?"webhook":"http",method:r.httpVerb?.toUpperCase()??"GET",path:r.pathName??"/",servers:o,parameters:s,security:e,requestBody:c,responseCodes:p,requestValues:y,pointer:r.pathName,...d&&{href:d},...r.operationId&&{openApiOperationId:r.operationId},...r.summary&&{summary:r.summary},...f&&f.length>1&&{securityGroups:f}}}function F(r,n,t){const a=n.servers,l=L(r.servers,a),u=U(l.filter(o=>typeof o?.url=="string"),t.mockServer).map(o=>({url:o.url??"",name:o.name,description:typeof o.description=="string"?o.description:void 0,...o.isMockServer&&{isMockServer:!0},variables:o.variables&&Object.keys(o.variables).length>0?Object.fromEntries(Object.entries(o.variables).map(([s,e])=>[s,{default:e.default,enum:e.enum}])):void 0}));return u.length>0?u:[{url:"/"}]}function K(r,n,t,a){const d=(r.parameters??[]).map(s=>$(s,n,a)),u={path:[],query:[],querystring:[],header:[],cookie:[]},o=r.requestValues?.serverRequestValues;for(const s of d){const e=s.in;if(!e||!u[e])continue;const c=s.content,y=c?Object.keys(c)[0]:void 0,m=y&&c?c[y]?.schema:s.schema,p=m&&typeof m=="object"?S(n,m,a)??m:m;let f;p&&t&&(f=R(t.schemaStore,t.hashIndex,{kind:j.JSON_SCHEMA,data:p}));const V=p&&typeof p=="object"&&"example"in p?p.example:void 0;let v;if(s.examples&&typeof s.examples=="object")for(const i of Object.values(s.examples)){if(!i||typeof i!="object")continue;const x=S(n,i,a)??i;if(_(x)){v=E(x);break}}const b={};if(o&&s.name)for(const[i,x]of Object.entries(o)){const k=x?.[e==="querystring"?"queryString":e==="header"?"headers":e==="cookie"?"cookies":e]?.[s.name];k!=null&&(b[i]={example:k})}u[e].push({name:s.name??"",in:e,required:s.required,example:s.example??v??V,schemaId:f,serializationMime:y,style:s.style,explode:s.explode,...Object.keys(b).length>0&&{serverValues:b}})}return u}function N(r,n){const t=r.requestValues?.security,a=r.requestValues?.serverRequestValues,l=r.security,d=[];if(!l||!n)return d;for(const u of l){const o=Object.keys(u),s=o.map(e=>n.securitySchemeStore[e]).filter(Boolean).map(e=>{let c={id:e.id,type:e.type,name:e.paramName,in:e.in,scheme:e.scheme,bearerFormat:e.bearerFormat,openIdConnectUrl:e.openIdConnectUrl,flows:e.flows,"x-defaultClientId":e["x-defaultClientId"],"x-defaultAccessToken":e["x-defaultAccessToken"],"x-defaultTokenType":e["x-defaultTokenType"],"x-defaultClientSecret":e["x-defaultClientSecret"],"x-defaultUsername":e["x-defaultUsername"],"x-defaultPassword":e["x-defaultPassword"],serverValues:e.serverValues?{...e.serverValues}:void 0};if(t&&(c=B(c,t)),a)for(const[y,m]of Object.entries(a))m?.security&&(c=B(c,m.security,y));return c});if(s.length>0){const e=o.flatMap(c=>u[c]??[]);d.push({schemes:s,scopes:e})}}return d}function D(r,n,t,a){const l=r.requestBody,d=l?S(n,l,a)??l:void 0,u=M(n,d,a);if(!u||!t)return;const o={};for(const[s,e]of Object.entries(u)){let c;const y=e.itemSchema,m=e.schema??y;if(m){const V=S(n,m,a)??m;c=R(t.schemaStore,t.hashIndex,{kind:j.JSON_SCHEMA,data:V})}const p=r.pointer?`${r.pointer}/requestBody/content/${g(s)}`.replace(/^\//,""):void 0,f=[];if(e.example!==void 0&&f.push(O(t.exampleStore,{value:e.example,...p&&{id:`${p}/example`}})),e.examples){const V=q(e.examples);for(const[v,b]of Object.entries(e.examples)){if(v===w)continue;const i=S(n,b,a);if(i){const x=q(b)??q(i)??V,h=O(t.exampleStore,{value:E(i),key:v,summary:typeof i.summary=="string"?i.summary:v,description:typeof i.description=="string"?i.description:void 0,externalValue:typeof i.externalValue=="string"?i.externalValue:void 0,...A(x),...p&&{id:`${p}/examples/${g(v)}`}});f.push(h)}}}o[s]={schemaId:c,...f.length>0&&{exampleIds:f}}}return o}function G(r){const n=r.requestValues?.serverRequestValues,t=r.requestValues?.envVariables;let a,l;if(t&&typeof t=="object")if("values"in t){const s=t;a=s.values,l=s.serverValues}else a=t;const d=r.requestValues?.body;let u;if(n)for(const[s,e]of Object.entries(n))e?.body!==void 0&&(u=u??{},u[s]=e.body),e?.envVariables&&(l=l??{},l[s]={...l[s],...e.envVariables});return a||l||r.requestValues?.security||d!==void 0||u?{...r.requestValues?.security&&{security:r.requestValues.security},...a&&{envVariables:a},...l&&{serverEnvVariables:l},...d!==void 0&&{body:d},...u&&{serverBody:u}}:void 0}export{ee as buildCodeSampleSource};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{REDOCLY_TEAMS_RBAC as ee}from"@redocly/config";import{contentType as Ne,itemVariant as $e,nodeTypes as u,panelKind as me,schemaKind as H}from"../../../../types/common.js";import{readRbacScope as T,rbacProp as R,registerExample as te,registerSchema as _,resolveContent as ue,resolveRef as D}from"../../../helpers.js";import{applyIgnoreNamedSchemasDeep as Ee}from"../../utils/applyIgnoreNamedSchemasDeep.js";import{isStatusCode as Pe}from"../../../../utils/status-code.js";import{parseMarkdown as V}from"../../../utils/parseMarkdown.js";import{extractDescriptionSegments as De,resolveMarkdocHeadingIds as se}from"../../../utils/markdoc.js";import{getExtensionsForDisplay as ye}from"../../../../utils/extract-extensions.js";import{openApiContext as K}from"../../buildContext.js";import{buildCodeSampleSource as Be}from"../../build-code-sample-source.js";import{mergeInMockServer as He,pickOperationServers as _e}from"../../utils/merge-mock-server.js";import{normalizePath as Ke,toRelativePath as ge}from"../../../../utils/url.js";import{encodeJsonPointerSegment as B}from"../../../../utils/refPointer.js";import{hasOpenApiExampleValue as ke,resolveOpenApiExampleValue as he}from"../../resolve-openapi-example-value.js";const ne="request",Ce="responses",we="callbacks";function Le(){const e=new Map;return(r,o)=>{const n=`${r}/${o}`,t=e.get(n)??0;return e.set(n,t+1),t===0?n:`${n}~${t}`}}function dt(e,r){const{options:o,storeCtx:n,basePath:t}=K.get(),s=e.summary||e.operationId||e.pathName||"Unknown Operation",c=[],{feedback:y}=o,a=e.isWebhook||!1,p=[{nodeType:u.HEADER,level:2,label:s,badges:e["x-badges"],isWebhook:a,deprecated:e.deprecated,showPageActions:!0}],i=ye(e,o.showExtensions);Object.keys(i).length>0&&p.push({nodeType:u.EXTENSIONS,extensions:i}),c.push({nodeType:u.CONTAINER,children:p,panels:[]});const m=o.ignoreNamedSchemas,f=e["x-codeSamples"]?.map(({lang:d,label:x,source:h})=>({lang:d,label:x,source:h})),S=_e(e.servers,n?.document?.servers),E=He(S.filter(d=>typeof d?.url=="string"),o.mockServer).map(d=>{const x=T(d);return{url:d.url??"",name:d.name,description:typeof d.description=="string"?d.description:void 0,...d.isMockServer&&{isMockServer:!0},variables:d.variables&&Object.keys(d.variables).length>0?Object.fromEntries(Object.entries(d.variables).map(([h,M])=>[h,{default:M.default}])):void 0,...R(x)}}),b=Re(e,m),C=ge(r,t);let l=[];e.description&&(se(e.description,C,ne),l=De(e.description,o));const A=l.some(d=>d.kind==="schemaDefinition"),g=b.find(d=>d.nodeType===u.ITEM&&d.variant==="body"),v=We(e,m,a,C||void 0),j=g?.schemaId,I=g?.mediaTypes,N=g?.mediaTypeSchemas,P=T(g),O=[{children:[{kind:me.CODE_SAMPLE,source:v,definitionSamples:f?.length?f:void 0,isWebhook:a,hideReplay:e["x-hideReplay"]===!0,servers:E?.length?E:void 0,schemaId:j,exampleIds:g?.exampleIds,mediaTypes:I,mediaTypeSchemas:N,examples:g?.exampleIds?.map(()=>({}))??[]}],...R(P)}];if(b.length>0||l.length>0)if(A){c.push({nodeType:u.CONTAINER,children:[{nodeType:u.HEADER,level:4,label:"Request",labelTranslationKey:"request",deepLinkSuffix:ne}],panels:[]});for(const d of l)d.kind==="schemaDefinition"?c.push(d.node):c.push({nodeType:u.CONTAINER,children:[d.node],panels:[]});c.push({nodeType:u.CONTAINER,children:[...b],panels:O})}else c.push({nodeType:u.CONTAINER,children:[{nodeType:u.HEADER,level:4,label:"Request",labelTranslationKey:"request",deepLinkSuffix:ne},...l.map(d=>d.node),...b],panels:O});else c.push({nodeType:u.CONTAINER,children:[{nodeType:u.HEADER,level:4,label:"Request",labelTranslationKey:"request",deepLinkSuffix:ne},{nodeType:u.EMPTY_MESSAGE,label:"No request data",labelTranslationKey:"noRequestData"}],panels:O});if(e.responses){const d=Ae(e,o,C,m);if(d){const x=d.responses?.some(k=>k.schemaId||(k.exampleIds?.length??0)>0),h=d?.responses?.map(k=>{const oe=k[ee];return{code:k.code,schemaId:k.schemaId,exampleIds:k.exampleIds,mediaTypes:k.mediaTypes,mediaTypeContent:k.mediaTypeContent,...R(oe)}}),M=[];x&&M.push({children:[{kind:me.RESPONSE,headerTitle:"Response",responseCodes:h,examples:[]}]});const L=T(e.responses);c.push({nodeType:u.CONTAINER,children:[{nodeType:u.HEADER,level:4,label:"Responses",labelTranslationKey:"responses",deepLinkSuffix:"responses"},d],panels:M.length>0?M:[],...R(L)})}}if(Array.isArray(e.callbacks)&&e.callbacks.length>0){c.push({nodeType:u.CONTAINER,children:[{nodeType:u.HEADER,level:4,label:"Callbacks",labelTranslationKey:"callbacks",deepLinkSuffix:"callbacks"}],panels:[]});const d=Le();for(const x of e.callbacks)if(x.operations)for(const h of x.operations){const M=h.httpVerb??"post",L=d(x.name,M),k={pointer:e.pointer+"/callbacks/"+x.name+"/"+M,pathName:h.pathName??x.url??"",httpVerb:M,summary:h.summary,deprecated:h.deprecated,isWebhook:!1,isAdditionalOperation:!1,tags:[],parameters:h.parameters,requestBody:h.requestBody,responses:h.responses,servers:h.servers,security:h.security},oe=Re(k,m),fe=Ae(k,o,`${C}/callbacks/${L}`,m),ce=[...oe];fe&&ce.push(fe);const ie=h.externalDocs,be=ye(h,o.showExtensions);let ae;h.description&&(ae=V(h.description,o),se(ae??[],C,`${we}/${L}`));const ve={httpVerb:M,pathName:k.pathName,summary:k.summary,operationId:typeof h.operationId=="string"?h.operationId:void 0,description:ae,deprecated:k.deprecated,callbackName:x.name,callbackId:L,externalDocs:ie?{url:ie.url,description:ie.description}:void 0,extensions:Object.keys(be).length>0?be:void 0,contentChildren:ce.length>0?ce:void 0},xe=[];if(h.requestBody&&"content"in h.requestBody){const de=n?.document??{},qe=D(de,h.requestBody,m)??h.requestBody,le=ue(de,qe,m);if(le){const Se=Object.keys(le);let z=!1;const pe={};for(const[W,$]of Object.entries(le)){let Q;if($.schema){const U=$.schema;Q=_(n.schemaStore,n.hashIndex,{kind:H.JSON_SCHEMA,data:U})}const G=`${k.pointer}/requestBody/content/${B(W)}`.replace(/^\//,""),F=[];if($.example!==void 0){const U=te(n.exampleStore,{value:$.example,id:`${G}/example`});F.push(U),z=!0}if($.examples)for(const[U,Me]of Object.entries($.examples)){const Z=D(de,Me,m);if(Z&&ke(Z)){const je=te(n.exampleStore,{value:he(Z),summary:Z.summary??U,id:`${G}/examples/${B(U)}`});F.push(je),z=!0}}pe[W]={schemaId:Q,exampleIds:F.length>0?F:void 0},Q&&(z=!0)}const Te=h["x-codeSamples"];if(z||(Te?.length??0)>0){const W=h.servers?.filter($=>$.url).map(({url:$,name:Q,description:G,variables:F})=>({url:$,name:Q,description:G,variables:F}));xe.push({children:[{kind:me.CALLBACK_PAYLOAD,callbackName:L,path:k.pathName,httpVerb:M,servers:W?.length?W:void 0,definitionSamples:Te,mediaTypes:Se.length>0?Se:void 0,mediaTypeSchemas:Object.keys(pe).length>0?pe:void 0,examples:[]}]})}}}const Ie=T(x);c.push({nodeType:u.CONTAINER,children:[{nodeType:u.ITEM,variant:"callback",callback:ve,pointer:e.pointer+"/callbacks"}],panels:xe,...R(Ie)})}}y?.hide!==!0&&c.push({nodeType:u.CONTAINER,children:[{nodeType:u.FEEDBACK,pageSlug:Ke(ge(r,t))}],panels:[]});const w=b.some(d=>{const x=d;return x.variant==="body"&&((x.exampleIds?.length??0)>0||!!x.schemaId)})||(f?.length??0)>0;return{contentType:Ne.ITEM,itemVariant:$e.HTTP_ITEM,seo:e["x-seo"],meta:{sourceId:e.operationId,name:s,deprecated:e.deprecated,isWebhook:e.isWebhook||!1,pointer:e.pointer,hasSamples:w},children:c}}function Fe(e,r,o){const n=D(r,e,o)??e,{$ref:t,...s}=e,c=typeof t=="string"?{...n,...s}:n;return Ee(c,o)}function X(e,r,o){if(!e||typeof e!="object")return;const n=e,t=D(r,n,o)??n;return Ee(t,o)}function Ue(e,r,o){if(!e||typeof e!="object")return;const n=T(e),t={},s=[];for(const[c,y]of Object.entries(e)){if(c===ee)continue;const a=D(r,y,o)??y,p=a.content,i=p?p[Object.keys(p)[0]]:void 0,m=a.schema??i?.schema??i?.itemSchema,f=X(m,r,o);if(!f)continue;const S=Oe(a.examples,r,o),E=T(y)??T(a)??n;t[c]={...f,...a.description!==void 0&&{description:a.description},...a.example!==void 0&&{example:a.example},...S&&{examples:S},...R(E)},a.required&&s.push(c)}if(Object.keys(t).length!==0)return{type:"object",properties:t,...s.length>0?{required:s}:{}}}function Ve(e){if(typeof e=="string"||e&&typeof e=="object"&&"$$mdtype"in e||Array.isArray(e)&&e.length>0&&e.every(r=>!!r&&typeof r=="object"&&"$$mdtype"in r))return e}function Y(e,r){const{storeCtx:o,options:n}=K.get(),t=o.document;return e.map(s=>{const c=s.schema;let y={};if(c&&typeof c=="object")y=c;else if(s.content&&typeof s.content=="object"){const S=s.content,E=Object.keys(S)[0],b=E?S[E]?.schema:void 0;b&&typeof b=="object"&&(y=b)}const a=_(o.schemaStore,o.hashIndex,{kind:H.JSON_SCHEMA,data:y}),p=s["x-badges"],i=y["x-badges"],m=Array.isArray(p)?p:Array.isArray(i)?i:void 0,f=ye(s,n.showExtensions);return{name:String(s.name??""),in:typeof s.in=="string"?s.in:void 0,schemaId:a,description:Ve(s.description),required:s.required===!0?!0:void 0,deprecated:s.deprecated===!0?!0:void 0,example:s.example,examples:Oe(s.examples,t,r),...m?.length?{badges:m}:{},...Object.keys(f).length?{extensions:f}:{},...R(T(s))}})}function Oe(e,r,o){if(!e||typeof e!="object")return;const n={};for(const[t,s]of Object.entries(e)){if(!s||typeof s!="object")continue;const c=D(r,s,o)??s;if(!ke(c))continue;const y=he(c);n[t]={...typeof c.summary=="string"&&{summary:c.summary},...typeof c.description=="string"&&{description:c.description},...y!==void 0&&{value:typeof y=="string"?y:JSON.stringify(y)}}}return Object.keys(n).length>0?n:void 0}function Re(e,r){const{storeCtx:o,options:n}=K.get(),t=[],s=o.document,c=Je(e);if(c&&t.push(c),e.parameters&&Array.isArray(e.parameters)){const a=e.parameters.map(l=>Fe(l,s,r)),p=a.filter(l=>l.in==="header"),i=a.filter(l=>l.in==="query"),m=a.filter(l=>l.in==="path"),f=a.filter(l=>l.in==="cookie"),S=a.filter(l=>l.in==="querystring"),E=S.filter(l=>!l.content||typeof l.content!="object"),b=S.filter(l=>l.content&&typeof l.content=="object"),C=S.length>0;m.length>0&&t.push({nodeType:u.ITEM,variant:"path",label:"Path",labelTranslationKey:"path",parameters:Y(m,r),pointer:e.pointer+"/parameters"}),i.length>0&&!C&&t.push({nodeType:u.ITEM,variant:"query",label:"Query",labelTranslationKey:"query",parameters:Y(i,r),pointer:e.pointer+"/parameters"}),E.length>0&&t.push({nodeType:u.ITEM,variant:"querystring",label:"Query String",labelTranslationKey:"querystring",parameters:Y(E,r),pointer:e.pointer+"/parameters"});for(const l of b){const A=l.content,g=Object.keys(A),v={};for(const P of g){const O=A[P];if(!O)continue;let q;const J=O.itemSchema,w=O.schema??J,d=X(w,s,r);d&&(q=_(o.schemaStore,o.hashIndex,{kind:H.JSON_SCHEMA,data:d}));const x=re(O,r);v[P]={schemaId:q,exampleIds:x,...R(T(w))}}const j=g[0],I=j?v[j]:void 0,N=V(l.description,n);t.push({nodeType:u.ITEM,variant:"querystring-body",label:String(l.name??""),required:l.required===!0?!0:void 0,mediaTypes:g.length>0?g:void 0,mediaTypeSchemas:Object.keys(v).length>0?v:void 0,schemaId:I?.schemaId,exampleIds:I?.exampleIds,pointer:e.pointer+"/parameters",...N!==void 0?{description:N}:{},...R(T(l))})}f.length>0&&t.push({nodeType:u.ITEM,variant:"cookies",label:"Cookies",labelTranslationKey:"cookie",parameters:Y(f,r),pointer:e.pointer+"/parameters"}),p.length>0&&t.push({nodeType:u.ITEM,variant:"headers",label:"Headers",labelTranslationKey:"header",parameters:Y(p,r),pointer:e.pointer+"/parameters"})}if(e.requestBody){const y=D(s,e.requestBody,r)??e.requestBody,a=ue(s,y,r),p=a?Object.keys(a):void 0;let i,m,f;if(a&&p){f={};for(const l of p){const A=a[l];if(!A)continue;let g;const v=A.itemSchema,j=A.schema??v,I=X(j,s,r);I&&(g=_(o.schemaStore,o.hashIndex,{kind:H.JSON_SCHEMA,data:I}));const N=re(A,r,`${e.pointer}/requestBody/content/${B(l)}`);f[l]={schemaId:g,exampleIds:N,...R(T(j))}}const b=p[0],C=b?f[b]:void 0;i=C?.schemaId,m=C?.exampleIds}const S=V(y.description,n),E=T(e.requestBody)??T(y);t.push({nodeType:u.ITEM,variant:"body",label:"Request Body",labelTranslationKey:"body",required:y.required,mediaTypes:p,mediaTypeSchemas:f,schemaId:i,exampleIds:m,pointer:e.pointer+"/requestBody",...S!==void 0?{description:S}:{},...R(E)})}return t}function Ae(e,r,o,n){if(!e.responses)return;const{storeCtx:t}=K.get(),s=t?.document??{},c=e.responses,a=Object.entries(c).filter(([p])=>Pe(p)).map(([p,i])=>{const m=D(s,i,n)??i;let f=T(i)??T(m);const S=ue(s,m,n),E=S?Object.keys(S):[],b=E[0],C=b&&S?S[b]:void 0;let l,A,g,v;if(S&&E.length>0){v={};for(const O of E){const q=S[O];if(!q)continue;let J;const w=q.itemSchema,d=q.schema??w,x=X(d,s,n);x&&(J=_(t.schemaStore,t.hashIndex,{kind:H.JSON_SCHEMA,data:x}));const h=re(q,n,`${e.pointer}/responses/${B(p)}/content/${B(O)}`);v[O]={schemaId:J,exampleIds:h,...R(T(d))}}const P=b?v[b]:void 0;l=P?.schemaId,A=P?.exampleIds}else if(C){const P=C.itemSchema,O=C.schema??P,q=X(O,s,n);q&&(f=f??T(O),l=_(t.schemaStore,t.hashIndex,{kind:H.JSON_SCHEMA,data:q})),A=re(C,n,b?`${e.pointer}/responses/${B(p)}/content/${B(b)}`:void 0)}const j=Ue(m.headers,s,n);j&&(g=_(t.schemaStore,t.hashIndex,{kind:H.JSON_SCHEMA,data:j}));let I;m.description&&(I=V(m.description,r),se(I??[],o,`${Ce}/${p}`));const N=m["x-summary"]?V(m["x-summary"],r):void 0;return N&&se(N,o,`${Ce}/${p}/summary`),{code:p,summary:N,description:I,mediaType:b,mediaTypes:E.length>0?E:void 0,mediaTypeContent:v,schemaId:l,exampleIds:A,headers:m.headers,headerSchemaId:g,...R(f)}});return{nodeType:u.ITEM,variant:"responses",responses:a,pointer:e.pointer+"/responses"}}function re(e,r,o){const{storeCtx:n}=K.get(),t=[],s=n.document,c=o?.replace(/^\//,"");if(e.example!==void 0){const y=te(n.exampleStore,{value:e.example,...c&&{id:`${c}/example`}});t.push(y)}if(e.examples&&typeof e.examples=="object"){const y=T(e.examples);for(const[a,p]of Object.entries(e.examples)){if(a===ee||!p||typeof p!="object")continue;const i=D(s,p,r)??p,m=T(p)??T(i)??y,f=te(n.exampleStore,{value:he(i),key:a,summary:typeof i.summary=="string"?i.summary:a,description:typeof i.description=="string"?i.description:void 0,externalValue:typeof i.externalValue=="string"?i.externalValue:void 0,...R(m),...c&&{id:`${c}/examples/${B(a)}`}});t.push(f)}}return t.length>0?t:void 0}function Je(e){const{storeCtx:r,options:o}=K.get();if(!e.security||!Array.isArray(e.security)||e.security.length===0)return;const n=e.security.map(t=>{const s=Object.entries(t);if(s.length===0)return null;const c=r?.document?.components?.securitySchemes,y=s.map(([a,p])=>{const i=r?.securitySchemeStore[a],m=T(c?.[a])??i?.[ee];return{name:a,scopes:Array.isArray(p)?p:void 0,type:i?.type,scheme:i?.scheme,bearerFormat:i?.bearerFormat,in:i?.in,paramName:i?.paramName,description:i?.description?V(i.description,o):i?.description,openIdConnectUrl:i?.openIdConnectUrl,oauth2MetadataUrl:i?.oauth2MetadataUrl,deprecated:i?.deprecated,flows:i?.flows,...R(m)}}).filter(a=>a.name);return y.length>0?{schemes:y}:null}).filter(t=>t!==null);if(n.length!==0)return{nodeType:u.SECURITY,requirements:n}}function We(e,r,o,n){const{storeCtx:t,options:s}=K.get();if(!t)throw new Error("OpenAPI store context is not initialized");return Be(e,t,s,r,o,n)}export{dt as buildItemContent,Le as createCallbackIdFactory};
|
|
1
|
+
import{REDOCLY_TEAMS_RBAC as U}from"@redocly/config";import{contentType as pe,itemVariant as le,nodeTypes as f,panelKind as Y,schemaKind as B}from"../../../../types/common.js";import{readRbacScope as E,rbacProp as A,registerExample as J,registerSchema as H,resolveContent as z,resolveRef as P}from"../../../helpers.js";import{applyIgnoreNamedSchemasDeep as ee}from"../../utils/applyIgnoreNamedSchemasDeep.js";import{isStatusCode as ue}from"../../../../utils/status-code.js";import{parseMarkdown as K}from"../../../utils/parseMarkdown.js";import{extractDescriptionSegments as me,resolveMarkdocHeadingIds as W}from"../../../utils/markdoc.js";import{getExtensionsForDisplay as G}from"../../../../utils/extract-extensions.js";import{openApiContext as $}from"../../buildContext.js";import{buildCodeSampleSource as ye}from"../../build-code-sample-source.js";import{mergeInMockServer as he,pickOperationServers as fe}from"../../utils/merge-mock-server.js";import{normalizePath as be,toRelativePath as te}from"../../../../utils/url.js";import{encodeJsonPointerSegment as N}from"../../../../utils/refPointer.js";import{hasOpenApiExampleValue as se,resolveOpenApiExampleValue as Z}from"../../resolve-openapi-example-value.js";const Q="request",ne="responses",re="callbacks";function xe(){const e=new Map;return(r,s)=>{const o=`${r}/${s}`,n=e.get(o)??0;return e.set(o,n+1),n===0?o:`${o}~${n}`}}function we(e,r){const{options:s,storeCtx:o,basePath:n}=$.get(),t=e.summary||e.operationId||e.pathName||"Unknown Operation",c=[],{feedback:l}=s,i=e.isWebhook||!1,p=[{nodeType:f.HEADER,level:2,label:t,badges:e["x-badges"],isWebhook:i,deprecated:e.deprecated,showPageActions:!0}],a=G(e,s.showExtensions);Object.keys(a).length>0&&p.push({nodeType:f.EXTENSIONS,extensions:a}),c.push({nodeType:f.CONTAINER,children:p,panels:[]});const m=s.ignoreNamedSchemas,h=e["x-codeSamples"]?.map(({lang:u,label:v,source:D})=>({lang:u,label:v,source:D})),b=fe(e.servers,o?.document?.servers),x=he(b.filter(u=>typeof u?.url=="string"),s.mockServer).map(u=>{const v=E(u);return{url:u.url??"",name:u.name,description:typeof u.description=="string"?u.description:void 0,...u.isMockServer&&{isMockServer:!0},variables:u.variables&&Object.keys(u.variables).length>0?Object.fromEntries(Object.entries(u.variables).map(([D,L])=>[D,{default:L.default}])):void 0,...A(v)}}),y=ie(e,m),S=te(r,n);let d=[];e.description&&(W(e.description,S,Q),d=me(e.description,s));const g=d.some(u=>u.kind==="schemaDefinition"),T=y.find(u=>u.nodeType===f.ITEM&&u.variant==="body"),C=Ae(e,m,i,S||void 0),q=T?.schemaId,O=T?.mediaTypes,k=T?.mediaTypeSchemas,M=E(T),R=[{children:[{kind:Y.CODE_SAMPLE,source:C,definitionSamples:h?.length?h:void 0,isWebhook:i,hideReplay:e["x-hideReplay"]===!0,servers:x?.length?x:void 0,schemaId:q,exampleIds:T?.exampleIds,mediaTypes:O,mediaTypeSchemas:k,examples:T?.exampleIds?.map(()=>({}))??[]}],...A(M)}];if(y.length>0||d.length>0)if(g){c.push({nodeType:f.CONTAINER,children:[{nodeType:f.HEADER,level:4,label:"Request",labelTranslationKey:"request",deepLinkSuffix:Q}],panels:[]});for(const u of d)u.kind==="schemaDefinition"?c.push(u.node):c.push({nodeType:f.CONTAINER,children:[u.node],panels:[]});c.push({nodeType:f.CONTAINER,children:[...y],panels:R})}else c.push({nodeType:f.CONTAINER,children:[{nodeType:f.HEADER,level:4,label:"Request",labelTranslationKey:"request",deepLinkSuffix:Q},...d.map(u=>u.node),...y],panels:R});else c.push({nodeType:f.CONTAINER,children:[{nodeType:f.HEADER,level:4,label:"Request",labelTranslationKey:"request",deepLinkSuffix:Q},{nodeType:f.EMPTY_MESSAGE,label:"No request data",labelTranslationKey:"noRequestData"}],panels:R});if(e.responses){const u=ce(e,s,S,m);if(u){const v=u.responses?.some(j=>j.schemaId||(j.exampleIds?.length??0)>0),D=u?.responses?.map(j=>{const de=j[U];return{code:j.code,schemaId:j.schemaId,exampleIds:j.exampleIds,mediaTypes:j.mediaTypes,mediaTypeContent:j.mediaTypeContent,...A(de)}}),L=[];v&&L.push({children:[{kind:Y.RESPONSE,headerTitle:"Response",responseCodes:D,examples:[]}]});const ae=E(e.responses);c.push({nodeType:f.CONTAINER,children:[{nodeType:f.HEADER,level:4,label:"Responses",labelTranslationKey:"responses",deepLinkSuffix:"responses"},u],panels:L.length>0?L:[],...A(ae)})}}Array.isArray(e.callbacks)&&e.callbacks.length>0&&c.push(...Se(e,S,m)),l?.hide!==!0&&c.push({nodeType:f.CONTAINER,children:[{nodeType:f.FEEDBACK,pageSlug:be(te(r,n))}],panels:[]});const _=y.some(u=>{const v=u;return v.variant==="body"&&((v.exampleIds?.length??0)>0||!!v.schemaId)})||(h?.length??0)>0;return{contentType:pe.ITEM,itemVariant:le.HTTP_ITEM,seo:e["x-seo"],meta:{sourceId:e.operationId,name:t,deprecated:e.deprecated,isWebhook:e.isWebhook||!1,pointer:e.pointer,hasSamples:_},children:c}}function Se(e,r,s){const o=[{nodeType:f.CONTAINER,children:[{nodeType:f.HEADER,level:4,label:"Callbacks",labelTranslationKey:"callbacks",deepLinkSuffix:re}],panels:[]}],n=xe();for(const t of e.callbacks??[])if(t.operations)for(const c of t.operations){const l=c.httpVerb??"post",i=n(t.name,l);o.push(Te(e,t,c,i,r,s))}return o}function Te(e,r,s,o,n,t){const{options:c}=$.get(),l=s.httpVerb??"post",i={pointer:e.pointer+"/callbacks/"+r.name+"/"+l,pathName:s.pathName??r.url??"",httpVerb:l,summary:s.summary,deprecated:s.deprecated,isWebhook:!1,isAdditionalOperation:!1,tags:[],parameters:s.parameters,requestBody:s.requestBody,responses:s.responses,servers:s.servers,security:s.security},p=ie(i,t),a=ce(i,c,`${n}/callbacks/${o}`,t),m=[...p];a&&m.push(a);const h=s.externalDocs,b=G(s,c.showExtensions);let x;s.description&&(x=K(s.description,c),W(x??[],n,`${re}/${o}`));const y={httpVerb:l,pathName:i.pathName,summary:i.summary,operationId:typeof s.operationId=="string"?s.operationId:void 0,description:x,deprecated:i.deprecated,callbackName:r.name,callbackId:o,externalDocs:h?{url:h.url,description:h.description}:void 0,extensions:Object.keys(b).length>0?b:void 0,contentChildren:m.length>0?m:void 0},S=Ee(s,i,o,t),d=E(r);return{nodeType:f.CONTAINER,children:[{nodeType:f.ITEM,variant:"callback",callback:y,pointer:e.pointer+"/callbacks"}],panels:S,...A(d)}}function Ee(e,r,s,o){const{storeCtx:n}=$.get(),t=[];if(!e.requestBody||!("content"in e.requestBody))return t;const c=n?.document??{},l=P(c,e.requestBody,o)??e.requestBody,i=z(c,l,o);if(!i)return t;const p=Object.keys(i);let a=!1;const m={};for(const[y,S]of Object.entries(i)){let d;if(S.schema){const C=S.schema;d=H(n.schemaStore,n.hashIndex,{kind:B.JSON_SCHEMA,data:C})}const g=`${r.pointer}/requestBody/content/${N(y)}`.replace(/^\//,""),T=[];if(S.example!==void 0){const C=J(n.exampleStore,{value:S.example,id:`${g}/example`});T.push(C),a=!0}if(S.examples)for(const[C,q]of Object.entries(S.examples)){const O=P(c,q,o);if(O&&se(O)){const k=J(n.exampleStore,{value:Z(O),summary:O.summary??C,id:`${g}/examples/${N(C)}`});T.push(k),a=!0}}m[y]={schemaId:d,exampleIds:T.length>0?T:void 0},d&&(a=!0)}const h=e["x-codeSamples"];if(!(a||(h?.length??0)>0))return t;const x=e.servers?.filter(y=>y.url).map(({url:y,name:S,description:d,variables:g})=>({url:y,name:S,description:d,variables:g}));return t.push({children:[{kind:Y.CALLBACK_PAYLOAD,callbackName:s,path:r.pathName,httpVerb:r.httpVerb,servers:x?.length?x:void 0,definitionSamples:h,mediaTypes:p.length>0?p:void 0,mediaTypeSchemas:Object.keys(m).length>0?m:void 0,examples:[]}]}),t}function Ce(e,r,s){const o=P(r,e,s)??e,{$ref:n,...t}=e,c=typeof n=="string"?{...o,...t}:o;return ee(c,s)}function V(e,r,s){if(!e||typeof e!="object")return;const o=e,n=P(r,o,s)??o;return ee(n,s)}function ge(e,r,s){if(!e||typeof e!="object")return;const o=E(e),n={},t=[];for(const[c,l]of Object.entries(e)){if(c===U)continue;const i=P(r,l,s)??l,p=i.content,a=p?p[Object.keys(p)[0]]:void 0,m=i.schema??a?.schema??a?.itemSchema,h=V(m,r,s);if(!h)continue;const b=oe(i.examples,r,s),x=E(l)??E(i)??o;n[c]={...h,...i.description!==void 0&&{description:i.description},...i.example!==void 0&&{example:i.example},...b&&{examples:b},...A(x)},i.required&&t.push(c)}if(Object.keys(n).length!==0)return{type:"object",properties:n,...t.length>0?{required:t}:{}}}function Oe(e){if(typeof e=="string"||e&&typeof e=="object"&&"$$mdtype"in e||Array.isArray(e)&&e.length>0&&e.every(r=>!!r&&typeof r=="object"&&"$$mdtype"in r))return e}function F(e,r){const{storeCtx:s,options:o}=$.get(),n=s.document;return e.map(t=>{const c=t.schema;let l={};if(c&&typeof c=="object")l=c;else if(t.content&&typeof t.content=="object"){const b=t.content,x=Object.keys(b)[0],y=x?b[x]?.schema:void 0;y&&typeof y=="object"&&(l=y)}const i=H(s.schemaStore,s.hashIndex,{kind:B.JSON_SCHEMA,data:l}),p=t["x-badges"],a=l["x-badges"],m=Array.isArray(p)?p:Array.isArray(a)?a:void 0,h=G(t,o.showExtensions);return{name:String(t.name??""),in:typeof t.in=="string"?t.in:void 0,schemaId:i,description:Oe(t.description),required:t.required===!0?!0:void 0,deprecated:t.deprecated===!0?!0:void 0,example:t.example,examples:oe(t.examples,n,r),...m?.length?{badges:m}:{},...Object.keys(h).length?{extensions:h}:{},...A(E(t))}})}function oe(e,r,s){if(!e||typeof e!="object")return;const o={};for(const[n,t]of Object.entries(e)){if(!t||typeof t!="object")continue;const c=P(r,t,s)??t;if(!se(c))continue;const l=Z(c);o[n]={...typeof c.summary=="string"&&{summary:c.summary},...typeof c.description=="string"&&{description:c.description},...l!==void 0&&{value:typeof l=="string"?l:JSON.stringify(l)}}}return Object.keys(o).length>0?o:void 0}function ie(e,r){const{storeCtx:s,options:o}=$.get(),n=[],t=s.document,c=Re(e);if(c&&n.push(c),e.parameters&&Array.isArray(e.parameters)){const i=e.parameters.map(d=>Ce(d,t,r)),p=i.filter(d=>d.in==="header"),a=i.filter(d=>d.in==="query"),m=i.filter(d=>d.in==="path"),h=i.filter(d=>d.in==="cookie"),b=i.filter(d=>d.in==="querystring"),x=b.filter(d=>!d.content||typeof d.content!="object"),y=b.filter(d=>d.content&&typeof d.content=="object"),S=b.length>0;m.length>0&&n.push({nodeType:f.ITEM,variant:"path",label:"Path",labelTranslationKey:"path",parameters:F(m,r),pointer:e.pointer+"/parameters"}),a.length>0&&!S&&n.push({nodeType:f.ITEM,variant:"query",label:"Query",labelTranslationKey:"query",parameters:F(a,r),pointer:e.pointer+"/parameters"}),x.length>0&&n.push({nodeType:f.ITEM,variant:"querystring",label:"Query String",labelTranslationKey:"querystring",parameters:F(x,r),pointer:e.pointer+"/parameters"});for(const d of y){const g=d.content,T=Object.keys(g),C={};for(const M of T){const R=g[M];if(!R)continue;let I;const w=R.itemSchema,_=R.schema??w,u=V(_,t,r);u&&(I=H(s.schemaStore,s.hashIndex,{kind:B.JSON_SCHEMA,data:u}));const v=X(R,r);C[M]={schemaId:I,exampleIds:v,...A(E(_))}}const q=T[0],O=q?C[q]:void 0,k=K(d.description,o);n.push({nodeType:f.ITEM,variant:"querystring-body",label:String(d.name??""),required:d.required===!0?!0:void 0,mediaTypes:T.length>0?T:void 0,mediaTypeSchemas:Object.keys(C).length>0?C:void 0,schemaId:O?.schemaId,exampleIds:O?.exampleIds,pointer:e.pointer+"/parameters",...k!==void 0?{description:k}:{},...A(E(d))})}h.length>0&&n.push({nodeType:f.ITEM,variant:"cookies",label:"Cookies",labelTranslationKey:"cookie",parameters:F(h,r),pointer:e.pointer+"/parameters"}),p.length>0&&n.push({nodeType:f.ITEM,variant:"headers",label:"Headers",labelTranslationKey:"header",parameters:F(p,r),pointer:e.pointer+"/parameters"})}if(e.requestBody){const l=P(t,e.requestBody,r)??e.requestBody,i=z(t,l,r),p=i?Object.keys(i):void 0;let a,m,h;if(i&&p){h={};for(const d of p){const g=i[d];if(!g)continue;let T;const C=g.itemSchema,q=g.schema??C,O=V(q,t,r);O&&(T=H(s.schemaStore,s.hashIndex,{kind:B.JSON_SCHEMA,data:O}));const k=X(g,r,`${e.pointer}/requestBody/content/${N(d)}`);h[d]={schemaId:T,exampleIds:k,...A(E(q))}}const y=p[0],S=y?h[y]:void 0;a=S?.schemaId,m=S?.exampleIds}const b=K(l.description,o),x=E(e.requestBody)??E(l);n.push({nodeType:f.ITEM,variant:"body",label:"Request Body",labelTranslationKey:"body",required:l.required,mediaTypes:p,mediaTypeSchemas:h,schemaId:a,exampleIds:m,pointer:e.pointer+"/requestBody",...b!==void 0?{description:b}:{},...A(x)})}return n}function ce(e,r,s,o){if(!e.responses)return;const{storeCtx:n}=$.get(),t=n?.document??{},c=e.responses,i=Object.entries(c).filter(([p])=>ue(p)).map(([p,a])=>{const m=P(t,a,o)??a;let h=E(a)??E(m);const b=z(t,m,o),x=b?Object.keys(b):[],y=x[0],S=y&&b?b[y]:void 0;let d,g,T,C;if(b&&x.length>0){C={};for(const R of x){const I=b[R];if(!I)continue;let w;const _=I.itemSchema,u=I.schema??_,v=V(u,t,o);v&&(w=H(n.schemaStore,n.hashIndex,{kind:B.JSON_SCHEMA,data:v}));const D=X(I,o,`${e.pointer}/responses/${N(p)}/content/${N(R)}`);C[R]={schemaId:w,exampleIds:D,...A(E(u))}}const M=y?C[y]:void 0;d=M?.schemaId,g=M?.exampleIds}else if(S){const M=S.itemSchema,R=S.schema??M,I=V(R,t,o);I&&(h=h??E(R),d=H(n.schemaStore,n.hashIndex,{kind:B.JSON_SCHEMA,data:I})),g=X(S,o,y?`${e.pointer}/responses/${N(p)}/content/${N(y)}`:void 0)}const q=ge(m.headers,t,o);q&&(T=H(n.schemaStore,n.hashIndex,{kind:B.JSON_SCHEMA,data:q}));let O;m.description&&(O=K(m.description,r),W(O??[],s,`${ne}/${p}`));const k=m["x-summary"]?K(m["x-summary"],r):void 0;return k&&W(k,s,`${ne}/${p}/summary`),{code:p,summary:k,description:O,mediaType:y,mediaTypes:x.length>0?x:void 0,mediaTypeContent:C,schemaId:d,exampleIds:g,headers:m.headers,headerSchemaId:T,...A(h)}});return{nodeType:f.ITEM,variant:"responses",responses:i,pointer:e.pointer+"/responses"}}function X(e,r,s){const{storeCtx:o}=$.get(),n=[],t=o.document,c=s?.replace(/^\//,"");if(e.example!==void 0){const l=J(o.exampleStore,{value:e.example,...c&&{id:`${c}/example`}});n.push(l)}if(e.examples&&typeof e.examples=="object"){const l=E(e.examples);for(const[i,p]of Object.entries(e.examples)){if(i===U||!p||typeof p!="object")continue;const a=P(t,p,r)??p,m=E(p)??E(a)??l,h=J(o.exampleStore,{value:Z(a),key:i,summary:typeof a.summary=="string"?a.summary:i,description:typeof a.description=="string"?a.description:void 0,externalValue:typeof a.externalValue=="string"?a.externalValue:void 0,...A(m),...c&&{id:`${c}/examples/${N(i)}`}});n.push(h)}}return n.length>0?n:void 0}function Re(e){const{storeCtx:r,options:s}=$.get();if(!e.security||!Array.isArray(e.security)||e.security.length===0)return;const o=e.security.map(n=>{const t=Object.entries(n);if(t.length===0)return null;const c=r?.document?.components?.securitySchemes,l=t.map(([i,p])=>{const a=r?.securitySchemeStore[i],m=E(c?.[i])??a?.[U];return{name:i,scopes:Array.isArray(p)?p:void 0,type:a?.type,scheme:a?.scheme,bearerFormat:a?.bearerFormat,in:a?.in,paramName:a?.paramName,description:a?.description?K(a.description,s):a?.description,openIdConnectUrl:a?.openIdConnectUrl,oauth2MetadataUrl:a?.oauth2MetadataUrl,deprecated:a?.deprecated,flows:a?.flows,...A(m)}}).filter(i=>i.name);return l.length>0?{schemes:l}:null}).filter(n=>n!==null);if(o.length!==0)return{nodeType:f.SECURITY,requirements:o}}function Ae(e,r,s,o){const{storeCtx:n,options:t}=$.get();if(!n)throw new Error("OpenAPI store context is not initialized");return ye(e,n,t,r,s,o)}export{we as buildItemContent,xe as createCallbackIdFactory};
|
|
@@ -8,4 +8,4 @@ import{jsx as i,jsxs as p}from"react/jsx-runtime";import{useCallback as f,useEff
|
|
|
8
8
|
:hover {
|
|
9
9
|
background-color: var(--dropdown-menu-item-bg-color-hover);
|
|
10
10
|
}
|
|
11
|
-
`;function gr({servers:o,method:n,path:t}){const[y,s]=$(L),{events:v}=h(_),d=H(),c=y[0],a=h(O),x=!["get","post","put","delete","patch","head","options","trace","query","x-query"].includes(n.toLowerCase()),u=D({httpVerb:n.toLowerCase(),isAdditionalOperation:x}),l=g(()=>o.map(r=>{const e=w(r.url);return{...r,resolvedUrl:q(r),envUrl:e,envName:String(T({...r,url:e}))}}),[o]),N=g(()=>{const r=l.find(e=>e.url===c.server||e.resolvedUrl===c.server||e.envUrl===c.server);return r?r.resolvedUrl:l[0]?.resolvedUrl??""},[c.server,l]);P(()=>{if(!c.server&&l.length>0){const e=(a?l.find(m=>m.envName===a):void 0)??l[0];s({...!a&&{environment:e.envName},environments:{[e.envName]:{server:e.envUrl}}})}},[]);const k=f(r=>{r.stopPropagation()},[]),A=f(r=>()=>{if(o.length<=1)return;const e=r.envName;d.sendSwitchServersClickedMessage([{id:"switchServersButton",object:"button",uri:"urn:redocly:redoc:ui:button:switchServersButton",server:e}]),s({environment:e,environments:{[e]:{server:r.envUrl}}}),v?.targetServerSwitch?.(R({operation:{id:`${n}:${t}`,path:t,httpVerb:n,name:`${n.toUpperCase()} ${t}`},serverUrl:r.url}))},[o.length,s,d,v,n,t]),E=t.includes("{$");if(o.length
|
|
11
|
+
`;function gr({servers:o,method:n,path:t}){const[y,s]=$(L),{events:v}=h(_),d=H(),c=y[0],a=h(O),x=!["get","post","put","delete","patch","head","options","trace","query","x-query"].includes(n.toLowerCase()),u=D({httpVerb:n.toLowerCase(),isAdditionalOperation:x}),l=g(()=>o.map(r=>{const e=w(r.url);return{...r,resolvedUrl:q(r),envUrl:e,envName:String(T({...r,url:e}))}}),[o]),N=g(()=>{const r=l.find(e=>e.url===c.server||e.resolvedUrl===c.server||e.envUrl===c.server);return r?r.resolvedUrl:l[0]?.resolvedUrl??""},[c.server,l]);P(()=>{if(!c.server&&l.length>0){const e=(a?l.find(m=>m.envName===a):void 0)??l[0];s({...!a&&{environment:e.envName},environments:{[e.envName]:{server:e.envUrl}}})}},[]);const k=f(r=>{r.stopPropagation()},[]),A=f(r=>()=>{if(o.length<=1)return;const e=r.envName;d.sendSwitchServersClickedMessage([{id:"switchServersButton",object:"button",uri:"urn:redocly:redoc:ui:button:switchServersButton",server:e}]),s({environment:e,environments:{[e]:{server:r.envUrl}}}),v?.targetServerSwitch?.(R({operation:{id:`${n}:${t}`,path:t,httpVerb:n,name:`${n.toUpperCase()} ${t}`},serverUrl:r.url}))},[o.length,s,d,v,n,t]),E=t.includes("{$");if(o.length===0||E)return p(G,{children:[i(U,{color:u,children:n}),i(C,{children:t})]});const b=p(F,{variant:"ghost",children:[i(U,{color:u,children:n}),i(C,{children:t})]}),j=l.map(r=>{const e=w(r.resolvedUrl),m=J(e,t);return i(K,{onAction:A(r),children:i(z,{header:r.name||r.description||e,title:m,actions:[i(Q,{data:m,toasterPlacement:"left",onCopyClick:k},m)],active:r.resolvedUrl===N,withCheckmark:!0})},r.url)});return i(V,{trigger:b,withArrow:!0,alignment:"start",children:i(W,{children:j})})}export{gr as ServerDropdown};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{CodeBuilder as
|
|
2
|
-
`)){const i=s.replace(/"/g,'\\"');t.push(3,`"${i}", `)}t.push(2,");"),t.push(2,"%s.setEntity(new StringEntity(payload));",t.var("request"))}break;case
|
|
1
|
+
import{CodeBuilder as w,Lang as A}from"./helpers/code-builder.js";import{buildUrlExpression as d,printUrlVariablesDeclarations as k}from"./helpers/url-helpers.js";import{buildJava8DeviceAuthorizationCodeSnippet as v}from"./helpers/oauth2-snippets.js";import{normalizeMimeType as D}from"./helpers/mime.js";import{MediaTypes as o}from"../../../constants/openapi.js";import{toCodeSampleHAR as N}from"./helpers/sub-request.js";function C(t){return t.charAt(0).toUpperCase()+t.slice(1)}function g(t){return"Http"+C(t.toLowerCase())}function b(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)&&Object.keys(t).length===0}function S(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function E(t){return typeof t=="string"}function m(t){return E(t)?JSON.stringify(t):t==null?"JSONObject.NULL":String(t)}function q(t,a){const r={indent:" ",withWrapper:!0,...a},e=new w({indentation:r.indent,variablesPrefix:r.variablesPrefix,capitalize:!0,lang:A.JAVA8}),s=g(t.method),i=t.oAuth2PreRequests?.[0],u=D(t.postData?.mimeType);r.withComments&&(e.push("/**"),e.push(" * Requires JDK >= 8"),e.push(" *"),e.push(" * Requires Apache HttpComponents Client >= 4.3.5"),e.push(" * See here for installation details:"),e.push(" * https://search.maven.org/artifact/org.apache.httpcomponents/httpcomponents-client"),e.push(" *"),e.push(' * Requires package "junit4"'),e.push(" * See here for installation details:"),e.push(" * https://junit.org/junit4"),e.push(" *"),e.push(' * Requires package "org.json" >= 20180130'),e.push(" * See here for installation details:"),e.push(" * https://search.maven.org/artifact/org.json/json"),e.push(" */"),e.blank()),r.withImports&&(e.push("import org.apache.http.util.EntityUtils;"),e.push("import org.apache.http.NameValuePair;"),e.push("import org.apache.http.client.HttpClient;"),e.push("import org.apache.http.client.entity.UrlEncodedFormEntity;"),t.method&&e.push(`import org.apache.http.client.methods.${s};`),i&&i.method.toLowerCase()!==t.method.toLowerCase()&&e.push(`import org.apache.http.client.methods.${g(i.method)};`),e.push("import org.apache.http.impl.client.HttpClientBuilder;"),e.push("import org.apache.http.message.BasicNameValuePair;"),e.push("import org.apache.http.entity.StringEntity;"),e.push("import org.json.JSONObject;"),e.push("import org.json.JSONArray;"),e.push("import java.util.ArrayList;"),e.push("import java.util.List;"),e.push("import org.apache.http.entity.mime.MultipartEntity;"),e.push("import org.apache.http.entity.mime.content.StringBody;"),!t.postData?.params?.length&&t.postData?.text&&u===o.MULTIPART&&(e.push("import org.apache.http.entity.mime.content.FileBody;"),e.push("import java.io.File;")),t.basicAuth&&e.push("import java.util.Base64;"),e.blank()),r.withWrapper&&(e.push("public class App {"),e.push(1,"public static void main(String[] args ) throws java.io.IOException {"),e.push(2,"HttpClient httpClient = HttpClientBuilder.create().build();"),e.blank());const c={...t.allHeaders??t.headersObj};if(i){const p=q(N(i),{...r,withImports:!1,withWrapper:!1,withComments:!1,variablesPrefix:"oauth2"});e.push(p),e.push(2,"JSONObject %s = new JSONObject(EntityUtils.toString(httpClient.execute(%s).getEntity()));","oauth2Response","oauth2Request"),i.flowType==="deviceAuthorization"?v(e,{tokenUrl:i.tokenUrl??"YOUR_TOKEN_URL",clientId:i.clientId??"YOUR_CLIENT_ID",level:2}):(e.push(2,'String accessToken = %s.getString("access_token");',"oauth2Response"),e.blank())}k(t,e,2);const O=d(t,e);e.push(2,`%s ${e.var("request")} = new %s(%s);`,s,s,O);const f=Object.keys(c);if(f.length&&!(t.postData&&t.postData.mimeType===o.MULTIPART))for(const p of f){const n=p.toLowerCase()==="authorization";e.push(2,'%s.setHeader("%s", %s);',e.var("request"),p,i&&n?'"Bearer " + accessToken':`"${c[p]}"`)}if(t.basicAuth){const{username:p,password:n}=t.basicAuth;e.push(2,`String encodedString = Base64.getEncoder().encodeToString("${p}:${n}".getBytes());`),e.push(2,'%s.setHeader("%s", "%s"+encodedString);',e.var("request"),"Authorization","Basic ")}const y=(p,n)=>{const j=Array.isArray(p)?p.map((h,l)=>[String(l),h]):Object.entries(p);for(const[h,l]of j)l!==null&&typeof l=="object"?(e.push(n,'.put("%s", new JSONObject()',h),y(l,n+1),e.push(n,")")):e.push(n,'.put("%s", %s)',h,m(l))};return L(e,t,u,y),r.withWrapper&&(e.push(2,`String ${e.var("response")} = EntityUtils.toString(httpClient.execute(request).getEntity());`),e.blank(),e.push(2,"System.out.println(response);"),e.push(1,"}"),e.push("}")),e.join()}function L(t,a,r,e){if(a.postData)switch(r){case o.URL_ENCODED:if(a.postData.params?.length){t.blank(),t.push(2,"List<NameValuePair> params = new ArrayList<NameValuePair>();");for(const s of a.postData.params)t.push(2,'params.add(new BasicNameValuePair("%s", "%s"));',s.name,s.value??"");t.push(2,"%s.setEntity(new UrlEncodedFormEntity(params));",t.var("request")),t.blank()}else a.postData.text&&(t.blank(),t.push(2,'%s.setEntity(new StringEntity("%s"));',t.var("request"),a.postData.text),t.blank());break;case o.MULTIPART:if(a.postData.params&&a.postData.params.length>0){t.push(2,"MultipartEntity reqEntity = new MultipartEntity();");for(const s of a.postData.params)s.fileName?t.push(2,'reqEntity.addPart("%s", new FileBody(new File("%s")));',s.name,s.fileName):t.push(2,'reqEntity.addPart("%s", %s);',s.name,E(s.value)?`new StringBody("${s.value}")`:s.value);t.push(2,"%s.setEntity(reqEntity);",t.var("request"))}else a.postData.text&&t.push(2,'%s.setEntity(new StringEntity("%s"));',t.var("request"),a.postData.text.replace(/\\/g,"\\\\").replace(/"/g,'\\"'));break;case o.JSON:if(a.jsonObj){t.push(2,"JSONObject payload = new JSONObject();");for(const[s,i]of Object.entries(a.jsonObj))if(Array.isArray(i)){t.push(2,'payload.put("%s", new JSONArray()',s);for(const u of i)S(u)?(t.push(3,".put(new JSONObject()"),e(u,4),t.push(3,")")):t.push(3,".put(%s)",m(u));t.push(2,");")}else S(i)?(t.push(2,'payload.put("%s", new JSONObject()%s',s,b(i)?");":""),e(i,3),b(i)||t.push(2,");")):t.push(2,'payload.put("%s", %s);',s,m(i));t.push(2,"%s.setEntity(new StringEntity(payload.toString()));",t.var("request"))}break;case o.XML:if(a.postData.text){t.push(2,'String payload = String.join("\\n"');for(const s of a.postData.text.trim().split(`
|
|
2
|
+
`)){const i=s.replace(/"/g,'\\"');t.push(3,`"${i}", `)}t.push(2,");"),t.push(2,"%s.setEntity(new StringEntity(payload));",t.var("request"))}break;case o.OCTET_STREAM:a.postData.text&&t.push(2,'%s.setEntity(new StringEntity("%s"));',t.var("request"),a.postData.text);break}}export{q as generateJava8};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@redocly/api-docs",
|
|
3
|
-
"version": "0.2.0-next.
|
|
3
|
+
"version": "0.2.0-next.4",
|
|
4
4
|
"description": "Redocly API Documentation Library",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@markdoc/markdoc": "0.5.2",
|
|
34
|
-
"@redocly/openapi-core": "2.
|
|
34
|
+
"@redocly/openapi-core": "2.47.0",
|
|
35
35
|
"dompurify": "3.4.13",
|
|
36
36
|
"fast-xml-parser": "5.7.3",
|
|
37
37
|
"graphql": "16.14.2",
|
|
@@ -51,8 +51,8 @@
|
|
|
51
51
|
"@redocly/allof-merge": "0.6.9",
|
|
52
52
|
"@redocly/config": "0.53.1",
|
|
53
53
|
"@redocly/redoc-opentelemetry": "0.2.2",
|
|
54
|
-
"@redocly/replay": "0.28.0-next.
|
|
55
|
-
"@redocly/theme": "^0.69.0-next.
|
|
54
|
+
"@redocly/replay": "0.28.0-next.4",
|
|
55
|
+
"@redocly/theme": "^0.69.0-next.4"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
58
|
"@testing-library/jest-dom": "6.6.3",
|