@redocly/openapi-docs 3.10.0-next.4 → 3.10.0-next.6
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 +1607 -1584
- package/lib/components/ContentItems/useScrollOnRender.d.ts +1 -1
- package/lib/components/Download/DownloadSpecification.js +1 -1
- package/lib/components/RedoclyOpenAPIDocs/utils.js +1 -1
- 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/common/Fields/fields.d.ts +1 -1
- package/lib/icons/CurlIcon/CurlIcon.d.ts +5 -3
- package/lib/icons/CurlIcon/CurlIcon.js +14 -1
- package/lib/models/operation.js +1 -1
- package/lib/models/schema.js +1 -1
- package/lib/models/types.d.ts +29 -7
- package/lib/services/code-samples/generator.js +1 -1
- 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-esm/components/ContentItems/useScrollOnRender.d.ts +1 -1
- package/lib-esm/components/Download/DownloadSpecification.js +1 -1
- package/lib-esm/components/RedoclyOpenAPIDocs/utils.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/common/Fields/fields.d.ts +1 -1
- package/lib-esm/icons/CurlIcon/CurlIcon.d.ts +5 -3
- package/lib-esm/icons/CurlIcon/CurlIcon.js +14 -1
- package/lib-esm/models/operation.js +1 -1
- package/lib-esm/models/schema.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/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/package.json +13 -13
package/lib-esm/models/schema.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var __rest=this&&this.__rest||function(e,
|
|
1
|
+
var __rest=this&&this.__rest||function(e,t){var i={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(i[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(r=Object.getOwnPropertySymbols(e);n<r.length;n++)t.indexOf(r[n])<0&&Object.prototype.propertyIsEnumerable.call(e,r[n])&&(i[r[n]]=e[r[n]])}return i};import{isObject}from"@redocly/theme";import{REDOCLY_TEAMS_RBAC}from"@redocly/config";import{pushRef}from"../services/OpenAPIParser";import{detectType,extractExtensions,getValueFromMdParsedExtension,humanizeConstraints,isNamedDefinition,isPrimitiveType,JsonPointer,pluralizeType,sortByDeprecated,sortByRequired}from"../utils";import{getField}from"./field";export function getSchema({parser:e,schemaOrRef:t,pointer:i,options:r,isChild:n=!1,baseRefsStack:s=[],deps:o,absolutePointer:a}){var l,p,d,m,c,f,y,u,O;const{resolved:h,refsStack:v}=e.deref(t,s,!0),b=t.$ref||i||a||"",P=pushRef(v,b),g=e.mergeAllOf(h,b,P,t.$ref||a),x=g.type||detectType(g),A={operationPointer:(null===(l=o.operation)||void 0===l?void 0:l.pointer)||a||"",schemaOrRef:t,isChild:n,typePrefix:"",pointer:b,absolutePointer:a,refsStack:P,rawSchema:h,type:x,isCircular:!!g["x-circular-ref"],isComplex:!!g["x-complex"],title:g.title||isNamedDefinition(b)&&JsonPointer.baseName(b)||"",description:getValueFromMdParsedExtension(g,"description")||"",format:g.format,enum:g.enum||[],example:g.example,deprecated:!!g.deprecated,pattern:g.pattern,externalDocs:g.externalDocs,displayFormat:g.format,isPrimitive:isPrimitiveType(g,x),constraints:humanizeConstraints(g),default:g.default,readOnly:!!g.readOnly,writeOnly:!!g.writeOnly,const:g.const||"",contentEncoding:g.contentEncoding,contentMediaType:g.contentMediaType,minItems:g.minItems,maxItems:g.maxItems,nullable:g.nullable||g["x-nullable"],schema:g,displayType:"",items:void 0,extensions:void 0,oneOfType:"",discriminatorProp:void 0,oneOf:void 0,[REDOCLY_TEAMS_RBAC]:g[REDOCLY_TEAMS_RBAC],"x-enumDescriptions":getValueFromMdParsedExtension(g,"x-enumDescriptions"),get fields(){if(!A.isCircular&&!A.isComplex&&(hasType(A,"object")||hasType(A,"array")&&hasArrayItems(g)))return buildFields(e,g,b,r,P,o)}};if((g.nullable||g["x-nullable"])&&(Array.isArray(A.type)&&!A.type.some((e=>null===e||"null"===e))?A.type=[...A.type,"null"]:Array.isArray(A.type)||null===A.type&&"null"===A.type||(A.type=[A.type,"null"])),A.displayType=Array.isArray(A.type)?A.type.map((e=>null===e?"null":e)).join(" or "):A.type,A.isCircular)return A;if(g.if&&g.then||g.if&&g.else){const{oneOf:t,oneOfType:i}=initConditionalOperators({schema:g,parser:e,pointer:b,options:r,deps:o,refsStack:P});return A.oneOf=t,A.oneOfType=i,A}if(!n&&void 0!==getDiscriminator(g)){const{oneOf:t,discriminatorProp:i}=initDiscriminator({schema:g,parser:e,deps:o,mergedSchema:g,options:r,pointer:b,refsStack:P});return A.oneOf=t,A.discriminatorProp=i,A}if(n&&Array.isArray(g.oneOf)&&g.oneOf.find((e=>e.$ref===b))&&delete g.oneOf,void 0!==g.oneOf){const{oneOf:t,displayType:i}=initOneOf({schemaOneOf:g.oneOf,parser:e,deps:o,options:r,pointer:b,refsStack:P,schema:g});return A.oneOfType="One of",t&&(A.oneOf=t),A.displayType=i,void 0!==g.anyOf&&console.warn(`oneOf and anyOf are not supported on the same level. Skipping anyOf at ${b}`),A}if(void 0!==g.anyOf){const{oneOf:t,displayType:i}=initOneOf({schemaOneOf:g.anyOf,parser:e,deps:o,options:r,pointer:b,refsStack:P,schema:g});return t&&(A.oneOf=t),A.displayType=i,A.oneOfType="Any of",A}if(hasType(A,"array")&&(g.items&&!hasArrayItems(g)&&(A.items=getSchema({parser:e,schemaOrRef:g.items,pointer:b+"/items",options:r,baseRefsStack:P,deps:o,absolutePointer:JsonPointer.join(g.absolutePointer||"",["items"])})),A.displayType=g.prefixItems||Array.isArray(g.items)?"items":pluralizeType((null===(p=A.items)||void 0===p?void 0:p.displayType)||A.displayType),A.displayFormat=(null===(d=A.items)||void 0===d?void 0:d.format)||"",A.typePrefix=(null===(m=A.items)||void 0===m?void 0:m.typePrefix)||"Array of ",A.title=A.title||(null===(c=A.items)||void 0===c?void 0:c.title)||"",A.isPrimitive=void 0!==(null===(f=A.items)||void 0===f?void 0:f.isPrimitive)?null===(y=A.items)||void 0===y?void 0:y.isPrimitive:A.isPrimitive,void 0===A.example&&void 0!==(null===(u=A.items)||void 0===u?void 0:u.example)&&(A.example=[A.items.example]),(null===(O=A.items)||void 0===O?void 0:O.isPrimitive)&&(A.enum=A.items.enum,A["x-enumDescriptions"]=getValueFromMdParsedExtension(A.items,"x-enumDescriptions")),Array.isArray(A.type))){const e=A.type.filter((e=>"array"!==e));e.length&&(A.displayType+=` or ${e.join(" or ")}`)}return r.showExtensions&&(A.extensions=extractExtensions(g,r.showExtensions)),A}function initDiscriminator({schema:e,parser:t,pointer:i,options:r,refsStack:n,deps:s,mergedSchema:o}){const a=getDiscriminator(e),l=null==a?void 0:a.propertyName,p=t.findDerived([...o["x-parentRefs"]||[],i]);if(e.oneOf)for(const t of e.oneOf){if(void 0===t.$ref)continue;const e=JsonPointer.baseName(t.$ref);p[t.$ref]=e}const d=(null==a?void 0:a.mapping)||{};let m=(null==a?void 0:a["x-explicitMappingOnly"])||!1;0===Object.keys(d).length&&(m=!1);const c={};for(const e in d){const t=d[e];Array.isArray(c[t])?c[t].push(e):c[t]=[e]}const f=m?Object.assign({},c):Object.assign(Object.assign({},p),c);let y=[];for(const e of Object.keys(f)){const t=f[e];if(Array.isArray(t))for(const i of t)y.push({$ref:e,name:i});else y.push({$ref:e,name:t})}const u=Object.keys(d);0!==u.length&&(y=y.sort(((e,t)=>{const i=u.indexOf(e.name),r=u.indexOf(t.name);return i<0&&r<0?e.name.localeCompare(t.name):i<0?1:r<0?-1:i-r})));return{oneOf:y.map((({$ref:e,name:i},a)=>{const l=getSchema({parser:t,schemaOrRef:{$ref:e},pointer:e,options:r,isChild:!0,baseRefsStack:n.slice(0,-1),deps:Object.assign(Object.assign({},s),{parentFieldFullPath:s.parentFieldFullPath?s.parentFieldFullPath+"&d="+a:"&d="+a.toString()}),absolutePointer:o.absolutePointer});return l.title=i,l})),discriminatorProp:l}}function initOneOf({schemaOneOf:e,parser:t,refsStack:i,pointer:r,schema:n,options:s,deps:o}){const a=e.map(((e,a)=>{const{resolved:l,refsStack:p}=t.deref(e,i,!0),d=t.mergeAllOf(l,r+"/oneOf/"+a,p),m=isNamedDefinition(e.$ref)&&!d.title?JsonPointer.baseName(e.$ref):`${d.title||""}${d.const&&JSON.stringify(d.const)||""}`;return getSchema({parser:t,schemaOrRef:Object.assign(Object.assign({},d),{title:m,allOf:[Object.assign(Object.assign({},n),{oneOf:void 0,anyOf:void 0})],discriminator:l.allOf?void 0:d.discriminator}),pointer:e.$ref||r+"/oneOf/"+a,options:s,baseRefsStack:p,deps:Object.assign(Object.assign({},o),{parentFieldFullPath:o.parentFieldFullPath?o.parentFieldFullPath+"&oneOf="+a:"&oneOf="+a.toString()})})})),l=a.map((e=>{let t=e.typePrefix+(e.title?`${e.title} (${e.displayType})`:e.displayType);return t.indexOf(" or ")>-1&&(t=`(${t})`),t})).join(" or ");return{oneOf:a,displayType:l}}function initConditionalOperators({schema:e,parser:t,pointer:i,options:r,refsStack:n,deps:s}){const{if:o,else:a={},then:l={}}=e,p=__rest(e,["if","else","then"]);return{oneOf:[{allOf:[p,l,o],title:o&&o["x-displayName"]||(null==o?void 0:o.title)||"case 1"},{allOf:[p,a],title:a&&a["x-displayName"]||(null==a?void 0:a.title)||"case 2"}].map(((e,o)=>getSchema({parser:t,schemaOrRef:Object.assign({},e),pointer:i+"/oneOf/"+o,options:r,baseRefsStack:n,deps:Object.assign(Object.assign({},s),{parentFieldFullPath:s.parentFieldFullPath?s.parentFieldFullPath+"&oneOf="+o:"&oneOf="+o.toString()})}))),oneOfType:"One of"}}function normalizeField(e,t,i){return e||(console.warn(`Field "${t}" is invalid, skipping.\n Field must be an object but got ${typeof e} at "${i}"`),{})}function buildFields(e,t,i,r,n,s){let o=t.properties||(hasType(t,"array")?t.prefixItems||t.items:void 0)||{};const a=t.patternProperties||{},l=t.additionalProperties||t.unevaluatedProperties,p=t.prefixItems?t.items:t.additionalItems,d=t.default||{};let m=Object.keys(o).map((a=>{var l;const p=normalizeField(o[a],a,i),m=void 0!==t.required&&t.required.indexOf(a)>-1;return getField(e,{name:t.properties?a:`[${a}]`,required:m,schema:Object.assign(Object.assign({},p),{example:(null===(l=t.example)||void 0===l?void 0:l[a])||p.example,default:void 0===p.default&&d?d[a]:p.default})},i+"/properties/"+a,r,s,n,JsonPointer.join(t.absolutePointer||"",["properties",a]))}));return r.sortRequiredPropsFirst&&(m=sortByRequired(m,t.required)),m.push(...Object.keys(a).map((t=>{const o=normalizeField(a[t],t,i);return getField(e,{name:t,required:!1,schema:o,kind:"patternProperties"},`${i}/patternProperties/${t}`,r,s,n)}))),(isObject(l)||!0===l)&&m.push(getField(e,{name:(isObject(l)&&l["x-additionalPropertiesName"]||"property name").concat("*"),required:!1,schema:!0===l?{}:l,kind:"additionalProperties"},i+"/additionalProperties",r,s,n,JsonPointer.join(t.absolutePointer||"",["additionalProperties"]))),m.push(...buildAdditionalItems({parser:e,schema:p,fieldsCount:m.length,$ref:i,options:r,refsStack:n,deps:s})),sortByDeprecated(m)}function buildAdditionalItems({parser:e,schema:t=!1,fieldsCount:i,$ref:r,options:n,refsStack:s,deps:o}){return"boolean"==typeof t?t?[getField(e,{name:`[${i}...]`,schema:{},kind:"additionalItems"},`${r}/additionalItems`,n,o,s)]:[]:Array.isArray(t)?[...t.map(((t,a)=>getField(e,{name:`[${i+a}]`,schema:t,kind:"additionalItems"},`${r}/additionalItems/${a}`,n,o,s)))]:isObject(t)?[getField(e,{name:`[${i}...]`,schema:t,kind:"additionalItems"},`${r}/additionalItems`,n,o,s)]:[]}function getDiscriminator(e){return e.discriminator||e["x-discriminator"]}function hasType(e,t){return e.type===t||Array.isArray(e.type)&&e.type.includes(t)}function hasArrayItems(e){return Boolean(Array.isArray(e.items)||Array.isArray(e.prefixItems))}
|
|
2
2
|
//# sourceMappingURL=schema.js.map
|
|
@@ -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
|
|
@@ -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/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.6",
|
|
4
4
|
"description": "Redocly OpenAPI Docs",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "lib-esm/index.js",
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
"peerDependencies": {
|
|
19
19
|
"@redocly/theme": ">=0.54.0-next.0",
|
|
20
20
|
"core-js": "^3.1.4",
|
|
21
|
-
"react": "^
|
|
22
|
-
"react-dom": "^
|
|
21
|
+
"react": "^19.1.0",
|
|
22
|
+
"react-dom": "^19.1.0",
|
|
23
23
|
"styled-components": "^4.1.1 || ^5.3.11"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
@@ -46,20 +46,20 @@
|
|
|
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.5"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@shikijs/transformers": "1.24.0",
|
|
53
|
-
"@testing-library/jest-dom": "6.
|
|
54
|
-
"@testing-library/react": "
|
|
55
|
-
"@testing-library/user-event": "14.
|
|
53
|
+
"@testing-library/jest-dom": "6.6.3",
|
|
54
|
+
"@testing-library/react": "16.3.0",
|
|
55
|
+
"@testing-library/user-event": "14.6.1",
|
|
56
56
|
"@types/jest": "29.5.11",
|
|
57
57
|
"@types/jest-when": "3.5.5",
|
|
58
58
|
"@types/json-pointer": "1.0.34",
|
|
59
59
|
"@types/json-schema": "^7.0.15",
|
|
60
60
|
"@types/node": "22.15.3",
|
|
61
|
-
"@types/react": "
|
|
62
|
-
"@types/react-dom": "
|
|
61
|
+
"@types/react": "^19.1.4",
|
|
62
|
+
"@types/react-dom": "^19.1.4",
|
|
63
63
|
"@types/styled-components": "5.1.34",
|
|
64
64
|
"@types/webpack": "5.28.5",
|
|
65
65
|
"@types/webpack-env": "1.18.5",
|
|
@@ -77,9 +77,9 @@
|
|
|
77
77
|
"json-schema": "0.4.0",
|
|
78
78
|
"outdent": "0.8.0",
|
|
79
79
|
"prettier-2": "npm:prettier@2.8.8",
|
|
80
|
-
"react": "
|
|
81
|
-
"react-dom": "
|
|
82
|
-
"react-is": "
|
|
80
|
+
"react": "^19.1.0",
|
|
81
|
+
"react-dom": "^19.1.0",
|
|
82
|
+
"react-is": "19.1.0",
|
|
83
83
|
"rimraf": "5.0.7",
|
|
84
84
|
"shiki": "1.24.4",
|
|
85
85
|
"string-replace-loader": "3.1.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.5"
|
|
96
96
|
},
|
|
97
97
|
"scripts": {
|
|
98
98
|
"start": "npm run copy-highlight-hook && webpack serve --mode=development --hot",
|