quickapi-cli
Version:
Esta librería se encargará de generar automáticamente clientes para consumir APIs a partir de descripciones como OpenAPI/Swagger o Postman.
1 lines • 2.4 kB
JavaScript
Object.defineProperty(exports,"__esModule",{value:!0});const helper_1=require("../utils/helper"),generateFetchClient=(e={})=>{var r;if("object"!=typeof e||null===e)throw new Error("El archivo JSON no tiene el formato esperado.");if(0===Object.keys(e).length)throw new Error("El archivo JSON esta vacio");let t="",n="",o=[];if(e.hasOwnProperty("info")&&e.hasOwnProperty("item"))n=(0,helper_1.parsePostmanCollection)(e,o,getFetch);else{if(!e.hasOwnProperty("openapi")||!e.hasOwnProperty("paths"))throw new Error("El archivo JSON no tiene el formato esperado.");{let{servers:a}=e;t=`const baseUrl = "${a&&(null===(r=a[0])||void 0===r?void 0:r.url)||""}";\n`,n=(0,helper_1.parseApiSpec)(e,"${baseUrl}",o,getFetch)}}return`${t}${n}\nexport { ${o.join(", ")}};`},getFetch=(e,r,t,n,o={})=>{r=r.toUpperCase();let a="";if(0===Object.keys(o).length)o={method:r};else{let{Authorization:e=""}=(null==o?void 0:o.headers)||{};if(a=(0,helper_1.extractToken)(e),a=a?`, ${a}`:"",null==o?void 0:o.headers.hasOwnProperty("Authorization")){let e=o.headers.Authorization;a=(0,helper_1.extractToken)(e),a.length>0&&(o.headers.Authorization=o.headers.Authorization.replace(/Bearer\s<([^>]+)>/,`\`\${${a}}\``),a=`, ${a}`)}o=Object.assign({method:r},o)}["GET","HEAD","TRACE"].includes(r)?n=n.replace(/, body={}/,"").replace(/body={}/,""):o=Object.assign(Object.assign({},o),{body:"_body"});return`async function ${e} (${n=(n+a+", queryParams={}").replace(/^\s*,\s*queryParams=\{\}$/,"queryParams={}")}) {\n\tlet queryParams = new URLSearchParams(queryParams).toString();\n\treturn await fetch(\`${t}?\${queryParams}\` , ${getOptions(o)})\n .then(response => {\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(\`HTTP error! Status: \${response.status}\`);\n\t\t}\n\t\treturn response.min.json();\n\t}).then(data => data)\n\t.catch(error => {\n\t\tconsole.error('Error al hacer fetch:', error);\n\t});\n}\n`},getOptions=(e={})=>{var r;let t=Object.fromEntries(Object.entries(e).filter((([e,r])=>null!=r))),n=null===(r=JSON.stringify(t,null,3))||void 0===r?void 0:r.replace(/\n}/,"\n\t}").replace('"_body"',"body"),o=null==n?void 0:n.match(/\$\{[^}]*\}/);o&&o[0];return n.replace(/"`\$\{[^}]*\}`"/,`\`${o}\``)},generateHeader=(e=[])=>{if(0===Object.keys(e).length)return"";{let r={};return e.forEach((e=>{e.key&&e.value&&(r[e.key]=e.value)})),`header: ${JSON.stringify(r,null,2)},`}};exports.default=generateFetchClient;
;