UNPKG

apiconnect-explorer

Version:

- [Getting Started](#getting-started) - [Configuration](#configuration) * [Required](#required) * [Optional](#optional) - [Usage in React](#usage-in-react) - [Usage outside of React](#usage-outside-of-react) - [Detailed description of options](#detail

1 lines 15.1 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports["default"]=void 0;var a=g(require("jsonpointer")),b=require("lodash"),c=g(require("lodash/has")),d=g(require("./api-factory.ts")),e=require("./APITypes.ts"),f=g(require("./MarkupTypes.ts"));function g(a){return a&&a.__esModule?a:{default:a}}function h(a){"@babel/helpers - typeof";return h="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},h(a)}function i(a,b){return n(a)||m(a,b)||k(a,b)||j()}function j(){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 k(b,c){if(b){if("string"==typeof b)return l(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)?l(b,c):void 0}}function l(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 m(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 n(a){if(Array.isArray(a))return a}function o(b,a){if(!(b instanceof a))throw new TypeError("Cannot call a class as a function")}function p(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,s(c.key),c)}function q(a,b,c){return b&&p(a.prototype,b),c&&p(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function s(a){var b=u(a,"string");return"symbol"==h(b)?b:b+""}function u(a,b){if("object"!=h(a)||!a)return a;var c=a[Symbol.toPrimitive];if(void 0!==c){var d=c.call(a,b||"default");if("object"!=h(d))return d;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===b?String:Number)(a)}var v="$(catalog.url)",w=exports["default"]=function(){function g(a){o(this,g),this.api=a,this.version=this.isSupported(a)?this.getVersion(a):null}return q(g,[{key:"getSecurity",value:function(a){var b,c,d,e=null!==(b=null!==(c=null===a||void 0===a?void 0:a.security)&&void 0!==c?c:null===(d=this.api)||void 0===d?void 0:d.security)&&void 0!==b?b:[];return Array.isArray(e)&&(e=e.filter(function(a){return 0!==Object.keys(a).length})),e}},{key:"assertHandler",value:function(a){return this.version===this.getVersion(a)?this:(0,d["default"])(a)}},{key:"getVersion",value:function(a){return a.swagger?a.swagger:a.openapi?a.openapi:a.asyncapi?a.asyncapi:"2.0"}},{key:"getSpecLabel",value:function(a){var b=this.getType(a);return"REST"===b?a.openapi?a.openapi.startsWith("3.1")?"OAS3.1":"OAS3":"OAS2":null}},{key:"getType",value:function(a){return(0,e.getAPIType)(a)}},{key:"getMarkupType",value:function(){var a=this.getType(this.api),b=this.getVersion(this.api);return a===e.APITypes.rest||a===e.APITypes.wsdl?b.startsWith("1.")||b.startsWith("2.")?f["default"].markdown:f["default"].commonmark:f["default"].commonmark}},{key:"isSOAP",value:function(a){return!!(a["x-ibm-configuration"]&&"wsdl"===a["x-ibm-configuration"].type)}},{key:"isGraphQL",value:function(a){return!!(a["x-ibm-configuration"]&&"graphql"===a["x-ibm-configuration"].type)}},{key:"isAsync",value:function(a){var b=this.getType(a);return!(b!==e.APITypes.asyncapi)}},{key:"isTestable",value:function(a){return!(a["x-ibm-configuration"]&&(0,c["default"])(a["x-ibm-configuration"],"testable")&&!a["x-ibm-configuration"].testable||a.info&&(0,c["default"])(a.info,"x-try-it-out-enabled")&&!a.info["x-try-it-out-enabled"])}},{key:"getEndpointTypes",value:function(a){if(a&&!(1>a.length)){var b=a.map(function(a){var b=a.split("");return b[0]=b[0].toUpperCase(),b.join("")}),c=b.join(", ");return c}}},{key:"getOperationPath",value:function(a,b){if(b&&a){var c="";return c=this.isSOAP(a)?"":b,c}}},{key:"getParameters",value:function(a,b,c,d){if(a&&d&&this.isSupported(d)){var e=[],f={};a.parameters&&(e=e.concat(a.parameters)),d.paths&&d.paths[b]&&d.paths[b].parameters&&(e=e.concat(d.paths[b].parameters));var g=this;a.requestBody&&((c.startsWith("multipart/")||"application/x-www-form-urlencoded"===c)&&0<this.getFormDataParameters(a,b,c,d).length?e=e.concat(this.getFormDataParameters(a,b,c,d)):(f.body=this.getBodyParameter(a,b,c,d),a.requestBody["x-ibm-languages"]&&(f.body["x-ibm-languages"]=a.requestBody["x-ibm-languages"])));for(var h=0;h<e.length;h+=1)e[h]=JSON.parse(JSON.stringify(e[h]));return e.forEach(function(a){for(;a.$ref||a.schema&&a.schema.$ref;){var b=!1;if(a.$ref){var c=a.$ref.split("/").pop(),e=g.getLocalReference(a.$ref,d);e&&!e.error?(delete a.$ref,a=Object.assign(a,e)):(console.warn("Missing reference: ".concat(a.$ref)),b=!0,a={name:c,description:"missing",schema:{type:"unknown"}})}else if(a.schema&&a.schema.$ref){var h=a.schema.$ref.split("/").pop(),i=g.getLocalReference(a.schema.$ref,d);if(i&&!i.error){var j=JSON.parse(JSON.stringify(a));j.schema=i,a=j}else b=!0,console.warn("Missing reference: ".concat(a.schema.$ref)),a={name:h,description:"missing",schema:{type:"unknown"}}}if(b)break}f[a.name]=a}),f}}},{key:"containsReservedParameters",value:function(a){var b=this,c=!1;return a&&void 0!==Object.keys(a)&&0<Object.keys(a).length&&Object.keys(a).forEach(function(d){a[d]["in"]&&"header"===a[d]["in"]&&b.reservedHeaders().includes(a[d].name.toLowerCase())&&(c=!0)}),c}},{key:"removeReservedParameters",value:function(a){var b=this;return a&&void 0!==Object.keys(a)&&0<Object.keys(a).length&&Object.keys(a).forEach(function(c){a[c]["in"]&&"header"===a[c]["in"]&&b.reservedHeaders().includes(a[c].name.toLowerCase())&&delete a[c]}),a}},{key:"removeReservedParameterNames",value:function(a){var b=this;return a&&0<a.length&&(a=a.filter(function(a){var c=b.reservedHeaders().includes(a.toLowerCase());return!c})),a}},{key:"reservedHeaders",value:function(){return["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","date","dnt","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","via"]}},{key:"getQueryParameters",value:function(a,b,c,d){return this.getParametersByType("query",a,b,c,d)}},{key:"getPathParameters",value:function(a,b,c,d){return this.getParametersByType("path",a,b,c,d)}},{key:"getHeaderParameters",value:function(a,b,c,d){return this.getParametersByType("header",a,b,c,d)}},{key:"getCookieParameters",value:function(a,b,c,d){return this.getParametersByType("cookie",a,b,c,d)}},{key:"getParametersByType",value:function(a,b,c,d,e){var f=this.getParameters(b,c,d,e);return f&&0!==f.length?Object.keys(f).filter(function(b){return f[b]["in"]===a}):[]}},{key:"resolveRelativeUrl",value:function(a){return a&&!/(wss?|https?):\/\//.test(a)&&(a=this.buildFullUrl("".concat(window.location.host,"/"),a)),a}},{key:"findSelectedEndpoint",value:function(a,b){var c=this,d=b.find(function(b){return a===c.resolveRelativeUrl(b.url)});return d||null}},{key:"getServerVariables",value:function(a,c,d){if(a&&this.isSupported(a)){var e,f=d.path,g=d.method;if((0,b.get)(a,"paths[".concat(f,"][").concat(g,"].servers"))?e=this.findSelectedEndpoint(c,a.paths[f][g].servers):(0,b.get)(a,"paths[".concat(f,"].servers"))?e=this.findSelectedEndpoint(c,a.paths[f].servers):a.endpoint?a.endpoint.servers&&(e=this.findSelectedEndpoint(c,a.endpoint.servers)):0<(0,b.get)(a,"[x-ibm-configuration][servers]",[]).length?e=this.findSelectedEndpoint(c,a["x-ibm-configuration"].servers):0<(0,b.get)(a,"[x-ibm-endpoints]",[]).length?e=this.findSelectedEndpoint(c,a["x-ibm-endpoints"]):a.servers&&0<a.servers.length&&(e=this.findSelectedEndpoint(c,a.servers)),e)var h=e,i=h.variables;return i}}},{key:"getFullOauthUrls",value:function(a,b){var c={authorizationUrl:"",type:"",flow:"",tokenUrl:"",refreshUrl:""};return a.authorizationUrl&&0<a.authorizationUrl.length&&(c.authorizationUrl=this.substituteHost(a.authorizationUrl,b),b&&!/(wss?|https?):\/\//.test(c.authorizationUrl)&&(c.authorizationUrl="".concat(b,"/").concat(c.authorizationUrl),c.authorizationUrl=c.authorizationUrl.replace(/([^:])(\/\/+)/g,"$1/"))),a.tokenUrl&&0<a.tokenUrl.length&&(c.tokenUrl=this.substituteHost(a.tokenUrl,b),b&&!/(wss?|https?):\/\//.test(c.tokenUrl)&&(c.tokenUrl="".concat(b,"/").concat(c.tokenUrl),c.tokenUrl=c.tokenUrl.replace(/([^:])(\/\/+)/g,"$1/"))),a.refreshUrl&&0<a.refreshUrl.length&&(c.refreshUrl=this.substituteHost(a.refreshUrl,b),b&&!/(wss?|https?):\/\//.test(c.refreshUrl)&&(c.refreshUrl="".concat(b,"/").concat(c.refreshUrl),c.refreshUrl=c.refreshUrl.replace(/([^:])(\/\/+)/g,"$1/"))),c}},{key:"resolveOauthUrls",value:function(a,b){var c=this,d=JSON.parse(JSON.stringify(a));return Object.keys(d).forEach(function(a){if("oauth2"===d[a].type)if("string"==typeof d[a].flow)for(var e=c.getFullOauthUrls(d[a],b),f=0,g=Object.entries(e);f<g.length;f++){var h=i(g[f],2),j=h[0],k=h[1];d[a][j]=k}else d[a].flows&&Object.keys(d[a].flows).forEach(function(e){for(var f=c.getFullOauthUrls(d[a].flows[e],b),g=0,h=Object.entries(f);g<h.length;g++){var j=i(h[g],2),k=j[0],l=j[1];d[a].flows[e][k]=l}})}),d}},{key:"getSecurityConfig",value:function(a,c,d,e){var f=this;if(a&&this.isSupported(a)){var g={securityDefinitions:this.getSecurityDefinitions()},h=c.security||a.security;if(h){var i={};h.forEach(function(a){var c=Object.keys(a).filter(function(a){return 0!==a.indexOf("$$")}).join(", "),h={};(0,b.isEmpty)(a)||(h.flow=a,h.config=f.getSecurityFlowConfig(a,g.securityDefinitions,d,e),i[c]=h)}),g.securityFlows=i;var j=Object.keys(g.securityFlows);g.flags=1>j.length?null:g.securityFlows[j[0]].config}return g}}},{key:"securityDefinitionFound",value:function(a,b){if(!a)return console.warn("".concat(b," specified but no security definitions found.")),!1;var c=a[b];return!!c||(console.warn("no security definition found: ".concat(c)),!1)}},{key:"getSecurityFlowConfigDefaults",value:function(){return{clientSecretLocation:null,clientSecretName:null,clientIdLocation:null,clientIdName:null,httpScheme:null,oauthFlow:null,oauthFlows:null,oauthFlowsConfig:null,oauthAuthUrl:null,oauthTokenUrl:null,oauthScopes:null,oauthRefreshUrl:null,requiresClientId:!1,requiresClientSecret:!1,requiresBasicAuth:!1,requiresDigestAuth:!1,requiresHobaAuth:!1,requiresScramShaAuth:!1,requiresVapidAuth:!1,requiresNegotiateAuth:!1,requiresMutualAuth:!1,requiresHttpAuth:!1,requiresOauth:!1,requiresSecuritySection:!1,requiresIdentificationSection:!1,requiresAuthorizationSection:!1,requiresRefreshToken:!1,requiresUserCredentials:!1,requiresRedirectUri:!1,externalApiKeys:[]}}},{key:"setApikeySecurityTypeConfig",value:function(a,b){return"apiKey"===b.type&&("client_id"===b.name||"X-IBM-Client-Id"===b.name||b["x-key-type"]&&("clientId"===b["x-key-type"]||"client_id"===b["x-key-type"])?(a.requiresClientId=!0,a.clientIdLocation=b["in"],a.clientIdName=b.name):"client_secret"===b.name||"X-IBM-Client-Secret"===b.name||b["x-key-type"]&&("clientSecret"===b["x-key-type"]||"client_secret"===b["x-key-type"])?(a.requiresClientSecret=!0,a.clientSecretLocation=b["in"],a.clientSecretName=b.name):a.externalApiKeys[b.name]=b),a}},{key:"setRemainingConfig",value:function(a,b){return(a.requiresClientId&&(!b||!b.clientId)||a.requiresClientSecret&&(!b||!b.clientSecret||"SECRET"===b.clientSecret)||a.requiresBasicAuth||a.requiresOauth||a.requiresDigestAuth||a.requiresHobaAuth||a.requiresScramShaAuth||a.requiresVapidAuth||a.requiresNegotiateAuth||a.requiresMutualAuth||0<Object.keys(a.externalApiKeys).length)&&(a.requiresSecuritySection=!0),(a.requiresClientId||a.requiresClientSecret)&&(a.requiresIdentificationSection=!0),0<Object.keys(a.externalApiKeys).length&&(a.requiresIdentificationSection=!0),(a.requiresBasicAuth||"password"===a.oauthFlow||a.requiresDigestAuth||a.requiresHobaAuth||a.requiresScramShaAuth||a.requiresVapidAuth||a.requiresNegotiateAuth||a.requiresOauth||a.requiresMutualAuth)&&(a.requiresAuthorizationSection=!0),(a.requiresBasicAuth||"password"===a.oauthFlow)&&(a.requiresUserCredentials=!0),("accessCode"===a.oauthFlow||"authorizationCode"===a.oauthFlow||"password"===a.oauthFlow)&&(a.requiresRefreshToken=!0),a}},{key:"substituteHost",value:function(a,b){if(!a||0>a.indexOf(v)||!b)return a;var c=a.replace(v,b);return /((wss?|https?):\/\/){2}/.test(c)&&(/wss?:\/\//.test(c)?c=c.replace(/wss?:\/\//,""):c=c.replace(/https?:\/\//,"")),c}},{key:"getDefaultAcceptHeader",value:function(a,b){var c=this.getAccepts(a,b);return-1===c.indexOf("application/json")?0<c.length?c[0]:"application/json":"application/json"}},{key:"getDefaultContentTypeHeader",value:function(a,b){var c=this.getContentTypes(a,b);return-1===c.indexOf("application/json")?0<c.length?c[0]:"application/json":"application/json"}},{key:"getLocalReference",value:function(b,c){if(b&&c){0===b.indexOf("#")&&(b=b.substring(1));var d=a["default"].get(c,b);return d?d:{error:"missing reference",$ref:b}}}},{key:"getCustomExtensions",value:function(a){var b={};if(a){var c=["x-pathalias","x-embedded-doc","x-example","x-try-it-out-enabled","x-codegen-config","x-sdk-operations","x-sdk-global-param","x-scopeValidate","x-postman-workspace-id","x-postman-collection-id"],d=Object.keys(a).filter(function(a){return!(!a.startsWith("x-")||a.startsWith("x-ibm-")||c.includes(a))});d.map(function(c){return b[c]=a[c],null})}return 0<Object.keys(b).length?b:null}},{key:"getApiTags",value:function(a){if(a&&this.isSupported(a)){var b={tags:{},operations:[]};return a.tags&&a.tags.forEach(function(a){b.tags[a.name]={tags:{},operations:[]},a.description&&(b.tags[a.name].description=a.description),a.externalDocs&&a.externalDocs.url&&(b.tags[a.name].externalDocs=a.externalDocs)}),b}}},{key:"getProtocols",value:function(a){var b=this,c=[];return a&&a.forEach(function(a){var d=b.resolveRelativeUrl(a.url),e=d.substring(0,d.indexOf("://"));""!==e&&c.push(e)}),c}},{key:"getSchemes",value:function(a){var c=this;if(!a||!this.isSupported(a))return null;var d=[];return a.schemes?d=a.schemes:(d=d.concat(this.getProtocols(a.servers)),a.paths&&Object.keys(a.paths).forEach(function(b){d=d.concat(c.getProtocols(a.paths[b].servers)),Object.keys(a.paths[b]).forEach(function(e){d=d.concat(c.getProtocols(a.paths[b][e].servers))})}),0===d.length&&(d=[window.location.protocol.replace(":","")])),d=(0,b.uniq)(d),d}},{key:"getDataTableRows",value:function(a){var b=[];return Object.entries(a).forEach(function(a){var c=i(a,2),d=c[0],e=c[1];return b.push({id:d,data:e})}),b}},{key:"buildFullUrl",value:function(a,b){return a.endsWith("/")&&b.startsWith("/")&&(a=a.substr(0,a.length-1)),a+b}},{key:"mapProtocol",value:function(a){var b={kafka:"Kafka","kafka-secure":"Kafka"}[a];return b?b:a}},{key:"isEnforced",value:function(){return(0,b.get)(this.api,"x-ibm-configuration.enforced",!1)}}])}();