vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
3 lines (2 loc) • 1.25 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("@vexip-ui/utils");function f(e,r){const s=`fail to post ${e} ${r.status}'`,a=new Error(s);return a.response=l(r),a.url=e,a.status=r.status,a.method="POST",a}function l(e){const r=e.responseText||e.response;if(!r)return r;try{return JSON.parse(r)}catch{return r}}function o(e){if(typeof XMLHttpRequest>"u")return d.noop;const r=new XMLHttpRequest,s=e.url;r.upload&&e.onProgress&&(r.upload.onprogress=t=>{let n=0;t.total>0&&(n=t.loaded/t.total*100),e.onProgress(n)});const a=new FormData;if(e.data){const t=e.data;Object.keys(t).forEach(n=>{a.append(n,t[n])})}a.append(e.field||"file",e.file),e.file.path&&a.append(e.pathField||"path",e.file.path),e.onError&&(r.onerror=()=>{e.onError(f(s,r))}),r.onload=()=>{var n;if(r.status<200||r.status>=300){e.onError&&e.onError(f(s,r));return}const t=l(r);(n=e.onSuccess)==null||n.call(e,t)},e.onAbort&&(r.onabort=()=>{e.onAbort()}),r.open("POST",s,!0),e.withCredentials&&"withCredentials"in r&&(r.withCredentials=!0);const u=e.headers??{};return Object.keys(u).forEach(t=>{d.has(u,t)&&d.isDefined(u[t])&&r.setRequestHeader(t,u[t])}),r.send(a),()=>r.abort()}exports.upload=o;
//# sourceMappingURL=request.cjs.map