@redocly/openapi-docs 3.10.0-next.3 → 3.10.0-next.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/redocly-openapi-docs.min.js +1107 -1107
- package/lib/components/PropertyDetails/Examples.js +1 -1
- package/lib/components/PropertyDetails/styled.d.ts +0 -1
- package/lib/components/PropertyDetails/styled.js +2 -2
- package/lib/components/RequestSamples/useCodeSamples.d.ts +1 -1
- package/lib/components/RequestSamples/useCodeSamples.js +1 -1
- package/lib/components/Samples/ExampleSwitch.d.ts +2 -1
- package/lib/components/Samples/ExampleSwitch.js +1 -1
- package/lib/components/ServerListDropdown/ServerListDropdown.js +1 -1
- package/lib/hooks/useOtelTelemetry.d.ts +1 -1
- package/lib/models/operation.js +1 -1
- package/lib/models/types.d.ts +29 -7
- package/lib/services/code-samples/generator.js +1 -1
- package/lib/types/open-api.d.ts +3 -0
- package/lib/utils/configure-helpers.d.ts +11 -0
- package/lib/utils/configure-helpers.js +2 -0
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/index.js +1 -1
- package/lib/utils/openapi.js +1 -1
- package/lib/utils/replaceVariables.d.ts +2 -2
- package/lib/utils/replaceVariables.js +1 -1
- package/lib-esm/components/PropertyDetails/Examples.js +1 -1
- package/lib-esm/components/PropertyDetails/styled.d.ts +0 -1
- package/lib-esm/components/PropertyDetails/styled.js +1 -1
- package/lib-esm/components/RequestSamples/useCodeSamples.d.ts +1 -1
- package/lib-esm/components/RequestSamples/useCodeSamples.js +1 -1
- package/lib-esm/components/Samples/ExampleSwitch.d.ts +2 -1
- package/lib-esm/components/Samples/ExampleSwitch.js +1 -1
- package/lib-esm/components/ServerListDropdown/ServerListDropdown.js +1 -1
- package/lib-esm/hooks/useOtelTelemetry.d.ts +1 -1
- package/lib-esm/models/operation.js +1 -1
- package/lib-esm/models/types.d.ts +29 -7
- package/lib-esm/services/code-samples/generator.js +1 -1
- package/lib-esm/types/open-api.d.ts +3 -0
- package/lib-esm/utils/configure-helpers.d.ts +11 -0
- package/lib-esm/utils/configure-helpers.js +2 -0
- package/lib-esm/utils/index.d.ts +1 -0
- package/lib-esm/utils/index.js +1 -1
- package/lib-esm/utils/openapi.js +1 -1
- package/lib-esm/utils/replaceVariables.d.ts +2 -2
- package/lib-esm/utils/replaceVariables.js +1 -1
- package/package.json +3 -3
|
@@ -5,17 +5,22 @@ import type { OpenAPIParser } from '../services/OpenAPIParser';
|
|
|
5
5
|
import type { Options } from '../services/config-options';
|
|
6
6
|
import type { ExtendedOpenAPIOperation, MenuItemGroupType, MenuItemType, MergedOpenAPISchema, Unstable_ExternalCodeSample } from '../services/types';
|
|
7
7
|
export type ContentItemModel = GroupModel | OperationMenuItem;
|
|
8
|
-
export interface
|
|
9
|
-
id: string;
|
|
10
|
-
sectionId: string;
|
|
11
|
-
scopes: string[];
|
|
8
|
+
export interface SecurityCredentials {
|
|
12
9
|
'x-defaultClientId'?: string;
|
|
13
10
|
'x-defaultClientSecret'?: string;
|
|
14
11
|
'x-defaultUsername'?: string;
|
|
15
12
|
'x-defaultPassword'?: string;
|
|
16
|
-
'x-
|
|
17
|
-
|
|
18
|
-
|
|
13
|
+
'x-defaultAccessToken'?: string;
|
|
14
|
+
'x-defaultTokenType'?: string;
|
|
15
|
+
scopes?: string[];
|
|
16
|
+
}
|
|
17
|
+
export interface ExtendedOpenAPISecurityScheme extends OpenAPISecurityScheme, SecurityCredentials {
|
|
18
|
+
id: string;
|
|
19
|
+
sectionId: string;
|
|
20
|
+
scopes: string[];
|
|
21
|
+
serverUrl?: string;
|
|
22
|
+
serverValues?: {
|
|
23
|
+
[serverUrl: string]: SecurityCredentials;
|
|
19
24
|
};
|
|
20
25
|
}
|
|
21
26
|
export interface SecurityRequirement {
|
|
@@ -53,6 +58,12 @@ export type ExampleModel = {
|
|
|
53
58
|
encoding?: {
|
|
54
59
|
[field: string]: OpenAPIEncoding;
|
|
55
60
|
};
|
|
61
|
+
serverValues?: {
|
|
62
|
+
[serverUrl: string]: {
|
|
63
|
+
value: any;
|
|
64
|
+
rawValue: any;
|
|
65
|
+
};
|
|
66
|
+
};
|
|
56
67
|
};
|
|
57
68
|
export type MediaTypeModel = {
|
|
58
69
|
examples?: {
|
|
@@ -111,6 +122,11 @@ export type FieldModel = {
|
|
|
111
122
|
fieldFullPath?: string;
|
|
112
123
|
deps: Deps;
|
|
113
124
|
absolutePointer?: string;
|
|
125
|
+
serverValues?: {
|
|
126
|
+
[serverUrl: string]: {
|
|
127
|
+
example?: string;
|
|
128
|
+
};
|
|
129
|
+
};
|
|
114
130
|
[REDOCLY_TEAMS_RBAC]?: Record<string, string>;
|
|
115
131
|
};
|
|
116
132
|
export type CallbackModel = {
|
|
@@ -155,6 +171,12 @@ export type OperationModel = {
|
|
|
155
171
|
parameters: FieldModel[];
|
|
156
172
|
responses: ResponseModel[];
|
|
157
173
|
callbacks: CallbackModel[];
|
|
174
|
+
envVariables?: {
|
|
175
|
+
values?: Record<string, string>;
|
|
176
|
+
serverValues?: {
|
|
177
|
+
[serverUrl: string]: Record<string, string>;
|
|
178
|
+
};
|
|
179
|
+
};
|
|
158
180
|
};
|
|
159
181
|
export type GroupModel = {
|
|
160
182
|
id: string;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import*as Sampler from"openapi-sampler";import merge from"deepmerge";import{isObject}from"@redocly/theme";import{areArraysEqual,serializeParameterValue,getSecurityDetails,getParameterValue,queryString,isArrayOfObjects,deleteEmptyArrayItem}from"../../utils";import{normalizeMimeType,arrayMergeStrategy}from"../utils";import{MediaTypes}from"../../constants";import{HTTPSnippet}from"./httpsnippet";import{getActiveMediaType}from"../../models/mediaContent";import StringUtility from"./httpsnippet/helpers/string-utility";function getSelectedSecurityScheme(e,t){return e.find((e=>{const a=e.schemes.map((e=>e.id));return areArraysEqual(a,t||[])}))}function mapOperationToHAR(e,{exampleName:t="",skipOptionalParameters:a=!1,withOAuth2Call:r=!1,spec:s,generatedPayloadSamplesMaxDepth:i=8,pathParams:n={},properties:o={},activeMimeName:l=""},{environment:c,requestValues:u,activeSecuritySchemeIds:p}){var d,m,y;const h=c.server,f=e.servers.find((e=>e.url===h))||e.servers[0],g=getSelectedSecurityScheme(e.security,p),{securityHeaders:O,securityCookies:v,securityQueries:S,securityOAuth2ExtraCalls:T,basicAuth:_}=getSecurityData(g||(null===(d=e.security)||void 0===d?void 0:d[0]),r,c),C=(null===(m=null==e?void 0:e.requestBody)||void 0===m?void 0:m.content)&&getActiveMediaType(e.requestBody.content,l),b={skipNonRequired:a,skipReadOnly:!0,maxSampleDepth:i,quiet:!0},k=u;let j=!1;const E=e.parameters.filter((e=>"header"===e.in)).filter((e=>!(a&&!e.required))).map((e=>{var t;return{name:e.name,value:(null===(t=k.header)||void 0===t?void 0:t[e.name])||getParameterValue("header",e.name)||e.example||serializeParameterValue(e,Sampler.sample(e.schema.rawSchema,b,s))}})).map((e=>((null==C?void 0:C.name)&&"content-type"===e.name.toLowerCase()&&(j=!0,e.value=C.name),e))).concat(O);!j&&(null==C?void 0:C.name)&&E.unshift({name:"Content-Type",value:null==C?void 0:C.name});const A=e.parameters.filter((e=>"cookie"===e.in)).filter((e=>!(a&&!e.required))).map((e=>queryString.parse(serializeParameterValue(e,e.example||Sampler.sample(e.schema.rawSchema,b,s))))).reduce(((e,t)=>{var a;for(const[r,s]of Object.entries(t))e.push({name:r,value:String((null===(a=k.cookie)||void 0===a?void 0:a[r])||s)});return e}),[]).concat(v),P=e.parameters.filter((e=>"query"===e.in)).filter((e=>!(a&&!e.required))).map((e=>queryString.parse(serializeParameterValue(e,e.example||Sampler.sample(e.schema.rawSchema,b,s))))).reduce(((e,t)=>{var a,r,s;for(const[i,n]of Object.entries(t))e.push({name:i,value:isArrayOfObjects(null===(a=k.query)||void 0===a?void 0:a[i])&&JSON.stringify(deleteEmptyArrayItem(null===(r=k.query)||void 0===r?void 0:r[i]))||String((null===(s=k.query)||void 0===s?void 0:s[i])||n)});return e}),[]).concat(S),w=`${null==f?void 0:f.url.replace(/\/$/,"")}/${e.path.replace(/^\//,"")}`,x=e.parameters.filter((e=>"path"===e.in)).reduce(((e,t)=>{var a;const{in:r,name:s}=t;return e[s]=(null===(a=k.path)||void 0===a?void 0:a[s])||t.example||n[s]||getParameterValue(r,s),e}),{}),M=null===(y=null==C?void 0:C.examples)||void 0===y?void 0:y[t],R=(null==C?void 0:C.examples)||{},[D]=Object.values(R),q=null==C?void 0:C.name.toLowerCase(),N=(null==k?void 0:k.body)||(null==M?void 0:M.value)||(null==D?void 0:D.value)||(null==C?void 0:C.schema)&&Sampler.sample(null==C?void 0:C.schema.rawSchema,Object.assign(Object.assign({},b),{format:q===MediaTypes.XML?"xml":"json"}),s);let H="",U=[];switch(normalizeMimeType(q)){case MediaTypes.JSON:H=JSON.stringify(getDataRequest(N,o));break;case MediaTypes.XML:H=N;break;case MediaTypes.URL_ENCODED:case MediaTypes.MULTIPART:H=queryString.stringify(getDataRequest(N,o)),U=objectToHarParams(getDataRequest(N,o));break;default:H=String(N||"")}const $=H?{mimeType:(null==C?void 0:C.name)||MediaTypes.OCTET_STREAM,text:H,params:U}:void 0,z=e.responses.map((e=>e.code));return{method:e.httpVerb,url:w,httpVersion:"HTTP/1.1",cookies:A,headers:E,queryString:P,postData:$,headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:T,basicAuth:_,pathParameters:x,serverVariables:c,allResponseCodes:z}}const defaultOptions={withImports:!0,withComments:!1},langToSnippetConfig={curl:{code:"shell",defaultTarget:"curl",defaultOptions:Object.assign(Object.assign({},defaultOptions),{short:!0})},JavaScript:{code:"javascript",defaultTarget:"fetch",defaultOptions:Object.assign(Object.assign({},defaultOptions),{withImports:!1})},"Node.js":{code:"node",defaultTarget:"fetch",defaultOptions:Object.assign({},defaultOptions)},Python:{code:"python",defaultTarget:"requests",defaultOptions:Object.assign({},defaultOptions)},"Java8+Apache":{code:"java8",defaultTarget:"apachehttp",defaultOptions:Object.assign({},defaultOptions)},Java:{code:"java",defaultTarget:"httpclient",defaultOptions:Object.assign({},defaultOptions)},"C#":{code:"csharp",defaultTarget:"httpclient",defaultOptions:Object.assign({},defaultOptions)},"C#+Newtonsoft":{code:"csharpNewtonsoft",defaultTarget:"httpclient",defaultOptions:Object.assign({},defaultOptions)},Go:{code:"go",defaultTarget:"http.DefaultClient",defaultOptions:Object.assign({},defaultOptions)},PHP:{code:"php",defaultTarget:"curl",defaultOptions:Object.assign({},defaultOptions)},Ruby:{code:"ruby",defaultTarget:"net::http",defaultOptions:Object.assign({},defaultOptions)},R:{code:"r",defaultTarget:"httr",defaultOptions:Object.assign({},defaultOptions)}};export function getCodeSample({lang:e,operation:t,exampleName:a,pathParams:r,properties:s,options:i={},environment:n,translate:o}){try{const{skipOptionalParameters:l,withOAuth2Call:c,spec:u,generatedPayloadSamplesMaxDepth:p,store:d,activeMimeName:m}=i,y=mapOperationToHAR(t,{exampleName:a,pathParams:r,properties:s,skipOptionalParameters:l,withOAuth2Call:c,spec:u,generatedPayloadSamplesMaxDepth:p,activeMimeName:m},{environment:n,requestValues:d.requestValues,activeSecuritySchemeIds:d.activeSecuritySchemeIds}),h=new HTTPSnippet(y);return langToSnippetConfig[e]?h.convert(langToSnippetConfig[e].code,langToSnippetConfig[e].defaultTarget,Object.assign(Object.assign({},langToSnippetConfig[e].defaultOptions),i)):o("openapi.unsupportedLanguage","Language is not supported.")}catch(e){return console.error(e),o("openapi.failedToGenerateCodeSample","Failed to generate code sample.")}}function getSecurityData(e,t,a){var r,s,i,n,o;const l={securityHeaders:[],securityCookies:[],securityQueries:[],securityOAuth2ExtraCalls:[],basicAuth:void 0};for(const c of(null==e?void 0:e.schemes)||[]){const e=getSecurityDetails(c.id,a),u={access_token:c["x-defaultAccessToken"],token_type:c["x-defaultTokenType"],client_id:c["x-defaultClientId"],client_secret:c["x-defaultClientSecret"]},p=c["x-defaultUsername"],d=c["x-defaultPassword"];switch(c.type){case"openIdConnect":null===(r=l.securityHeaders)||void 0===r||r.push({name:"Authorization",value:u.access_token?`${u.token_type||"Bearer"} ${u.access_token}`:e.token?`${u.token_type||e.token.token_type||"Bearer"} ${e.token.access_token}`:"Bearer <YOUR_TOKEN_HERE>"});break;case"oauth2":{const a=u.access_token?`${u.token_type||"Bearer"} ${u.access_token}`:e.token?`${e.token.token_type||"Bearer"} ${e.token.access_token}`:"Bearer <YOUR_TOKEN_HERE>";c.flows.clientCredentials&&t?l.securityOAuth2ExtraCalls.push(getOAuth2ClientCredsCallHar(c.flows.clientCredentials,c.scopes,Object.assign(Object.assign({},e),{client_id:u.client_id||e.client_id,client_secret:u.client_secret||e.client_secret}))):c.flows.password&&t&&l.securityOAuth2ExtraCalls.push(getOAuth2PasswordCallHar(c.flows.password,c.scopes,Object.assign(Object.assign({},e),{client_id:u.client_id||e.client_id,client_secret:u.client_secret||e.client_secret}))),null===(s=l.securityHeaders)||void 0===s||s.push({name:"Authorization",value:a});break}case"apiKey":{const t=u.access_token||e.raw||"YOUR_API_KEY_HERE";"header"===c.in&&(null===(i=l.securityHeaders)||void 0===i||i.push({name:c.name,value:t})),"cookie"===c.in&&l.securityCookies.push({name:c.name,value:t}),"query"===c.in&&l.securityQueries.push({name:c.name,value:t});break}case"http":if("basic"===c.scheme)l.basicAuth={username:p||e.username||`<${StringUtility.toSnakeCase("Username")}>`,password:d||e.password||`<${StringUtility.toSnakeCase("Password")}>`};else{const t=(null==u?void 0:u.access_token)||(null===(n=e.token)||void 0===n?void 0:n.access_token)||`<YOUR_${c.bearerFormat||"TOKEN"}_HERE>`;null===(o=l.securityHeaders)||void 0===o||o.push({name:"Authorization",value:`${capitalizeFirst(c.scheme||"bearer")} ${t}`})}}}return l}function getOAuth2PasswordCallHar(e,t,a){return{method:"POST",url:e.tokenUrl,httpVersion:"HTTP/1.1",headers:[{name:"Content-Type",value:MediaTypes.URL_ENCODED},{name:"Accept",value:MediaTypes.JSON}],queryString:[],postData:{mimeType:MediaTypes.URL_ENCODED,text:"",params:[{name:"grant_type",value:"password"},{name:"client_id",value:a.client_id||"YOUR_CLIENT_ID"},{name:"client_secret",value:a.client_secret||"YOUR_CLIENT_SECRET"},{name:"username",value:a.username||"<username>"},{name:"password",value:a.password||"<password>"},t.length?{name:"scope",value:t.join(" ")}:void 0].filter(isDefined)},cookies:[],headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:[]}}function getOAuth2ClientCredsCallHar(e,t,a){return{method:"POST",url:e.tokenUrl,httpVersion:"HTTP/1.1",headers:[{name:"Content-Type",value:MediaTypes.URL_ENCODED},{name:"Accept",value:MediaTypes.JSON}],queryString:[],postData:{mimeType:MediaTypes.URL_ENCODED,text:"",params:[{name:"grant_type",value:"client_credentials"},{name:"client_id",value:a.client_id||"YOUR_CLIENT_ID"},{name:"client_secret",value:a.client_secret||"YOUR_CLIENT_SECRET"},t.length?{name:"scope",value:t.join(" ")}:void 0].filter(isDefined)},cookies:[],headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:[]}}export function getDataRequest(e,t){if(e){if(isObject(e))return Object.keys(e).length>0&&0===Object.keys(t).length?e:merge(e,t,{arrayMerge:arrayMergeStrategy});try{return merge(JSON.parse(e),t,{arrayMerge:arrayMergeStrategy})}catch(e){return!1}}return!1}function objectToHarParams(e,t=""){const a=[];for(const[r,s]of Object.entries(e)){const i=t?`${t}[${r}]`:r;if("object"==typeof s&&null!==s)a.push(...objectToHarParams(s,i));else{const r=Array.isArray(e)&&"string"==typeof s&&t?t:i;a.push({name:r,value:String(s)})}}return a}export function isDefined(e){return void 0!==e}export function capitalizeFirst(e){return e.charAt(0).toUpperCase()+e.slice(1)}
|
|
1
|
+
import*as Sampler from"openapi-sampler";import merge from"deepmerge";import{isObject}from"@redocly/theme";import{areArraysEqual,serializeParameterValue,getSecurityDetails,getParameterValue,queryString,isArrayOfObjects,deleteEmptyArrayItem}from"../../utils";import{normalizeMimeType,arrayMergeStrategy}from"../utils";import{MediaTypes}from"../../constants";import{HTTPSnippet}from"./httpsnippet";import{getActiveMediaType}from"../../models/mediaContent";import StringUtility from"./httpsnippet/helpers/string-utility";function getSelectedSecurityScheme(e,t){return e.find((e=>{const a=e.schemes.map((e=>e.id));return areArraysEqual(a,t||[])}))}function mapOperationToHAR(e,{exampleName:t="",skipOptionalParameters:a=!1,withOAuth2Call:r=!1,spec:i,generatedPayloadSamplesMaxDepth:s=8,pathParams:n={},properties:l={},activeMimeName:o=""},{environment:u,requestValues:c,activeSecuritySchemeIds:p}){var d,m,v,f,y,h,g,O;const S=u.server,T=e.servers.find((e=>e.url===S))||e.servers[0],b=getSelectedSecurityScheme(e.security,p),{securityHeaders:_,securityCookies:C,securityQueries:j,securityOAuth2ExtraCalls:k,basicAuth:x}=getSecurityData(b||(null===(d=e.security)||void 0===d?void 0:d[0]),r,u),A=(null===(m=null==e?void 0:e.requestBody)||void 0===m?void 0:m.content)&&getActiveMediaType(e.requestBody.content,o),E={skipNonRequired:a,skipReadOnly:!0,maxSampleDepth:s,quiet:!0},w=c;let P=!1;const M=e.parameters.filter((e=>"header"===e.in)).filter((e=>!(a&&!e.required))).map((e=>{var t,a,r;return{name:e.name,value:(null===(t=w.header)||void 0===t?void 0:t[e.name])||getParameterValue("header",e.name)||(null===(r=null===(a=e.serverValues)||void 0===a?void 0:a[S])||void 0===r?void 0:r.example)||e.example||serializeParameterValue(e,Sampler.sample(e.schema.rawSchema,E,i))}})).map((e=>((null==A?void 0:A.name)&&"content-type"===e.name.toLowerCase()&&(P=!0,e.value=A.name),e))).concat(_);!P&&(null==A?void 0:A.name)&&M.unshift({name:"Content-Type",value:null==A?void 0:A.name});const R=e.parameters.filter((e=>"cookie"===e.in)).filter((e=>!(a&&!e.required))).map((e=>{var t,a;return queryString.parse(serializeParameterValue(e,(null===(a=null===(t=e.serverValues)||void 0===t?void 0:t[S])||void 0===a?void 0:a.example)||e.example||Sampler.sample(e.schema.rawSchema,E,i)))})).reduce(((e,t)=>{var a;for(const[r,i]of Object.entries(t))e.push({name:r,value:String((null===(a=w.cookie)||void 0===a?void 0:a[r])||i)});return e}),[]).concat(C),D=e.parameters.filter((e=>"query"===e.in)).filter((e=>!(a&&!e.required))).map((e=>{var t,a;return queryString.parse(serializeParameterValue(e,(null===(a=null===(t=e.serverValues)||void 0===t?void 0:t[S])||void 0===a?void 0:a.example)||e.example||Sampler.sample(e.schema.rawSchema,E,i)))})).reduce(((e,t)=>{var a,r,i;for(const[s,n]of Object.entries(t))e.push({name:s,value:isArrayOfObjects(null===(a=w.query)||void 0===a?void 0:a[s])&&JSON.stringify(deleteEmptyArrayItem(null===(r=w.query)||void 0===r?void 0:r[s]))||String((null===(i=w.query)||void 0===i?void 0:i[s])||n)});return e}),[]).concat(j),N=`${null==T?void 0:T.url.replace(/\/$/,"")}/${e.path.replace(/^\//,"")}`,q=e.parameters.filter((e=>"path"===e.in)).reduce(((e,t)=>{var a,r,i;const{in:s,name:l}=t;return e[l]=(null===(a=w.path)||void 0===a?void 0:a[l])||(null===(i=null===(r=t.serverValues)||void 0===r?void 0:r[S])||void 0===i?void 0:i.example)||t.example||n[l]||getParameterValue(s,l),e}),{}),H=null==A?void 0:A.name.toLowerCase(),U=H===MediaTypes.MULTIPART||H===MediaTypes.URL_ENCODED,V=U?null===(v=null==A?void 0:A.formExamples)||void 0===v?void 0:v[t]:null===(f=null==A?void 0:A.examples)||void 0===f?void 0:f[t],I=U?(null==A?void 0:A.formExamples)||{}:(null==A?void 0:A.examples)||{},[L]=Object.values(I),$=(null===(h=null===(y=null==V?void 0:V.serverValues)||void 0===y?void 0:y[S])||void 0===h?void 0:h.value)||(null===(O=null===(g=null==L?void 0:L.serverValues)||void 0===g?void 0:g[S])||void 0===O?void 0:O.value),z=e=>{var t;return e&&"object"==typeof e&&(null===(t=null==A?void 0:A.schema)||void 0===t?void 0:t.rawSchema)?Sampler.sample(populateXmlSchemaFields(A.schema.rawSchema,e),Object.assign(Object.assign({},E),{format:"xml"}),i):null},J=(()=>{if(null==w?void 0:w.body)return w.body;if(H!==MediaTypes.XML)return $||(null==V?void 0:V.value)||(null==L?void 0:L.value)||(null==A?void 0:A.schema)&&Sampler.sample(A.schema.rawSchema,Object.assign(Object.assign({},E),{format:"json"}),i);{const e=z($)||z(null==V?void 0:V.value)||z(null==L?void 0:L.value);if(e)return e;if(null==A?void 0:A.schema)return Sampler.sample(A.schema.rawSchema,Object.assign(Object.assign({},E),{format:"xml"}),i)}return""})();let Y="",B=[];switch(normalizeMimeType(H)){case MediaTypes.JSON:Y=JSON.stringify(getDataRequest(J,l));break;case MediaTypes.XML:Y=J;break;case MediaTypes.URL_ENCODED:case MediaTypes.MULTIPART:Y=queryString.stringify(getDataRequest(J,l)),B=objectToHarParams(getDataRequest(J,l));break;default:Y=String(J||"")}const F=Y?{mimeType:(null==A?void 0:A.name)||MediaTypes.OCTET_STREAM,text:Y,params:B}:void 0,K=e.responses.map((e=>e.code));return{method:e.httpVerb,url:N,httpVersion:"HTTP/1.1",cookies:R,headers:M,queryString:D,postData:F,headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:k,basicAuth:x,pathParameters:q,serverVariables:u,allResponseCodes:K}}const defaultOptions={withImports:!0,withComments:!1},langToSnippetConfig={curl:{code:"shell",defaultTarget:"curl",defaultOptions:Object.assign(Object.assign({},defaultOptions),{short:!0})},JavaScript:{code:"javascript",defaultTarget:"fetch",defaultOptions:Object.assign(Object.assign({},defaultOptions),{withImports:!1})},"Node.js":{code:"node",defaultTarget:"fetch",defaultOptions:Object.assign({},defaultOptions)},Python:{code:"python",defaultTarget:"requests",defaultOptions:Object.assign({},defaultOptions)},"Java8+Apache":{code:"java8",defaultTarget:"apachehttp",defaultOptions:Object.assign({},defaultOptions)},Java:{code:"java",defaultTarget:"httpclient",defaultOptions:Object.assign({},defaultOptions)},"C#":{code:"csharp",defaultTarget:"httpclient",defaultOptions:Object.assign({},defaultOptions)},"C#+Newtonsoft":{code:"csharpNewtonsoft",defaultTarget:"httpclient",defaultOptions:Object.assign({},defaultOptions)},Go:{code:"go",defaultTarget:"http.DefaultClient",defaultOptions:Object.assign({},defaultOptions)},PHP:{code:"php",defaultTarget:"curl",defaultOptions:Object.assign({},defaultOptions)},Ruby:{code:"ruby",defaultTarget:"net::http",defaultOptions:Object.assign({},defaultOptions)},R:{code:"r",defaultTarget:"httr",defaultOptions:Object.assign({},defaultOptions)}};export function getCodeSample({lang:e,operation:t,exampleName:a,pathParams:r,properties:i,options:s={},environment:n,translate:l}){try{const{skipOptionalParameters:o,withOAuth2Call:u,spec:c,generatedPayloadSamplesMaxDepth:p,store:d,activeMimeName:m}=s,v=mapOperationToHAR(t,{exampleName:a,pathParams:r,properties:i,skipOptionalParameters:o,withOAuth2Call:u,spec:c,generatedPayloadSamplesMaxDepth:p,activeMimeName:m},{environment:n,requestValues:d.requestValues,activeSecuritySchemeIds:d.activeSecuritySchemeIds}),f=new HTTPSnippet(v);return langToSnippetConfig[e]?f.convert(langToSnippetConfig[e].code,langToSnippetConfig[e].defaultTarget,Object.assign(Object.assign({},langToSnippetConfig[e].defaultOptions),s)):l("openapi.unsupportedLanguage","Language is not supported.")}catch(e){return console.error(e),l("openapi.failedToGenerateCodeSample","Failed to generate code sample.")}}function getSecurityData(e,t,a){var r,i,s,n,l;const o={securityHeaders:[],securityCookies:[],securityQueries:[],securityOAuth2ExtraCalls:[],basicAuth:void 0},u=null==a?void 0:a.server;for(const c of(null==e?void 0:e.schemes)||[]){const e=getSecurityDetails(c.id,a),p=u&&c.serverValues&&c.serverValues[u],d={access_token:(null==p?void 0:p["x-defaultAccessToken"])||c["x-defaultAccessToken"],token_type:(null==p?void 0:p["x-defaultTokenType"])||c["x-defaultTokenType"],client_id:(null==p?void 0:p["x-defaultClientId"])||c["x-defaultClientId"],client_secret:(null==p?void 0:p["x-defaultClientSecret"])||c["x-defaultClientSecret"]},m=(null==p?void 0:p["x-defaultUsername"])||c["x-defaultUsername"],v=(null==p?void 0:p["x-defaultPassword"])||c["x-defaultPassword"],f=p&&"scopes"in p?p.scopes||[]:c.scopes||[];switch(c.type){case"openIdConnect":null===(r=o.securityHeaders)||void 0===r||r.push({name:"Authorization",value:d.access_token?`${d.token_type||"Bearer"} ${d.access_token}`:e.token?`${d.token_type||e.token.token_type||"Bearer"} ${e.token.access_token}`:"Bearer <YOUR_TOKEN_HERE>"});break;case"oauth2":{const a=d.access_token?`${d.token_type||"Bearer"} ${d.access_token}`:e.token?`${e.token.token_type||"Bearer"} ${e.token.access_token}`:"Bearer <YOUR_TOKEN_HERE>";c.flows.clientCredentials&&t?o.securityOAuth2ExtraCalls.push(getOAuth2ClientCredsCallHar(c.flows.clientCredentials,f,Object.assign(Object.assign({},e),{client_id:d.client_id||e.client_id,client_secret:d.client_secret||e.client_secret}))):c.flows.password&&t&&o.securityOAuth2ExtraCalls.push(getOAuth2PasswordCallHar(c.flows.password,f,Object.assign(Object.assign({},e),{client_id:d.client_id||e.client_id,client_secret:d.client_secret||e.client_secret}))),null===(i=o.securityHeaders)||void 0===i||i.push({name:"Authorization",value:a});break}case"apiKey":{const t=d.access_token||e.raw||"YOUR_API_KEY_HERE";"header"===c.in&&(null===(s=o.securityHeaders)||void 0===s||s.push({name:c.name,value:t})),"cookie"===c.in&&o.securityCookies.push({name:c.name,value:t}),"query"===c.in&&o.securityQueries.push({name:c.name,value:t});break}case"http":if("basic"===c.scheme)o.basicAuth={username:m||e.username||`<${StringUtility.toSnakeCase("Username")}>`,password:v||e.password||`<${StringUtility.toSnakeCase("Password")}>`};else{const t=(null==d?void 0:d.access_token)||(null===(n=e.token)||void 0===n?void 0:n.access_token)||`<YOUR_${c.bearerFormat||"TOKEN"}_HERE>`;null===(l=o.securityHeaders)||void 0===l||l.push({name:"Authorization",value:`${capitalizeFirst(c.scheme||"bearer")} ${t}`})}}}return o}function getOAuth2PasswordCallHar(e,t,a){return{method:"POST",url:e.tokenUrl,httpVersion:"HTTP/1.1",headers:[{name:"Content-Type",value:MediaTypes.URL_ENCODED},{name:"Accept",value:MediaTypes.JSON}],queryString:[],postData:{mimeType:MediaTypes.URL_ENCODED,text:"",params:[{name:"grant_type",value:"password"},{name:"client_id",value:a.client_id||"YOUR_CLIENT_ID"},{name:"client_secret",value:a.client_secret||"YOUR_CLIENT_SECRET"},{name:"username",value:a.username||"<username>"},{name:"password",value:a.password||"<password>"},t.length?{name:"scope",value:t.join(" ")}:void 0].filter(isDefined)},cookies:[],headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:[]}}function getOAuth2ClientCredsCallHar(e,t,a){return{method:"POST",url:e.tokenUrl,httpVersion:"HTTP/1.1",headers:[{name:"Content-Type",value:MediaTypes.URL_ENCODED},{name:"Accept",value:MediaTypes.JSON}],queryString:[],postData:{mimeType:MediaTypes.URL_ENCODED,text:"",params:[{name:"grant_type",value:"client_credentials"},{name:"client_id",value:a.client_id||"YOUR_CLIENT_ID"},{name:"client_secret",value:a.client_secret||"YOUR_CLIENT_SECRET"},t.length?{name:"scope",value:t.join(" ")}:void 0].filter(isDefined)},cookies:[],headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:[]}}export function getDataRequest(e,t){if(e){if(isObject(e))return Object.keys(e).length>0&&0===Object.keys(t).length?e:merge(e,t,{arrayMerge:arrayMergeStrategy});try{return merge(JSON.parse(e),t,{arrayMerge:arrayMergeStrategy})}catch(e){return!1}}return!1}function objectToHarParams(e,t=""){const a=[];for(const[r,i]of Object.entries(e)){const s=t?`${t}[${r}]`:r;if("object"==typeof i&&null!==i)a.push(...objectToHarParams(i,s));else{const r=Array.isArray(e)&&"string"==typeof i&&t?t:s;a.push({name:r,value:String(i)})}}return a}export function isDefined(e){return void 0!==e}export function capitalizeFirst(e){return e.charAt(0).toUpperCase()+e.slice(1)}function populateXmlSchemaFields(e,t){if(!e||"object"!=typeof e||!t||"object"!=typeof t)return e;const a=JSON.parse(JSON.stringify(e));return function e(t,a){if(t&&a&&"object"==typeof t&&"object"==typeof a&&t.properties)for(const r in t.properties)if(void 0!==a[r]){const i=t.properties[r],s=a[r];if("object"!==i.type||"object"!=typeof s||Array.isArray(s))if("array"===i.type&&Array.isArray(s)&&s.length>0){const t=s[0];i.items&&i.items.properties&&e(i.items,t)}else i.example=s;else e(i,s)}}(a,t),a}
|
|
2
2
|
//# sourceMappingURL=generator.js.map
|
|
@@ -47,6 +47,9 @@ export interface OpenAPIServer extends ParsedDescription {
|
|
|
47
47
|
description?: string;
|
|
48
48
|
variables?: OpenAPIServerVariables;
|
|
49
49
|
}
|
|
50
|
+
export type OpenAPIServerWithVariables = Omit<OpenAPIServer, 'url'> & {
|
|
51
|
+
url: string | Record<string, unknown>;
|
|
52
|
+
};
|
|
50
53
|
export interface OpenAPIServerVariables {
|
|
51
54
|
[name: string]: OpenAPIServerVariable;
|
|
52
55
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { OperationModel, SecurityCredentials, FieldModel } from '../models/types';
|
|
2
|
+
import type { ConfigureRequestValues, ConfigureServerRequestValues, SecurityDetails } from '@redocly/theme';
|
|
3
|
+
export declare function updateOperationWithRequestValues(operation: OperationModel, userDefinedRequestValues: ConfigureRequestValues | ConfigureServerRequestValues): void;
|
|
4
|
+
export declare function updateParametersWithUserValues(param: FieldModel, userDefinedRequestValues?: ConfigureRequestValues | ConfigureServerRequestValues): void;
|
|
5
|
+
export declare function updateRequestBodyWithUserValues(operation: OperationModel, userDefinedRequestValues: ConfigureRequestValues, serverUrl?: string): OperationModel | undefined;
|
|
6
|
+
export declare function updateSecurityWithUserValues(operation: OperationModel, securityValues?: SecurityDetails, serverUrl?: string): void;
|
|
7
|
+
export declare function updateOperationWithServerUserValues(operation: OperationModel, serverRequestValues: ConfigureServerRequestValues): void;
|
|
8
|
+
export declare function updateEnvVariablesWithUserValues(operation: OperationModel, environmentValues?: Record<string, string>, serverUrl?: string): void;
|
|
9
|
+
export declare function isDirectRequestValues(value: any): value is ConfigureRequestValues;
|
|
10
|
+
export declare function updateObjectProperties(original: any, updates: any): any;
|
|
11
|
+
export declare function createSecurityUpdates(scheme: any, securityValues: SecurityDetails): SecurityCredentials;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{isObject}from"@redocly/theme";export function updateOperationWithRequestValues(e,t){if(0!==Object.keys(t).length)if(isDirectRequestValues(t))updateRequestBodyWithUserValues(e,t),updateSecurityWithUserValues(e,t.security),updateEnvVariablesWithUserValues(e,t.envVariables);else{updateOperationWithServerUserValues(e,t)}}export function updateParametersWithUserValues(e,t){var s;if(!t)return;const{in:r,name:a}=e;if(isDirectRequestValues(t)){const i=t,u={header:i.headers,query:i.query,path:i.path,cookie:i.cookie};r&&(null===(s=u[r])||void 0===s?void 0:s[a])&&(e.example=u[r][a])}else Object.entries(t).forEach((([t,s])=>{var i;const u=s;if(!u)return;const n={header:u.headers,query:u.query,path:u.path,cookie:u.cookie};r&&(null===(i=n[r])||void 0===i?void 0:i[a])&&(e.serverValues||(e.serverValues={}),e.serverValues[t]={example:n[r][a]})}))}export function updateRequestBodyWithUserValues(e,t,s){if(!e.requestBody||!(null==t?void 0:t.body))return;const r=e.requestBody.content;if(!(null==r?void 0:r.mediaTypes))return;const a=(e,r)=>{e[r]&&Object.keys(e[r]).forEach((a=>{var i,u;const n=null===(u=null===(i=e[r])||void 0===i?void 0:i[a])||void 0===u?void 0:u.value;let o;if(o=isObject(n)?updateObjectProperties(n,t.body):t.body,o)if(s){const t=e[r][a];t.serverValues||(t.serverValues={}),t.serverValues[s]={value:o,rawValue:o},e[r][a]=Object.assign(Object.assign({},t),{mime:e.name})}else e[r][a]={value:o,rawValue:o,mime:e.name}}))};for(const e of r.mediaTypes)a(e,"examples"),a(e,"formExamples");return e}export function updateSecurityWithUserValues(e,t,s){t&&e.security.length&&e.security.forEach((e=>{s?e.schemes.forEach((e=>{e.serverValues||(e.serverValues={});const r=createSecurityUpdates(e,t);e.serverValues[s]=r})):e.schemes.forEach((e=>{const s=createSecurityUpdates(e,t);Object.assign(e,s)}))}))}export function updateOperationWithServerUserValues(e,t){e.servers.forEach((s=>{if(t[s.url]){const r=t[s.url];r&&(updateRequestBodyWithUserValues(e,r,s.url),updateSecurityWithUserValues(e,r.security,s.url),updateEnvVariablesWithUserValues(e,r.envVariables,s.url))}}))}export function updateEnvVariablesWithUserValues(e,t,s){t&&0!==Object.keys(t).length&&(e.envVariables||(e.envVariables={}),s?(e.envVariables.serverValues||(e.envVariables.serverValues={}),e.envVariables.serverValues[s]=Object.assign(Object.assign({},e.envVariables.serverValues[s]),t)):e.envVariables.values=Object.assign(Object.assign({},e.envVariables.values),t))}export function isDirectRequestValues(e){return!(!e||"object"!=typeof e)&&("headers"in e||"body"in e||"query"in e||"path"in e||"cookie"in e||"security"in e||"envVariables"in e)}export function updateObjectProperties(e,t){if(!e||"object"!=typeof e)return t;if(Array.isArray(e)&&Array.isArray(t)){if(e.length>0&&"object"==typeof e[0]&&null!==e[0]){const s=Object.keys(e[0]),r=t.filter((e=>"object"==typeof e&&null!==e&&(s.some((t=>t in e))&&Object.keys(e).every((e=>s.includes(e))))));return r.length>0?r:e}return t}const s=Array.isArray(e)?[...e]:Object.assign({},e);for(const[r,a]of Object.entries(t))r in e&&(Array.isArray(e[r])||"object"==typeof a&&null!==a&&"object"==typeof e[r]?s[r]=updateObjectProperties(e[r],a):s[r]=a);return s}export function createSecurityUpdates(e,t){var s,r,a;const i={"x-defaultAccessToken":null===(s=t.token)||void 0===s?void 0:s.access_token,"x-defaultTokenType":(null===(r=t.token)||void 0===r?void 0:r.token_type)||"Bearer","x-defaultClientId":t.client_id,"x-defaultClientSecret":t.client_secret,scopes:t.scopes||e.scopes};return"http"===e.type&&"basic"===e.scheme?(i["x-defaultUsername"]=t.username,i["x-defaultPassword"]=t.password,delete i["x-defaultAccessToken"],delete i["x-defaultTokenType"]):"oauth2"!==e.type||(null===(a=t.token)||void 0===a?void 0:a.access_token)||(delete i["x-defaultAccessToken"],delete i["x-defaultTokenType"]),i}
|
|
2
|
+
//# sourceMappingURL=configure-helpers.js.map
|
package/lib-esm/utils/index.d.ts
CHANGED
package/lib-esm/utils/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export*from"./JsonPointer";export*from"./openapi";export*from"./helpers";export*from"./dom";export*from"./debug";export*from"./sort";export*from"./argValuesHelpers";export*from"./theme-helpers";export*from"./debounce";export*from"./security-details";export*from"./session-storage";export*from"./local-storage";export*from"./parameters";export*from"./string";export*from"./test-utils";export*from"./compose";export*from"./saveTextBeforeHeading";export*from"./path";export*from"./queryString";export*from"./isMobile";export*from"./replaceVariables";export*from"./areArraysEqual";
|
|
1
|
+
export*from"./JsonPointer";export*from"./openapi";export*from"./helpers";export*from"./dom";export*from"./debug";export*from"./sort";export*from"./argValuesHelpers";export*from"./theme-helpers";export*from"./debounce";export*from"./security-details";export*from"./session-storage";export*from"./local-storage";export*from"./parameters";export*from"./string";export*from"./test-utils";export*from"./compose";export*from"./saveTextBeforeHeading";export*from"./path";export*from"./queryString";export*from"./isMobile";export*from"./replaceVariables";export*from"./areArraysEqual";export*from"./configure-helpers";
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/lib-esm/utils/openapi.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{dirname}from"path";import UrlTemplate from"url-template";import{IS_BROWSER}from"@redocly/theme";import{deleteEmptyArrayItem,isArrayOfObjects,isNumeric,removeQueryStringAndHash,resolveUrl,sanitizeItemId,normalizeText,getValueFromMdParsedExtension}from"./helpers";import{DEFAULT_TAG_SLUG,MediaTypes}from"../constants";import{JsonPointer}from"./JsonPointer";import{joinWithSeparator}from"../services";import{tryDecodeURIComponent}from"./string";function isWildcardStatusCode(e){return"string"==typeof e&&/\dxx/i.test(e)}export function isStatusCode(e){return"default"===e||isNumeric(e)||isWildcardStatusCode(e)}export function getStatusCodeType(e,r=!1){if("default"===e)return r?"error":"success";let t="string"==typeof e?parseInt(e,10):e;if(isWildcardStatusCode(e)&&(t*=100),t<100||t>599)throw new Error("invalid HTTP code");let i="success";return t>=300&&t<400?i="redirect":t>=400?i="error":t<200&&(i="info"),i}const operationNames={get:!0,post:!0,put:!0,head:!0,patch:!0,delete:!0,options:!0,$ref:!0};export function isOperationName(e){return e in operationNames}export function getOperationName(e){const{operationId:r,pathName:t}=e,i=normalizeText(getValueFromMdParsedExtension(e,"description"));return normalizeText(getValueFromMdParsedExtension(e,"summary"))||r||i&&i.substring(0,50)||t||"<no summary>"}export function getOperationId(e,r){var t;return(null==r?void 0:r.id)?joinWithSeparator(r.id,sanitizeItemId(e.operationId?e.operationId:pointerToId(e.pointer))).toLowerCase():(null===(t=e.tags)||void 0===t?void 0:t.length)?sanitizeItemId(e.operationId?e.operationId:pointerToId(e.pointer)):sanitizeItemId(e.operationId?joinWithSeparator(DEFAULT_TAG_SLUG,e.operationId):pointerToId(e.pointer))}function pointerToId(e){return(null==e?void 0:e.startsWith("/"))?e.slice(1,e.length):e}const schemaKeywordTypes={multipleOf:"number",maximum:"number",exclusiveMaximum:"number",minimum:"number",exclusiveMinimum:"number",maxLength:"string",minLength:"string",pattern:"string",contentEncoding:"string",contentMediaType:"string",items:"array",maxItems:"array",minItems:"array",uniqueItems:"array",maxProperties:"object",minProperties:"object",required:"object",additionalProperties:"object",unevaluatedProperties:"object",patternProperties:"object",properties:"object"};export function detectType(e){if(void 0!==e.type&&!Array.isArray(e.type))return e.type;const r=Object.keys(schemaKeywordTypes);for(const t of r){const r=schemaKeywordTypes[t];if(void 0!==e[t])return r}return"any"}export function isPrimitiveType(e,r=e.type){if(e["x-circular-ref"])return!0;if(e["x-complex"])return!0;if(void 0!==e.oneOf||void 0!==e.anyOf)return!1;if(e.if&&e.then||e.if&&e.else)return!1;let t=!0;const i=Array.isArray(r);return("object"===r||i&&(null==r?void 0:r.includes("object")))&&(t=void 0!==e.properties?0===Object.keys(e.properties).length:void 0===e.additionalProperties&&void 0===e.unevaluatedProperties&&void 0===e.patternProperties),!Array.isArray(e.items)&&!Array.isArray(e.prefixItems)&&(void 0!==e.items&&"boolean"!=typeof e.items&&("array"===r||i&&(null==r?void 0:r.includes("array")))&&(t=isPrimitiveType(e.items,e.items.type)),t)}export function isJsonLike(e){return-1!==e.search(/json/i)}export function isXmlLike(e){return-1!==(null==e?void 0:e.search(/xml/i))}export function isFormUrlEncoded(e){return e===MediaTypes.URL_ENCODED}export function isMultipartFormData(e){return e===MediaTypes.MULTIPART}function delimitedEncodeField(e,r,t){return Array.isArray(e)?e.map((e=>e.toString())).join(t):"object"==typeof e?Object.keys(e).map((r=>`${r}${t}${e[r]}`)).join(t):r+"="+e.toString()}function deepObjectEncodeField(e,r){return Array.isArray(e)?(console.warn("deepObject style cannot be used with array value:"+e.toString()),""):"object"==typeof e?Object.keys(e).map((t=>e[t]?`${r}[${t}]=${e[t]}`:void 0)).filter(Boolean).join("&"):(console.warn("deepObject style cannot be used with non-object value:"+e.toString()),"")}function serializeFormValue(e,r,t){const i="__redoc_param_name__",n=r?"*":"";return UrlTemplate.parse(`{?${i}${n}}`).expand({[i]:t}).substring(1).replace(/__redoc_param_name__/g,e)}function serializeSimpleValue(e,r){const t=e?"*":"",i="__redoc_param_name__",n=UrlTemplate.parse(`{${i}${t}}`);return tryDecodeURIComponent(n.expand({[i]:r}))}export function urlFormEncodePayload(e,r={}){if(Array.isArray(e))throw new Error("Payload must have fields: "+e.toString());return Object.keys(e).map((t=>{const i=e[t],{style:n="form",explode:o=!0}=r[t]||{};switch(n){case"form":return serializeFormValue(t,o,i);case"spaceDelimited":return delimitedEncodeField(i,t,"%20");case"pipeDelimited":return delimitedEncodeField(i,t,"|");case"deepObject":return deepObjectEncodeField(i,t);default:return console.warn("Incorrect or unsupported encoding style: "+n),""}})).join("&")}function serializePathParameter(e,r,t,i){const n=t?"*":"";let o="";"label"===r?o=".":"matrix"===r&&(o=";");const a="__redoc_param_name__";return UrlTemplate.parse(`{${o}${a}${n}}`).expand({[a]:i}).replace(/__redoc_param_name__/g,e)}export function serializeQueryParameter(e,r,t,i){const n=n=>{switch(r){case"form":return serializeFormValue(e,t,n);case"spaceDelimited":return Array.isArray(n)||"object"==typeof n?t?serializeFormValue(e,t,n):delimitedEncodeField(i,e,"%20"):(console.warn("The style spaceDelimited is applicable to arrays or objects"),"");case"pipeDelimited":return Array.isArray(n)||"object"==typeof n?t?serializeFormValue(e,t,n):delimitedEncodeField(i,e,"|"):(console.warn("The style pipeDelimited is applicable to arrays or objects"),"");case"deepObject":return!t||Array.isArray(n)||"object"!=typeof n?(console.warn("The style deepObject is only applicable for objects with explode=true"),""):deepObjectEncodeField(n,e);case"simple":return serializeSimpleValue(t,i);default:return console.warn("Unexpected style for query: "+r),""}};return isArrayOfObjects(i)&&(i=deleteEmptyArrayItem(i).map((e=>n(e)))),n(i)}function serializeHeaderParameter(e,r,t){return"simple"===e?serializeSimpleValue(r,t):(console.warn("Unexpected style for header: "+e),"")}function serializeCookieParameter(e,r,t,i){return"form"===r?serializeFormValue(e,t,i):(console.warn("Unexpected style for cookie: "+r),"")}export function serializeParameterValueWithMime(e,r){return isJsonLike(r)?JSON.stringify(e):(console.warn(`Parameter serialization as ${r} is not supported`),"")}export function serializeParameterValue(e,r){const{name:t,style:i,explode:n=!1,serializationMime:o}=e;if(o)switch(e.in){case"path":case"header":return serializeParameterValueWithMime(r,o);case"cookie":case"query":return`${t}=${serializeParameterValueWithMime(r,o)}`;default:return console.warn("Unexpected parameter location: "+e.in),""}if(!i)return console.warn(`Missing style attribute or content for parameter ${t}`),"";switch(e.in){case"path":return serializePathParameter(t,i,n,r);case"query":return serializeQueryParameter(t,i,n,r);case"header":return serializeHeaderParameter(i,n,r);case"cookie":return serializeCookieParameter(t,i,n,r);default:return console.warn("Unexpected parameter location: "+e.in),""}}export function langFromMime(e){return-1!==e.search(/xml/i)?"xml":"clike"}const DEFINITION_NAME_REGEX=/^#\/components\/(schemas|pathItems)\/([^/]+)$/;export function isNamedDefinition(e){return DEFINITION_NAME_REGEX.test(e||"")}export function getDefinitionName(e){var r;return null===(r=null==e?void 0:e.match(DEFINITION_NAME_REGEX))||void 0===r?void 0:r.pop()}function humanizeMultipleOfConstraint(e){if(void 0===e)return;const r=e.toString(10);return/^0\.0*1$/.test(r)?`decimal places <= ${r.split(".")[1].length}`:`multiple of ${r}`}function humanizeRangeConstraint(e,r,t){let i;return void 0!==r&&void 0!==t?i=r===t?`= ${r} ${e}`:`[ ${r} .. ${t} ] ${e}`:void 0!==t?i=`<= ${t} ${e}`:void 0!==r&&(i=1===r?"non-empty":`>= ${r} ${e}`),i}export function humanizeNumberRange(e){var r,t;const i="number"==typeof e.exclusiveMinimum?Math.min(e.exclusiveMinimum,null!==(r=e.minimum)&&void 0!==r?r:1/0):e.minimum,n="number"==typeof e.exclusiveMaximum?Math.max(e.exclusiveMaximum,null!==(t=e.maximum)&&void 0!==t?t:-1/0):e.maximum,o="number"==typeof e.exclusiveMinimum||e.exclusiveMinimum,a="number"==typeof e.exclusiveMaximum||e.exclusiveMaximum;return void 0!==i&&void 0!==n?`${o?"( ":"[ "}${i} .. ${n}${a?" )":" ]"}`:void 0!==n?`${a?"< ":"<= "}${n}`:void 0!==i?`${o?"> ":">= "}${i}`:void 0}export function humanizeConstraints(e){const r=[],t=humanizeRangeConstraint("characters",e.minLength,e.maxLength);void 0!==t&&r.push(t);const i=humanizeRangeConstraint("items",e.minItems,e.maxItems);void 0!==i&&r.push(i);const n=humanizeRangeConstraint(1===e.minProperties&&1===e.maxProperties?"property":"properties",e.minProperties,e.maxProperties);void 0!==n&&r.push(n);const o=humanizeMultipleOfConstraint(e.multipleOf);void 0!==o&&r.push(o);const a=humanizeNumberRange(e);return void 0!==a&&r.push(a),e.uniqueItems&&r.push("unique"),r}export function sortByRequired(e,r=[]){const t=[],i=[],n=[];return e.forEach((e=>{e.required?r.includes(e.name)?i.push(e):n.push(e):t.push(e)})),i.sort(((e,t)=>r.indexOf(e.name)-r.indexOf(t.name))),[...i,...n,...t]}export function sortByDeprecated(e){return e.sort(((e,r)=>Number(e.deprecated)-Number(r.deprecated)))}export function mergeParams(e,r=[],t=[],{pathPointer:i,operationPointer:n}){const o={};t.forEach((r=>{({resolved:r}=e.deref(r)),o[r.name+"_"+r.in]=!0}));return[...r.map(((e,r)=>({paramOrRef:e,pointer:JsonPointer.join(i,["parameters",String(r)])}))).filter((({paramOrRef:r})=>(({resolved:r}=e.deref(r)),!o[r.name+"_"+r.in]))),...t.map(((e,r)=>({paramOrRef:e,pointer:JsonPointer.join(n,["parameters",String(r)])})))]}export function normalizeServers(e,r){const t=void 0===e?removeQueryStringAndHash((()=>{if(!IS_BROWSER)return globalThis.SSR_HOSTNAME||"";const e=window.location.href;return e.endsWith(".html")?dirname(e):e})()):dirname(e);return 0===r.length&&(r=[{url:"/"}]),r.map((e=>{return Object.assign(Object.assign({},e),{url:(r=e.url,resolveUrl(t,r)),description:e.description||""});var r}))}export const shortenHTTPVerb=e=>({delete:"del",options:"opts"}[e]||e);export function isRedocExtension(e){return e in{"x-circular-ref":!0,"x-complex":!0,"x-parentRefs":!0,"x-refsStack":!0,"x-codeSamples":!0,"x-displayName":!0,"x-examples":!0,"x-logo":!0,"x-nullable":!0,"x-servers":!0,"x-tagGroups":!0,"x-traitTag":!0,"x-additionalPropertiesName":!0,"x-explicitMappingOnly":!0,"x-enumDescriptions":!0,"x-hideReplay":!0,"x-feedback":!0,"x-badges":!0,"x-assertionType":!0,"x-rbac":!0}||e.startsWith("x-parsed-md-")}export function extractExtensions(e,r){return Object.keys(e).filter((e=>!0===r?e.startsWith("x-")&&!isRedocExtension(e):e.startsWith("x-")&&r.indexOf(e)>-1)).reduce(((r,t)=>(r[t]=e[t],r)),{})}export function pluralizeType(e){return e.split(" or ").map((e=>e.replace(/^(string|object|number|integer|array|boolean)s?( ?.*)/,"$1s$2"))).join(" or ")}export function getContentWithLegacyExamples(e){let r=e.content;const t=e["x-examples"],i=e["x-example"];if(t){r=Object.assign({},r);for(const e of Object.keys(t)){const i=t[e];r[e]=Object.assign(Object.assign({},r[e]),{examples:i})}}else if(i){r=Object.assign({},r);for(const e of Object.keys(i)){const t=i[e];r[e]=Object.assign(Object.assign({},r[e]),{example:t})}}return r}
|
|
1
|
+
import{dirname}from"path";import UrlTemplate from"url-template";import{IS_BROWSER}from"@redocly/theme";import{deleteEmptyArrayItem,isArrayOfObjects,isNumeric,removeQueryStringAndHash,resolveUrl,sanitizeItemId,normalizeText,getValueFromMdParsedExtension}from"./helpers";import{DEFAULT_TAG_SLUG,MediaTypes}from"../constants";import{JsonPointer}from"./JsonPointer";import{joinWithSeparator}from"../services";import{tryDecodeURIComponent}from"./string";import{replaceVariables}from"./replaceVariables";function isWildcardStatusCode(e){return"string"==typeof e&&/\dxx/i.test(e)}export function isStatusCode(e){return"default"===e||isNumeric(e)||isWildcardStatusCode(e)}export function getStatusCodeType(e,r=!1){if("default"===e)return r?"error":"success";let t="string"==typeof e?parseInt(e,10):e;if(isWildcardStatusCode(e)&&(t*=100),t<100||t>599)throw new Error("invalid HTTP code");let i="success";return t>=300&&t<400?i="redirect":t>=400?i="error":t<200&&(i="info"),i}const operationNames={get:!0,post:!0,put:!0,head:!0,patch:!0,delete:!0,options:!0,$ref:!0};export function isOperationName(e){return e in operationNames}export function getOperationName(e){const{operationId:r,pathName:t}=e,i=normalizeText(getValueFromMdParsedExtension(e,"description"));return normalizeText(getValueFromMdParsedExtension(e,"summary"))||r||i&&i.substring(0,50)||t||"<no summary>"}export function getOperationId(e,r){var t;return(null==r?void 0:r.id)?joinWithSeparator(r.id,sanitizeItemId(e.operationId?e.operationId:pointerToId(e.pointer))).toLowerCase():(null===(t=e.tags)||void 0===t?void 0:t.length)?sanitizeItemId(e.operationId?e.operationId:pointerToId(e.pointer)):sanitizeItemId(e.operationId?joinWithSeparator(DEFAULT_TAG_SLUG,e.operationId):pointerToId(e.pointer))}function pointerToId(e){return(null==e?void 0:e.startsWith("/"))?e.slice(1,e.length):e}const schemaKeywordTypes={multipleOf:"number",maximum:"number",exclusiveMaximum:"number",minimum:"number",exclusiveMinimum:"number",maxLength:"string",minLength:"string",pattern:"string",contentEncoding:"string",contentMediaType:"string",items:"array",maxItems:"array",minItems:"array",uniqueItems:"array",maxProperties:"object",minProperties:"object",required:"object",additionalProperties:"object",unevaluatedProperties:"object",patternProperties:"object",properties:"object"};export function detectType(e){if(void 0!==e.type&&!Array.isArray(e.type))return e.type;const r=Object.keys(schemaKeywordTypes);for(const t of r){const r=schemaKeywordTypes[t];if(void 0!==e[t])return r}return"any"}export function isPrimitiveType(e,r=e.type){if(e["x-circular-ref"])return!0;if(e["x-complex"])return!0;if(void 0!==e.oneOf||void 0!==e.anyOf)return!1;if(e.if&&e.then||e.if&&e.else)return!1;let t=!0;const i=Array.isArray(r);return("object"===r||i&&(null==r?void 0:r.includes("object")))&&(t=void 0!==e.properties?0===Object.keys(e.properties).length:void 0===e.additionalProperties&&void 0===e.unevaluatedProperties&&void 0===e.patternProperties),!Array.isArray(e.items)&&!Array.isArray(e.prefixItems)&&(void 0!==e.items&&"boolean"!=typeof e.items&&("array"===r||i&&(null==r?void 0:r.includes("array")))&&(t=isPrimitiveType(e.items,e.items.type)),t)}export function isJsonLike(e){return-1!==e.search(/json/i)}export function isXmlLike(e){return-1!==(null==e?void 0:e.search(/xml/i))}export function isFormUrlEncoded(e){return e===MediaTypes.URL_ENCODED}export function isMultipartFormData(e){return e===MediaTypes.MULTIPART}function delimitedEncodeField(e,r,t){return Array.isArray(e)?e.map((e=>e.toString())).join(t):"object"==typeof e?Object.keys(e).map((r=>`${r}${t}${e[r]}`)).join(t):r+"="+e.toString()}function deepObjectEncodeField(e,r){return Array.isArray(e)?(console.warn("deepObject style cannot be used with array value:"+e.toString()),""):"object"==typeof e?Object.keys(e).map((t=>e[t]?`${r}[${t}]=${e[t]}`:void 0)).filter(Boolean).join("&"):(console.warn("deepObject style cannot be used with non-object value:"+e.toString()),"")}function serializeFormValue(e,r,t){const i="__redoc_param_name__",n=r?"*":"";return UrlTemplate.parse(`{?${i}${n}}`).expand({[i]:t}).substring(1).replace(/__redoc_param_name__/g,e)}function serializeSimpleValue(e,r){const t=e?"*":"",i="__redoc_param_name__",n=UrlTemplate.parse(`{${i}${t}}`);return tryDecodeURIComponent(n.expand({[i]:r}))}export function urlFormEncodePayload(e,r={}){if(Array.isArray(e))throw new Error("Payload must have fields: "+e.toString());return Object.keys(e).map((t=>{const i=e[t],{style:n="form",explode:o=!0}=r[t]||{};switch(n){case"form":return serializeFormValue(t,o,i);case"spaceDelimited":return delimitedEncodeField(i,t,"%20");case"pipeDelimited":return delimitedEncodeField(i,t,"|");case"deepObject":return deepObjectEncodeField(i,t);default:return console.warn("Incorrect or unsupported encoding style: "+n),""}})).join("&")}function serializePathParameter(e,r,t,i){const n=t?"*":"";let o="";"label"===r?o=".":"matrix"===r&&(o=";");const a="__redoc_param_name__";return UrlTemplate.parse(`{${o}${a}${n}}`).expand({[a]:i}).replace(/__redoc_param_name__/g,e)}export function serializeQueryParameter(e,r,t,i){const n=n=>{switch(r){case"form":return serializeFormValue(e,t,n);case"spaceDelimited":return Array.isArray(n)||"object"==typeof n?t?serializeFormValue(e,t,n):delimitedEncodeField(i,e,"%20"):(console.warn("The style spaceDelimited is applicable to arrays or objects"),"");case"pipeDelimited":return Array.isArray(n)||"object"==typeof n?t?serializeFormValue(e,t,n):delimitedEncodeField(i,e,"|"):(console.warn("The style pipeDelimited is applicable to arrays or objects"),"");case"deepObject":return!t||Array.isArray(n)||"object"!=typeof n?(console.warn("The style deepObject is only applicable for objects with explode=true"),""):deepObjectEncodeField(n,e);case"simple":return serializeSimpleValue(t,i);default:return console.warn("Unexpected style for query: "+r),""}};return isArrayOfObjects(i)&&(i=deleteEmptyArrayItem(i).map((e=>n(e)))),n(i)}function serializeHeaderParameter(e,r,t){return"simple"===e?serializeSimpleValue(r,t):(console.warn("Unexpected style for header: "+e),"")}function serializeCookieParameter(e,r,t,i){return"form"===r?serializeFormValue(e,t,i):(console.warn("Unexpected style for cookie: "+r),"")}export function serializeParameterValueWithMime(e,r){return isJsonLike(r)?JSON.stringify(e):(console.warn(`Parameter serialization as ${r} is not supported`),"")}export function serializeParameterValue(e,r){const{name:t,style:i,explode:n=!1,serializationMime:o}=e;if(o)switch(e.in){case"path":case"header":return serializeParameterValueWithMime(r,o);case"cookie":case"query":return`${t}=${serializeParameterValueWithMime(r,o)}`;default:return console.warn("Unexpected parameter location: "+e.in),""}if(!i)return console.warn(`Missing style attribute or content for parameter ${t}`),"";switch(e.in){case"path":return serializePathParameter(t,i,n,r);case"query":return serializeQueryParameter(t,i,n,r);case"header":return serializeHeaderParameter(i,n,r);case"cookie":return serializeCookieParameter(t,i,n,r);default:return console.warn("Unexpected parameter location: "+e.in),""}}export function langFromMime(e){return-1!==e.search(/xml/i)?"xml":"clike"}const DEFINITION_NAME_REGEX=/^#\/components\/(schemas|pathItems)\/([^/]+)$/;export function isNamedDefinition(e){return DEFINITION_NAME_REGEX.test(e||"")}export function getDefinitionName(e){var r;return null===(r=null==e?void 0:e.match(DEFINITION_NAME_REGEX))||void 0===r?void 0:r.pop()}function humanizeMultipleOfConstraint(e){if(void 0===e)return;const r=e.toString(10);return/^0\.0*1$/.test(r)?`decimal places <= ${r.split(".")[1].length}`:`multiple of ${r}`}function humanizeRangeConstraint(e,r,t){let i;return void 0!==r&&void 0!==t?i=r===t?`= ${r} ${e}`:`[ ${r} .. ${t} ] ${e}`:void 0!==t?i=`<= ${t} ${e}`:void 0!==r&&(i=1===r?"non-empty":`>= ${r} ${e}`),i}export function humanizeNumberRange(e){var r,t;const i="number"==typeof e.exclusiveMinimum?Math.min(e.exclusiveMinimum,null!==(r=e.minimum)&&void 0!==r?r:1/0):e.minimum,n="number"==typeof e.exclusiveMaximum?Math.max(e.exclusiveMaximum,null!==(t=e.maximum)&&void 0!==t?t:-1/0):e.maximum,o="number"==typeof e.exclusiveMinimum||e.exclusiveMinimum,a="number"==typeof e.exclusiveMaximum||e.exclusiveMaximum;return void 0!==i&&void 0!==n?`${o?"( ":"[ "}${i} .. ${n}${a?" )":" ]"}`:void 0!==n?`${a?"< ":"<= "}${n}`:void 0!==i?`${o?"> ":">= "}${i}`:void 0}export function humanizeConstraints(e){const r=[],t=humanizeRangeConstraint("characters",e.minLength,e.maxLength);void 0!==t&&r.push(t);const i=humanizeRangeConstraint("items",e.minItems,e.maxItems);void 0!==i&&r.push(i);const n=humanizeRangeConstraint(1===e.minProperties&&1===e.maxProperties?"property":"properties",e.minProperties,e.maxProperties);void 0!==n&&r.push(n);const o=humanizeMultipleOfConstraint(e.multipleOf);void 0!==o&&r.push(o);const a=humanizeNumberRange(e);return void 0!==a&&r.push(a),e.uniqueItems&&r.push("unique"),r}export function sortByRequired(e,r=[]){const t=[],i=[],n=[];return e.forEach((e=>{e.required?r.includes(e.name)?i.push(e):n.push(e):t.push(e)})),i.sort(((e,t)=>r.indexOf(e.name)-r.indexOf(t.name))),[...i,...n,...t]}export function sortByDeprecated(e){return e.sort(((e,r)=>Number(e.deprecated)-Number(r.deprecated)))}export function mergeParams(e,r=[],t=[],{pathPointer:i,operationPointer:n}){const o={};t.forEach((r=>{({resolved:r}=e.deref(r)),o[r.name+"_"+r.in]=!0}));return[...r.map(((e,r)=>({paramOrRef:e,pointer:JsonPointer.join(i,["parameters",String(r)])}))).filter((({paramOrRef:r})=>(({resolved:r}=e.deref(r)),!o[r.name+"_"+r.in]))),...t.map(((e,r)=>({paramOrRef:e,pointer:JsonPointer.join(n,["parameters",String(r)])})))]}export function normalizeServers(e,r){const t=void 0===e?removeQueryStringAndHash((()=>{if(!IS_BROWSER)return globalThis.SSR_HOSTNAME||"";const e=window.location.href;return e.endsWith(".html")?dirname(e):e})()):dirname(e);return 0===r.length&&(r=[{url:"/"}]),r.map((e=>{const r=replaceVariables(e);return Object.assign(Object.assign({},e),{url:(i=r,resolveUrl(t,i)),description:e.description||""});var i}))}export const shortenHTTPVerb=e=>({delete:"del",options:"opts"}[e]||e);export function isRedocExtension(e){return e in{"x-circular-ref":!0,"x-complex":!0,"x-parentRefs":!0,"x-refsStack":!0,"x-codeSamples":!0,"x-displayName":!0,"x-examples":!0,"x-logo":!0,"x-nullable":!0,"x-servers":!0,"x-tagGroups":!0,"x-traitTag":!0,"x-additionalPropertiesName":!0,"x-explicitMappingOnly":!0,"x-enumDescriptions":!0,"x-hideReplay":!0,"x-feedback":!0,"x-badges":!0,"x-assertionType":!0,"x-rbac":!0}||e.startsWith("x-parsed-md-")}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
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare function replaceVariables(server:
|
|
1
|
+
import type { OpenAPIServerWithVariables } from '../types';
|
|
2
|
+
export declare function replaceVariables(server: OpenAPIServerWithVariables): string;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
function resolveStringUrl(r,e){return e?r.replace(/\{([^}]+)\}/g,((r,l)=>{var n,t;return null!==(t=null===(n=e[l])||void 0===n?void 0:n.default)&&void 0!==t?t:`{${l}}`})):r}function resolveObjectUrl(r,e){var l,n;const[t]=Object.keys(r);return null!==(n=null===(l=null==e?void 0:e[t])||void 0===l?void 0:l.default)&&void 0!==n?n:""}export function replaceVariables(r){const{url:e,variables:l}=r;return"string"==typeof e?resolveStringUrl(e,l):resolveObjectUrl(e,l)}
|
|
2
2
|
//# sourceMappingURL=replaceVariables.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@redocly/openapi-docs",
|
|
3
|
-
"version": "3.10.0-next.
|
|
3
|
+
"version": "3.10.0-next.5",
|
|
4
4
|
"description": "Redocly OpenAPI Docs",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "lib-esm/index.js",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"util": "~0.12.5",
|
|
47
47
|
"web-vitals": "3.3.1",
|
|
48
48
|
"@redocly/config": "0.24.1",
|
|
49
|
-
"@redocly/replay": "0.13.0-next.
|
|
49
|
+
"@redocly/replay": "0.13.0-next.4"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@shikijs/transformers": "1.24.0",
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
"webpack": "5.94.0",
|
|
93
93
|
"webpack-cli": "5.1.4",
|
|
94
94
|
"webpack-dev-server": "5.1.0",
|
|
95
|
-
"@redocly/theme": "0.54.0-next.
|
|
95
|
+
"@redocly/theme": "0.54.0-next.4"
|
|
96
96
|
},
|
|
97
97
|
"scripts": {
|
|
98
98
|
"start": "npm run copy-highlight-hook && webpack serve --mode=development --hot",
|