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.67 kB
JavaScript
Object.defineProperty(exports,"__esModule",{value:!0}),exports.extractToken=exports.parsePostmanCollection=exports.parseApiSpec=exports.verifyFileExtension=exports.PathExits=exports.generateFunctionName=exports.writeToFile=exports.readJSONFile=void 0;const tslib_1=require("tslib"),fs_1=tslib_1.__importDefault(require("fs")),path_1=tslib_1.__importDefault(require("path")),readJSONFile=e=>{try{const t=fs_1.default.readFileSync(e,"utf-8");return JSON.parse(t)}catch(e){let t="Failed to do something exceptional";throw e instanceof Error&&(t=e.message),new Error(`Error reading or parsing JSON file: ${t}`)}};exports.readJSONFile=readJSONFile;const writeToFile=(e,t)=>{try{const r=path_1.default.dirname(e);fs_1.default.existsSync(r)||fs_1.default.mkdirSync(r,{recursive:!0}),path_1.default.extname(e)||(e=r+path_1.default.sep+path_1.default.basename(e,path_1.default.extname(e))+".min.js"),fs_1.default.writeFileSync(e,t,"utf-8"),console.log(`File written to ${e}`)}catch(e){let t="Failed to do something exceptional";throw e instanceof Error&&(t=e.message),new Error(`Error writing to file: ${t}\n`)}};exports.writeToFile=writeToFile;const generateFunctionName=(e,t)=>`${e.toLowerCase()}${t.replace(/\//g,"_").replace(/[^a-zA-Z0-9_]/g,"")}`;exports.generateFunctionName=generateFunctionName;const PathExits=e=>fs_1.default.existsSync(e);exports.PathExits=PathExits;const verifyFileExtension=(e,t=".min.js")=>path_1.default.extname(e)===t;exports.verifyFileExtension=verifyFileExtension;const _apiSpec=(e,t,r,a,o)=>"",getParams=e=>{var t;const r=null===(t=[...e.matchAll(/{(\w+)}/g)])||void 0===t?void 0:t.map((e=>e[1]));return r.length>0?`${null==r?void 0:r.join(", ")}, body={}`:"body={}"},parseApiSpec=(e={},t="",r=[],a=_apiSpec)=>{const{info:o,paths:s,servers:n}=e;return Object.entries(s).map((([e,o])=>{let s=e.replace(/\/{[^}]+}/g,"").replace(/\//g,"_"),n=e.replace(/\/{/g,"/${");return Object.entries(o).map((([o,i])=>{let l=getParams(e),{"x-fetch-options":p}=i,c=t+`/${n}`.replace(/\/\//g,"/").replace(/\?.*/,""),u=`${o.toLocaleLowerCase()}${s}`;return r.push(u),a(u,o,c,l,p)})).join("\n")})).join("\n").replace(/\t\t\t\t/,"\t")};exports.parseApiSpec=parseApiSpec;const parsePostmanCollection=(e={},t=[],r=_apiSpec)=>{const{info:a,item:o,variable:s}=e;return o.map((e=>{let{name:a,request:o}=e,{url:s,method:n,header:i}=o,l=getParams(s.raw);n=n.toLowerCase();let p=`${n}${a.replace(/\s/g,"_")}`;return t.push(p),r(p,n,s.raw.replace(/\?.*/,""),l,{header:i})})).join("\n")};exports.parsePostmanCollection=parsePostmanCollection;const extractToken=(e="")=>{const t=e.match(/Bearer\s<([^>]+)>/);return t?t[1]:""};exports.extractToken=extractToken;
;