UNPKG

@alova/adapter-xhr

Version:

XMLHttpRequest adapter for alova.js

2 lines (1 loc) 2.62 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).AlovaAdapterXhr={})}(this,(function(e){"use strict";const t="undefined",s=Object,o=!0,r=!1;typeof window===t&&typeof process!==t&&process.browser;const n=()=>{},a=e=>s.prototype.toString.call(e),i=e=>{const t=[];let s=[],o=0,r=0;var n,a,i;return n=e,a=(e,n)=>{if(""!==e)if("object"==typeof n&&null!==n)s.push(e),r+=Object.keys(n).length;else if(void 0!==n){const a=[...s,e].map(((e,t)=>t>0?`[${e}]`:e)).join("");t.push(`${a}=${n}`),o>=r-1?(s=[],o=0,r=0):o+=1}return n},JSON.stringify(n,a,i),t.join("&")},d=e=>{const t=e.trim().split(/[\r\n]+/),s={};return t.forEach((e=>{const[t,o]=e.split(/:\s*/);s[t]=o})),s},p=e=>((e,...t)=>new e(...t))(Error,e),l=e=>"string"===(e=>typeof e)(e)||(e=>{const t=a(e);return/^\[object (Blob|FormData|ReadableStream|URLSearchParams)\]$/i.test(t)||(s=ArrayBuffer,e instanceof s);var s})(e);e.xhrMockResponse=({status:e,statusText:t,body:s,responseHeaders:o})=>({response:{data:s,status:e,statusText:t,headers:o},headers:o}),e.xhrRequestAdapter=function({onCreate:e=n}={}){return({type:t,url:s,data:u=null,headers:c},f)=>{const{config:h}=f,{auth:y,withCredentials:b,mimeType:m,responseType:j}=h;let w,T=n,v=n;const g=new Promise(((n,f)=>{try{w=new XMLHttpRequest,w.open(t,s,o,null==y?void 0:y.username,null==y?void 0:y.password),j&&"json"!==j&&(w.responseType=j),w.timeout=h.timeout||0,b===o&&(w.withCredentials=b),m&&w.overrideMimeType(m);let g=r,x=r;Object.keys(c).forEach((e=>{/content-type/i.test(e)&&(g=o,x=/application\/x-www-form-urlencoded/i.test(c[e])),w.setRequestHeader(e,c[e])})),g||u&&"[object FormData]"===u.toString()||w.setRequestHeader("Content-Type","application/json; charset=UTF-8"),w.addEventListener("progress",(e=>{T(e.loaded,e.total)})),w.upload.addEventListener("progress",(e=>{v(e.loaded,e.total)})),w.addEventListener("load",(()=>{let e=j&&"text"!==j&&"json"!==j?w.response:w.responseText;if(!j||"json"===j)try{e=JSON.parse(e)}catch(e){}n({status:w.status,statusText:w.statusText,data:e,headers:d(w.getAllResponseHeaders())})})),w.addEventListener("error",(()=>{f(p("Network Error"))})),w.addEventListener("timeout",(()=>{f(p("Network Timeout"))})),w.addEventListener("abort",(()=>{f(p("The user aborted a request."))}));let E=u;x&&"[object Object]"===a(E)&&(E=i(E)),null!==E&&(E=l(E)?E:JSON.stringify(E)),e(w),w.send(E)}catch(e){f(e)}}));return{response:()=>g,headers:()=>g.then((e=>e.headers)),abort:()=>{w.abort()},onDownload:e=>{T=e},onUpload:e=>{v=e}}}}}));