function a(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function b(b){for(var d,e=1;e<arguments.length;e++)d=null==arguments[e]?{}:arguments[e],e%2?a(Object(d),!0).forEach(function(a){c(b,a,d[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(b,Object.getOwnPropertyDescriptors(d)):a(Object(d)).forEach(function(a){Object.defineProperty(b,a,Object.getOwnPropertyDescriptor(d,a))});return b}function c(a,b,c){return(b=p(b))in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function d(a,b){return j(a)||i(a,b)||g(a,b)||f()}function f(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function g(b,c){if(b){if("string"==typeof b)return h(b,c);var a={}.toString.call(b).slice(8,-1);return"Object"===a&&b.constructor&&(a=b.constructor.name),"Map"===a||"Set"===a?Array.from(b):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?h(b,c):void 0}}function h(b,c){(null==c||c>b.length)&&(c=b.length);for(var d=0,f=Array(c);d<c;d++)f[d]=b[d];return f}function i(b,c){var d=null==b?null:"undefined"!=typeof Symbol&&b[Symbol.iterator]||b["@@iterator"];if(null!=d){var g,h,j,k,l=[],a=!0,m=!1;try{if(j=(d=d.call(b)).next,0===c){if(Object(d)!==d)return;a=!1}else for(;!(a=(g=j.call(d)).done)&&(l.push(g.value),l.length!==c);a=!0);}catch(a){m=!0,h=a}finally{try{if(!a&&null!=d["return"]&&(k=d["return"](),Object(k)!==k))return}finally{if(m)throw h}}return l}}function j(a){if(Array.isArray(a))return a}function k(a){"@babel/helpers - typeof";return k="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},k(a)}function l(b,a){if(!(b instanceof a))throw new TypeError("Cannot call a class as a function")}function m(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,p(c.key),c)}function n(a,b,c){return b&&m(a.prototype,b),c&&m(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function p(a){var b=q(a,"string");return"symbol"==k(b)?b:b+""}function q(a,b){if("object"!=k(a)||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=k(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}function r(a,b,c){return b=w(b),s(a,v()?Reflect.construct(b,c||[],w(a).constructor):b.apply(a,c))}function s(a,b){if(b&&("object"==k(b)||"function"==typeof b))return b;if(void 0!==b)throw new TypeError("Derived constructors may only return object or undefined");return u(a)}function u(a){if(void 0===a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return a}function v(){try{var a=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(a){}return(v=function(){return!!a})()}function w(a){return w=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(a){return a.__proto__||Object.getPrototypeOf(a)},w(a)}function x(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function");a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,writable:!0,configurable:!0}}),Object.defineProperty(a,"prototype",{writable:!1}),b&&y(a,b)}function y(a,b){return y=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(a,b){return a.__proto__=b,a},y(a,b)}import z from"semver-compare";import{get as A}from"lodash";import B from"./api-common.ts";var C="3.0",D=function(a){function c(){return l(this,c),r(this,c,arguments)}return x(c,a),n(c,[{key:"isSupported",value:function(a){return!!(a&&"object"===k(a))&&!!a.openapi&&0<=z(a.openapi,C)}},{key:"cleanEndpoints",value:function b(a){var c=this,d=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},b=[];return a.forEach(function(a){var e=a.url?a.url:a.endpointUrl;d.basePath&&(e+=d.basePath),b=b.concat({url:e,variables:a.variables,types:c.getEndpointTypes(a.type)})}),b}},{key:"getEndpoints",value:function(a){var b=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};if(a&&this.isSupported(a)){var c=b.path,d=b.method,e=[];for(var f in A(a,"paths[".concat(c,"][").concat(d,"].servers"))?e=this.cleanEndpoints(a.paths[c][d].servers):A(a,"paths[".concat(c,"].servers"))?e=this.cleanEndpoints(a.paths[c].servers):a.endpoint?e=e.concat({url:a.endpoint}):0<A(a,"[x-ibm-configuration][servers]",[]).length?e=this.cleanEndpoints(a["x-ibm-configuration"].servers):0<A(a,"[x-ibm-endpoints]",[]).length?e=this.cleanEndpoints(a["x-ibm-endpoints"],{basePath:a.basePath}):a.servers&&0<a.servers.length&&(e=this.cleanEndpoints(a.servers)),e)Object.prototype.hasOwnProperty.call(e,f)&&(e[f].url=this.resolveRelativeUrl(e[f].url));return e}}},{key:"getBodyParameter",value:function(a,b,c,d){if(a&&d&&this.isSupported(d)&&d.openapi){var e;if(a.requestBody){if(a.requestBody.$ref&&(a.requestBody=this.getLocalReference(a.requestBody.$ref,d)),a.requestBody.content){if(a.requestBody.content[c])e=JSON.parse(JSON.stringify(a.requestBody.content[c]));else{var f=a.requestBody.content?Object.keys(a.requestBody.content)[0]:null;if(!f||!a.requestBody.content[f])return a.requestBody;e=JSON.parse(JSON.stringify(a.requestBody.content[f]))}return e.description=a.requestBody.description,e.required=a.requestBody.required,e.name="body",e["in"]="body",e}return a.requestBody}}}},{key:"getFormDataParameters",value:function(a,b,c,d){if(a&&d&&this.isSupported(d)&&d.openapi){var e=[];if(a.requestBody.content&&a.requestBody.content[c]&&a.requestBody.content[c].schema&&a.requestBody.content[c].schema.$ref&&(a.requestBody.content[c].schema=this.getLocalReference(a.requestBody.content[c].schema.$ref,d)),a.requestBody.content&&a.requestBody.content[c]&&a.requestBody.content[c].schema&&a.requestBody.content[c].schema.properties)for(var f in a.requestBody.content[c].schema.properties){var g,h=JSON.parse(JSON.stringify(a.requestBody.content[c].schema.properties[f]));h.name=f,h["in"]="formData",h.required=null===(g=a.requestBody.content[c].schema.required)||void 0===g?void 0:g.includes(h.name),e.push(h)}return e}}},{key:"getSecurityFlowConfig",value:function(a,b,c,d){var e=this;if(a){var f=this.getSecurityFlowConfigDefaults();return Object.keys(a).forEach(function(g){if(e.securityDefinitionFound(b,g)){var h=b[g],i=a[g];f=e.setApikeySecurityTypeConfig(f,h),f=e.setHttpSecurityTypeConfig(f,h),f=e.setOauthSecurityTypeConfig(f,h,i,c,d),f=e.setOpenIdConnectTypeConfig(f,h)}}),f=this.setRemainingConfig(f,c),f}}},{key:"setOpenIdConnectTypeConfig",value:function(a,b){return"openIdConnect"===b.type&&(a.openIdConnectUrl=b.openIdConnectUrl,a.requiresAuthorizationSection=!0),a}},{key:"setHttpSecurityTypeConfig",value:function(a,b,c,d,e){if("http"===b.type){if(a.requiresHttpAuth=!0,a.httpScheme=b.scheme,"basic"===b.scheme&&(a.requiresBasicAuth=!0),"bearer"===b.scheme&&(a.requiresHttpBearerToken=!0,a.requiresAuthorizationSection=!0),"digest"===b.scheme&&(a.requiresDigestAuth=!0),"hoba"===b.scheme&&(a.requiresHobaAuth=!0),"scramSha256"===b.scheme&&(a.requiresScramShaAuth=!0),"vapid"===b.scheme&&(a.requiresVapidAuth=!0),"negotiate"===b.scheme&&(a.requiresNegotiateAuth=!0),"oauth"===b.scheme){var f={};for(var g in b.flows)f[g]=this.setOauthFlowConfig(a,g,b,c,d,e);a=f[Object.keys(f)[0]],a.oauthFlowsConfig=f,a.requiresOauth=!0}"mutual"===b.scheme&&(a.requiresMutualAuth=!0)}return a}},{key:"getSchemas",value:function(a){return a&&this.isSupported(a)?a.components&&a.components.schemas?a.components.schemas:void 0:void 0}},{key:"getSchemasFullPath",value:function(a){return a&&this.isSupported(a)?a.components?{components:a.components}:void 0:void 0}},{key:"getSchemasRoot",value:function(a){var b=null;return a.components&&a.components.schemas&&(b=a.components.schemas),b}},{key:"getExamples",value:function(a){return a&&this.isSupported(a)?a.components&&a.components.examples?a.components.examples:void 0:void 0}},{key:"getExamplesFullPath",value:function(a){return a&&this.isSupported(a)?a.components&&a.components.examples?{components:{examples:a.components.examples}}:void 0:void 0}},{key:"getExamplesRoot",value:function(a){var b=null;return a.components&&a.components.examples&&(b=a.components.examples),b}},{key:"getSecurityDefinitions",value:function(a){var b=A(this.api,"components.securitySchemes");if(b){var c=A(this.api,"x-ibm-configuration.oauth-servers");return c&&(b=JSON.parse(JSON.stringify(b)),Object.entries(c).forEach(function(a){var c=d(a,2),e=c[0],f=c[1];Object.entries(f).forEach(function(a){var c=d(a,2),f=c[0],g=c[1];A(b,"".concat(e,".flows.").concat(f))&&(b[e].flows[f].tokenUrl=g.tokenUrls,b[e].flows[f].authorizationUrl=g.authorizationUrls,b[e].flows[f].refreshUrl=g.refreshUrls)})})),a&&(b=this.resolveOauthUrls(b,a)),b}}},{key:"setOauthSecurityTypeConfig",value:function(a,b,c,d,e){if("oauth2"===b.type){var f={};for(var g in b.flows)f[g]=this.setOauthFlowConfig(a,g,b,c,d,e);f[Object.keys(f)[0]]&&(a=f[Object.keys(f)[0]],a.oauthFlowsConfig=f)}return a}},{key:"setOauthFlowConfig",value:function(a,c,d,e,f,g){var h=b({},a);h.requiresOauth=!0,h.requiresClientId=!0,h.oauthFlow=c,("clientCredentials"===c||"authorizationCode"===c||"password"===c)&&(h.requiresClientSecret=!0),("implicit"===c||"authorizationCode"===c)&&(h.requiresRedirectUri=!0);var i=this.getFullOauthUrls(d.flows[c],g);if(d.flows[c].authorizationUrl&&(h.oauthAuthUrl=i.authorizationUrl,h.requiresAuthorizationSection=!0),d.flows[c].tokenUrl&&(h.oauthTokenUrl=i.tokenUrl,h.requiresAuthorizationSection=!0),d.flows[c].refreshUrl&&(h.oauthRefreshUrl=i.refreshUrl,h.requiresAuthorizationSection=!0),d.flows[c].scopes&&0<Object.keys(d.flows[c].scopes).length)for(var j in h.oauthScopes=[],d.flows[c].scopes)0!==j.indexOf("x-")&&e&&-1<e.indexOf(j)&&h.oauthScopes.push(j);return h=this.setRemainingConfig(h,f),h}},{key:"getContentTypes",value:function(a,b){if(!a||!b||!this.isSupported(b))return[];var c=[];if(a.requestBody&&a.requestBody.content&&(c=c.concat(Object.keys(a.requestBody.content))),c=JSON.parse(JSON.stringify(c)),0===c.length&&b["x-ibm-configuration"]){if(!a.parameters)return c;a.parameters.forEach(function(a){"formData"===a["in"]&&c.push("application/x-www-form-urlencoded"),"body"===a["in"]&&(b["x-ibm-configuration"].enforced?(c.push("application/json"),c.push("application/xml")):c.push("application/json"))})}return c}},{key:"getAccepts",value:function(a,b){var c=this;if(!a||!b||!this.isSupported(b))return[];var d=[];return a.responses&&(Object.keys(a.responses).forEach(function(e){var f=a.responses[e];f&&f.$ref&&(f=c.getLocalReference(f.$ref,b)),f&&("default"===e||e.startsWith("2"))&&f.content&&(d=d.concat(Object.keys(f.content)))}),d=d.filter(function(a,b,c){return c.indexOf(a)===b})),d=JSON.parse(JSON.stringify(d)),0===d.length&&(b["x-ibm-configuration"]&&b["x-ibm-configuration"].enforced?(d.push("application/json"),d.push("application/xml")):d.push("application/json")),d}}])}(B);export{D as default};