univ-fs-webnfs
Version:
The universal Filesystem for Web File System Access API (Native File System API)
1 lines • 2.83 kB
JavaScript
webpackChunkuniv_fs_webnfs=self.webpackChunkuniv_fs_webnfs||[]).push([[953],{953:(e,t,r)=>{r.r(t),r.d(t,{ReadableStreamConverter:()=>i,createPartialReadableStream:()=>o});var a=r(78),n=r(888),s=r(706);function o(e,t){const r=e.getReader(),a=t.start,n=t.end??Number.MAX_SAFE_INTEGER;return new ReadableStream({start:async t=>{let o,i=0;do{o=await r.read();const e=o.value;if(e){const r=e,s=r.byteLength,o=i+s,u=(o<n?o:n)-i;let c;i<=a&&a<o?c=r.subarray(a-i,u):a<i&&i<n&&(c=r.subarray(0,u)),c&&t.enqueue(c),i+=s}}while(!o.done&&i<n);t.close(),r.releaseLock(),(0,s.aP)(e)},cancel:t=>{r.releaseLock(),(0,s.aP)(e,t)}})}class i extends a.f{constructor(){super(...arguments),this.type="readablestream"}empty(){return new ReadableStream({start:e=>{e.enqueue(n.RJ),e.close()}})}is(e){return(0,s.Os)(e)}async _convert(e,t){if("string"==typeof e&&"url"===t.srcStringType)if(e.startsWith("http:")||e.startsWith("https:")){const r=await fetch(e);(0,a._)().is("readable",r.body,t),e=r.body}else e.startsWith("file:")&&s.tb&&(e=await(0,s.tb)(e));if((0,a._)().is("readable",e,t))return function(e,t){const r=(0,n.og)(t),o=r.start,i=r.end??Number.MAX_SAFE_INTEGER,u=t.bufferSize,c=(0,a._)()._of("uint8array");let b=0;return new ReadableStream({start:async t=>{await(0,s.FQ)(e,(async e=>{const r=await c.convert(e,{bufferSize:u}),a=r.byteLength,n=b+a,s=(n<i?n:i)-b;let f;return b<=o&&o<n?f=r.subarray(o-b,s):o<b&&b<i&&(f=r.subarray(0,s)),f&&t.enqueue(f),b+=a,b<i}))},cancel:t=>{e.destroy(t)}})}(e,t);if(s.Mn&&(e=(0,a._)().is("blob",e,t)?e.stream():(await(0,a._)().convert("blob",e,t)).stream()),this.is(e))return o(e,await this._getStartEnd(e,t));const r=await(0,a._)().convert("uint8array",e,t),{start:i,end:u}=(0,n.og)(t,r.byteLength);return function(e){return new ReadableStream({start:t=>{t.enqueue(e)}})}(r.slice(i,u))}_getStartEnd(e,t){return Promise.resolve((0,n.og)(t))}_isEmpty(){return!1}_merge(e){const t=e.length,r=(a,n)=>{if(n<t){const o=e[n];(0,s.vg)(o,(e=>(a.enqueue(e),Promise.resolve(!0)))).then((()=>r(a,++n))).catch((r=>{a.error(r);for(let r=n;r<t;r++){const t=e[r];(0,s.aP)(t)}}))}else a.close()};return Promise.resolve(new ReadableStream({start:e=>{r(e,0)}}))}_size(){throw new Error("Cannot get size of ReadableStream")}async _toArrayBuffer(e,t){const r=await this._toUint8Array(e,t);return r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength)}async _toBase64(e,t){const r={bufferSize:t.bufferSize},n=s.jU?"blob":"uint8array",o=await(0,a._)().convert(n,e,r);return await(0,a._)()._of(n).toBase64(o,t)}async _toText(e,t){const r={bufferSize:t.bufferSize},n=s.jU?"blob":"uint8array",o=await(0,a._)().convert(n,e,r);return await(0,a._)()._of(n).toText(o,t)}async _toUint8Array(e,t){const r=[];return await(0,s.vg)(e,(async e=>(r.push(e),Promise.resolve(!0)))),await(0,a._)()._of("uint8array").merge(r,t)}}}}]);
;(self.