Spaces:
Running
Running
const h=new Error("failed to get response body reader"),p=new Error("failed to complete download"),u="Content-Length",g=e=>new Promise((t,a)=>{const r=new FileReader;r.onload=()=>{const{result:n}=r;n instanceof ArrayBuffer?t(new Uint8Array(n)):t(new Uint8Array)},r.onerror=n=>{var o,c;a(Error(`File could not be read! Code=${((c=(o=n==null?void 0:n.target)==null?void 0:o.error)==null?void 0:c.code)||-1}`))},r.readAsArrayBuffer(e)}),E=async e=>{let t;if(typeof e=="string")/data:_data\/([a-zA-Z]*);base64,([^"]*)/.test(e)?t=atob(e.split(",")[1]).split("").map(a=>a.charCodeAt(0)):t=await(await fetch(e)).arrayBuffer();else if(e instanceof URL)t=await(await fetch(e)).arrayBuffer();else if(e instanceof File||e instanceof Blob)t=await g(e);else return new Uint8Array;return new Uint8Array(t)},b=async e=>new Promise(t=>{const a=document.createElement("script"),r=()=>{a.removeEventListener("load",r),t()};a.src=e,a.type="text/javascript",a.addEventListener("load",r),document.getElementsByTagName("head")[0].appendChild(a)}),R=async(e,t)=>{var n;const a=await fetch(e);let r;try{const o=parseInt(a.headers.get(u)||"-1"),c=(n=a.body)==null?void 0:n.getReader();if(!c)throw h;const f=[];let d=0;for(;;){const{done:s,value:i}=await c.read(),l=i?i.length:0;if(s){if(o!=-1&&o!==d)throw p;t&&t({url:e,total:o,received:d,delta:l,done:s});break}f.push(i),d+=l,t&&t({url:e,total:o,received:d,delta:l,done:s})}const w=new Uint8Array(d);let y=0;for(const s of f)w.set(s,y),y+=s.length;r=w.buffer}catch(o){console.log("failed to send download progress event: ",o),r=await a.arrayBuffer(),t&&t({url:e,total:r.byteLength,received:r.byteLength,delta:0,done:!0})}return r},m=async(e,t,a=!1,r)=>{const n=a?await R(e,r):await(await fetch(e)).arrayBuffer(),o=new Blob([n],{type:t});return URL.createObjectURL(o)};export{R as downloadWithProgress,E as fetchFile,b as importScript,m as toBlobURL}; | |