UNPKG

@stlite/browser

Version:
2 lines (1 loc) 13.7 kB
let B,M,T,ye=(async()=>{var $=Object.defineProperty,x=r=>{throw TypeError(r)},V=(r,e,t)=>e in r?$(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,b=(r,e,t)=>V(r,typeof e!="symbol"?e+"":e,t),Y=(r,e,t)=>e.has(r)||x("Cannot "+t),X=(r,e,t)=>e.has(r)?x("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(r):e.set(r,t),J=(r,e,t,n)=>(Y(r,e,"write to private field"),n?n.call(r,t):e.set(r,t),t);const j=globalThis.showDirectoryPicker;async function K(r={}){if(j&&!r._preferPolyfill)return j(r);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(()=>z);return await new Promise(n=>{e.addEventListener("change",n),e.click()}),t.then(n=>n.getDirHandlesFromInput(e))}const Q={accepts:[]},A=globalThis.showOpenFilePicker;async function Z(r={}){const e={...Q,...r};if(A&&!r._preferPolyfill)return A(e);const t=document.createElement("input");t.type="file",t.multiple=e.multiple,t.accept=(e.accepts||[]).map(o=>[...(o.extensions||[]).map(i=>"."+i),...o.mimeTypes||[]]).flat().join(","),Object.assign(t.style,{position:"fixed",top:"-100000px",left:"-100000px"}),document.body.appendChild(t);const n=Promise.resolve().then(()=>z);return await new Promise(o=>{t.addEventListener("change",o,{once:!0}),t.click()}),t.remove(),n.then(o=>o.getFileHandlesFromInput(t))}const I=globalThis.showSaveFilePicker;async function ee(r={}){if(I&&!r._preferPolyfill)return I(r);r._name&&(console.warn("deprecated _name, spec now have `suggestedName`"),r.suggestedName=r._name);const{FileSystemFileHandle:e}=await Promise.resolve().then(()=>p),{FileHandle:t}=await import("./downloader-DGLuAMxS.js");return new e(new t(r.suggestedName))}globalThis.DataTransferItem&&!DataTransferItem.prototype.getAsFileSystemHandle&&(DataTransferItem.prototype.getAsFileSystemHandle=async function(){const r=this.webkitGetAsEntry(),[{FileHandle:e,FolderHandle:t},{FileSystemDirectoryHandle:n},{FileSystemFileHandle:o}]=await Promise.all([import("./sandbox-DBtNFhfn.js"),Promise.resolve().then(()=>H),Promise.resolve().then(()=>p)]);return r.isFile?new o(new e(r,!1)):new n(new t(r,!1))});async function te(r,e={}){var t,n;if(!r)return((n=(t=globalThis.navigator)==null?void 0:t.storage)==null?void 0:n.getDirectory())||globalThis.getOriginPrivateDirectory();const{FileSystemDirectoryHandle:o}=await Promise.resolve().then(()=>H),i=await r,l=await(i.default?i.default(e):i(e));return new o(l)}let W;M={WritableStream:globalThis.WritableStream,TransformStream:globalThis.TransformStream,DOMException:globalThis.DOMException,Blob:globalThis.Blob,File:globalThis.File},{WritableStream:W}=M;var O;const re=class G extends W{constructor(e){super(e),X(this,O),J(this,O,e),Object.setPrototypeOf(this,G.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(),n=t.write(e);return t.releaseLock(),n}};O=new WeakMap;let f=re;Object.defineProperty(f.prototype,Symbol.toStringTag,{value:"FileSystemWritableFileStream",writable:!1,enumerable:!1,configurable:!0}),Object.defineProperties(f.prototype,{close:{enumerable:!0},seek:{enumerable:!0},truncate:{enumerable:!0},write:{enumerable:!0}}),globalThis.FileSystemFileHandle&&!globalThis.FileSystemFileHandle.prototype.createWritable&&!globalThis.FileSystemWritableFileStream&&(globalThis.FileSystemWritableFileStream=f);const y=Symbol("adapter");var N;N=y;class E{constructor(e){b(this,N),b(this,"name"),b(this,"kind"),this.kind=e.kind,this.name=e.name,this[y]=e}async queryPermission(e={}){const{mode:t="read"}=e,n=this[y];if(n.queryPermission)return n.queryPermission({mode:t});if(t==="read")return"granted";if(t==="readwrite")return n.writable?"granted":"denied";throw new TypeError(`Mode ${t} must be 'read' or 'readwrite'`)}async requestPermission({mode:e="read"}={}){const t=this[y];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[y].remove(e)}async isSameEntry(e){return this===e?!0:!e||typeof e!="object"||this.kind!==e.kind||!e[y]?!1:this[y].isSameEntry(e[y])}}Object.defineProperty(E.prototype,Symbol.toStringTag,{value:"FileSystemHandle",writable:!1,enumerable:!1,configurable:!0});var q;globalThis.FileSystemHandle&&((q=globalThis.FileSystemHandle.prototype).queryPermission??(q.queryPermission=function(r){return"granted"}));let L;T={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:r=>[`Failed to execute 'write' on 'UnderlyingSinkBase': Invalid params passed. ${r}`,"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"]},L={writable:globalThis.WritableStream};async function ae(r){console.warn("deprecated fromDataTransfer - use `dt.items[0].getAsFileSystemHandle()` instead");const[e,t,n]=await Promise.all([import("./memory-C0HajlA-.js"),import("./sandbox-DBtNFhfn.js"),Promise.resolve().then(()=>H)]),o=new e.FolderHandle("",!1);return o._entries=r.map(i=>i.isFile?new t.FileHandle(i,!1):new t.FolderHandle(i,!1)),new n.FileSystemDirectoryHandle(o)}async function ne(r){const{FolderHandle:e,FileHandle:t}=await import("./memory-C0HajlA-.js"),{FileSystemDirectoryHandle:n}=await Promise.resolve().then(()=>H),o=Array.from(r.files),i=o[0].webkitRelativePath.split("/",1)[0],l=new e(i,!1);return o.forEach(d=>{const s=d.webkitRelativePath.split("/");s.shift();const c=s.pop(),u=s.reduce((w,h)=>(w._entries[h]||(w._entries[h]=new e(h,!1)),w._entries[h]),l);u._entries[c]=new t(d.name,d,!1)}),new n(l)}async function ie(r){const{FileHandle:e}=await import("./memory-C0HajlA-.js"),{FileSystemFileHandle:t}=await Promise.resolve().then(()=>p);return Array.from(r.files).map(n=>new t(new e(n.name,n,!1)))}const z=Object.freeze(Object.defineProperty({__proto__:null,config:L,errors:T,fromDataTransfer:ae,getDirHandlesFromInput:ne,getFileHandlesFromInput:ie},Symbol.toStringTag,{value:"Module"})),{GONE:oe,MOD_ERR:se}=T,m=Symbol("adapter");var R;let g=class D extends E{constructor(e){super(e),b(this,R),this[m]=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 n=await this[m].getDirectoryHandle(e,t);return new D(n)}async*entries(){const{FileSystemFileHandle:e}=await Promise.resolve().then(()=>p);for await(const[t,n]of this[m].entries())yield[n.name,n.kind==="file"?new e(n):new D(n)]}async*getEntries(){const{FileSystemFileHandle:e}=await Promise.resolve().then(()=>p);console.warn("deprecated, use .entries() instead");for await(let t of this[m].entries())yield t.kind==="file"?new e(t):new D(t)}async getFileHandle(e,t={}){const{FileSystemFileHandle:n}=await Promise.resolve().then(()=>p);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 o=await this[m].getFileHandle(e,t);return new n(o)}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[m].removeEntry(e,t)}async resolve(e){if(await e.isSameEntry(this))return[];const t=[{handle:this,path:[]}];for(;t.length;){let{handle:n,path:o}=t.pop();for await(const i of n.values()){if(await i.isSameEntry(e))return[...o,i.name];i.kind==="directory"&&t.push({handle:i,path:[...o,i.name]})}}return null}async*keys(){for await(const[e]of this[m].entries())yield e}async*values(){for await(const[e,t]of this)yield t}[(R=m,Symbol.asyncIterator)](){return this.entries()}};if(Object.defineProperty(g.prototype,Symbol.toStringTag,{value:"FileSystemDirectoryHandle",writable:!1,enumerable:!1,configurable:!0}),Object.defineProperties(g.prototype,{getDirectoryHandle:{enumerable:!0},entries:{enumerable:!0},getFileHandle:{enumerable:!0},removeEntry:{enumerable:!0}}),globalThis.FileSystemDirectoryHandle){const r=globalThis.FileSystemDirectoryHandle.prototype;r.resolve=async function(o){if(await o.isSameEntry(this))return[];const i=[{handle:this,path:[]}];for(;i.length;){let{handle:l,path:d}=i.pop();for await(const s of l.values()){if(await s.isSameEntry(o))return[...d,s.name];s.kind==="directory"&&i.push({handle:s,path:[...d,s.name]})}}return null};async function e(o){if(await(await navigator.storage.getDirectory()).resolve(o)===null)throw new DOMException(...oe)}const t=r.entries;r.entries=async function*(){await e(this),yield*t.call(this)},r[Symbol.asyncIterator]=async function*(){yield*this.entries()};const n=r.removeEntry;r.removeEntry=async function(o,i={}){return n.call(this,o,i).catch(async l=>{throw l instanceof DOMException&&l.name==="UnknownError"&&!i.recursive&&!(await t.call(this).next()).done?new DOMException(...se):l})}}const H=Object.freeze(Object.defineProperty({__proto__:null,FileSystemDirectoryHandle:g,default:g},Symbol.toStringTag,{value:"Module"})),{INVALID:le,SYNTAX:k,GONE:ce}=T,P=Symbol("adapter");var U,C;class F extends(C=E,U=P,C){constructor(e){super(e),b(this,U),this[P]=e}async createWritable(e={}){return new f(await this[P].createWritable(e))}async getFile(){return this[P].getFile()}}if(Object.defineProperty(F.prototype,Symbol.toStringTag,{value:"FileSystemFileHandle",writable:!1,enumerable:!1,configurable:!0}),Object.defineProperties(F.prototype,{createWritable:{enumerable:!0},getFile:{enumerable:!0}}),globalThis.FileSystemFileHandle&&!globalThis.FileSystemFileHandle.prototype.createWritable){const r=new WeakMap;let e;const t=()=>{let o,i;onmessage=async l=>{const d=l.ports[0],s=l.data;switch(s.type){case"open":const c=s.name;let u=await navigator.storage.getDirectory();for(const w of s.path)u=await u.getDirectoryHandle(w);o=await u.getFileHandle(c),i=await o.createSyncAccessHandle();break;case"write":i.write(s.data,{at:s.position}),i.flush();break;case"truncate":i.truncate(s.size);break;case"abort":case"close":i.close();break}d.postMessage(0)}};globalThis.FileSystemFileHandle.prototype.createWritable=async function(o){if(!e){const a=`(${t.toString()})()`,S=new Blob([a],{type:"text/javascript"});e=URL.createObjectURL(S)}const i=new Worker(e,{type:"module"});let l=0;const d=new TextEncoder;let s=await this.getFile().then(a=>a.size);const c=a=>new Promise((S,de)=>{const v=new MessageChannel;v.port1.onmessage=_=>{_.data instanceof Error?de(_.data):S(_.data),v.port1.close(),v.port2.close(),v.port1.onmessage=null},i.postMessage(a,[v.port2])}),u=await navigator.storage.getDirectory(),w=await r.get(this),h=await u.resolve(w);if(h===null)throw new DOMException(...ce);return await c({type:"open",path:h,name:this.name}),(o==null?void 0:o.keepExistingData)===!1&&(await c({type:"truncate",size:0}),s=0),new f({start:a=>{},async write(a){if((a==null?void 0:a.constructor)===Object?a={...a}:a={type:"write",data:a,position:l},a.type==="write"){if(!("data"in a))throw await c({type:"close"}),new DOMException(...k("write requires a data argument"));if(a.position??(a.position=l),typeof a.data=="string")a.data=d.encode(a.data);else if(a.data instanceof ArrayBuffer)a.data=new Uint8Array(a.data);else if(!(a.data instanceof Uint8Array)&&ArrayBuffer.isView(a.data))a.data=new Uint8Array(a.data.buffer,a.data.byteOffset,a.data.byteLength);else if(!(a.data instanceof Uint8Array)){const S=await new Response(a.data).arrayBuffer();a.data=new Uint8Array(S)}Number.isInteger(a.position)&&a.position>=0&&(l=a.position),l+=a.data.byteLength,s+=a.data.byteLength}else if(a.type==="seek")if(Number.isInteger(a.position)&&a.position>=0){if(s<a.position)throw new DOMException(...le);console.log("seeking",a),l=a.position;return}else throw await c({type:"close"}),new DOMException(...k("seek requires a position argument"));else if(a.type==="truncate")if(Number.isInteger(a.size)&&a.size>=0)s=a.size,l>s&&(l=s);else throw await c({type:"close"}),new DOMException(...k("truncate requires a size argument"));await c(a)},async close(){await c({type:"close"}),i.terminate()},async abort(a){await c({type:"abort",reason:a}),i.terminate()}})};const n=FileSystemDirectoryHandle.prototype.getFileHandle;FileSystemDirectoryHandle.prototype.getFileHandle=async function(...o){const i=await n.call(this,...o);return r.set(i,this),i}}let p;p=Object.freeze(Object.defineProperty({__proto__:null,FileSystemFileHandle:F,default:F},Symbol.toStringTag,{value:"Module"})),B=Object.freeze(Object.defineProperty({__proto__:null,FileSystemDirectoryHandle:g,FileSystemFileHandle:F,FileSystemHandle:E,FileSystemWritableFileStream:f,getOriginPrivateDirectory:te,showDirectoryPicker:K,showOpenFilePicker:Z,showSaveFilePicker:ee},Symbol.toStringTag,{value:"Module"}))})();export{ye as __tla,B as a,M as c,T as e};