UNPKG

@stlite/browser

Version:
97 lines (96 loc) 3.17 kB
import { c as e, e as t } from "./es6-BxevHr5y-kgCqaWut.js"; //#region ../react/build/downloader-CZ7qD7NY.js var { WritableStream: n, TransformStream: r, DOMException: i, Blob: a } = e, { GONE: o } = t, s = /constructor/i.test(window.HTMLElement), c = class { constructor(e = "unkown") { this.name = e, this.kind = "file"; } async getFile() { throw new i(...o); } async isSameEntry(e) { return this === e; } async createWritable(e = {}) { let t = await navigator.serviceWorker?.getRegistration(), i = document.createElement("a"), o = new r(), c = o.writable; if (i.download = this.name, s || !t) { let e = []; o.readable.pipeTo(new n({ write(t) { e.push(new a([t])); }, close() { let t = new a(e, { type: "application/octet-stream; charset=utf-8" }); e = [], i.href = URL.createObjectURL(t), i.click(), setTimeout(() => URL.revokeObjectURL(i.href), 1e4); } })); } else { let { writable: i, readablePort: a } = new h(n), s = encodeURIComponent(this.name).replace(/['()]/g, escape).replace(/\*/g, "%2A"), c = { "content-disposition": "attachment; filename*=UTF-8''" + s, "content-type": "application/octet-stream; charset=utf-8", ...e.size ? { "content-length": e.size } : {} }, l = setTimeout(() => t.active.postMessage(0), 1e4); o.readable.pipeThrough(new r({ transform(e, t) { if (e instanceof Uint8Array) return t.enqueue(e); let n = new Response(e).body.getReader(), r = (e) => n.read().then((e) => e.done ? 0 : r(t.enqueue(e.value))); return r(); } })).pipeTo(i).finally(() => { clearInterval(l); }), t.active.postMessage({ url: t.scope + s, headers: c, readablePort: a }, [a]); let u = document.createElement("iframe"); u.hidden = !0, u.src = t.scope + s, document.body.appendChild(u); } return c.getWriter(); } }, l = 0, u = 0, d = 1, f = 1, p = 2, m = class { constructor(e) { e.onmessage = (e) => this._onMessage(e.data), this._port = e, this._resetReady(); } start(e) { return this._controller = e, this._readyPromise; } write(e) { let t = { type: l, chunk: e }; return this._port.postMessage(t, [e.buffer]), this._resetReady(), this._readyPromise; } close() { this._port.postMessage({ type: p }), this._port.close(); } abort(e) { this._port.postMessage({ type: f, reason: e }), this._port.close(); } _onMessage(e) { e.type === u && this._resolveReady(), e.type === d && this._onError(e.reason); } _onError(e) { this._controller.error(e), this._rejectReady(e), this._port.close(); } _resetReady() { this._readyPromise = new Promise((e, t) => { this._readyResolve = e, this._readyReject = t; }), this._readyPending = !0; } _resolveReady() { this._readyResolve(), this._readyPending = !1; } _rejectReady(e) { this._readyPending || this._resetReady(), this._readyPromise.catch(() => {}), this._readyReject(e), this._readyPending = !1; } }, h = class { constructor(e) { let t = new MessageChannel(); this.readablePort = t.port1, this.writable = new e(new m(t.port2)); } }; //#endregion export { c as FileHandle }; //# sourceMappingURL=downloader-CZ7qD7NY-hiBe8Fyp.js.map