get-it
Version:
Generic HTTP request library for node, browsers and workers
2 lines (1 loc) • 1.31 kB
JavaScript
const e=!(typeof navigator>"u")&&"ReactNative"===navigator.product,t={timeout:e?6e4:12e4},r=function(r){const a={...t,..."string"==typeof r?{url:r}:r};if(a.timeout=o(a.timeout),a.query){const{url:t,searchParams:r}=function(t){const r=t.indexOf("?");if(-1===r)return{url:t,searchParams:new URLSearchParams};const o=t.slice(0,r),a=t.slice(r+1);if(!e)return{url:o,searchParams:new URLSearchParams(a)};if("function"!=typeof decodeURIComponent)throw new Error("Broken `URLSearchParams` implementation, and `decodeURIComponent` is not defined");const s=new URLSearchParams;for(const e of a.split("&")){const[t,r]=e.split("=");t&&s.append(n(t),n(r||""))}return{url:o,searchParams:s}}(a.url);for(const[e,n]of Object.entries(a.query)){if(void 0!==n)if(Array.isArray(n))for(const t of n)r.append(e,t);else r.append(e,n);const o=r.toString();o&&(a.url=`${t}?${o}`)}}return a.method=a.body&&!a.method?"POST":(a.method||"GET").toUpperCase(),a};function n(e){return decodeURIComponent(e.replace(/\+/g," "))}function o(e){if(!1===e||0===e)return!1;if(e.connect||e.socket)return e;const r=Number(e);return isNaN(r)?o(t.timeout):{connect:r,socket:r}}const a=/^https?:\/\//i,s=function(e){if(!a.test(e.url))throw new Error(`"${e.url}" is not a valid URL`)};export{r as p,s as v};//# sourceMappingURL=defaultOptionsValidator.js.map