@redocly/openapi-docs 3.17.1 → 3.18.0-custom.1
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 +3593 -2768
- package/lib/components/ApiInfo/ApiInfo.js +1 -1
- package/lib/components/ApiInfo/Metadata.js +1 -1
- package/lib/components/Callbacks/CallbackDetails.js +2 -2
- package/lib/components/Discriminator/Discriminator.d.ts +0 -1
- package/lib/components/Discriminator/Discriminator.js +2 -2
- package/lib/components/ExpandAllButton/ExpandAllButton.js +2 -2
- package/lib/components/Language/LanguageList.js +1 -1
- package/lib/components/McpOverview/McpOverview.js +7 -3
- package/lib/components/OperationItem/OperationItem.js +10 -6
- package/lib/components/Overview/Overview.js +1 -1
- package/lib/components/PanelItem/styled.js +8 -4
- package/lib/components/PayloadSamples/ExampleValue.js +1 -1
- package/lib/components/PayloadSamples/PayloadSamples.js +1 -1
- package/lib/components/PayloadSamples/types.d.ts +1 -0
- package/lib/components/RedoclyOpenAPIDocs/RedoclyOpenAPIDocs.js +1 -1
- package/lib/components/Request/RequestDetails.js +8 -2
- package/lib/components/Request/types.d.ts +1 -1
- package/lib/components/RequestParameters/Body.d.ts +1 -0
- package/lib/components/RequestParameters/Body.js +1 -1
- package/lib/components/RequestParameters/RequestParameters.d.ts +2 -1
- package/lib/components/RequestParameters/RequestParameters.js +1 -1
- package/lib/components/RequestSamples/Example.js +1 -1
- package/lib/components/RequestSamples/RequestSamples.js +2 -2
- package/lib/components/RequestSamples/useCodeSamples.d.ts +1 -1
- package/lib/components/RequestSamples/useCodeSamples.js +1 -1
- package/lib/components/ResponseSamples/ResponseSamples.js +1 -1
- package/lib/components/ResponseSamples/Summary.d.ts +2 -1
- package/lib/components/ResponseSamples/Summary.js +1 -1
- package/lib/components/Responses/OperationResponseList.d.ts +1 -0
- package/lib/components/Responses/OperationResponseList.js +3 -2
- package/lib/components/Responses/ResponseDetails.js +1 -1
- package/lib/components/Responses/styled.js +4 -2
- package/lib/components/Responses/types.d.ts +1 -0
- package/lib/components/RightPanel/RightPanel.js +5 -1
- package/lib/components/Samples/ExampleSwitch.js +1 -1
- package/lib/components/Schema/ObjectSchema.js +1 -1
- package/lib/components/Schema/Schema.js +2 -2
- package/lib/components/Schema/types.d.ts +1 -3
- package/lib/components/SchemaDefinition/SchemaDefinition.js +5 -2
- package/lib/components/SectionContent/SectionContent.js +7 -5
- package/lib/components/SectionItem/SectionItem.js +1 -1
- package/lib/components/Security/OAuthScopes.d.ts +3 -3
- package/lib/components/Security/OAuthScopes.js +12 -11
- package/lib/components/Security/RequiredScopes.d.ts +6 -0
- package/lib/components/Security/RequiredScopes.js +17 -0
- package/lib/components/Security/RequiredScopesList.d.ts +14 -0
- package/lib/components/Security/RequiredScopesList.js +13 -0
- package/lib/components/Security/ScopeTagWithTooltip.d.ts +17 -0
- package/lib/components/Security/ScopeTagWithTooltip.js +33 -0
- package/lib/components/Security/Security.js +1 -1
- package/lib/components/Security/SecurityButton.js +14 -14
- package/lib/components/Security/SecurityFlow.js +18 -5
- package/lib/components/ServerList/ServerList.js +11 -11
- package/lib/components/ServerListDropdown/ServerListDropdown.js +1 -1
- package/lib/components/TagItem/Breadcrumbs.d.ts +11 -0
- package/lib/components/TagItem/Breadcrumbs.js +41 -0
- package/lib/components/TagItem/OperationNavigationItems.d.ts +4 -2
- package/lib/components/TagItem/OperationNavigationItems.js +20 -5
- package/lib/components/TagItem/OperationsNavigation.js +27 -2
- package/lib/components/TagItem/TagItem.js +51 -37
- package/lib/components/ViewNested/ViewNested.js +7 -7
- package/lib/components/common/Badges.js +10 -8
- package/lib/components/common/BodyContent/BodyContent.d.ts +2 -0
- package/lib/components/common/BodyContent/BodyContent.js +4 -4
- package/lib/components/common/Dropdown/Dropdown.d.ts +2 -2
- package/lib/components/common/Dropdown/Dropdown.js +44 -10
- package/lib/components/common/Fields/fields.js +5 -3
- package/lib/components/common/OperationItemTitle.js +8 -6
- package/lib/components/common/SchemaSelection/SchemaSelection.js +1 -1
- package/lib/components/common/Select/Select.js +1 -1
- package/lib/components/common/Select/styled.d.ts +0 -1
- package/lib/components/common/Select/styled.js +19 -63
- package/lib/components/common/Select/types.d.ts +0 -3
- package/lib/components/common/linkify.js +7 -2
- package/lib/components/common/panels.js +1 -1
- package/lib/components/common/styled.js +4 -4
- package/lib/constants.d.ts +1 -0
- package/lib/constants.js +1 -1
- package/lib/icons/CSharpIcon/CSharpIcon.d.ts +2 -1
- package/lib/icons/CSharpIcon/CSharpIcon.js +1 -1
- package/lib/icons/CurlIcon/CurlIcon.d.ts +3 -2
- package/lib/icons/CurlIcon/CurlIcon.js +2 -2
- package/lib/icons/GOIcon/GOIcon.d.ts +2 -1
- package/lib/icons/GOIcon/GOIcon.js +1 -1
- package/lib/icons/JavaIcon/JavaIcon.d.ts +2 -1
- package/lib/icons/JavaIcon/JavaIcon.js +1 -1
- package/lib/icons/JavaScriptIcon/JavaScriptIcon.d.ts +2 -1
- package/lib/icons/JavaScriptIcon/JavaScriptIcon.js +1 -1
- package/lib/icons/NodeJSIcon/NodeJSIcon.d.ts +2 -1
- package/lib/icons/NodeJSIcon/NodeJSIcon.js +1 -1
- package/lib/icons/PHPIcon/PHPIcon.d.ts +2 -1
- package/lib/icons/PHPIcon/PHPIcon.js +1 -1
- package/lib/icons/PythonIcon/PythonIcon.d.ts +2 -1
- package/lib/icons/PythonIcon/PythonIcon.js +1 -1
- package/lib/icons/RIcon/RIcon.d.ts +2 -1
- package/lib/icons/RIcon/RIcon.js +1 -1
- package/lib/icons/RubyIcon/RubyIcon.d.ts +2 -1
- package/lib/icons/RubyIcon/RubyIcon.js +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -1
- package/lib/models/field.js +1 -1
- package/lib/models/group.js +1 -1
- package/lib/models/mediaType.js +1 -1
- package/lib/models/operation.js +1 -1
- package/lib/models/request.js +1 -1
- package/lib/models/response.js +1 -1
- package/lib/models/schema.js +2 -2
- package/lib/models/types.d.ts +2 -0
- package/lib/services/code-samples/generator.d.ts +1 -0
- package/lib/services/code-samples/generator.js +1 -1
- package/lib/services/menu/builder.js +1 -1
- package/lib/services/menu/markdown.js +1 -1
- package/lib/services/menu/operation.d.ts +2 -2
- package/lib/services/menu/operation.js +1 -1
- package/lib/services/menu/tags.d.ts +1 -0
- package/lib/services/menu/tags.js +3 -3
- package/lib/services/types.d.ts +7 -0
- package/lib/types/index.d.ts +1 -0
- package/lib/types/index.js +1 -1
- package/lib/types/oauth2-types.d.ts +4 -0
- package/lib/types/oauth2-types.js +0 -0
- package/lib/types/open-api.d.ts +23 -2
- package/lib/utils/calculateMaxLength.d.ts +6 -0
- package/lib/utils/calculateMaxLength.js +1 -0
- package/lib/utils/getBreadcrumbs.d.ts +7 -0
- package/lib/utils/getBreadcrumbs.js +1 -0
- package/lib/utils/index.d.ts +2 -0
- package/lib/utils/index.js +1 -1
- package/lib/utils/mcp.d.ts +1 -1
- package/lib/utils/mcp.js +1 -1
- package/lib/utils/openapi.d.ts +5 -1
- package/lib/utils/openapi.js +1 -1
- package/lib/utils/security-scope.d.ts +5 -0
- package/lib/utils/security-scope.js +1 -0
- package/lib/utils/string.js +1 -1
- package/package.json +20 -21
package/lib/models/schema.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{REDOCLY_TEAMS_RBAC as S}from"@redocly/config";import{isObject as I}from"@redocly/theme/core/openapi";import{pushRef as w}from"../services/OpenAPIParser.js";import{detectType as q,extractExtensions as C,getValueFromMdParsedExtension as M,humanizeConstraints as E,isNamedDefinition as h,isPrimitiveType as B,JsonPointer as A,pluralizeType as z,sortByDeprecated as L,sortByRequired as J}from"../utils/index.js";import{getField as
|
|
2
|
-
Field must be an object but got ${typeof i} at "${u}"`),{})}function K(i,n,u,l,P,f){let m=n.properties||($(n,"array")?n.prefixItems||n.items:void 0)||{};const a=n.patternProperties||{},y=n.additionalProperties||n.unevaluatedProperties,p=n.prefixItems?n.items:n.additionalItems,c=n.default||{};let s=Object.keys(m).map(r=>{const e=
|
|
1
|
+
import{REDOCLY_TEAMS_RBAC as S}from"@redocly/config";import{isObject as I}from"@redocly/theme/core/openapi";import{pushRef as w}from"../services/OpenAPIParser.js";import{detectType as q,extractExtensions as C,getValueFromMdParsedExtension as M,humanizeConstraints as E,isNamedDefinition as h,isPrimitiveType as B,JsonPointer as A,pluralizeType as z,sortByDeprecated as L,sortByRequired as J}from"../utils/index.js";import{getField as b}from"./field.js";function F({parser:i,schemaOrRef:n,pointer:u,options:l,isChild:P=!1,isDefaultMapping:f=!1,baseRefsStack:m=[],deps:a,absolutePointer:y}){const{resolved:p,refsStack:c}=i.deref(n,m,!0),s=n.$ref||u||y||"",r=w(c,s),e=i.mergeAllOf(p,s,r,n.$ref||y),O=e.type||q(e),t={operationPointer:a.operation?.pointer||y||"",schemaOrRef:n,isChild:P,isDefaultMapping:f,typePrefix:"",pointer:s,absolutePointer:y,refsStack:r,rawSchema:p,type:O,isCircular:!!e["x-circular-ref"],isComplex:!!e["x-complex"],title:e.title||h(s)&&A.baseName(s)||"",description:M(e,"description")||"",format:e.format,enum:e.enum||[],example:e.example,deprecated:!!e.deprecated,pattern:e.pattern,externalDocs:e.externalDocs,displayFormat:e.format,isPrimitive:B(e,O),constraints:E(e),default:e.default,readOnly:!!e.readOnly,writeOnly:!!e.writeOnly,const:e.const||"",contentEncoding:e.contentEncoding,contentMediaType:e.contentMediaType,minItems:e.minItems,maxItems:e.maxItems,nullable:e.nullable||e["x-nullable"],schema:e,displayType:"",items:void 0,extensions:void 0,oneOfType:"",discriminatorProp:void 0,oneOf:void 0,[S]:e[S],"x-enumDescriptions":M(e,"x-enumDescriptions"),get fields(){if(!t.isCircular&&!t.isComplex&&($(t,"object")||$(t,"array")&&v(e)))return K(i,e,s,l,r,a)}};if((e.nullable||e["x-nullable"])&&(Array.isArray(t.type)&&!t.type.some(d=>d===null||d==="null")?t.type=[...t.type,"null"]:!Array.isArray(t.type)&&(t.type!==null||t.type!=="null")&&(t.type=[t.type,"null"])),t.displayType=Array.isArray(t.type)?t.type.map(d=>d===null?"null":d).join(" or "):t.type,t.isCircular)return t;if(e.if&&e.then||e.if&&e.else){const{oneOf:d,oneOfType:o}=_({schema:e,parser:i,pointer:s,options:l,deps:a,refsStack:r});return t.oneOf=d,t.oneOfType=o,t}if(!P&&j(e)!==void 0){const{oneOf:d,discriminatorProp:o}=V({schema:e,parser:i,deps:a,mergedSchema:e,options:l,pointer:s,refsStack:r});return t.oneOf=d,t.discriminatorProp=o,t}else P&&Array.isArray(e.oneOf)&&e.oneOf.find(d=>d.$ref===s)&&delete e.oneOf;if(e.oneOf!==void 0){const{oneOf:d,displayType:o}=k({schemaOneOf:e.oneOf,parser:i,deps:a,options:l,pointer:s,refsStack:r,schema:e});return t.oneOfType="One of",d&&(t.oneOf=d),t.displayType=o,e.anyOf!==void 0&&console.warn(`oneOf and anyOf are not supported on the same level. Skipping anyOf at ${s}`),t}if(e.anyOf!==void 0){const{oneOf:d,displayType:o}=k({schemaOneOf:e.anyOf,parser:i,deps:a,options:l,pointer:s,refsStack:r,schema:e});return d&&(t.oneOf=d),t.displayType=o,t.oneOfType="Any of",t}if($(t,"array")&&(e.items&&!v(e)&&(t.items=F({parser:i,schemaOrRef:e.items,pointer:s+"/items",options:l,baseRefsStack:r,deps:a,absolutePointer:A.join(e.absolutePointer||"",["items"])})),t.displayType=e.prefixItems||Array.isArray(e.items)?"items":z(t.items?.displayType||t.displayType),t.displayFormat=t.items?.format||"",t.typePrefix=t.items?.typePrefix||"Array of ",t.title=t.title||t.items?.title||"",t.isPrimitive=t.items?.isPrimitive!==void 0?t.items?.isPrimitive:t.isPrimitive,t.example===void 0&&t.items?.example!==void 0&&(t.example=[t.items.example]),t.items?.isPrimitive&&(t.enum=t.items.enum,t["x-enumDescriptions"]=M(t.items,"x-enumDescriptions")),Array.isArray(t.type))){const d=t.type.filter(o=>o!=="array");d.length&&(t.displayType+=` or ${d.join(" or ")}`)}return l.showExtensions&&(t.extensions=C(e,l.showExtensions)),t}function V({schema:i,parser:n,pointer:u,options:l,refsStack:P,deps:f,mergedSchema:m}){const a=j(i),y=a?.propertyName,p=n.findDerived([...m["x-parentRefs"]||[],u]);if(i.oneOf)for(const o of i.oneOf){if(o.$ref===void 0)continue;const x=A.baseName(o.$ref);p[o.$ref]=x}const c=a?.mapping||{},s=a?.["x-explicitMappingOnly"]??Object.keys(c).length>0,r={};for(const o in c){const x=c[o];Array.isArray(r[x])?r[x].push(o):r[x]=[o]}const e=s?{...r}:{...p,...r};let O=[];for(const o of Object.keys(e)){const x=e[o];if(Array.isArray(x))for(const g of x)O.push({$ref:o,name:g});else O.push({$ref:o,name:x})}if(a?.defaultMapping){const o=O.findIndex(g=>g.name===A.baseName(a.defaultMapping)),x="Default mapping";~o?O[o]={$ref:a.defaultMapping,name:x,isDefaultMapping:!0}:O.push({$ref:a.defaultMapping,name:x,isDefaultMapping:!0})}const t=Object.keys(c);return t.length!==0&&(O=O.sort((o,x)=>{if(o.isDefaultMapping&&!x.isDefaultMapping)return 1;if(!o.isDefaultMapping&&x.isDefaultMapping)return-1;const g=t.indexOf(o.name),T=t.indexOf(x.name);return g<0&&T<0?o.name.localeCompare(x.name):g<0?1:T<0?-1:g-T})),{oneOf:O.map(({$ref:o,name:x,isDefaultMapping:g},T)=>{const D=F({parser:n,schemaOrRef:{$ref:o},pointer:o,options:l,isChild:!0,isDefaultMapping:g,baseRefsStack:P.slice(0,-1),deps:{...f,parentFieldFullPath:f.parentFieldFullPath?f.parentFieldFullPath+"&d="+T:"&d="+T.toString()},absolutePointer:m.absolutePointer});return D.title=x,D}),discriminatorProp:y}}function k({schemaOneOf:i,parser:n,refsStack:u,pointer:l,schema:P,options:f,deps:m}){const a=i.map((p,c)=>{const{resolved:s,refsStack:r}=n.deref(p,u,!0),e=n.mergeAllOf(s,l+"/oneOf/"+c,r),O=h(p.$ref)&&!e.title?A.baseName(p.$ref):`${e.title||""}${e.const&&JSON.stringify(e.const)||""}`;return F({parser:n,schemaOrRef:{...e,title:O,allOf:[{...P,oneOf:void 0,anyOf:void 0}],discriminator:s.allOf?void 0:e.discriminator},pointer:p.$ref||l+"/oneOf/"+c,options:f,baseRefsStack:r,deps:{...m,parentFieldFullPath:m.parentFieldFullPath?m.parentFieldFullPath+"&oneOf="+c:"&oneOf="+c.toString()}})}),y=[...new Set(a.map(p=>{let c=p.typePrefix+(p.title&&!f.hideSchemaTitles?`${p.title} (${p.displayType})`:p.displayType);return c.indexOf(" or ")>-1&&(c=`(${c})`),c}))].join(" or ");return{oneOf:a,displayType:y}}function _({schema:i,parser:n,pointer:u,options:l,refsStack:P,deps:f}){const{if:m,else:a={},then:y={},...p}=i;return{oneOf:[{allOf:[p,y,m],title:m&&m["x-displayName"]||m?.title||"case 1"},{allOf:[p,a],title:a&&a["x-displayName"]||a?.title||"case 2"}].map((e,O)=>F({parser:n,schemaOrRef:{...e},pointer:u+"/oneOf/"+O,options:l,baseRefsStack:P,deps:{...f,parentFieldFullPath:f.parentFieldFullPath?f.parentFieldFullPath+"&oneOf="+O:"&oneOf="+O.toString()}})),oneOfType:"One of"}}function R(i,n,u){return i||(console.warn(`Field "${n}" is invalid, skipping.
|
|
2
|
+
Field must be an object but got ${typeof i} at "${u}"`),{})}function K(i,n,u,l,P,f){let m=n.properties||($(n,"array")?n.prefixItems||n.items:void 0)||{};const a=n.patternProperties||{},y=n.additionalProperties||n.unevaluatedProperties,p=n.prefixItems?n.items:n.additionalItems,c=n.default||{};let s=Object.keys(m).map(r=>{const e=R(m[r],r,u),O=n.required===void 0?!1:n.required.indexOf(r)>-1;return b(i,{name:n.properties?r:`[${r}]`,required:O,schema:{...e,example:n.example?.[r]||e.example,default:e.default===void 0&&c?c[r]:e.default}},u+"/properties/"+r,l,f,P,A.join(n.absolutePointer||"",["properties",r]))});return l.sortRequiredPropsFirst&&(s=J(s,n.required)),s.push(...Object.keys(a).map(r=>{const e=R(a[r],r,u);return b(i,{name:r,required:!1,schema:e,kind:"patternProperties"},`${u}/patternProperties/${r}`,l,f,P)})),(I(y)||y===!0)&&s.push(b(i,{name:(I(y)&&y["x-additionalPropertiesName"]||"property name").concat("*"),required:!1,schema:y===!0?{}:y,kind:"additionalProperties"},u+"/additionalProperties",l,f,P,A.join(n.absolutePointer||"",["additionalProperties"]))),s.push(...Y({parser:i,schema:p,fieldsCount:s.length,$ref:u,options:l,refsStack:P,deps:f})),L(s)}function Y({parser:i,schema:n=!1,fieldsCount:u,$ref:l,options:P,refsStack:f,deps:m}){return typeof n=="boolean"?n?[b(i,{name:`[${u}...]`,schema:{},kind:"additionalItems"},`${l}/additionalItems`,P,m,f)]:[]:Array.isArray(n)?[...n.map((a,y)=>b(i,{name:`[${u+y}]`,schema:a,kind:"additionalItems"},`${l}/additionalItems/${y}`,P,m,f))]:I(n)?[b(i,{name:`[${u}...]`,schema:n,kind:"additionalItems"},`${l}/additionalItems`,P,m,f)]:[]}function j(i){return i.discriminator||i["x-discriminator"]}function $(i,n){return i.type===n||Array.isArray(i.type)&&i.type.includes(n)}function v(i){return!!(Array.isArray(i.items)||Array.isArray(i.prefixItems))}export{F as getSchema};
|
package/lib/models/types.d.ts
CHANGED
|
@@ -156,6 +156,7 @@ export type OperationModel = {
|
|
|
156
156
|
extensions: GenericObject;
|
|
157
157
|
isCallback: boolean;
|
|
158
158
|
isWebhook: boolean;
|
|
159
|
+
isRpc?: boolean;
|
|
159
160
|
isAdditionalOperation: boolean;
|
|
160
161
|
isEvent: boolean;
|
|
161
162
|
callbackId: string;
|
|
@@ -213,6 +214,7 @@ export type OperationMenuItem = {
|
|
|
213
214
|
httpVerb: string;
|
|
214
215
|
path: string;
|
|
215
216
|
isWebhook: boolean;
|
|
217
|
+
isRpc?: boolean;
|
|
216
218
|
isAdditionalOperation: boolean;
|
|
217
219
|
operationId?: string;
|
|
218
220
|
badges?: OpenAPIXBadges[];
|
|
@@ -34,6 +34,7 @@ type OAuth2ExtraCall = HAR.Request & {
|
|
|
34
34
|
clientId?: string;
|
|
35
35
|
};
|
|
36
36
|
export declare function getDataRequest(exampleValue: any, properties: any): boolean | any;
|
|
37
|
+
export declare function objectToHarParams(obj: GenericObject, parentKey?: string): HAR.Param[];
|
|
37
38
|
export declare function isDefined<T>(arg?: T): arg is T;
|
|
38
39
|
export declare function capitalizeFirst(str: string): string;
|
|
39
40
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import*as ne from"openapi-sampler";import L from"deepmerge";import{isObject as oe}from"@redocly/theme/core/openapi";import{areArraysEqual as ce,serializeParameterValue as I,getSecurityDetails as ie,getParameterValue as $,queryString as P,isArrayOfObjects as ue,deleteEmptyArrayItem as le}from"../../utils/index.js";import{normalizeMimeType as pe,arrayMergeStrategy as M}from"../utils.js";import{MediaTypes as m}from"../../constants.js";import{HTTPSnippet as me}from"./httpsnippet/index.js";import{getActiveMediaType as de}from"../../models/mediaContent.js";import J from"./httpsnippet/helpers/string-utility.js";function C(t,a,o){try{return ne.sample(t,a,o)}catch(n){return console.error(`Error sampling schema: ${n.message}`),null}}function fe(t,a){return t.find(o=>{const n=o.schemes.map(s=>s.id);return ce(n,a||[])})}function ye(t,{exampleName:a="",skipOptionalParameters:o=!1,withOAuth2Call:n=!1,spec:s,generatedPayloadSamplesMaxDepth:r=8,pathParams:i={},properties:u={},activeMimeName:c=""},{environment:y,requestValues:k,activeSecuritySchemeIds:T}){const l=y.server,b=t.servers.find(e=>e.url===l)||t.servers[0],w=fe(t.security,T),{securityHeaders:R,securityCookies:B,securityQueries:F,securityOAuth2ExtraCalls:X,basicAuth:K}=he(w||t.security?.[0],n,y),p=t?.requestBody?.content&&de(t.requestBody.content,c),g={skipNonRequired:o,skipReadOnly:!0,maxSampleDepth:r,quiet:!0},S=k;let H=!1;const N=t.parameters.filter(e=>e.in==="header").filter(e=>!(o&&!e.required)).map(e=>({name:e.name,value:S.header?.[e.name]||$("header",e.name)||e.serverValues?.[l]?.example||e.example||I(e,C(e.schema.rawSchema,g,s))})).map(e=>(p?.name&&e.name.toLowerCase()==="content-type"&&(H=!0,e.value=p.name),e)).concat(R);!H&&p?.name&&N.unshift({name:"Content-Type",value:p?.name});const Q=t.parameters.filter(e=>e.in==="cookie").filter(e=>!(o&&!e.required)).map(e=>P.parse(I(e,e.serverValues?.[l]?.example||e.example||C(e.schema.rawSchema,g,s)))).reduce((e,f)=>{for(const[h,_]of Object.entries(f))e.push({name:h,value:String(S.cookie?.[h]||_)});return e},[]).concat(B),G=t.parameters.filter(e=>e.in==="query").filter(e=>!(o&&!e.required)).map(e=>P.parse(I(e,e.serverValues?.[l]?.example||e.example||C(e.schema.rawSchema,g,s)))).reduce((e,f)=>{for(const[h,_]of Object.entries(f))e.push({name:h,value:ue(S.query?.[h])&&JSON.stringify(le(S.query?.[h]))||String(S.query?.[h]||_)});return e},[]).concat(F),W=b?.url.replace(/\/$/,""),Z=t.path.replace(/^\//,""),ee=`${W}/${Z}`,te=t.parameters.filter(e=>e.in==="path").reduce((e,f)=>{const{in:h,name:_}=f;return e[_]=S.path?.[_]||f.serverValues?.[l]?.example||f.example||i[_]||$(h,_),e},{}),q=p?.name.toLowerCase(),E=p?.examples?.[a]||p?.formExamples?.[a],re={...p?.formExamples||{},...p?.examples||{}},[x]=Object.values(re),U=E?.serverValues?.[l]?.value||x?.serverValues?.[l]?.value,D=e=>!e||typeof e!="object"||!p?.schema?.rawSchema?null:C(Oe(p.schema.rawSchema,e),{...g,format:"xml"},s),v=(()=>{if(S?.body)return S.body;if(q===m.XML){const e=U||E?.value||x?.value;if(typeof e=="string")return e;const f=D(U)||D(E?.value)||D(x?.value);if(f)return f;if(p?.schema)return C(p.schema.rawSchema,{...g,format:"xml"},s)}else{const e=p?.schema&&C(p.schema.rawSchema,{...g,format:"json"},s);return U||E?.value||x?.value||e}return""})();let O="",z=[];switch(pe(q)){case m.JSON:O=JSON.stringify(j(v,u));break;case m.XML:O=v;break;case m.MULTIPART:case m.URL_ENCODED:typeof v=="string"?O=v:(O=P.stringify(j(v,u)),z=Y(j(v,u)));break;default:O=String(v||"")}const ae=O?{mimeType:p?.name||m.OCTET_STREAM,text:O,params:z}:void 0,se=t.responses.map(e=>e.code);return{method:t.httpVerb,url:ee,httpVersion:"HTTP/1.1",cookies:Q,headers:N,queryString:G,postData:ae,headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:X,basicAuth:K,pathParameters:te,serverVariables:y,allResponseCodes:se}}const d={withImports:!0,withComments:!1},A={curl:{code:"shell",defaultTarget:"curl",defaultOptions:{...d,short:!0}},JavaScript:{code:"javascript",defaultTarget:"fetch",defaultOptions:{...d,withImports:!1}},"Node.js":{code:"node",defaultTarget:"fetch",defaultOptions:{...d}},Python:{code:"python",defaultTarget:"requests",defaultOptions:{...d}},"Java8+Apache":{code:"java8",defaultTarget:"apachehttp",defaultOptions:{...d}},Java:{code:"java",defaultTarget:"httpclient",defaultOptions:{...d}},"C#":{code:"csharp",defaultTarget:"httpclient",defaultOptions:{...d}},"C#+Newtonsoft":{code:"csharpNewtonsoft",defaultTarget:"httpclient",defaultOptions:{...d}},Go:{code:"go",defaultTarget:"http.DefaultClient",defaultOptions:{...d}},PHP:{code:"php",defaultTarget:"curl",defaultOptions:{...d}},Ruby:{code:"ruby",defaultTarget:"net::http",defaultOptions:{...d}},R:{code:"r",defaultTarget:"httr",defaultOptions:{...d}}};function Ue({lang:t,operation:a,exampleName:o,pathParams:n,properties:s,options:r={},environment:i,translate:u}){try{const{skipOptionalParameters:c,withOAuth2Call:y,spec:k,generatedPayloadSamplesMaxDepth:T,store:l,activeMimeName:b}=r,w=ye(a,{exampleName:o,pathParams:n,properties:s,skipOptionalParameters:c,withOAuth2Call:y,spec:k,generatedPayloadSamplesMaxDepth:T,activeMimeName:b},{environment:i,requestValues:l.requestValues,activeSecuritySchemeIds:l.activeSecuritySchemeIds}),R=new me(w);return A[t]?R.convert(A[t].code,A[t].defaultTarget,{...A[t].defaultOptions,...r}):u("openapi.unsupportedLanguage","Language is not supported.")}catch(c){return console.error(c),u("openapi.failedToGenerateCodeSample","Failed to generate code sample.")}}function he(t,a,o){const n={securityHeaders:[],securityCookies:[],securityQueries:[],securityOAuth2ExtraCalls:[],basicAuth:void 0},s=o?.server;for(const r of t?.schemes||[]){const i=ie(r.id,o),u=s&&r.serverValues&&r.serverValues[s],c={access_token:u?.["x-defaultAccessToken"]||r["x-defaultAccessToken"],token_type:u?.["x-defaultTokenType"]||r["x-defaultTokenType"],client_id:u?.["x-defaultClientId"]||r["x-defaultClientId"],client_secret:u?.["x-defaultClientSecret"]||r["x-defaultClientSecret"]},y=u?.["x-defaultUsername"]||r["x-defaultUsername"],k=u?.["x-defaultPassword"]||r["x-defaultPassword"],T=u&&"scopes"in u?u.scopes||[]:r.scopes||[];switch(r.type){case"openIdConnect":n.securityHeaders?.push({name:"Authorization",value:c.access_token?`${c.token_type||"Bearer"} ${c.access_token}`:i.token?`${c.token_type||i.token.token_type||"Bearer"} ${i.token.access_token}`:"Bearer <YOUR_TOKEN_HERE>"});break;case"oauth2":{const l=c.access_token?`${c.token_type||"Bearer"} ${c.access_token}`:i.token?`${i.token.token_type||"Bearer"} ${i.token.access_token}`:"Bearer <YOUR_TOKEN_HERE>";r.flows.deviceAuthorization&&a?n.securityOAuth2ExtraCalls.push(Se(r.flows.deviceAuthorization,T)):r.flows.clientCredentials&&a?n.securityOAuth2ExtraCalls.push(Te(r.flows.clientCredentials,T,{...i,client_id:c.client_id||i.client_id,client_secret:c.client_secret||i.client_secret})):r.flows.password&&a&&n.securityOAuth2ExtraCalls.push(_e(r.flows.password,T,{...i,client_id:c.client_id||i.client_id,client_secret:c.client_secret||i.client_secret})),n.securityHeaders?.push({name:"Authorization",value:l});break}case"apiKey":{const l=c.access_token||i.raw||"YOUR_API_KEY_HERE";r.in==="header"&&n.securityHeaders?.push({name:r.name,value:l}),r.in==="cookie"&&n.securityCookies.push({name:r.name,value:l}),r.in==="query"&&n.securityQueries.push({name:r.name,value:l});break}case"http":if(r.scheme==="basic")n.basicAuth={username:y||i.username||`<${J.toSnakeCase("Username")}>`,password:k||i.password||`<${J.toSnakeCase("Password")}>`};else{const l=c?.access_token||i.token?.access_token||`<YOUR_${r.bearerFormat||"TOKEN"}_HERE>`;n.securityHeaders?.push({name:"Authorization",value:`${ve(r.scheme||"bearer")} ${l}`})}break}}return n}function Se(t,a){const o=t["x-defaultClientId"]??"YOUR_CLIENT_ID",{tokenUrl:n,deviceAuthorizationUrl:s}=t;return{method:"POST",url:s,httpVersion:"HTTP/1.1",headers:[{name:"Content-Type",value:m.URL_ENCODED},{name:"Accept",value:m.JSON}],queryString:[],postData:{mimeType:m.URL_ENCODED,text:"",params:[{name:"client_id",value:o},a.length?{name:"scope",value:a.join(" ")}:void 0].filter(V)},cookies:[],headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:[],flowType:"deviceAuthorization",tokenUrl:n,clientId:o}}function _e(t,a,o){const{tokenUrl:n}=t,s=o.client_id??"YOUR_CLIENT_ID";return{method:"POST",url:t.tokenUrl,httpVersion:"HTTP/1.1",headers:[{name:"Content-Type",value:m.URL_ENCODED},{name:"Accept",value:m.JSON}],queryString:[],postData:{mimeType:m.URL_ENCODED,text:"",params:[{name:"grant_type",value:"password"},{name:"client_id",value:s},{name:"client_secret",value:o.client_secret||"YOUR_CLIENT_SECRET"},{name:"username",value:o.username||"<username>"},{name:"password",value:o.password||"<password>"},a.length?{name:"scope",value:a.join(" ")}:void 0].filter(V)},cookies:[],headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:[],flowType:"password",tokenUrl:n,clientId:s}}function Te(t,a,o){const{tokenUrl:n}=t,s=o.client_id??"YOUR_CLIENT_ID";return{method:"POST",url:t.tokenUrl,httpVersion:"HTTP/1.1",headers:[{name:"Content-Type",value:m.URL_ENCODED},{name:"Accept",value:m.JSON}],queryString:[],postData:{mimeType:m.URL_ENCODED,text:"",params:[{name:"grant_type",value:"client_credentials"},{name:"client_id",value:s},{name:"client_secret",value:o.client_secret||"YOUR_CLIENT_SECRET"},a.length?{name:"scope",value:a.join(" ")}:void 0].filter(V)},cookies:[],headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:[],flowType:"clientCredentials",tokenUrl:n,clientId:s}}function j(t,a){if(t){if(oe(t))return Object.keys(t).length>0&&Object.keys(a).length===0?t:L(t,a,{arrayMerge:M});try{return L(JSON.parse(t),a,{arrayMerge:M})}catch{return!1}}return!1}function Y(t,a=""){const o=[];for(const[n,s]of Object.entries(t)){const r=a?`${a}[${n}]`:n;if(typeof s=="object"&&s!==null)o.push(...Y(s,r));else{const i=Array.isArray(t)&&typeof s=="string"&&a?a:r;o.push({name:i,value:String(s)})}}return o}function V(t){return t!==void 0}function ve(t){return t.charAt(0).toUpperCase()+t.slice(1)}function Oe(t,a){if(!t||typeof t!="object"||!a||typeof a!="object")return t;const o=JSON.parse(JSON.stringify(t));function n(s,r){if(!(!s||!r||typeof s!="object"||typeof r!="object")&&s.properties){for(const i in s.properties)if(r[i]!==void 0){const u=s.properties[i],c=r[i];if(u.type==="object"&&typeof c=="object"&&!Array.isArray(c))n(u,c);else if(u.type==="array"&&Array.isArray(c)&&c.length>0){const y=c[0];u.items&&u.items.properties&&n(u.items,y)}else u.example=c}}}return n(o,a),o}export{ve as capitalizeFirst,Ue as getCodeSample,j as getDataRequest,V as isDefined,C as safeSample};
|
|
1
|
+
import*as ce from"openapi-sampler";import $ from"deepmerge";import{isObject as ue}from"@redocly/theme/core/openapi";import{areArraysEqual as le,serializeParameterValue as P,getSecurityDetails as pe,getParameterValue as M,queryString as I,isArrayOfObjects as me,deleteEmptyArrayItem as de}from"../../utils/index.js";import{normalizeMimeType as fe,arrayMergeStrategy as J}from"../utils.js";import{MediaTypes as d}from"../../constants.js";import{HTTPSnippet as ye}from"./httpsnippet/index.js";import{getActiveMediaType as he}from"../../models/mediaContent.js";import Y from"./httpsnippet/helpers/string-utility.js";function C(e,a,o){try{return ce.sample(e,a,o)}catch(n){return console.error(`Error sampling schema: ${n.message}`),null}}function Se(e,a){return e.find(o=>{const n=o.schemes.map(s=>s.id);return le(n,a||[])})}function _e(e,{exampleName:a="",skipOptionalParameters:o=!1,withOAuth2Call:n=!1,spec:s,generatedPayloadSamplesMaxDepth:r=8,pathParams:c={},properties:u={},activeMimeName:i=""},{environment:h,requestValues:k,activeSecuritySchemeIds:_}){const p=h.server,b=e.servers.find(t=>t.url===p)||e.servers[0],w=Se(e.security,_),{securityHeaders:R,securityCookies:Q,securityQueries:F,securityOAuth2ExtraCalls:X,basicAuth:K}=Te(w||e.security?.[0],n,h),m=e?.requestBody?.content&&he(e.requestBody.content,i),v={skipNonRequired:o,skipReadOnly:!0,maxSampleDepth:r,quiet:!0},S=k;let H=!1;const N=e.parameters.filter(t=>t.in==="header").filter(t=>!(o&&!t.required)).map(t=>({name:t.name,value:S.header?.[t.name]||M("header",t.name)||t.serverValues?.[p]?.example||t.example||P(t,C(t.schema.rawSchema,v,s))})).map(t=>(m?.name&&t.name.toLowerCase()==="content-type"&&(H=!0,t.value=m.name),t)).concat(R);!H&&m?.name&&N.unshift({name:"Content-Type",value:m?.name});const G=e.parameters.filter(t=>t.in==="cookie").filter(t=>!(o&&!t.required)).map(t=>I.parse(P(t,t.serverValues?.[p]?.example||t.example||C(t.schema.rawSchema,v,s)))).reduce((t,l)=>{for(const[O,y]of Object.entries(l))t.push({name:O,value:String(S.cookie?.[O]||y)});return t},[]).concat(Q);function q(t){return e.parameters.filter(l=>l.in===t).filter(l=>!(o&&!l.required)).map(l=>I.parse(P(l,l.serverValues?.[p]?.example||l.example||C(l.schema.rawSchema,v,s)))).reduce((l,O)=>{for(const[y,ie]of Object.entries(O))l.push({name:y,value:me(S[t]?.[y])&&JSON.stringify(de(S[t]?.[y]))||String(S[t]?.[y]||ie)});return l},[]).concat(F)}const W=e.parameters.some(t=>t.in==="querystring"),Z=q(W?"querystring":"query"),ee=b?.url.replace(/\/$/,""),te=e.path.replace(/^\//,""),re=`${ee}/${te}`,ae=e.parameters.filter(t=>t.in==="path").reduce((t,l)=>{const{in:O,name:y}=l;return t[y]=S.path?.[y]||l.serverValues?.[p]?.example||l.example||c[y]||M(O,y),t},{}),z=m?.name.toLowerCase(),E=m?.examples?.[a]||m?.formExamples?.[a],se={...m?.formExamples||{},...m?.examples||{}},[x]=Object.values(se),U=E?.serverValues?.[p]?.value||x?.serverValues?.[p]?.value,D=t=>!t||typeof t!="object"||!m?.schema?.rawSchema?null:C(ke(m.schema.rawSchema,t),{...v,format:"xml"},s),T=(()=>{if(S?.body)return S.body;if(z===d.XML){const t=U||E?.value||x?.value;if(typeof t=="string")return t;const l=D(U)||D(E?.value)||D(x?.value);if(l)return l;if(m?.schema)return C(m.schema.rawSchema,{...v,format:"xml"},s)}else{const t=m?.schema&&C(m.schema.rawSchema,{...v,format:"json"},s);return U||E?.value||x?.value||t}return""})();let g="",L=[];switch(fe(z)){case d.JSON:g=JSON.stringify(j(T,u));break;case d.XML:g=T;break;case d.MULTIPART:case d.URL_ENCODED:typeof T=="string"?g=T:(g=I.stringify(j(T,u)),L=B(j(T,u)));break;default:g=String(T||"")}const ne=g?{mimeType:m?.name||d.OCTET_STREAM,text:g,params:L}:void 0,oe=e.responses.map(t=>t.code);return{method:e.httpVerb,url:re,httpVersion:"HTTP/1.1",cookies:G,headers:N,queryString:Z,postData:ne,headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:X,basicAuth:K,pathParameters:ae,serverVariables:h,allResponseCodes:oe}}const f={withImports:!0,withComments:!1},A={curl:{code:"shell",defaultTarget:"curl",defaultOptions:{...f,short:!0}},JavaScript:{code:"javascript",defaultTarget:"fetch",defaultOptions:{...f,withImports:!1}},"Node.js":{code:"node",defaultTarget:"fetch",defaultOptions:{...f}},Python:{code:"python",defaultTarget:"requests",defaultOptions:{...f}},"Java8+Apache":{code:"java8",defaultTarget:"apachehttp",defaultOptions:{...f}},Java:{code:"java",defaultTarget:"httpclient",defaultOptions:{...f}},"C#":{code:"csharp",defaultTarget:"httpclient",defaultOptions:{...f}},"C#+Newtonsoft":{code:"csharpNewtonsoft",defaultTarget:"httpclient",defaultOptions:{...f}},Go:{code:"go",defaultTarget:"http.DefaultClient",defaultOptions:{...f}},PHP:{code:"php",defaultTarget:"curl",defaultOptions:{...f}},Ruby:{code:"ruby",defaultTarget:"net::http",defaultOptions:{...f}},R:{code:"r",defaultTarget:"httr",defaultOptions:{...f}}};function Ie({lang:e,operation:a,exampleName:o,pathParams:n,properties:s,options:r={},environment:c,translate:u}){try{const{skipOptionalParameters:i,withOAuth2Call:h,spec:k,generatedPayloadSamplesMaxDepth:_,store:p,activeMimeName:b}=r,w=_e(a,{exampleName:o,pathParams:n,properties:s,skipOptionalParameters:i,withOAuth2Call:h,spec:k,generatedPayloadSamplesMaxDepth:_,activeMimeName:b},{environment:c,requestValues:p.requestValues,activeSecuritySchemeIds:p.activeSecuritySchemeIds}),R=new ye(w);return A[e]?R.convert(A[e].code,A[e].defaultTarget,{...A[e].defaultOptions,...r}):u("openapi.unsupportedLanguage","Language is not supported.")}catch(i){return console.error(i),u("openapi.failedToGenerateCodeSample","Failed to generate code sample.")}}function Te(e,a,o){const n={securityHeaders:[],securityCookies:[],securityQueries:[],securityOAuth2ExtraCalls:[],basicAuth:void 0},s=o?.server;for(const r of e?.schemes||[]){const c=pe(r.id,o),u=s&&r.serverValues&&r.serverValues[s],i={access_token:u?.["x-defaultAccessToken"]||r["x-defaultAccessToken"],token_type:u?.["x-defaultTokenType"]||r["x-defaultTokenType"],client_id:u?.["x-defaultClientId"]||r["x-defaultClientId"],client_secret:u?.["x-defaultClientSecret"]||r["x-defaultClientSecret"]},h=u?.["x-defaultUsername"]||r["x-defaultUsername"],k=u?.["x-defaultPassword"]||r["x-defaultPassword"],_=u&&"scopes"in u?u.scopes||[]:r.scopes||[];switch(r.type){case"openIdConnect":n.securityHeaders?.push({name:"Authorization",value:i.access_token?`${i.token_type||"Bearer"} ${i.access_token}`:c.token?`${i.token_type||c.token.token_type||"Bearer"} ${c.token.access_token}`:"Bearer <YOUR_TOKEN_HERE>"});break;case"oauth2":{const p=i.access_token?`${i.token_type||"Bearer"} ${i.access_token}`:c.token?`${c.token.token_type||"Bearer"} ${c.token.access_token}`:"Bearer <YOUR_TOKEN_HERE>";r.flows.deviceAuthorization&&a?n.securityOAuth2ExtraCalls.push(ge(r.flows.deviceAuthorization,_)):r.flows.clientCredentials&&a?n.securityOAuth2ExtraCalls.push(Oe(r.flows.clientCredentials,_,{...c,client_id:i.client_id||c.client_id,client_secret:i.client_secret||c.client_secret})):r.flows.password&&a&&n.securityOAuth2ExtraCalls.push(ve(r.flows.password,_,{...c,client_id:i.client_id||c.client_id,client_secret:i.client_secret||c.client_secret})),n.securityHeaders?.push({name:"Authorization",value:p});break}case"apiKey":{const p=i.access_token||c.raw||"YOUR_API_KEY_HERE";r.in==="header"&&n.securityHeaders?.push({name:r.name,value:p}),r.in==="cookie"&&n.securityCookies.push({name:r.name,value:p}),(r.in==="query"||r.in==="querystring")&&n.securityQueries.push({name:r.name,value:p});break}case"http":if(r.scheme==="basic")n.basicAuth={username:h||c.username||`<${Y.toSnakeCase("Username")}>`,password:k||c.password||`<${Y.toSnakeCase("Password")}>`};else{const p=i?.access_token||c.token?.access_token||`<YOUR_${r.bearerFormat||"TOKEN"}_HERE>`;n.securityHeaders?.push({name:"Authorization",value:`${Ce(r.scheme||"bearer")} ${p}`})}break}}return n}function ge(e,a){const o=e["x-defaultClientId"]??"YOUR_CLIENT_ID",{tokenUrl:n,deviceAuthorizationUrl:s}=e;return{method:"POST",url:s,httpVersion:"HTTP/1.1",headers:[{name:"Content-Type",value:d.URL_ENCODED},{name:"Accept",value:d.JSON}],queryString:[],postData:{mimeType:d.URL_ENCODED,text:"",params:[{name:"client_id",value:o},a.length?{name:"scope",value:a.join(" ")}:void 0].filter(V)},cookies:[],headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:[],flowType:"deviceAuthorization",tokenUrl:n,clientId:o}}function ve(e,a,o){const{tokenUrl:n}=e,s=o.client_id??"YOUR_CLIENT_ID";return{method:"POST",url:e.tokenUrl,httpVersion:"HTTP/1.1",headers:[{name:"Content-Type",value:d.URL_ENCODED},{name:"Accept",value:d.JSON}],queryString:[],postData:{mimeType:d.URL_ENCODED,text:"",params:[{name:"grant_type",value:"password"},{name:"client_id",value:s},{name:"client_secret",value:o.client_secret||"YOUR_CLIENT_SECRET"},{name:"username",value:o.username||"<username>"},{name:"password",value:o.password||"<password>"},a.length?{name:"scope",value:a.join(" ")}:void 0].filter(V)},cookies:[],headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:[],flowType:"password",tokenUrl:n,clientId:s}}function Oe(e,a,o){const{tokenUrl:n}=e,s=o.client_id??"YOUR_CLIENT_ID";return{method:"POST",url:e.tokenUrl,httpVersion:"HTTP/1.1",headers:[{name:"Content-Type",value:d.URL_ENCODED},{name:"Accept",value:d.JSON}],queryString:[],postData:{mimeType:d.URL_ENCODED,text:"",params:[{name:"grant_type",value:"client_credentials"},{name:"client_id",value:s},{name:"client_secret",value:o.client_secret||"YOUR_CLIENT_SECRET"},a.length?{name:"scope",value:a.join(" ")}:void 0].filter(V)},cookies:[],headersSize:-1,bodySize:-1,securityOAuth2ExtraCalls:[],flowType:"clientCredentials",tokenUrl:n,clientId:s}}function j(e,a){if(e){if(ue(e))return Object.keys(e).length>0&&Object.keys(a).length===0?e:$(e,a,{arrayMerge:J});try{return $(JSON.parse(e),a,{arrayMerge:J})}catch{return!1}}return!1}function B(e,a=""){const o=[];for(const[n,s]of Object.entries(e)){const r=a?`${a}[${n}]`:n;if(typeof s=="object"&&s!==null)o.push(...B(s,r));else{const c=Array.isArray(e)&&typeof s=="string"&&a?a:r;o.push({name:c,value:String(s)})}}return o}function V(e){return e!==void 0}function Ce(e){return e.charAt(0).toUpperCase()+e.slice(1)}function ke(e,a){if(!e||typeof e!="object"||!a||typeof a!="object")return e;const o=JSON.parse(JSON.stringify(e));function n(s,r){if(!(!s||!r||typeof s!="object"||typeof r!="object")&&s.properties){for(const c in s.properties)if(r[c]!==void 0){const u=s.properties[c],i=r[c];if(u.type==="object"&&typeof i=="object"&&!Array.isArray(i))n(u,i);else if(u.type==="array"&&Array.isArray(i)&&i.length>0){const h=i[0];u.items&&u.items.properties&&n(u.items,h)}else u.example=i}}}return n(o,a),o}export{Ce as capitalizeFirst,Ie as getCodeSample,j as getDataRequest,V as isDefined,B as objectToHarParams,C as safeSample};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{getTagGroupsItems as
|
|
1
|
+
import{getTagGroupsItems as c,getTagsItems as g,getTagsWithOperations as p,buildNestedTagsItems as h}from"./tags.js";import{addMarkdownItems as l}from"./markdown.js";import{flattenByProp as T,getValueFromMdParsedExtension as x}from"../../utils/index.js";import{DEFAULT_WEBHOOKS_TAG_NAME as d}from"../../constants.js";function A(n,o){const{definition:e}=n,{schemaDefinitionsTagName:i}=o,a=[{id:"",name:e?.info?.["x-seo"]?.title||e?.info?.title||"Overview",href:"/",depth:1,level:1,type:"section",infoDefinition:e.info,items:[],keywords:e["x-keywords"]}],s=[...e.tags||[]];if(s.some(t=>t.name===d)||s.push({name:d}),!s.find(t=>t?.name===i)&&i&&s.push({name:i}),e["x-mcp"])for(const t of["Tools","Resources","Prompts"])e["x-mcp"][t]&&(s.find(r=>r?.name===t)||s.push({name:t}));const f=p(n,s),m=e["x-tagGroups"],u=Object.values(f).some(t=>t.parent);return a.push(...l(x(e.info,"description")||"",void 0,1)),u?a.push(...h(n,f,void 0,o)):m&&m.length>0?a.push(...c(n,void 0,m,f,o)):a.push(...g(n,f,void 0,void 0,o)),a}function w(n,o){const e=A(n,o),i=T(e||[],"items");return{contentItems:e,flatItems:i}}export{w as buildContentItems,A as buildMenuStructure};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import h from"@markdoc/markdoc";import{isString as T}from"@redocly/theme/core/openapi";import{getTagOrGroup as d}from"../../models/index.js";import{safeSlugify as y,unescapeHTMLChars as A}from"../../utils/index.js";function x(e,n,a){const i=T(e)?h.parse(e):h.Ast.fromJSON(JSON.stringify(e?.result)),s=[];let o;const l=(t,u,g=s,r,p)=>{t=A(t);let f;r.attributes.id?f=r.attributes.id:(f=p?`${p}/${y(t)}`:`section/${y(t)}`,r.attributes.id=f);const b={id:f.toLowerCase(),name:t,level:u,items:[],ast:[r]};return g.push(b),b},c=(t,u)=>{t[t.length-1]?.ast?.push(u)},m=t=>{const u=C(t)||"",r=n&&n.type==="tag"?n.id:void 0;t.type==="heading"&&t.attributes.level===1?o=l(u,t.attributes.level,void 0,t,r):t.attributes.level?l(u,t.attributes.level,o?.items,t,o?.id??r):o?.items?.length?c(o?.items,t):s?.length&&c(s,t)};if(Array.isArray(i))for(const t of i)m(t);else m(i);return v(n,s,a)}function v(e,n,a=1){return n.map(i=>{const s=d("section",i,e);return s.depth=a,i.items&&(s.items=v(s,i.items,a+1)),s})}function C(e){if(typeof e?.attributes?.content=="string")return e.attributes?.content;if(e?.children)return C(e.children[0])}export{x as addMarkdownItems};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { GroupModel, OperationMenuItem, ContentItemModel } from '../../models/index.js';
|
|
2
|
-
import type { TagInfo } from '../types.js';
|
|
2
|
+
import type { TagInfo, TagsInfoMap } from '../types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Returns array of Operation items for the tag
|
|
5
5
|
* @param parent parent OperationsGroup
|
|
6
6
|
* @param tag tag info returned from `getTagsWithOperations`
|
|
7
7
|
* @param depth items depth
|
|
8
8
|
*/
|
|
9
|
-
export declare function getOperationsItems(parent: GroupModel | undefined, tag: TagInfo, depth: number): OperationMenuItem[];
|
|
9
|
+
export declare function getOperationsItems(parent: GroupModel | undefined, tag: TagInfo, depth: number, tagsMap?: TagsInfoMap): OperationMenuItem[];
|
|
10
10
|
export declare function getHref({ id }: Pick<ContentItemModel, 'id'>): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{REDOCLY_TEAMS_RBAC as
|
|
1
|
+
import{REDOCLY_TEAMS_RBAC as n}from"@redocly/config";import{encodeBackSlashes as h,getOperationId as l,getOperationName as k}from"../../utils/index.js";function I(t,r,f,a){if(r.operations.length===0)return[];const s=[],d=[],p=[];if(a)for(const e of Object.values(a))(e.kind==="badge"||e.kind==="audience")&&p.push(e);for(const e of r.operations){const o=l(e,t),m="operation",c=[...e["x-badges"]||[]];if(e.tags)for(const b of e.tags){const i=p.find(g=>g.name===b);i&&c.push({name:i.summary||i.name,color:i.kind==="audience"?"grey":"blue",position:"after",icon:i.kind==="audience"?"user-group":void 0})}const u={id:o,type:m,parent:t,operationDefinition:e,depth:f,name:k(e),httpVerb:e.httpVerb,path:e.pathName,items:[],isAdditionalOperation:e.isAdditionalOperation,isWebhook:e.isWebhook,isRpc:e.isRpc||!!e["x-redocly-openrpc"],operationId:e.operationId,badges:c,href:N({id:o}),deprecated:!!e.deprecated,[n]:e[n]||t?.[n]};e.isWebhook?d.push(u):s.push(u)}return[...s.sort((e,o)=>Number(e.deprecated)-Number(o.deprecated)||Number(e.isAdditionalOperation)-Number(o.isAdditionalOperation)),...d.sort((e,o)=>Number(e.deprecated)-Number(o.deprecated))]}function N({id:t}){return h(`/${t}`.toLowerCase())}export{N as getHref,I as getOperationsItems};
|
|
@@ -26,4 +26,5 @@ export declare function getTagGroupsItems(parser: OpenAPIParser, parent: GroupMo
|
|
|
26
26
|
*/
|
|
27
27
|
export declare function getTagsWithOperations(parser: OpenAPIParser, explicitTags: OpenAPITag[]): TagsInfoMap;
|
|
28
28
|
export declare function processOperation(parser: OpenAPIParser, operationName: string, operationInfo: any, pathName: string, path: any, tags: TagsInfoMap, isWebhook?: boolean, isAdditionalOperation?: boolean): void;
|
|
29
|
+
export declare function buildNestedTagsItems(parser: OpenAPIParser, tagsMap: TagsInfoMap, parent: GroupModel | undefined, options: Options): ContentItemModel[];
|
|
29
30
|
export declare function capitalize(input: string): string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{getTagOrGroup as
|
|
1
|
+
import{getTagOrGroup as u}from"../../models/group.js";import{DEFAULT_WEBHOOKS_TAG_NAME as y,GROUP_DEPTH as O,MAX_NESTING_TAGS_LEVEL as _}from"../../constants.js";import{getValueFromMdParsedExtension as h,isOperationName as j,JsonPointer as R,safeSlugify as D}from"../../utils/index.js";import{getOperationsItems as g}from"./operation.js";import{addMarkdownItems as T}from"./markdown.js";import{joinWithSeparator as G}from"../history/helpers.js";const S=["tools","resources","prompts"];function C(r,a,o,s,i){let t;if(s===void 0?t=Object.keys(a):t=s.tags,!Array.isArray(t))return console.warn("Unexpected values of tags. Check tags or x-tagGroups in your definition."),[];const f=t.map(e=>a[e]?(a[e].used=!0,a[e]):(console.warn(`Non-existing tag "${e}" is added to the group "${s?.name}"`),null)),c=[];for(const e of f){if(!e)continue;const n=u("tag",e,o);if(n.depth=O+1,e.name===""){const d=[...T(h(e,"description")||"",n,n.depth+1),...g(void 0,e,n.depth+1,a)];c.push(...d);continue}const m=w({definition:r.definition,tag:e,parent:n,schemaDefinitionsTagName:i.schemaDefinitionsTagName}),l=E(r.definition,e,n);n.items=[...m,...l,...T(h(e,"description")||"",n,n.depth+1),...g(n,e,n.depth+1,a)],c.push(n)}return c.filter(({name:e,items:n})=>e!==y||n.length>0)}function H(r,a,o,s,i){const t=[];for(const f of o){const c=u("group",f,a);c.depth=O,c.items=C(r,s,c,f,i),t.push(c)}return t}function w({definition:r,tag:a,parent:o,schemaDefinitionsTagName:s}){const i=s?[s]:[];return Object.entries(r.components?.schemas||{}).map(([t,f])=>{if(!(f?.["x-tags"]||i).includes(a.name))return null;const e=u("schema",{name:t,"x-displayName":`${f.title||t}`,description:`{% schemaDefinition showWriteOnly="true" schemaRef="#/components/schemas/${t}" /%}`,isSchema:!0,level:2},o);return e.depth=o.depth+1,e}).filter(Boolean)}function E(r,a,o){const s=[];for(const i of S)if(r["x-mcp"]?.[i]){const t=$(i),f=[t];for(const c of r["x-mcp"]?.[i]||[])if((c.tags?.length?c.tags:f).includes(a.name)){const n=G(o.id,D(c.name)),m=i==="tools"?`Tool name: \`${c.name}\`
|
|
2
2
|
|
|
3
|
-
`:"",
|
|
4
|
-
{% mcp${t.slice(0,-1)} name="${
|
|
3
|
+
`:"",d=u(i==="tools"?"tool":i==="resources"?"rsrc":"prompt",{name:c.name,"x-displayName":c.title||c.name,description:`${m}${c.description||""}
|
|
4
|
+
{% mcp${t.slice(0,-1)} name="${c.name}" id="${n}" /%}`,isSchema:!0,level:2},o);d.depth=o.depth+1,s.push(d)}}return s}function W(r,a){const{definition:o}=r,s={},i=o["x-webhooks"]||o.webhooks,t=o["x-mcp"];for(const f of a||[])s[f.name]={...f,operations:[]};return o.paths&&N(r,o.paths,s),i&&N(r,i,s,!0),t&&U(t,s),s}function U(r,a){for(const o of S)if(r[o])for(const s of r[o]){const i=s.tags&&s.tags.length?s.tags:[$(o)];for(const t of i){let f=a[t];f===void 0&&(f={name:t,operations:[],used:!0},a[t]=f)}}}function P(r,a,o,s,i,t,f,c){if(i.$ref){const{resolved:n}=r.deref(i);N(r,{[s]:n},t,f);return}let e=o?.tags;(!e||!e.length)&&(e=f?[y]:[""]);for(const n of e){let m=t[n];if(m===void 0&&(m={name:n,operations:[]},t[n]=m),m["x-traitTag"])continue;const l=o.isRpc||!!o["x-redocly-openrpc"]||!!r.definition["x-redocly-openrpc"],d=!!o.responses?.["200"]?.content?.["application/json"];m.operations.push({...o,pathName:s,pointer:R.compile(["paths",s,a]),httpVerb:l?d?"NOTIF":"CALL":a==="x-query"?"query":a,pathParameters:i.parameters||[],pathServers:i.servers,isWebhook:!!f,isRpc:l,isAdditionalOperation:!!c,keywords:o["x-keywords"]})}}function N(r,a,o,s){for(const i of Object.keys(a||{})){const t=a[i],f=Object.keys(t).filter(j);for(const c of f){const e=t[c];P(r,c,e,i,t,o,s)}if(t.additionalOperations)for(const[c,e]of Object.entries(t.additionalOperations))P(r,c,e,i,t,o,s,!0)}}function z(r,a,o,s){const i=Object.values(a).filter(e=>{const n=e.kind;return n===void 0||n==="nav"}),t=new Map;i.forEach(e=>{t.set(e.name,e)});const f=i.filter(e=>{const n=e.parent;return!n||!t.has(n)}),c=(e,n,m=1)=>{if(m>_)return console.warn("The tags exceed the maximum nesting level."),[];const l=[];for(const d of e){const p=u("tag",d,n);if(p.depth=(n?.depth||O)+1,d.name===""){const x=[...T(h(d,"description")||"",p,p.depth+1),...g(void 0,d,p.depth+1,a)];l.push(...x);continue}const b=i.filter(x=>x.parent===d.name),k=w({definition:r.definition,tag:d,parent:p,schemaDefinitionsTagName:s.schemaDefinitionsTagName}),A=E(r.definition,d,p),v=c(b,p,m+1);p.items=[...k,...A,...T(h(d,"description")||"",p,p.depth+1),...g(p,d,p.depth+1,a),...v],l.push(p)}return l};return c(f,o,1).filter(({name:e,items:n})=>e!==y||n.length>0)}function $(r){return r.charAt(0).toUpperCase()+r.slice(1)}export{z as buildNestedTagsItems,$ as capitalize,H as getTagGroupsItems,C as getTagsItems,W as getTagsWithOperations,P as processOperation};
|
package/lib/services/types.d.ts
CHANGED
|
@@ -51,6 +51,7 @@ export type ExtendedOpenAPIOperation = {
|
|
|
51
51
|
pathParameters: Array<Referenced<OpenAPIParameter>>;
|
|
52
52
|
pathServers: Array<OpenAPIServer> | undefined;
|
|
53
53
|
isWebhook: boolean;
|
|
54
|
+
isRpc?: boolean;
|
|
54
55
|
isAdditionalOperation: boolean;
|
|
55
56
|
defaultSampleName?: string | false;
|
|
56
57
|
keywords?: unknown;
|
|
@@ -94,6 +95,9 @@ export interface HooksConfig {
|
|
|
94
95
|
AfterApiTitle?: HookConfig<{
|
|
95
96
|
info: OpenAPIInfo;
|
|
96
97
|
}>;
|
|
98
|
+
AfterOpenApiDescription?: HookConfig<{
|
|
99
|
+
info: OpenAPIInfo;
|
|
100
|
+
}>;
|
|
97
101
|
BeforeOperation?: HookConfig<{
|
|
98
102
|
operation: OperationModel;
|
|
99
103
|
}>;
|
|
@@ -115,6 +119,9 @@ export interface HooksConfig {
|
|
|
115
119
|
sanitize?: (raw: string) => string;
|
|
116
120
|
MiddlePanelFooter?: HookConfig<undefined>;
|
|
117
121
|
MiddlePanelHeader?: HookConfig<undefined>;
|
|
122
|
+
AfterOpenApiInfo?: HookConfig<{
|
|
123
|
+
info: OpenAPIInfo;
|
|
124
|
+
}>;
|
|
118
125
|
}
|
|
119
126
|
export type ExtendedMenuItem = Omit<IMenuItem, 'type'> & {
|
|
120
127
|
type: MenuItemType | 'spec';
|
package/lib/types/index.d.ts
CHANGED
package/lib/types/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export*from"./open-api.js";export*from"./security.js";export*from"./app.js";
|
|
1
|
+
export*from"./open-api.js";export*from"./security.js";export*from"./app.js";export*from"./oauth2-types.js";
|
|
File without changes
|
package/lib/types/open-api.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export interface OpenAPIDefinition {
|
|
|
4
4
|
openapi: string;
|
|
5
5
|
info: OpenAPIInfo;
|
|
6
6
|
servers?: OpenAPIServer[];
|
|
7
|
+
'x-servers'?: OpenAPIServer[];
|
|
7
8
|
paths: OpenAPIPaths;
|
|
8
9
|
components?: OpenAPIComponents;
|
|
9
10
|
security?: OpenAPISecurityRequirement[];
|
|
@@ -52,6 +53,12 @@ export interface OpenAPIServer extends ParsedDescription {
|
|
|
52
53
|
description?: string;
|
|
53
54
|
name?: string;
|
|
54
55
|
variables?: OpenAPIServerVariables;
|
|
56
|
+
'x-isLive'?: boolean;
|
|
57
|
+
'x-labels'?: {
|
|
58
|
+
label?: string;
|
|
59
|
+
color?: string;
|
|
60
|
+
value: string;
|
|
61
|
+
}[];
|
|
55
62
|
}
|
|
56
63
|
export interface OpenAPIServerVariables {
|
|
57
64
|
[name: string]: OpenAPIServerVariable;
|
|
@@ -77,6 +84,8 @@ export interface OpenAPIPath extends Partial<OpenAPIRef>, ParsedDescriptionWithS
|
|
|
77
84
|
get?: OpenAPIOperation;
|
|
78
85
|
put?: OpenAPIOperation;
|
|
79
86
|
post?: OpenAPIOperation;
|
|
87
|
+
query?: OpenAPIOperation;
|
|
88
|
+
'x-query'?: OpenAPIOperation;
|
|
80
89
|
delete?: OpenAPIOperation;
|
|
81
90
|
options?: OpenAPIOperation;
|
|
82
91
|
head?: OpenAPIOperation;
|
|
@@ -93,6 +102,8 @@ export interface OpenAPIXBadges {
|
|
|
93
102
|
name: string;
|
|
94
103
|
color?: string;
|
|
95
104
|
position?: 'before' | 'after';
|
|
105
|
+
icon?: string;
|
|
106
|
+
description?: string;
|
|
96
107
|
}
|
|
97
108
|
export interface OpenAPIOperation extends ParsedDescriptionWithSummary {
|
|
98
109
|
tags?: string[];
|
|
@@ -146,11 +157,15 @@ export interface OpenAPIExample extends ParsedDescriptionWithSummary {
|
|
|
146
157
|
serializedValue?: string;
|
|
147
158
|
externalValue?: string;
|
|
148
159
|
}
|
|
160
|
+
export type XMLNodeType = 'element' | 'attribute' | 'text' | 'cdata' | 'none';
|
|
149
161
|
export interface XMLObject {
|
|
162
|
+
nodeType?: XMLNodeType;
|
|
150
163
|
name?: string;
|
|
151
164
|
namespace?: string;
|
|
152
165
|
prefix?: string;
|
|
166
|
+
/** @deprecated Use nodeType: "attribute" instead */
|
|
153
167
|
attribute?: boolean;
|
|
168
|
+
/** @deprecated Use nodeType: "element" instead (for wrapped arrays) */
|
|
154
169
|
wrapped?: boolean;
|
|
155
170
|
}
|
|
156
171
|
export interface OpenAPISchema extends ParsedDescription {
|
|
@@ -234,7 +249,7 @@ export interface OpenAPIEncoding {
|
|
|
234
249
|
explode: boolean;
|
|
235
250
|
allowReserved: boolean;
|
|
236
251
|
}
|
|
237
|
-
export type OpenAPIParameterLocation = 'query' | 'header' | 'path' | 'cookie';
|
|
252
|
+
export type OpenAPIParameterLocation = 'query' | 'header' | 'path' | 'cookie' | 'querystring';
|
|
238
253
|
export type OpenAPIParameterStyle = 'matrix' | 'label' | 'form' | 'simple' | 'spaceDelimited' | 'pipeDelimited' | 'deepObject';
|
|
239
254
|
export interface OpenAPIRequestBody extends ParsedDescription {
|
|
240
255
|
$ref?: string;
|
|
@@ -311,6 +326,9 @@ export interface OpenAPIComponents {
|
|
|
311
326
|
callbacks?: {
|
|
312
327
|
[name: string]: Referenced<OpenAPICallback>;
|
|
313
328
|
};
|
|
329
|
+
mediaTypes?: {
|
|
330
|
+
[name: string]: Referenced<OpenAPIMediaType>;
|
|
331
|
+
};
|
|
314
332
|
}
|
|
315
333
|
export interface OpenAPISecurityRequirement {
|
|
316
334
|
[name: string]: string[];
|
|
@@ -319,7 +337,7 @@ export interface OpenAPISecurityScheme extends ParsedDescription {
|
|
|
319
337
|
type: 'apiKey' | 'http' | 'oauth2' | 'openIdConnect';
|
|
320
338
|
description?: string;
|
|
321
339
|
name?: string;
|
|
322
|
-
in?: 'query' | 'header' | 'cookie';
|
|
340
|
+
in?: 'query' | 'header' | 'cookie' | 'querystring';
|
|
323
341
|
scheme?: string;
|
|
324
342
|
bearerFormat: string;
|
|
325
343
|
'x-defaultClientId'?: string;
|
|
@@ -365,7 +383,10 @@ export interface OpenAPISecurityScheme extends ParsedDescription {
|
|
|
365
383
|
export interface OpenAPITag extends ParsedDescription {
|
|
366
384
|
name: string;
|
|
367
385
|
description?: string;
|
|
386
|
+
summary?: string;
|
|
368
387
|
externalDocs?: OpenAPIExternalDocumentation;
|
|
388
|
+
parent?: string;
|
|
389
|
+
kind?: 'badge' | 'audience' | 'nav';
|
|
369
390
|
'x-displayName'?: string;
|
|
370
391
|
'x-rbac'?: Record<string, unknown>;
|
|
371
392
|
'x-keywords'?: unknown;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{trimText as s}from"@redocly/theme/core/openapi";const e=10,m=40;function T(n,l,c,o){if(!n.length||l<=0)return e;const x=Math.max(0,l-(c?m:0));o.textContent="/";const r=o.scrollWidth,W=(n.length-1)*r,d=Math.max(...n.map(t=>t.name.length),e);let h=e,i=d,a=e;for(;h<=i;){const t=Math.floor((h+i)/2);n.reduce((f,g)=>(o.textContent=s(g.name,t),f+o.scrollWidth),0)+W<=x?(a=t,h=t+1):i=t-1}return a}export{T as calculateMaxLength};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function n(r){if(r.type!=="tag")return[];const t=[];let e=r.parent;for(;e&&e.type==="tag";)t.unshift({name:e.name,href:e.href}),e=e.parent;return t}export{n as getBreadcrumbs};
|
package/lib/utils/index.d.ts
CHANGED
|
@@ -20,5 +20,7 @@ export * from './isMobile.js';
|
|
|
20
20
|
export * from './replaceVariables.js';
|
|
21
21
|
export * from './areArraysEqual.js';
|
|
22
22
|
export * from './hasNestedFields.js';
|
|
23
|
+
export * from './getBreadcrumbs.js';
|
|
24
|
+
export * from './calculateMaxLength.js';
|
|
23
25
|
export * from './configure-helpers.js';
|
|
24
26
|
export * from './telemetry.js';
|
package/lib/utils/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export*from"./JsonPointer.js";export*from"./openapi.js";export*from"./helpers.js";export*from"./dom.js";export*from"./debug.js";export*from"./sort.js";export*from"./argValuesHelpers.js";export*from"./theme-helpers.js";export*from"./debounce.js";export*from"./security-details.js";export*from"./session-storage.js";export*from"./local-storage.js";export*from"./parameters.js";export*from"./string.js";export*from"./compose.js";export*from"./saveTextBeforeHeading.js";export*from"./path.js";export*from"./queryString.js";export*from"./isMobile.js";export*from"./replaceVariables.js";export*from"./areArraysEqual.js";export*from"./hasNestedFields.js";export*from"./configure-helpers.js";export*from"./telemetry.js";
|
|
1
|
+
export*from"./JsonPointer.js";export*from"./openapi.js";export*from"./helpers.js";export*from"./dom.js";export*from"./debug.js";export*from"./sort.js";export*from"./argValuesHelpers.js";export*from"./theme-helpers.js";export*from"./debounce.js";export*from"./security-details.js";export*from"./session-storage.js";export*from"./local-storage.js";export*from"./parameters.js";export*from"./string.js";export*from"./compose.js";export*from"./saveTextBeforeHeading.js";export*from"./path.js";export*from"./queryString.js";export*from"./isMobile.js";export*from"./replaceVariables.js";export*from"./areArraysEqual.js";export*from"./hasNestedFields.js";export*from"./getBreadcrumbs.js";export*from"./calculateMaxLength.js";export*from"./configure-helpers.js";export*from"./telemetry.js";
|
package/lib/utils/mcp.d.ts
CHANGED
package/lib/utils/mcp.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const o=["tools","resources","prompts","logging","subscribe","completions"],s="experimental",e=["mcp-
|
|
1
|
+
const o=["tools","resources","prompts","logging","subscribe","completions"],s="experimental",e=["docs-mcp-json"];export{o as MCP_SERVER_CAPABILITIES,s as MCP_SERVER_EXPERIMENTAL_CAPABILITIES,e as PAGE_ACTIONS_MCP};
|
package/lib/utils/openapi.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { OpenAPIEncoding, OpenAPIMediaType, OpenAPIParameterStyle, OpenAPIR
|
|
|
2
2
|
import type { ExtendedOpenAPIOperation, OpenAPIParser } from '../services/index.js';
|
|
3
3
|
import type { FieldModel, GroupModel } from '../models/index.js';
|
|
4
4
|
export declare function isStatusCode(statusCode: string): boolean;
|
|
5
|
-
export declare function getStatusCodeType(statusCode: string | number, defaultAsError?: boolean): string;
|
|
5
|
+
export declare function getStatusCodeType(statusCode: string | number, defaultAsError?: boolean, isRpc?: boolean): string;
|
|
6
6
|
export declare function isOperationName(key: string): boolean;
|
|
7
7
|
export declare function getOperationName(operation: ExtendedOpenAPIOperation): string;
|
|
8
8
|
export declare function getOperationId(operation: ExtendedOpenAPIOperation, parent?: GroupModel): string;
|
|
@@ -18,6 +18,7 @@ export declare function urlFormEncodePayload(payload: GenericObject, encoding?:
|
|
|
18
18
|
}): string;
|
|
19
19
|
export declare function serializeQueryParameter(name: string, style: OpenAPIParameterStyle | undefined, explode: boolean, value: unknown): string;
|
|
20
20
|
export declare function serializeParameterValueWithMime(value: unknown, mime: string): string;
|
|
21
|
+
export declare function serializeQueryStringParameterValueWithMime(value: unknown, mime: string, name: string): string;
|
|
21
22
|
export declare function serializeParameterValue(parameter: FieldModel, value: unknown): string;
|
|
22
23
|
export declare function langFromMime(contentType: string): string;
|
|
23
24
|
export declare function isNamedDefinition(pointer?: string): boolean;
|
|
@@ -38,6 +39,9 @@ export declare const shortenHTTPVerb: (verb: string) => string;
|
|
|
38
39
|
export declare function isRedocExtension(key: string): boolean;
|
|
39
40
|
export declare function extractExtensions(obj: GenericObject, showExtensions: string[] | true): GenericObject;
|
|
40
41
|
export declare function pluralizeType(displayType: string): string;
|
|
42
|
+
export declare function getContent(parser: OpenAPIParser, info: OpenAPIRequestBody | OpenAPIResponse): {
|
|
43
|
+
[mime: string]: OpenAPIMediaType;
|
|
44
|
+
} | undefined;
|
|
41
45
|
export declare function getContentWithLegacyExamples(info: OpenAPIRequestBody | OpenAPIResponse): {
|
|
42
46
|
[mime: string]: OpenAPIMediaType;
|
|
43
47
|
} | undefined;
|
package/lib/utils/openapi.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{dirname as b}from"path";import m from"url-template";import{deleteEmptyArrayItem as w,isArrayOfObjects as E,isNumeric as S,removeQueryStringAndHash as T,resolveUrl as N,sanitizeItemId as l,normalizeText as g,getValueFromMdParsedExtension as j,isAbsoluteUrl as z}from"./helpers.js";import{DEFAULT_TAG_SLUG as D,MediaTypes as a}from"../constants.js";import{JsonPointer as _}from"./JsonPointer.js";import{joinWithSeparator as $}from"../services/index.js";import{tryDecodeURIComponent as R}from"./string.js";import{getUrlDirname as L}from"./url.js";import{IS_BROWSER as U}from"./dom.js";function P(e){return typeof e=="string"&&/\dxx/i.test(e)}function ne(e){return e==="default"||S(e)||P(e)}function ie(e,r=!1){if(e==="default")return r?"error":"success";let t=typeof e=="string"?parseInt(e,10):e;if(P(e)&&(t*=100),t<100||t>599)throw new Error("invalid HTTP code");let n="success";return t>=300&&t<400?n="redirect":t>=400?n="error":t<200&&(n="info"),n}const q={get:!0,post:!0,put:!0,head:!0,patch:!0,delete:!0,options:!0,$ref:!0};function oe(e){return e in q}function ue(e){const{operationId:r,pathName:t}=e,n=g(j(e,"description"));return g(j(e,"summary"))||r||n&&n.substring(0,50)||t||"<no summary>"}function se(e,r){return r?.id?$(r.id,l(e.operationId?e.operationId:d(e.pointer))).toLowerCase():e.tags?.length?l(e.operationId?e.operationId:d(e.pointer)):l(e.operationId?$(D,e.operationId):d(e.pointer))}function d(e){return e?.startsWith("/")?e.slice(1,e.length):e}const O={multipleOf:"number",maximum:"number",exclusiveMaximum:"number",minimum:"number",exclusiveMinimum:"number",maxLength:"string",minLength:"string",pattern:"string",contentEncoding:"string",contentMediaType:"string",items:"array",maxItems:"array",minItems:"array",uniqueItems:"array",maxProperties:"object",minProperties:"object",required:"object",additionalProperties:"object",unevaluatedProperties:"object",patternProperties:"object",properties:"object"};function ae(e){if(e.type!==void 0&&!Array.isArray(e.type))return e.type;const r=Object.keys(O);for(const t of r){const n=O[t];if(e[t]!==void 0)return n}return"any"}function F(e,r=e.type){if(e["x-circular-ref"]||e["x-complex"])return!0;if(e.oneOf!==void 0||e.anyOf!==void 0||e.if&&e.then||e.if&&e.else)return!1;let t=!0;const n=Array.isArray(r);return(r==="object"||n&&r?.includes("object"))&&(t=e.properties!==void 0?Object.keys(e.properties).length===0:e.additionalProperties===void 0&&e.unevaluatedProperties===void 0&&e.patternProperties===void 0),Array.isArray(e.items)||Array.isArray(e.prefixItems)?!1:(e.items!==void 0&&typeof e.items!="boolean"&&(r==="array"||n&&r?.includes("array"))&&(t=F(e.items,e.items.type)),t)}function k(e){return e.search(/json/i)!==-1}function ce(e){return e?.search(/xml/i)!==-1}function pe(e){return e===a.URL_ENCODED}function fe(e){return e===a.MULTIPART}function me(e){return[a.JSONL,a.NDJSON,a.JSON_SEQ,a.EVENT_STREAM,a.MULTIPART_MIXED].includes(e)}function p(e,r,t){return Array.isArray(e)?e.map(n=>n.toString()).join(t):typeof e=="object"?Object.keys(e).map(n=>`${n}${t}${e[n]}`).join(t):r+"="+e.toString()}function A(e,r){return Array.isArray(e)?(console.warn("deepObject style cannot be used with array value:"+e.toString()),""):typeof e=="object"?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 c(e,r,t){const n="__redoc_param_name__",i=r?"*":"";return m.parse(`{?${n}${i}}`).expand({[n]:t}).substring(1).replace(/__redoc_param_name__/g,e)}function I(e,r){const t=e?"*":"",n="__redoc_param_name__",i=m.parse(`{${n}${t}}`);return R(i.expand({[n]:r}))}function le(e,r={}){if(Array.isArray(e))throw new Error("Payload must have fields: "+e.toString());return Object.keys(e).map(t=>{const n=e[t],{style:i="form",explode:o=!0}=r[t]||{};switch(i){case"form":return c(t,o,n);case"spaceDelimited":return p(n,t,"%20");case"pipeDelimited":return p(n,t,"|");case"deepObject":return A(n,t);default:return console.warn("Incorrect or unsupported encoding style: "+i),""}}).join("&")}function W(e,r,t,n){const i=t?"*":"";let o="";r==="label"?o=".":r==="matrix"&&(o=";");const s="__redoc_param_name__";return m.parse(`{${o}${s}${i}}`).expand({[s]:n}).replace(/__redoc_param_name__/g,e)}function H(e,r,t,n){const i=o=>{switch(r){case"form":return c(e,t,o);case"spaceDelimited":return!Array.isArray(o)&&typeof o!="object"?(console.warn("The style spaceDelimited is applicable to arrays or objects"),""):t?c(e,t,o):p(n,e,"%20");case"pipeDelimited":return!Array.isArray(o)&&typeof o!="object"?(console.warn("The style pipeDelimited is applicable to arrays or objects"),""):t?c(e,t,o):p(n,e,"|");case"deepObject":return!t||Array.isArray(o)||typeof o!="object"?(console.warn("The style deepObject is only applicable for objects with explode=true"),""):A(o,e);case"simple":return I(t,n);default:return console.warn("Unexpected style for query: "+r),""}};return E(n)&&(n=w(n).map(o=>i(o))),i(n)}function C(e,r,t){switch(e){case"simple":return I(r,t);default:return console.warn("Unexpected style for header: "+e),""}}function J(e,r,t,n){switch(r){case"form":return c(e,t,n);default:return console.warn("Unexpected style for cookie: "+r),""}}function M(e,r){return k(r)?JSON.stringify(e):(console.warn(`Parameter serialization as ${r} is not supported`),"")}function de(e,r){const{name:t,style:n,explode:i=!1,serializationMime:o}=e;if(o)switch(e.in){case"path":case"header":return M(r,o);case"cookie":case"query":return`${t}=${M(r,o)}`;default:return console.warn("Unexpected parameter location: "+e.in),""}if(!n)return console.warn(`Missing style attribute or content for parameter ${t}`),"";switch(e.in){case"path":return W(t,n,i,r);case"query":return H(t,n,i,r);case"header":return C(n,i,r);case"cookie":return J(t,n,i,r);default:return console.warn("Unexpected parameter location: "+e.in),""}}function xe(e){return e.search(/xml/i)!==-1?"xml":e.includes("application/json-seq")?"json-seq":e.includes("application/jsonl")?"jsonl":e.includes("json")?"json":e.includes("multipart/mixed")?"multipart-mixed":e.includes("text/event-stream")?"yaml":"clike"}const h=/^#\/components\/(schemas|pathItems)\/([^/]+)$/;function ye(e){return h.test(e||"")}function be(e){return e?.match(h)?.pop()}function B(e){if(e===void 0)return;const r=e.toString(10);return/^0\.0*1$/.test(r)?`decimal places <= ${r.split(".")[1].length}`:`multiple of ${r}`}function x(e,r,t){let n;return r!==void 0&&t!==void 0?r===t?n=`= ${r} ${e}`:n=`[ ${r} .. ${t} ] ${e}`:t!==void 0?n=`<= ${t} ${e}`:r!==void 0&&(r===1?n="non-empty":n=`>= ${r} ${e}`),n}function G(e){const r=typeof e.exclusiveMinimum=="number"?Math.min(e.exclusiveMinimum,e.minimum??1/0):e.minimum,t=typeof e.exclusiveMaximum=="number"?Math.max(e.exclusiveMaximum,e.maximum??-1/0):e.maximum,n=typeof e.exclusiveMinimum=="number"||e.exclusiveMinimum,i=typeof e.exclusiveMaximum=="number"||e.exclusiveMaximum;if(r!==void 0&&t!==void 0)return`${n?"( ":"[ "}${r} .. ${t}${i?" )":" ]"}`;if(t!==void 0)return`${i?"< ":"<= "}${t}`;if(r!==void 0)return`${n?"> ":">= "}${r}`}function ge(e){const r=[],t=x("characters",e.minLength,e.maxLength);t!==void 0&&r.push(t);const n=x("items",e.minItems,e.maxItems);n!==void 0&&r.push(n);const i=x(e.minProperties===1&&e.maxProperties===1?"property":"properties",e.minProperties,e.maxProperties);i!==void 0&&r.push(i);const o=B(e.multipleOf);o!==void 0&&r.push(o);const s=G(e);return s!==void 0&&r.push(s),e.uniqueItems&&r.push("unique"),r}function je(e,r=[]){const t=[],n=[],i=[];return e.forEach(o=>{o.required?r.includes(o.name)?n.push(o):i.push(o):t.push(o)}),n.sort((o,s)=>r.indexOf(o.name)-r.indexOf(s.name)),[...n,...i,...t]}function _e(e){return e.sort((r,t)=>Number(r.deprecated)-Number(t.deprecated))}function $e(e,r=[],t=[],{pathPointer:n,operationPointer:i}){const o={};t.forEach(u=>{({resolved:u}=e.deref(u)),o[u.name+"_"+u.in]=!0});const s=r.map((u,f)=>({paramOrRef:u,pointer:_.join(n,["parameters",String(f)])})).filter(({paramOrRef:u})=>({resolved:u}=e.deref(u),!o[u.name+"_"+u.in])),y=t.map((u,f)=>({paramOrRef:u,pointer:_.join(i,["parameters",String(f)])}));return[...s,...y]}function Pe(e,r){const n=e===void 0?T((()=>{if(!U)return globalThis.SSR_HOSTNAME||"";const i=window.location.href;return i.endsWith(".html")?b(i):i})()):z(e)?L(e):b(e);return r.length===0&&(r=[{url:"/"}]),r.map(i=>({...i,url:n?N(n,i.url):i.url,description:i.description||""}))}const Oe=e=>({delete:"del",options:"opts"})[e]||e;function Q(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-badges":!0,"x-hideReplay":!0,"x-feedback":!0,"x-assertionType":!0,"x-rbac":!0}||e.startsWith("x-parsed-md-")}function Ae(e,r){return Object.keys(e).filter(t=>r===!0?t.startsWith("x-")&&!Q(t):t.startsWith("x-")&&r.indexOf(t)>-1).reduce((t,n)=>(t[n]=e[n],t),{})}function Ie(e){return e.split(" or ").map(r=>r.replace(/^(string|object|number|integer|array|boolean)s?( ?.*)/,"$1s$2")).join(" or ")}function Me(e){let r=e.content;const t=e["x-examples"],n=e["x-example"];if(t){r={...r};for(const i of Object.keys(t)){const o=t[i];r[i]={...r[i],examples:o}}}else if(n){r={...r};for(const i of Object.keys(n)){const o=n[i];r[i]={...r[i],example:o}}}return r}export{ae as detectType,Ae as extractExtensions,Me as getContentWithLegacyExamples,be as getDefinitionName,se as getOperationId,ue as getOperationName,ie as getStatusCodeType,ge as humanizeConstraints,G as humanizeNumberRange,pe as isFormUrlEncoded,k as isJsonLike,fe as isMultipartFormData,ye as isNamedDefinition,oe as isOperationName,F as isPrimitiveType,Q as isRedocExtension,me as isSequentialMediaType,ne as isStatusCode,ce as isXmlLike,xe as langFromMime,$e as mergeParams,Pe as normalizeServers,Ie as pluralizeType,de as serializeParameterValue,M as serializeParameterValueWithMime,H as serializeQueryParameter,Oe as shortenHTTPVerb,_e as sortByDeprecated,je as sortByRequired,le as urlFormEncodePayload};
|
|
1
|
+
import{dirname as b}from"path";import m from"url-template";import{deleteEmptyArrayItem as S,isArrayOfObjects as w,isNumeric as E,removeQueryStringAndHash as T,resolveUrl as N,sanitizeItemId as l,normalizeText as j,getValueFromMdParsedExtension as $,isAbsoluteUrl as z}from"./helpers.js";import{DEFAULT_TAG_SLUG as D,MediaTypes as a}from"../constants.js";import{JsonPointer as _}from"./JsonPointer.js";import{joinWithSeparator as P,objectToHarParams as R}from"../services/index.js";import{tryDecodeURIComponent as q}from"./string.js";import{getUrlDirname as U}from"./url.js";import{IS_BROWSER as L}from"./dom.js";function A(e){return typeof e=="string"&&/\dxx/i.test(e)}function se(e){return e==="default"||E(e)||A(e)}function ae(e,r=!1,t=!1){if(e==="default")return r?"error":"success";if(t)return e==="200"?"success":"error";let n=typeof e=="string"?parseInt(e,10):e;if(A(e)&&(n*=100),n<100||n>599)throw new Error("invalid HTTP code");let i="success";return n>=300&&n<400?i="redirect":n>=400?i="error":n<200&&(i="info"),i}const F={get:!0,post:!0,put:!0,head:!0,patch:!0,delete:!0,options:!0,$ref:!0,"x-query":!0,query:!0};function ce(e){return e in F}function pe(e){const{operationId:r,pathName:t}=e,n=j($(e,"description"));return j($(e,"summary"))||r||n&&n.substring(0,50)||t||"<no summary>"}function fe(e,r){return r?.id?P(r.id,l(e.operationId?e.operationId:d(e.pointer))).toLowerCase():e.tags?.length?l(e.operationId?e.operationId:d(e.pointer)):l(e.operationId?P(D,e.operationId):d(e.pointer))}function d(e){return e?.startsWith("/")?e.slice(1,e.length):e}const I={multipleOf:"number",maximum:"number",exclusiveMaximum:"number",minimum:"number",exclusiveMinimum:"number",maxLength:"string",minLength:"string",pattern:"string",contentEncoding:"string",contentMediaType:"string",items:"array",maxItems:"array",minItems:"array",uniqueItems:"array",maxProperties:"object",minProperties:"object",required:"object",additionalProperties:"object",unevaluatedProperties:"object",patternProperties:"object",properties:"object"};function me(e){if(e.type!==void 0&&!Array.isArray(e.type))return e.type;const r=Object.keys(I);for(const t of r){const n=I[t];if(e[t]!==void 0)return n}return"any"}function k(e,r=e.type){if(e["x-circular-ref"]||e["x-complex"])return!0;if(e.oneOf!==void 0||e.anyOf!==void 0||e.if&&e.then||e.if&&e.else)return!1;let t=!0;const n=Array.isArray(r);return(r==="object"||n&&r?.includes("object"))&&(t=e.properties!==void 0?Object.keys(e.properties).length===0:e.additionalProperties===void 0&&e.unevaluatedProperties===void 0&&e.patternProperties===void 0),Array.isArray(e.items)||Array.isArray(e.prefixItems)?!1:(e.items!==void 0&&typeof e.items!="boolean"&&(r==="array"||n&&r?.includes("array"))&&(t=k(e.items,e.items.type)),t)}function W(e){return e.search(/json/i)!==-1}function le(e){return e?.search(/xml/i)!==-1}function C(e){return e===a.URL_ENCODED}function de(e){return e===a.MULTIPART}function xe(e){return[a.JSONL,a.NDJSON,a.JSON_SEQ,a.EVENT_STREAM,a.MULTIPART_MIXED].includes(e)}function p(e,r,t){return Array.isArray(e)?e.map(n=>n.toString()).join(t):typeof e=="object"?Object.keys(e).map(n=>`${n}${t}${e[n]}`).join(t):r+"="+e.toString()}function O(e,r){return Array.isArray(e)?(console.warn("deepObject style cannot be used with array value:"+e.toString()),""):typeof e=="object"?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 c(e,r,t){const n="__redoc_param_name__",i=r?"*":"";return m.parse(`{?${n}${i}}`).expand({[n]:t}).substring(1).replace(/__redoc_param_name__/g,e)}function M(e,r){const t=e?"*":"",n="__redoc_param_name__",i=m.parse(`{${n}${t}}`);return q(i.expand({[n]:r}))}function ye(e,r={}){if(Array.isArray(e))throw new Error("Payload must have fields: "+e.toString());return Object.keys(e).map(t=>{const n=e[t],{style:i="form",explode:o=!0}=r[t]||{};switch(i){case"form":return c(t,o,n);case"spaceDelimited":return p(n,t,"%20");case"pipeDelimited":return p(n,t,"|");case"deepObject":return O(n,t);default:return console.warn("Incorrect or unsupported encoding style: "+i),""}}).join("&")}function H(e,r,t,n){const i=t?"*":"";let o="";r==="label"?o=".":r==="matrix"&&(o=";");const s="__redoc_param_name__";return m.parse(`{${o}${s}${i}}`).expand({[s]:n}).replace(/__redoc_param_name__/g,e)}function J(e,r,t,n){const i=o=>{switch(r){case"form":return c(e,t,o);case"spaceDelimited":return!Array.isArray(o)&&typeof o!="object"?(console.warn("The style spaceDelimited is applicable to arrays or objects"),""):t?c(e,t,o):p(n,e,"%20");case"pipeDelimited":return!Array.isArray(o)&&typeof o!="object"?(console.warn("The style pipeDelimited is applicable to arrays or objects"),""):t?c(e,t,o):p(n,e,"|");case"deepObject":return!t||Array.isArray(o)||typeof o!="object"?(console.warn("The style deepObject is only applicable for objects with explode=true"),""):O(o,e);case"simple":return M(t,n);default:return console.warn("Unexpected style for query: "+r),""}};return w(n)&&(n=S(n).map(o=>i(o))),i(n)}function B(e,r,t){switch(e){case"simple":return M(r,t);default:return console.warn("Unexpected style for header: "+e),""}}function G(e,r,t,n){switch(r){case"form":return c(e,t,n);default:return console.warn("Unexpected style for cookie: "+r),""}}function x(e,r){return W(r)?JSON.stringify(e):(console.warn(`Parameter serialization as ${r} is not supported`),"")}function Q(e,r,t){return C(r)&&typeof e=="object"&&e!==null?R(e).map(n=>`${encodeURIComponent(n.name)}=${encodeURIComponent(n.value||"")}`).join("&"):`${t}=${x(e,r)}`}function ge(e,r){const{name:t,style:n,explode:i=!1,serializationMime:o}=e;if(o)switch(e.in){case"path":case"header":return x(r,o);case"cookie":case"query":return`${t}=${x(r,o)}`;case"querystring":return Q(r,o,t);default:return console.warn("Unexpected parameter location: "+e.in),""}if(!n)return console.warn(`Missing style attribute or content for parameter ${t}`),"";switch(e.in){case"path":return H(t,n,i,r);case"query":case"querystring":return J(t,n,i,r);case"header":return B(n,i,r);case"cookie":return G(t,n,i,r);default:return console.warn("Unexpected parameter location: "+e.in),""}}function be(e){return e.search(/xml/i)!==-1?"xml":e.includes("application/json-seq")?"json-seq":e.includes("application/jsonl")?"jsonl":e.includes("json")?"json":e.includes("multipart/mixed")?"multipart-mixed":e.includes("text/event-stream")?"yaml":"clike"}const h=/^#\/components\/(schemas|pathItems)\/([^/]+)$/;function je(e){return h.test(e||"")}function $e(e){return e?.match(h)?.pop()}function X(e){if(e===void 0)return;const r=e.toString(10);return/^0\.0*1$/.test(r)?`decimal places <= ${r.split(".")[1].length}`:`multiple of ${r}`}function y(e,r,t){let n;return r!==void 0&&t!==void 0?r===t?n=`= ${r} ${e}`:n=`[ ${r} .. ${t} ] ${e}`:t!==void 0?n=`<= ${t} ${e}`:r!==void 0&&(r===1?n="non-empty":n=`>= ${r} ${e}`),n}function K(e){const r=typeof e.exclusiveMinimum=="number"?Math.min(e.exclusiveMinimum,e.minimum??1/0):e.minimum,t=typeof e.exclusiveMaximum=="number"?Math.max(e.exclusiveMaximum,e.maximum??-1/0):e.maximum,n=typeof e.exclusiveMinimum=="number"||e.exclusiveMinimum,i=typeof e.exclusiveMaximum=="number"||e.exclusiveMaximum;if(r!==void 0&&t!==void 0)return`${n?"( ":"[ "}${r} .. ${t}${i?" )":" ]"}`;if(t!==void 0)return`${i?"< ":"<= "}${t}`;if(r!==void 0)return`${n?"> ":">= "}${r}`}function _e(e){const r=[],t=y("characters",e.minLength,e.maxLength);t!==void 0&&r.push(t);const n=y("items",e.minItems,e.maxItems);n!==void 0&&r.push(n);const i=y(e.minProperties===1&&e.maxProperties===1?"property":"properties",e.minProperties,e.maxProperties);i!==void 0&&r.push(i);const o=X(e.multipleOf);o!==void 0&&r.push(o);const s=K(e);return s!==void 0&&r.push(s),e.uniqueItems&&r.push("unique"),r}function Pe(e,r=[]){const t=[],n=[],i=[];return e.forEach(o=>{o.required?r.includes(o.name)?n.push(o):i.push(o):t.push(o)}),n.sort((o,s)=>r.indexOf(o.name)-r.indexOf(s.name)),[...n,...i,...t]}function Ae(e){return e.sort((r,t)=>Number(r.deprecated)-Number(t.deprecated))}function Ie(e,r=[],t=[],{pathPointer:n,operationPointer:i}){const o={};if(!Array.isArray(t))return[];t.forEach(u=>{({resolved:u}=e.deref(u)),o[u.name+"_"+u.in]=!0});const s=r.map((u,f)=>({paramOrRef:u,pointer:_.join(n,["parameters",String(f)])})).filter(({paramOrRef:u})=>({resolved:u}=e.deref(u),!o[u.name+"_"+u.in])),g=t.map((u,f)=>({paramOrRef:u,pointer:_.join(i,["parameters",String(f)])}));return[...s,...g]}function Oe(e,r){const n=e===void 0?T((()=>{if(!L)return globalThis.SSR_HOSTNAME||"";const i=window.location.href;return i.endsWith(".html")?b(i):i})()):z(e)?U(e):b(e);return r.length===0&&(r=[{url:"/"}]),r.map(i=>({...i,url:n?N(n,i.url):i.url,description:i.description||""}))}const Me=e=>({delete:"del",options:"opts"})[e]||e;function Y(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-badges":!0,"x-hideReplay":!0,"x-feedback":!0,"x-assertionType":!0,"x-rbac":!0}||e.startsWith("x-parsed-md-")}function he(e,r){return Object.keys(e).filter(t=>r===!0?t.startsWith("x-")&&!Y(t):t.startsWith("x-")&&r.indexOf(t)>-1).reduce((t,n)=>(t[n]=e[n],t),{})}function Se(e){return e.split(" or ").map(r=>r.replace(/^(string|object|number|integer|array|boolean)s?( ?.*)/,"$1s$2")).join(" or ")}function we(e,r){const{resolved:t}=e.deref(r.content);return Z({...r,content:t})}function Z(e){let r=e.content;const t=e["x-examples"],n=e["x-example"];if(t){r={...r};for(const i of Object.keys(t)){const o=t[i];r[i]={...r[i],examples:o}}}else if(n){r={...r};for(const i of Object.keys(n)){const o=n[i];r[i]={...r[i],example:o}}}return r}export{me as detectType,he as extractExtensions,we as getContent,Z as getContentWithLegacyExamples,$e as getDefinitionName,fe as getOperationId,pe as getOperationName,ae as getStatusCodeType,_e as humanizeConstraints,K as humanizeNumberRange,C as isFormUrlEncoded,W as isJsonLike,de as isMultipartFormData,je as isNamedDefinition,ce as isOperationName,k as isPrimitiveType,Y as isRedocExtension,xe as isSequentialMediaType,se as isStatusCode,le as isXmlLike,be as langFromMime,Ie as mergeParams,Oe as normalizeServers,Se as pluralizeType,ge as serializeParameterValue,x as serializeParameterValueWithMime,J as serializeQueryParameter,Q as serializeQueryStringParameterValueWithMime,Me as shortenHTTPVerb,Ae as sortByDeprecated,Pe as sortByRequired,ye as urlFormEncodePayload};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { OAuth2Flows } from '../types/index.js';
|
|
2
|
+
export declare function isScopeTruncated(scope: string, maxVisibleScopeChars: number): boolean;
|
|
3
|
+
export declare function getVisibleScopeLabel(scope: string, maxVisibleScopeChars: number): string;
|
|
4
|
+
export declare function normalizeScopes(scopes?: string[]): string[];
|
|
5
|
+
export declare function buildScopeDescriptionIndex(flows?: OAuth2Flows): Map<string, string>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function o(e,t){return e.length>t}function c(e,t){return o(e,t)?`${e.slice(0,t)}...`:e}function f(e){return!e||e.length===0?[]:e.flatMap(t=>t.split(/[,\s]+/).map(n=>n.trim()).filter(Boolean))}function u(e){const t=new Map;if(!e)return t;for(const n of Object.values(e))if(n?.scopes)for(const[r,i]of Object.entries(n.scopes))t.has(r)||t.set(r,i);return t}export{u as buildScopeDescriptionIndex,c as getVisibleScopeLabel,o as isScopeTruncated,f as normalizeScopes};
|
package/lib/utils/string.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import t from"slugify";function o(e){return e.split("").map(r=>r+"\u0335").join("")}function c(e){return e.replace(/[.[\]]/g,r=>({".":"%2e","[":"%5b","]":"%5d"})[r]||"")}function
|
|
1
|
+
import t from"slugify";function o(e){return e.split("").map(r=>r+"\u0335").join("")}function c(e){return e.replace(/[.[\]]/g,r=>({".":"%2e","[":"%5b","]":"%5d"})[r]||"")}function u(e){return e.replace(/%2e|%5b|%5d/g,r=>({"%2e":".","%5b":"[","%5d":"]"})[r]||"")}function p(e){return e.replace(/\\/g,"%5C")}function a(e){return e.replace(/%/g,"")}function i(e){try{return decodeURIComponent(e)}catch(r){return console.error("Decoding failed: %s",e,r),e}}function s(e){return t(e).slice(0,240)||e.toString().toLowerCase().replace(/\s+/g,"-").replace(/&/g,"-and-").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,"").slice(0,240)}function l(e,r={}){try{return JSON.parse(e)}catch{return r}}export{p as encodeBackSlashes,c as escapeFormId,a as removePercentChart,l as safeJsonParse,s as safeSlugify,o as strikethroughText,i as tryDecodeURIComponent,u as unescapeFormId};
|