UNPKG

fetch-to-curl

Version:

Convert fetch HTTP request to curl

2 lines (1 loc) 1.31 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const e=e=>{const t=e.method;return t&&{GET:" -X GET",POST:" -X POST",PUT:" -X PUT",PATCH:" -X PATCH",DELETE:" -X DELETE",HEAD:" -X HEAD",OPTIONS:" -X OPTIONS"}[t.toUpperCase()]||""},t=e=>"function"==typeof Headers&&e instanceof Headers,o=(e,t)=>` -H "${e}: ${`${t}`.replace(/(\\|")/g,"\\$1")}"`,r=(e={})=>{const{headers:r}=e;let n=!1,s="";return t(r)?r.forEach(((e,t)=>{"content-length"!==t.toLocaleLowerCase()&&(s+=o(t,e)),"accept-encoding"===t.toLocaleLowerCase()&&(n=!0)})):r&&Object.keys(r).map((e=>{"content-length"!==e.toLocaleLowerCase()&&(s+=o(e,r[e])),"accept-encoding"===e.toLocaleLowerCase()&&(n=!0)})),{params:s,isEncode:n}};function n(e){return"string"==typeof e?e.replace(/'/g,"'\\''"):e}function s(e){return e?"object"==typeof e?` --data-binary '${n(JSON.stringify(e))}'`:` --data-binary '${n(e)}'`:""}function a(e){return e?" --compressed":""}const c=(t,o)=>{let n,c;"string"==typeof t||t instanceof URL?(n=t,c=o||{}):(n=(t||{}).url,c=t||{});const{body:p}=c,d=r(c);return`curl '${n}'${e(c)}${d.params||""}${s(p)}${a(d.isEncode)}`};exports.default=c,exports.escapeBody=n,exports.fetchToCurl=c,exports.generateBody=s,exports.generateCompress=a,exports.generateHeader=r,exports.generateMethod=e,exports.isInstanceOfHeaders=t;