@iqmo/browser
Version:
Browser Stlite
2 lines (1 loc) • 13.1 kB
JavaScript
let N,k,v,J=(async()=>{const _=globalThis.showDirectoryPicker;async function W(a={}){if(_&&!a._preferPolyfill)return _(a);const e=document.createElement("input");e.type="file",e.webkitdirectory=!0,e.multiple=!0,e.style.position="fixed",e.style.top="-100000px",e.style.left="-100000px",document.body.appendChild(e);const t=Promise.resolve().then(()=>A);return await new Promise(i=>{e.addEventListener("change",i),e.click()}),t.then(i=>i.getDirHandlesFromInput(e))}const L={accepts:[]},x=globalThis.showOpenFilePicker;async function q(a={}){const e={...L,...a};if(x&&!a._preferPolyfill)return x(e);const t=document.createElement("input");t.type="file",t.multiple=e.multiple,t.accept=(e.accepts||[]).map(n=>[...(n.extensions||[]).map(o=>"."+o),...n.mimeTypes||[]]).flat().join(","),Object.assign(t.style,{position:"fixed",top:"-100000px",left:"-100000px"}),document.body.appendChild(t);const i=Promise.resolve().then(()=>A);return await new Promise(n=>{t.addEventListener("change",n,{once:!0}),t.click()}),t.remove(),i.then(n=>n.getFileHandlesFromInput(t))}const M=globalThis.showSaveFilePicker;async function z(a={}){if(M&&!a._preferPolyfill)return M(a);a._name&&(console.warn("deprecated _name, spec now have `suggestedName`"),a.suggestedName=a._name);const{FileSystemFileHandle:e}=await Promise.resolve().then(()=>u),{FileHandle:t}=await import("./downloader-DcCTL3Wz.js");return new e(new t(a.suggestedName))}globalThis.DataTransferItem&&!DataTransferItem.prototype.getAsFileSystemHandle&&(DataTransferItem.prototype.getAsFileSystemHandle=async function(){const a=this.webkitGetAsEntry(),[{FileHandle:e,FolderHandle:t},{FileSystemDirectoryHandle:i},{FileSystemFileHandle:n}]=await Promise.all([import("./sandbox-ChAzL-i-.js"),Promise.resolve().then(()=>T),Promise.resolve().then(()=>u)]);return a.isFile?new n(new e(a,!1)):new i(new t(a,!1))});async function R(a,e={}){if(!a)return globalThis.navigator?.storage?.getDirectory()||globalThis.getOriginPrivateDirectory();const{FileSystemDirectoryHandle:t}=await Promise.resolve().then(()=>T),i=await a,n=await(i.default?i.default(e):i(e));return new t(n)}let j;k={WritableStream:globalThis.WritableStream,TransformStream:globalThis.TransformStream,DOMException:globalThis.DOMException,Blob:globalThis.Blob,File:globalThis.File},{WritableStream:j}=k;class d extends j{#e;constructor(e){super(e),this.#e=e,Object.setPrototypeOf(this,d.prototype),this._closed=!1}async close(){this._closed=!0;const e=this.getWriter(),t=e.close();return e.releaseLock(),t}seek(e){return this.write({type:"seek",position:e})}truncate(e){return this.write({type:"truncate",size:e})}write(e){if(this._closed)return Promise.reject(new TypeError("Cannot write to a CLOSED writable stream"));const t=this.getWriter(),i=t.write(e);return t.releaseLock(),i}}Object.defineProperty(d.prototype,Symbol.toStringTag,{value:"FileSystemWritableFileStream",writable:!1,enumerable:!1,configurable:!0}),Object.defineProperties(d.prototype,{close:{enumerable:!0},seek:{enumerable:!0},truncate:{enumerable:!0},write:{enumerable:!0}}),globalThis.FileSystemFileHandle&&!globalThis.FileSystemFileHandle.prototype.createWritable&&!globalThis.FileSystemWritableFileStream&&(globalThis.FileSystemWritableFileStream=d);const m=Symbol("adapter");class H{[m];name;kind;constructor(e){this.kind=e.kind,this.name=e.name,this[m]=e}async queryPermission(e={}){const{mode:t="read"}=e,i=this[m];if(i.queryPermission)return i.queryPermission({mode:t});if(t==="read")return"granted";if(t==="readwrite")return i.writable?"granted":"denied";throw new TypeError(`Mode ${t} must be 'read' or 'readwrite'`)}async requestPermission({mode:e="read"}={}){const t=this[m];if(t.requestPermission)return t.requestPermission({mode:e});if(e==="read")return"granted";if(e==="readwrite")return t.writable?"granted":"denied";throw new TypeError(`Mode ${e} must be 'read' or 'readwrite'`)}async remove(e={}){await this[m].remove(e)}async isSameEntry(e){return this===e?!0:!e||typeof e!="object"||this.kind!==e.kind||!e[m]?!1:this[m].isSameEntry(e[m])}}Object.defineProperty(H.prototype,Symbol.toStringTag,{value:"FileSystemHandle",writable:!1,enumerable:!1,configurable:!0}),globalThis.FileSystemHandle&&(globalThis.FileSystemHandle.prototype.queryPermission??=function(a){return"granted"});let I;v={INVALID:["seeking position failed.","InvalidStateError"],GONE:["A requested file or directory could not be found at the time an operation was processed.","NotFoundError"],MISMATCH:["The path supplied exists, but was not an entry of requested type.","TypeMismatchError"],MOD_ERR:["The object can not be modified in this way.","InvalidModificationError"],SYNTAX:a=>[`Failed to execute 'write' on 'UnderlyingSinkBase': Invalid params passed. ${a}`,"SyntaxError"],SECURITY:["It was determined that certain files are unsafe for access within a Web application, or that too many calls are being made on file resources.","SecurityError"],DISALLOWED:["The request is not allowed by the user agent or the platform in the current context.","NotAllowedError"]},I={writable:globalThis.WritableStream};async function U(a){console.warn("deprecated fromDataTransfer - use `dt.items[0].getAsFileSystemHandle()` instead");const[e,t,i]=await Promise.all([import("./memory-B3L1Fctl.js"),import("./sandbox-ChAzL-i-.js"),Promise.resolve().then(()=>T)]),n=new e.FolderHandle("",!1);return n._entries=a.map(o=>o.isFile?new t.FileHandle(o,!1):new t.FolderHandle(o,!1)),new i.FileSystemDirectoryHandle(n)}async function B(a){const{FolderHandle:e,FileHandle:t}=await import("./memory-B3L1Fctl.js"),{FileSystemDirectoryHandle:i}=await Promise.resolve().then(()=>T),n=Array.from(a.files),o=n[0].webkitRelativePath.split("/",1)[0],l=new e(o,!1);return n.forEach(y=>{const s=y.webkitRelativePath.split("/");s.shift();const c=s.pop(),w=s.reduce((f,h)=>(f._entries[h]||(f._entries[h]=new e(h,!1)),f._entries[h]),l);w._entries[c]=new t(y.name,y,!1)}),new i(l)}async function C(a){const{FileHandle:e}=await import("./memory-B3L1Fctl.js"),{FileSystemFileHandle:t}=await Promise.resolve().then(()=>u);return Array.from(a.files).map(i=>new t(new e(i.name,i,!1)))}const A=Object.freeze(Object.defineProperty({__proto__:null,config:I,errors:v,fromDataTransfer:U,getDirHandlesFromInput:B,getFileHandlesFromInput:C},Symbol.toStringTag,{value:"Module"})),{GONE:G,MOD_ERR:$}=v,p=Symbol("adapter");let b=class P extends H{[p];constructor(e){super(e),this[p]=e}async getDirectoryHandle(e,t={}){if(e==="")throw new TypeError("Name can't be an empty string.");if(e==="."||e===".."||e.includes("/"))throw new TypeError("Name contains invalid characters.");t.create=!!t.create;const i=await this[p].getDirectoryHandle(e,t);return new P(i)}async*entries(){const{FileSystemFileHandle:e}=await Promise.resolve().then(()=>u);for await(const[t,i]of this[p].entries())yield[i.name,i.kind==="file"?new e(i):new P(i)]}async*getEntries(){const{FileSystemFileHandle:e}=await Promise.resolve().then(()=>u);console.warn("deprecated, use .entries() instead");for await(let t of this[p].entries())yield t.kind==="file"?new e(t):new P(t)}async getFileHandle(e,t={}){const{FileSystemFileHandle:i}=await Promise.resolve().then(()=>u);if(e==="")throw new TypeError("Name can't be an empty string.");if(e==="."||e===".."||e.includes("/"))throw new TypeError("Name contains invalid characters.");t.create=!!t.create;const n=await this[p].getFileHandle(e,t);return new i(n)}async removeEntry(e,t={}){if(e==="")throw new TypeError("Name can't be an empty string.");if(e==="."||e===".."||e.includes("/"))throw new TypeError("Name contains invalid characters.");return t.recursive=!!t.recursive,this[p].removeEntry(e,t)}async resolve(e){if(await e.isSameEntry(this))return[];const t=[{handle:this,path:[]}];for(;t.length;){let{handle:i,path:n}=t.pop();for await(const o of i.values()){if(await o.isSameEntry(e))return[...n,o.name];o.kind==="directory"&&t.push({handle:o,path:[...n,o.name]})}}return null}async*keys(){for await(const[e]of this[p].entries())yield e}async*values(){for await(const[e,t]of this)yield t}[Symbol.asyncIterator](){return this.entries()}};if(Object.defineProperty(b.prototype,Symbol.toStringTag,{value:"FileSystemDirectoryHandle",writable:!1,enumerable:!1,configurable:!0}),Object.defineProperties(b.prototype,{getDirectoryHandle:{enumerable:!0},entries:{enumerable:!0},getFileHandle:{enumerable:!0},removeEntry:{enumerable:!0}}),globalThis.FileSystemDirectoryHandle){const a=globalThis.FileSystemDirectoryHandle.prototype;a.resolve=async function(n){if(await n.isSameEntry(this))return[];const o=[{handle:this,path:[]}];for(;o.length;){let{handle:l,path:y}=o.pop();for await(const s of l.values()){if(await s.isSameEntry(n))return[...y,s.name];s.kind==="directory"&&o.push({handle:s,path:[...y,s.name]})}}return null};async function e(n){if(await(await navigator.storage.getDirectory()).resolve(n)===null)throw new DOMException(...G)}const t=a.entries;a.entries=async function*(){await e(this),yield*t.call(this)},a[Symbol.asyncIterator]=async function*(){yield*this.entries()};const i=a.removeEntry;a.removeEntry=async function(n,o={}){return i.call(this,n,o).catch(async l=>{throw l instanceof DOMException&&l.name==="UnknownError"&&!o.recursive&&!(await t.call(this).next()).done?new DOMException(...$):l})}}const T=Object.freeze(Object.defineProperty({__proto__:null,FileSystemDirectoryHandle:b,default:b},Symbol.toStringTag,{value:"Module"})),{INVALID:V,SYNTAX:D,GONE:Y}=v,E=Symbol("adapter");class g extends H{[E];constructor(e){super(e),this[E]=e}async createWritable(e={}){return new d(await this[E].createWritable(e))}async getFile(){return this[E].getFile()}}if(Object.defineProperty(g.prototype,Symbol.toStringTag,{value:"FileSystemFileHandle",writable:!1,enumerable:!1,configurable:!0}),Object.defineProperties(g.prototype,{createWritable:{enumerable:!0},getFile:{enumerable:!0}}),globalThis.FileSystemFileHandle&&!globalThis.FileSystemFileHandle.prototype.createWritable){const a=new WeakMap;let e;const t=()=>{let n,o;onmessage=async l=>{const y=l.ports[0],s=l.data;switch(s.type){case"open":const c=s.name;let w=await navigator.storage.getDirectory();for(const f of s.path)w=await w.getDirectoryHandle(f);n=await w.getFileHandle(c),o=await n.createSyncAccessHandle();break;case"write":o.write(s.data,{at:s.position}),o.flush();break;case"truncate":o.truncate(s.size);break;case"abort":case"close":o.close();break}y.postMessage(0)}};globalThis.FileSystemFileHandle.prototype.createWritable=async function(n){if(!e){const r=`(${t.toString()})()`,F=new Blob([r],{type:"text/javascript"});e=URL.createObjectURL(F)}const o=new Worker(e,{type:"module"});let l=0;const y=new TextEncoder;let s=await this.getFile().then(r=>r.size);const c=r=>new Promise((F,X)=>{const S=new MessageChannel;S.port1.onmessage=O=>{O.data instanceof Error?X(O.data):F(O.data),S.port1.close(),S.port2.close(),S.port1.onmessage=null},o.postMessage(r,[S.port2])}),w=await navigator.storage.getDirectory(),f=await a.get(this),h=await w.resolve(f);if(h===null)throw new DOMException(...Y);return await c({type:"open",path:h,name:this.name}),n?.keepExistingData===!1&&(await c({type:"truncate",size:0}),s=0),new d({start:r=>{},async write(r){if(r?.constructor===Object?r={...r}:r={type:"write",data:r,position:l},r.type==="write"){if(!("data"in r))throw await c({type:"close"}),new DOMException(...D("write requires a data argument"));if(r.position??=l,typeof r.data=="string")r.data=y.encode(r.data);else if(r.data instanceof ArrayBuffer)r.data=new Uint8Array(r.data);else if(!(r.data instanceof Uint8Array)&&ArrayBuffer.isView(r.data))r.data=new Uint8Array(r.data.buffer,r.data.byteOffset,r.data.byteLength);else if(!(r.data instanceof Uint8Array)){const F=await new Response(r.data).arrayBuffer();r.data=new Uint8Array(F)}Number.isInteger(r.position)&&r.position>=0&&(l=r.position),l+=r.data.byteLength,s+=r.data.byteLength}else if(r.type==="seek")if(Number.isInteger(r.position)&&r.position>=0){if(s<r.position)throw new DOMException(...V);console.log("seeking",r),l=r.position;return}else throw await c({type:"close"}),new DOMException(...D("seek requires a position argument"));else if(r.type==="truncate")if(Number.isInteger(r.size)&&r.size>=0)s=r.size,l>s&&(l=s);else throw await c({type:"close"}),new DOMException(...D("truncate requires a size argument"));await c(r)},async close(){await c({type:"close"}),o.terminate()},async abort(r){await c({type:"abort",reason:r}),o.terminate()}})};const i=FileSystemDirectoryHandle.prototype.getFileHandle;FileSystemDirectoryHandle.prototype.getFileHandle=async function(...n){const o=await i.call(this,...n);return a.set(o,this),o}}let u;u=Object.freeze(Object.defineProperty({__proto__:null,FileSystemFileHandle:g,default:g},Symbol.toStringTag,{value:"Module"})),N=Object.freeze(Object.defineProperty({__proto__:null,FileSystemDirectoryHandle:b,FileSystemFileHandle:g,FileSystemHandle:H,FileSystemWritableFileStream:d,getOriginPrivateDirectory:R,showDirectoryPicker:W,showOpenFilePicker:q,showSaveFilePicker:z},Symbol.toStringTag,{value:"Module"}))})();export{J as __tla,N as a,k as c,v as e};