diff --git a/themes/default/public/js/lufi.js b/themes/default/public/js/lufi.js index cb81f59..c9887c7 100755 --- a/themes/default/public/js/lufi.js +++ b/themes/default/public/js/lufi.js @@ -1,3547 +1 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __defNormalProp = (obj3, key, value) => key in obj3 ? __defProp(obj3, key, { enumerable: true, configurable: true, writable: true, value }) : obj3[key] = value; -var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { - get: (a, b) => (typeof require !== "undefined" ? require : a)[b] -}) : x)(function(x) { - if (typeof require !== "undefined") return require.apply(this, arguments); - throw Error('Dynamic require of "' + x + '" is not supported'); -}); -var __commonJS = (cb, mod) => function __require2() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __export = (target, all) => { - for (var name in all) - __defProp(target, name, { get: all[name], enumerable: true }); -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __publicField = (obj3, key, value) => __defNormalProp(obj3, typeof key !== "symbol" ? key + "" : key, value); - -// node_modules/.deno/events@3.3.0/node_modules/events/events.js -var require_events = __commonJS({ - "node_modules/.deno/events@3.3.0/node_modules/events/events.js"(exports, module) { - "use strict"; - var R = typeof Reflect === "object" ? Reflect : null; - var ReflectApply = R && typeof R.apply === "function" ? R.apply : function ReflectApply2(target, receiver, args) { - return Function.prototype.apply.call(target, receiver, args); - }; - var ReflectOwnKeys; - if (R && typeof R.ownKeys === "function") { - ReflectOwnKeys = R.ownKeys; - } else if (Object.getOwnPropertySymbols) { - ReflectOwnKeys = function ReflectOwnKeys2(target) { - return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target)); - }; - } else { - ReflectOwnKeys = function ReflectOwnKeys2(target) { - return Object.getOwnPropertyNames(target); - }; - } - function ProcessEmitWarning(warning) { - if (console && console.warn) console.warn(warning); - } - var NumberIsNaN = Number.isNaN || function NumberIsNaN2(value) { - return value !== value; - }; - function EventEmitter3() { - EventEmitter3.init.call(this); - } - module.exports = EventEmitter3; - module.exports.once = once; - EventEmitter3.EventEmitter = EventEmitter3; - EventEmitter3.prototype._events = void 0; - EventEmitter3.prototype._eventsCount = 0; - EventEmitter3.prototype._maxListeners = void 0; - var defaultMaxListeners = 10; - function checkListener(listener) { - if (typeof listener !== "function") { - throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); - } - } - Object.defineProperty(EventEmitter3, "defaultMaxListeners", { - enumerable: true, - get: function() { - return defaultMaxListeners; - }, - set: function(arg) { - if (typeof arg !== "number" || arg < 0 || NumberIsNaN(arg)) { - throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + "."); - } - defaultMaxListeners = arg; - } - }); - EventEmitter3.init = function() { - if (this._events === void 0 || this._events === Object.getPrototypeOf(this)._events) { - this._events = /* @__PURE__ */ Object.create(null); - this._eventsCount = 0; - } - this._maxListeners = this._maxListeners || void 0; - }; - EventEmitter3.prototype.setMaxListeners = function setMaxListeners(n) { - if (typeof n !== "number" || n < 0 || NumberIsNaN(n)) { - throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + "."); - } - this._maxListeners = n; - return this; - }; - function _getMaxListeners(that) { - if (that._maxListeners === void 0) - return EventEmitter3.defaultMaxListeners; - return that._maxListeners; - } - EventEmitter3.prototype.getMaxListeners = function getMaxListeners() { - return _getMaxListeners(this); - }; - EventEmitter3.prototype.emit = function emit(type) { - var args = []; - for (var i = 1; i < arguments.length; i++) args.push(arguments[i]); - var doError = type === "error"; - var events2 = this._events; - if (events2 !== void 0) - doError = doError && events2.error === void 0; - else if (!doError) - return false; - if (doError) { - var er; - if (args.length > 0) - er = args[0]; - if (er instanceof Error) { - throw er; - } - var err3 = new Error("Unhandled error." + (er ? " (" + er.message + ")" : "")); - err3.context = er; - throw err3; - } - var handler = events2[type]; - if (handler === void 0) - return false; - if (typeof handler === "function") { - ReflectApply(handler, this, args); - } else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) - ReflectApply(listeners[i], this, args); - } - return true; - }; - function _addListener(target, type, listener, prepend) { - var m; - var events2; - var existing; - checkListener(listener); - events2 = target._events; - if (events2 === void 0) { - events2 = target._events = /* @__PURE__ */ Object.create(null); - target._eventsCount = 0; - } else { - if (events2.newListener !== void 0) { - target.emit( - "newListener", - type, - listener.listener ? listener.listener : listener - ); - events2 = target._events; - } - existing = events2[type]; - } - if (existing === void 0) { - existing = events2[type] = listener; - ++target._eventsCount; - } else { - if (typeof existing === "function") { - existing = events2[type] = prepend ? [listener, existing] : [existing, listener]; - } else if (prepend) { - existing.unshift(listener); - } else { - existing.push(listener); - } - m = _getMaxListeners(target); - if (m > 0 && existing.length > m && !existing.warned) { - existing.warned = true; - var w = new Error("Possible EventEmitter memory leak detected. " + existing.length + " " + String(type) + " listeners added. Use emitter.setMaxListeners() to increase limit"); - w.name = "MaxListenersExceededWarning"; - w.emitter = target; - w.type = type; - w.count = existing.length; - ProcessEmitWarning(w); - } - } - return target; - } - EventEmitter3.prototype.addListener = function addListener(type, listener) { - return _addListener(this, type, listener, false); - }; - EventEmitter3.prototype.on = EventEmitter3.prototype.addListener; - EventEmitter3.prototype.prependListener = function prependListener(type, listener) { - return _addListener(this, type, listener, true); - }; - function onceWrapper() { - if (!this.fired) { - this.target.removeListener(this.type, this.wrapFn); - this.fired = true; - if (arguments.length === 0) - return this.listener.call(this.target); - return this.listener.apply(this.target, arguments); - } - } - function _onceWrap(target, type, listener) { - var state = { fired: false, wrapFn: void 0, target, type, listener }; - var wrapped = onceWrapper.bind(state); - wrapped.listener = listener; - state.wrapFn = wrapped; - return wrapped; - } - EventEmitter3.prototype.once = function once2(type, listener) { - checkListener(listener); - this.on(type, _onceWrap(this, type, listener)); - return this; - }; - EventEmitter3.prototype.prependOnceListener = function prependOnceListener(type, listener) { - checkListener(listener); - this.prependListener(type, _onceWrap(this, type, listener)); - return this; - }; - EventEmitter3.prototype.removeListener = function removeListener(type, listener) { - var list, events2, position, i, originalListener; - checkListener(listener); - events2 = this._events; - if (events2 === void 0) - return this; - list = events2[type]; - if (list === void 0) - return this; - if (list === listener || list.listener === listener) { - if (--this._eventsCount === 0) - this._events = /* @__PURE__ */ Object.create(null); - else { - delete events2[type]; - if (events2.removeListener) - this.emit("removeListener", type, list.listener || listener); - } - } else if (typeof list !== "function") { - position = -1; - for (i = list.length - 1; i >= 0; i--) { - if (list[i] === listener || list[i].listener === listener) { - originalListener = list[i].listener; - position = i; - break; - } - } - if (position < 0) - return this; - if (position === 0) - list.shift(); - else { - spliceOne(list, position); - } - if (list.length === 1) - events2[type] = list[0]; - if (events2.removeListener !== void 0) - this.emit("removeListener", type, originalListener || listener); - } - return this; - }; - EventEmitter3.prototype.off = EventEmitter3.prototype.removeListener; - EventEmitter3.prototype.removeAllListeners = function removeAllListeners(type) { - var listeners, events2, i; - events2 = this._events; - if (events2 === void 0) - return this; - if (events2.removeListener === void 0) { - if (arguments.length === 0) { - this._events = /* @__PURE__ */ Object.create(null); - this._eventsCount = 0; - } else if (events2[type] !== void 0) { - if (--this._eventsCount === 0) - this._events = /* @__PURE__ */ Object.create(null); - else - delete events2[type]; - } - return this; - } - if (arguments.length === 0) { - var keys = Object.keys(events2); - var key; - for (i = 0; i < keys.length; ++i) { - key = keys[i]; - if (key === "removeListener") continue; - this.removeAllListeners(key); - } - this.removeAllListeners("removeListener"); - this._events = /* @__PURE__ */ Object.create(null); - this._eventsCount = 0; - return this; - } - listeners = events2[type]; - if (typeof listeners === "function") { - this.removeListener(type, listeners); - } else if (listeners !== void 0) { - for (i = listeners.length - 1; i >= 0; i--) { - this.removeListener(type, listeners[i]); - } - } - return this; - }; - function _listeners(target, type, unwrap) { - var events2 = target._events; - if (events2 === void 0) - return []; - var evlistener = events2[type]; - if (evlistener === void 0) - return []; - if (typeof evlistener === "function") - return unwrap ? [evlistener.listener || evlistener] : [evlistener]; - return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); - } - EventEmitter3.prototype.listeners = function listeners(type) { - return _listeners(this, type, true); - }; - EventEmitter3.prototype.rawListeners = function rawListeners(type) { - return _listeners(this, type, false); - }; - EventEmitter3.listenerCount = function(emitter, type) { - if (typeof emitter.listenerCount === "function") { - return emitter.listenerCount(type); - } else { - return listenerCount.call(emitter, type); - } - }; - EventEmitter3.prototype.listenerCount = listenerCount; - function listenerCount(type) { - var events2 = this._events; - if (events2 !== void 0) { - var evlistener = events2[type]; - if (typeof evlistener === "function") { - return 1; - } else if (evlistener !== void 0) { - return evlistener.length; - } - } - return 0; - } - EventEmitter3.prototype.eventNames = function eventNames() { - return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : []; - }; - function arrayClone(arr, n) { - var copy = new Array(n); - for (var i = 0; i < n; ++i) - copy[i] = arr[i]; - return copy; - } - function spliceOne(list, index) { - for (; index + 1 < list.length; index++) - list[index] = list[index + 1]; - list.pop(); - } - function unwrapListeners(arr) { - var ret = new Array(arr.length); - for (var i = 0; i < ret.length; ++i) { - ret[i] = arr[i].listener || arr[i]; - } - return ret; - } - function once(emitter, name) { - return new Promise(function(resolve, reject) { - function errorListener(err3) { - emitter.removeListener(name, resolver); - reject(err3); - } - function resolver() { - if (typeof emitter.removeListener === "function") { - emitter.removeListener("error", errorListener); - } - resolve([].slice.call(arguments)); - } - ; - eventTargetAgnosticAddListener(emitter, name, resolver, { once: true }); - if (name !== "error") { - addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true }); - } - }); - } - function addErrorHandlerIfEventEmitter(emitter, handler, flags) { - if (typeof emitter.on === "function") { - eventTargetAgnosticAddListener(emitter, "error", handler, flags); - } - } - function eventTargetAgnosticAddListener(emitter, name, listener, flags) { - if (typeof emitter.on === "function") { - if (flags.once) { - emitter.once(name, listener); - } else { - emitter.on(name, listener); - } - } else if (typeof emitter.addEventListener === "function") { - emitter.addEventListener(name, function wrapListener(arg) { - if (flags.once) { - emitter.removeEventListener(name, wrapListener); - } - listener(arg); - }); - } else { - throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof emitter); - } - } - } -}); - -// node_modules/.deno/sjcl@1.0.8/node_modules/sjcl/sjcl.js -var require_sjcl = __commonJS({ - "node_modules/.deno/sjcl@1.0.8/node_modules/sjcl/sjcl.js"(exports, module) { - "use strict"; - var sjcl2 = { cipher: {}, hash: {}, keyexchange: {}, mode: {}, misc: {}, codec: {}, exception: { corrupt: function(a) { - this.toString = function() { - return "CORRUPT: " + this.message; - }; - this.message = a; - }, invalid: function(a) { - this.toString = function() { - return "INVALID: " + this.message; - }; - this.message = a; - }, bug: function(a) { - this.toString = function() { - return "BUG: " + this.message; - }; - this.message = a; - }, notReady: function(a) { - this.toString = function() { - return "NOT READY: " + this.message; - }; - this.message = a; - } } }; - sjcl2.cipher.aes = function(a) { - this.s[0][0][0] || this.O(); - var b, c, d, e, f = this.s[0][4], g = this.s[1]; - b = a.length; - var h = 1; - if (4 !== b && 6 !== b && 8 !== b) throw new sjcl2.exception.invalid("invalid aes key size"); - this.b = [d = a.slice(0), e = []]; - for (a = b; a < 4 * b + 28; a++) { - c = d[a - 1]; - if (0 === a % b || 8 === b && 4 === a % b) c = f[c >>> 24] << 24 ^ f[c >> 16 & 255] << 16 ^ f[c >> 8 & 255] << 8 ^ f[c & 255], 0 === a % b && (c = c << 8 ^ c >>> 24 ^ h << 24, h = h << 1 ^ 283 * (h >> 7)); - d[a] = d[a - b] ^ c; - } - for (b = 0; a; b++, a--) c = d[b & 3 ? a : a - 4], e[b] = 4 >= a || 4 > b ? c : g[0][f[c >>> 24]] ^ g[1][f[c >> 16 & 255]] ^ g[2][f[c >> 8 & 255]] ^ g[3][f[c & 255]]; - }; - sjcl2.cipher.aes.prototype = { encrypt: function(a) { - return t(this, a, 0); - }, decrypt: function(a) { - return t(this, a, 1); - }, s: [[[], [], [], [], []], [[], [], [], [], []]], O: function() { - var a = this.s[0], b = this.s[1], c = a[4], d = b[4], e, f, g, h = [], k = [], l, n, m, p; - for (e = 0; 256 > e; e++) k[(h[e] = e << 1 ^ 283 * (e >> 7)) ^ e] = e; - for (f = g = 0; !c[f]; f ^= l || 1, g = k[g] || 1) for (m = g ^ g << 1 ^ g << 2 ^ g << 3 ^ g << 4, m = m >> 8 ^ m & 255 ^ 99, c[f] = m, d[m] = f, n = h[e = h[l = h[f]]], p = 16843009 * n ^ 65537 * e ^ 257 * l ^ 16843008 * f, n = 257 * h[m] ^ 16843008 * m, e = 0; 4 > e; e++) a[e][f] = n = n << 24 ^ n >>> 8, b[e][m] = p = p << 24 ^ p >>> 8; - for (e = 0; 5 > e; e++) a[e] = a[e].slice(0), b[e] = b[e].slice(0); - } }; - function t(a, b, c) { - if (4 !== b.length) throw new sjcl2.exception.invalid("invalid aes block size"); - var d = a.b[c], e = b[0] ^ d[0], f = b[c ? 3 : 1] ^ d[1], g = b[2] ^ d[2]; - b = b[c ? 1 : 3] ^ d[3]; - var h, k, l, n = d.length / 4 - 2, m, p = 4, r = [0, 0, 0, 0]; - h = a.s[c]; - a = h[0]; - var q = h[1], v = h[2], w = h[3], x = h[4]; - for (m = 0; m < n; m++) h = a[e >>> 24] ^ q[f >> 16 & 255] ^ v[g >> 8 & 255] ^ w[b & 255] ^ d[p], k = a[f >>> 24] ^ q[g >> 16 & 255] ^ v[b >> 8 & 255] ^ w[e & 255] ^ d[p + 1], l = a[g >>> 24] ^ q[b >> 16 & 255] ^ v[e >> 8 & 255] ^ w[f & 255] ^ d[p + 2], b = a[b >>> 24] ^ q[e >> 16 & 255] ^ v[f >> 8 & 255] ^ w[g & 255] ^ d[p + 3], p += 4, e = h, f = k, g = l; - for (m = 0; 4 > m; m++) r[c ? 3 & -m : m] = x[e >>> 24] << 24 ^ x[f >> 16 & 255] << 16 ^ x[g >> 8 & 255] << 8 ^ x[b & 255] ^ d[p++], h = e, e = f, f = g, g = b, b = h; - return r; - } - sjcl2.bitArray = { bitSlice: function(a, b, c) { - a = sjcl2.bitArray.$(a.slice(b / 32), 32 - (b & 31)).slice(1); - return void 0 === c ? a : sjcl2.bitArray.clamp(a, c - b); - }, extract: function(a, b, c) { - var d = Math.floor(-b - c & 31); - return ((b + c - 1 ^ b) & -32 ? a[b / 32 | 0] << 32 - d ^ a[b / 32 + 1 | 0] >>> d : a[b / 32 | 0] >>> d) & (1 << c) - 1; - }, concat: function(a, b) { - if (0 === a.length || 0 === b.length) return a.concat(b); - var c = a[a.length - 1], d = sjcl2.bitArray.getPartial(c); - return 32 === d ? a.concat(b) : sjcl2.bitArray.$(b, d, c | 0, a.slice(0, a.length - 1)); - }, bitLength: function(a) { - var b = a.length; - return 0 === b ? 0 : 32 * (b - 1) + sjcl2.bitArray.getPartial(a[b - 1]); - }, clamp: function(a, b) { - if (32 * a.length < b) return a; - a = a.slice(0, Math.ceil(b / 32)); - var c = a.length; - b = b & 31; - 0 < c && b && (a[c - 1] = sjcl2.bitArray.partial(b, a[c - 1] & 2147483648 >> b - 1, 1)); - return a; - }, partial: function(a, b, c) { - return 32 === a ? b : (c ? b | 0 : b << 32 - a) + 1099511627776 * a; - }, getPartial: function(a) { - return Math.round(a / 1099511627776) || 32; - }, equal: function(a, b) { - if (sjcl2.bitArray.bitLength(a) !== sjcl2.bitArray.bitLength(b)) return false; - var c = 0, d; - for (d = 0; d < a.length; d++) c |= a[d] ^ b[d]; - return 0 === c; - }, $: function(a, b, c, d) { - var e; - e = 0; - for (void 0 === d && (d = []); 32 <= b; b -= 32) d.push(c), c = 0; - if (0 === b) return d.concat(a); - for (e = 0; e < a.length; e++) d.push(c | a[e] >>> b), c = a[e] << 32 - b; - e = a.length ? a[a.length - 1] : 0; - a = sjcl2.bitArray.getPartial(e); - d.push(sjcl2.bitArray.partial(b + a & 31, 32 < b + a ? c : d.pop(), 1)); - return d; - }, i: function(a, b) { - return [a[0] ^ b[0], a[1] ^ b[1], a[2] ^ b[2], a[3] ^ b[3]]; - }, byteswapM: function(a) { - var b, c; - for (b = 0; b < a.length; ++b) c = a[b], a[b] = c >>> 24 | c >>> 8 & 65280 | (c & 65280) << 8 | c << 24; - return a; - } }; - sjcl2.codec.utf8String = { fromBits: function(a) { - var b = "", c = sjcl2.bitArray.bitLength(a), d, e; - for (d = 0; d < c / 8; d++) 0 === (d & 3) && (e = a[d / 4]), b += String.fromCharCode(e >>> 8 >>> 8 >>> 8), e <<= 8; - return decodeURIComponent(escape(b)); - }, toBits: function(a) { - a = unescape(encodeURIComponent(a)); - var b = [], c, d = 0; - for (c = 0; c < a.length; c++) d = d << 8 | a.charCodeAt(c), 3 === (c & 3) && (b.push(d), d = 0); - c & 3 && b.push(sjcl2.bitArray.partial(8 * (c & 3), d)); - return b; - } }; - sjcl2.codec.hex = { fromBits: function(a) { - var b = "", c; - for (c = 0; c < a.length; c++) b += ((a[c] | 0) + 263882790666240).toString(16).substr(4); - return b.substr(0, sjcl2.bitArray.bitLength(a) / 4); - }, toBits: function(a) { - var b, c = [], d; - a = a.replace(/\s|0x/g, ""); - d = a.length; - a = a + "00000000"; - for (b = 0; b < a.length; b += 8) c.push(parseInt(a.substr(b, 8), 16) ^ 0); - return sjcl2.bitArray.clamp(c, 4 * d); - } }; - sjcl2.codec.base32 = { B: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567", X: "0123456789ABCDEFGHIJKLMNOPQRSTUV", BITS: 32, BASE: 5, REMAINING: 27, fromBits: function(a, b, c) { - var d = sjcl2.codec.base32.BASE, e = sjcl2.codec.base32.REMAINING, f = "", g = 0, h = sjcl2.codec.base32.B, k = 0, l = sjcl2.bitArray.bitLength(a); - c && (h = sjcl2.codec.base32.X); - for (c = 0; f.length * d < l; ) f += h.charAt((k ^ a[c] >>> g) >>> e), g < d ? (k = a[c] << d - g, g += e, c++) : (k <<= d, g -= d); - for (; f.length & 7 && !b; ) f += "="; - return f; - }, toBits: function(a, b) { - a = a.replace(/\s|=/g, "").toUpperCase(); - var c = sjcl2.codec.base32.BITS, d = sjcl2.codec.base32.BASE, e = sjcl2.codec.base32.REMAINING, f = [], g, h = 0, k = sjcl2.codec.base32.B, l = 0, n, m = "base32"; - b && (k = sjcl2.codec.base32.X, m = "base32hex"); - for (g = 0; g < a.length; g++) { - n = k.indexOf(a.charAt(g)); - if (0 > n) { - if (!b) try { - return sjcl2.codec.base32hex.toBits(a); - } catch (p) { - } - throw new sjcl2.exception.invalid("this isn't " + m + "!"); - } - h > e ? (h -= e, f.push(l ^ n >>> h), l = n << c - h) : (h += d, l ^= n << c - h); - } - h & 56 && f.push(sjcl2.bitArray.partial(h & 56, l, 1)); - return f; - } }; - sjcl2.codec.base32hex = { fromBits: function(a, b) { - return sjcl2.codec.base32.fromBits(a, b, 1); - }, toBits: function(a) { - return sjcl2.codec.base32.toBits(a, 1); - } }; - sjcl2.codec.base64 = { B: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", fromBits: function(a, b, c) { - var d = "", e = 0, f = sjcl2.codec.base64.B, g = 0, h = sjcl2.bitArray.bitLength(a); - c && (f = f.substr(0, 62) + "-_"); - for (c = 0; 6 * d.length < h; ) d += f.charAt((g ^ a[c] >>> e) >>> 26), 6 > e ? (g = a[c] << 6 - e, e += 26, c++) : (g <<= 6, e -= 6); - for (; d.length & 3 && !b; ) d += "="; - return d; - }, toBits: function(a, b) { - a = a.replace(/\s|=/g, ""); - var c = [], d, e = 0, f = sjcl2.codec.base64.B, g = 0, h; - b && (f = f.substr(0, 62) + "-_"); - for (d = 0; d < a.length; d++) { - h = f.indexOf(a.charAt(d)); - if (0 > h) throw new sjcl2.exception.invalid("this isn't base64!"); - 26 < e ? (e -= 26, c.push(g ^ h >>> e), g = h << 32 - e) : (e += 6, g ^= h << 32 - e); - } - e & 56 && c.push(sjcl2.bitArray.partial(e & 56, g, 1)); - return c; - } }; - sjcl2.codec.base64url = { fromBits: function(a) { - return sjcl2.codec.base64.fromBits(a, 1, 1); - }, toBits: function(a) { - return sjcl2.codec.base64.toBits(a, 1); - } }; - sjcl2.hash.sha256 = function(a) { - this.b[0] || this.O(); - a ? (this.F = a.F.slice(0), this.A = a.A.slice(0), this.l = a.l) : this.reset(); - }; - sjcl2.hash.sha256.hash = function(a) { - return new sjcl2.hash.sha256().update(a).finalize(); - }; - sjcl2.hash.sha256.prototype = { blockSize: 512, reset: function() { - this.F = this.Y.slice(0); - this.A = []; - this.l = 0; - return this; - }, update: function(a) { - "string" === typeof a && (a = sjcl2.codec.utf8String.toBits(a)); - var b, c = this.A = sjcl2.bitArray.concat(this.A, a); - b = this.l; - a = this.l = b + sjcl2.bitArray.bitLength(a); - if (9007199254740991 < a) throw new sjcl2.exception.invalid("Cannot hash more than 2^53 - 1 bits"); - if ("undefined" !== typeof Uint32Array) { - var d = new Uint32Array(c), e = 0; - for (b = 512 + b - (512 + b & 511); b <= a; b += 512) u(this, d.subarray( - 16 * e, - 16 * (e + 1) - )), e += 1; - c.splice(0, 16 * e); - } else for (b = 512 + b - (512 + b & 511); b <= a; b += 512) u(this, c.splice(0, 16)); - return this; - }, finalize: function() { - var a, b = this.A, c = this.F, b = sjcl2.bitArray.concat(b, [sjcl2.bitArray.partial(1, 1)]); - for (a = b.length + 2; a & 15; a++) b.push(0); - b.push(Math.floor(this.l / 4294967296)); - for (b.push(this.l | 0); b.length; ) u(this, b.splice(0, 16)); - this.reset(); - return c; - }, Y: [], b: [], O: function() { - function a(a2) { - return 4294967296 * (a2 - Math.floor(a2)) | 0; - } - for (var b = 0, c = 2, d, e; 64 > b; c++) { - e = true; - for (d = 2; d * d <= c; d++) if (0 === c % d) { - e = false; - break; - } - e && (8 > b && (this.Y[b] = a(Math.pow(c, 0.5))), this.b[b] = a(Math.pow(c, 1 / 3)), b++); - } - } }; - function u(a, b) { - var c, d, e, f = a.F, g = a.b, h = f[0], k = f[1], l = f[2], n = f[3], m = f[4], p = f[5], r = f[6], q = f[7]; - for (c = 0; 64 > c; c++) 16 > c ? d = b[c] : (d = b[c + 1 & 15], e = b[c + 14 & 15], d = b[c & 15] = (d >>> 7 ^ d >>> 18 ^ d >>> 3 ^ d << 25 ^ d << 14) + (e >>> 17 ^ e >>> 19 ^ e >>> 10 ^ e << 15 ^ e << 13) + b[c & 15] + b[c + 9 & 15] | 0), d = d + q + (m >>> 6 ^ m >>> 11 ^ m >>> 25 ^ m << 26 ^ m << 21 ^ m << 7) + (r ^ m & (p ^ r)) + g[c], q = r, r = p, p = m, m = n + d | 0, n = l, l = k, k = h, h = d + (k & l ^ n & (k ^ l)) + (k >>> 2 ^ k >>> 13 ^ k >>> 22 ^ k << 30 ^ k << 19 ^ k << 10) | 0; - f[0] = f[0] + h | 0; - f[1] = f[1] + k | 0; - f[2] = f[2] + l | 0; - f[3] = f[3] + n | 0; - f[4] = f[4] + m | 0; - f[5] = f[5] + p | 0; - f[6] = f[6] + r | 0; - f[7] = f[7] + q | 0; - } - sjcl2.mode.ccm = { name: "ccm", G: [], listenProgress: function(a) { - sjcl2.mode.ccm.G.push(a); - }, unListenProgress: function(a) { - a = sjcl2.mode.ccm.G.indexOf(a); - -1 < a && sjcl2.mode.ccm.G.splice(a, 1); - }, fa: function(a) { - var b = sjcl2.mode.ccm.G.slice(), c; - for (c = 0; c < b.length; c += 1) b[c](a); - }, encrypt: function(a, b, c, d, e) { - var f, g = b.slice(0), h = sjcl2.bitArray, k = h.bitLength(c) / 8, l = h.bitLength(g) / 8; - e = e || 64; - d = d || []; - if (7 > k) throw new sjcl2.exception.invalid("ccm: iv must be at least 7 bytes"); - for (f = 2; 4 > f && l >>> 8 * f; f++) ; - f < 15 - k && (f = 15 - k); - c = h.clamp( - c, - 8 * (15 - f) - ); - b = sjcl2.mode.ccm.V(a, b, c, d, e, f); - g = sjcl2.mode.ccm.C(a, g, c, b, e, f); - return h.concat(g.data, g.tag); - }, decrypt: function(a, b, c, d, e) { - e = e || 64; - d = d || []; - var f = sjcl2.bitArray, g = f.bitLength(c) / 8, h = f.bitLength(b), k = f.clamp(b, h - e), l = f.bitSlice(b, h - e), h = (h - e) / 8; - if (7 > g) throw new sjcl2.exception.invalid("ccm: iv must be at least 7 bytes"); - for (b = 2; 4 > b && h >>> 8 * b; b++) ; - b < 15 - g && (b = 15 - g); - c = f.clamp(c, 8 * (15 - b)); - k = sjcl2.mode.ccm.C(a, k, c, l, e, b); - a = sjcl2.mode.ccm.V(a, k.data, c, d, e, b); - if (!f.equal(k.tag, a)) throw new sjcl2.exception.corrupt("ccm: tag doesn't match"); - return k.data; - }, na: function(a, b, c, d, e, f) { - var g = [], h = sjcl2.bitArray, k = h.i; - d = [h.partial(8, (b.length ? 64 : 0) | d - 2 << 2 | f - 1)]; - d = h.concat(d, c); - d[3] |= e; - d = a.encrypt(d); - if (b.length) for (c = h.bitLength(b) / 8, 65279 >= c ? g = [h.partial(16, c)] : 4294967295 >= c && (g = h.concat([h.partial(16, 65534)], [c])), g = h.concat(g, b), b = 0; b < g.length; b += 4) d = a.encrypt(k(d, g.slice(b, b + 4).concat([0, 0, 0]))); - return d; - }, V: function(a, b, c, d, e, f) { - var g = sjcl2.bitArray, h = g.i; - e /= 8; - if (e % 2 || 4 > e || 16 < e) throw new sjcl2.exception.invalid("ccm: invalid tag length"); - if (4294967295 < d.length || 4294967295 < b.length) throw new sjcl2.exception.bug("ccm: can't deal with 4GiB or more data"); - c = sjcl2.mode.ccm.na(a, d, c, e, g.bitLength(b) / 8, f); - for (d = 0; d < b.length; d += 4) c = a.encrypt(h(c, b.slice(d, d + 4).concat([0, 0, 0]))); - return g.clamp(c, 8 * e); - }, C: function(a, b, c, d, e, f) { - var g, h = sjcl2.bitArray; - g = h.i; - var k = b.length, l = h.bitLength(b), n = k / 50, m = n; - c = h.concat([h.partial(8, f - 1)], c).concat([0, 0, 0]).slice(0, 4); - d = h.bitSlice(g(d, a.encrypt(c)), 0, e); - if (!k) return { tag: d, data: [] }; - for (g = 0; g < k; g += 4) g > n && (sjcl2.mode.ccm.fa(g / k), n += m), c[3]++, e = a.encrypt(c), b[g] ^= e[0], b[g + 1] ^= e[1], b[g + 2] ^= e[2], b[g + 3] ^= e[3]; - return { tag: d, data: h.clamp(b, l) }; - } }; - sjcl2.mode.ocb2 = { name: "ocb2", encrypt: function(a, b, c, d, e, f) { - if (128 !== sjcl2.bitArray.bitLength(c)) throw new sjcl2.exception.invalid("ocb iv must be 128 bits"); - var g, h = sjcl2.mode.ocb2.S, k = sjcl2.bitArray, l = k.i, n = [0, 0, 0, 0]; - c = h(a.encrypt(c)); - var m, p = []; - d = d || []; - e = e || 64; - for (g = 0; g + 4 < b.length; g += 4) m = b.slice(g, g + 4), n = l(n, m), p = p.concat(l(c, a.encrypt(l(c, m)))), c = h(c); - m = b.slice(g); - b = k.bitLength(m); - g = a.encrypt(l(c, [0, 0, 0, b])); - m = k.clamp(l(m.concat([0, 0, 0]), g), b); - n = l(n, l(m.concat([0, 0, 0]), g)); - n = a.encrypt(l(n, l(c, h(c)))); - d.length && (n = l(n, f ? d : sjcl2.mode.ocb2.pmac(a, d))); - return p.concat(k.concat(m, k.clamp(n, e))); - }, decrypt: function(a, b, c, d, e, f) { - if (128 !== sjcl2.bitArray.bitLength(c)) throw new sjcl2.exception.invalid("ocb iv must be 128 bits"); - e = e || 64; - var g = sjcl2.mode.ocb2.S, h = sjcl2.bitArray, k = h.i, l = [0, 0, 0, 0], n = g(a.encrypt(c)), m, p, r = sjcl2.bitArray.bitLength(b) - e, q = []; - d = d || []; - for (c = 0; c + 4 < r / 32; c += 4) m = k(n, a.decrypt(k(n, b.slice(c, c + 4)))), l = k(l, m), q = q.concat(m), n = g(n); - p = r - 32 * c; - m = a.encrypt(k(n, [0, 0, 0, p])); - m = k(m, h.clamp(b.slice(c), p).concat([ - 0, - 0, - 0 - ])); - l = k(l, m); - l = a.encrypt(k(l, k(n, g(n)))); - d.length && (l = k(l, f ? d : sjcl2.mode.ocb2.pmac(a, d))); - if (!h.equal(h.clamp(l, e), h.bitSlice(b, r))) throw new sjcl2.exception.corrupt("ocb: tag doesn't match"); - return q.concat(h.clamp(m, p)); - }, pmac: function(a, b) { - var c, d = sjcl2.mode.ocb2.S, e = sjcl2.bitArray, f = e.i, g = [0, 0, 0, 0], h = a.encrypt([0, 0, 0, 0]), h = f(h, d(d(h))); - for (c = 0; c + 4 < b.length; c += 4) h = d(h), g = f(g, a.encrypt(f(h, b.slice(c, c + 4)))); - c = b.slice(c); - 128 > e.bitLength(c) && (h = f(h, d(h)), c = e.concat(c, [-2147483648, 0, 0, 0])); - g = f(g, c); - return a.encrypt(f(d(f(h, d(h))), g)); - }, S: function(a) { - return [a[0] << 1 ^ a[1] >>> 31, a[1] << 1 ^ a[2] >>> 31, a[2] << 1 ^ a[3] >>> 31, a[3] << 1 ^ 135 * (a[0] >>> 31)]; - } }; - sjcl2.mode.gcm = { name: "gcm", encrypt: function(a, b, c, d, e) { - var f = b.slice(0); - b = sjcl2.bitArray; - d = d || []; - a = sjcl2.mode.gcm.C(true, a, f, d, c, e || 128); - return b.concat(a.data, a.tag); - }, decrypt: function(a, b, c, d, e) { - var f = b.slice(0), g = sjcl2.bitArray, h = g.bitLength(f); - e = e || 128; - d = d || []; - e <= h ? (b = g.bitSlice(f, h - e), f = g.bitSlice(f, 0, h - e)) : (b = f, f = []); - a = sjcl2.mode.gcm.C(false, a, f, d, c, e); - if (!g.equal(a.tag, b)) throw new sjcl2.exception.corrupt("gcm: tag doesn't match"); - return a.data; - }, ka: function(a, b) { - var c, d, e, f, g, h = sjcl2.bitArray.i; - e = [ - 0, - 0, - 0, - 0 - ]; - f = b.slice(0); - for (c = 0; 128 > c; c++) { - (d = 0 !== (a[Math.floor(c / 32)] & 1 << 31 - c % 32)) && (e = h(e, f)); - g = 0 !== (f[3] & 1); - for (d = 3; 0 < d; d--) f[d] = f[d] >>> 1 | (f[d - 1] & 1) << 31; - f[0] >>>= 1; - g && (f[0] ^= -520093696); - } - return e; - }, j: function(a, b, c) { - var d, e = c.length; - b = b.slice(0); - for (d = 0; d < e; d += 4) b[0] ^= 4294967295 & c[d], b[1] ^= 4294967295 & c[d + 1], b[2] ^= 4294967295 & c[d + 2], b[3] ^= 4294967295 & c[d + 3], b = sjcl2.mode.gcm.ka(b, a); - return b; - }, C: function(a, b, c, d, e, f) { - var g, h, k, l, n, m, p, r, q = sjcl2.bitArray; - m = c.length; - p = q.bitLength(c); - r = q.bitLength(d); - h = q.bitLength(e); - g = b.encrypt([0, 0, 0, 0]); - 96 === h ? (e = e.slice(0), e = q.concat(e, [1])) : (e = sjcl2.mode.gcm.j(g, [0, 0, 0, 0], e), e = sjcl2.mode.gcm.j(g, e, [0, 0, Math.floor(h / 4294967296), h & 4294967295])); - h = sjcl2.mode.gcm.j(g, [0, 0, 0, 0], d); - n = e.slice(0); - d = h.slice(0); - a || (d = sjcl2.mode.gcm.j(g, h, c)); - for (l = 0; l < m; l += 4) n[3]++, k = b.encrypt(n), c[l] ^= k[0], c[l + 1] ^= k[1], c[l + 2] ^= k[2], c[l + 3] ^= k[3]; - c = q.clamp(c, p); - a && (d = sjcl2.mode.gcm.j(g, h, c)); - a = [Math.floor(r / 4294967296), r & 4294967295, Math.floor(p / 4294967296), p & 4294967295]; - d = sjcl2.mode.gcm.j(g, d, a); - k = b.encrypt(e); - d[0] ^= k[0]; - d[1] ^= k[1]; - d[2] ^= k[2]; - d[3] ^= k[3]; - return { tag: q.bitSlice(d, 0, f), data: c }; - } }; - sjcl2.misc.hmac = function(a, b) { - this.W = b = b || sjcl2.hash.sha256; - var c = [[], []], d, e = b.prototype.blockSize / 32; - this.w = [new b(), new b()]; - a.length > e && (a = b.hash(a)); - for (d = 0; d < e; d++) c[0][d] = a[d] ^ 909522486, c[1][d] = a[d] ^ 1549556828; - this.w[0].update(c[0]); - this.w[1].update(c[1]); - this.R = new b(this.w[0]); - }; - sjcl2.misc.hmac.prototype.encrypt = sjcl2.misc.hmac.prototype.mac = function(a) { - if (this.aa) throw new sjcl2.exception.invalid("encrypt on already updated hmac called!"); - this.update(a); - return this.digest(a); - }; - sjcl2.misc.hmac.prototype.reset = function() { - this.R = new this.W(this.w[0]); - this.aa = false; - }; - sjcl2.misc.hmac.prototype.update = function(a) { - this.aa = true; - this.R.update(a); - }; - sjcl2.misc.hmac.prototype.digest = function() { - var a = this.R.finalize(), a = new this.W(this.w[1]).update(a).finalize(); - this.reset(); - return a; - }; - sjcl2.misc.pbkdf2 = function(a, b, c, d, e) { - c = c || 1e4; - if (0 > d || 0 > c) throw new sjcl2.exception.invalid("invalid params to pbkdf2"); - "string" === typeof a && (a = sjcl2.codec.utf8String.toBits(a)); - "string" === typeof b && (b = sjcl2.codec.utf8String.toBits(b)); - e = e || sjcl2.misc.hmac; - a = new e(a); - var f, g, h, k, l = [], n = sjcl2.bitArray; - for (k = 1; 32 * l.length < (d || 1); k++) { - e = f = a.encrypt(n.concat(b, [k])); - for (g = 1; g < c; g++) for (f = a.encrypt(f), h = 0; h < f.length; h++) e[h] ^= f[h]; - l = l.concat(e); - } - d && (l = n.clamp(l, d)); - return l; - }; - sjcl2.prng = function(a) { - this.c = [new sjcl2.hash.sha256()]; - this.m = [0]; - this.P = 0; - this.H = {}; - this.N = 0; - this.U = {}; - this.Z = this.f = this.o = this.ha = 0; - this.b = [0, 0, 0, 0, 0, 0, 0, 0]; - this.h = [0, 0, 0, 0]; - this.L = void 0; - this.M = a; - this.D = false; - this.K = { progress: {}, seeded: {} }; - this.u = this.ga = 0; - this.I = 1; - this.J = 2; - this.ca = 65536; - this.T = [0, 48, 64, 96, 128, 192, 256, 384, 512, 768, 1024]; - this.da = 3e4; - this.ba = 80; - }; - sjcl2.prng.prototype = { - randomWords: function(a, b) { - var c = [], d; - d = this.isReady(b); - var e; - if (d === this.u) throw new sjcl2.exception.notReady("generator isn't seeded"); - if (d & this.J) { - d = !(d & this.I); - e = []; - var f = 0, g; - this.Z = e[0] = (/* @__PURE__ */ new Date()).valueOf() + this.da; - for (g = 0; 16 > g; g++) e.push(4294967296 * Math.random() | 0); - for (g = 0; g < this.c.length && (e = e.concat(this.c[g].finalize()), f += this.m[g], this.m[g] = 0, d || !(this.P & 1 << g)); g++) ; - this.P >= 1 << this.c.length && (this.c.push(new sjcl2.hash.sha256()), this.m.push(0)); - this.f -= f; - f > this.o && (this.o = f); - this.P++; - this.b = sjcl2.hash.sha256.hash(this.b.concat(e)); - this.L = new sjcl2.cipher.aes(this.b); - for (d = 0; 4 > d && (this.h[d] = this.h[d] + 1 | 0, !this.h[d]); d++) ; - } - for (d = 0; d < a; d += 4) 0 === (d + 1) % this.ca && y(this), e = z(this), c.push(e[0], e[1], e[2], e[3]); - y(this); - return c.slice(0, a); - }, - setDefaultParanoia: function(a, b) { - if (0 === a && "Setting paranoia=0 will ruin your security; use it only for testing" !== b) throw new sjcl2.exception.invalid("Setting paranoia=0 will ruin your security; use it only for testing"); - this.M = a; - }, - addEntropy: function(a, b, c) { - c = c || "user"; - var d, e, f = (/* @__PURE__ */ new Date()).valueOf(), g = this.H[c], h = this.isReady(), k = 0; - d = this.U[c]; - void 0 === d && (d = this.U[c] = this.ha++); - void 0 === g && (g = this.H[c] = 0); - this.H[c] = (this.H[c] + 1) % this.c.length; - switch (typeof a) { - case "number": - void 0 === b && (b = 1); - this.c[g].update([d, this.N++, 1, b, f, 1, a | 0]); - break; - case "object": - c = Object.prototype.toString.call(a); - if ("[object Uint32Array]" === c) { - e = []; - for (c = 0; c < a.length; c++) e.push(a[c]); - a = e; - } else for ("[object Array]" !== c && (k = 1), c = 0; c < a.length && !k; c++) "number" !== typeof a[c] && (k = 1); - if (!k) { - if (void 0 === b) for (c = b = 0; c < a.length; c++) for (e = a[c]; 0 < e; ) b++, e = e >>> 1; - this.c[g].update([d, this.N++, 2, b, f, a.length].concat(a)); - } - break; - case "string": - void 0 === b && (b = a.length); - this.c[g].update([d, this.N++, 3, b, f, a.length]); - this.c[g].update(a); - break; - default: - k = 1; - } - if (k) throw new sjcl2.exception.bug("random: addEntropy only supports number, array of numbers or string"); - this.m[g] += b; - this.f += b; - h === this.u && (this.isReady() !== this.u && A("seeded", Math.max(this.o, this.f)), A("progress", this.getProgress())); - }, - isReady: function(a) { - a = this.T[void 0 !== a ? a : this.M]; - return this.o && this.o >= a ? this.m[0] > this.ba && (/* @__PURE__ */ new Date()).valueOf() > this.Z ? this.J | this.I : this.I : this.f >= a ? this.J | this.u : this.u; - }, - getProgress: function(a) { - a = this.T[a ? a : this.M]; - return this.o >= a ? 1 : this.f > a ? 1 : this.f / a; - }, - startCollectors: function() { - if (!this.D) { - this.a = { loadTimeCollector: B(this, this.ma), mouseCollector: B(this, this.oa), keyboardCollector: B(this, this.la), accelerometerCollector: B(this, this.ea), touchCollector: B(this, this.qa) }; - if (window.addEventListener) window.addEventListener( - "load", - this.a.loadTimeCollector, - false - ), window.addEventListener("mousemove", this.a.mouseCollector, false), window.addEventListener("keypress", this.a.keyboardCollector, false), window.addEventListener("devicemotion", this.a.accelerometerCollector, false), window.addEventListener("touchmove", this.a.touchCollector, false); - else if (document.attachEvent) document.attachEvent("onload", this.a.loadTimeCollector), document.attachEvent("onmousemove", this.a.mouseCollector), document.attachEvent("keypress", this.a.keyboardCollector); - else throw new sjcl2.exception.bug("can't attach event"); - this.D = true; - } - }, - stopCollectors: function() { - this.D && (window.removeEventListener ? (window.removeEventListener("load", this.a.loadTimeCollector, false), window.removeEventListener("mousemove", this.a.mouseCollector, false), window.removeEventListener("keypress", this.a.keyboardCollector, false), window.removeEventListener("devicemotion", this.a.accelerometerCollector, false), window.removeEventListener("touchmove", this.a.touchCollector, false)) : document.detachEvent && (document.detachEvent("onload", this.a.loadTimeCollector), document.detachEvent( - "onmousemove", - this.a.mouseCollector - ), document.detachEvent("keypress", this.a.keyboardCollector)), this.D = false); - }, - addEventListener: function(a, b) { - this.K[a][this.ga++] = b; - }, - removeEventListener: function(a, b) { - var c, d, e = this.K[a], f = []; - for (d in e) e.hasOwnProperty(d) && e[d] === b && f.push(d); - for (c = 0; c < f.length; c++) d = f[c], delete e[d]; - }, - la: function() { - C(this, 1); - }, - oa: function(a) { - var b, c; - try { - b = a.x || a.clientX || a.offsetX || 0, c = a.y || a.clientY || a.offsetY || 0; - } catch (d) { - c = b = 0; - } - 0 != b && 0 != c && this.addEntropy([b, c], 2, "mouse"); - C(this, 0); - }, - qa: function(a) { - a = a.touches[0] || a.changedTouches[0]; - this.addEntropy([a.pageX || a.clientX, a.pageY || a.clientY], 1, "touch"); - C(this, 0); - }, - ma: function() { - C(this, 2); - }, - ea: function(a) { - a = a.accelerationIncludingGravity.x || a.accelerationIncludingGravity.y || a.accelerationIncludingGravity.z; - if (window.orientation) { - var b = window.orientation; - "number" === typeof b && this.addEntropy(b, 1, "accelerometer"); - } - a && this.addEntropy(a, 2, "accelerometer"); - C(this, 0); - } - }; - function A(a, b) { - var c, d = sjcl2.random.K[a], e = []; - for (c in d) d.hasOwnProperty(c) && e.push(d[c]); - for (c = 0; c < e.length; c++) e[c](b); - } - function C(a, b) { - "undefined" !== typeof window && window.performance && "function" === typeof window.performance.now ? a.addEntropy(window.performance.now(), b, "loadtime") : a.addEntropy((/* @__PURE__ */ new Date()).valueOf(), b, "loadtime"); - } - function y(a) { - a.b = z(a).concat(z(a)); - a.L = new sjcl2.cipher.aes(a.b); - } - function z(a) { - for (var b = 0; 4 > b && (a.h[b] = a.h[b] + 1 | 0, !a.h[b]); b++) ; - return a.L.encrypt(a.h); - } - function B(a, b) { - return function() { - b.apply(a, arguments); - }; - } - sjcl2.random = new sjcl2.prng(6); - a: try { - if (G = "undefined" !== typeof module && module.exports) { - try { - H = __require("crypto"); - } catch (a) { - H = null; - } - G = E = H; - } - if (G && E.randomBytes) D = E.randomBytes(128), D = new Uint32Array(new Uint8Array(D).buffer), sjcl2.random.addEntropy(D, 1024, "crypto['randomBytes']"); - else if ("undefined" !== typeof window && "undefined" !== typeof Uint32Array) { - F = new Uint32Array(32); - if (window.crypto && window.crypto.getRandomValues) window.crypto.getRandomValues(F); - else if (window.msCrypto && window.msCrypto.getRandomValues) window.msCrypto.getRandomValues(F); - else break a; - sjcl2.random.addEntropy(F, 1024, "crypto['getRandomValues']"); - } - } catch (a) { - "undefined" !== typeof window && window.console && (console.log("There was an error collecting entropy from the browser:"), console.log(a)); - } - var D; - var E; - var F; - var G; - var H; - sjcl2.json = { defaults: { v: 1, iter: 1e4, ks: 128, ts: 64, mode: "ccm", adata: "", cipher: "aes" }, ja: function(a, b, c, d) { - c = c || {}; - d = d || {}; - var e = sjcl2.json, f = e.g({ iv: sjcl2.random.randomWords(4, 0) }, e.defaults), g; - e.g(f, c); - c = f.adata; - "string" === typeof f.salt && (f.salt = sjcl2.codec.base64.toBits(f.salt)); - "string" === typeof f.iv && (f.iv = sjcl2.codec.base64.toBits(f.iv)); - if (!sjcl2.mode[f.mode] || !sjcl2.cipher[f.cipher] || "string" === typeof a && 100 >= f.iter || 64 !== f.ts && 96 !== f.ts && 128 !== f.ts || 128 !== f.ks && 192 !== f.ks && 256 !== f.ks || 2 > f.iv.length || 4 < f.iv.length) throw new sjcl2.exception.invalid("json encrypt: invalid parameters"); - "string" === typeof a ? (g = sjcl2.misc.cachedPbkdf2(a, f), a = g.key.slice(0, f.ks / 32), f.salt = g.salt) : sjcl2.ecc && a instanceof sjcl2.ecc.elGamal.publicKey && (g = a.kem(), f.kemtag = g.tag, a = g.key.slice(0, f.ks / 32)); - "string" === typeof b && (b = sjcl2.codec.utf8String.toBits(b)); - "string" === typeof c && (f.adata = c = sjcl2.codec.utf8String.toBits(c)); - g = new sjcl2.cipher[f.cipher](a); - e.g(d, f); - d.key = a; - f.ct = "ccm" === f.mode && sjcl2.arrayBuffer && sjcl2.arrayBuffer.ccm && b instanceof ArrayBuffer ? sjcl2.arrayBuffer.ccm.encrypt(g, b, f.iv, c, f.ts) : sjcl2.mode[f.mode].encrypt(g, b, f.iv, c, f.ts); - return f; - }, encrypt: function(a, b, c, d) { - var e = sjcl2.json, f = e.ja.apply(e, arguments); - return e.encode(f); - }, ia: function(a, b, c, d) { - c = c || {}; - d = d || {}; - var e = sjcl2.json; - b = e.g(e.g(e.g({}, e.defaults), b), c, true); - var f, g; - f = b.adata; - "string" === typeof b.salt && (b.salt = sjcl2.codec.base64.toBits(b.salt)); - "string" === typeof b.iv && (b.iv = sjcl2.codec.base64.toBits(b.iv)); - if (!sjcl2.mode[b.mode] || !sjcl2.cipher[b.cipher] || "string" === typeof a && 100 >= b.iter || 64 !== b.ts && 96 !== b.ts && 128 !== b.ts || 128 !== b.ks && 192 !== b.ks && 256 !== b.ks || !b.iv || 2 > b.iv.length || 4 < b.iv.length) throw new sjcl2.exception.invalid("json decrypt: invalid parameters"); - "string" === typeof a ? (g = sjcl2.misc.cachedPbkdf2(a, b), a = g.key.slice(0, b.ks / 32), b.salt = g.salt) : sjcl2.ecc && a instanceof sjcl2.ecc.elGamal.secretKey && (a = a.unkem(sjcl2.codec.base64.toBits(b.kemtag)).slice(0, b.ks / 32)); - "string" === typeof f && (f = sjcl2.codec.utf8String.toBits(f)); - g = new sjcl2.cipher[b.cipher](a); - f = "ccm" === b.mode && sjcl2.arrayBuffer && sjcl2.arrayBuffer.ccm && b.ct instanceof ArrayBuffer ? sjcl2.arrayBuffer.ccm.decrypt(g, b.ct, b.iv, b.tag, f, b.ts) : sjcl2.mode[b.mode].decrypt(g, b.ct, b.iv, f, b.ts); - e.g(d, b); - d.key = a; - return 1 === c.raw ? f : sjcl2.codec.utf8String.fromBits(f); - }, decrypt: function(a, b, c, d) { - var e = sjcl2.json; - return e.ia(a, e.decode(b), c, d); - }, encode: function(a) { - var b, c = "{", d = ""; - for (b in a) if (a.hasOwnProperty(b)) { - if (!b.match(/^[a-z0-9]+$/i)) throw new sjcl2.exception.invalid("json encode: invalid property name"); - c += d + '"' + b + '":'; - d = ","; - switch (typeof a[b]) { - case "number": - case "boolean": - c += a[b]; - break; - case "string": - c += '"' + escape(a[b]) + '"'; - break; - case "object": - c += '"' + sjcl2.codec.base64.fromBits(a[b], 0) + '"'; - break; - default: - throw new sjcl2.exception.bug("json encode: unsupported type"); - } - } - return c + "}"; - }, decode: function(a) { - a = a.replace(/\s/g, ""); - if (!a.match(/^\{.*\}$/)) throw new sjcl2.exception.invalid("json decode: this isn't json!"); - a = a.replace(/^\{|\}$/g, "").split(/,/); - var b = {}, c, d; - for (c = 0; c < a.length; c++) { - if (!(d = a[c].match(/^\s*(?:(["']?)([a-z][a-z0-9]*)\1)\s*:\s*(?:(-?\d+)|"([a-z0-9+\/%*_.@=\-]*)"|(true|false))$/i))) throw new sjcl2.exception.invalid("json decode: this isn't json!"); - null != d[3] ? b[d[2]] = parseInt(d[3], 10) : null != d[4] ? b[d[2]] = d[2].match(/^(ct|adata|salt|iv)$/) ? sjcl2.codec.base64.toBits(d[4]) : unescape(d[4]) : null != d[5] && (b[d[2]] = "true" === d[5]); - } - return b; - }, g: function(a, b, c) { - void 0 === a && (a = {}); - if (void 0 === b) return a; - for (var d in b) if (b.hasOwnProperty(d)) { - if (c && void 0 !== a[d] && a[d] !== b[d]) throw new sjcl2.exception.invalid("required parameter overridden"); - a[d] = b[d]; - } - return a; - }, sa: function(a, b) { - var c = {}, d; - for (d in a) a.hasOwnProperty(d) && a[d] !== b[d] && (c[d] = a[d]); - return c; - }, ra: function(a, b) { - var c = {}, d; - for (d = 0; d < b.length; d++) void 0 !== a[b[d]] && (c[b[d]] = a[b[d]]); - return c; - } }; - sjcl2.encrypt = sjcl2.json.encrypt; - sjcl2.decrypt = sjcl2.json.decrypt; - sjcl2.misc.pa = {}; - sjcl2.misc.cachedPbkdf2 = function(a, b) { - var c = sjcl2.misc.pa, d; - b = b || {}; - d = b.iter || 1e3; - c = c[a] = c[a] || {}; - d = c[d] = c[d] || { firstSalt: b.salt && b.salt.length ? b.salt.slice(0) : sjcl2.random.randomWords(2, 0) }; - c = void 0 === b.salt ? d.firstSalt : b.salt; - d[c] = d[c] || sjcl2.misc.pbkdf2(a, c, b.iter); - return { key: d[c].slice(0), salt: c.slice(0) }; - }; - "undefined" !== typeof module && module.exports && (module.exports = sjcl2); - "function" === typeof define && define([], function() { - return sjcl2; - }); - } -}); - -// src/api/lufi.ts -var lufi_exports = {}; -__export(lufi_exports, { - addFilesToArchive: () => addFilesToArchive, - cancel: () => cancel, - compress: () => compress, - decompress: () => decompress, - download: () => download, - events: () => events, - getFileIndexInQueue: () => getFileIndexInQueue, - infos: () => infos, - pause: () => pause, - remove: () => remove, - resume: () => resume, - upload: () => upload -}); -var import_events2 = __toESM(require_events()); - -// node_modules/.deno/neverthrow@8.0.0/node_modules/neverthrow/dist/index.es.js -var defaultErrorConfig = { - withStackTrace: false -}; -var createNeverThrowError = (message, result, config = defaultErrorConfig) => { - const data = result.isOk() ? { type: "Ok", value: result.value } : { type: "Err", value: result.error }; - const maybeStack = config.withStackTrace ? new Error().stack : void 0; - return { - data, - message, - stack: maybeStack - }; -}; -function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function(resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, [])).next()); - }); -} -function __values(o) { - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; - if (m) return m.call(o); - if (o && typeof o.length === "number") return { - next: function() { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); -} -function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); -} -function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { - return this; - }, i; - function verb(n) { - if (g[n]) i[n] = function(v) { - return new Promise(function(a, b) { - q.push([n, v, a, b]) > 1 || resume2(n, v); - }); - }; - } - function resume2(n, v) { - try { - step(g[n](v)); - } catch (e) { - settle(q[0][3], e); - } - } - function step(r) { - r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); - } - function fulfill(value) { - resume2("next", value); - } - function reject(value) { - resume2("throw", value); - } - function settle(f, v) { - if (f(v), q.shift(), q.length) resume2(q[0][0], q[0][1]); - } -} -function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function(e) { - throw e; - }), verb("return"), i[Symbol.iterator] = function() { - return this; - }, i; - function verb(n, f) { - i[n] = o[n] ? function(v) { - return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; - } : f; - } -} -function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { - return this; - }, i); - function verb(n) { - i[n] = o[n] && function(v) { - return new Promise(function(resolve, reject) { - v = o[n](v), settle(resolve, reject, v.done, v.value); - }); - }; - } - function settle(resolve, reject, d, v) { - Promise.resolve(v).then(function(v2) { - resolve({ value: v2, done: d }); - }, reject); - } -} -var ResultAsync = class _ResultAsync { - constructor(res) { - this._promise = res; - } - static fromSafePromise(promise) { - const newPromise = promise.then((value) => new Ok(value)); - return new _ResultAsync(newPromise); - } - static fromPromise(promise, errorFn) { - const newPromise = promise.then((value) => new Ok(value)).catch((e) => new Err(errorFn(e))); - return new _ResultAsync(newPromise); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any - static fromThrowable(fn, errorFn) { - return (...args) => { - return new _ResultAsync((() => __awaiter(this, void 0, void 0, function* () { - try { - return new Ok(yield fn(...args)); - } catch (error) { - return new Err(errorFn ? errorFn(error) : error); - } - }))()); - }; - } - static combine(asyncResultList) { - return combineResultAsyncList(asyncResultList); - } - static combineWithAllErrors(asyncResultList) { - return combineResultAsyncListWithAllErrors(asyncResultList); - } - map(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return new Err(res.error); - } - return new Ok(yield f(res.value)); - }))); - } - andThrough(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return new Err(res.error); - } - const newRes = yield f(res.value); - if (newRes.isErr()) { - return new Err(newRes.error); - } - return new Ok(res.value); - }))); - } - andTee(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return new Err(res.error); - } - try { - yield f(res.value); - } catch (e) { - } - return new Ok(res.value); - }))); - } - mapErr(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isOk()) { - return new Ok(res.value); - } - return new Err(yield f(res.error)); - }))); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThen(f) { - return new _ResultAsync(this._promise.then((res) => { - if (res.isErr()) { - return new Err(res.error); - } - const newValue = f(res.value); - return newValue instanceof _ResultAsync ? newValue._promise : newValue; - })); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - orElse(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return f(res.error); - } - return new Ok(res.value); - }))); - } - match(ok2, _err) { - return this._promise.then((res) => res.match(ok2, _err)); - } - unwrapOr(t) { - return this._promise.then((res) => res.unwrapOr(t)); - } - /** - * Emulates Rust's `?` operator in `safeTry`'s body. See also `safeTry`. - */ - safeUnwrap() { - return __asyncGenerator(this, arguments, function* safeUnwrap_1() { - return yield __await(yield __await(yield* __asyncDelegator(__asyncValues(yield __await(this._promise.then((res) => res.safeUnwrap())))))); - }); - } - // Makes ResultAsync implement PromiseLike - then(successCallback, failureCallback) { - return this._promise.then(successCallback, failureCallback); - } -}; -var okAsync = (value) => new ResultAsync(Promise.resolve(new Ok(value))); -var errAsync = (err3) => new ResultAsync(Promise.resolve(new Err(err3))); -var fromPromise = ResultAsync.fromPromise; -var fromSafePromise = ResultAsync.fromSafePromise; -var fromAsyncThrowable = ResultAsync.fromThrowable; -var combineResultList = (resultList) => { - let acc = ok([]); - for (const result of resultList) { - if (result.isErr()) { - acc = err(result.error); - break; - } else { - acc.map((list) => list.push(result.value)); - } - } - return acc; -}; -var combineResultAsyncList = (asyncResultList) => ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultList); -var combineResultListWithAllErrors = (resultList) => { - let acc = ok([]); - for (const result of resultList) { - if (result.isErr() && acc.isErr()) { - acc.error.push(result.error); - } else if (result.isErr() && acc.isOk()) { - acc = err([result.error]); - } else if (result.isOk() && acc.isOk()) { - acc.value.push(result.value); - } - } - return acc; -}; -var combineResultAsyncListWithAllErrors = (asyncResultList) => ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultListWithAllErrors); -var Result; -(function(Result3) { - function fromThrowable2(fn, errorFn) { - return (...args) => { - try { - const result = fn(...args); - return ok(result); - } catch (e) { - return err(errorFn ? errorFn(e) : e); - } - }; - } - Result3.fromThrowable = fromThrowable2; - function combine(resultList) { - return combineResultList(resultList); - } - Result3.combine = combine; - function combineWithAllErrors(resultList) { - return combineResultListWithAllErrors(resultList); - } - Result3.combineWithAllErrors = combineWithAllErrors; -})(Result || (Result = {})); -var ok = (value) => new Ok(value); -function err(err3) { - return new Err(err3); -} -var Ok = class { - constructor(value) { - this.value = value; - } - isOk() { - return true; - } - isErr() { - return !this.isOk(); - } - map(f) { - return ok(f(this.value)); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - mapErr(_f) { - return ok(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThen(f) { - return f(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThrough(f) { - return f(this.value).map((_value) => this.value); - } - andTee(f) { - try { - f(this.value); - } catch (e) { - } - return ok(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - orElse(_f) { - return ok(this.value); - } - asyncAndThen(f) { - return f(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - asyncAndThrough(f) { - return f(this.value).map(() => this.value); - } - asyncMap(f) { - return ResultAsync.fromSafePromise(f(this.value)); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - unwrapOr(_v) { - return this.value; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - match(ok2, _err) { - return ok2(this.value); - } - safeUnwrap() { - const value = this.value; - return function* () { - return value; - }(); - } - _unsafeUnwrap(_) { - return this.value; - } - _unsafeUnwrapErr(config) { - throw createNeverThrowError("Called `_unsafeUnwrapErr` on an Ok", this, config); - } -}; -var Err = class { - constructor(error) { - this.error = error; - } - isOk() { - return false; - } - isErr() { - return !this.isOk(); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - map(_f) { - return err(this.error); - } - mapErr(f) { - return err(f(this.error)); - } - andThrough(_f) { - return err(this.error); - } - andTee(_f) { - return err(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThen(_f) { - return err(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - orElse(f) { - return f(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - asyncAndThen(_f) { - return errAsync(this.error); - } - asyncAndThrough(_f) { - return errAsync(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - asyncMap(_f) { - return errAsync(this.error); - } - unwrapOr(v) { - return v; - } - match(_ok, err3) { - return err3(this.error); - } - safeUnwrap() { - const error = this.error; - return function* () { - yield err(error); - throw new Error("Do not use this generator out of `safeTry`"); - }(); - } - _unsafeUnwrap(config) { - throw createNeverThrowError("Called `_unsafeUnwrap` on an Err", this, config); - } - _unsafeUnwrapErr(_) { - return this.error; - } -}; -var fromThrowable = Result.fromThrowable; - -// src/entities/lufi-file.ts -var LufiFile = class _LufiFile { - constructor(serverUrl, properties) { - __publicField(this, "actionToken", ""); - __publicField(this, "chunksReady", 0); - __publicField(this, "createdAt", 0); - __publicField(this, "delay", 0); - __publicField(this, "delAtFirstView", false); - __publicField(this, "keys", { client: "", server: "" }); - __publicField(this, "name", ""); - __publicField(this, "password", ""); - __publicField(this, "queueIndex", 0); - __publicField(this, "serverUrl"); - __publicField(this, "size", 0); - __publicField(this, "uploadStatus", 3 /* INITIALIZED */); - __publicField(this, "totalChunks", 0); - __publicField(this, "type", ""); - __publicField(this, "zipped", false); - this.serverUrl = serverUrl; - Object.assign(this, properties); - } - downloadUrl() { - const serverUrl = new URL(this.serverUrl); - return new URL( - `${serverUrl.origin + serverUrl.pathname}r/${this.keys.server}#${this.keys.client}` - ); - } - removeUrl() { - const serverUrl = new URL(this.serverUrl); - return new URL( - `${serverUrl.origin + serverUrl.pathname}d/${this.keys.server}/${this.actionToken}` - ); - } - static fromDownloadUrl(downloadUrl, password = "") { - const pathinfos = downloadUrl.pathname.split("r/"); - const keys = { - client: downloadUrl.hash.slice(1).split("&")[0], - server: pathinfos[1] - }; - return new _LufiFile(downloadUrl.origin + pathinfos[0], { - keys, - password - }); - } - static fromRemoveUrl(removeUrl, password = "") { - const pathInfos = removeUrl.pathname.split("d/"); - const splittedPath = pathInfos[1].split("/"); - const keys = { client: "", server: splittedPath[0] }; - return new _LufiFile(removeUrl.origin + pathInfos[0], { - keys, - password, - actionToken: splittedPath[1] - }); - } -}; - -// src/entities/lufi-job.ts -var import_events = __toESM(require_events()); - -// src/error/base-error.ts -var BaseError = class extends Error { - constructor(message, options = {}) { - const { cause, context } = options; - super(message, { cause }); - __publicField(this, "context"); - this.name = this.constructor.name; - this.context = context; - } -}; - -// src/error/connection-error.ts -var ConnectionError = class extends BaseError { - constructor() { - super(...arguments); - __publicField(this, "message", "Unable to connect. Is the computer able to access the url?"); - } -}; - -// src/error/server-error.ts -var ServerError = class extends BaseError { - constructor() { - super(...arguments); - __publicField(this, "message", "The server returned an error"); - } -}; - -// src/utils.ts -var ensureError = (value) => { - if (value instanceof Error) return value; - let stringified = "[Unable to stringify the thrown value]"; - try { - stringified = JSON.stringify(value); - } catch (_error) { - } - const error = new Error(stringified); - return error; -}; -var fetchServerConfig = (instanceUrl) => { - const originMatches = instanceUrl.href.match( - /(.*?)\/?(?:[dr]{1}\/|login\/?|files\/?)/ - ); - const urlOrigin = originMatches && originMatches[1] ? originMatches[1] : instanceUrl.origin; - return ResultAsync.fromPromise( - fetch(urlOrigin + "/about/config"), - (error) => new ConnectionError(void 0, { - cause: ensureError(error) - }) - ).andThen((response) => { - if (response.ok) { - return ResultAsync.fromPromise( - response.json(), - (error) => ensureError(error) - ); - } else { - return errAsync( - new ServerError(void 0, { context: response.statusText }) - ); - } - }); -}; -var isDenoRuntime = () => typeof Deno !== "undefined"; -var isSecureContext = () => { - return isDenoRuntime() || typeof window !== "undefined" && (window.isSecureContext || window.location.protocol === "https:"); -}; -var workerUrl = (relativePath) => isDenoRuntime() ? new URL(`./worker/${relativePath}.ts`, new URL(".", import.meta.url).href) : new URL( - import.meta.resolve( - `./${relativePath === "main" ? `worker/${relativePath}` : relativePath}.js` - ) -); -var hashPassword = async (password) => password ? Array.from( - new Uint8Array( - await crypto.subtle.digest( - "SHA-512", - new TextEncoder().encode(password) - ) - ) -).map((b) => b.toString(16).padStart(2, "0")).join("") : ""; - -// src/entities/lufi-job.ts -var LufiJob = class { - constructor(lufiFile) { - __publicField(this, "events", new import_events.default()); - __publicField(this, "lufiFile"); - __publicField(this, "status", 2 /* ONGOING */); - __publicField(this, "tmpFile"); - __publicField(this, "tmpChunks", []); - __publicField(this, "worker"); - __publicField(this, "isTerminated", false); - /** - * Tells the worker the job is complete - */ - __publicField(this, "complete", () => { - this.status = 0 /* COMPLETE */; - this.events.emit("JOB_TERMINATED" /* JOB_TERMINATED */); - }); - __publicField(this, "hasFailed", () => this.status === 1 /* FAILED */); - __publicField(this, "onError", (callback) => { - this.worker.onerror = (event) => { - callback(event); - }; - return this; - }); - __publicField(this, "onMessage", (callback) => { - this.worker.onmessage = (e) => { - if (callback) { - callback(e); - } - const event = e.data.event; - if (event) { - if (event === "FILE_UPDATED" /* FILE_UPDATED */) { - Object.assign(this.lufiFile, e.data.lufiFile); - } else { - this.dispatchEvent(event, e.data.error); - } - } - }; - return this; - }); - __publicField(this, "onMessageError", (callback) => { - this.worker.onmessageerror = (event) => { - callback(event); - }; - return this; - }); - __publicField(this, "onProgress", (callback) => { - this.events.on("CHUNK_UPLOADED" /* CHUNK_UPLOADED */, () => { - callback(); - }); - this.events.on("CHUNK_DOWNLOADED" /* CHUNK_DOWNLOADED */, () => { - callback(); - }); - return this; - }); - __publicField(this, "requestMessage", (msg, transferable = []) => { - this.worker.postMessage(msg, transferable); - return this; - }); - __publicField(this, "terminate", () => { - this.worker.terminate(); - return this; - }); - __publicField(this, "waitForCompletion", () => { - if (this.isTerminated) { - if (this.status === 0 /* COMPLETE */) { - return okAsync(this); - } else { - return errAsync(ensureError("Job has failed")); - } - } else { - return ResultAsync.fromPromise( - new Promise((resolve, reject) => { - this.events.once("OPERATION_FAILED" /* OPERATION_FAILED */, (error) => { - reject(error); - }); - this.events.once("JOB_TERMINATED" /* JOB_TERMINATED */, () => { - if (this.status === 0 /* COMPLETE */) { - resolve(this); - } - }); - }), - (error) => ensureError(error) - ); - } - }); - __publicField(this, "dispatchEvent", (event, error) => { - this.events.emit(event, error); - }); - this.worker = new Worker(workerUrl("main"), { type: "module" }); - this.lufiFile = lufiFile; - this.events.once("JOB_TERMINATED" /* JOB_TERMINATED */, () => { - this.isTerminated = true; - this.terminate(); - }); - this.events.once("OPERATION_FAILED" /* OPERATION_FAILED */, (error) => { - this.status = 1 /* FAILED */; - this.lufiFile.uploadStatus = 2 /* FAILED */; - this.events.emit("JOB_TERMINATED" /* JOB_TERMINATED */, error); - }); - this.onError((event) => console.error(event.error)); - } -}; - -// src/enum/crypto-algorithm.ts -var CryptoAlgorithm = /* @__PURE__ */ ((CryptoAlgorithm2) => { - CryptoAlgorithm2[CryptoAlgorithm2["Sjcl"] = 0] = "Sjcl"; - CryptoAlgorithm2[CryptoAlgorithm2["WebCrypto"] = 1] = "WebCrypto"; - return CryptoAlgorithm2; -})(CryptoAlgorithm || {}); - -// node_modules/.deno/arraybuffer-encoding@1.1.0/node_modules/arraybuffer-encoding/dist/esm/base64/encoding.js -var Encoding = class { - /** - * - * @param charset Charset to use for base64 encoding. This must be 64-characters long. - * @param noPadding If true, encoded strings won't include padding. - */ - constructor(charset, noPadding) { - if (!charset || charset.length != 64) { - throw Error("Charset must contain 64 characters"); - } - this._charset = charset; - this._noPadding = !!noPadding; - this._valid = new RegExp("^[" + this._charset.replace("-", "\\-") + "]+={0,2}$"); - } - /** - * Encode an ArrayBuffer to base64 in a string. - * @param ab Data to encode to base64 - * @returns Base64-encoded string - */ - Encode(ab) { - const len = ab.byteLength; - if (!len) { - return ""; - } - const view = new Uint8Array(ab); - let res = ""; - for (let i = 0; i < len; i += 3) { - res += this._charset[view[i] >> 2] + this._charset[(view[i] & 3) << 4 | view[i + 1] >> 4] + this._charset[(view[i + 1] & 15) << 2 | view[i + 2] >> 6] + this._charset[view[i + 2] & 63]; - } - if (len % 3 == 2) { - res = res.substring(0, res.length - 1); - if (!this._noPadding) { - res += "="; - } - } else if (len % 3 == 1) { - res = res.substring(0, res.length - 2); - if (!this._noPadding) { - res += "=="; - } - } - return res; - } - /** - * Decode a string from base64. Padding is always optional. - * @param str Base64-encoded string - * @returns Data decoded from the base64 string - */ - Decode(str) { - str = (str || "").replace(/[\s]/g, ""); - if (!str) { - return new ArrayBuffer(0); - } - if (!this._valid.test(str)) { - throw Error("Invalid base64 input sequence"); - } - let viewLen = Math.floor(str.length * 0.75); - if (str[str.length - 2] == "=") { - viewLen -= 2; - } else if (str[str.length - 1] == "=") { - viewLen--; - } - const view = new Uint8Array(viewLen); - let enc1, enc2, enc3, enc4, i = 0, j = 0; - while (i < str.length * 0.75) { - enc1 = this._charset.indexOf(str.charAt(j++)); - enc2 = this._charset.indexOf(str.charAt(j++)); - enc3 = this._charset.indexOf(str.charAt(j++)); - enc4 = this._charset.indexOf(str.charAt(j++)); - view[i++] = enc1 << 2 | enc2 >> 4; - view[i++] = (enc2 & 15) << 4 | enc3 >> 2; - view[i++] = (enc3 & 3) << 6 | enc4; - } - return view.buffer; - } -}; - -// node_modules/.deno/arraybuffer-encoding@1.1.0/node_modules/arraybuffer-encoding/dist/esm/base64/standard.js -var obj = new Encoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"); - -// node_modules/.deno/arraybuffer-encoding@1.1.0/node_modules/arraybuffer-encoding/dist/esm/base64/url.js -var obj2 = new Encoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_", true); -function Encode(ab) { - return obj2.Encode(ab); -} - -// src/api/crypto/sjcl.ts -var import_sjcl = __toESM(require_sjcl()); - -// src/error/crypto/crypto-error.ts -var CryptoError = class extends BaseError { -}; - -// src/error/crypto/decryption-error.ts -var DecryptionError = class extends CryptoError { - constructor() { - super(...arguments); - __publicField(this, "message", "Unable to decrypt the provided data"); - } -}; - -// src/api/crypto/sjcl.ts -var generateKey = () => { - try { - return okAsync(import_sjcl.default.codec.base64.fromBits(import_sjcl.default.random.randomWords(8, 10))); - } catch (e) { - return errAsync( - new CryptoError("Unable to generate a random key", { - cause: ensureError(e) - }) - ); - } -}; - -// src/api/crypto/web.ts -var generateKey2 = () => { - return ResultAsync.fromPromise( - new Promise( - (resolve) => crypto.subtle.generateKey( - { - name: "AES-GCM", - length: 256 - }, - true, - ["encrypt", "decrypt"] - ).then( - (generatedKey) => crypto.subtle.exportKey("raw", generatedKey).then((key) => resolve(Encode(key))).catch( - (error) => errAsync( - new DecryptionError(void 0, { cause: ensureError(error) }) - ) - ) - ).catch( - (error) => errAsync( - new DecryptionError(void 0, { cause: ensureError(error) }) - ) - ) - ), - (error) => new CryptoError("Unable to base64 encode the url", { - cause: ensureError(error) - }) - ); -}; - -// src/api/crypto.ts -var generateKey3 = (algo = 1 /* WebCrypto */) => { - return algo === 0 /* Sjcl */ ? generateKey() : generateKey2(); -}; - -// src/error/file/file-error.ts -var FileError = class extends BaseError { - constructor() { - super(...arguments); - __publicField(this, "message", "An error occured while dealing with a file"); - } -}; - -// src/error/file/file-operation-error.ts -var FileOperationError = class extends FileError { - constructor() { - super(...arguments); - __publicField(this, "message", "An error occured while operating on a file"); - } -}; - -// src/error/file/file-slicing-error.ts -var FileSlicingError = class extends FileOperationError { - constructor() { - super(...arguments); - __publicField(this, "message", "An error occured while slicing a file"); - } -}; - -// node_modules/.deno/fflate@0.8.2/node_modules/fflate/esm/browser.js -var ch2 = {}; -var wk = function(c, id, msg, transfer, cb) { - var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([ - c + ';addEventListener("error",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})' - ], { type: "text/javascript" })))); - w.onmessage = function(e) { - var d = e.data, ed = d.$e$; - if (ed) { - var err3 = new Error(ed[0]); - err3["code"] = ed[1]; - err3.stack = ed[2]; - cb(err3, null); - } else - cb(null, d); - }; - w.postMessage(msg, transfer); - return w; -}; -var u8 = Uint8Array; -var u16 = Uint16Array; -var i32 = Int32Array; -var fleb = new u8([ - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 1, - 1, - 1, - 2, - 2, - 2, - 2, - 3, - 3, - 3, - 3, - 4, - 4, - 4, - 4, - 5, - 5, - 5, - 5, - 0, - /* unused */ - 0, - 0, - /* impossible */ - 0 -]); -var fdeb = new u8([ - 0, - 0, - 0, - 0, - 1, - 1, - 2, - 2, - 3, - 3, - 4, - 4, - 5, - 5, - 6, - 6, - 7, - 7, - 8, - 8, - 9, - 9, - 10, - 10, - 11, - 11, - 12, - 12, - 13, - 13, - /* unused */ - 0, - 0 -]); -var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); -var freb = function(eb, start) { - var b = new u16(31); - for (var i = 0; i < 31; ++i) { - b[i] = start += 1 << eb[i - 1]; - } - var r = new i32(b[30]); - for (var i = 1; i < 30; ++i) { - for (var j = b[i]; j < b[i + 1]; ++j) { - r[j] = j - b[i] << 5 | i; - } - } - return { b, r }; -}; -var _a = freb(fleb, 2); -var fl = _a.b; -var revfl = _a.r; -fl[28] = 258, revfl[258] = 28; -var _b = freb(fdeb, 0); -var fd = _b.b; -var revfd = _b.r; -var rev = new u16(32768); -for (i = 0; i < 32768; ++i) { - x = (i & 43690) >> 1 | (i & 21845) << 1; - x = (x & 52428) >> 2 | (x & 13107) << 2; - x = (x & 61680) >> 4 | (x & 3855) << 4; - rev[i] = ((x & 65280) >> 8 | (x & 255) << 8) >> 1; -} -var x; -var i; -var hMap = function(cd, mb, r) { - var s = cd.length; - var i = 0; - var l = new u16(mb); - for (; i < s; ++i) { - if (cd[i]) - ++l[cd[i] - 1]; - } - var le = new u16(mb); - for (i = 1; i < mb; ++i) { - le[i] = le[i - 1] + l[i - 1] << 1; - } - var co; - if (r) { - co = new u16(1 << mb); - var rvb = 15 - mb; - for (i = 0; i < s; ++i) { - if (cd[i]) { - var sv = i << 4 | cd[i]; - var r_1 = mb - cd[i]; - var v = le[cd[i] - 1]++ << r_1; - for (var m = v | (1 << r_1) - 1; v <= m; ++v) { - co[rev[v] >> rvb] = sv; - } - } - } - } else { - co = new u16(s); - for (i = 0; i < s; ++i) { - if (cd[i]) { - co[i] = rev[le[cd[i] - 1]++] >> 15 - cd[i]; - } - } - } - return co; -}; -var flt = new u8(288); -for (i = 0; i < 144; ++i) - flt[i] = 8; -var i; -for (i = 144; i < 256; ++i) - flt[i] = 9; -var i; -for (i = 256; i < 280; ++i) - flt[i] = 7; -var i; -for (i = 280; i < 288; ++i) - flt[i] = 8; -var i; -var fdt = new u8(32); -for (i = 0; i < 32; ++i) - fdt[i] = 5; -var i; -var flm = /* @__PURE__ */ hMap(flt, 9, 0); -var flrm = /* @__PURE__ */ hMap(flt, 9, 1); -var fdm = /* @__PURE__ */ hMap(fdt, 5, 0); -var fdrm = /* @__PURE__ */ hMap(fdt, 5, 1); -var max = function(a) { - var m = a[0]; - for (var i = 1; i < a.length; ++i) { - if (a[i] > m) - m = a[i]; - } - return m; -}; -var bits = function(d, p, m) { - var o = p / 8 | 0; - return (d[o] | d[o + 1] << 8) >> (p & 7) & m; -}; -var bits16 = function(d, p) { - var o = p / 8 | 0; - return (d[o] | d[o + 1] << 8 | d[o + 2] << 16) >> (p & 7); -}; -var shft = function(p) { - return (p + 7) / 8 | 0; -}; -var slc = function(v, s, e) { - if (s == null || s < 0) - s = 0; - if (e == null || e > v.length) - e = v.length; - return new u8(v.subarray(s, e)); -}; -var ec = [ - "unexpected EOF", - "invalid block type", - "invalid length/literal", - "invalid distance", - "stream finished", - "no stream handler", - , - "no callback", - "invalid UTF-8 data", - "extra field too long", - "date not in range 1980-2099", - "filename too long", - "stream finishing", - "invalid zip data" - // determined by unknown compression method -]; -var err2 = function(ind, msg, nt) { - var e = new Error(msg || ec[ind]); - e.code = ind; - if (Error.captureStackTrace) - Error.captureStackTrace(e, err2); - if (!nt) - throw e; - return e; -}; -var inflt = function(dat, st, buf, dict) { - var sl = dat.length, dl = dict ? dict.length : 0; - if (!sl || st.f && !st.l) - return buf || new u8(0); - var noBuf = !buf; - var resize = noBuf || st.i != 2; - var noSt = st.i; - if (noBuf) - buf = new u8(sl * 3); - var cbuf = function(l2) { - var bl = buf.length; - if (l2 > bl) { - var nbuf = new u8(Math.max(bl * 2, l2)); - nbuf.set(buf); - buf = nbuf; - } - }; - var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n; - var tbts = sl * 8; - do { - if (!lm) { - final = bits(dat, pos, 1); - var type = bits(dat, pos + 1, 3); - pos += 3; - if (!type) { - var s = shft(pos) + 4, l = dat[s - 4] | dat[s - 3] << 8, t = s + l; - if (t > sl) { - if (noSt) - err2(0); - break; - } - if (resize) - cbuf(bt + l); - buf.set(dat.subarray(s, t), bt); - st.b = bt += l, st.p = pos = t * 8, st.f = final; - continue; - } else if (type == 1) - lm = flrm, dm = fdrm, lbt = 9, dbt = 5; - else if (type == 2) { - var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4; - var tl = hLit + bits(dat, pos + 5, 31) + 1; - pos += 14; - var ldt = new u8(tl); - var clt = new u8(19); - for (var i = 0; i < hcLen; ++i) { - clt[clim[i]] = bits(dat, pos + i * 3, 7); - } - pos += hcLen * 3; - var clb = max(clt), clbmsk = (1 << clb) - 1; - var clm = hMap(clt, clb, 1); - for (var i = 0; i < tl; ) { - var r = clm[bits(dat, pos, clbmsk)]; - pos += r & 15; - var s = r >> 4; - if (s < 16) { - ldt[i++] = s; - } else { - var c = 0, n = 0; - if (s == 16) - n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1]; - else if (s == 17) - n = 3 + bits(dat, pos, 7), pos += 3; - else if (s == 18) - n = 11 + bits(dat, pos, 127), pos += 7; - while (n--) - ldt[i++] = c; - } - } - var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit); - lbt = max(lt); - dbt = max(dt); - lm = hMap(lt, lbt, 1); - dm = hMap(dt, dbt, 1); - } else - err2(1); - if (pos > tbts) { - if (noSt) - err2(0); - break; - } - } - if (resize) - cbuf(bt + 131072); - var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1; - var lpos = pos; - for (; ; lpos = pos) { - var c = lm[bits16(dat, pos) & lms], sym = c >> 4; - pos += c & 15; - if (pos > tbts) { - if (noSt) - err2(0); - break; - } - if (!c) - err2(2); - if (sym < 256) - buf[bt++] = sym; - else if (sym == 256) { - lpos = pos, lm = null; - break; - } else { - var add = sym - 254; - if (sym > 264) { - var i = sym - 257, b = fleb[i]; - add = bits(dat, pos, (1 << b) - 1) + fl[i]; - pos += b; - } - var d = dm[bits16(dat, pos) & dms], dsym = d >> 4; - if (!d) - err2(3); - pos += d & 15; - var dt = fd[dsym]; - if (dsym > 3) { - var b = fdeb[dsym]; - dt += bits16(dat, pos) & (1 << b) - 1, pos += b; - } - if (pos > tbts) { - if (noSt) - err2(0); - break; - } - if (resize) - cbuf(bt + 131072); - var end = bt + add; - if (bt < dt) { - var shift = dl - dt, dend = Math.min(dt, end); - if (shift + bt < 0) - err2(3); - for (; bt < dend; ++bt) - buf[bt] = dict[shift + bt]; - } - for (; bt < end; ++bt) - buf[bt] = buf[bt - dt]; - } - } - st.l = lm, st.p = lpos, st.b = bt, st.f = final; - if (lm) - final = 1, st.m = lbt, st.d = dm, st.n = dbt; - } while (!final); - return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt); -}; -var wbits = function(d, p, v) { - v <<= p & 7; - var o = p / 8 | 0; - d[o] |= v; - d[o + 1] |= v >> 8; -}; -var wbits16 = function(d, p, v) { - v <<= p & 7; - var o = p / 8 | 0; - d[o] |= v; - d[o + 1] |= v >> 8; - d[o + 2] |= v >> 16; -}; -var hTree = function(d, mb) { - var t = []; - for (var i = 0; i < d.length; ++i) { - if (d[i]) - t.push({ s: i, f: d[i] }); - } - var s = t.length; - var t2 = t.slice(); - if (!s) - return { t: et, l: 0 }; - if (s == 1) { - var v = new u8(t[0].s + 1); - v[t[0].s] = 1; - return { t: v, l: 1 }; - } - t.sort(function(a, b) { - return a.f - b.f; - }); - t.push({ s: -1, f: 25001 }); - var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2; - t[0] = { s: -1, f: l.f + r.f, l, r }; - while (i1 != s - 1) { - l = t[t[i0].f < t[i2].f ? i0++ : i2++]; - r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++]; - t[i1++] = { s: -1, f: l.f + r.f, l, r }; - } - var maxSym = t2[0].s; - for (var i = 1; i < s; ++i) { - if (t2[i].s > maxSym) - maxSym = t2[i].s; - } - var tr = new u16(maxSym + 1); - var mbt = ln(t[i1 - 1], tr, 0); - if (mbt > mb) { - var i = 0, dt = 0; - var lft = mbt - mb, cst = 1 << lft; - t2.sort(function(a, b) { - return tr[b.s] - tr[a.s] || a.f - b.f; - }); - for (; i < s; ++i) { - var i2_1 = t2[i].s; - if (tr[i2_1] > mb) { - dt += cst - (1 << mbt - tr[i2_1]); - tr[i2_1] = mb; - } else - break; - } - dt >>= lft; - while (dt > 0) { - var i2_2 = t2[i].s; - if (tr[i2_2] < mb) - dt -= 1 << mb - tr[i2_2]++ - 1; - else - ++i; - } - for (; i >= 0 && dt; --i) { - var i2_3 = t2[i].s; - if (tr[i2_3] == mb) { - --tr[i2_3]; - ++dt; - } - } - mbt = mb; - } - return { t: new u8(tr), l: mbt }; -}; -var ln = function(n, l, d) { - return n.s == -1 ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1)) : l[n.s] = d; -}; -var lc = function(c) { - var s = c.length; - while (s && !c[--s]) - ; - var cl = new u16(++s); - var cli = 0, cln = c[0], cls = 1; - var w = function(v) { - cl[cli++] = v; - }; - for (var i = 1; i <= s; ++i) { - if (c[i] == cln && i != s) - ++cls; - else { - if (!cln && cls > 2) { - for (; cls > 138; cls -= 138) - w(32754); - if (cls > 2) { - w(cls > 10 ? cls - 11 << 5 | 28690 : cls - 3 << 5 | 12305); - cls = 0; - } - } else if (cls > 3) { - w(cln), --cls; - for (; cls > 6; cls -= 6) - w(8304); - if (cls > 2) - w(cls - 3 << 5 | 8208), cls = 0; - } - while (cls--) - w(cln); - cls = 1; - cln = c[i]; - } - } - return { c: cl.subarray(0, cli), n: s }; -}; -var clen = function(cf, cl) { - var l = 0; - for (var i = 0; i < cl.length; ++i) - l += cf[i] * cl[i]; - return l; -}; -var wfblk = function(out, pos, dat) { - var s = dat.length; - var o = shft(pos + 2); - out[o] = s & 255; - out[o + 1] = s >> 8; - out[o + 2] = out[o] ^ 255; - out[o + 3] = out[o + 1] ^ 255; - for (var i = 0; i < s; ++i) - out[o + i + 4] = dat[i]; - return (o + 4 + s) * 8; -}; -var wblk = function(dat, out, final, syms, lf, df, eb, li, bs, bl, p) { - wbits(out, p++, final); - ++lf[256]; - var _a2 = hTree(lf, 15), dlt = _a2.t, mlb = _a2.l; - var _b2 = hTree(df, 15), ddt = _b2.t, mdb = _b2.l; - var _c = lc(dlt), lclt = _c.c, nlc = _c.n; - var _d = lc(ddt), lcdt = _d.c, ndc = _d.n; - var lcfreq = new u16(19); - for (var i = 0; i < lclt.length; ++i) - ++lcfreq[lclt[i] & 31]; - for (var i = 0; i < lcdt.length; ++i) - ++lcfreq[lcdt[i] & 31]; - var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l; - var nlcc = 19; - for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc) - ; - var flen = bl + 5 << 3; - var ftlen = clen(lf, flt) + clen(df, fdt) + eb; - var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18]; - if (bs >= 0 && flen <= ftlen && flen <= dtlen) - return wfblk(out, p, dat.subarray(bs, bs + bl)); - var lm, ll, dm, dl; - wbits(out, p, 1 + (dtlen < ftlen)), p += 2; - if (dtlen < ftlen) { - lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt; - var llm = hMap(lct, mlcb, 0); - wbits(out, p, nlc - 257); - wbits(out, p + 5, ndc - 1); - wbits(out, p + 10, nlcc - 4); - p += 14; - for (var i = 0; i < nlcc; ++i) - wbits(out, p + 3 * i, lct[clim[i]]); - p += 3 * nlcc; - var lcts = [lclt, lcdt]; - for (var it = 0; it < 2; ++it) { - var clct = lcts[it]; - for (var i = 0; i < clct.length; ++i) { - var len = clct[i] & 31; - wbits(out, p, llm[len]), p += lct[len]; - if (len > 15) - wbits(out, p, clct[i] >> 5 & 127), p += clct[i] >> 12; - } - } - } else { - lm = flm, ll = flt, dm = fdm, dl = fdt; - } - for (var i = 0; i < li; ++i) { - var sym = syms[i]; - if (sym > 255) { - var len = sym >> 18 & 31; - wbits16(out, p, lm[len + 257]), p += ll[len + 257]; - if (len > 7) - wbits(out, p, sym >> 23 & 31), p += fleb[len]; - var dst = sym & 31; - wbits16(out, p, dm[dst]), p += dl[dst]; - if (dst > 3) - wbits16(out, p, sym >> 5 & 8191), p += fdeb[dst]; - } else { - wbits16(out, p, lm[sym]), p += ll[sym]; - } - } - wbits16(out, p, lm[256]); - return p + ll[256]; -}; -var deo = /* @__PURE__ */ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]); -var et = /* @__PURE__ */ new u8(0); -var dflt = function(dat, lvl, plvl, pre, post, st) { - var s = st.z || dat.length; - var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7e3)) + post); - var w = o.subarray(pre, o.length - post); - var lst = st.l; - var pos = (st.r || 0) & 7; - if (lvl) { - if (pos) - w[0] = st.r >> 3; - var opt = deo[lvl - 1]; - var n = opt >> 13, c = opt & 8191; - var msk_1 = (1 << plvl) - 1; - var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1); - var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1; - var hsh = function(i2) { - return (dat[i2] ^ dat[i2 + 1] << bs1_1 ^ dat[i2 + 2] << bs2_1) & msk_1; - }; - var syms = new i32(25e3); - var lf = new u16(288), df = new u16(32); - var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0; - for (; i + 2 < s; ++i) { - var hv = hsh(i); - var imod = i & 32767, pimod = head[hv]; - prev[imod] = pimod; - head[hv] = imod; - if (wi <= i) { - var rem = s - i; - if ((lc_1 > 7e3 || li > 24576) && (rem > 423 || !lst)) { - pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos); - li = lc_1 = eb = 0, bs = i; - for (var j = 0; j < 286; ++j) - lf[j] = 0; - for (var j = 0; j < 30; ++j) - df[j] = 0; - } - var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767; - if (rem > 2 && hv == hsh(i - dif)) { - var maxn = Math.min(n, rem) - 1; - var maxd = Math.min(32767, i); - var ml = Math.min(258, rem); - while (dif <= maxd && --ch_1 && imod != pimod) { - if (dat[i + l] == dat[i + l - dif]) { - var nl = 0; - for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl) - ; - if (nl > l) { - l = nl, d = dif; - if (nl > maxn) - break; - var mmd = Math.min(dif, nl - 2); - var md = 0; - for (var j = 0; j < mmd; ++j) { - var ti = i - dif + j & 32767; - var pti = prev[ti]; - var cd = ti - pti & 32767; - if (cd > md) - md = cd, pimod = ti; - } - } - } - imod = pimod, pimod = prev[imod]; - dif += imod - pimod & 32767; - } - } - if (d) { - syms[li++] = 268435456 | revfl[l] << 18 | revfd[d]; - var lin = revfl[l] & 31, din = revfd[d] & 31; - eb += fleb[lin] + fdeb[din]; - ++lf[257 + lin]; - ++df[din]; - wi = i + l; - ++lc_1; - } else { - syms[li++] = dat[i]; - ++lf[dat[i]]; - } - } - } - for (i = Math.max(i, wi); i < s; ++i) { - syms[li++] = dat[i]; - ++lf[dat[i]]; - } - pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos); - if (!lst) { - st.r = pos & 7 | w[pos / 8 | 0] << 3; - pos -= 7; - st.h = head, st.p = prev, st.i = i, st.w = wi; - } - } else { - for (var i = st.w || 0; i < s + lst; i += 65535) { - var e = i + 65535; - if (e >= s) { - w[pos / 8 | 0] = lst; - e = s; - } - pos = wfblk(w, pos + 1, dat.subarray(i, e)); - } - st.i = s; - } - return slc(o, 0, pre + shft(pos) + post); -}; -var crct = /* @__PURE__ */ function() { - var t = new Int32Array(256); - for (var i = 0; i < 256; ++i) { - var c = i, k = 9; - while (--k) - c = (c & 1 && -306674912) ^ c >>> 1; - t[i] = c; - } - return t; -}(); -var crc = function() { - var c = -1; - return { - p: function(d) { - var cr = c; - for (var i = 0; i < d.length; ++i) - cr = crct[cr & 255 ^ d[i]] ^ cr >>> 8; - c = cr; - }, - d: function() { - return ~c; - } - }; -}; -var dopt = function(dat, opt, pre, post, st) { - if (!st) { - st = { l: 1 }; - if (opt.dictionary) { - var dict = opt.dictionary.subarray(-32768); - var newDat = new u8(dict.length + dat.length); - newDat.set(dict); - newDat.set(dat, dict.length); - dat = newDat; - st.w = dict.length; - } - } - return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20 : 12 + opt.mem, pre, post, st); -}; -var mrg = function(a, b) { - var o = {}; - for (var k in a) - o[k] = a[k]; - for (var k in b) - o[k] = b[k]; - return o; -}; -var wcln = function(fn, fnStr, td2) { - var dt = fn(); - var st = fn.toString(); - var ks = st.slice(st.indexOf("[") + 1, st.lastIndexOf("]")).replace(/\s+/g, "").split(","); - for (var i = 0; i < dt.length; ++i) { - var v = dt[i], k = ks[i]; - if (typeof v == "function") { - fnStr += ";" + k + "="; - var st_1 = v.toString(); - if (v.prototype) { - if (st_1.indexOf("[native code]") != -1) { - var spInd = st_1.indexOf(" ", 8) + 1; - fnStr += st_1.slice(spInd, st_1.indexOf("(", spInd)); - } else { - fnStr += st_1; - for (var t in v.prototype) - fnStr += ";" + k + ".prototype." + t + "=" + v.prototype[t].toString(); - } - } else - fnStr += st_1; - } else - td2[k] = v; - } - return fnStr; -}; -var ch = []; -var cbfs = function(v) { - var tl = []; - for (var k in v) { - if (v[k].buffer) { - tl.push((v[k] = new v[k].constructor(v[k])).buffer); - } - } - return tl; -}; -var wrkr = function(fns, init, id, cb) { - if (!ch[id]) { - var fnStr = "", td_1 = {}, m = fns.length - 1; - for (var i = 0; i < m; ++i) - fnStr = wcln(fns[i], fnStr, td_1); - ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 }; - } - var td2 = mrg({}, ch[id].e); - return wk(ch[id].c + ";onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=" + init.toString() + "}", id, td2, cbfs(td2), cb); -}; -var bInflt = function() { - return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err2, inflt, inflateSync, pbf, gopt]; -}; -var bDflt = function() { - return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; -}; -var pbf = function(msg) { - return postMessage(msg, [msg.buffer]); -}; -var gopt = function(o) { - return o && { - out: o.size && new u8(o.size), - dictionary: o.dictionary - }; -}; -var cbify = function(dat, opts, fns, init, id, cb) { - var w = wrkr(fns, init, id, function(err3, dat2) { - w.terminate(); - cb(err3, dat2); - }); - w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []); - return function() { - w.terminate(); - }; -}; -var b2 = function(d, b) { - return d[b] | d[b + 1] << 8; -}; -var b4 = function(d, b) { - return (d[b] | d[b + 1] << 8 | d[b + 2] << 16 | d[b + 3] << 24) >>> 0; -}; -var b8 = function(d, b) { - return b4(d, b) + b4(d, b + 4) * 4294967296; -}; -var wbytes = function(d, b, v) { - for (; v; ++b) - d[b] = v, v >>>= 8; -}; -function deflate(data, opts, cb) { - if (!cb) - cb = opts, opts = {}; - if (typeof cb != "function") - err2(7); - return cbify(data, opts, [ - bDflt - ], function(ev) { - return pbf(deflateSync(ev.data[0], ev.data[1])); - }, 0, cb); -} -function deflateSync(data, opts) { - return dopt(data, opts || {}, 0, 0); -} -function inflate(data, opts, cb) { - if (!cb) - cb = opts, opts = {}; - if (typeof cb != "function") - err2(7); - return cbify(data, opts, [ - bInflt - ], function(ev) { - return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); - }, 1, cb); -} -function inflateSync(data, opts) { - return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary); -} -var fltn = function(d, p, t, o) { - for (var k in d) { - var val = d[k], n = p + k, op = o; - if (Array.isArray(val)) - op = mrg(o, val[1]), val = val[0]; - if (val instanceof u8) - t[n] = [val, op]; - else { - t[n += "/"] = [new u8(0), op]; - fltn(val, n, t, o); - } - } -}; -var te = typeof TextEncoder != "undefined" && /* @__PURE__ */ new TextEncoder(); -var td = typeof TextDecoder != "undefined" && /* @__PURE__ */ new TextDecoder(); -var tds = 0; -try { - td.decode(et, { stream: true }); - tds = 1; -} catch (e) { -} -var dutf8 = function(d) { - for (var r = "", i = 0; ; ) { - var c = d[i++]; - var eb = (c > 127) + (c > 223) + (c > 239); - if (i + eb > d.length) - return { s: r, r: slc(d, i - 1) }; - if (!eb) - r += String.fromCharCode(c); - else if (eb == 3) { - c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | d[i++] & 63) - 65536, r += String.fromCharCode(55296 | c >> 10, 56320 | c & 1023); - } else if (eb & 1) - r += String.fromCharCode((c & 31) << 6 | d[i++] & 63); - else - r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | d[i++] & 63); - } -}; -function strToU8(str, latin1) { - if (latin1) { - var ar_1 = new u8(str.length); - for (var i = 0; i < str.length; ++i) - ar_1[i] = str.charCodeAt(i); - return ar_1; - } - if (te) - return te.encode(str); - var l = str.length; - var ar = new u8(str.length + (str.length >> 1)); - var ai = 0; - var w = function(v) { - ar[ai++] = v; - }; - for (var i = 0; i < l; ++i) { - if (ai + 5 > ar.length) { - var n = new u8(ai + 8 + (l - i << 1)); - n.set(ar); - ar = n; - } - var c = str.charCodeAt(i); - if (c < 128 || latin1) - w(c); - else if (c < 2048) - w(192 | c >> 6), w(128 | c & 63); - else if (c > 55295 && c < 57344) - c = 65536 + (c & 1023 << 10) | str.charCodeAt(++i) & 1023, w(240 | c >> 18), w(128 | c >> 12 & 63), w(128 | c >> 6 & 63), w(128 | c & 63); - else - w(224 | c >> 12), w(128 | c >> 6 & 63), w(128 | c & 63); - } - return slc(ar, 0, ai); -} -function strFromU8(dat, latin1) { - if (latin1) { - var r = ""; - for (var i = 0; i < dat.length; i += 16384) - r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384)); - return r; - } else if (td) { - return td.decode(dat); - } else { - var _a2 = dutf8(dat), s = _a2.s, r = _a2.r; - if (r.length) - err2(8); - return s; - } -} -var slzh = function(d, b) { - return b + 30 + b2(d, b + 26) + b2(d, b + 28); -}; -var zh = function(d, b, z) { - var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20); - var _a2 = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a2[0], su = _a2[1], off = _a2[2]; - return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off]; -}; -var z64e = function(d, b) { - for (; b2(d, b) != 1; b += 4 + b2(d, b + 2)) - ; - return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)]; -}; -var exfl = function(ex) { - var le = 0; - if (ex) { - for (var k in ex) { - var l = ex[k].length; - if (l > 65535) - err2(9); - le += l + 4; - } - } - return le; -}; -var wzh = function(d, b, f, fn, u, c, ce, co) { - var fl2 = fn.length, ex = f.extra, col = co && co.length; - var exl = exfl(ex); - wbytes(d, b, ce != null ? 33639248 : 67324752), b += 4; - if (ce != null) - d[b++] = 20, d[b++] = f.os; - d[b] = 20, b += 2; - d[b++] = f.flag << 1 | (c < 0 && 8), d[b++] = u && 8; - d[b++] = f.compression & 255, d[b++] = f.compression >> 8; - var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980; - if (y < 0 || y > 119) - err2(10); - wbytes(d, b, y << 25 | dt.getMonth() + 1 << 21 | dt.getDate() << 16 | dt.getHours() << 11 | dt.getMinutes() << 5 | dt.getSeconds() >> 1), b += 4; - if (c != -1) { - wbytes(d, b, f.crc); - wbytes(d, b + 4, c < 0 ? -c - 2 : c); - wbytes(d, b + 8, f.size); - } - wbytes(d, b + 12, fl2); - wbytes(d, b + 14, exl), b += 16; - if (ce != null) { - wbytes(d, b, col); - wbytes(d, b + 6, f.attrs); - wbytes(d, b + 10, ce), b += 14; - } - d.set(fn, b); - b += fl2; - if (exl) { - for (var k in ex) { - var exf = ex[k], l = exf.length; - wbytes(d, b, +k); - wbytes(d, b + 2, l); - d.set(exf, b + 4), b += 4 + l; - } - } - if (col) - d.set(co, b), b += col; - return b; -}; -var wzf = function(o, b, c, d, e) { - wbytes(o, b, 101010256); - wbytes(o, b + 8, c); - wbytes(o, b + 10, c); - wbytes(o, b + 12, d); - wbytes(o, b + 16, e); -}; -function zip(data, opts, cb) { - if (!cb) - cb = opts, opts = {}; - if (typeof cb != "function") - err2(7); - var r = {}; - fltn(data, "", r, opts); - var k = Object.keys(r); - var lft = k.length, o = 0, tot = 0; - var slft = lft, files2 = new Array(lft); - var term = []; - var tAll = function() { - for (var i2 = 0; i2 < term.length; ++i2) - term[i2](); - }; - var cbd = function(a, b) { - mt(function() { - cb(a, b); - }); - }; - mt(function() { - cbd = cb; - }); - var cbf = function() { - var out = new u8(tot + 22), oe = o, cdl = tot - o; - tot = 0; - for (var i2 = 0; i2 < slft; ++i2) { - var f = files2[i2]; - try { - var l = f.c.length; - wzh(out, tot, f, f.f, f.u, l); - var badd = 30 + f.f.length + exfl(f.extra); - var loc = tot + badd; - out.set(f.c, loc); - wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l; - } catch (e) { - return cbd(e, null); - } - } - wzf(out, o, files2.length, cdl, oe); - cbd(null, out); - }; - if (!lft) - cbf(); - var _loop_1 = function(i2) { - var fn = k[i2]; - var _a2 = r[fn], file = _a2[0], p = _a2[1]; - var c = crc(), size = file.length; - c.p(file); - var f = strToU8(fn), s = f.length; - var com = p.comment, m = com && strToU8(com), ms = m && m.length; - var exl = exfl(p.extra); - var compression = p.level == 0 ? 0 : 8; - var cbl = function(e, d) { - if (e) { - tAll(); - cbd(e, null); - } else { - var l = d.length; - files2[i2] = mrg(p, { - size, - crc: c.d(), - c: d, - f, - m, - u: s != fn.length || m && com.length != ms, - compression - }); - o += 30 + s + exl + l; - tot += 76 + 2 * (s + exl) + (ms || 0) + l; - if (!--lft) - cbf(); - } - }; - if (s > 65535) - cbl(err2(11, 0, 1), null); - if (!compression) - cbl(null, file); - else if (size < 16e4) { - try { - cbl(null, deflateSync(file, p)); - } catch (e) { - cbl(e, null); - } - } else - term.push(deflate(file, p, cbl)); - }; - for (var i = 0; i < slft; ++i) { - _loop_1(i); - } - return tAll; -} -var mt = typeof queueMicrotask == "function" ? queueMicrotask : typeof setTimeout == "function" ? setTimeout : function(fn) { - fn(); -}; -function unzip(data, opts, cb) { - if (!cb) - cb = opts, opts = {}; - if (typeof cb != "function") - err2(7); - var term = []; - var tAll = function() { - for (var i2 = 0; i2 < term.length; ++i2) - term[i2](); - }; - var files2 = {}; - var cbd = function(a, b) { - mt(function() { - cb(a, b); - }); - }; - mt(function() { - cbd = cb; - }); - var e = data.length - 22; - for (; b4(data, e) != 101010256; --e) { - if (!e || data.length - e > 65558) { - cbd(err2(13, 0, 1), null); - return tAll; - } - } - ; - var lft = b2(data, e + 8); - if (lft) { - var c = lft; - var o = b4(data, e + 16); - var z = o == 4294967295 || c == 65535; - if (z) { - var ze = b4(data, e - 12); - z = b4(data, ze) == 101075792; - if (z) { - c = lft = b4(data, ze + 32); - o = b4(data, ze + 48); - } - } - var fltr = opts && opts.filter; - var _loop_3 = function(i2) { - var _a2 = zh(data, o, z), c_1 = _a2[0], sc = _a2[1], su = _a2[2], fn = _a2[3], no = _a2[4], off = _a2[5], b = slzh(data, off); - o = no; - var cbl = function(e2, d) { - if (e2) { - tAll(); - cbd(e2, null); - } else { - if (d) - files2[fn] = d; - if (!--lft) - cbd(null, files2); - } - }; - if (!fltr || fltr({ - name: fn, - size: sc, - originalSize: su, - compression: c_1 - })) { - if (!c_1) - cbl(null, slc(data, b, b + sc)); - else if (c_1 == 8) { - var infl = data.subarray(b, b + sc); - if (su < 524288 || sc > 0.8 * su) { - try { - cbl(null, inflateSync(infl, { out: new u8(su) })); - } catch (e2) { - cbl(e2, null); - } - } else - term.push(inflate(infl, { size: su }, cbl)); - } else - cbl(err2(14, "unknown compression type " + c_1, 1), null); - } else - cbl(null, null); - }; - for (var i = 0; i < c; ++i) { - _loop_3(i); - } - } else - cbd(null, {}); - return tAll; -} - -// src/api/lufi.ts -var CHUNK_LENGTH = 15e5; -var files = {}; -var events = new import_events2.default(); -var cancel = (uploadJob) => { - uploadJob.terminate(); - const job = new LufiJob(uploadJob.lufiFile); - return ResultAsync.fromPromise( - new Promise((resolve, reject) => { - job.onMessage((event) => { - if (event.data.event === "UPLOAD_CANCELLED" /* UPLOAD_CANCELLED */) { - files[job.lufiFile.keys.client].uploadStatus = 0 /* CANCELED */; - resolve(job); - } - if (event.data.event === "OPERATION_FAILED" /* OPERATION_FAILED */) { - reject(event.data.error); - } - }).requestMessage({ - action: 2 /* CANCEL */, - args: { - lufiFile: job.lufiFile - } - }); - }), - (error) => ensureError(error) - ); -}; -var addFilesToArchive = (files2, archiveEntries = {}) => { - const asyncLoop = async (files3) => { - var _a2; - for (const file of files3) { - const nameWithExtension = ((_a2 = file.name.split("/")) == null ? void 0 : _a2.pop()) || file.name; - const nameWithoutExtension = nameWithExtension.split(".").shift(); - const extension = nameWithExtension.split(".").pop(); - let name = nameWithExtension; - if (archiveEntries[name] !== void 0) { - let i = 1; - do { - name = `${nameWithoutExtension}_(${i}).${extension}`; - i++; - } while (archiveEntries[name] !== void 0); - } - events.emit("ARCHIVE_ADDED_FILE" /* ARCHIVE_ADDED_FILE */, { name, size: file.size }); - archiveEntries[name] = await file.bytes(); - } - }; - return ResultAsync.fromPromise( - asyncLoop(files2), - (error) => ensureError(error) - ).andThen(() => okAsync(archiveEntries)); -}; -var compress = (archiveEntries, archiveName) => { - const promiseZip = () => new Promise((resolve, reject) => { - zip(archiveEntries, (error, data) => { - if (error) reject(error); - resolve(data); - }); - }); - return ResultAsync.fromPromise( - promiseZip(), - (error) => ensureError(error) - ).andThen((bytes) => { - return okAsync( - new File( - [new Blob([bytes])], - archiveName, - { - type: "application/zip" - } - ) - ); - }).orElse((error) => errAsync(error)); -}; -var decompress = (zipFile) => { - const unzipPromise = async () => { - const fileBytes = await zipFile.bytes(); - return new Promise((resolve, reject) => { - unzip(fileBytes, (error, files2) => { - if (error) reject(error); - resolve(files2); - }); - }); - }; - return ResultAsync.fromPromise(unzipPromise(), (error) => ensureError(error)).andThen((files2) => { - const unzippedFiles = []; - for (const path in files2) { - unzippedFiles.push(new File([new Blob([files2[path]])], path)); - } - return okAsync(unzippedFiles); - }); -}; -var download = (downloadUrl, password) => { - let lufiResult; - if (password) { - lufiResult = fetchServerConfig(downloadUrl).andThen((config) => { - if (config.version.tag > "0.07.0") { - return ResultAsync.fromPromise( - hashPassword(password).then((hashedPassword) => { - return LufiFile.fromDownloadUrl(downloadUrl, hashedPassword); - }), - (error) => ensureError(error) - ); - } else { - return okAsync(LufiFile.fromDownloadUrl(downloadUrl, password)); - } - }); - } else { - lufiResult = okAsync(LufiFile.fromDownloadUrl(downloadUrl)); - } - return lufiResult.andThen((lufiFile) => { - const job = new LufiJob(lufiFile); - return ResultAsync.fromPromise( - new Promise( - (resolve, reject) => job.onMessage((event) => { - handleSocketResults(resolve, reject, job, event); - if (event.data.event === "CHUNK_DOWNLOADED" /* CHUNK_DOWNLOADED */) { - job.tmpChunks[event.data.chunk.index] = new Blob([ - event.data.chunk.buffer - ]); - } - if (event.data.event === "DOWNLOAD_COMPLETE" /* DOWNLOAD_COMPLETE */) { - job.tmpFile = new Blob(job.tmpChunks, { type: lufiFile.type }); - job.tmpChunks = []; - job.complete(); - } - }).requestMessage({ - action: 3 /* DOWNLOAD */, - args: { - lufiFile - } - }) - ), - (error) => ensureError(error) - ); - }); -}; -var infos = (downloadUrl, password) => { - let lufiResult; - if (password) { - lufiResult = fetchServerConfig(downloadUrl).andThen((config) => { - if (config.version.tag > "0.07.0") { - return ResultAsync.fromPromise( - hashPassword(password).then((hashedPassword) => { - return LufiFile.fromDownloadUrl(downloadUrl, hashedPassword); - }), - (error) => ensureError(error) - ); - } else { - return okAsync(LufiFile.fromDownloadUrl(downloadUrl, password)); - } - }); - } else { - lufiResult = okAsync(LufiFile.fromDownloadUrl(downloadUrl)); - } - return lufiResult.andThen((lufiFile) => okAsync(new LufiJob(lufiFile))).andThen( - (job) => ResultAsync.fromPromise( - new Promise((resolve, reject) => { - job.onMessage((event) => { - if (event.data.event === "INFOS_RETRIEVED" /* INFOS_RETRIEVED */) { - job.complete(); - resolve(job); - } - if (event.data.event === "OPERATION_FAILED" /* OPERATION_FAILED */) { - reject(event.data.error); - } - }).requestMessage({ - action: 4 /* INFOS */, - args: { lufiFile: job.lufiFile } - }); - }), - (error) => ensureError(error) - ) - ); -}; -var pause = (job) => { - job.status = 3 /* PAUSED */; - return okAsync( - job.requestMessage({ - action: 5 /* PAUSE */, - args: { lufiFile: job.lufiFile } - }) - ); -}; -var remove = (removeUrl, password) => { - const lufiFile = LufiFile.fromRemoveUrl(removeUrl, password); - const job = new LufiJob(lufiFile); - return ResultAsync.fromPromise( - new Promise((resolve, reject) => { - job.onMessage((event) => { - if (event.data.event === "FILE_REMOVED" /* FILE_REMOVED */) { - job.complete(); - resolve(job); - } - if (event.data.event === "OPERATION_FAILED" /* OPERATION_FAILED */) { - reject(event.data.error); - } - }).requestMessage({ action: 7 /* REMOVE */, args: { lufiFile } }); - }), - (error) => ensureError(error) - ); -}; -var resume = (job) => { - job.status = 2 /* ONGOING */; - return okAsync( - job.requestMessage({ - action: 8 /* RESUME */, - args: { lufiFile: job.lufiFile } - }) - ); -}; -var slice = (file, clientKey, chunkLength = CHUNK_LENGTH) => { - const totalChunks = Math.ceil(file.size / chunkLength); - files[clientKey].totalChunks = totalChunks; - if (totalChunks > 0) { - const chunks = []; - for (let i = 0; i < totalChunks; i++) { - const start = i * chunkLength; - const end = Math.min(start + chunkLength, file.size); - chunks.push(file.slice(start, end, file.type)); - } - return ok(chunks); - } else { - return err(new FileSlicingError()); - } -}; -var upload = (serverUrl, filesToUpload, delay = 0, delAtFirstView = false, zipped = false, zipName = "documents.zip", password = "", algo = 1 /* WebCrypto */) => { - const operations = []; - if (!zipped) { - filesToUpload.forEach((file) => { - operations.push(startUpload( - serverUrl, - file, - delay, - delAtFirstView, - zipped, - password, - algo - )); - }); - } else { - if (filesToUpload.length === 1 && filesToUpload[0].type === "application/zip") { - operations.push( - startUpload( - serverUrl, - filesToUpload[0], - delay, - delAtFirstView, - zipped, - password, - algo - ) - ); - } else { - operations.push( - addFilesToArchive(filesToUpload).andThen( - (archiveEntries) => compress(archiveEntries, zipName).andThen((file) => { - events.emit("ARCHIVE_CREATED" /* ARCHIVE_CREATED */, file); - return startUpload( - serverUrl, - file, - delay, - delAtFirstView, - zipped, - password, - algo - ); - }) - ) - ); - } - } - return ResultAsync.combine(operations); -}; -var startUpload = (serverUrl, file, delay, delAtFirstView, zipped, password, algo) => generateKey3( - algo -).andThen( - (clientKey) => { - return ResultAsync.fromPromise( - hashPassword(password).then((hashedPassword) => { - files[clientKey] = new LufiFile(serverUrl.toString(), { - delay, - delAtFirstView, - zipped, - password: hashedPassword, - name: file.name.split("/").pop(), - // Remove path from filename - size: file.size, - type: file.type, - keys: { client: clientKey, server: "" } - }); - return clientKey; - }), - (error) => ensureError(error) - ); - } -).andThen((clientKey) => { - const job = new LufiJob(files[clientKey]); - return slice(file, clientKey).asyncAndThen((chunks) => { - files[clientKey].uploadStatus = 4 /* QUEUED */; - const resultPromise = new Promise((resolve, reject) => { - job.onMessage((event) => { - handleSocketResults(resolve, reject, job, event); - switch (event.data.event) { - case "UPLOAD_COMPLETE" /* UPLOAD_COMPLETE */: - { - job.complete(); - job.lufiFile.uploadStatus = 1 /* COMPLETE */; - } - break; - } - }); - }); - const sendChunks = async (chunks2) => { - for (const [index, chunk] of chunks2.entries()) { - const buffer = await chunk.arrayBuffer(); - job.requestMessage( - { - action: 9 /* UPLOAD */, - args: { - chunk: { buffer, index }, - lufiFile: files[clientKey], - algo - } - }, - [buffer] - ); - } - }; - return ResultAsync.fromPromise( - sendChunks(chunks), - (error) => ensureError(error) - ).andThen( - () => ResultAsync.fromPromise(resultPromise, (error) => ensureError(error)) - ); - }).orElse((error) => errAsync(error)); -}); -var handleSocketResults = (resolve, reject, job, event) => { - if (event.data.event === "SOCKET_OPENED" /* SOCKET_OPENED */) { - resolve(job); - } - if (event.data.event === "OPERATION_FAILED" /* OPERATION_FAILED */) { - reject(event.data.error); - } -}; -var getFilesQueued = () => Object.values(files).filter( - (file) => file.uploadStatus === 4 /* QUEUED */ -); -var getFileIndexInQueue = (clientKey) => Object.keys(getFilesQueued()).indexOf(clientKey); -export { - CryptoAlgorithm, - ResultAsync, - err, - errAsync, - isSecureContext, - lufi_exports as lufi, - ok, - okAsync -}; +var Fr=Object.create;var Ze=Object.defineProperty;var Br=Object.getOwnPropertyDescriptor;var _r=Object.getOwnPropertyNames;var jr=Object.getPrototypeOf,Nr=Object.prototype.hasOwnProperty;var Jr=(t,e,r)=>e in t?Ze(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var Gr=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var zt=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),qr=(t,e)=>{for(var r in e)Ze(t,r,{get:e[r],enumerable:!0})},Zr=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of _r(e))!Nr.call(t,i)&&i!==r&&Ze(t,i,{get:()=>e[i],enumerable:!(n=Br(e,i))||n.enumerable});return t};var lt=(t,e,r)=>(r=t!=null?Fr(jr(t)):{},Zr(e||!t||!t.__esModule?Ze(r,"default",{value:t,enumerable:!0}):r,t));var d=(t,e,r)=>Jr(t,typeof e!="symbol"?e+"":e,r);var vt=zt((Jn,pt)=>{"use strict";var xe=typeof Reflect=="object"?Reflect:null,Ft=xe&&typeof xe.apply=="function"?xe.apply:function(e,r,n){return Function.prototype.apply.call(e,r,n)},He;xe&&typeof xe.ownKeys=="function"?He=xe.ownKeys:Object.getOwnPropertySymbols?He=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:He=function(e){return Object.getOwnPropertyNames(e)};function Hr(t){console&&console.warn&&console.warn(t)}var _t=Number.isNaN||function(e){return e!==e};function C(){C.init.call(this)}pt.exports=C;pt.exports.once=Vr;C.EventEmitter=C;C.prototype._events=void 0;C.prototype._eventsCount=0;C.prototype._maxListeners=void 0;var Bt=10;function We(t){if(typeof t!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}Object.defineProperty(C,"defaultMaxListeners",{enumerable:!0,get:function(){return Bt},set:function(t){if(typeof t!="number"||t<0||_t(t))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+t+".");Bt=t}});C.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};C.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||_t(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function jt(t){return t._maxListeners===void 0?C.defaultMaxListeners:t._maxListeners}C.prototype.getMaxListeners=function(){return jt(this)};C.prototype.emit=function(e){for(var r=[],n=1;n0&&(s=r[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var c=o[e];if(c===void 0)return!1;if(typeof c=="function")Ft(c,this,r);else for(var u=c.length,h=Zt(c,u),n=0;n0&&s.length>i&&!s.warned){s.warned=!0;var a=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");a.name="MaxListenersExceededWarning",a.emitter=t,a.type=e,a.count=s.length,Hr(a)}return t}C.prototype.addListener=function(e,r){return Nt(this,e,r,!1)};C.prototype.on=C.prototype.addListener;C.prototype.prependListener=function(e,r){return Nt(this,e,r,!0)};function Wr(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function Jt(t,e,r){var n={fired:!1,wrapFn:void 0,target:t,type:e,listener:r},i=Wr.bind(n);return i.listener=r,n.wrapFn=i,i}C.prototype.once=function(e,r){return We(r),this.on(e,Jt(this,e,r)),this};C.prototype.prependOnceListener=function(e,r){return We(r),this.prependListener(e,Jt(this,e,r)),this};C.prototype.removeListener=function(e,r){var n,i,o,s,a;if(We(r),i=this._events,i===void 0)return this;if(n=i[e],n===void 0)return this;if(n===r||n.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete i[e],i.removeListener&&this.emit("removeListener",e,n.listener||r));else if(typeof n!="function"){for(o=-1,s=n.length-1;s>=0;s--)if(n[s]===r||n[s].listener===r){a=n[s].listener,o=s;break}if(o<0)return this;o===0?n.shift():$r(n,o),n.length===1&&(i[e]=n[0]),i.removeListener!==void 0&&this.emit("removeListener",e,a||r)}return this};C.prototype.off=C.prototype.removeListener;C.prototype.removeAllListeners=function(e){var r,n,i;if(n=this._events,n===void 0)return this;if(n.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):n[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete n[e]),this;if(arguments.length===0){var o=Object.keys(n),s;for(i=0;i=0;i--)this.removeListener(e,r[i]);return this};function Gt(t,e,r){var n=t._events;if(n===void 0)return[];var i=n[e];return i===void 0?[]:typeof i=="function"?r?[i.listener||i]:[i]:r?Kr(i):Zt(i,i.length)}C.prototype.listeners=function(e){return Gt(this,e,!0)};C.prototype.rawListeners=function(e){return Gt(this,e,!1)};C.listenerCount=function(t,e){return typeof t.listenerCount=="function"?t.listenerCount(e):qt.call(t,e)};C.prototype.listenerCount=qt;function qt(t){var e=this._events;if(e!==void 0){var r=e[t];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}C.prototype.eventNames=function(){return this._eventsCount>0?He(this._events):[]};function Zt(t,e){for(var r=new Array(e),n=0;n{"use strict";var f={cipher:{},hash:{},keyexchange:{},mode:{},misc:{},codec:{},exception:{corrupt:function(t){this.toString=function(){return"CORRUPT: "+this.message},this.message=t},invalid:function(t){this.toString=function(){return"INVALID: "+this.message},this.message=t},bug:function(t){this.toString=function(){return"BUG: "+this.message},this.message=t},notReady:function(t){this.toString=function(){return"NOT READY: "+this.message},this.message=t}}};f.cipher.aes=function(t){this.s[0][0][0]||this.O();var e,r,n,i,o=this.s[0][4],s=this.s[1];e=t.length;var a=1;if(e!==4&&e!==6&&e!==8)throw new f.exception.invalid("invalid aes key size");for(this.b=[n=t.slice(0),i=[]],t=e;t<4*e+28;t++)r=n[t-1],(t%e===0||e===8&&t%e===4)&&(r=o[r>>>24]<<24^o[r>>16&255]<<16^o[r>>8&255]<<8^o[r&255],t%e===0&&(r=r<<8^r>>>24^a<<24,a=a<<1^283*(a>>7))),n[t]=n[t-e]^r;for(e=0;t;e++,t--)r=n[e&3?t:t-4],i[e]=4>=t||4>e?r:s[0][o[r>>>24]]^s[1][o[r>>16&255]]^s[2][o[r>>8&255]]^s[3][o[r&255]]};f.cipher.aes.prototype={encrypt:function(t){return nr(this,t,0)},decrypt:function(t){return nr(this,t,1)},s:[[[],[],[],[],[]],[[],[],[],[],[]]],O:function(){var t=this.s[0],e=this.s[1],r=t[4],n=e[4],i,o,s,a=[],c=[],u,h,l,p;for(i=0;256>i;i++)c[(a[i]=i<<1^283*(i>>7))^i]=i;for(o=s=0;!r[o];o^=u||1,s=c[s]||1)for(l=s^s<<1^s<<2^s<<3^s<<4,l=l>>8^l&255^99,r[o]=l,n[l]=o,h=a[i=a[u=a[o]]],p=16843009*h^65537*i^257*u^16843008*o,h=257*a[l]^16843008*l,i=0;4>i;i++)t[i][o]=h=h<<24^h>>>8,e[i][l]=p=p<<24^p>>>8;for(i=0;5>i;i++)t[i]=t[i].slice(0),e[i]=e[i].slice(0)}};function nr(t,e,r){if(e.length!==4)throw new f.exception.invalid("invalid aes block size");var n=t.b[r],i=e[0]^n[0],o=e[r?3:1]^n[1],s=e[2]^n[2];e=e[r?1:3]^n[3];var a,c,u,h=n.length/4-2,l,p=4,v=[0,0,0,0];a=t.s[r],t=a[0];var m=a[1],w=a[2],g=a[3],A=a[4];for(l=0;l>>24]^m[o>>16&255]^w[s>>8&255]^g[e&255]^n[p],c=t[o>>>24]^m[s>>16&255]^w[e>>8&255]^g[i&255]^n[p+1],u=t[s>>>24]^m[e>>16&255]^w[i>>8&255]^g[o&255]^n[p+2],e=t[e>>>24]^m[i>>16&255]^w[o>>8&255]^g[s&255]^n[p+3],p+=4,i=a,o=c,s=u;for(l=0;4>l;l++)v[r?3&-l:l]=A[i>>>24]<<24^A[o>>16&255]<<16^A[s>>8&255]<<8^A[e&255]^n[p++],a=i,i=o,o=s,s=e,e=a;return v}f.bitArray={bitSlice:function(t,e,r){return t=f.bitArray.$(t.slice(e/32),32-(e&31)).slice(1),r===void 0?t:f.bitArray.clamp(t,r-e)},extract:function(t,e,r){var n=Math.floor(-e-r&31);return((e+r-1^e)&-32?t[e/32|0]<<32-n^t[e/32+1|0]>>>n:t[e/32|0]>>>n)&(1<>e-1,1)),t},partial:function(t,e,r){return t===32?e:(r?e|0:e<<32-t)+1099511627776*t},getPartial:function(t){return Math.round(t/1099511627776)||32},equal:function(t,e){if(f.bitArray.bitLength(t)!==f.bitArray.bitLength(e))return!1;var r=0,n;for(n=0;n>>e),r=t[i]<<32-e;return i=t.length?t[t.length-1]:0,t=f.bitArray.getPartial(i),n.push(f.bitArray.partial(e+t&31,32>>24|r>>>8&65280|(r&65280)<<8|r<<24;return t}};f.codec.utf8String={fromBits:function(t){var e="",r=f.bitArray.bitLength(t),n,i;for(n=0;n>>8>>>8>>>8),i<<=8;return decodeURIComponent(escape(e))},toBits:function(t){t=unescape(encodeURIComponent(t));var e=[],r,n=0;for(r=0;r>>s)>>>i),sh){if(!e)try{return f.codec.base32hex.toBits(t)}catch{}throw new f.exception.invalid("this isn't "+l+"!")}a>i?(a-=i,o.push(u^h>>>a),u=h<>>i)>>>26),6>i?(s=t[r]<<6-i,i+=26,r++):(s<<=6,i-=6);for(;n.length&3&&!e;)n+="=";return n},toBits:function(t,e){t=t.replace(/\s|=/g,"");var r=[],n,i=0,o=f.codec.base64.B,s=0,a;for(e&&(o=o.substr(0,62)+"-_"),n=0;na)throw new f.exception.invalid("this isn't base64!");26>>i),s=a<<32-i):(i+=6,s^=a<<32-i)}return i&56&&r.push(f.bitArray.partial(i&56,s,1)),r}};f.codec.base64url={fromBits:function(t){return f.codec.base64.fromBits(t,1,1)},toBits:function(t){return f.codec.base64.toBits(t,1)}};f.hash.sha256=function(t){this.b[0]||this.O(),t?(this.F=t.F.slice(0),this.A=t.A.slice(0),this.l=t.l):this.reset()};f.hash.sha256.hash=function(t){return new f.hash.sha256().update(t).finalize()};f.hash.sha256.prototype={blockSize:512,reset:function(){return this.F=this.Y.slice(0),this.A=[],this.l=0,this},update:function(t){typeof t=="string"&&(t=f.codec.utf8String.toBits(t));var e,r=this.A=f.bitArray.concat(this.A,t);if(e=this.l,t=this.l=e+f.bitArray.bitLength(t),9007199254740991e;r++){for(i=!0,n=2;n*n<=r;n++)if(r%n===0){i=!1;break}i&&(8>e&&(this.Y[e]=t(Math.pow(r,.5))),this.b[e]=t(Math.pow(r,1/3)),e++)}}};function gt(t,e){var r,n,i,o=t.F,s=t.b,a=o[0],c=o[1],u=o[2],h=o[3],l=o[4],p=o[5],v=o[6],m=o[7];for(r=0;64>r;r++)16>r?n=e[r]:(n=e[r+1&15],i=e[r+14&15],n=e[r&15]=(n>>>7^n>>>18^n>>>3^n<<25^n<<14)+(i>>>17^i>>>19^i>>>10^i<<15^i<<13)+e[r&15]+e[r+9&15]|0),n=n+m+(l>>>6^l>>>11^l>>>25^l<<26^l<<21^l<<7)+(v^l&(p^v))+s[r],m=v,v=p,p=l,l=h+n|0,h=u,u=c,c=a,a=n+(c&u^h&(c^u))+(c>>>2^c>>>13^c>>>22^c<<30^c<<19^c<<10)|0;o[0]=o[0]+a|0,o[1]=o[1]+c|0,o[2]=o[2]+u|0,o[3]=o[3]+h|0,o[4]=o[4]+l|0,o[5]=o[5]+p|0,o[6]=o[6]+v|0,o[7]=o[7]+m|0}f.mode.ccm={name:"ccm",G:[],listenProgress:function(t){f.mode.ccm.G.push(t)},unListenProgress:function(t){t=f.mode.ccm.G.indexOf(t),-1c)throw new f.exception.invalid("ccm: iv must be at least 7 bytes");for(o=2;4>o&&u>>>8*o;o++);return o<15-c&&(o=15-c),r=a.clamp(r,8*(15-o)),e=f.mode.ccm.V(t,e,r,n,i,o),s=f.mode.ccm.C(t,s,r,e,i,o),a.concat(s.data,s.tag)},decrypt:function(t,e,r,n,i){i=i||64,n=n||[];var o=f.bitArray,s=o.bitLength(r)/8,u=o.bitLength(e),a=o.clamp(e,u-i),c=o.bitSlice(e,u-i),u=(u-i)/8;if(7>s)throw new f.exception.invalid("ccm: iv must be at least 7 bytes");for(e=2;4>e&&u>>>8*e;e++);if(e<15-s&&(e=15-s),r=o.clamp(r,8*(15-e)),a=f.mode.ccm.C(t,a,r,c,i,e),t=f.mode.ccm.V(t,a.data,r,n,i,e),!o.equal(a.tag,t))throw new f.exception.corrupt("ccm: tag doesn't match");return a.data},na:function(t,e,r,n,i,o){var s=[],a=f.bitArray,c=a.i;if(n=[a.partial(8,(e.length?64:0)|n-2<<2|o-1)],n=a.concat(n,r),n[3]|=i,n=t.encrypt(n),e.length)for(r=a.bitLength(e)/8,65279>=r?s=[a.partial(16,r)]:4294967295>=r&&(s=a.concat([a.partial(16,65534)],[r])),s=a.concat(s,e),e=0;ei||16h&&(f.mode.ccm.fa(s/c),h+=l),r[3]++,i=t.encrypt(r),e[s]^=i[0],e[s+1]^=i[1],e[s+2]^=i[2],e[s+3]^=i[3];return{tag:n,data:a.clamp(e,u)}}};f.mode.ocb2={name:"ocb2",encrypt:function(t,e,r,n,i,o){if(f.bitArray.bitLength(r)!==128)throw new f.exception.invalid("ocb iv must be 128 bits");var s,a=f.mode.ocb2.S,c=f.bitArray,u=c.i,h=[0,0,0,0];r=a(t.encrypt(r));var l,p=[];for(n=n||[],i=i||64,s=0;s+4i.bitLength(r)&&(a=o(a,n(a)),r=i.concat(r,[-2147483648,0,0,0])),s=o(s,r),t.encrypt(o(n(o(a,n(a))),s))},S:function(t){return[t[0]<<1^t[1]>>>31,t[1]<<1^t[2]>>>31,t[2]<<1^t[3]>>>31,t[3]<<1^135*(t[0]>>>31)]}};f.mode.gcm={name:"gcm",encrypt:function(t,e,r,n,i){var o=e.slice(0);return e=f.bitArray,n=n||[],t=f.mode.gcm.C(!0,t,o,n,r,i||128),e.concat(t.data,t.tag)},decrypt:function(t,e,r,n,i){var o=e.slice(0),s=f.bitArray,a=s.bitLength(o);if(i=i||128,n=n||[],i<=a?(e=s.bitSlice(o,a-i),o=s.bitSlice(o,0,a-i)):(e=o,o=[]),t=f.mode.gcm.C(!1,t,o,n,r,i),!s.equal(t.tag,e))throw new f.exception.corrupt("gcm: tag doesn't match");return t.data},ka:function(t,e){var r,n,i,o,s,a=f.bitArray.i;for(i=[0,0,0,0],o=e.slice(0),r=0;128>r;r++){for((n=(t[Math.floor(r/32)]&1<<31-r%32)!==0)&&(i=a(i,o)),s=(o[3]&1)!==0,n=3;0>>1|(o[n-1]&1)<<31;o[0]>>>=1,s&&(o[0]^=-520093696)}return i},j:function(t,e,r){var n,i=r.length;for(e=e.slice(0),n=0;ni&&(t=e.hash(t)),n=0;nn||0>r)throw new f.exception.invalid("invalid params to pbkdf2");typeof t=="string"&&(t=f.codec.utf8String.toBits(t)),typeof e=="string"&&(e=f.codec.utf8String.toBits(e)),i=i||f.misc.hmac,t=new i(t);var o,s,a,c,u=[],h=f.bitArray;for(c=1;32*u.length<(n||1);c++){for(i=o=t.encrypt(h.concat(e,[c])),s=1;ss;s++)i.push(4294967296*Math.random()|0);for(s=0;s=1<this.o&&(this.o=o),this.P++,this.b=f.hash.sha256.hash(this.b.concat(i)),this.L=new f.cipher.aes(this.b),n=0;4>n&&(this.h[n]=this.h[n]+1|0,!this.h[n]);n++);}for(n=0;n>>1;this.c[s].update([n,this.N++,2,e,o,t.length].concat(t))}break;case"string":e===void 0&&(e=t.length),this.c[s].update([n,this.N++,3,e,o,t.length]),this.c[s].update(t);break;default:c=1}if(c)throw new f.exception.bug("random: addEntropy only supports number, array of numbers or string");this.m[s]+=e,this.f+=e,a===this.u&&(this.isReady()!==this.u&&ir("seeded",Math.max(this.o,this.f)),ir("progress",this.getProgress()))},isReady:function(t){return t=this.T[t!==void 0?t:this.M],this.o&&this.o>=t?this.m[0]>this.ba&&new Date().valueOf()>this.Z?this.J|this.I:this.I:this.f>=t?this.J|this.u:this.u},getProgress:function(t){return t=this.T[t||this.M],this.o>=t||this.f>t?1:this.f/t},startCollectors:function(){if(!this.D){if(this.a={loadTimeCollector:ze(this,this.ma),mouseCollector:ze(this,this.oa),keyboardCollector:ze(this,this.la),accelerometerCollector:ze(this,this.ea),touchCollector:ze(this,this.qa)},window.addEventListener)window.addEventListener("load",this.a.loadTimeCollector,!1),window.addEventListener("mousemove",this.a.mouseCollector,!1),window.addEventListener("keypress",this.a.keyboardCollector,!1),window.addEventListener("devicemotion",this.a.accelerometerCollector,!1),window.addEventListener("touchmove",this.a.touchCollector,!1);else if(document.attachEvent)document.attachEvent("onload",this.a.loadTimeCollector),document.attachEvent("onmousemove",this.a.mouseCollector),document.attachEvent("keypress",this.a.keyboardCollector);else throw new f.exception.bug("can't attach event");this.D=!0}},stopCollectors:function(){this.D&&(window.removeEventListener?(window.removeEventListener("load",this.a.loadTimeCollector,!1),window.removeEventListener("mousemove",this.a.mouseCollector,!1),window.removeEventListener("keypress",this.a.keyboardCollector,!1),window.removeEventListener("devicemotion",this.a.accelerometerCollector,!1),window.removeEventListener("touchmove",this.a.touchCollector,!1)):document.detachEvent&&(document.detachEvent("onload",this.a.loadTimeCollector),document.detachEvent("onmousemove",this.a.mouseCollector),document.detachEvent("keypress",this.a.keyboardCollector)),this.D=!1)},addEventListener:function(t,e){this.K[t][this.ga++]=e},removeEventListener:function(t,e){var r,n,i=this.K[t],o=[];for(n in i)i.hasOwnProperty(n)&&i[n]===e&&o.push(n);for(r=0;re&&(t.h[e]=t.h[e]+1|0,!t.h[e]);e++);return t.L.encrypt(t.h)}function ze(t,e){return function(){e.apply(t,arguments)}}f.random=new f.prng(6);e:try{if(Xe=typeof De<"u"&&De.exports){try{Qe=Gr("crypto")}catch{Qe=null}Xe=Ye=Qe}if(Xe&&Ye.randomBytes)Fe=Ye.randomBytes(128),Fe=new Uint32Array(new Uint8Array(Fe).buffer),f.random.addEntropy(Fe,1024,"crypto['randomBytes']");else if(typeof window<"u"&&typeof Uint32Array<"u"){if(Be=new Uint32Array(32),window.crypto&&window.crypto.getRandomValues)window.crypto.getRandomValues(Be);else if(window.msCrypto&&window.msCrypto.getRandomValues)window.msCrypto.getRandomValues(Be);else break e;f.random.addEntropy(Be,1024,"crypto['getRandomValues']")}}catch(t){typeof window<"u"&&window.console&&(console.log("There was an error collecting entropy from the browser:"),console.log(t))}var Fe,Ye,Be,Xe,Qe;f.json={defaults:{v:1,iter:1e4,ks:128,ts:64,mode:"ccm",adata:"",cipher:"aes"},ja:function(t,e,r,n){r=r||{},n=n||{};var i=f.json,o=i.g({iv:f.random.randomWords(4,0)},i.defaults),s;if(i.g(o,r),r=o.adata,typeof o.salt=="string"&&(o.salt=f.codec.base64.toBits(o.salt)),typeof o.iv=="string"&&(o.iv=f.codec.base64.toBits(o.iv)),!f.mode[o.mode]||!f.cipher[o.cipher]||typeof t=="string"&&100>=o.iter||o.ts!==64&&o.ts!==96&&o.ts!==128||o.ks!==128&&o.ks!==192&&o.ks!==256||2>o.iv.length||4=e.iter||e.ts!==64&&e.ts!==96&&e.ts!==128||e.ks!==128&&e.ks!==192&&e.ks!==256||!e.iv||2>e.iv.length||4Tr,cancel:()=>kn,compress:()=>Ir,decompress:()=>Mn,download:()=>Un,events:()=>Tt,getFileIndexInQueue:()=>jn,infos:()=>Rn,pause:()=>Tn,remove:()=>In,resume:()=>zn,upload:()=>Bn});var Rr=lt(vt());var Xr={withStackTrace:!1},$t=(t,e,r=Xr)=>{let n=e.isOk()?{type:"Ok",value:e.value}:{type:"Err",value:e.error},i=r.withStackTrace?new Error().stack:void 0;return{data:n,message:t,stack:i}};function Ae(t,e,r,n){function i(o){return o instanceof r?o:new r(function(s){s(o)})}return new(r||(r=Promise))(function(o,s){function a(h){try{u(n.next(h))}catch(l){s(l)}}function c(h){try{u(n.throw(h))}catch(l){s(l)}}function u(h){h.done?o(h.value):i(h.value).then(a,c)}u((n=n.apply(t,[])).next())})}function Wt(t){var e=typeof Symbol=="function"&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&typeof t.length=="number")return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function me(t){return this instanceof me?(this.v=t,this):new me(t)}function Qr(t,e,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=r.apply(t,e||[]),i,o=[];return i={},s("next"),s("throw"),s("return"),i[Symbol.asyncIterator]=function(){return this},i;function s(p){n[p]&&(i[p]=function(v){return new Promise(function(m,w){o.push([p,v,m,w])>1||a(p,v)})})}function a(p,v){try{c(n[p](v))}catch(m){l(o[0][3],m)}}function c(p){p.value instanceof me?Promise.resolve(p.value.v).then(u,h):l(o[0][2],p)}function u(p){a("next",p)}function h(p){a("throw",p)}function l(p,v){p(v),o.shift(),o.length&&a(o[0][0],o[0][1])}}function en(t){var e,r;return e={},n("next"),n("throw",function(i){throw i}),n("return"),e[Symbol.iterator]=function(){return this},e;function n(i,o){e[i]=t[i]?function(s){return(r=!r)?{value:me(t[i](s)),done:i==="return"}:o?o(s):s}:o}}function tn(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof Wt=="function"?Wt(t):t[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(o){r[o]=t[o]&&function(s){return new Promise(function(a,c){s=t[o](s),i(a,c,s.done,s.value)})}}function i(o,s,a,c){Promise.resolve(c).then(function(u){o({value:u,done:a})},s)}}var b=class t{constructor(e){this._promise=e}static fromSafePromise(e){let r=e.then(n=>new Y(n));return new t(r)}static fromPromise(e,r){let n=e.then(i=>new Y(i)).catch(i=>new X(r(i)));return new t(n)}static fromThrowable(e,r){return(...n)=>new t(Ae(this,void 0,void 0,function*(){try{return new Y(yield e(...n))}catch(i){return new X(r?r(i):i)}}))}static combine(e){return rn(e)}static combineWithAllErrors(e){return nn(e)}map(e){return new t(this._promise.then(r=>Ae(this,void 0,void 0,function*(){return r.isErr()?new X(r.error):new Y(yield e(r.value))})))}andThrough(e){return new t(this._promise.then(r=>Ae(this,void 0,void 0,function*(){if(r.isErr())return new X(r.error);let n=yield e(r.value);return n.isErr()?new X(n.error):new Y(r.value)})))}andTee(e){return new t(this._promise.then(r=>Ae(this,void 0,void 0,function*(){if(r.isErr())return new X(r.error);try{yield e(r.value)}catch{}return new Y(r.value)})))}mapErr(e){return new t(this._promise.then(r=>Ae(this,void 0,void 0,function*(){return r.isOk()?new Y(r.value):new X(yield e(r.error))})))}andThen(e){return new t(this._promise.then(r=>{if(r.isErr())return new X(r.error);let n=e(r.value);return n instanceof t?n._promise:n}))}orElse(e){return new t(this._promise.then(r=>Ae(this,void 0,void 0,function*(){return r.isErr()?e(r.error):new Y(r.value)})))}match(e,r){return this._promise.then(n=>n.match(e,r))}unwrapOr(e){return this._promise.then(r=>r.unwrapOr(e))}safeUnwrap(){return Qr(this,arguments,function*(){return yield me(yield me(yield*en(tn(yield me(this._promise.then(r=>r.safeUnwrap()))))))})}then(e,r){return this._promise.then(e,r)}},G=t=>new b(Promise.resolve(new Y(t))),Z=t=>new b(Promise.resolve(new X(t))),Gn=b.fromPromise,qn=b.fromSafePromise,Zn=b.fromThrowable,Kt=t=>{let e=se([]);for(let r of t)if(r.isErr()){e=Q(r.error);break}else e.map(n=>n.push(r.value));return e},rn=t=>b.fromSafePromise(Promise.all(t)).andThen(Kt),Vt=t=>{let e=se([]);for(let r of t)r.isErr()&&e.isErr()?e.error.push(r.error):r.isErr()&&e.isOk()?e=Q([r.error]):r.isOk()&&e.isOk()&&e.value.push(r.value);return e},nn=t=>b.fromSafePromise(Promise.all(t)).andThen(Vt),mt;(function(t){function e(i,o){return(...s)=>{try{let a=i(...s);return se(a)}catch(a){return Q(o?o(a):a)}}}t.fromThrowable=e;function r(i){return Kt(i)}t.combine=r;function n(i){return Vt(i)}t.combineWithAllErrors=n})(mt||(mt={}));var se=t=>new Y(t);function Q(t){return new X(t)}var Y=class{constructor(e){this.value=e}isOk(){return!0}isErr(){return!this.isOk()}map(e){return se(e(this.value))}mapErr(e){return se(this.value)}andThen(e){return e(this.value)}andThrough(e){return e(this.value).map(r=>this.value)}andTee(e){try{e(this.value)}catch{}return se(this.value)}orElse(e){return se(this.value)}asyncAndThen(e){return e(this.value)}asyncAndThrough(e){return e(this.value).map(()=>this.value)}asyncMap(e){return b.fromSafePromise(e(this.value))}unwrapOr(e){return this.value}match(e,r){return e(this.value)}safeUnwrap(){let e=this.value;return function*(){return e}()}_unsafeUnwrap(e){return this.value}_unsafeUnwrapErr(e){throw $t("Called `_unsafeUnwrapErr` on an Ok",this,e)}},X=class{constructor(e){this.error=e}isOk(){return!1}isErr(){return!this.isOk()}map(e){return Q(this.error)}mapErr(e){return Q(e(this.error))}andThrough(e){return Q(this.error)}andTee(e){return Q(this.error)}andThen(e){return Q(this.error)}orElse(e){return e(this.error)}asyncAndThen(e){return Z(this.error)}asyncAndThrough(e){return Z(this.error)}asyncMap(e){return Z(this.error)}unwrapOr(e){return e}match(e,r){return r(this.error)}safeUnwrap(){let e=this.error;return function*(){throw yield Q(e),new Error("Do not use this generator out of `safeTry`")}()}_unsafeUnwrap(e){throw $t("Called `_unsafeUnwrap` on an Err",this,e)}_unsafeUnwrapErr(e){return this.error}},Hn=mt.fromThrowable;var ne=class t{constructor(e,r){d(this,"actionToken","");d(this,"chunksReady",0);d(this,"createdAt",0);d(this,"delay",0);d(this,"delAtFirstView",!1);d(this,"keys",{client:"",server:""});d(this,"name","");d(this,"password","");d(this,"queueIndex",0);d(this,"serverUrl");d(this,"size",0);d(this,"uploadStatus",3);d(this,"totalChunks",0);d(this,"type","");d(this,"zipped",!1);this.serverUrl=e,Object.assign(this,r)}downloadUrl(){let e=new URL(this.serverUrl);return new URL(`${e.origin+e.pathname}r/${this.keys.server}#${this.keys.client}`)}removeUrl(){let e=new URL(this.serverUrl);return new URL(`${e.origin+e.pathname}d/${this.keys.server}/${this.actionToken}`)}static fromDownloadUrl(e,r=""){let n=e.pathname.split("r/"),i={client:e.hash.slice(1).split("&")[0],server:n[1]};return new t(e.origin+n[0],{keys:i,password:r})}static fromRemoveUrl(e,r=""){let n=e.pathname.split("d/"),i=n[1].split("/"),o={client:"",server:i[0]};return new t(e.origin+n[0],{keys:o,password:r,actionToken:i[1]})}};var er=lt(vt());var ae=class extends Error{constructor(r,n={}){let{cause:i,context:o}=n;super(r,{cause:i});d(this,"context");this.name=this.constructor.name,this.context=o}};var $e=class extends ae{constructor(){super(...arguments);d(this,"message","Unable to connect. Is the computer able to access the url?")}};var Ke=class extends ae{constructor(){super(...arguments);d(this,"message","The server returned an error")}};var R=t=>{if(t instanceof Error)return t;let e="[Unable to stringify the thrown value]";try{e=JSON.stringify(t)}catch{}return new Error(e)},yt=t=>{let e=t.href.match(/(.*?)\/?(?:[dr]{1}\/|login\/?|files\/?)/),r=e&&e[1]?e[1]:t.origin;return b.fromPromise(fetch(r+"/about/config"),n=>new $e(void 0,{cause:R(n)})).andThen(n=>n.ok?b.fromPromise(n.json(),i=>R(i)):Z(new Ke(void 0,{context:n.statusText})))},Xt=()=>typeof Deno<"u",on=()=>Xt()||typeof window<"u"&&(window.isSecureContext||window.location.protocol==="https:"),Qt=t=>Xt()?new URL(`./worker/${t}.ts`,new URL(".",import.meta.url).href):new URL(import.meta.resolve(`./${t==="main"?`worker/${t}`:t}.js`)),Ve=async t=>t?Array.from(new Uint8Array(await crypto.subtle.digest("SHA-512",new TextEncoder().encode(t)))).map(e=>e.toString(16).padStart(2,"0")).join(""):"";var ve=class{constructor(e){d(this,"events",new er.default);d(this,"lufiFile");d(this,"status",2);d(this,"tmpFile");d(this,"tmpChunks",[]);d(this,"worker");d(this,"isTerminated",!1);d(this,"complete",()=>{this.status=0,this.events.emit("JOB_TERMINATED")});d(this,"hasFailed",()=>this.status===1);d(this,"onError",e=>(this.worker.onerror=r=>{e(r)},this));d(this,"onMessage",e=>(this.worker.onmessage=r=>{e&&e(r);let n=r.data.event;n&&(n==="FILE_UPDATED"?Object.assign(this.lufiFile,r.data.lufiFile):this.dispatchEvent(n,r.data.error))},this));d(this,"onMessageError",e=>(this.worker.onmessageerror=r=>{e(r)},this));d(this,"onProgress",e=>(this.events.on("CHUNK_UPLOADED",()=>{e()}),this.events.on("CHUNK_DOWNLOADED",()=>{e()}),this));d(this,"requestMessage",(e,r=[])=>(this.worker.postMessage(e,r),this));d(this,"terminate",()=>(this.worker.terminate(),this));d(this,"waitForCompletion",()=>this.isTerminated?this.status===0?G(this):Z(R("Job has failed")):b.fromPromise(new Promise((e,r)=>{this.events.once("OPERATION_FAILED",n=>{r(n)}),this.events.once("JOB_TERMINATED",()=>{this.status===0&&e(this)})}),e=>R(e)));d(this,"dispatchEvent",(e,r)=>{this.events.emit(e,r)});this.worker=new Worker(Qt("main"),{type:"module"}),this.lufiFile=e,this.events.once("JOB_TERMINATED",()=>{this.isTerminated=!0,this.terminate()}),this.events.once("OPERATION_FAILED",r=>{this.status=1,this.lufiFile.uploadStatus=2,this.events.emit("JOB_TERMINATED",r)}),this.onError(r=>console.error(r.error))}};var Le=(r=>(r[r.Sjcl=0]="Sjcl",r[r.WebCrypto=1]="WebCrypto",r))(Le||{});var be=class{constructor(e,r){if(!e||e.length!=64)throw Error("Charset must contain 64 characters");this._charset=e,this._noPadding=!!r,this._valid=new RegExp("^["+this._charset.replace("-","\\-")+"]+={0,2}$")}Encode(e){let r=e.byteLength;if(!r)return"";let n=new Uint8Array(e),i="";for(let o=0;o>2]+this._charset[(n[o]&3)<<4|n[o+1]>>4]+this._charset[(n[o+1]&15)<<2|n[o+2]>>6]+this._charset[n[o+2]&63];return r%3==2?(i=i.substring(0,i.length-1),this._noPadding||(i+="=")):r%3==1&&(i=i.substring(0,i.length-2),this._noPadding||(i+="==")),i}Decode(e){if(e=(e||"").replace(/[\s]/g,""),!e)return new ArrayBuffer(0);if(!this._valid.test(e))throw Error("Invalid base64 input sequence");let r=Math.floor(e.length*.75);e[e.length-2]=="="?r-=2:e[e.length-1]=="="&&r--;let n=new Uint8Array(r),i,o,s,a,c=0,u=0;for(;c>4,n[c++]=(o&15)<<4|s>>2,n[c++]=(s&3)<<6|a;return n.buffer}};var Li=new be("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/");var fn=new be("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",!0);function dt(t){return fn.Encode(t)}var Et=lt(sr());var he=class extends ae{};var Ce=class extends he{constructor(){super(...arguments);d(this,"message","Unable to decrypt the provided data")}};var ar=()=>{try{return G(Et.default.codec.base64.fromBits(Et.default.random.randomWords(8,10)))}catch(t){return Z(new he("Unable to generate a random key",{cause:R(t)}))}};var fr=()=>b.fromPromise(new Promise(t=>crypto.subtle.generateKey({name:"AES-GCM",length:256},!0,["encrypt","decrypt"]).then(e=>crypto.subtle.exportKey("raw",e).then(r=>t(dt(r))).catch(r=>Z(new Ce(void 0,{cause:R(r)})))).catch(e=>Z(new Ce(void 0,{cause:R(e)})))),t=>new he("Unable to base64 encode the url",{cause:R(t)}));var cr=(t=1)=>t===0?ar():fr();var et=class extends ae{constructor(){super(...arguments);d(this,"message","An error occured while dealing with a file")}};var tt=class extends et{constructor(){super(...arguments);d(this,"message","An error occured while operating on a file")}};var rt=class extends tt{constructor(){super(...arguments);d(this,"message","An error occured while slicing a file")}};var ur={},pn=function(t,e,r,n,i){var o=new Worker(ur[e]||(ur[e]=URL.createObjectURL(new Blob([t+';addEventListener("error",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'],{type:"text/javascript"}))));return o.onmessage=function(s){var a=s.data,c=a.$e$;if(c){var u=new Error(c[0]);u.code=c[1],u.stack=c[2],i(u,null)}else i(null,a)},o.postMessage(r,n),o},S=Uint8Array,H=Uint16Array,Ne=Int32Array,ke=new S([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),Me=new S([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),_e=new S([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),mr=function(t,e){for(var r=new H(31),n=0;n<31;++n)r[n]=e+=1<>1|(D&21845)<<1,le=(le&52428)>>2|(le&13107)<<2,le=(le&61680)>>4|(le&3855)<<4,je[D]=((le&65280)>>8|(le&255)<<8)>>1;var le,D,te=function(t,e,r){for(var n=t.length,i=0,o=new H(e);i>c]=u}else for(a=new H(n),i=0;i>15-t[i]);return a},pe=new S(288);for(D=0;D<144;++D)pe[D]=8;var D;for(D=144;D<256;++D)pe[D]=9;var D;for(D=256;D<280;++D)pe[D]=7;var D;for(D=280;D<288;++D)pe[D]=8;var D,Se=new S(32);for(D=0;D<32;++D)Se[D]=5;var D,wr=te(pe,9,0),Er=te(pe,9,1),xr=te(Se,5,0),Ar=te(Se,5,1),it=function(t){for(var e=t[0],r=1;re&&(e=t[r]);return e},ee=function(t,e,r){var n=e/8|0;return(t[n]|t[n+1]<<8)>>(e&7)&r},ot=function(t,e){var r=e/8|0;return(t[r]|t[r+1]<<8|t[r+2]<<16)>>(e&7)},Je=function(t){return(t+7)/8|0},ye=function(t,e,r){return(e==null||e<0)&&(e=0),(r==null||r>t.length)&&(r=t.length),new S(t.subarray(e,r))};var Lr=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],_=function(t,e,r){var n=new Error(e||Lr[t]);if(n.code=t,Error.captureStackTrace&&Error.captureStackTrace(n,_),!r)throw n;return n},br=function(t,e,r,n){var i=t.length,o=n?n.length:0;if(!i||e.f&&!e.l)return r||new S(0);var s=!r,a=s||e.i!=2,c=e.i;s&&(r=new S(i*3));var u=function(Re){var Te=r.length;if(Re>Te){var Ee=new S(Math.max(Te*2,Re));Ee.set(r),r=Ee}},h=e.f||0,l=e.p||0,p=e.b||0,v=e.l,m=e.d,w=e.m,g=e.n,A=i*8;do{if(!v){h=ee(t,l,1);var T=ee(t,l+1,3);if(l+=3,T)if(T==1)v=Er,m=Ar,w=9,g=5;else if(T==2){var I=ee(t,l,31)+257,k=ee(t,l+10,15)+4,x=I+ee(t,l+5,31)+1;l+=14;for(var y=new S(x),M=new S(19),O=0;O>4;if(L<16)y[O++]=L;else{var B=0,U=0;for(L==16?(U=3+ee(t,l,3),l+=2,B=y[O-1]):L==17?(U=3+ee(t,l,7),l+=3):L==18&&(U=11+ee(t,l,127),l+=7);U--;)y[O++]=B}}var W=y.subarray(0,I),J=y.subarray(I);w=it(W),g=it(J),v=te(W,w,1),m=te(J,g,1)}else _(1);else{var L=Je(l)+4,E=t[L-4]|t[L-3]<<8,P=L+E;if(P>i){c&&_(0);break}a&&u(p+E),r.set(t.subarray(L,P),p),e.b=p+=E,e.p=l=P*8,e.f=h;continue}if(l>A){c&&_(0);break}}a&&u(p+131072);for(var Ue=(1<>4;if(l+=B&15,l>A){c&&_(0);break}if(B||_(2),$<256)r[p++]=$;else if($==256){ue=l,v=null;break}else{var K=$-254;if($>264){var O=$-257,F=ke[O];K=ee(t,l,(1<>4;oe||_(3),l+=oe&15;var J=gr[ge];if(ge>3){var F=Me[ge];J+=ot(t,l)&(1<A){c&&_(0);break}a&&u(p+131072);var we=p+K;if(p>8},Oe=function(t,e,r){r<<=e&7;var n=e/8|0;t[n]|=r,t[n+1]|=r>>8,t[n+2]|=r>>16},st=function(t,e){for(var r=[],n=0;np&&(p=o[n].s);var v=new H(p+1),m=ft(r[h-1],v,0);if(m>e){var n=0,w=0,g=m-e,A=1<e)w+=A-(1<>=g;w>0;){var L=o[n].s;v[L]=0&&w;--n){var E=o[n].s;v[E]==e&&(--v[E],++w)}m=e}return{t:new S(v),l:m}},ft=function(t,e,r){return t.s==-1?Math.max(ft(t.l,e,r+1),ft(t.r,e,r+1)):e[t.s]=r},Lt=function(t){for(var e=t.length;e&&!t[--e];);for(var r=new H(++e),n=0,i=t[0],o=1,s=function(c){r[n++]=c},a=1;a<=e;++a)if(t[a]==i&&a!=e)++o;else{if(!i&&o>2){for(;o>138;o-=138)s(32754);o>2&&(s(o>10?o-11<<5|28690:o-3<<5|12305),o=0)}else if(o>3){for(s(i),--o;o>6;o-=6)s(8304);o>2&&(s(o-3<<5|8208),o=0)}for(;o--;)s(i);o=1,i=t[a]}return{c:r.subarray(0,n),n:e}},Pe=function(t,e){for(var r=0,n=0;n>8,t[i+2]=t[i]^255,t[i+3]=t[i+1]^255;for(var o=0;o4&&!M[_e[z-1]];--z);var re=u+5<<3,j=Pe(i,pe)+Pe(o,Se)+s,N=Pe(i,p)+Pe(o,w)+s+14+3*z+Pe(k,M)+2*k[16]+3*k[17]+7*k[18];if(c>=0&&re<=j&&re<=N)return Pt(e,h,t.subarray(c,c+u));var B,U,W,J;if(fe(e,h,1+(N15&&(fe(e,h,$[x]>>5&127),h+=$[x]>>12)}}else B=wr,U=pe,W=xr,J=Se;for(var x=0;x255){var K=F>>18&31;Oe(e,h,B[K+257]),h+=U[K+257],K>7&&(fe(e,h,F>>23&31),h+=ke[K]);var oe=F&31;Oe(e,h,W[oe]),h+=J[oe],oe>3&&(Oe(e,h,F>>5&8191),h+=Me[oe])}else Oe(e,h,B[F]),h+=U[F]}return Oe(e,h,B[256]),h+U[256]},Dr=new Ne([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),St=new S(0),Cr=function(t,e,r,n,i,o){var s=o.z||t.length,a=new S(n+s+5*(1+Math.ceil(s/7e3))+i),c=a.subarray(n,a.length-i),u=o.l,h=(o.r||0)&7;if(e){h&&(c[0]=o.r>>3);for(var l=Dr[e-1],p=l>>13,v=l&8191,m=(1<7e3||M>24576)&&(B>423||!u)){h=bt(t,c,0,E,P,I,x,M,z,y-z,h),M=k=x=0,z=y;for(var U=0;U<286;++U)P[U]=0;for(var U=0;U<30;++U)I[U]=0}var W=2,J=0,Ue=v,V=j-N&32767;if(B>2&&re==L(y-V))for(var ue=Math.min(p,B)-1,$=Math.min(32767,y),K=Math.min(258,B);V<=$&&--Ue&&j!=N;){if(t[y+W]==t[y+W-V]){for(var F=0;FW){if(W=F,J=V,F>ue)break;for(var oe=Math.min(V,F-2),ge=0,U=0;Uge&&(ge=qe,N=we)}}}j=N,N=w[j],V+=j-N&32767}if(J){E[M++]=268435456|at[W]<<18|At[J];var Re=at[W]&31,Te=At[J]&31;x+=ke[Re]+Me[Te],++P[257+Re],++I[Te],O=y+W,++k}else E[M++]=t[y],++P[t[y]]}}for(y=Math.max(y,O);y=s&&(c[h/8|0]=u,Ee=s),h=Pt(c,h+1,t.subarray(y,Ee))}o.i=s}return ye(a,0,n+Je(h)+i)},vn=function(){for(var t=new Int32Array(256),e=0;e<256;++e){for(var r=e,n=9;--n;)r=(r&1&&-306674912)^r>>>1;t[e]=r}return t}(),mn=function(){var t=-1;return{p:function(e){for(var r=t,n=0;n>>8;t=r},d:function(){return~t}}};var Or=function(t,e,r,n,i){if(!i&&(i={l:1},e.dictionary)){var o=e.dictionary.subarray(-32768),s=new S(o.length+t.length);s.set(o),s.set(t,o.length),t=s,i.w=o.length}return Cr(t,e.level==null?6:e.level,e.mem==null?i.l?Math.ceil(Math.max(8,Math.min(13,Math.log(t.length)))*1.5):20:12+e.mem,r,n,i)},kt=function(t,e){var r={};for(var n in t)r[n]=t[n];for(var n in e)r[n]=e[n];return r},hr=function(t,e,r){for(var n=t(),i=t.toString(),o=i.slice(i.indexOf("[")+1,i.lastIndexOf("]")).replace(/\s+/g,"").split(","),s=0;s>>0},xt=function(t,e){return ie(t,e)+ie(t,e+4)*4294967296},q=function(t,e,r){for(;r;++e)t[e]=r,r>>>=8};function En(t,e,r){return r||(r=e,e={}),typeof r!="function"&&_(7),Sr(t,e,[wn],function(n){return ut(Mt(n.data[0],n.data[1]))},0,r)}function Mt(t,e){return Or(t,e||{},0,0)}function xn(t,e,r){return r||(r=e,e={}),typeof r!="function"&&_(7),Sr(t,e,[gn],function(n){return ut(Ut(n.data[0],Pr(n.data[1])))},1,r)}function Ut(t,e){return br(t,{i:2},e&&e.out,e&&e.dictionary)}var kr=function(t,e,r,n){for(var i in t){var o=t[i],s=e+i,a=n;Array.isArray(o)&&(a=kt(n,o[1]),o=o[0]),o instanceof S?r[s]=[o,a]:(r[s+="/"]=[new S(0),a],kr(o,s,r,n))}},lr=typeof TextEncoder<"u"&&new TextEncoder,Dt=typeof TextDecoder<"u"&&new TextDecoder,An=0;try{Dt.decode(St,{stream:!0}),An=1}catch{}var Ln=function(t){for(var e="",r=0;;){var n=t[r++],i=(n>127)+(n>223)+(n>239);if(r+i>t.length)return{s:e,r:ye(t,r-1)};i?i==3?(n=((n&15)<<18|(t[r++]&63)<<12|(t[r++]&63)<<6|t[r++]&63)-65536,e+=String.fromCharCode(55296|n>>10,56320|n&1023)):i&1?e+=String.fromCharCode((n&31)<<6|t[r++]&63):e+=String.fromCharCode((n&15)<<12|(t[r++]&63)<<6|t[r++]&63):e+=String.fromCharCode(n)}};function pr(t,e){if(e){for(var r=new S(t.length),n=0;n>1)),s=0,a=function(h){o[s++]=h},n=0;no.length){var c=new S(s+8+(i-n<<1));c.set(o),o=c}var u=t.charCodeAt(n);u<128||e?a(u):u<2048?(a(192|u>>6),a(128|u&63)):u>55295&&u<57344?(u=65536+(u&1047552)|t.charCodeAt(++n)&1023,a(240|u>>18),a(128|u>>12&63),a(128|u>>6&63),a(128|u&63)):(a(224|u>>12),a(128|u>>6&63),a(128|u&63))}return ye(o,0,s)}function bn(t,e){if(e){for(var r="",n=0;n65535&&_(9),e+=n+4}return e},vr=function(t,e,r,n,i,o,s,a){var c=n.length,u=r.extra,h=a&&a.length,l=Ct(u);q(t,e,s!=null?33639248:67324752),e+=4,s!=null&&(t[e++]=20,t[e++]=r.os),t[e]=20,e+=2,t[e++]=r.flag<<1|(o<0&&8),t[e++]=i&&8,t[e++]=r.compression&255,t[e++]=r.compression>>8;var p=new Date(r.mtime==null?Date.now():r.mtime),v=p.getFullYear()-1980;if((v<0||v>119)&&_(10),q(t,e,v<<25|p.getMonth()+1<<21|p.getDate()<<16|p.getHours()<<11|p.getMinutes()<<5|p.getSeconds()>>1),e+=4,o!=-1&&(q(t,e,r.crc),q(t,e+4,o<0?-o-2:o),q(t,e+8,r.size)),q(t,e+12,c),q(t,e+14,l),e+=16,s!=null&&(q(t,e,h),q(t,e+6,r.attrs),q(t,e+10,s),e+=14),t.set(n,e),e+=c,l)for(var m in u){var w=u[m],g=w.length;q(t,e,+m),q(t,e+2,g),t.set(w,e+4),e+=4+g}return h&&(t.set(a,e),e+=h),e},Pn=function(t,e,r,n,i){q(t,e,101010256),q(t,e+8,r),q(t,e+10,r),q(t,e+12,n),q(t,e+16,i)};function Mr(t,e,r){r||(r=e,e={}),typeof r!="function"&&_(7);var n={};kr(t,"",n,e);var i=Object.keys(n),o=i.length,s=0,a=0,c=o,u=new Array(o),h=[],l=function(){for(var g=0;g65535&&j(_(11,0,1),null),!re)j(null,L);else if(I<16e4)try{j(null,Mt(L,E))}catch(N){j(N,null)}else h.push(En(L,E,j))},w=0;w65558)return s(_(13,0,1),null),i;var c=ce(t,a+8);if(c){var u=c,h=ie(t,a+16),l=h==4294967295||u==65535;if(l){var p=ie(t,a-12);l=ie(t,p)==101075792,l&&(u=c=ie(t,p+32),h=ie(t,p+48))}for(var v=e&&e.filter,m=function(g){var A=Cn(t,h,l),T=A[0],L=A[1],E=A[2],P=A[3],I=A[4],k=A[5],x=Dn(t,k);h=I;var y=function(O,z){O?(i(),s(O,null)):(z&&(o[P]=z),--c||s(null,o))};if(!v||v({name:P,size:L,originalSize:E,compression:T}))if(!T)y(null,ye(t,x,x+L));else if(T==8){var M=t.subarray(x,x+L);if(E<524288||L>.8*E)try{y(null,Ut(M,{out:new S(E)}))}catch(O){y(O,null)}else n.push(xn(M,{size:E},y))}else y(_(14,"unknown compression type "+T,1),null);else y(null,null)},w=0;w{t.terminate();let e=new ve(t.lufiFile);return b.fromPromise(new Promise((r,n)=>{e.onMessage(i=>{i.data.event==="UPLOAD_CANCELLED"&&(de[e.lufiFile.keys.client].uploadStatus=0,r(e)),i.data.event==="OPERATION_FAILED"&&n(i.data.error)}).requestMessage({action:2,args:{lufiFile:e.lufiFile}})}),r=>R(r))},Tr=(t,e={})=>{let r=async n=>{var i;for(let o of n){let s=((i=o.name.split("/"))==null?void 0:i.pop())||o.name,a=s.split(".").shift(),c=s.split(".").pop(),u=s;if(e[u]!==void 0){let h=1;do u=`${a}_(${h}).${c}`,h++;while(e[u]!==void 0)}Tt.emit("ARCHIVE_ADDED_FILE",{name:u,size:o.size}),e[u]=await o.bytes()}};return b.fromPromise(r(t),n=>R(n)).andThen(()=>G(e))},Ir=(t,e)=>{let r=()=>new Promise((n,i)=>{Mr(t,(o,s)=>{o&&i(o),n(s)})});return b.fromPromise(r(),n=>R(n)).andThen(n=>G(new File([new Blob([n])],e,{type:"application/zip"}))).orElse(n=>Z(n))},Mn=t=>{let e=async()=>{let r=await t.bytes();return new Promise((n,i)=>{Ur(r,(o,s)=>{o&&i(o),n(s)})})};return b.fromPromise(e(),r=>R(r)).andThen(r=>{let n=[];for(let i in r)n.push(new File([new Blob([r[i]])],i));return G(n)})},Un=(t,e)=>{let r;return e?r=yt(t).andThen(n=>n.version.tag>"0.07.0"?b.fromPromise(Ve(e).then(i=>ne.fromDownloadUrl(t,i)),i=>R(i)):G(ne.fromDownloadUrl(t,e))):r=G(ne.fromDownloadUrl(t)),r.andThen(n=>{let i=new ve(n);return b.fromPromise(new Promise((o,s)=>i.onMessage(a=>{zr(o,s,i,a),a.data.event==="CHUNK_DOWNLOADED"&&(i.tmpChunks[a.data.chunk.index]=new Blob([a.data.chunk.buffer])),a.data.event==="DOWNLOAD_COMPLETE"&&(i.tmpFile=new Blob(i.tmpChunks,{type:n.type}),i.tmpChunks=[],i.complete())}).requestMessage({action:3,args:{lufiFile:n}})),o=>R(o))})},Rn=(t,e)=>{let r;return e?r=yt(t).andThen(n=>n.version.tag>"0.07.0"?b.fromPromise(Ve(e).then(i=>ne.fromDownloadUrl(t,i)),i=>R(i)):G(ne.fromDownloadUrl(t,e))):r=G(ne.fromDownloadUrl(t)),r.andThen(n=>G(new ve(n))).andThen(n=>b.fromPromise(new Promise((i,o)=>{n.onMessage(s=>{s.data.event==="INFOS_RETRIEVED"&&(n.complete(),i(n)),s.data.event==="OPERATION_FAILED"&&o(s.data.error)}).requestMessage({action:4,args:{lufiFile:n.lufiFile}})}),i=>R(i)))},Tn=t=>(t.status=3,G(t.requestMessage({action:5,args:{lufiFile:t.lufiFile}}))),In=(t,e)=>{let r=ne.fromRemoveUrl(t,e),n=new ve(r);return b.fromPromise(new Promise((i,o)=>{n.onMessage(s=>{s.data.event==="FILE_REMOVED"&&(n.complete(),i(n)),s.data.event==="OPERATION_FAILED"&&o(s.data.error)}).requestMessage({action:7,args:{lufiFile:r}})}),i=>R(i))},zn=t=>(t.status=2,G(t.requestMessage({action:8,args:{lufiFile:t.lufiFile}}))),Fn=(t,e,r=Sn)=>{let n=Math.ceil(t.size/r);if(de[e].totalChunks=n,n>0){let i=[];for(let o=0;o{let c=[];return i?e.length===1&&e[0].type==="application/zip"?c.push(Rt(t,e[0],r,n,i,s,a)):c.push(Tr(e).andThen(u=>Ir(u,o).andThen(h=>(Tt.emit("ARCHIVE_CREATED",h),Rt(t,h,r,n,i,s,a))))):e.forEach(u=>{c.push(Rt(t,u,r,n,i,s,a))}),b.combine(c)},Rt=(t,e,r,n,i,o,s)=>cr(s).andThen(a=>b.fromPromise(Ve(o).then(c=>(de[a]=new ne(t.toString(),{delay:r,delAtFirstView:n,zipped:i,password:c,name:e.name.split("/").pop(),size:e.size,type:e.type,keys:{client:a,server:""}}),a)),c=>R(c))).andThen(a=>{let c=new ve(de[a]);return Fn(e,a).asyncAndThen(u=>{de[a].uploadStatus=4;let h=new Promise((p,v)=>{c.onMessage(m=>{switch(zr(p,v,c,m),m.data.event){case"UPLOAD_COMPLETE":c.complete(),c.lufiFile.uploadStatus=1;break}})}),l=async p=>{for(let[v,m]of p.entries()){let w=await m.arrayBuffer();c.requestMessage({action:9,args:{chunk:{buffer:w,index:v},lufiFile:de[a],algo:s}},[w])}};return b.fromPromise(l(u),p=>R(p)).andThen(()=>b.fromPromise(h,p=>R(p)))}).orElse(u=>Z(u))}),zr=(t,e,r,n)=>{n.data.event==="SOCKET_OPENED"&&t(r),n.data.event==="OPERATION_FAILED"&&e(n.data.error)},_n=()=>Object.values(de).filter(t=>t.uploadStatus===4),jn=t=>Object.keys(_n()).indexOf(t);export{Le as CryptoAlgorithm,b as ResultAsync,Q as err,Z as errAsync,on as isSecureContext,It as lufi,se as ok,G as okAsync}; diff --git a/themes/default/public/js/worker/archive.js b/themes/default/public/js/worker/archive.js new file mode 100644 index 0000000..e69de29 diff --git a/themes/default/public/js/worker/cancel.js b/themes/default/public/js/worker/cancel.js index ed00eb9..ce4d856 100644 --- a/themes/default/public/js/worker/cancel.js +++ b/themes/default/public/js/worker/cancel.js @@ -1,2111 +1 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __defNormalProp = (obj3, key, value) => key in obj3 ? __defProp(obj3, key, { enumerable: true, configurable: true, writable: true, value }) : obj3[key] = value; -var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { - get: (a, b) => (typeof require !== "undefined" ? require : a)[b] -}) : x)(function(x) { - if (typeof require !== "undefined") return require.apply(this, arguments); - throw Error('Dynamic require of "' + x + '" is not supported'); -}); -var __commonJS = (cb, mod) => function __require2() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __publicField = (obj3, key, value) => __defNormalProp(obj3, typeof key !== "symbol" ? key + "" : key, value); - -// node_modules/.deno/events@3.3.0/node_modules/events/events.js -var require_events = __commonJS({ - "node_modules/.deno/events@3.3.0/node_modules/events/events.js"(exports, module) { - "use strict"; - var R = typeof Reflect === "object" ? Reflect : null; - var ReflectApply = R && typeof R.apply === "function" ? R.apply : function ReflectApply2(target, receiver, args) { - return Function.prototype.apply.call(target, receiver, args); - }; - var ReflectOwnKeys; - if (R && typeof R.ownKeys === "function") { - ReflectOwnKeys = R.ownKeys; - } else if (Object.getOwnPropertySymbols) { - ReflectOwnKeys = function ReflectOwnKeys2(target) { - return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target)); - }; - } else { - ReflectOwnKeys = function ReflectOwnKeys2(target) { - return Object.getOwnPropertyNames(target); - }; - } - function ProcessEmitWarning(warning) { - if (console && console.warn) console.warn(warning); - } - var NumberIsNaN = Number.isNaN || function NumberIsNaN2(value) { - return value !== value; - }; - function EventEmitter2() { - EventEmitter2.init.call(this); - } - module.exports = EventEmitter2; - module.exports.once = once; - EventEmitter2.EventEmitter = EventEmitter2; - EventEmitter2.prototype._events = void 0; - EventEmitter2.prototype._eventsCount = 0; - EventEmitter2.prototype._maxListeners = void 0; - var defaultMaxListeners = 10; - function checkListener(listener) { - if (typeof listener !== "function") { - throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); - } - } - Object.defineProperty(EventEmitter2, "defaultMaxListeners", { - enumerable: true, - get: function() { - return defaultMaxListeners; - }, - set: function(arg) { - if (typeof arg !== "number" || arg < 0 || NumberIsNaN(arg)) { - throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + "."); - } - defaultMaxListeners = arg; - } - }); - EventEmitter2.init = function() { - if (this._events === void 0 || this._events === Object.getPrototypeOf(this)._events) { - this._events = /* @__PURE__ */ Object.create(null); - this._eventsCount = 0; - } - this._maxListeners = this._maxListeners || void 0; - }; - EventEmitter2.prototype.setMaxListeners = function setMaxListeners(n) { - if (typeof n !== "number" || n < 0 || NumberIsNaN(n)) { - throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + "."); - } - this._maxListeners = n; - return this; - }; - function _getMaxListeners(that) { - if (that._maxListeners === void 0) - return EventEmitter2.defaultMaxListeners; - return that._maxListeners; - } - EventEmitter2.prototype.getMaxListeners = function getMaxListeners() { - return _getMaxListeners(this); - }; - EventEmitter2.prototype.emit = function emit(type) { - var args = []; - for (var i = 1; i < arguments.length; i++) args.push(arguments[i]); - var doError = type === "error"; - var events2 = this._events; - if (events2 !== void 0) - doError = doError && events2.error === void 0; - else if (!doError) - return false; - if (doError) { - var er; - if (args.length > 0) - er = args[0]; - if (er instanceof Error) { - throw er; - } - var err2 = new Error("Unhandled error." + (er ? " (" + er.message + ")" : "")); - err2.context = er; - throw err2; - } - var handler = events2[type]; - if (handler === void 0) - return false; - if (typeof handler === "function") { - ReflectApply(handler, this, args); - } else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) - ReflectApply(listeners[i], this, args); - } - return true; - }; - function _addListener(target, type, listener, prepend) { - var m; - var events2; - var existing; - checkListener(listener); - events2 = target._events; - if (events2 === void 0) { - events2 = target._events = /* @__PURE__ */ Object.create(null); - target._eventsCount = 0; - } else { - if (events2.newListener !== void 0) { - target.emit( - "newListener", - type, - listener.listener ? listener.listener : listener - ); - events2 = target._events; - } - existing = events2[type]; - } - if (existing === void 0) { - existing = events2[type] = listener; - ++target._eventsCount; - } else { - if (typeof existing === "function") { - existing = events2[type] = prepend ? [listener, existing] : [existing, listener]; - } else if (prepend) { - existing.unshift(listener); - } else { - existing.push(listener); - } - m = _getMaxListeners(target); - if (m > 0 && existing.length > m && !existing.warned) { - existing.warned = true; - var w = new Error("Possible EventEmitter memory leak detected. " + existing.length + " " + String(type) + " listeners added. Use emitter.setMaxListeners() to increase limit"); - w.name = "MaxListenersExceededWarning"; - w.emitter = target; - w.type = type; - w.count = existing.length; - ProcessEmitWarning(w); - } - } - return target; - } - EventEmitter2.prototype.addListener = function addListener(type, listener) { - return _addListener(this, type, listener, false); - }; - EventEmitter2.prototype.on = EventEmitter2.prototype.addListener; - EventEmitter2.prototype.prependListener = function prependListener(type, listener) { - return _addListener(this, type, listener, true); - }; - function onceWrapper() { - if (!this.fired) { - this.target.removeListener(this.type, this.wrapFn); - this.fired = true; - if (arguments.length === 0) - return this.listener.call(this.target); - return this.listener.apply(this.target, arguments); - } - } - function _onceWrap(target, type, listener) { - var state = { fired: false, wrapFn: void 0, target, type, listener }; - var wrapped = onceWrapper.bind(state); - wrapped.listener = listener; - state.wrapFn = wrapped; - return wrapped; - } - EventEmitter2.prototype.once = function once2(type, listener) { - checkListener(listener); - this.on(type, _onceWrap(this, type, listener)); - return this; - }; - EventEmitter2.prototype.prependOnceListener = function prependOnceListener(type, listener) { - checkListener(listener); - this.prependListener(type, _onceWrap(this, type, listener)); - return this; - }; - EventEmitter2.prototype.removeListener = function removeListener(type, listener) { - var list, events2, position, i, originalListener; - checkListener(listener); - events2 = this._events; - if (events2 === void 0) - return this; - list = events2[type]; - if (list === void 0) - return this; - if (list === listener || list.listener === listener) { - if (--this._eventsCount === 0) - this._events = /* @__PURE__ */ Object.create(null); - else { - delete events2[type]; - if (events2.removeListener) - this.emit("removeListener", type, list.listener || listener); - } - } else if (typeof list !== "function") { - position = -1; - for (i = list.length - 1; i >= 0; i--) { - if (list[i] === listener || list[i].listener === listener) { - originalListener = list[i].listener; - position = i; - break; - } - } - if (position < 0) - return this; - if (position === 0) - list.shift(); - else { - spliceOne(list, position); - } - if (list.length === 1) - events2[type] = list[0]; - if (events2.removeListener !== void 0) - this.emit("removeListener", type, originalListener || listener); - } - return this; - }; - EventEmitter2.prototype.off = EventEmitter2.prototype.removeListener; - EventEmitter2.prototype.removeAllListeners = function removeAllListeners(type) { - var listeners, events2, i; - events2 = this._events; - if (events2 === void 0) - return this; - if (events2.removeListener === void 0) { - if (arguments.length === 0) { - this._events = /* @__PURE__ */ Object.create(null); - this._eventsCount = 0; - } else if (events2[type] !== void 0) { - if (--this._eventsCount === 0) - this._events = /* @__PURE__ */ Object.create(null); - else - delete events2[type]; - } - return this; - } - if (arguments.length === 0) { - var keys = Object.keys(events2); - var key; - for (i = 0; i < keys.length; ++i) { - key = keys[i]; - if (key === "removeListener") continue; - this.removeAllListeners(key); - } - this.removeAllListeners("removeListener"); - this._events = /* @__PURE__ */ Object.create(null); - this._eventsCount = 0; - return this; - } - listeners = events2[type]; - if (typeof listeners === "function") { - this.removeListener(type, listeners); - } else if (listeners !== void 0) { - for (i = listeners.length - 1; i >= 0; i--) { - this.removeListener(type, listeners[i]); - } - } - return this; - }; - function _listeners(target, type, unwrap) { - var events2 = target._events; - if (events2 === void 0) - return []; - var evlistener = events2[type]; - if (evlistener === void 0) - return []; - if (typeof evlistener === "function") - return unwrap ? [evlistener.listener || evlistener] : [evlistener]; - return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); - } - EventEmitter2.prototype.listeners = function listeners(type) { - return _listeners(this, type, true); - }; - EventEmitter2.prototype.rawListeners = function rawListeners(type) { - return _listeners(this, type, false); - }; - EventEmitter2.listenerCount = function(emitter, type) { - if (typeof emitter.listenerCount === "function") { - return emitter.listenerCount(type); - } else { - return listenerCount.call(emitter, type); - } - }; - EventEmitter2.prototype.listenerCount = listenerCount; - function listenerCount(type) { - var events2 = this._events; - if (events2 !== void 0) { - var evlistener = events2[type]; - if (typeof evlistener === "function") { - return 1; - } else if (evlistener !== void 0) { - return evlistener.length; - } - } - return 0; - } - EventEmitter2.prototype.eventNames = function eventNames() { - return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : []; - }; - function arrayClone(arr, n) { - var copy = new Array(n); - for (var i = 0; i < n; ++i) - copy[i] = arr[i]; - return copy; - } - function spliceOne(list, index) { - for (; index + 1 < list.length; index++) - list[index] = list[index + 1]; - list.pop(); - } - function unwrapListeners(arr) { - var ret = new Array(arr.length); - for (var i = 0; i < ret.length; ++i) { - ret[i] = arr[i].listener || arr[i]; - } - return ret; - } - function once(emitter, name) { - return new Promise(function(resolve, reject) { - function errorListener(err2) { - emitter.removeListener(name, resolver); - reject(err2); - } - function resolver() { - if (typeof emitter.removeListener === "function") { - emitter.removeListener("error", errorListener); - } - resolve([].slice.call(arguments)); - } - ; - eventTargetAgnosticAddListener(emitter, name, resolver, { once: true }); - if (name !== "error") { - addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true }); - } - }); - } - function addErrorHandlerIfEventEmitter(emitter, handler, flags) { - if (typeof emitter.on === "function") { - eventTargetAgnosticAddListener(emitter, "error", handler, flags); - } - } - function eventTargetAgnosticAddListener(emitter, name, listener, flags) { - if (typeof emitter.on === "function") { - if (flags.once) { - emitter.once(name, listener); - } else { - emitter.on(name, listener); - } - } else if (typeof emitter.addEventListener === "function") { - emitter.addEventListener(name, function wrapListener(arg) { - if (flags.once) { - emitter.removeEventListener(name, wrapListener); - } - listener(arg); - }); - } else { - throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof emitter); - } - } - } -}); - -// node_modules/.deno/sjcl@1.0.8/node_modules/sjcl/sjcl.js -var require_sjcl = __commonJS({ - "node_modules/.deno/sjcl@1.0.8/node_modules/sjcl/sjcl.js"(exports, module) { - "use strict"; - var sjcl2 = { cipher: {}, hash: {}, keyexchange: {}, mode: {}, misc: {}, codec: {}, exception: { corrupt: function(a) { - this.toString = function() { - return "CORRUPT: " + this.message; - }; - this.message = a; - }, invalid: function(a) { - this.toString = function() { - return "INVALID: " + this.message; - }; - this.message = a; - }, bug: function(a) { - this.toString = function() { - return "BUG: " + this.message; - }; - this.message = a; - }, notReady: function(a) { - this.toString = function() { - return "NOT READY: " + this.message; - }; - this.message = a; - } } }; - sjcl2.cipher.aes = function(a) { - this.s[0][0][0] || this.O(); - var b, c, d, e, f = this.s[0][4], g = this.s[1]; - b = a.length; - var h = 1; - if (4 !== b && 6 !== b && 8 !== b) throw new sjcl2.exception.invalid("invalid aes key size"); - this.b = [d = a.slice(0), e = []]; - for (a = b; a < 4 * b + 28; a++) { - c = d[a - 1]; - if (0 === a % b || 8 === b && 4 === a % b) c = f[c >>> 24] << 24 ^ f[c >> 16 & 255] << 16 ^ f[c >> 8 & 255] << 8 ^ f[c & 255], 0 === a % b && (c = c << 8 ^ c >>> 24 ^ h << 24, h = h << 1 ^ 283 * (h >> 7)); - d[a] = d[a - b] ^ c; - } - for (b = 0; a; b++, a--) c = d[b & 3 ? a : a - 4], e[b] = 4 >= a || 4 > b ? c : g[0][f[c >>> 24]] ^ g[1][f[c >> 16 & 255]] ^ g[2][f[c >> 8 & 255]] ^ g[3][f[c & 255]]; - }; - sjcl2.cipher.aes.prototype = { encrypt: function(a) { - return t(this, a, 0); - }, decrypt: function(a) { - return t(this, a, 1); - }, s: [[[], [], [], [], []], [[], [], [], [], []]], O: function() { - var a = this.s[0], b = this.s[1], c = a[4], d = b[4], e, f, g, h = [], k = [], l, n, m, p; - for (e = 0; 256 > e; e++) k[(h[e] = e << 1 ^ 283 * (e >> 7)) ^ e] = e; - for (f = g = 0; !c[f]; f ^= l || 1, g = k[g] || 1) for (m = g ^ g << 1 ^ g << 2 ^ g << 3 ^ g << 4, m = m >> 8 ^ m & 255 ^ 99, c[f] = m, d[m] = f, n = h[e = h[l = h[f]]], p = 16843009 * n ^ 65537 * e ^ 257 * l ^ 16843008 * f, n = 257 * h[m] ^ 16843008 * m, e = 0; 4 > e; e++) a[e][f] = n = n << 24 ^ n >>> 8, b[e][m] = p = p << 24 ^ p >>> 8; - for (e = 0; 5 > e; e++) a[e] = a[e].slice(0), b[e] = b[e].slice(0); - } }; - function t(a, b, c) { - if (4 !== b.length) throw new sjcl2.exception.invalid("invalid aes block size"); - var d = a.b[c], e = b[0] ^ d[0], f = b[c ? 3 : 1] ^ d[1], g = b[2] ^ d[2]; - b = b[c ? 1 : 3] ^ d[3]; - var h, k, l, n = d.length / 4 - 2, m, p = 4, r = [0, 0, 0, 0]; - h = a.s[c]; - a = h[0]; - var q = h[1], v = h[2], w = h[3], x = h[4]; - for (m = 0; m < n; m++) h = a[e >>> 24] ^ q[f >> 16 & 255] ^ v[g >> 8 & 255] ^ w[b & 255] ^ d[p], k = a[f >>> 24] ^ q[g >> 16 & 255] ^ v[b >> 8 & 255] ^ w[e & 255] ^ d[p + 1], l = a[g >>> 24] ^ q[b >> 16 & 255] ^ v[e >> 8 & 255] ^ w[f & 255] ^ d[p + 2], b = a[b >>> 24] ^ q[e >> 16 & 255] ^ v[f >> 8 & 255] ^ w[g & 255] ^ d[p + 3], p += 4, e = h, f = k, g = l; - for (m = 0; 4 > m; m++) r[c ? 3 & -m : m] = x[e >>> 24] << 24 ^ x[f >> 16 & 255] << 16 ^ x[g >> 8 & 255] << 8 ^ x[b & 255] ^ d[p++], h = e, e = f, f = g, g = b, b = h; - return r; - } - sjcl2.bitArray = { bitSlice: function(a, b, c) { - a = sjcl2.bitArray.$(a.slice(b / 32), 32 - (b & 31)).slice(1); - return void 0 === c ? a : sjcl2.bitArray.clamp(a, c - b); - }, extract: function(a, b, c) { - var d = Math.floor(-b - c & 31); - return ((b + c - 1 ^ b) & -32 ? a[b / 32 | 0] << 32 - d ^ a[b / 32 + 1 | 0] >>> d : a[b / 32 | 0] >>> d) & (1 << c) - 1; - }, concat: function(a, b) { - if (0 === a.length || 0 === b.length) return a.concat(b); - var c = a[a.length - 1], d = sjcl2.bitArray.getPartial(c); - return 32 === d ? a.concat(b) : sjcl2.bitArray.$(b, d, c | 0, a.slice(0, a.length - 1)); - }, bitLength: function(a) { - var b = a.length; - return 0 === b ? 0 : 32 * (b - 1) + sjcl2.bitArray.getPartial(a[b - 1]); - }, clamp: function(a, b) { - if (32 * a.length < b) return a; - a = a.slice(0, Math.ceil(b / 32)); - var c = a.length; - b = b & 31; - 0 < c && b && (a[c - 1] = sjcl2.bitArray.partial(b, a[c - 1] & 2147483648 >> b - 1, 1)); - return a; - }, partial: function(a, b, c) { - return 32 === a ? b : (c ? b | 0 : b << 32 - a) + 1099511627776 * a; - }, getPartial: function(a) { - return Math.round(a / 1099511627776) || 32; - }, equal: function(a, b) { - if (sjcl2.bitArray.bitLength(a) !== sjcl2.bitArray.bitLength(b)) return false; - var c = 0, d; - for (d = 0; d < a.length; d++) c |= a[d] ^ b[d]; - return 0 === c; - }, $: function(a, b, c, d) { - var e; - e = 0; - for (void 0 === d && (d = []); 32 <= b; b -= 32) d.push(c), c = 0; - if (0 === b) return d.concat(a); - for (e = 0; e < a.length; e++) d.push(c | a[e] >>> b), c = a[e] << 32 - b; - e = a.length ? a[a.length - 1] : 0; - a = sjcl2.bitArray.getPartial(e); - d.push(sjcl2.bitArray.partial(b + a & 31, 32 < b + a ? c : d.pop(), 1)); - return d; - }, i: function(a, b) { - return [a[0] ^ b[0], a[1] ^ b[1], a[2] ^ b[2], a[3] ^ b[3]]; - }, byteswapM: function(a) { - var b, c; - for (b = 0; b < a.length; ++b) c = a[b], a[b] = c >>> 24 | c >>> 8 & 65280 | (c & 65280) << 8 | c << 24; - return a; - } }; - sjcl2.codec.utf8String = { fromBits: function(a) { - var b = "", c = sjcl2.bitArray.bitLength(a), d, e; - for (d = 0; d < c / 8; d++) 0 === (d & 3) && (e = a[d / 4]), b += String.fromCharCode(e >>> 8 >>> 8 >>> 8), e <<= 8; - return decodeURIComponent(escape(b)); - }, toBits: function(a) { - a = unescape(encodeURIComponent(a)); - var b = [], c, d = 0; - for (c = 0; c < a.length; c++) d = d << 8 | a.charCodeAt(c), 3 === (c & 3) && (b.push(d), d = 0); - c & 3 && b.push(sjcl2.bitArray.partial(8 * (c & 3), d)); - return b; - } }; - sjcl2.codec.hex = { fromBits: function(a) { - var b = "", c; - for (c = 0; c < a.length; c++) b += ((a[c] | 0) + 263882790666240).toString(16).substr(4); - return b.substr(0, sjcl2.bitArray.bitLength(a) / 4); - }, toBits: function(a) { - var b, c = [], d; - a = a.replace(/\s|0x/g, ""); - d = a.length; - a = a + "00000000"; - for (b = 0; b < a.length; b += 8) c.push(parseInt(a.substr(b, 8), 16) ^ 0); - return sjcl2.bitArray.clamp(c, 4 * d); - } }; - sjcl2.codec.base32 = { B: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567", X: "0123456789ABCDEFGHIJKLMNOPQRSTUV", BITS: 32, BASE: 5, REMAINING: 27, fromBits: function(a, b, c) { - var d = sjcl2.codec.base32.BASE, e = sjcl2.codec.base32.REMAINING, f = "", g = 0, h = sjcl2.codec.base32.B, k = 0, l = sjcl2.bitArray.bitLength(a); - c && (h = sjcl2.codec.base32.X); - for (c = 0; f.length * d < l; ) f += h.charAt((k ^ a[c] >>> g) >>> e), g < d ? (k = a[c] << d - g, g += e, c++) : (k <<= d, g -= d); - for (; f.length & 7 && !b; ) f += "="; - return f; - }, toBits: function(a, b) { - a = a.replace(/\s|=/g, "").toUpperCase(); - var c = sjcl2.codec.base32.BITS, d = sjcl2.codec.base32.BASE, e = sjcl2.codec.base32.REMAINING, f = [], g, h = 0, k = sjcl2.codec.base32.B, l = 0, n, m = "base32"; - b && (k = sjcl2.codec.base32.X, m = "base32hex"); - for (g = 0; g < a.length; g++) { - n = k.indexOf(a.charAt(g)); - if (0 > n) { - if (!b) try { - return sjcl2.codec.base32hex.toBits(a); - } catch (p) { - } - throw new sjcl2.exception.invalid("this isn't " + m + "!"); - } - h > e ? (h -= e, f.push(l ^ n >>> h), l = n << c - h) : (h += d, l ^= n << c - h); - } - h & 56 && f.push(sjcl2.bitArray.partial(h & 56, l, 1)); - return f; - } }; - sjcl2.codec.base32hex = { fromBits: function(a, b) { - return sjcl2.codec.base32.fromBits(a, b, 1); - }, toBits: function(a) { - return sjcl2.codec.base32.toBits(a, 1); - } }; - sjcl2.codec.base64 = { B: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", fromBits: function(a, b, c) { - var d = "", e = 0, f = sjcl2.codec.base64.B, g = 0, h = sjcl2.bitArray.bitLength(a); - c && (f = f.substr(0, 62) + "-_"); - for (c = 0; 6 * d.length < h; ) d += f.charAt((g ^ a[c] >>> e) >>> 26), 6 > e ? (g = a[c] << 6 - e, e += 26, c++) : (g <<= 6, e -= 6); - for (; d.length & 3 && !b; ) d += "="; - return d; - }, toBits: function(a, b) { - a = a.replace(/\s|=/g, ""); - var c = [], d, e = 0, f = sjcl2.codec.base64.B, g = 0, h; - b && (f = f.substr(0, 62) + "-_"); - for (d = 0; d < a.length; d++) { - h = f.indexOf(a.charAt(d)); - if (0 > h) throw new sjcl2.exception.invalid("this isn't base64!"); - 26 < e ? (e -= 26, c.push(g ^ h >>> e), g = h << 32 - e) : (e += 6, g ^= h << 32 - e); - } - e & 56 && c.push(sjcl2.bitArray.partial(e & 56, g, 1)); - return c; - } }; - sjcl2.codec.base64url = { fromBits: function(a) { - return sjcl2.codec.base64.fromBits(a, 1, 1); - }, toBits: function(a) { - return sjcl2.codec.base64.toBits(a, 1); - } }; - sjcl2.hash.sha256 = function(a) { - this.b[0] || this.O(); - a ? (this.F = a.F.slice(0), this.A = a.A.slice(0), this.l = a.l) : this.reset(); - }; - sjcl2.hash.sha256.hash = function(a) { - return new sjcl2.hash.sha256().update(a).finalize(); - }; - sjcl2.hash.sha256.prototype = { blockSize: 512, reset: function() { - this.F = this.Y.slice(0); - this.A = []; - this.l = 0; - return this; - }, update: function(a) { - "string" === typeof a && (a = sjcl2.codec.utf8String.toBits(a)); - var b, c = this.A = sjcl2.bitArray.concat(this.A, a); - b = this.l; - a = this.l = b + sjcl2.bitArray.bitLength(a); - if (9007199254740991 < a) throw new sjcl2.exception.invalid("Cannot hash more than 2^53 - 1 bits"); - if ("undefined" !== typeof Uint32Array) { - var d = new Uint32Array(c), e = 0; - for (b = 512 + b - (512 + b & 511); b <= a; b += 512) u(this, d.subarray( - 16 * e, - 16 * (e + 1) - )), e += 1; - c.splice(0, 16 * e); - } else for (b = 512 + b - (512 + b & 511); b <= a; b += 512) u(this, c.splice(0, 16)); - return this; - }, finalize: function() { - var a, b = this.A, c = this.F, b = sjcl2.bitArray.concat(b, [sjcl2.bitArray.partial(1, 1)]); - for (a = b.length + 2; a & 15; a++) b.push(0); - b.push(Math.floor(this.l / 4294967296)); - for (b.push(this.l | 0); b.length; ) u(this, b.splice(0, 16)); - this.reset(); - return c; - }, Y: [], b: [], O: function() { - function a(a2) { - return 4294967296 * (a2 - Math.floor(a2)) | 0; - } - for (var b = 0, c = 2, d, e; 64 > b; c++) { - e = true; - for (d = 2; d * d <= c; d++) if (0 === c % d) { - e = false; - break; - } - e && (8 > b && (this.Y[b] = a(Math.pow(c, 0.5))), this.b[b] = a(Math.pow(c, 1 / 3)), b++); - } - } }; - function u(a, b) { - var c, d, e, f = a.F, g = a.b, h = f[0], k = f[1], l = f[2], n = f[3], m = f[4], p = f[5], r = f[6], q = f[7]; - for (c = 0; 64 > c; c++) 16 > c ? d = b[c] : (d = b[c + 1 & 15], e = b[c + 14 & 15], d = b[c & 15] = (d >>> 7 ^ d >>> 18 ^ d >>> 3 ^ d << 25 ^ d << 14) + (e >>> 17 ^ e >>> 19 ^ e >>> 10 ^ e << 15 ^ e << 13) + b[c & 15] + b[c + 9 & 15] | 0), d = d + q + (m >>> 6 ^ m >>> 11 ^ m >>> 25 ^ m << 26 ^ m << 21 ^ m << 7) + (r ^ m & (p ^ r)) + g[c], q = r, r = p, p = m, m = n + d | 0, n = l, l = k, k = h, h = d + (k & l ^ n & (k ^ l)) + (k >>> 2 ^ k >>> 13 ^ k >>> 22 ^ k << 30 ^ k << 19 ^ k << 10) | 0; - f[0] = f[0] + h | 0; - f[1] = f[1] + k | 0; - f[2] = f[2] + l | 0; - f[3] = f[3] + n | 0; - f[4] = f[4] + m | 0; - f[5] = f[5] + p | 0; - f[6] = f[6] + r | 0; - f[7] = f[7] + q | 0; - } - sjcl2.mode.ccm = { name: "ccm", G: [], listenProgress: function(a) { - sjcl2.mode.ccm.G.push(a); - }, unListenProgress: function(a) { - a = sjcl2.mode.ccm.G.indexOf(a); - -1 < a && sjcl2.mode.ccm.G.splice(a, 1); - }, fa: function(a) { - var b = sjcl2.mode.ccm.G.slice(), c; - for (c = 0; c < b.length; c += 1) b[c](a); - }, encrypt: function(a, b, c, d, e) { - var f, g = b.slice(0), h = sjcl2.bitArray, k = h.bitLength(c) / 8, l = h.bitLength(g) / 8; - e = e || 64; - d = d || []; - if (7 > k) throw new sjcl2.exception.invalid("ccm: iv must be at least 7 bytes"); - for (f = 2; 4 > f && l >>> 8 * f; f++) ; - f < 15 - k && (f = 15 - k); - c = h.clamp( - c, - 8 * (15 - f) - ); - b = sjcl2.mode.ccm.V(a, b, c, d, e, f); - g = sjcl2.mode.ccm.C(a, g, c, b, e, f); - return h.concat(g.data, g.tag); - }, decrypt: function(a, b, c, d, e) { - e = e || 64; - d = d || []; - var f = sjcl2.bitArray, g = f.bitLength(c) / 8, h = f.bitLength(b), k = f.clamp(b, h - e), l = f.bitSlice(b, h - e), h = (h - e) / 8; - if (7 > g) throw new sjcl2.exception.invalid("ccm: iv must be at least 7 bytes"); - for (b = 2; 4 > b && h >>> 8 * b; b++) ; - b < 15 - g && (b = 15 - g); - c = f.clamp(c, 8 * (15 - b)); - k = sjcl2.mode.ccm.C(a, k, c, l, e, b); - a = sjcl2.mode.ccm.V(a, k.data, c, d, e, b); - if (!f.equal(k.tag, a)) throw new sjcl2.exception.corrupt("ccm: tag doesn't match"); - return k.data; - }, na: function(a, b, c, d, e, f) { - var g = [], h = sjcl2.bitArray, k = h.i; - d = [h.partial(8, (b.length ? 64 : 0) | d - 2 << 2 | f - 1)]; - d = h.concat(d, c); - d[3] |= e; - d = a.encrypt(d); - if (b.length) for (c = h.bitLength(b) / 8, 65279 >= c ? g = [h.partial(16, c)] : 4294967295 >= c && (g = h.concat([h.partial(16, 65534)], [c])), g = h.concat(g, b), b = 0; b < g.length; b += 4) d = a.encrypt(k(d, g.slice(b, b + 4).concat([0, 0, 0]))); - return d; - }, V: function(a, b, c, d, e, f) { - var g = sjcl2.bitArray, h = g.i; - e /= 8; - if (e % 2 || 4 > e || 16 < e) throw new sjcl2.exception.invalid("ccm: invalid tag length"); - if (4294967295 < d.length || 4294967295 < b.length) throw new sjcl2.exception.bug("ccm: can't deal with 4GiB or more data"); - c = sjcl2.mode.ccm.na(a, d, c, e, g.bitLength(b) / 8, f); - for (d = 0; d < b.length; d += 4) c = a.encrypt(h(c, b.slice(d, d + 4).concat([0, 0, 0]))); - return g.clamp(c, 8 * e); - }, C: function(a, b, c, d, e, f) { - var g, h = sjcl2.bitArray; - g = h.i; - var k = b.length, l = h.bitLength(b), n = k / 50, m = n; - c = h.concat([h.partial(8, f - 1)], c).concat([0, 0, 0]).slice(0, 4); - d = h.bitSlice(g(d, a.encrypt(c)), 0, e); - if (!k) return { tag: d, data: [] }; - for (g = 0; g < k; g += 4) g > n && (sjcl2.mode.ccm.fa(g / k), n += m), c[3]++, e = a.encrypt(c), b[g] ^= e[0], b[g + 1] ^= e[1], b[g + 2] ^= e[2], b[g + 3] ^= e[3]; - return { tag: d, data: h.clamp(b, l) }; - } }; - sjcl2.mode.ocb2 = { name: "ocb2", encrypt: function(a, b, c, d, e, f) { - if (128 !== sjcl2.bitArray.bitLength(c)) throw new sjcl2.exception.invalid("ocb iv must be 128 bits"); - var g, h = sjcl2.mode.ocb2.S, k = sjcl2.bitArray, l = k.i, n = [0, 0, 0, 0]; - c = h(a.encrypt(c)); - var m, p = []; - d = d || []; - e = e || 64; - for (g = 0; g + 4 < b.length; g += 4) m = b.slice(g, g + 4), n = l(n, m), p = p.concat(l(c, a.encrypt(l(c, m)))), c = h(c); - m = b.slice(g); - b = k.bitLength(m); - g = a.encrypt(l(c, [0, 0, 0, b])); - m = k.clamp(l(m.concat([0, 0, 0]), g), b); - n = l(n, l(m.concat([0, 0, 0]), g)); - n = a.encrypt(l(n, l(c, h(c)))); - d.length && (n = l(n, f ? d : sjcl2.mode.ocb2.pmac(a, d))); - return p.concat(k.concat(m, k.clamp(n, e))); - }, decrypt: function(a, b, c, d, e, f) { - if (128 !== sjcl2.bitArray.bitLength(c)) throw new sjcl2.exception.invalid("ocb iv must be 128 bits"); - e = e || 64; - var g = sjcl2.mode.ocb2.S, h = sjcl2.bitArray, k = h.i, l = [0, 0, 0, 0], n = g(a.encrypt(c)), m, p, r = sjcl2.bitArray.bitLength(b) - e, q = []; - d = d || []; - for (c = 0; c + 4 < r / 32; c += 4) m = k(n, a.decrypt(k(n, b.slice(c, c + 4)))), l = k(l, m), q = q.concat(m), n = g(n); - p = r - 32 * c; - m = a.encrypt(k(n, [0, 0, 0, p])); - m = k(m, h.clamp(b.slice(c), p).concat([ - 0, - 0, - 0 - ])); - l = k(l, m); - l = a.encrypt(k(l, k(n, g(n)))); - d.length && (l = k(l, f ? d : sjcl2.mode.ocb2.pmac(a, d))); - if (!h.equal(h.clamp(l, e), h.bitSlice(b, r))) throw new sjcl2.exception.corrupt("ocb: tag doesn't match"); - return q.concat(h.clamp(m, p)); - }, pmac: function(a, b) { - var c, d = sjcl2.mode.ocb2.S, e = sjcl2.bitArray, f = e.i, g = [0, 0, 0, 0], h = a.encrypt([0, 0, 0, 0]), h = f(h, d(d(h))); - for (c = 0; c + 4 < b.length; c += 4) h = d(h), g = f(g, a.encrypt(f(h, b.slice(c, c + 4)))); - c = b.slice(c); - 128 > e.bitLength(c) && (h = f(h, d(h)), c = e.concat(c, [-2147483648, 0, 0, 0])); - g = f(g, c); - return a.encrypt(f(d(f(h, d(h))), g)); - }, S: function(a) { - return [a[0] << 1 ^ a[1] >>> 31, a[1] << 1 ^ a[2] >>> 31, a[2] << 1 ^ a[3] >>> 31, a[3] << 1 ^ 135 * (a[0] >>> 31)]; - } }; - sjcl2.mode.gcm = { name: "gcm", encrypt: function(a, b, c, d, e) { - var f = b.slice(0); - b = sjcl2.bitArray; - d = d || []; - a = sjcl2.mode.gcm.C(true, a, f, d, c, e || 128); - return b.concat(a.data, a.tag); - }, decrypt: function(a, b, c, d, e) { - var f = b.slice(0), g = sjcl2.bitArray, h = g.bitLength(f); - e = e || 128; - d = d || []; - e <= h ? (b = g.bitSlice(f, h - e), f = g.bitSlice(f, 0, h - e)) : (b = f, f = []); - a = sjcl2.mode.gcm.C(false, a, f, d, c, e); - if (!g.equal(a.tag, b)) throw new sjcl2.exception.corrupt("gcm: tag doesn't match"); - return a.data; - }, ka: function(a, b) { - var c, d, e, f, g, h = sjcl2.bitArray.i; - e = [ - 0, - 0, - 0, - 0 - ]; - f = b.slice(0); - for (c = 0; 128 > c; c++) { - (d = 0 !== (a[Math.floor(c / 32)] & 1 << 31 - c % 32)) && (e = h(e, f)); - g = 0 !== (f[3] & 1); - for (d = 3; 0 < d; d--) f[d] = f[d] >>> 1 | (f[d - 1] & 1) << 31; - f[0] >>>= 1; - g && (f[0] ^= -520093696); - } - return e; - }, j: function(a, b, c) { - var d, e = c.length; - b = b.slice(0); - for (d = 0; d < e; d += 4) b[0] ^= 4294967295 & c[d], b[1] ^= 4294967295 & c[d + 1], b[2] ^= 4294967295 & c[d + 2], b[3] ^= 4294967295 & c[d + 3], b = sjcl2.mode.gcm.ka(b, a); - return b; - }, C: function(a, b, c, d, e, f) { - var g, h, k, l, n, m, p, r, q = sjcl2.bitArray; - m = c.length; - p = q.bitLength(c); - r = q.bitLength(d); - h = q.bitLength(e); - g = b.encrypt([0, 0, 0, 0]); - 96 === h ? (e = e.slice(0), e = q.concat(e, [1])) : (e = sjcl2.mode.gcm.j(g, [0, 0, 0, 0], e), e = sjcl2.mode.gcm.j(g, e, [0, 0, Math.floor(h / 4294967296), h & 4294967295])); - h = sjcl2.mode.gcm.j(g, [0, 0, 0, 0], d); - n = e.slice(0); - d = h.slice(0); - a || (d = sjcl2.mode.gcm.j(g, h, c)); - for (l = 0; l < m; l += 4) n[3]++, k = b.encrypt(n), c[l] ^= k[0], c[l + 1] ^= k[1], c[l + 2] ^= k[2], c[l + 3] ^= k[3]; - c = q.clamp(c, p); - a && (d = sjcl2.mode.gcm.j(g, h, c)); - a = [Math.floor(r / 4294967296), r & 4294967295, Math.floor(p / 4294967296), p & 4294967295]; - d = sjcl2.mode.gcm.j(g, d, a); - k = b.encrypt(e); - d[0] ^= k[0]; - d[1] ^= k[1]; - d[2] ^= k[2]; - d[3] ^= k[3]; - return { tag: q.bitSlice(d, 0, f), data: c }; - } }; - sjcl2.misc.hmac = function(a, b) { - this.W = b = b || sjcl2.hash.sha256; - var c = [[], []], d, e = b.prototype.blockSize / 32; - this.w = [new b(), new b()]; - a.length > e && (a = b.hash(a)); - for (d = 0; d < e; d++) c[0][d] = a[d] ^ 909522486, c[1][d] = a[d] ^ 1549556828; - this.w[0].update(c[0]); - this.w[1].update(c[1]); - this.R = new b(this.w[0]); - }; - sjcl2.misc.hmac.prototype.encrypt = sjcl2.misc.hmac.prototype.mac = function(a) { - if (this.aa) throw new sjcl2.exception.invalid("encrypt on already updated hmac called!"); - this.update(a); - return this.digest(a); - }; - sjcl2.misc.hmac.prototype.reset = function() { - this.R = new this.W(this.w[0]); - this.aa = false; - }; - sjcl2.misc.hmac.prototype.update = function(a) { - this.aa = true; - this.R.update(a); - }; - sjcl2.misc.hmac.prototype.digest = function() { - var a = this.R.finalize(), a = new this.W(this.w[1]).update(a).finalize(); - this.reset(); - return a; - }; - sjcl2.misc.pbkdf2 = function(a, b, c, d, e) { - c = c || 1e4; - if (0 > d || 0 > c) throw new sjcl2.exception.invalid("invalid params to pbkdf2"); - "string" === typeof a && (a = sjcl2.codec.utf8String.toBits(a)); - "string" === typeof b && (b = sjcl2.codec.utf8String.toBits(b)); - e = e || sjcl2.misc.hmac; - a = new e(a); - var f, g, h, k, l = [], n = sjcl2.bitArray; - for (k = 1; 32 * l.length < (d || 1); k++) { - e = f = a.encrypt(n.concat(b, [k])); - for (g = 1; g < c; g++) for (f = a.encrypt(f), h = 0; h < f.length; h++) e[h] ^= f[h]; - l = l.concat(e); - } - d && (l = n.clamp(l, d)); - return l; - }; - sjcl2.prng = function(a) { - this.c = [new sjcl2.hash.sha256()]; - this.m = [0]; - this.P = 0; - this.H = {}; - this.N = 0; - this.U = {}; - this.Z = this.f = this.o = this.ha = 0; - this.b = [0, 0, 0, 0, 0, 0, 0, 0]; - this.h = [0, 0, 0, 0]; - this.L = void 0; - this.M = a; - this.D = false; - this.K = { progress: {}, seeded: {} }; - this.u = this.ga = 0; - this.I = 1; - this.J = 2; - this.ca = 65536; - this.T = [0, 48, 64, 96, 128, 192, 256, 384, 512, 768, 1024]; - this.da = 3e4; - this.ba = 80; - }; - sjcl2.prng.prototype = { - randomWords: function(a, b) { - var c = [], d; - d = this.isReady(b); - var e; - if (d === this.u) throw new sjcl2.exception.notReady("generator isn't seeded"); - if (d & this.J) { - d = !(d & this.I); - e = []; - var f = 0, g; - this.Z = e[0] = (/* @__PURE__ */ new Date()).valueOf() + this.da; - for (g = 0; 16 > g; g++) e.push(4294967296 * Math.random() | 0); - for (g = 0; g < this.c.length && (e = e.concat(this.c[g].finalize()), f += this.m[g], this.m[g] = 0, d || !(this.P & 1 << g)); g++) ; - this.P >= 1 << this.c.length && (this.c.push(new sjcl2.hash.sha256()), this.m.push(0)); - this.f -= f; - f > this.o && (this.o = f); - this.P++; - this.b = sjcl2.hash.sha256.hash(this.b.concat(e)); - this.L = new sjcl2.cipher.aes(this.b); - for (d = 0; 4 > d && (this.h[d] = this.h[d] + 1 | 0, !this.h[d]); d++) ; - } - for (d = 0; d < a; d += 4) 0 === (d + 1) % this.ca && y(this), e = z(this), c.push(e[0], e[1], e[2], e[3]); - y(this); - return c.slice(0, a); - }, - setDefaultParanoia: function(a, b) { - if (0 === a && "Setting paranoia=0 will ruin your security; use it only for testing" !== b) throw new sjcl2.exception.invalid("Setting paranoia=0 will ruin your security; use it only for testing"); - this.M = a; - }, - addEntropy: function(a, b, c) { - c = c || "user"; - var d, e, f = (/* @__PURE__ */ new Date()).valueOf(), g = this.H[c], h = this.isReady(), k = 0; - d = this.U[c]; - void 0 === d && (d = this.U[c] = this.ha++); - void 0 === g && (g = this.H[c] = 0); - this.H[c] = (this.H[c] + 1) % this.c.length; - switch (typeof a) { - case "number": - void 0 === b && (b = 1); - this.c[g].update([d, this.N++, 1, b, f, 1, a | 0]); - break; - case "object": - c = Object.prototype.toString.call(a); - if ("[object Uint32Array]" === c) { - e = []; - for (c = 0; c < a.length; c++) e.push(a[c]); - a = e; - } else for ("[object Array]" !== c && (k = 1), c = 0; c < a.length && !k; c++) "number" !== typeof a[c] && (k = 1); - if (!k) { - if (void 0 === b) for (c = b = 0; c < a.length; c++) for (e = a[c]; 0 < e; ) b++, e = e >>> 1; - this.c[g].update([d, this.N++, 2, b, f, a.length].concat(a)); - } - break; - case "string": - void 0 === b && (b = a.length); - this.c[g].update([d, this.N++, 3, b, f, a.length]); - this.c[g].update(a); - break; - default: - k = 1; - } - if (k) throw new sjcl2.exception.bug("random: addEntropy only supports number, array of numbers or string"); - this.m[g] += b; - this.f += b; - h === this.u && (this.isReady() !== this.u && A("seeded", Math.max(this.o, this.f)), A("progress", this.getProgress())); - }, - isReady: function(a) { - a = this.T[void 0 !== a ? a : this.M]; - return this.o && this.o >= a ? this.m[0] > this.ba && (/* @__PURE__ */ new Date()).valueOf() > this.Z ? this.J | this.I : this.I : this.f >= a ? this.J | this.u : this.u; - }, - getProgress: function(a) { - a = this.T[a ? a : this.M]; - return this.o >= a ? 1 : this.f > a ? 1 : this.f / a; - }, - startCollectors: function() { - if (!this.D) { - this.a = { loadTimeCollector: B(this, this.ma), mouseCollector: B(this, this.oa), keyboardCollector: B(this, this.la), accelerometerCollector: B(this, this.ea), touchCollector: B(this, this.qa) }; - if (window.addEventListener) window.addEventListener( - "load", - this.a.loadTimeCollector, - false - ), window.addEventListener("mousemove", this.a.mouseCollector, false), window.addEventListener("keypress", this.a.keyboardCollector, false), window.addEventListener("devicemotion", this.a.accelerometerCollector, false), window.addEventListener("touchmove", this.a.touchCollector, false); - else if (document.attachEvent) document.attachEvent("onload", this.a.loadTimeCollector), document.attachEvent("onmousemove", this.a.mouseCollector), document.attachEvent("keypress", this.a.keyboardCollector); - else throw new sjcl2.exception.bug("can't attach event"); - this.D = true; - } - }, - stopCollectors: function() { - this.D && (window.removeEventListener ? (window.removeEventListener("load", this.a.loadTimeCollector, false), window.removeEventListener("mousemove", this.a.mouseCollector, false), window.removeEventListener("keypress", this.a.keyboardCollector, false), window.removeEventListener("devicemotion", this.a.accelerometerCollector, false), window.removeEventListener("touchmove", this.a.touchCollector, false)) : document.detachEvent && (document.detachEvent("onload", this.a.loadTimeCollector), document.detachEvent( - "onmousemove", - this.a.mouseCollector - ), document.detachEvent("keypress", this.a.keyboardCollector)), this.D = false); - }, - addEventListener: function(a, b) { - this.K[a][this.ga++] = b; - }, - removeEventListener: function(a, b) { - var c, d, e = this.K[a], f = []; - for (d in e) e.hasOwnProperty(d) && e[d] === b && f.push(d); - for (c = 0; c < f.length; c++) d = f[c], delete e[d]; - }, - la: function() { - C(this, 1); - }, - oa: function(a) { - var b, c; - try { - b = a.x || a.clientX || a.offsetX || 0, c = a.y || a.clientY || a.offsetY || 0; - } catch (d) { - c = b = 0; - } - 0 != b && 0 != c && this.addEntropy([b, c], 2, "mouse"); - C(this, 0); - }, - qa: function(a) { - a = a.touches[0] || a.changedTouches[0]; - this.addEntropy([a.pageX || a.clientX, a.pageY || a.clientY], 1, "touch"); - C(this, 0); - }, - ma: function() { - C(this, 2); - }, - ea: function(a) { - a = a.accelerationIncludingGravity.x || a.accelerationIncludingGravity.y || a.accelerationIncludingGravity.z; - if (window.orientation) { - var b = window.orientation; - "number" === typeof b && this.addEntropy(b, 1, "accelerometer"); - } - a && this.addEntropy(a, 2, "accelerometer"); - C(this, 0); - } - }; - function A(a, b) { - var c, d = sjcl2.random.K[a], e = []; - for (c in d) d.hasOwnProperty(c) && e.push(d[c]); - for (c = 0; c < e.length; c++) e[c](b); - } - function C(a, b) { - "undefined" !== typeof window && window.performance && "function" === typeof window.performance.now ? a.addEntropy(window.performance.now(), b, "loadtime") : a.addEntropy((/* @__PURE__ */ new Date()).valueOf(), b, "loadtime"); - } - function y(a) { - a.b = z(a).concat(z(a)); - a.L = new sjcl2.cipher.aes(a.b); - } - function z(a) { - for (var b = 0; 4 > b && (a.h[b] = a.h[b] + 1 | 0, !a.h[b]); b++) ; - return a.L.encrypt(a.h); - } - function B(a, b) { - return function() { - b.apply(a, arguments); - }; - } - sjcl2.random = new sjcl2.prng(6); - a: try { - if (G = "undefined" !== typeof module && module.exports) { - try { - H = __require("crypto"); - } catch (a) { - H = null; - } - G = E = H; - } - if (G && E.randomBytes) D = E.randomBytes(128), D = new Uint32Array(new Uint8Array(D).buffer), sjcl2.random.addEntropy(D, 1024, "crypto['randomBytes']"); - else if ("undefined" !== typeof window && "undefined" !== typeof Uint32Array) { - F = new Uint32Array(32); - if (window.crypto && window.crypto.getRandomValues) window.crypto.getRandomValues(F); - else if (window.msCrypto && window.msCrypto.getRandomValues) window.msCrypto.getRandomValues(F); - else break a; - sjcl2.random.addEntropy(F, 1024, "crypto['getRandomValues']"); - } - } catch (a) { - "undefined" !== typeof window && window.console && (console.log("There was an error collecting entropy from the browser:"), console.log(a)); - } - var D; - var E; - var F; - var G; - var H; - sjcl2.json = { defaults: { v: 1, iter: 1e4, ks: 128, ts: 64, mode: "ccm", adata: "", cipher: "aes" }, ja: function(a, b, c, d) { - c = c || {}; - d = d || {}; - var e = sjcl2.json, f = e.g({ iv: sjcl2.random.randomWords(4, 0) }, e.defaults), g; - e.g(f, c); - c = f.adata; - "string" === typeof f.salt && (f.salt = sjcl2.codec.base64.toBits(f.salt)); - "string" === typeof f.iv && (f.iv = sjcl2.codec.base64.toBits(f.iv)); - if (!sjcl2.mode[f.mode] || !sjcl2.cipher[f.cipher] || "string" === typeof a && 100 >= f.iter || 64 !== f.ts && 96 !== f.ts && 128 !== f.ts || 128 !== f.ks && 192 !== f.ks && 256 !== f.ks || 2 > f.iv.length || 4 < f.iv.length) throw new sjcl2.exception.invalid("json encrypt: invalid parameters"); - "string" === typeof a ? (g = sjcl2.misc.cachedPbkdf2(a, f), a = g.key.slice(0, f.ks / 32), f.salt = g.salt) : sjcl2.ecc && a instanceof sjcl2.ecc.elGamal.publicKey && (g = a.kem(), f.kemtag = g.tag, a = g.key.slice(0, f.ks / 32)); - "string" === typeof b && (b = sjcl2.codec.utf8String.toBits(b)); - "string" === typeof c && (f.adata = c = sjcl2.codec.utf8String.toBits(c)); - g = new sjcl2.cipher[f.cipher](a); - e.g(d, f); - d.key = a; - f.ct = "ccm" === f.mode && sjcl2.arrayBuffer && sjcl2.arrayBuffer.ccm && b instanceof ArrayBuffer ? sjcl2.arrayBuffer.ccm.encrypt(g, b, f.iv, c, f.ts) : sjcl2.mode[f.mode].encrypt(g, b, f.iv, c, f.ts); - return f; - }, encrypt: function(a, b, c, d) { - var e = sjcl2.json, f = e.ja.apply(e, arguments); - return e.encode(f); - }, ia: function(a, b, c, d) { - c = c || {}; - d = d || {}; - var e = sjcl2.json; - b = e.g(e.g(e.g({}, e.defaults), b), c, true); - var f, g; - f = b.adata; - "string" === typeof b.salt && (b.salt = sjcl2.codec.base64.toBits(b.salt)); - "string" === typeof b.iv && (b.iv = sjcl2.codec.base64.toBits(b.iv)); - if (!sjcl2.mode[b.mode] || !sjcl2.cipher[b.cipher] || "string" === typeof a && 100 >= b.iter || 64 !== b.ts && 96 !== b.ts && 128 !== b.ts || 128 !== b.ks && 192 !== b.ks && 256 !== b.ks || !b.iv || 2 > b.iv.length || 4 < b.iv.length) throw new sjcl2.exception.invalid("json decrypt: invalid parameters"); - "string" === typeof a ? (g = sjcl2.misc.cachedPbkdf2(a, b), a = g.key.slice(0, b.ks / 32), b.salt = g.salt) : sjcl2.ecc && a instanceof sjcl2.ecc.elGamal.secretKey && (a = a.unkem(sjcl2.codec.base64.toBits(b.kemtag)).slice(0, b.ks / 32)); - "string" === typeof f && (f = sjcl2.codec.utf8String.toBits(f)); - g = new sjcl2.cipher[b.cipher](a); - f = "ccm" === b.mode && sjcl2.arrayBuffer && sjcl2.arrayBuffer.ccm && b.ct instanceof ArrayBuffer ? sjcl2.arrayBuffer.ccm.decrypt(g, b.ct, b.iv, b.tag, f, b.ts) : sjcl2.mode[b.mode].decrypt(g, b.ct, b.iv, f, b.ts); - e.g(d, b); - d.key = a; - return 1 === c.raw ? f : sjcl2.codec.utf8String.fromBits(f); - }, decrypt: function(a, b, c, d) { - var e = sjcl2.json; - return e.ia(a, e.decode(b), c, d); - }, encode: function(a) { - var b, c = "{", d = ""; - for (b in a) if (a.hasOwnProperty(b)) { - if (!b.match(/^[a-z0-9]+$/i)) throw new sjcl2.exception.invalid("json encode: invalid property name"); - c += d + '"' + b + '":'; - d = ","; - switch (typeof a[b]) { - case "number": - case "boolean": - c += a[b]; - break; - case "string": - c += '"' + escape(a[b]) + '"'; - break; - case "object": - c += '"' + sjcl2.codec.base64.fromBits(a[b], 0) + '"'; - break; - default: - throw new sjcl2.exception.bug("json encode: unsupported type"); - } - } - return c + "}"; - }, decode: function(a) { - a = a.replace(/\s/g, ""); - if (!a.match(/^\{.*\}$/)) throw new sjcl2.exception.invalid("json decode: this isn't json!"); - a = a.replace(/^\{|\}$/g, "").split(/,/); - var b = {}, c, d; - for (c = 0; c < a.length; c++) { - if (!(d = a[c].match(/^\s*(?:(["']?)([a-z][a-z0-9]*)\1)\s*:\s*(?:(-?\d+)|"([a-z0-9+\/%*_.@=\-]*)"|(true|false))$/i))) throw new sjcl2.exception.invalid("json decode: this isn't json!"); - null != d[3] ? b[d[2]] = parseInt(d[3], 10) : null != d[4] ? b[d[2]] = d[2].match(/^(ct|adata|salt|iv)$/) ? sjcl2.codec.base64.toBits(d[4]) : unescape(d[4]) : null != d[5] && (b[d[2]] = "true" === d[5]); - } - return b; - }, g: function(a, b, c) { - void 0 === a && (a = {}); - if (void 0 === b) return a; - for (var d in b) if (b.hasOwnProperty(d)) { - if (c && void 0 !== a[d] && a[d] !== b[d]) throw new sjcl2.exception.invalid("required parameter overridden"); - a[d] = b[d]; - } - return a; - }, sa: function(a, b) { - var c = {}, d; - for (d in a) a.hasOwnProperty(d) && a[d] !== b[d] && (c[d] = a[d]); - return c; - }, ra: function(a, b) { - var c = {}, d; - for (d = 0; d < b.length; d++) void 0 !== a[b[d]] && (c[b[d]] = a[b[d]]); - return c; - } }; - sjcl2.encrypt = sjcl2.json.encrypt; - sjcl2.decrypt = sjcl2.json.decrypt; - sjcl2.misc.pa = {}; - sjcl2.misc.cachedPbkdf2 = function(a, b) { - var c = sjcl2.misc.pa, d; - b = b || {}; - d = b.iter || 1e3; - c = c[a] = c[a] || {}; - d = c[d] = c[d] || { firstSalt: b.salt && b.salt.length ? b.salt.slice(0) : sjcl2.random.randomWords(2, 0) }; - c = void 0 === b.salt ? d.firstSalt : b.salt; - d[c] = d[c] || sjcl2.misc.pbkdf2(a, c, b.iter); - return { key: d[c].slice(0), salt: c.slice(0) }; - }; - "undefined" !== typeof module && module.exports && (module.exports = sjcl2); - "function" === typeof define && define([], function() { - return sjcl2; - }); - } -}); - -// src/worker/main.ts -var import_events = __toESM(require_events()); - -// node_modules/.deno/neverthrow@8.0.0/node_modules/neverthrow/dist/index.es.js -var defaultErrorConfig = { - withStackTrace: false -}; -var createNeverThrowError = (message, result, config = defaultErrorConfig) => { - const data = result.isOk() ? { type: "Ok", value: result.value } : { type: "Err", value: result.error }; - const maybeStack = config.withStackTrace ? new Error().stack : void 0; - return { - data, - message, - stack: maybeStack - }; -}; -function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function(resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, [])).next()); - }); -} -function __values(o) { - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; - if (m) return m.call(o); - if (o && typeof o.length === "number") return { - next: function() { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); -} -function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); -} -function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { - return this; - }, i; - function verb(n) { - if (g[n]) i[n] = function(v) { - return new Promise(function(a, b) { - q.push([n, v, a, b]) > 1 || resume(n, v); - }); - }; - } - function resume(n, v) { - try { - step(g[n](v)); - } catch (e) { - settle(q[0][3], e); - } - } - function step(r) { - r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); - } - function fulfill(value) { - resume("next", value); - } - function reject(value) { - resume("throw", value); - } - function settle(f, v) { - if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); - } -} -function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function(e) { - throw e; - }), verb("return"), i[Symbol.iterator] = function() { - return this; - }, i; - function verb(n, f) { - i[n] = o[n] ? function(v) { - return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; - } : f; - } -} -function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { - return this; - }, i); - function verb(n) { - i[n] = o[n] && function(v) { - return new Promise(function(resolve, reject) { - v = o[n](v), settle(resolve, reject, v.done, v.value); - }); - }; - } - function settle(resolve, reject, d, v) { - Promise.resolve(v).then(function(v2) { - resolve({ value: v2, done: d }); - }, reject); - } -} -var ResultAsync = class _ResultAsync { - constructor(res) { - this._promise = res; - } - static fromSafePromise(promise) { - const newPromise = promise.then((value) => new Ok(value)); - return new _ResultAsync(newPromise); - } - static fromPromise(promise, errorFn) { - const newPromise = promise.then((value) => new Ok(value)).catch((e) => new Err(errorFn(e))); - return new _ResultAsync(newPromise); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any - static fromThrowable(fn, errorFn) { - return (...args) => { - return new _ResultAsync((() => __awaiter(this, void 0, void 0, function* () { - try { - return new Ok(yield fn(...args)); - } catch (error) { - return new Err(errorFn ? errorFn(error) : error); - } - }))()); - }; - } - static combine(asyncResultList) { - return combineResultAsyncList(asyncResultList); - } - static combineWithAllErrors(asyncResultList) { - return combineResultAsyncListWithAllErrors(asyncResultList); - } - map(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return new Err(res.error); - } - return new Ok(yield f(res.value)); - }))); - } - andThrough(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return new Err(res.error); - } - const newRes = yield f(res.value); - if (newRes.isErr()) { - return new Err(newRes.error); - } - return new Ok(res.value); - }))); - } - andTee(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return new Err(res.error); - } - try { - yield f(res.value); - } catch (e) { - } - return new Ok(res.value); - }))); - } - mapErr(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isOk()) { - return new Ok(res.value); - } - return new Err(yield f(res.error)); - }))); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThen(f) { - return new _ResultAsync(this._promise.then((res) => { - if (res.isErr()) { - return new Err(res.error); - } - const newValue = f(res.value); - return newValue instanceof _ResultAsync ? newValue._promise : newValue; - })); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - orElse(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return f(res.error); - } - return new Ok(res.value); - }))); - } - match(ok2, _err) { - return this._promise.then((res) => res.match(ok2, _err)); - } - unwrapOr(t) { - return this._promise.then((res) => res.unwrapOr(t)); - } - /** - * Emulates Rust's `?` operator in `safeTry`'s body. See also `safeTry`. - */ - safeUnwrap() { - return __asyncGenerator(this, arguments, function* safeUnwrap_1() { - return yield __await(yield __await(yield* __asyncDelegator(__asyncValues(yield __await(this._promise.then((res) => res.safeUnwrap())))))); - }); - } - // Makes ResultAsync implement PromiseLike - then(successCallback, failureCallback) { - return this._promise.then(successCallback, failureCallback); - } -}; -var okAsync = (value) => new ResultAsync(Promise.resolve(new Ok(value))); -var errAsync = (err2) => new ResultAsync(Promise.resolve(new Err(err2))); -var fromPromise = ResultAsync.fromPromise; -var fromSafePromise = ResultAsync.fromSafePromise; -var fromAsyncThrowable = ResultAsync.fromThrowable; -var combineResultList = (resultList) => { - let acc = ok([]); - for (const result of resultList) { - if (result.isErr()) { - acc = err(result.error); - break; - } else { - acc.map((list) => list.push(result.value)); - } - } - return acc; -}; -var combineResultAsyncList = (asyncResultList) => ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultList); -var combineResultListWithAllErrors = (resultList) => { - let acc = ok([]); - for (const result of resultList) { - if (result.isErr() && acc.isErr()) { - acc.error.push(result.error); - } else if (result.isErr() && acc.isOk()) { - acc = err([result.error]); - } else if (result.isOk() && acc.isOk()) { - acc.value.push(result.value); - } - } - return acc; -}; -var combineResultAsyncListWithAllErrors = (asyncResultList) => ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultListWithAllErrors); -var Result; -(function(Result2) { - function fromThrowable2(fn, errorFn) { - return (...args) => { - try { - const result = fn(...args); - return ok(result); - } catch (e) { - return err(errorFn ? errorFn(e) : e); - } - }; - } - Result2.fromThrowable = fromThrowable2; - function combine(resultList) { - return combineResultList(resultList); - } - Result2.combine = combine; - function combineWithAllErrors(resultList) { - return combineResultListWithAllErrors(resultList); - } - Result2.combineWithAllErrors = combineWithAllErrors; -})(Result || (Result = {})); -var ok = (value) => new Ok(value); -function err(err2) { - return new Err(err2); -} -var Ok = class { - constructor(value) { - this.value = value; - } - isOk() { - return true; - } - isErr() { - return !this.isOk(); - } - map(f) { - return ok(f(this.value)); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - mapErr(_f) { - return ok(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThen(f) { - return f(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThrough(f) { - return f(this.value).map((_value) => this.value); - } - andTee(f) { - try { - f(this.value); - } catch (e) { - } - return ok(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - orElse(_f) { - return ok(this.value); - } - asyncAndThen(f) { - return f(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - asyncAndThrough(f) { - return f(this.value).map(() => this.value); - } - asyncMap(f) { - return ResultAsync.fromSafePromise(f(this.value)); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - unwrapOr(_v) { - return this.value; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - match(ok2, _err) { - return ok2(this.value); - } - safeUnwrap() { - const value = this.value; - return function* () { - return value; - }(); - } - _unsafeUnwrap(_) { - return this.value; - } - _unsafeUnwrapErr(config) { - throw createNeverThrowError("Called `_unsafeUnwrapErr` on an Ok", this, config); - } -}; -var Err = class { - constructor(error) { - this.error = error; - } - isOk() { - return false; - } - isErr() { - return !this.isOk(); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - map(_f) { - return err(this.error); - } - mapErr(f) { - return err(f(this.error)); - } - andThrough(_f) { - return err(this.error); - } - andTee(_f) { - return err(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThen(_f) { - return err(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - orElse(f) { - return f(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - asyncAndThen(_f) { - return errAsync(this.error); - } - asyncAndThrough(_f) { - return errAsync(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - asyncMap(_f) { - return errAsync(this.error); - } - unwrapOr(v) { - return v; - } - match(_ok, err2) { - return err2(this.error); - } - safeUnwrap() { - const error = this.error; - return function* () { - yield err(error); - throw new Error("Do not use this generator out of `safeTry`"); - }(); - } - _unsafeUnwrap(config) { - throw createNeverThrowError("Called `_unsafeUnwrap` on an Err", this, config); - } - _unsafeUnwrapErr(_) { - return this.error; - } -}; -var fromThrowable = Result.fromThrowable; - -// src/error/base-error.ts -var BaseError = class extends Error { - constructor(message, options = {}) { - const { cause, context } = options; - super(message, { cause }); - __publicField(this, "context"); - this.name = this.constructor.name; - this.context = context; - } -}; - -// src/utils.ts -var ensureError = (value) => { - if (value instanceof Error) return value; - let stringified = "[Unable to stringify the thrown value]"; - try { - stringified = JSON.stringify(value); - } catch (_error) { - } - const error = new Error(stringified); - return error; -}; -var isDenoRuntime = () => typeof Deno !== "undefined"; -var workerUrl = (relativePath) => isDenoRuntime() ? new URL(`./worker/${relativePath}.ts`, new URL(".", import.meta.url).href) : new URL( - import.meta.resolve( - `./${relativePath === "main" ? `worker/${relativePath}` : relativePath}.js` - ) -); - -// src/worker/main.ts -var events = new import_events.default(); -var worker; -var isInitialized = false; -self.onmessage = (event) => { - addWorker(event); - if (!isInitialized) { - isInitialized = true; - events.once("OPERATION_FAILED" /* OPERATION_FAILED */, () => { - if (worker) { - worker.terminate(); - } - }); - } -}; -var updateFile = (lufiFile, args) => { - Object.assign(lufiFile, args); - if (typeof WorkerGlobalScope !== "undefined") { - self.postMessage({ - event: "FILE_UPDATED" /* FILE_UPDATED */, - lufiFile - }); - } - return lufiFile; -}; -var addWorker = (event, callback) => { - const { action } = event.data; - if (action === 5 /* PAUSE */ || action === 8 /* RESUME */) { - worker.postMessage(event.data); - } else { - switch (action) { - case 2 /* CANCEL */: - { - worker = new Worker(workerUrl("cancel"), { type: "module" }); - worker.postMessage(event.data); - } - break; - case 3 /* DOWNLOAD */: - { - worker = new Worker(workerUrl("download"), { type: "module" }); - worker.postMessage(event.data); - } - break; - case 4 /* INFOS */: - { - worker = new Worker(workerUrl("infos"), { type: "module" }); - worker.postMessage(event.data); - } - break; - case 7 /* REMOVE */: - { - worker = worker || new Worker(workerUrl("remove"), { type: "module" }); - worker.postMessage(event.data); - } - break; - case 9 /* UPLOAD */: - { - worker = worker || new Worker(workerUrl("upload"), { type: "module" }); - worker.postMessage(event.data); - } - break; - default: { - console.error("Action not found"); - } - } - worker.onmessage = (e) => { - if (callback) callback(e); - self.postMessage(e.data); - }; - worker.onerror = (error) => { - console.error(`Error: ${error.message}`); - }; - } -}; -var init = () => { - events.once("SOCKET_OPENED" /* SOCKET_OPENED */, () => { - self.postMessage({ - event: "SOCKET_OPENED" /* SOCKET_OPENED */ - }); - }); - events.once("OPERATION_FAILED" /* OPERATION_FAILED */, (error) => { - self.postMessage({ event: "OPERATION_FAILED" /* OPERATION_FAILED */, error }); - }); -}; - -// src/error/websocket/websocket-error.ts -var WebSocketError = class extends BaseError { -}; - -// src/error/websocket/websocket-connection-error.ts -var WebSocketConnectionError = class extends WebSocketError { - constructor() { - super(...arguments); - __publicField(this, "message", "An error occured while trying to connect to WebSocket"); - } -}; - -// node_modules/.deno/arraybuffer-encoding@1.1.0/node_modules/arraybuffer-encoding/dist/esm/base64/encoding.js -var Encoding = class { - /** - * - * @param charset Charset to use for base64 encoding. This must be 64-characters long. - * @param noPadding If true, encoded strings won't include padding. - */ - constructor(charset, noPadding) { - if (!charset || charset.length != 64) { - throw Error("Charset must contain 64 characters"); - } - this._charset = charset; - this._noPadding = !!noPadding; - this._valid = new RegExp("^[" + this._charset.replace("-", "\\-") + "]+={0,2}$"); - } - /** - * Encode an ArrayBuffer to base64 in a string. - * @param ab Data to encode to base64 - * @returns Base64-encoded string - */ - Encode(ab) { - const len = ab.byteLength; - if (!len) { - return ""; - } - const view = new Uint8Array(ab); - let res = ""; - for (let i = 0; i < len; i += 3) { - res += this._charset[view[i] >> 2] + this._charset[(view[i] & 3) << 4 | view[i + 1] >> 4] + this._charset[(view[i + 1] & 15) << 2 | view[i + 2] >> 6] + this._charset[view[i + 2] & 63]; - } - if (len % 3 == 2) { - res = res.substring(0, res.length - 1); - if (!this._noPadding) { - res += "="; - } - } else if (len % 3 == 1) { - res = res.substring(0, res.length - 2); - if (!this._noPadding) { - res += "=="; - } - } - return res; - } - /** - * Decode a string from base64. Padding is always optional. - * @param str Base64-encoded string - * @returns Data decoded from the base64 string - */ - Decode(str) { - str = (str || "").replace(/[\s]/g, ""); - if (!str) { - return new ArrayBuffer(0); - } - if (!this._valid.test(str)) { - throw Error("Invalid base64 input sequence"); - } - let viewLen = Math.floor(str.length * 0.75); - if (str[str.length - 2] == "=") { - viewLen -= 2; - } else if (str[str.length - 1] == "=") { - viewLen--; - } - const view = new Uint8Array(viewLen); - let enc1, enc2, enc3, enc4, i = 0, j = 0; - while (i < str.length * 0.75) { - enc1 = this._charset.indexOf(str.charAt(j++)); - enc2 = this._charset.indexOf(str.charAt(j++)); - enc3 = this._charset.indexOf(str.charAt(j++)); - enc4 = this._charset.indexOf(str.charAt(j++)); - view[i++] = enc1 << 2 | enc2 >> 4; - view[i++] = (enc2 & 15) << 4 | enc3 >> 2; - view[i++] = (enc3 & 3) << 6 | enc4; - } - return view.buffer; - } -}; - -// node_modules/.deno/arraybuffer-encoding@1.1.0/node_modules/arraybuffer-encoding/dist/esm/base64/standard.js -var obj = new Encoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"); -function Decode(str) { - return obj.Decode(str); -} - -// node_modules/.deno/arraybuffer-encoding@1.1.0/node_modules/arraybuffer-encoding/dist/esm/base64/url.js -var obj2 = new Encoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_", true); -function Decode2(str) { - return obj2.Decode(str); -} - -// src/api/crypto/sjcl.ts -var import_sjcl = __toESM(require_sjcl()); - -// src/error/crypto/crypto-error.ts -var CryptoError = class extends BaseError { -}; - -// src/error/crypto/decryption-error.ts -var DecryptionError = class extends CryptoError { - constructor() { - super(...arguments); - __publicField(this, "message", "Unable to decrypt the provided data"); - } -}; - -// src/api/crypto/sjcl.ts -var decrypt = (key, encryptedData) => { - try { - const data = typeof encryptedData === "string" ? encryptedData : encryptedData.data; - return okAsync(Decode(import_sjcl.default.decrypt(key, data))); - } catch (error) { - return errAsync( - new DecryptionError(void 0, { cause: ensureError(error) }) - ); - } -}; - -// src/api/crypto/web.ts -var decrypt2 = (key, encrypted) => { - return importKey(key).andThen( - (importedKey) => ResultAsync.fromPromise( - crypto.subtle.decrypt( - { - name: "AES-GCM", - iv: encrypted.iv - }, - importedKey, - Decode(encrypted.data) - ), - (error) => new DecryptionError(void 0, { cause: ensureError(error) }) - ) - ); -}; -var importKey = (key) => { - return ResultAsync.fromPromise( - crypto.subtle.importKey( - "raw", - Decode2(key), - { name: "AES-GCM" }, - false, - [ - "encrypt", - "decrypt" - ] - ), - (error) => new CryptoError("Unable to import cryptography key", { - cause: ensureError(error) - }) - ); -}; - -// src/api/crypto.ts -var decrypt3 = (key, value) => { - return value.algo === void 0 || value.algo === 0 /* Sjcl */ ? decrypt(key, value) : decrypt2(key, value); -}; - -// src/api/websocket.ts -var sockets = {}; -var MAX_ERRORS = 5; -var onCancelMessage = (data) => { - events.emit("UPLOAD_CANCELLED" /* UPLOAD_CANCELLED */, data.success); - return okAsync(void 0); -}; -var onDownloadMessage = (response, lufiFile) => { - const result = response.split("XXMOJOXX"); - const metadataString = result.shift(); - if (metadataString !== void 0) { - const metadata = JSON.parse(metadataString); - if (isServerDownloadChunkSuccessMetadata(metadata)) { - const dataString = result.shift(); - if (dataString) { - const encryptedData = JSON.parse(dataString); - if (encryptedData.iv) { - encryptedData.iv = new Uint8Array(Object.values(encryptedData.iv)); - } - return decrypt3(lufiFile.keys.client, encryptedData).andThen( - (decryptedPart) => { - const chunk = typeof decryptedPart === "string" ? new TextEncoder().encode(decryptedPart).buffer : decryptedPart; - if (metadata.part === 0) { - updateFile(lufiFile, { - chunksReady: lufiFile.chunksReady + 1, - delAtFirstView: metadata.del_at_first_view, - delay: metadata.delay, - name: metadata.name, - size: metadata.size, - totalChunks: metadata.total, - type: metadata.type, - zipped: metadata.zipped - }); - events.emit("DOWNLOAD_STARTED" /* DOWNLOAD_STARTED */); - } else { - updateFile(lufiFile, { chunksReady: lufiFile.chunksReady + 1 }); - } - events.emit("CHUNK_DOWNLOADED" /* CHUNK_DOWNLOADED */, chunk, metadata.part); - if (++metadata.part === metadata.total) { - return endDownload(lufiFile).andThen(() => { - events.emit("DOWNLOAD_COMPLETE" /* DOWNLOAD_COMPLETE */); - events.emit("SOCKET_OPERATION_TERMINATED" /* SOCKET_OPERATION_TERMINATED */); - return okAsync(void 0); - }); - } - return okAsync(void 0); - } - ); - } else { - const error = new WebSocketError( - "Can't retrieve metadata from data received by the server" - ); - events.emit("OPERATION_FAILED" /* OPERATION_FAILED */, error); - return errAsync(error); - } - } else { - const error = new WebSocketError(metadata.msg); - events.emit("OPERATION_FAILED" /* OPERATION_FAILED */, error); - return errAsync(error); - } - } else { - const error = new WebSocketError( - "Can't retrieve metadata from data received by the server" - ); - events.emit("OPERATION_FAILED" /* OPERATION_FAILED */, error); - return errAsync(error); - } -}; -var onUploadMessage = (response, lufiFile) => { - if (response.success) { - if (response.j === 0) { - updateFile(lufiFile, { - keys: { client: lufiFile.keys.client, server: response.short }, - actionToken: response.token, - queueIndex: response.i - }); - events.emit("UPLOAD_STARTED" /* UPLOAD_STARTED */); - } - updateFile(lufiFile, { - chunksReady: lufiFile.chunksReady + 1, - createdAt: response.created_at - }); - events.emit("CHUNK_UPLOADED" /* CHUNK_UPLOADED */); - if (lufiFile.chunksReady === lufiFile.totalChunks) { - updateFile(lufiFile, { uploadStatus: 1 /* COMPLETE */ }); - events.emit("UPLOAD_COMPLETE" /* UPLOAD_COMPLETE */); - events.emit("SOCKET_OPERATION_TERMINATED" /* SOCKET_OPERATION_TERMINATED */); - } - return okAsync(void 0); - } else { - const error = new WebSocketError(response.msg); - events.emit("OPERATION_FAILED" /* OPERATION_FAILED */, error); - return errAsync(error); - } -}; -var onMessage = (e, lufiFile) => { - const data = tryParseJson(e.data); - let callback; - if (data) { - if (!data.action && data.msg) { - const error = new WebSocketError(data.msg); - events.emit("OPERATION_FAILED" /* OPERATION_FAILED */, error); - return errAsync(error); - } else { - if ("delay" in data) { - callback = onUploadMessage(data, lufiFile); - } else { - callback = onCancelMessage(data); - } - } - } else { - callback = onDownloadMessage(e.data, lufiFile); - } - return callback; -}; -var isConnecting = (socketKey) => sockets !== void 0 && sockets[socketKey] !== void 0 && sockets[socketKey].readyState === WebSocket.CONNECTING; -var isSpawned = (socketKey) => sockets !== void 0 && sockets[socketKey] !== void 0 && sockets[socketKey].readyState === WebSocket.OPEN; -var cancelUpload = (lufiFile) => { - return sendMessage( - uploadSocketUrl(lufiFile), - lufiFile, - `${JSON.stringify({ - id: lufiFile.keys.server, - mod_token: lufiFile.actionToken, - cancel: true, - i: lufiFile.queueIndex - })}XXMOJOXXuseless` - ); -}; -var endDownload = (lufiFile) => { - let message; - if (lufiFile.password) { - message = { ended: true, file_pwd: lufiFile.password }; - } else { - message = { ended: true }; - } - return sendMessage( - downloadSocketUrl(lufiFile), - lufiFile, - JSON.stringify(message) - ); -}; -var sendMessage = (socketUrl, lufiFile, message) => { - if (!isSpawned(socketUrl)) { - return spawn(socketUrl).andThen( - () => sendMessage(socketUrl, lufiFile, message) - ); - } else { - sockets[socketUrl].onmessage = (e) => onMessage(e, lufiFile); - sockets[socketUrl].send(message); - return okAsync(void 0); - } -}; -var spawn = (socketKey, errorCount = 0) => { - if (!isSpawned(socketKey) && !isConnecting(socketKey)) { - sockets[socketKey] = new WebSocket(socketKey); - events.once("SOCKET_OPERATION_TERMINATED" /* SOCKET_OPERATION_TERMINATED */, () => { - sockets[socketKey].close(); - }); - events.once("OPERATION_FAILED" /* OPERATION_FAILED */, () => { - events.emit("SOCKET_OPERATION_TERMINATED" /* SOCKET_OPERATION_TERMINATED */); - }); - sockets[socketKey].onopen = () => { - events.emit("SOCKET_OPENED" /* SOCKET_OPENED */); - }; - sockets[socketKey].onclose = () => { - }; - sockets[socketKey].onerror = () => { - if (++errorCount <= MAX_ERRORS) { - console.error( - `An error happened while trying to connect to WebSocket ${socketKey}. Trying again. ${errorCount} / ${MAX_ERRORS}` - ); - return spawn(socketKey, errorCount); - } else { - events.emit("SOCKET_ONERROR" /* SOCKET_ONERROR */); - return errAsync( - new WebSocketConnectionError( - `Unable to connect to WebSocket ${socketKey}.` - ) - ); - } - }; - } - return waitForConnection(socketKey).andThen(() => okAsync(socketKey)).orElse((error) => errAsync(error)); -}; -var waitForConnection = (socketKey) => ResultAsync.fromPromise( - new Promise((resolve, reject) => { - if (!isSpawned(socketKey)) { - events.once("SOCKET_OPENED" /* SOCKET_OPENED */, () => { - resolve(void 0); - }); - events.on("SOCKET_ONERROR" /* SOCKET_ONERROR */, () => { - reject(new WebSocketConnectionError()); - }); - } else { - resolve(void 0); - } - }), - (error) => { - return ensureError(error); - } -); -var buildSocketUrl = (instanceUrl, pathname) => { - const url = new URL(instanceUrl); - url.protocol = url.protocol === "http:" ? "ws:" : "wss:"; - url.pathname += pathname; - return new URL(url.origin + url.pathname); -}; -var downloadSocketUrl = (lufiFile) => { - return buildSocketUrl( - new URL(lufiFile.serverUrl), - "download" /* DOWNLOAD */ + `/${lufiFile.keys.server}` - ).toString(); -}; -var uploadSocketUrl = (lufiFile) => { - return buildSocketUrl(new URL(lufiFile.serverUrl), "upload" /* UPLOAD */).toString(); -}; -var tryParseJson = (data) => { - try { - const parsedObject = JSON.parse(data); - if (parsedObject && typeof parsedObject === "object") { - return parsedObject; - } - } catch (_e) { - } - return false; -}; -var isServerDownloadChunkSuccessMetadata = (message) => { - return typeof message === "object" && message !== null && !("msg" in message); -}; - -// src/worker/cancel.ts -var isInitiated = false; -self.onmessage = (event) => { - if (!isInitiated) { - init(); - isInitiated = true; - } - events.on("UPLOAD_CANCELLED" /* UPLOAD_CANCELLED */, (success) => { - self.postMessage({ event: "UPLOAD_CANCELLED" /* UPLOAD_CANCELLED */, success }); - }); - cancelUpload2(event.data).mapErr((error) => { - self.postMessage({ - event: "OPERATION_FAILED" /* OPERATION_FAILED */, - error - }); - }); -}; -var cancelUpload2 = (workerMessage) => cancelUpload(workerMessage.args.lufiFile); +var ze=Object.create;var ee=Object.defineProperty;var Ge=Object.getOwnPropertyDescriptor;var He=Object.getOwnPropertyNames;var $e=Object.getPrototypeOf,qe=Object.prototype.hasOwnProperty;var Ve=(e,t,r)=>t in e?ee(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var Ke=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var ae=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Ye=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of He(t))!qe.call(e,o)&&o!==r&&ee(e,o,{get:()=>t[o],enumerable:!(n=Ge(t,o))||n.enumerable});return e};var fe=(e,t,r)=>(r=e!=null?ze($e(e)):{},Ye(t||!e||!e.__esModule?ee(r,"default",{value:e,enumerable:!0}):r,e));var b=(e,t,r)=>Ve(e,typeof t!="symbol"?t+"":t,r);var Ee=ae((It,te)=>{"use strict";var T=typeof Reflect=="object"?Reflect:null,ue=T&&typeof T.apply=="function"?T.apply:function(t,r,n){return Function.prototype.apply.call(t,r,n)},V;T&&typeof T.ownKeys=="function"?V=T.ownKeys:Object.getOwnPropertySymbols?V=function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:V=function(t){return Object.getOwnPropertyNames(t)};function Ze(e){console&&console.warn&&console.warn(e)}var le=Number.isNaN||function(t){return t!==t};function p(){p.init.call(this)}te.exports=p;te.exports.once=rt;p.EventEmitter=p;p.prototype._events=void 0;p.prototype._eventsCount=0;p.prototype._maxListeners=void 0;var he=10;function K(e){if(typeof e!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}Object.defineProperty(p,"defaultMaxListeners",{enumerable:!0,get:function(){return he},set:function(e){if(typeof e!="number"||e<0||le(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");he=e}});p.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};p.prototype.setMaxListeners=function(t){if(typeof t!="number"||t<0||le(t))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+t+".");return this._maxListeners=t,this};function de(e){return e._maxListeners===void 0?p.defaultMaxListeners:e._maxListeners}p.prototype.getMaxListeners=function(){return de(this)};p.prototype.emit=function(t){for(var r=[],n=1;n0&&(s=r[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var f=i[t];if(f===void 0)return!1;if(typeof f=="function")ue(f,this,r);else for(var u=f.length,l=ve(f,u),n=0;n0&&s.length>o&&!s.warned){s.warned=!0;var a=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");a.name="MaxListenersExceededWarning",a.emitter=e,a.type=t,a.count=s.length,Ze(a)}return e}p.prototype.addListener=function(t,r){return pe(this,t,r,!1)};p.prototype.on=p.prototype.addListener;p.prototype.prependListener=function(t,r){return pe(this,t,r,!0)};function Qe(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function me(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},o=Qe.bind(n);return o.listener=r,n.wrapFn=o,o}p.prototype.once=function(t,r){return K(r),this.on(t,me(this,t,r)),this};p.prototype.prependOnceListener=function(t,r){return K(r),this.prependListener(t,me(this,t,r)),this};p.prototype.removeListener=function(t,r){var n,o,i,s,a;if(K(r),o=this._events,o===void 0)return this;if(n=o[t],n===void 0)return this;if(n===r||n.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete o[t],o.removeListener&&this.emit("removeListener",t,n.listener||r));else if(typeof n!="function"){for(i=-1,s=n.length-1;s>=0;s--)if(n[s]===r||n[s].listener===r){a=n[s].listener,i=s;break}if(i<0)return this;i===0?n.shift():et(n,i),n.length===1&&(o[t]=n[0]),o.removeListener!==void 0&&this.emit("removeListener",t,a||r)}return this};p.prototype.off=p.prototype.removeListener;p.prototype.removeAllListeners=function(t){var r,n,o;if(n=this._events,n===void 0)return this;if(n.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):n[t]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete n[t]),this;if(arguments.length===0){var i=Object.keys(n),s;for(o=0;o=0;o--)this.removeListener(t,r[o]);return this};function ye(e,t,r){var n=e._events;if(n===void 0)return[];var o=n[t];return o===void 0?[]:typeof o=="function"?r?[o.listener||o]:[o]:r?tt(o):ve(o,o.length)}p.prototype.listeners=function(t){return ye(this,t,!0)};p.prototype.rawListeners=function(t){return ye(this,t,!1)};p.listenerCount=function(e,t){return typeof e.listenerCount=="function"?e.listenerCount(t):ge.call(e,t)};p.prototype.listenerCount=ge;function ge(e){var t=this._events;if(t!==void 0){var r=t[e];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}p.prototype.eventNames=function(){return this._eventsCount>0?V(this._events):[]};function ve(e,t){for(var r=new Array(t),n=0;n{"use strict";var c={cipher:{},hash:{},keyexchange:{},mode:{},misc:{},codec:{},exception:{corrupt:function(e){this.toString=function(){return"CORRUPT: "+this.message},this.message=e},invalid:function(e){this.toString=function(){return"INVALID: "+this.message},this.message=e},bug:function(e){this.toString=function(){return"BUG: "+this.message},this.message=e},notReady:function(e){this.toString=function(){return"NOT READY: "+this.message},this.message=e}}};c.cipher.aes=function(e){this.s[0][0][0]||this.O();var t,r,n,o,i=this.s[0][4],s=this.s[1];t=e.length;var a=1;if(t!==4&&t!==6&&t!==8)throw new c.exception.invalid("invalid aes key size");for(this.b=[n=e.slice(0),o=[]],e=t;e<4*t+28;e++)r=n[e-1],(e%t===0||t===8&&e%t===4)&&(r=i[r>>>24]<<24^i[r>>16&255]<<16^i[r>>8&255]<<8^i[r&255],e%t===0&&(r=r<<8^r>>>24^a<<24,a=a<<1^283*(a>>7))),n[e]=n[e-t]^r;for(t=0;e;t++,e--)r=n[t&3?e:e-4],o[t]=4>=e||4>t?r:s[0][i[r>>>24]]^s[1][i[r>>16&255]]^s[2][i[r>>8&255]]^s[3][i[r&255]]};c.cipher.aes.prototype={encrypt:function(e){return Ce(this,e,0)},decrypt:function(e){return Ce(this,e,1)},s:[[[],[],[],[],[]],[[],[],[],[],[]]],O:function(){var e=this.s[0],t=this.s[1],r=e[4],n=t[4],o,i,s,a=[],f=[],u,l,h,d;for(o=0;256>o;o++)f[(a[o]=o<<1^283*(o>>7))^o]=o;for(i=s=0;!r[i];i^=u||1,s=f[s]||1)for(h=s^s<<1^s<<2^s<<3^s<<4,h=h>>8^h&255^99,r[i]=h,n[h]=i,l=a[o=a[u=a[i]]],d=16843009*l^65537*o^257*u^16843008*i,l=257*a[h]^16843008*h,o=0;4>o;o++)e[o][i]=l=l<<24^l>>>8,t[o][h]=d=d<<24^d>>>8;for(o=0;5>o;o++)e[o]=e[o].slice(0),t[o]=t[o].slice(0)}};function Ce(e,t,r){if(t.length!==4)throw new c.exception.invalid("invalid aes block size");var n=e.b[r],o=t[0]^n[0],i=t[r?3:1]^n[1],s=t[2]^n[2];t=t[r?1:3]^n[3];var a,f,u,l=n.length/4-2,h,d=4,y=[0,0,0,0];a=e.s[r],e=a[0];var g=a[1],M=a[2],$=a[3],q=a[4];for(h=0;h>>24]^g[i>>16&255]^M[s>>8&255]^$[t&255]^n[d],f=e[i>>>24]^g[s>>16&255]^M[t>>8&255]^$[o&255]^n[d+1],u=e[s>>>24]^g[t>>16&255]^M[o>>8&255]^$[i&255]^n[d+2],t=e[t>>>24]^g[o>>16&255]^M[i>>8&255]^$[s&255]^n[d+3],d+=4,o=a,i=f,s=u;for(h=0;4>h;h++)y[r?3&-h:h]=q[o>>>24]<<24^q[i>>16&255]<<16^q[s>>8&255]<<8^q[t&255]^n[d++],a=o,o=i,i=s,s=t,t=a;return y}c.bitArray={bitSlice:function(e,t,r){return e=c.bitArray.$(e.slice(t/32),32-(t&31)).slice(1),r===void 0?e:c.bitArray.clamp(e,r-t)},extract:function(e,t,r){var n=Math.floor(-t-r&31);return((t+r-1^t)&-32?e[t/32|0]<<32-n^e[t/32+1|0]>>>n:e[t/32|0]>>>n)&(1<>t-1,1)),e},partial:function(e,t,r){return e===32?t:(r?t|0:t<<32-e)+1099511627776*e},getPartial:function(e){return Math.round(e/1099511627776)||32},equal:function(e,t){if(c.bitArray.bitLength(e)!==c.bitArray.bitLength(t))return!1;var r=0,n;for(n=0;n>>t),r=e[o]<<32-t;return o=e.length?e[e.length-1]:0,e=c.bitArray.getPartial(o),n.push(c.bitArray.partial(t+e&31,32>>24|r>>>8&65280|(r&65280)<<8|r<<24;return e}};c.codec.utf8String={fromBits:function(e){var t="",r=c.bitArray.bitLength(e),n,o;for(n=0;n>>8>>>8>>>8),o<<=8;return decodeURIComponent(escape(t))},toBits:function(e){e=unescape(encodeURIComponent(e));var t=[],r,n=0;for(r=0;r>>s)>>>o),sl){if(!t)try{return c.codec.base32hex.toBits(e)}catch{}throw new c.exception.invalid("this isn't "+h+"!")}a>o?(a-=o,i.push(u^l>>>a),u=l<>>o)>>>26),6>o?(s=e[r]<<6-o,o+=26,r++):(s<<=6,o-=6);for(;n.length&3&&!t;)n+="=";return n},toBits:function(e,t){e=e.replace(/\s|=/g,"");var r=[],n,o=0,i=c.codec.base64.B,s=0,a;for(t&&(i=i.substr(0,62)+"-_"),n=0;na)throw new c.exception.invalid("this isn't base64!");26>>o),s=a<<32-o):(o+=6,s^=a<<32-o)}return o&56&&r.push(c.bitArray.partial(o&56,s,1)),r}};c.codec.base64url={fromBits:function(e){return c.codec.base64.fromBits(e,1,1)},toBits:function(e){return c.codec.base64.toBits(e,1)}};c.hash.sha256=function(e){this.b[0]||this.O(),e?(this.F=e.F.slice(0),this.A=e.A.slice(0),this.l=e.l):this.reset()};c.hash.sha256.hash=function(e){return new c.hash.sha256().update(e).finalize()};c.hash.sha256.prototype={blockSize:512,reset:function(){return this.F=this.Y.slice(0),this.A=[],this.l=0,this},update:function(e){typeof e=="string"&&(e=c.codec.utf8String.toBits(e));var t,r=this.A=c.bitArray.concat(this.A,e);if(t=this.l,e=this.l=t+c.bitArray.bitLength(e),9007199254740991t;r++){for(o=!0,n=2;n*n<=r;n++)if(r%n===0){o=!1;break}o&&(8>t&&(this.Y[t]=e(Math.pow(r,.5))),this.b[t]=e(Math.pow(r,1/3)),t++)}}};function oe(e,t){var r,n,o,i=e.F,s=e.b,a=i[0],f=i[1],u=i[2],l=i[3],h=i[4],d=i[5],y=i[6],g=i[7];for(r=0;64>r;r++)16>r?n=t[r]:(n=t[r+1&15],o=t[r+14&15],n=t[r&15]=(n>>>7^n>>>18^n>>>3^n<<25^n<<14)+(o>>>17^o>>>19^o>>>10^o<<15^o<<13)+t[r&15]+t[r+9&15]|0),n=n+g+(h>>>6^h>>>11^h>>>25^h<<26^h<<21^h<<7)+(y^h&(d^y))+s[r],g=y,y=d,d=h,h=l+n|0,l=u,u=f,f=a,a=n+(f&u^l&(f^u))+(f>>>2^f>>>13^f>>>22^f<<30^f<<19^f<<10)|0;i[0]=i[0]+a|0,i[1]=i[1]+f|0,i[2]=i[2]+u|0,i[3]=i[3]+l|0,i[4]=i[4]+h|0,i[5]=i[5]+d|0,i[6]=i[6]+y|0,i[7]=i[7]+g|0}c.mode.ccm={name:"ccm",G:[],listenProgress:function(e){c.mode.ccm.G.push(e)},unListenProgress:function(e){e=c.mode.ccm.G.indexOf(e),-1f)throw new c.exception.invalid("ccm: iv must be at least 7 bytes");for(i=2;4>i&&u>>>8*i;i++);return i<15-f&&(i=15-f),r=a.clamp(r,8*(15-i)),t=c.mode.ccm.V(e,t,r,n,o,i),s=c.mode.ccm.C(e,s,r,t,o,i),a.concat(s.data,s.tag)},decrypt:function(e,t,r,n,o){o=o||64,n=n||[];var i=c.bitArray,s=i.bitLength(r)/8,u=i.bitLength(t),a=i.clamp(t,u-o),f=i.bitSlice(t,u-o),u=(u-o)/8;if(7>s)throw new c.exception.invalid("ccm: iv must be at least 7 bytes");for(t=2;4>t&&u>>>8*t;t++);if(t<15-s&&(t=15-s),r=i.clamp(r,8*(15-t)),a=c.mode.ccm.C(e,a,r,f,o,t),e=c.mode.ccm.V(e,a.data,r,n,o,t),!i.equal(a.tag,e))throw new c.exception.corrupt("ccm: tag doesn't match");return a.data},na:function(e,t,r,n,o,i){var s=[],a=c.bitArray,f=a.i;if(n=[a.partial(8,(t.length?64:0)|n-2<<2|i-1)],n=a.concat(n,r),n[3]|=o,n=e.encrypt(n),t.length)for(r=a.bitLength(t)/8,65279>=r?s=[a.partial(16,r)]:4294967295>=r&&(s=a.concat([a.partial(16,65534)],[r])),s=a.concat(s,t),t=0;to||16l&&(c.mode.ccm.fa(s/f),l+=h),r[3]++,o=e.encrypt(r),t[s]^=o[0],t[s+1]^=o[1],t[s+2]^=o[2],t[s+3]^=o[3];return{tag:n,data:a.clamp(t,u)}}};c.mode.ocb2={name:"ocb2",encrypt:function(e,t,r,n,o,i){if(c.bitArray.bitLength(r)!==128)throw new c.exception.invalid("ocb iv must be 128 bits");var s,a=c.mode.ocb2.S,f=c.bitArray,u=f.i,l=[0,0,0,0];r=a(e.encrypt(r));var h,d=[];for(n=n||[],o=o||64,s=0;s+4o.bitLength(r)&&(a=i(a,n(a)),r=o.concat(r,[-2147483648,0,0,0])),s=i(s,r),e.encrypt(i(n(i(a,n(a))),s))},S:function(e){return[e[0]<<1^e[1]>>>31,e[1]<<1^e[2]>>>31,e[2]<<1^e[3]>>>31,e[3]<<1^135*(e[0]>>>31)]}};c.mode.gcm={name:"gcm",encrypt:function(e,t,r,n,o){var i=t.slice(0);return t=c.bitArray,n=n||[],e=c.mode.gcm.C(!0,e,i,n,r,o||128),t.concat(e.data,e.tag)},decrypt:function(e,t,r,n,o){var i=t.slice(0),s=c.bitArray,a=s.bitLength(i);if(o=o||128,n=n||[],o<=a?(t=s.bitSlice(i,a-o),i=s.bitSlice(i,0,a-o)):(t=i,i=[]),e=c.mode.gcm.C(!1,e,i,n,r,o),!s.equal(e.tag,t))throw new c.exception.corrupt("gcm: tag doesn't match");return e.data},ka:function(e,t){var r,n,o,i,s,a=c.bitArray.i;for(o=[0,0,0,0],i=t.slice(0),r=0;128>r;r++){for((n=(e[Math.floor(r/32)]&1<<31-r%32)!==0)&&(o=a(o,i)),s=(i[3]&1)!==0,n=3;0>>1|(i[n-1]&1)<<31;i[0]>>>=1,s&&(i[0]^=-520093696)}return o},j:function(e,t,r){var n,o=r.length;for(t=t.slice(0),n=0;no&&(e=t.hash(e)),n=0;nn||0>r)throw new c.exception.invalid("invalid params to pbkdf2");typeof e=="string"&&(e=c.codec.utf8String.toBits(e)),typeof t=="string"&&(t=c.codec.utf8String.toBits(t)),o=o||c.misc.hmac,e=new o(e);var i,s,a,f,u=[],l=c.bitArray;for(f=1;32*u.length<(n||1);f++){for(o=i=e.encrypt(l.concat(t,[f])),s=1;ss;s++)o.push(4294967296*Math.random()|0);for(s=0;s=1<this.o&&(this.o=i),this.P++,this.b=c.hash.sha256.hash(this.b.concat(o)),this.L=new c.cipher.aes(this.b),n=0;4>n&&(this.h[n]=this.h[n]+1|0,!this.h[n]);n++);}for(n=0;n>>1;this.c[s].update([n,this.N++,2,t,i,e.length].concat(e))}break;case"string":t===void 0&&(t=e.length),this.c[s].update([n,this.N++,3,t,i,e.length]),this.c[s].update(e);break;default:f=1}if(f)throw new c.exception.bug("random: addEntropy only supports number, array of numbers or string");this.m[s]+=t,this.f+=t,a===this.u&&(this.isReady()!==this.u&&Re("seeded",Math.max(this.o,this.f)),Re("progress",this.getProgress()))},isReady:function(e){return e=this.T[e!==void 0?e:this.M],this.o&&this.o>=e?this.m[0]>this.ba&&new Date().valueOf()>this.Z?this.J|this.I:this.I:this.f>=e?this.J|this.u:this.u},getProgress:function(e){return e=this.T[e||this.M],this.o>=e||this.f>e?1:this.f/e},startCollectors:function(){if(!this.D){if(this.a={loadTimeCollector:z(this,this.ma),mouseCollector:z(this,this.oa),keyboardCollector:z(this,this.la),accelerometerCollector:z(this,this.ea),touchCollector:z(this,this.qa)},window.addEventListener)window.addEventListener("load",this.a.loadTimeCollector,!1),window.addEventListener("mousemove",this.a.mouseCollector,!1),window.addEventListener("keypress",this.a.keyboardCollector,!1),window.addEventListener("devicemotion",this.a.accelerometerCollector,!1),window.addEventListener("touchmove",this.a.touchCollector,!1);else if(document.attachEvent)document.attachEvent("onload",this.a.loadTimeCollector),document.attachEvent("onmousemove",this.a.mouseCollector),document.attachEvent("keypress",this.a.keyboardCollector);else throw new c.exception.bug("can't attach event");this.D=!0}},stopCollectors:function(){this.D&&(window.removeEventListener?(window.removeEventListener("load",this.a.loadTimeCollector,!1),window.removeEventListener("mousemove",this.a.mouseCollector,!1),window.removeEventListener("keypress",this.a.keyboardCollector,!1),window.removeEventListener("devicemotion",this.a.accelerometerCollector,!1),window.removeEventListener("touchmove",this.a.touchCollector,!1)):document.detachEvent&&(document.detachEvent("onload",this.a.loadTimeCollector),document.detachEvent("onmousemove",this.a.mouseCollector),document.detachEvent("keypress",this.a.keyboardCollector)),this.D=!1)},addEventListener:function(e,t){this.K[e][this.ga++]=t},removeEventListener:function(e,t){var r,n,o=this.K[e],i=[];for(n in o)o.hasOwnProperty(n)&&o[n]===t&&i.push(n);for(r=0;rt&&(e.h[t]=e.h[t]+1|0,!e.h[t]);t++);return e.L.encrypt(e.h)}function z(e,t){return function(){t.apply(e,arguments)}}c.random=new c.prng(6);e:try{if(Z=typeof j<"u"&&j.exports){try{Q=Ke("crypto")}catch{Q=null}Z=Y=Q}if(Z&&Y.randomBytes)G=Y.randomBytes(128),G=new Uint32Array(new Uint8Array(G).buffer),c.random.addEntropy(G,1024,"crypto['randomBytes']");else if(typeof window<"u"&&typeof Uint32Array<"u"){if(H=new Uint32Array(32),window.crypto&&window.crypto.getRandomValues)window.crypto.getRandomValues(H);else if(window.msCrypto&&window.msCrypto.getRandomValues)window.msCrypto.getRandomValues(H);else break e;c.random.addEntropy(H,1024,"crypto['getRandomValues']")}}catch(e){typeof window<"u"&&window.console&&(console.log("There was an error collecting entropy from the browser:"),console.log(e))}var G,Y,H,Z,Q;c.json={defaults:{v:1,iter:1e4,ks:128,ts:64,mode:"ccm",adata:"",cipher:"aes"},ja:function(e,t,r,n){r=r||{},n=n||{};var o=c.json,i=o.g({iv:c.random.randomWords(4,0)},o.defaults),s;if(o.g(i,r),r=i.adata,typeof i.salt=="string"&&(i.salt=c.codec.base64.toBits(i.salt)),typeof i.iv=="string"&&(i.iv=c.codec.base64.toBits(i.iv)),!c.mode[i.mode]||!c.cipher[i.cipher]||typeof e=="string"&&100>=i.iter||i.ts!==64&&i.ts!==96&&i.ts!==128||i.ks!==128&&i.ks!==192&&i.ks!==256||2>i.iv.length||4=t.iter||t.ts!==64&&t.ts!==96&&t.ts!==128||t.ks!==128&&t.ks!==192&&t.ks!==256||!t.iv||2>t.iv.length||4{let n=t.isOk()?{type:"Ok",value:t.value}:{type:"Err",value:t.error},o=r.withStackTrace?new Error().stack:void 0;return{data:n,message:e,stack:o}};function I(e,t,r,n){function o(i){return i instanceof r?i:new r(function(s){s(i)})}return new(r||(r=Promise))(function(i,s){function a(l){try{u(n.next(l))}catch(h){s(h)}}function f(l){try{u(n.throw(l))}catch(h){s(h)}}function u(l){l.done?i(l.value):o(l.value).then(a,f)}u((n=n.apply(e,[])).next())})}function Ae(e){var t=typeof Symbol=="function"&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&typeof e.length=="number")return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function R(e){return this instanceof R?(this.v=e,this):new R(e)}function it(e,t,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=r.apply(e,t||[]),o,i=[];return o={},s("next"),s("throw"),s("return"),o[Symbol.asyncIterator]=function(){return this},o;function s(d){n[d]&&(o[d]=function(y){return new Promise(function(g,M){i.push([d,y,g,M])>1||a(d,y)})})}function a(d,y){try{f(n[d](y))}catch(g){h(i[0][3],g)}}function f(d){d.value instanceof R?Promise.resolve(d.value.v).then(u,l):h(i[0][2],d)}function u(d){a("next",d)}function l(d){a("throw",d)}function h(d,y){d(y),i.shift(),i.length&&a(i[0][0],i[0][1])}}function st(e){var t,r;return t={},n("next"),n("throw",function(o){throw o}),n("return"),t[Symbol.iterator]=function(){return this},t;function n(o,i){t[o]=e[o]?function(s){return(r=!r)?{value:R(e[o](s)),done:o==="return"}:i?i(s):s}:i}}function ct(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof Ae=="function"?Ae(e):e[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(i){r[i]=e[i]&&function(s){return new Promise(function(a,f){s=e[i](s),o(a,f,s.done,s.value)})}}function o(i,s,a,f){Promise.resolve(f).then(function(u){i({value:u,done:a})},s)}}var w=class e{constructor(t){this._promise=t}static fromSafePromise(t){let r=t.then(n=>new L(n));return new e(r)}static fromPromise(t,r){let n=t.then(o=>new L(o)).catch(o=>new x(r(o)));return new e(n)}static fromThrowable(t,r){return(...n)=>new e(I(this,void 0,void 0,function*(){try{return new L(yield t(...n))}catch(o){return new x(r?r(o):o)}}))}static combine(t){return at(t)}static combineWithAllErrors(t){return ft(t)}map(t){return new e(this._promise.then(r=>I(this,void 0,void 0,function*(){return r.isErr()?new x(r.error):new L(yield t(r.value))})))}andThrough(t){return new e(this._promise.then(r=>I(this,void 0,void 0,function*(){if(r.isErr())return new x(r.error);let n=yield t(r.value);return n.isErr()?new x(n.error):new L(r.value)})))}andTee(t){return new e(this._promise.then(r=>I(this,void 0,void 0,function*(){if(r.isErr())return new x(r.error);try{yield t(r.value)}catch{}return new L(r.value)})))}mapErr(t){return new e(this._promise.then(r=>I(this,void 0,void 0,function*(){return r.isOk()?new L(r.value):new x(yield t(r.error))})))}andThen(t){return new e(this._promise.then(r=>{if(r.isErr())return new x(r.error);let n=t(r.value);return n instanceof e?n._promise:n}))}orElse(t){return new e(this._promise.then(r=>I(this,void 0,void 0,function*(){return r.isErr()?t(r.error):new L(r.value)})))}match(t,r){return this._promise.then(n=>n.match(t,r))}unwrapOr(t){return this._promise.then(r=>r.unwrapOr(t))}safeUnwrap(){return it(this,arguments,function*(){return yield R(yield R(yield*st(ct(yield R(this._promise.then(r=>r.safeUnwrap()))))))})}then(t,r){return this._promise.then(t,r)}},O=e=>new w(Promise.resolve(new L(e))),E=e=>new w(Promise.resolve(new x(e))),Nt=w.fromPromise,jt=w.fromSafePromise,Wt=w.fromThrowable,xe=e=>{let t=C([]);for(let r of e)if(r.isErr()){t=S(r.error);break}else t.map(n=>n.push(r.value));return t},at=e=>w.fromSafePromise(Promise.all(e)).andThen(xe),Oe=e=>{let t=C([]);for(let r of e)r.isErr()&&t.isErr()?t.error.push(r.error):r.isErr()&&t.isOk()?t=S([r.error]):r.isOk()&&t.isOk()&&t.value.push(r.value);return t},ft=e=>w.fromSafePromise(Promise.all(e)).andThen(Oe),re;(function(e){function t(o,i){return(...s)=>{try{let a=o(...s);return C(a)}catch(a){return S(i?i(a):a)}}}e.fromThrowable=t;function r(o){return xe(o)}e.combine=r;function n(o){return Oe(o)}e.combineWithAllErrors=n})(re||(re={}));var C=e=>new L(e);function S(e){return new x(e)}var L=class{constructor(t){this.value=t}isOk(){return!0}isErr(){return!this.isOk()}map(t){return C(t(this.value))}mapErr(t){return C(this.value)}andThen(t){return t(this.value)}andThrough(t){return t(this.value).map(r=>this.value)}andTee(t){try{t(this.value)}catch{}return C(this.value)}orElse(t){return C(this.value)}asyncAndThen(t){return t(this.value)}asyncAndThrough(t){return t(this.value).map(()=>this.value)}asyncMap(t){return w.fromSafePromise(t(this.value))}unwrapOr(t){return this.value}match(t,r){return t(this.value)}safeUnwrap(){let t=this.value;return function*(){return t}()}_unsafeUnwrap(t){return this.value}_unsafeUnwrapErr(t){throw Le("Called `_unsafeUnwrapErr` on an Ok",this,t)}},x=class{constructor(t){this.error=t}isOk(){return!1}isErr(){return!this.isOk()}map(t){return S(this.error)}mapErr(t){return S(t(this.error))}andThrough(t){return S(this.error)}andTee(t){return S(this.error)}andThen(t){return S(this.error)}orElse(t){return t(this.error)}asyncAndThen(t){return E(this.error)}asyncAndThrough(t){return E(this.error)}asyncMap(t){return E(this.error)}unwrapOr(t){return t}match(t,r){return r(this.error)}safeUnwrap(){let t=this.error;return function*(){throw yield S(t),new Error("Do not use this generator out of `safeTry`")}()}_unsafeUnwrap(t){throw Le("Called `_unsafeUnwrap` on an Err",this,t)}_unsafeUnwrapErr(t){return this.error}},Jt=re.fromThrowable;var k=class extends Error{constructor(r,n={}){let{cause:o,context:i}=n;super(r,{cause:o});b(this,"context");this.name=this.constructor.name,this.context=i}};var P=e=>{if(e instanceof Error)return e;let t="[Unable to stringify the thrown value]";try{t=JSON.stringify(e)}catch{}return new Error(t)};var ut=()=>typeof Deno<"u";var U=e=>ut()?new URL(`./worker/${e}.ts`,new URL(".",import.meta.url).href):new URL(import.meta.resolve(`./${e==="main"?`worker/${e}`:e}.js`));var m=new Se.default,v,De=!1;self.onmessage=e=>{lt(e),De||(De=!0,m.once("OPERATION_FAILED",()=>{v&&v.terminate()}))};var B=(e,t)=>(Object.assign(e,t),typeof WorkerGlobalScope<"u"&&self.postMessage({event:"FILE_UPDATED",lufiFile:e}),e);var lt=(e,t)=>{let{action:r}=e.data;if(r===5||r===8)v.postMessage(e.data);else{switch(r){case 2:v=new Worker(U("cancel"),{type:"module"}),v.postMessage(e.data);break;case 3:v=new Worker(U("download"),{type:"module"}),v.postMessage(e.data);break;case 4:v=new Worker(U("infos"),{type:"module"}),v.postMessage(e.data);break;case 7:v=v||new Worker(U("remove"),{type:"module"}),v.postMessage(e.data);break;case 9:v=v||new Worker(U("upload"),{type:"module"}),v.postMessage(e.data);break;default:console.error("Action not found")}v.onmessage=n=>{t&&t(n),self.postMessage(n.data)},v.onerror=n=>{console.error(`Error: ${n.message}`)}}},ke=()=>{m.once("SOCKET_OPENED",()=>{self.postMessage({event:"SOCKET_OPENED"})}),m.once("OPERATION_FAILED",e=>{self.postMessage({event:"OPERATION_FAILED",error:e})})};var D=class extends k{};var J=class extends D{constructor(){super(...arguments);b(this,"message","An error occured while trying to connect to WebSocket")}};var N=class{constructor(t,r){if(!t||t.length!=64)throw Error("Charset must contain 64 characters");this._charset=t,this._noPadding=!!r,this._valid=new RegExp("^["+this._charset.replace("-","\\-")+"]+={0,2}$")}Encode(t){let r=t.byteLength;if(!r)return"";let n=new Uint8Array(t),o="";for(let i=0;i>2]+this._charset[(n[i]&3)<<4|n[i+1]>>4]+this._charset[(n[i+1]&15)<<2|n[i+2]>>6]+this._charset[n[i+2]&63];return r%3==2?(o=o.substring(0,o.length-1),this._noPadding||(o+="=")):r%3==1&&(o=o.substring(0,o.length-2),this._noPadding||(o+="==")),o}Decode(t){if(t=(t||"").replace(/[\s]/g,""),!t)return new ArrayBuffer(0);if(!this._valid.test(t))throw Error("Invalid base64 input sequence");let r=Math.floor(t.length*.75);t[t.length-2]=="="?r-=2:t[t.length-1]=="="&&r--;let n=new Uint8Array(r),o,i,s,a,f=0,u=0;for(;f>4,n[f++]=(i&15)<<4|s>>2,n[f++]=(s&3)<<6|a;return n.buffer}};var dt=new N("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/");function F(e){return dt.Decode(e)}var pt=new N("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",!0);function ne(e){return pt.Decode(e)}var Ie=fe(Me());var _=class extends k{};var W=class extends _{constructor(){super(...arguments);b(this,"message","Unable to decrypt the provided data")}};var Ue=(e,t)=>{try{let r=typeof t=="string"?t:t.data;return O(F(Ie.default.decrypt(e,r)))}catch(r){return E(new W(void 0,{cause:P(r)}))}};var Be=(e,t)=>gt(e).andThen(r=>w.fromPromise(crypto.subtle.decrypt({name:"AES-GCM",iv:t.iv},r,F(t.data)),n=>new W(void 0,{cause:P(n)})));var gt=e=>w.fromPromise(crypto.subtle.importKey("raw",ne(e),{name:"AES-GCM"},!1,["encrypt","decrypt"]),t=>new _("Unable to import cryptography key",{cause:P(t)}));var Ne=(e,t)=>t.algo===void 0||t.algo===0?Ue(e,t):Be(e,t);var A={},je=5,Et=e=>(m.emit("UPLOAD_CANCELLED",e.success),O(void 0)),At=(e,t)=>{let r=e.split("XXMOJOXX"),n=r.shift();if(n!==void 0){let o=JSON.parse(n);if(Ct(o)){let i=r.shift();if(i){let s=JSON.parse(i);return s.iv&&(s.iv=new Uint8Array(Object.values(s.iv))),Ne(t.keys.client,s).andThen(a=>{let f=typeof a=="string"?new TextEncoder().encode(a).buffer:a;return o.part===0?(B(t,{chunksReady:t.chunksReady+1,delAtFirstView:o.del_at_first_view,delay:o.delay,name:o.name,size:o.size,totalChunks:o.total,type:o.type,zipped:o.zipped}),m.emit("DOWNLOAD_STARTED")):B(t,{chunksReady:t.chunksReady+1}),m.emit("CHUNK_DOWNLOADED",f,o.part),++o.part===o.total?Dt(t).andThen(()=>(m.emit("DOWNLOAD_COMPLETE"),m.emit("SOCKET_OPERATION_TERMINATED"),O(void 0))):O(void 0)})}else{let s=new D("Can't retrieve metadata from data received by the server");return m.emit("OPERATION_FAILED",s),E(s)}}else{let i=new D(o.msg);return m.emit("OPERATION_FAILED",i),E(i)}}else{let o=new D("Can't retrieve metadata from data received by the server");return m.emit("OPERATION_FAILED",o),E(o)}},Lt=(e,t)=>{if(e.success)return e.j===0&&(B(t,{keys:{client:t.keys.client,server:e.short},actionToken:e.token,queueIndex:e.i}),m.emit("UPLOAD_STARTED")),B(t,{chunksReady:t.chunksReady+1,createdAt:e.created_at}),m.emit("CHUNK_UPLOADED"),t.chunksReady===t.totalChunks&&(B(t,{uploadStatus:1}),m.emit("UPLOAD_COMPLETE"),m.emit("SOCKET_OPERATION_TERMINATED")),O(void 0);{let r=new D(e.msg);return m.emit("OPERATION_FAILED",r),E(r)}},xt=(e,t)=>{let r=_t(e.data),n;if(r)if(!r.action&&r.msg){let o=new D(r.msg);return m.emit("OPERATION_FAILED",o),E(o)}else"delay"in r?n=Lt(r,t):n=Et(r);else n=At(e.data,t);return n},Ot=e=>A!==void 0&&A[e]!==void 0&&A[e].readyState===WebSocket.CONNECTING,se=e=>A!==void 0&&A[e]!==void 0&&A[e].readyState===WebSocket.OPEN,We=e=>ce(kt(e),e,`${JSON.stringify({id:e.keys.server,mod_token:e.actionToken,cancel:!0,i:e.queueIndex})}XXMOJOXXuseless`);var Dt=e=>{let t;return e.password?t={ended:!0,file_pwd:e.password}:t={ended:!0},ce(St(e),e,JSON.stringify(t))};var ce=(e,t,r)=>se(e)?(A[e].onmessage=n=>xt(n,t),A[e].send(r),O(void 0)):Je(e).andThen(()=>ce(e,t,r)),Je=(e,t=0)=>(!se(e)&&!Ot(e)&&(A[e]=new WebSocket(e),m.once("SOCKET_OPERATION_TERMINATED",()=>{A[e].close()}),m.once("OPERATION_FAILED",()=>{m.emit("SOCKET_OPERATION_TERMINATED")}),A[e].onopen=()=>{m.emit("SOCKET_OPENED")},A[e].onclose=()=>{},A[e].onerror=()=>++t<=je?(console.error(`An error happened while trying to connect to WebSocket ${e}. Trying again. ${t} / ${je}`),Je(e,t)):(m.emit("SOCKET_ONERROR"),E(new J(`Unable to connect to WebSocket ${e}.`)))),bt(e).andThen(()=>O(e)).orElse(r=>E(r))),bt=e=>w.fromPromise(new Promise((t,r)=>{se(e)?t(void 0):(m.once("SOCKET_OPENED",()=>{t(void 0)}),m.on("SOCKET_ONERROR",()=>{r(new J)}))}),t=>P(t));var Fe=(e,t)=>{let r=new URL(e);return r.protocol=r.protocol==="http:"?"ws:":"wss:",r.pathname+=t,new URL(r.origin+r.pathname)},St=e=>Fe(new URL(e.serverUrl),"download"+`/${e.keys.server}`).toString(),kt=e=>Fe(new URL(e.serverUrl),"upload").toString(),_t=e=>{try{let t=JSON.parse(e);if(t&&typeof t=="object")return t}catch{}return!1},Ct=e=>typeof e=="object"&&e!==null&&!("msg"in e);var Xe=!1;self.onmessage=e=>{Xe||(ke(),Xe=!0),m.on("UPLOAD_CANCELLED",t=>{self.postMessage({event:"UPLOAD_CANCELLED",success:t})}),Pt(e.data).mapErr(t=>{self.postMessage({event:"OPERATION_FAILED",error:t})})};var Pt=e=>We(e.args.lufiFile); diff --git a/themes/default/public/js/worker/download.js b/themes/default/public/js/worker/download.js index 33c0b61..9ce6315 100644 --- a/themes/default/public/js/worker/download.js +++ b/themes/default/public/js/worker/download.js @@ -1,2804 +1 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __typeError = (msg) => { - throw TypeError(msg); -}; -var __defNormalProp = (obj3, key, value) => key in obj3 ? __defProp(obj3, key, { enumerable: true, configurable: true, writable: true, value }) : obj3[key] = value; -var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { - get: (a, b) => (typeof require !== "undefined" ? require : a)[b] -}) : x)(function(x) { - if (typeof require !== "undefined") return require.apply(this, arguments); - throw Error('Dynamic require of "' + x + '" is not supported'); -}); -var __commonJS = (cb, mod) => function __require2() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __publicField = (obj3, key, value) => __defNormalProp(obj3, typeof key !== "symbol" ? key + "" : key, value); -var __accessCheck = (obj3, member, msg) => member.has(obj3) || __typeError("Cannot " + msg); -var __privateGet = (obj3, member, getter) => (__accessCheck(obj3, member, "read from private field"), getter ? getter.call(obj3) : member.get(obj3)); -var __privateAdd = (obj3, member, value) => member.has(obj3) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj3) : member.set(obj3, value); -var __privateSet = (obj3, member, value, setter) => (__accessCheck(obj3, member, "write to private field"), setter ? setter.call(obj3, value) : member.set(obj3, value), value); -var __privateMethod = (obj3, member, method) => (__accessCheck(obj3, member, "access private method"), method); -var __privateWrapper = (obj3, member, setter, getter) => ({ - set _(value) { - __privateSet(obj3, member, value, setter); - }, - get _() { - return __privateGet(obj3, member, getter); - } -}); - -// node_modules/.deno/events@3.3.0/node_modules/events/events.js -var require_events = __commonJS({ - "node_modules/.deno/events@3.3.0/node_modules/events/events.js"(exports, module) { - "use strict"; - var R = typeof Reflect === "object" ? Reflect : null; - var ReflectApply = R && typeof R.apply === "function" ? R.apply : function ReflectApply2(target, receiver, args) { - return Function.prototype.apply.call(target, receiver, args); - }; - var ReflectOwnKeys; - if (R && typeof R.ownKeys === "function") { - ReflectOwnKeys = R.ownKeys; - } else if (Object.getOwnPropertySymbols) { - ReflectOwnKeys = function ReflectOwnKeys2(target) { - return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target)); - }; - } else { - ReflectOwnKeys = function ReflectOwnKeys2(target) { - return Object.getOwnPropertyNames(target); - }; - } - function ProcessEmitWarning(warning) { - if (console && console.warn) console.warn(warning); - } - var NumberIsNaN = Number.isNaN || function NumberIsNaN2(value) { - return value !== value; - }; - function EventEmitter3() { - EventEmitter3.init.call(this); - } - module.exports = EventEmitter3; - module.exports.once = once; - EventEmitter3.EventEmitter = EventEmitter3; - EventEmitter3.prototype._events = void 0; - EventEmitter3.prototype._eventsCount = 0; - EventEmitter3.prototype._maxListeners = void 0; - var defaultMaxListeners = 10; - function checkListener(listener) { - if (typeof listener !== "function") { - throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); - } - } - Object.defineProperty(EventEmitter3, "defaultMaxListeners", { - enumerable: true, - get: function() { - return defaultMaxListeners; - }, - set: function(arg) { - if (typeof arg !== "number" || arg < 0 || NumberIsNaN(arg)) { - throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + "."); - } - defaultMaxListeners = arg; - } - }); - EventEmitter3.init = function() { - if (this._events === void 0 || this._events === Object.getPrototypeOf(this)._events) { - this._events = /* @__PURE__ */ Object.create(null); - this._eventsCount = 0; - } - this._maxListeners = this._maxListeners || void 0; - }; - EventEmitter3.prototype.setMaxListeners = function setMaxListeners(n) { - if (typeof n !== "number" || n < 0 || NumberIsNaN(n)) { - throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + "."); - } - this._maxListeners = n; - return this; - }; - function _getMaxListeners(that) { - if (that._maxListeners === void 0) - return EventEmitter3.defaultMaxListeners; - return that._maxListeners; - } - EventEmitter3.prototype.getMaxListeners = function getMaxListeners() { - return _getMaxListeners(this); - }; - EventEmitter3.prototype.emit = function emit(type) { - var args = []; - for (var i = 1; i < arguments.length; i++) args.push(arguments[i]); - var doError = type === "error"; - var events2 = this._events; - if (events2 !== void 0) - doError = doError && events2.error === void 0; - else if (!doError) - return false; - if (doError) { - var er; - if (args.length > 0) - er = args[0]; - if (er instanceof Error) { - throw er; - } - var err2 = new Error("Unhandled error." + (er ? " (" + er.message + ")" : "")); - err2.context = er; - throw err2; - } - var handler = events2[type]; - if (handler === void 0) - return false; - if (typeof handler === "function") { - ReflectApply(handler, this, args); - } else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) - ReflectApply(listeners[i], this, args); - } - return true; - }; - function _addListener(target, type, listener, prepend) { - var m; - var events2; - var existing; - checkListener(listener); - events2 = target._events; - if (events2 === void 0) { - events2 = target._events = /* @__PURE__ */ Object.create(null); - target._eventsCount = 0; - } else { - if (events2.newListener !== void 0) { - target.emit( - "newListener", - type, - listener.listener ? listener.listener : listener - ); - events2 = target._events; - } - existing = events2[type]; - } - if (existing === void 0) { - existing = events2[type] = listener; - ++target._eventsCount; - } else { - if (typeof existing === "function") { - existing = events2[type] = prepend ? [listener, existing] : [existing, listener]; - } else if (prepend) { - existing.unshift(listener); - } else { - existing.push(listener); - } - m = _getMaxListeners(target); - if (m > 0 && existing.length > m && !existing.warned) { - existing.warned = true; - var w = new Error("Possible EventEmitter memory leak detected. " + existing.length + " " + String(type) + " listeners added. Use emitter.setMaxListeners() to increase limit"); - w.name = "MaxListenersExceededWarning"; - w.emitter = target; - w.type = type; - w.count = existing.length; - ProcessEmitWarning(w); - } - } - return target; - } - EventEmitter3.prototype.addListener = function addListener(type, listener) { - return _addListener(this, type, listener, false); - }; - EventEmitter3.prototype.on = EventEmitter3.prototype.addListener; - EventEmitter3.prototype.prependListener = function prependListener(type, listener) { - return _addListener(this, type, listener, true); - }; - function onceWrapper() { - if (!this.fired) { - this.target.removeListener(this.type, this.wrapFn); - this.fired = true; - if (arguments.length === 0) - return this.listener.call(this.target); - return this.listener.apply(this.target, arguments); - } - } - function _onceWrap(target, type, listener) { - var state = { fired: false, wrapFn: void 0, target, type, listener }; - var wrapped = onceWrapper.bind(state); - wrapped.listener = listener; - state.wrapFn = wrapped; - return wrapped; - } - EventEmitter3.prototype.once = function once2(type, listener) { - checkListener(listener); - this.on(type, _onceWrap(this, type, listener)); - return this; - }; - EventEmitter3.prototype.prependOnceListener = function prependOnceListener(type, listener) { - checkListener(listener); - this.prependListener(type, _onceWrap(this, type, listener)); - return this; - }; - EventEmitter3.prototype.removeListener = function removeListener(type, listener) { - var list, events2, position, i, originalListener; - checkListener(listener); - events2 = this._events; - if (events2 === void 0) - return this; - list = events2[type]; - if (list === void 0) - return this; - if (list === listener || list.listener === listener) { - if (--this._eventsCount === 0) - this._events = /* @__PURE__ */ Object.create(null); - else { - delete events2[type]; - if (events2.removeListener) - this.emit("removeListener", type, list.listener || listener); - } - } else if (typeof list !== "function") { - position = -1; - for (i = list.length - 1; i >= 0; i--) { - if (list[i] === listener || list[i].listener === listener) { - originalListener = list[i].listener; - position = i; - break; - } - } - if (position < 0) - return this; - if (position === 0) - list.shift(); - else { - spliceOne(list, position); - } - if (list.length === 1) - events2[type] = list[0]; - if (events2.removeListener !== void 0) - this.emit("removeListener", type, originalListener || listener); - } - return this; - }; - EventEmitter3.prototype.off = EventEmitter3.prototype.removeListener; - EventEmitter3.prototype.removeAllListeners = function removeAllListeners(type) { - var listeners, events2, i; - events2 = this._events; - if (events2 === void 0) - return this; - if (events2.removeListener === void 0) { - if (arguments.length === 0) { - this._events = /* @__PURE__ */ Object.create(null); - this._eventsCount = 0; - } else if (events2[type] !== void 0) { - if (--this._eventsCount === 0) - this._events = /* @__PURE__ */ Object.create(null); - else - delete events2[type]; - } - return this; - } - if (arguments.length === 0) { - var keys = Object.keys(events2); - var key; - for (i = 0; i < keys.length; ++i) { - key = keys[i]; - if (key === "removeListener") continue; - this.removeAllListeners(key); - } - this.removeAllListeners("removeListener"); - this._events = /* @__PURE__ */ Object.create(null); - this._eventsCount = 0; - return this; - } - listeners = events2[type]; - if (typeof listeners === "function") { - this.removeListener(type, listeners); - } else if (listeners !== void 0) { - for (i = listeners.length - 1; i >= 0; i--) { - this.removeListener(type, listeners[i]); - } - } - return this; - }; - function _listeners(target, type, unwrap) { - var events2 = target._events; - if (events2 === void 0) - return []; - var evlistener = events2[type]; - if (evlistener === void 0) - return []; - if (typeof evlistener === "function") - return unwrap ? [evlistener.listener || evlistener] : [evlistener]; - return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); - } - EventEmitter3.prototype.listeners = function listeners(type) { - return _listeners(this, type, true); - }; - EventEmitter3.prototype.rawListeners = function rawListeners(type) { - return _listeners(this, type, false); - }; - EventEmitter3.listenerCount = function(emitter, type) { - if (typeof emitter.listenerCount === "function") { - return emitter.listenerCount(type); - } else { - return listenerCount.call(emitter, type); - } - }; - EventEmitter3.prototype.listenerCount = listenerCount; - function listenerCount(type) { - var events2 = this._events; - if (events2 !== void 0) { - var evlistener = events2[type]; - if (typeof evlistener === "function") { - return 1; - } else if (evlistener !== void 0) { - return evlistener.length; - } - } - return 0; - } - EventEmitter3.prototype.eventNames = function eventNames() { - return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : []; - }; - function arrayClone(arr, n) { - var copy = new Array(n); - for (var i = 0; i < n; ++i) - copy[i] = arr[i]; - return copy; - } - function spliceOne(list, index) { - for (; index + 1 < list.length; index++) - list[index] = list[index + 1]; - list.pop(); - } - function unwrapListeners(arr) { - var ret = new Array(arr.length); - for (var i = 0; i < ret.length; ++i) { - ret[i] = arr[i].listener || arr[i]; - } - return ret; - } - function once(emitter, name) { - return new Promise(function(resolve, reject) { - function errorListener(err2) { - emitter.removeListener(name, resolver); - reject(err2); - } - function resolver() { - if (typeof emitter.removeListener === "function") { - emitter.removeListener("error", errorListener); - } - resolve([].slice.call(arguments)); - } - ; - eventTargetAgnosticAddListener(emitter, name, resolver, { once: true }); - if (name !== "error") { - addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true }); - } - }); - } - function addErrorHandlerIfEventEmitter(emitter, handler, flags) { - if (typeof emitter.on === "function") { - eventTargetAgnosticAddListener(emitter, "error", handler, flags); - } - } - function eventTargetAgnosticAddListener(emitter, name, listener, flags) { - if (typeof emitter.on === "function") { - if (flags.once) { - emitter.once(name, listener); - } else { - emitter.on(name, listener); - } - } else if (typeof emitter.addEventListener === "function") { - emitter.addEventListener(name, function wrapListener(arg) { - if (flags.once) { - emitter.removeEventListener(name, wrapListener); - } - listener(arg); - }); - } else { - throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof emitter); - } - } - } -}); - -// node_modules/.deno/sjcl@1.0.8/node_modules/sjcl/sjcl.js -var require_sjcl = __commonJS({ - "node_modules/.deno/sjcl@1.0.8/node_modules/sjcl/sjcl.js"(exports, module) { - "use strict"; - var sjcl2 = { cipher: {}, hash: {}, keyexchange: {}, mode: {}, misc: {}, codec: {}, exception: { corrupt: function(a) { - this.toString = function() { - return "CORRUPT: " + this.message; - }; - this.message = a; - }, invalid: function(a) { - this.toString = function() { - return "INVALID: " + this.message; - }; - this.message = a; - }, bug: function(a) { - this.toString = function() { - return "BUG: " + this.message; - }; - this.message = a; - }, notReady: function(a) { - this.toString = function() { - return "NOT READY: " + this.message; - }; - this.message = a; - } } }; - sjcl2.cipher.aes = function(a) { - this.s[0][0][0] || this.O(); - var b, c, d, e, f = this.s[0][4], g = this.s[1]; - b = a.length; - var h = 1; - if (4 !== b && 6 !== b && 8 !== b) throw new sjcl2.exception.invalid("invalid aes key size"); - this.b = [d = a.slice(0), e = []]; - for (a = b; a < 4 * b + 28; a++) { - c = d[a - 1]; - if (0 === a % b || 8 === b && 4 === a % b) c = f[c >>> 24] << 24 ^ f[c >> 16 & 255] << 16 ^ f[c >> 8 & 255] << 8 ^ f[c & 255], 0 === a % b && (c = c << 8 ^ c >>> 24 ^ h << 24, h = h << 1 ^ 283 * (h >> 7)); - d[a] = d[a - b] ^ c; - } - for (b = 0; a; b++, a--) c = d[b & 3 ? a : a - 4], e[b] = 4 >= a || 4 > b ? c : g[0][f[c >>> 24]] ^ g[1][f[c >> 16 & 255]] ^ g[2][f[c >> 8 & 255]] ^ g[3][f[c & 255]]; - }; - sjcl2.cipher.aes.prototype = { encrypt: function(a) { - return t(this, a, 0); - }, decrypt: function(a) { - return t(this, a, 1); - }, s: [[[], [], [], [], []], [[], [], [], [], []]], O: function() { - var a = this.s[0], b = this.s[1], c = a[4], d = b[4], e, f, g, h = [], k = [], l, n, m, p; - for (e = 0; 256 > e; e++) k[(h[e] = e << 1 ^ 283 * (e >> 7)) ^ e] = e; - for (f = g = 0; !c[f]; f ^= l || 1, g = k[g] || 1) for (m = g ^ g << 1 ^ g << 2 ^ g << 3 ^ g << 4, m = m >> 8 ^ m & 255 ^ 99, c[f] = m, d[m] = f, n = h[e = h[l = h[f]]], p = 16843009 * n ^ 65537 * e ^ 257 * l ^ 16843008 * f, n = 257 * h[m] ^ 16843008 * m, e = 0; 4 > e; e++) a[e][f] = n = n << 24 ^ n >>> 8, b[e][m] = p = p << 24 ^ p >>> 8; - for (e = 0; 5 > e; e++) a[e] = a[e].slice(0), b[e] = b[e].slice(0); - } }; - function t(a, b, c) { - if (4 !== b.length) throw new sjcl2.exception.invalid("invalid aes block size"); - var d = a.b[c], e = b[0] ^ d[0], f = b[c ? 3 : 1] ^ d[1], g = b[2] ^ d[2]; - b = b[c ? 1 : 3] ^ d[3]; - var h, k, l, n = d.length / 4 - 2, m, p = 4, r = [0, 0, 0, 0]; - h = a.s[c]; - a = h[0]; - var q = h[1], v = h[2], w = h[3], x = h[4]; - for (m = 0; m < n; m++) h = a[e >>> 24] ^ q[f >> 16 & 255] ^ v[g >> 8 & 255] ^ w[b & 255] ^ d[p], k = a[f >>> 24] ^ q[g >> 16 & 255] ^ v[b >> 8 & 255] ^ w[e & 255] ^ d[p + 1], l = a[g >>> 24] ^ q[b >> 16 & 255] ^ v[e >> 8 & 255] ^ w[f & 255] ^ d[p + 2], b = a[b >>> 24] ^ q[e >> 16 & 255] ^ v[f >> 8 & 255] ^ w[g & 255] ^ d[p + 3], p += 4, e = h, f = k, g = l; - for (m = 0; 4 > m; m++) r[c ? 3 & -m : m] = x[e >>> 24] << 24 ^ x[f >> 16 & 255] << 16 ^ x[g >> 8 & 255] << 8 ^ x[b & 255] ^ d[p++], h = e, e = f, f = g, g = b, b = h; - return r; - } - sjcl2.bitArray = { bitSlice: function(a, b, c) { - a = sjcl2.bitArray.$(a.slice(b / 32), 32 - (b & 31)).slice(1); - return void 0 === c ? a : sjcl2.bitArray.clamp(a, c - b); - }, extract: function(a, b, c) { - var d = Math.floor(-b - c & 31); - return ((b + c - 1 ^ b) & -32 ? a[b / 32 | 0] << 32 - d ^ a[b / 32 + 1 | 0] >>> d : a[b / 32 | 0] >>> d) & (1 << c) - 1; - }, concat: function(a, b) { - if (0 === a.length || 0 === b.length) return a.concat(b); - var c = a[a.length - 1], d = sjcl2.bitArray.getPartial(c); - return 32 === d ? a.concat(b) : sjcl2.bitArray.$(b, d, c | 0, a.slice(0, a.length - 1)); - }, bitLength: function(a) { - var b = a.length; - return 0 === b ? 0 : 32 * (b - 1) + sjcl2.bitArray.getPartial(a[b - 1]); - }, clamp: function(a, b) { - if (32 * a.length < b) return a; - a = a.slice(0, Math.ceil(b / 32)); - var c = a.length; - b = b & 31; - 0 < c && b && (a[c - 1] = sjcl2.bitArray.partial(b, a[c - 1] & 2147483648 >> b - 1, 1)); - return a; - }, partial: function(a, b, c) { - return 32 === a ? b : (c ? b | 0 : b << 32 - a) + 1099511627776 * a; - }, getPartial: function(a) { - return Math.round(a / 1099511627776) || 32; - }, equal: function(a, b) { - if (sjcl2.bitArray.bitLength(a) !== sjcl2.bitArray.bitLength(b)) return false; - var c = 0, d; - for (d = 0; d < a.length; d++) c |= a[d] ^ b[d]; - return 0 === c; - }, $: function(a, b, c, d) { - var e; - e = 0; - for (void 0 === d && (d = []); 32 <= b; b -= 32) d.push(c), c = 0; - if (0 === b) return d.concat(a); - for (e = 0; e < a.length; e++) d.push(c | a[e] >>> b), c = a[e] << 32 - b; - e = a.length ? a[a.length - 1] : 0; - a = sjcl2.bitArray.getPartial(e); - d.push(sjcl2.bitArray.partial(b + a & 31, 32 < b + a ? c : d.pop(), 1)); - return d; - }, i: function(a, b) { - return [a[0] ^ b[0], a[1] ^ b[1], a[2] ^ b[2], a[3] ^ b[3]]; - }, byteswapM: function(a) { - var b, c; - for (b = 0; b < a.length; ++b) c = a[b], a[b] = c >>> 24 | c >>> 8 & 65280 | (c & 65280) << 8 | c << 24; - return a; - } }; - sjcl2.codec.utf8String = { fromBits: function(a) { - var b = "", c = sjcl2.bitArray.bitLength(a), d, e; - for (d = 0; d < c / 8; d++) 0 === (d & 3) && (e = a[d / 4]), b += String.fromCharCode(e >>> 8 >>> 8 >>> 8), e <<= 8; - return decodeURIComponent(escape(b)); - }, toBits: function(a) { - a = unescape(encodeURIComponent(a)); - var b = [], c, d = 0; - for (c = 0; c < a.length; c++) d = d << 8 | a.charCodeAt(c), 3 === (c & 3) && (b.push(d), d = 0); - c & 3 && b.push(sjcl2.bitArray.partial(8 * (c & 3), d)); - return b; - } }; - sjcl2.codec.hex = { fromBits: function(a) { - var b = "", c; - for (c = 0; c < a.length; c++) b += ((a[c] | 0) + 263882790666240).toString(16).substr(4); - return b.substr(0, sjcl2.bitArray.bitLength(a) / 4); - }, toBits: function(a) { - var b, c = [], d; - a = a.replace(/\s|0x/g, ""); - d = a.length; - a = a + "00000000"; - for (b = 0; b < a.length; b += 8) c.push(parseInt(a.substr(b, 8), 16) ^ 0); - return sjcl2.bitArray.clamp(c, 4 * d); - } }; - sjcl2.codec.base32 = { B: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567", X: "0123456789ABCDEFGHIJKLMNOPQRSTUV", BITS: 32, BASE: 5, REMAINING: 27, fromBits: function(a, b, c) { - var d = sjcl2.codec.base32.BASE, e = sjcl2.codec.base32.REMAINING, f = "", g = 0, h = sjcl2.codec.base32.B, k = 0, l = sjcl2.bitArray.bitLength(a); - c && (h = sjcl2.codec.base32.X); - for (c = 0; f.length * d < l; ) f += h.charAt((k ^ a[c] >>> g) >>> e), g < d ? (k = a[c] << d - g, g += e, c++) : (k <<= d, g -= d); - for (; f.length & 7 && !b; ) f += "="; - return f; - }, toBits: function(a, b) { - a = a.replace(/\s|=/g, "").toUpperCase(); - var c = sjcl2.codec.base32.BITS, d = sjcl2.codec.base32.BASE, e = sjcl2.codec.base32.REMAINING, f = [], g, h = 0, k = sjcl2.codec.base32.B, l = 0, n, m = "base32"; - b && (k = sjcl2.codec.base32.X, m = "base32hex"); - for (g = 0; g < a.length; g++) { - n = k.indexOf(a.charAt(g)); - if (0 > n) { - if (!b) try { - return sjcl2.codec.base32hex.toBits(a); - } catch (p) { - } - throw new sjcl2.exception.invalid("this isn't " + m + "!"); - } - h > e ? (h -= e, f.push(l ^ n >>> h), l = n << c - h) : (h += d, l ^= n << c - h); - } - h & 56 && f.push(sjcl2.bitArray.partial(h & 56, l, 1)); - return f; - } }; - sjcl2.codec.base32hex = { fromBits: function(a, b) { - return sjcl2.codec.base32.fromBits(a, b, 1); - }, toBits: function(a) { - return sjcl2.codec.base32.toBits(a, 1); - } }; - sjcl2.codec.base64 = { B: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", fromBits: function(a, b, c) { - var d = "", e = 0, f = sjcl2.codec.base64.B, g = 0, h = sjcl2.bitArray.bitLength(a); - c && (f = f.substr(0, 62) + "-_"); - for (c = 0; 6 * d.length < h; ) d += f.charAt((g ^ a[c] >>> e) >>> 26), 6 > e ? (g = a[c] << 6 - e, e += 26, c++) : (g <<= 6, e -= 6); - for (; d.length & 3 && !b; ) d += "="; - return d; - }, toBits: function(a, b) { - a = a.replace(/\s|=/g, ""); - var c = [], d, e = 0, f = sjcl2.codec.base64.B, g = 0, h; - b && (f = f.substr(0, 62) + "-_"); - for (d = 0; d < a.length; d++) { - h = f.indexOf(a.charAt(d)); - if (0 > h) throw new sjcl2.exception.invalid("this isn't base64!"); - 26 < e ? (e -= 26, c.push(g ^ h >>> e), g = h << 32 - e) : (e += 6, g ^= h << 32 - e); - } - e & 56 && c.push(sjcl2.bitArray.partial(e & 56, g, 1)); - return c; - } }; - sjcl2.codec.base64url = { fromBits: function(a) { - return sjcl2.codec.base64.fromBits(a, 1, 1); - }, toBits: function(a) { - return sjcl2.codec.base64.toBits(a, 1); - } }; - sjcl2.hash.sha256 = function(a) { - this.b[0] || this.O(); - a ? (this.F = a.F.slice(0), this.A = a.A.slice(0), this.l = a.l) : this.reset(); - }; - sjcl2.hash.sha256.hash = function(a) { - return new sjcl2.hash.sha256().update(a).finalize(); - }; - sjcl2.hash.sha256.prototype = { blockSize: 512, reset: function() { - this.F = this.Y.slice(0); - this.A = []; - this.l = 0; - return this; - }, update: function(a) { - "string" === typeof a && (a = sjcl2.codec.utf8String.toBits(a)); - var b, c = this.A = sjcl2.bitArray.concat(this.A, a); - b = this.l; - a = this.l = b + sjcl2.bitArray.bitLength(a); - if (9007199254740991 < a) throw new sjcl2.exception.invalid("Cannot hash more than 2^53 - 1 bits"); - if ("undefined" !== typeof Uint32Array) { - var d = new Uint32Array(c), e = 0; - for (b = 512 + b - (512 + b & 511); b <= a; b += 512) u(this, d.subarray( - 16 * e, - 16 * (e + 1) - )), e += 1; - c.splice(0, 16 * e); - } else for (b = 512 + b - (512 + b & 511); b <= a; b += 512) u(this, c.splice(0, 16)); - return this; - }, finalize: function() { - var a, b = this.A, c = this.F, b = sjcl2.bitArray.concat(b, [sjcl2.bitArray.partial(1, 1)]); - for (a = b.length + 2; a & 15; a++) b.push(0); - b.push(Math.floor(this.l / 4294967296)); - for (b.push(this.l | 0); b.length; ) u(this, b.splice(0, 16)); - this.reset(); - return c; - }, Y: [], b: [], O: function() { - function a(a2) { - return 4294967296 * (a2 - Math.floor(a2)) | 0; - } - for (var b = 0, c = 2, d, e; 64 > b; c++) { - e = true; - for (d = 2; d * d <= c; d++) if (0 === c % d) { - e = false; - break; - } - e && (8 > b && (this.Y[b] = a(Math.pow(c, 0.5))), this.b[b] = a(Math.pow(c, 1 / 3)), b++); - } - } }; - function u(a, b) { - var c, d, e, f = a.F, g = a.b, h = f[0], k = f[1], l = f[2], n = f[3], m = f[4], p = f[5], r = f[6], q = f[7]; - for (c = 0; 64 > c; c++) 16 > c ? d = b[c] : (d = b[c + 1 & 15], e = b[c + 14 & 15], d = b[c & 15] = (d >>> 7 ^ d >>> 18 ^ d >>> 3 ^ d << 25 ^ d << 14) + (e >>> 17 ^ e >>> 19 ^ e >>> 10 ^ e << 15 ^ e << 13) + b[c & 15] + b[c + 9 & 15] | 0), d = d + q + (m >>> 6 ^ m >>> 11 ^ m >>> 25 ^ m << 26 ^ m << 21 ^ m << 7) + (r ^ m & (p ^ r)) + g[c], q = r, r = p, p = m, m = n + d | 0, n = l, l = k, k = h, h = d + (k & l ^ n & (k ^ l)) + (k >>> 2 ^ k >>> 13 ^ k >>> 22 ^ k << 30 ^ k << 19 ^ k << 10) | 0; - f[0] = f[0] + h | 0; - f[1] = f[1] + k | 0; - f[2] = f[2] + l | 0; - f[3] = f[3] + n | 0; - f[4] = f[4] + m | 0; - f[5] = f[5] + p | 0; - f[6] = f[6] + r | 0; - f[7] = f[7] + q | 0; - } - sjcl2.mode.ccm = { name: "ccm", G: [], listenProgress: function(a) { - sjcl2.mode.ccm.G.push(a); - }, unListenProgress: function(a) { - a = sjcl2.mode.ccm.G.indexOf(a); - -1 < a && sjcl2.mode.ccm.G.splice(a, 1); - }, fa: function(a) { - var b = sjcl2.mode.ccm.G.slice(), c; - for (c = 0; c < b.length; c += 1) b[c](a); - }, encrypt: function(a, b, c, d, e) { - var f, g = b.slice(0), h = sjcl2.bitArray, k = h.bitLength(c) / 8, l = h.bitLength(g) / 8; - e = e || 64; - d = d || []; - if (7 > k) throw new sjcl2.exception.invalid("ccm: iv must be at least 7 bytes"); - for (f = 2; 4 > f && l >>> 8 * f; f++) ; - f < 15 - k && (f = 15 - k); - c = h.clamp( - c, - 8 * (15 - f) - ); - b = sjcl2.mode.ccm.V(a, b, c, d, e, f); - g = sjcl2.mode.ccm.C(a, g, c, b, e, f); - return h.concat(g.data, g.tag); - }, decrypt: function(a, b, c, d, e) { - e = e || 64; - d = d || []; - var f = sjcl2.bitArray, g = f.bitLength(c) / 8, h = f.bitLength(b), k = f.clamp(b, h - e), l = f.bitSlice(b, h - e), h = (h - e) / 8; - if (7 > g) throw new sjcl2.exception.invalid("ccm: iv must be at least 7 bytes"); - for (b = 2; 4 > b && h >>> 8 * b; b++) ; - b < 15 - g && (b = 15 - g); - c = f.clamp(c, 8 * (15 - b)); - k = sjcl2.mode.ccm.C(a, k, c, l, e, b); - a = sjcl2.mode.ccm.V(a, k.data, c, d, e, b); - if (!f.equal(k.tag, a)) throw new sjcl2.exception.corrupt("ccm: tag doesn't match"); - return k.data; - }, na: function(a, b, c, d, e, f) { - var g = [], h = sjcl2.bitArray, k = h.i; - d = [h.partial(8, (b.length ? 64 : 0) | d - 2 << 2 | f - 1)]; - d = h.concat(d, c); - d[3] |= e; - d = a.encrypt(d); - if (b.length) for (c = h.bitLength(b) / 8, 65279 >= c ? g = [h.partial(16, c)] : 4294967295 >= c && (g = h.concat([h.partial(16, 65534)], [c])), g = h.concat(g, b), b = 0; b < g.length; b += 4) d = a.encrypt(k(d, g.slice(b, b + 4).concat([0, 0, 0]))); - return d; - }, V: function(a, b, c, d, e, f) { - var g = sjcl2.bitArray, h = g.i; - e /= 8; - if (e % 2 || 4 > e || 16 < e) throw new sjcl2.exception.invalid("ccm: invalid tag length"); - if (4294967295 < d.length || 4294967295 < b.length) throw new sjcl2.exception.bug("ccm: can't deal with 4GiB or more data"); - c = sjcl2.mode.ccm.na(a, d, c, e, g.bitLength(b) / 8, f); - for (d = 0; d < b.length; d += 4) c = a.encrypt(h(c, b.slice(d, d + 4).concat([0, 0, 0]))); - return g.clamp(c, 8 * e); - }, C: function(a, b, c, d, e, f) { - var g, h = sjcl2.bitArray; - g = h.i; - var k = b.length, l = h.bitLength(b), n = k / 50, m = n; - c = h.concat([h.partial(8, f - 1)], c).concat([0, 0, 0]).slice(0, 4); - d = h.bitSlice(g(d, a.encrypt(c)), 0, e); - if (!k) return { tag: d, data: [] }; - for (g = 0; g < k; g += 4) g > n && (sjcl2.mode.ccm.fa(g / k), n += m), c[3]++, e = a.encrypt(c), b[g] ^= e[0], b[g + 1] ^= e[1], b[g + 2] ^= e[2], b[g + 3] ^= e[3]; - return { tag: d, data: h.clamp(b, l) }; - } }; - sjcl2.mode.ocb2 = { name: "ocb2", encrypt: function(a, b, c, d, e, f) { - if (128 !== sjcl2.bitArray.bitLength(c)) throw new sjcl2.exception.invalid("ocb iv must be 128 bits"); - var g, h = sjcl2.mode.ocb2.S, k = sjcl2.bitArray, l = k.i, n = [0, 0, 0, 0]; - c = h(a.encrypt(c)); - var m, p = []; - d = d || []; - e = e || 64; - for (g = 0; g + 4 < b.length; g += 4) m = b.slice(g, g + 4), n = l(n, m), p = p.concat(l(c, a.encrypt(l(c, m)))), c = h(c); - m = b.slice(g); - b = k.bitLength(m); - g = a.encrypt(l(c, [0, 0, 0, b])); - m = k.clamp(l(m.concat([0, 0, 0]), g), b); - n = l(n, l(m.concat([0, 0, 0]), g)); - n = a.encrypt(l(n, l(c, h(c)))); - d.length && (n = l(n, f ? d : sjcl2.mode.ocb2.pmac(a, d))); - return p.concat(k.concat(m, k.clamp(n, e))); - }, decrypt: function(a, b, c, d, e, f) { - if (128 !== sjcl2.bitArray.bitLength(c)) throw new sjcl2.exception.invalid("ocb iv must be 128 bits"); - e = e || 64; - var g = sjcl2.mode.ocb2.S, h = sjcl2.bitArray, k = h.i, l = [0, 0, 0, 0], n = g(a.encrypt(c)), m, p, r = sjcl2.bitArray.bitLength(b) - e, q = []; - d = d || []; - for (c = 0; c + 4 < r / 32; c += 4) m = k(n, a.decrypt(k(n, b.slice(c, c + 4)))), l = k(l, m), q = q.concat(m), n = g(n); - p = r - 32 * c; - m = a.encrypt(k(n, [0, 0, 0, p])); - m = k(m, h.clamp(b.slice(c), p).concat([ - 0, - 0, - 0 - ])); - l = k(l, m); - l = a.encrypt(k(l, k(n, g(n)))); - d.length && (l = k(l, f ? d : sjcl2.mode.ocb2.pmac(a, d))); - if (!h.equal(h.clamp(l, e), h.bitSlice(b, r))) throw new sjcl2.exception.corrupt("ocb: tag doesn't match"); - return q.concat(h.clamp(m, p)); - }, pmac: function(a, b) { - var c, d = sjcl2.mode.ocb2.S, e = sjcl2.bitArray, f = e.i, g = [0, 0, 0, 0], h = a.encrypt([0, 0, 0, 0]), h = f(h, d(d(h))); - for (c = 0; c + 4 < b.length; c += 4) h = d(h), g = f(g, a.encrypt(f(h, b.slice(c, c + 4)))); - c = b.slice(c); - 128 > e.bitLength(c) && (h = f(h, d(h)), c = e.concat(c, [-2147483648, 0, 0, 0])); - g = f(g, c); - return a.encrypt(f(d(f(h, d(h))), g)); - }, S: function(a) { - return [a[0] << 1 ^ a[1] >>> 31, a[1] << 1 ^ a[2] >>> 31, a[2] << 1 ^ a[3] >>> 31, a[3] << 1 ^ 135 * (a[0] >>> 31)]; - } }; - sjcl2.mode.gcm = { name: "gcm", encrypt: function(a, b, c, d, e) { - var f = b.slice(0); - b = sjcl2.bitArray; - d = d || []; - a = sjcl2.mode.gcm.C(true, a, f, d, c, e || 128); - return b.concat(a.data, a.tag); - }, decrypt: function(a, b, c, d, e) { - var f = b.slice(0), g = sjcl2.bitArray, h = g.bitLength(f); - e = e || 128; - d = d || []; - e <= h ? (b = g.bitSlice(f, h - e), f = g.bitSlice(f, 0, h - e)) : (b = f, f = []); - a = sjcl2.mode.gcm.C(false, a, f, d, c, e); - if (!g.equal(a.tag, b)) throw new sjcl2.exception.corrupt("gcm: tag doesn't match"); - return a.data; - }, ka: function(a, b) { - var c, d, e, f, g, h = sjcl2.bitArray.i; - e = [ - 0, - 0, - 0, - 0 - ]; - f = b.slice(0); - for (c = 0; 128 > c; c++) { - (d = 0 !== (a[Math.floor(c / 32)] & 1 << 31 - c % 32)) && (e = h(e, f)); - g = 0 !== (f[3] & 1); - for (d = 3; 0 < d; d--) f[d] = f[d] >>> 1 | (f[d - 1] & 1) << 31; - f[0] >>>= 1; - g && (f[0] ^= -520093696); - } - return e; - }, j: function(a, b, c) { - var d, e = c.length; - b = b.slice(0); - for (d = 0; d < e; d += 4) b[0] ^= 4294967295 & c[d], b[1] ^= 4294967295 & c[d + 1], b[2] ^= 4294967295 & c[d + 2], b[3] ^= 4294967295 & c[d + 3], b = sjcl2.mode.gcm.ka(b, a); - return b; - }, C: function(a, b, c, d, e, f) { - var g, h, k, l, n, m, p, r, q = sjcl2.bitArray; - m = c.length; - p = q.bitLength(c); - r = q.bitLength(d); - h = q.bitLength(e); - g = b.encrypt([0, 0, 0, 0]); - 96 === h ? (e = e.slice(0), e = q.concat(e, [1])) : (e = sjcl2.mode.gcm.j(g, [0, 0, 0, 0], e), e = sjcl2.mode.gcm.j(g, e, [0, 0, Math.floor(h / 4294967296), h & 4294967295])); - h = sjcl2.mode.gcm.j(g, [0, 0, 0, 0], d); - n = e.slice(0); - d = h.slice(0); - a || (d = sjcl2.mode.gcm.j(g, h, c)); - for (l = 0; l < m; l += 4) n[3]++, k = b.encrypt(n), c[l] ^= k[0], c[l + 1] ^= k[1], c[l + 2] ^= k[2], c[l + 3] ^= k[3]; - c = q.clamp(c, p); - a && (d = sjcl2.mode.gcm.j(g, h, c)); - a = [Math.floor(r / 4294967296), r & 4294967295, Math.floor(p / 4294967296), p & 4294967295]; - d = sjcl2.mode.gcm.j(g, d, a); - k = b.encrypt(e); - d[0] ^= k[0]; - d[1] ^= k[1]; - d[2] ^= k[2]; - d[3] ^= k[3]; - return { tag: q.bitSlice(d, 0, f), data: c }; - } }; - sjcl2.misc.hmac = function(a, b) { - this.W = b = b || sjcl2.hash.sha256; - var c = [[], []], d, e = b.prototype.blockSize / 32; - this.w = [new b(), new b()]; - a.length > e && (a = b.hash(a)); - for (d = 0; d < e; d++) c[0][d] = a[d] ^ 909522486, c[1][d] = a[d] ^ 1549556828; - this.w[0].update(c[0]); - this.w[1].update(c[1]); - this.R = new b(this.w[0]); - }; - sjcl2.misc.hmac.prototype.encrypt = sjcl2.misc.hmac.prototype.mac = function(a) { - if (this.aa) throw new sjcl2.exception.invalid("encrypt on already updated hmac called!"); - this.update(a); - return this.digest(a); - }; - sjcl2.misc.hmac.prototype.reset = function() { - this.R = new this.W(this.w[0]); - this.aa = false; - }; - sjcl2.misc.hmac.prototype.update = function(a) { - this.aa = true; - this.R.update(a); - }; - sjcl2.misc.hmac.prototype.digest = function() { - var a = this.R.finalize(), a = new this.W(this.w[1]).update(a).finalize(); - this.reset(); - return a; - }; - sjcl2.misc.pbkdf2 = function(a, b, c, d, e) { - c = c || 1e4; - if (0 > d || 0 > c) throw new sjcl2.exception.invalid("invalid params to pbkdf2"); - "string" === typeof a && (a = sjcl2.codec.utf8String.toBits(a)); - "string" === typeof b && (b = sjcl2.codec.utf8String.toBits(b)); - e = e || sjcl2.misc.hmac; - a = new e(a); - var f, g, h, k, l = [], n = sjcl2.bitArray; - for (k = 1; 32 * l.length < (d || 1); k++) { - e = f = a.encrypt(n.concat(b, [k])); - for (g = 1; g < c; g++) for (f = a.encrypt(f), h = 0; h < f.length; h++) e[h] ^= f[h]; - l = l.concat(e); - } - d && (l = n.clamp(l, d)); - return l; - }; - sjcl2.prng = function(a) { - this.c = [new sjcl2.hash.sha256()]; - this.m = [0]; - this.P = 0; - this.H = {}; - this.N = 0; - this.U = {}; - this.Z = this.f = this.o = this.ha = 0; - this.b = [0, 0, 0, 0, 0, 0, 0, 0]; - this.h = [0, 0, 0, 0]; - this.L = void 0; - this.M = a; - this.D = false; - this.K = { progress: {}, seeded: {} }; - this.u = this.ga = 0; - this.I = 1; - this.J = 2; - this.ca = 65536; - this.T = [0, 48, 64, 96, 128, 192, 256, 384, 512, 768, 1024]; - this.da = 3e4; - this.ba = 80; - }; - sjcl2.prng.prototype = { - randomWords: function(a, b) { - var c = [], d; - d = this.isReady(b); - var e; - if (d === this.u) throw new sjcl2.exception.notReady("generator isn't seeded"); - if (d & this.J) { - d = !(d & this.I); - e = []; - var f = 0, g; - this.Z = e[0] = (/* @__PURE__ */ new Date()).valueOf() + this.da; - for (g = 0; 16 > g; g++) e.push(4294967296 * Math.random() | 0); - for (g = 0; g < this.c.length && (e = e.concat(this.c[g].finalize()), f += this.m[g], this.m[g] = 0, d || !(this.P & 1 << g)); g++) ; - this.P >= 1 << this.c.length && (this.c.push(new sjcl2.hash.sha256()), this.m.push(0)); - this.f -= f; - f > this.o && (this.o = f); - this.P++; - this.b = sjcl2.hash.sha256.hash(this.b.concat(e)); - this.L = new sjcl2.cipher.aes(this.b); - for (d = 0; 4 > d && (this.h[d] = this.h[d] + 1 | 0, !this.h[d]); d++) ; - } - for (d = 0; d < a; d += 4) 0 === (d + 1) % this.ca && y(this), e = z(this), c.push(e[0], e[1], e[2], e[3]); - y(this); - return c.slice(0, a); - }, - setDefaultParanoia: function(a, b) { - if (0 === a && "Setting paranoia=0 will ruin your security; use it only for testing" !== b) throw new sjcl2.exception.invalid("Setting paranoia=0 will ruin your security; use it only for testing"); - this.M = a; - }, - addEntropy: function(a, b, c) { - c = c || "user"; - var d, e, f = (/* @__PURE__ */ new Date()).valueOf(), g = this.H[c], h = this.isReady(), k = 0; - d = this.U[c]; - void 0 === d && (d = this.U[c] = this.ha++); - void 0 === g && (g = this.H[c] = 0); - this.H[c] = (this.H[c] + 1) % this.c.length; - switch (typeof a) { - case "number": - void 0 === b && (b = 1); - this.c[g].update([d, this.N++, 1, b, f, 1, a | 0]); - break; - case "object": - c = Object.prototype.toString.call(a); - if ("[object Uint32Array]" === c) { - e = []; - for (c = 0; c < a.length; c++) e.push(a[c]); - a = e; - } else for ("[object Array]" !== c && (k = 1), c = 0; c < a.length && !k; c++) "number" !== typeof a[c] && (k = 1); - if (!k) { - if (void 0 === b) for (c = b = 0; c < a.length; c++) for (e = a[c]; 0 < e; ) b++, e = e >>> 1; - this.c[g].update([d, this.N++, 2, b, f, a.length].concat(a)); - } - break; - case "string": - void 0 === b && (b = a.length); - this.c[g].update([d, this.N++, 3, b, f, a.length]); - this.c[g].update(a); - break; - default: - k = 1; - } - if (k) throw new sjcl2.exception.bug("random: addEntropy only supports number, array of numbers or string"); - this.m[g] += b; - this.f += b; - h === this.u && (this.isReady() !== this.u && A("seeded", Math.max(this.o, this.f)), A("progress", this.getProgress())); - }, - isReady: function(a) { - a = this.T[void 0 !== a ? a : this.M]; - return this.o && this.o >= a ? this.m[0] > this.ba && (/* @__PURE__ */ new Date()).valueOf() > this.Z ? this.J | this.I : this.I : this.f >= a ? this.J | this.u : this.u; - }, - getProgress: function(a) { - a = this.T[a ? a : this.M]; - return this.o >= a ? 1 : this.f > a ? 1 : this.f / a; - }, - startCollectors: function() { - if (!this.D) { - this.a = { loadTimeCollector: B(this, this.ma), mouseCollector: B(this, this.oa), keyboardCollector: B(this, this.la), accelerometerCollector: B(this, this.ea), touchCollector: B(this, this.qa) }; - if (window.addEventListener) window.addEventListener( - "load", - this.a.loadTimeCollector, - false - ), window.addEventListener("mousemove", this.a.mouseCollector, false), window.addEventListener("keypress", this.a.keyboardCollector, false), window.addEventListener("devicemotion", this.a.accelerometerCollector, false), window.addEventListener("touchmove", this.a.touchCollector, false); - else if (document.attachEvent) document.attachEvent("onload", this.a.loadTimeCollector), document.attachEvent("onmousemove", this.a.mouseCollector), document.attachEvent("keypress", this.a.keyboardCollector); - else throw new sjcl2.exception.bug("can't attach event"); - this.D = true; - } - }, - stopCollectors: function() { - this.D && (window.removeEventListener ? (window.removeEventListener("load", this.a.loadTimeCollector, false), window.removeEventListener("mousemove", this.a.mouseCollector, false), window.removeEventListener("keypress", this.a.keyboardCollector, false), window.removeEventListener("devicemotion", this.a.accelerometerCollector, false), window.removeEventListener("touchmove", this.a.touchCollector, false)) : document.detachEvent && (document.detachEvent("onload", this.a.loadTimeCollector), document.detachEvent( - "onmousemove", - this.a.mouseCollector - ), document.detachEvent("keypress", this.a.keyboardCollector)), this.D = false); - }, - addEventListener: function(a, b) { - this.K[a][this.ga++] = b; - }, - removeEventListener: function(a, b) { - var c, d, e = this.K[a], f = []; - for (d in e) e.hasOwnProperty(d) && e[d] === b && f.push(d); - for (c = 0; c < f.length; c++) d = f[c], delete e[d]; - }, - la: function() { - C(this, 1); - }, - oa: function(a) { - var b, c; - try { - b = a.x || a.clientX || a.offsetX || 0, c = a.y || a.clientY || a.offsetY || 0; - } catch (d) { - c = b = 0; - } - 0 != b && 0 != c && this.addEntropy([b, c], 2, "mouse"); - C(this, 0); - }, - qa: function(a) { - a = a.touches[0] || a.changedTouches[0]; - this.addEntropy([a.pageX || a.clientX, a.pageY || a.clientY], 1, "touch"); - C(this, 0); - }, - ma: function() { - C(this, 2); - }, - ea: function(a) { - a = a.accelerationIncludingGravity.x || a.accelerationIncludingGravity.y || a.accelerationIncludingGravity.z; - if (window.orientation) { - var b = window.orientation; - "number" === typeof b && this.addEntropy(b, 1, "accelerometer"); - } - a && this.addEntropy(a, 2, "accelerometer"); - C(this, 0); - } - }; - function A(a, b) { - var c, d = sjcl2.random.K[a], e = []; - for (c in d) d.hasOwnProperty(c) && e.push(d[c]); - for (c = 0; c < e.length; c++) e[c](b); - } - function C(a, b) { - "undefined" !== typeof window && window.performance && "function" === typeof window.performance.now ? a.addEntropy(window.performance.now(), b, "loadtime") : a.addEntropy((/* @__PURE__ */ new Date()).valueOf(), b, "loadtime"); - } - function y(a) { - a.b = z(a).concat(z(a)); - a.L = new sjcl2.cipher.aes(a.b); - } - function z(a) { - for (var b = 0; 4 > b && (a.h[b] = a.h[b] + 1 | 0, !a.h[b]); b++) ; - return a.L.encrypt(a.h); - } - function B(a, b) { - return function() { - b.apply(a, arguments); - }; - } - sjcl2.random = new sjcl2.prng(6); - a: try { - if (G = "undefined" !== typeof module && module.exports) { - try { - H = __require("crypto"); - } catch (a) { - H = null; - } - G = E = H; - } - if (G && E.randomBytes) D = E.randomBytes(128), D = new Uint32Array(new Uint8Array(D).buffer), sjcl2.random.addEntropy(D, 1024, "crypto['randomBytes']"); - else if ("undefined" !== typeof window && "undefined" !== typeof Uint32Array) { - F = new Uint32Array(32); - if (window.crypto && window.crypto.getRandomValues) window.crypto.getRandomValues(F); - else if (window.msCrypto && window.msCrypto.getRandomValues) window.msCrypto.getRandomValues(F); - else break a; - sjcl2.random.addEntropy(F, 1024, "crypto['getRandomValues']"); - } - } catch (a) { - "undefined" !== typeof window && window.console && (console.log("There was an error collecting entropy from the browser:"), console.log(a)); - } - var D; - var E; - var F; - var G; - var H; - sjcl2.json = { defaults: { v: 1, iter: 1e4, ks: 128, ts: 64, mode: "ccm", adata: "", cipher: "aes" }, ja: function(a, b, c, d) { - c = c || {}; - d = d || {}; - var e = sjcl2.json, f = e.g({ iv: sjcl2.random.randomWords(4, 0) }, e.defaults), g; - e.g(f, c); - c = f.adata; - "string" === typeof f.salt && (f.salt = sjcl2.codec.base64.toBits(f.salt)); - "string" === typeof f.iv && (f.iv = sjcl2.codec.base64.toBits(f.iv)); - if (!sjcl2.mode[f.mode] || !sjcl2.cipher[f.cipher] || "string" === typeof a && 100 >= f.iter || 64 !== f.ts && 96 !== f.ts && 128 !== f.ts || 128 !== f.ks && 192 !== f.ks && 256 !== f.ks || 2 > f.iv.length || 4 < f.iv.length) throw new sjcl2.exception.invalid("json encrypt: invalid parameters"); - "string" === typeof a ? (g = sjcl2.misc.cachedPbkdf2(a, f), a = g.key.slice(0, f.ks / 32), f.salt = g.salt) : sjcl2.ecc && a instanceof sjcl2.ecc.elGamal.publicKey && (g = a.kem(), f.kemtag = g.tag, a = g.key.slice(0, f.ks / 32)); - "string" === typeof b && (b = sjcl2.codec.utf8String.toBits(b)); - "string" === typeof c && (f.adata = c = sjcl2.codec.utf8String.toBits(c)); - g = new sjcl2.cipher[f.cipher](a); - e.g(d, f); - d.key = a; - f.ct = "ccm" === f.mode && sjcl2.arrayBuffer && sjcl2.arrayBuffer.ccm && b instanceof ArrayBuffer ? sjcl2.arrayBuffer.ccm.encrypt(g, b, f.iv, c, f.ts) : sjcl2.mode[f.mode].encrypt(g, b, f.iv, c, f.ts); - return f; - }, encrypt: function(a, b, c, d) { - var e = sjcl2.json, f = e.ja.apply(e, arguments); - return e.encode(f); - }, ia: function(a, b, c, d) { - c = c || {}; - d = d || {}; - var e = sjcl2.json; - b = e.g(e.g(e.g({}, e.defaults), b), c, true); - var f, g; - f = b.adata; - "string" === typeof b.salt && (b.salt = sjcl2.codec.base64.toBits(b.salt)); - "string" === typeof b.iv && (b.iv = sjcl2.codec.base64.toBits(b.iv)); - if (!sjcl2.mode[b.mode] || !sjcl2.cipher[b.cipher] || "string" === typeof a && 100 >= b.iter || 64 !== b.ts && 96 !== b.ts && 128 !== b.ts || 128 !== b.ks && 192 !== b.ks && 256 !== b.ks || !b.iv || 2 > b.iv.length || 4 < b.iv.length) throw new sjcl2.exception.invalid("json decrypt: invalid parameters"); - "string" === typeof a ? (g = sjcl2.misc.cachedPbkdf2(a, b), a = g.key.slice(0, b.ks / 32), b.salt = g.salt) : sjcl2.ecc && a instanceof sjcl2.ecc.elGamal.secretKey && (a = a.unkem(sjcl2.codec.base64.toBits(b.kemtag)).slice(0, b.ks / 32)); - "string" === typeof f && (f = sjcl2.codec.utf8String.toBits(f)); - g = new sjcl2.cipher[b.cipher](a); - f = "ccm" === b.mode && sjcl2.arrayBuffer && sjcl2.arrayBuffer.ccm && b.ct instanceof ArrayBuffer ? sjcl2.arrayBuffer.ccm.decrypt(g, b.ct, b.iv, b.tag, f, b.ts) : sjcl2.mode[b.mode].decrypt(g, b.ct, b.iv, f, b.ts); - e.g(d, b); - d.key = a; - return 1 === c.raw ? f : sjcl2.codec.utf8String.fromBits(f); - }, decrypt: function(a, b, c, d) { - var e = sjcl2.json; - return e.ia(a, e.decode(b), c, d); - }, encode: function(a) { - var b, c = "{", d = ""; - for (b in a) if (a.hasOwnProperty(b)) { - if (!b.match(/^[a-z0-9]+$/i)) throw new sjcl2.exception.invalid("json encode: invalid property name"); - c += d + '"' + b + '":'; - d = ","; - switch (typeof a[b]) { - case "number": - case "boolean": - c += a[b]; - break; - case "string": - c += '"' + escape(a[b]) + '"'; - break; - case "object": - c += '"' + sjcl2.codec.base64.fromBits(a[b], 0) + '"'; - break; - default: - throw new sjcl2.exception.bug("json encode: unsupported type"); - } - } - return c + "}"; - }, decode: function(a) { - a = a.replace(/\s/g, ""); - if (!a.match(/^\{.*\}$/)) throw new sjcl2.exception.invalid("json decode: this isn't json!"); - a = a.replace(/^\{|\}$/g, "").split(/,/); - var b = {}, c, d; - for (c = 0; c < a.length; c++) { - if (!(d = a[c].match(/^\s*(?:(["']?)([a-z][a-z0-9]*)\1)\s*:\s*(?:(-?\d+)|"([a-z0-9+\/%*_.@=\-]*)"|(true|false))$/i))) throw new sjcl2.exception.invalid("json decode: this isn't json!"); - null != d[3] ? b[d[2]] = parseInt(d[3], 10) : null != d[4] ? b[d[2]] = d[2].match(/^(ct|adata|salt|iv)$/) ? sjcl2.codec.base64.toBits(d[4]) : unescape(d[4]) : null != d[5] && (b[d[2]] = "true" === d[5]); - } - return b; - }, g: function(a, b, c) { - void 0 === a && (a = {}); - if (void 0 === b) return a; - for (var d in b) if (b.hasOwnProperty(d)) { - if (c && void 0 !== a[d] && a[d] !== b[d]) throw new sjcl2.exception.invalid("required parameter overridden"); - a[d] = b[d]; - } - return a; - }, sa: function(a, b) { - var c = {}, d; - for (d in a) a.hasOwnProperty(d) && a[d] !== b[d] && (c[d] = a[d]); - return c; - }, ra: function(a, b) { - var c = {}, d; - for (d = 0; d < b.length; d++) void 0 !== a[b[d]] && (c[b[d]] = a[b[d]]); - return c; - } }; - sjcl2.encrypt = sjcl2.json.encrypt; - sjcl2.decrypt = sjcl2.json.decrypt; - sjcl2.misc.pa = {}; - sjcl2.misc.cachedPbkdf2 = function(a, b) { - var c = sjcl2.misc.pa, d; - b = b || {}; - d = b.iter || 1e3; - c = c[a] = c[a] || {}; - d = c[d] = c[d] || { firstSalt: b.salt && b.salt.length ? b.salt.slice(0) : sjcl2.random.randomWords(2, 0) }; - c = void 0 === b.salt ? d.firstSalt : b.salt; - d[c] = d[c] || sjcl2.misc.pbkdf2(a, c, b.iter); - return { key: d[c].slice(0), salt: c.slice(0) }; - }; - "undefined" !== typeof module && module.exports && (module.exports = sjcl2); - "function" === typeof define && define([], function() { - return sjcl2; - }); - } -}); - -// node_modules/.deno/eventemitter3@5.0.1/node_modules/eventemitter3/index.js -var require_eventemitter3 = __commonJS({ - "node_modules/.deno/eventemitter3@5.0.1/node_modules/eventemitter3/index.js"(exports, module) { - "use strict"; - var has = Object.prototype.hasOwnProperty; - var prefix = "~"; - function Events() { - } - if (Object.create) { - Events.prototype = /* @__PURE__ */ Object.create(null); - if (!new Events().__proto__) prefix = false; - } - function EE(fn, context, once) { - this.fn = fn; - this.context = context; - this.once = once || false; - } - function addListener(emitter, event, fn, context, once) { - if (typeof fn !== "function") { - throw new TypeError("The listener must be a function"); - } - var listener = new EE(fn, context || emitter, once), evt = prefix ? prefix + event : event; - if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++; - else if (!emitter._events[evt].fn) emitter._events[evt].push(listener); - else emitter._events[evt] = [emitter._events[evt], listener]; - return emitter; - } - function clearEvent(emitter, evt) { - if (--emitter._eventsCount === 0) emitter._events = new Events(); - else delete emitter._events[evt]; - } - function EventEmitter3() { - this._events = new Events(); - this._eventsCount = 0; - } - EventEmitter3.prototype.eventNames = function eventNames() { - var names = [], events2, name; - if (this._eventsCount === 0) return names; - for (name in events2 = this._events) { - if (has.call(events2, name)) names.push(prefix ? name.slice(1) : name); - } - if (Object.getOwnPropertySymbols) { - return names.concat(Object.getOwnPropertySymbols(events2)); - } - return names; - }; - EventEmitter3.prototype.listeners = function listeners(event) { - var evt = prefix ? prefix + event : event, handlers = this._events[evt]; - if (!handlers) return []; - if (handlers.fn) return [handlers.fn]; - for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) { - ee[i] = handlers[i].fn; - } - return ee; - }; - EventEmitter3.prototype.listenerCount = function listenerCount(event) { - var evt = prefix ? prefix + event : event, listeners = this._events[evt]; - if (!listeners) return 0; - if (listeners.fn) return 1; - return listeners.length; - }; - EventEmitter3.prototype.emit = function emit(event, a1, a2, a3, a4, a5) { - var evt = prefix ? prefix + event : event; - if (!this._events[evt]) return false; - var listeners = this._events[evt], len = arguments.length, args, i; - if (listeners.fn) { - if (listeners.once) this.removeListener(event, listeners.fn, void 0, true); - switch (len) { - case 1: - return listeners.fn.call(listeners.context), true; - case 2: - return listeners.fn.call(listeners.context, a1), true; - case 3: - return listeners.fn.call(listeners.context, a1, a2), true; - case 4: - return listeners.fn.call(listeners.context, a1, a2, a3), true; - case 5: - return listeners.fn.call(listeners.context, a1, a2, a3, a4), true; - case 6: - return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true; - } - for (i = 1, args = new Array(len - 1); i < len; i++) { - args[i - 1] = arguments[i]; - } - listeners.fn.apply(listeners.context, args); - } else { - var length = listeners.length, j; - for (i = 0; i < length; i++) { - if (listeners[i].once) this.removeListener(event, listeners[i].fn, void 0, true); - switch (len) { - case 1: - listeners[i].fn.call(listeners[i].context); - break; - case 2: - listeners[i].fn.call(listeners[i].context, a1); - break; - case 3: - listeners[i].fn.call(listeners[i].context, a1, a2); - break; - case 4: - listeners[i].fn.call(listeners[i].context, a1, a2, a3); - break; - default: - if (!args) for (j = 1, args = new Array(len - 1); j < len; j++) { - args[j - 1] = arguments[j]; - } - listeners[i].fn.apply(listeners[i].context, args); - } - } - } - return true; - }; - EventEmitter3.prototype.on = function on(event, fn, context) { - return addListener(this, event, fn, context, false); - }; - EventEmitter3.prototype.once = function once(event, fn, context) { - return addListener(this, event, fn, context, true); - }; - EventEmitter3.prototype.removeListener = function removeListener(event, fn, context, once) { - var evt = prefix ? prefix + event : event; - if (!this._events[evt]) return this; - if (!fn) { - clearEvent(this, evt); - return this; - } - var listeners = this._events[evt]; - if (listeners.fn) { - if (listeners.fn === fn && (!once || listeners.once) && (!context || listeners.context === context)) { - clearEvent(this, evt); - } - } else { - for (var i = 0, events2 = [], length = listeners.length; i < length; i++) { - if (listeners[i].fn !== fn || once && !listeners[i].once || context && listeners[i].context !== context) { - events2.push(listeners[i]); - } - } - if (events2.length) this._events[evt] = events2.length === 1 ? events2[0] : events2; - else clearEvent(this, evt); - } - return this; - }; - EventEmitter3.prototype.removeAllListeners = function removeAllListeners(event) { - var evt; - if (event) { - evt = prefix ? prefix + event : event; - if (this._events[evt]) clearEvent(this, evt); - } else { - this._events = new Events(); - this._eventsCount = 0; - } - return this; - }; - EventEmitter3.prototype.off = EventEmitter3.prototype.removeListener; - EventEmitter3.prototype.addListener = EventEmitter3.prototype.on; - EventEmitter3.prefixed = prefix; - EventEmitter3.EventEmitter = EventEmitter3; - if ("undefined" !== typeof module) { - module.exports = EventEmitter3; - } - } -}); - -// src/worker/main.ts -var import_events = __toESM(require_events()); - -// node_modules/.deno/neverthrow@8.0.0/node_modules/neverthrow/dist/index.es.js -var defaultErrorConfig = { - withStackTrace: false -}; -var createNeverThrowError = (message, result, config = defaultErrorConfig) => { - const data = result.isOk() ? { type: "Ok", value: result.value } : { type: "Err", value: result.error }; - const maybeStack = config.withStackTrace ? new Error().stack : void 0; - return { - data, - message, - stack: maybeStack - }; -}; -function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function(resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, [])).next()); - }); -} -function __values(o) { - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; - if (m) return m.call(o); - if (o && typeof o.length === "number") return { - next: function() { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); -} -function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); -} -function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { - return this; - }, i; - function verb(n) { - if (g[n]) i[n] = function(v) { - return new Promise(function(a, b) { - q.push([n, v, a, b]) > 1 || resume(n, v); - }); - }; - } - function resume(n, v) { - try { - step(g[n](v)); - } catch (e) { - settle(q[0][3], e); - } - } - function step(r) { - r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); - } - function fulfill(value) { - resume("next", value); - } - function reject(value) { - resume("throw", value); - } - function settle(f, v) { - if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); - } -} -function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function(e) { - throw e; - }), verb("return"), i[Symbol.iterator] = function() { - return this; - }, i; - function verb(n, f) { - i[n] = o[n] ? function(v) { - return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; - } : f; - } -} -function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { - return this; - }, i); - function verb(n) { - i[n] = o[n] && function(v) { - return new Promise(function(resolve, reject) { - v = o[n](v), settle(resolve, reject, v.done, v.value); - }); - }; - } - function settle(resolve, reject, d, v) { - Promise.resolve(v).then(function(v2) { - resolve({ value: v2, done: d }); - }, reject); - } -} -var ResultAsync = class _ResultAsync { - constructor(res) { - this._promise = res; - } - static fromSafePromise(promise) { - const newPromise = promise.then((value) => new Ok(value)); - return new _ResultAsync(newPromise); - } - static fromPromise(promise, errorFn) { - const newPromise = promise.then((value) => new Ok(value)).catch((e) => new Err(errorFn(e))); - return new _ResultAsync(newPromise); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any - static fromThrowable(fn, errorFn) { - return (...args) => { - return new _ResultAsync((() => __awaiter(this, void 0, void 0, function* () { - try { - return new Ok(yield fn(...args)); - } catch (error) { - return new Err(errorFn ? errorFn(error) : error); - } - }))()); - }; - } - static combine(asyncResultList) { - return combineResultAsyncList(asyncResultList); - } - static combineWithAllErrors(asyncResultList) { - return combineResultAsyncListWithAllErrors(asyncResultList); - } - map(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return new Err(res.error); - } - return new Ok(yield f(res.value)); - }))); - } - andThrough(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return new Err(res.error); - } - const newRes = yield f(res.value); - if (newRes.isErr()) { - return new Err(newRes.error); - } - return new Ok(res.value); - }))); - } - andTee(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return new Err(res.error); - } - try { - yield f(res.value); - } catch (e) { - } - return new Ok(res.value); - }))); - } - mapErr(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isOk()) { - return new Ok(res.value); - } - return new Err(yield f(res.error)); - }))); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThen(f) { - return new _ResultAsync(this._promise.then((res) => { - if (res.isErr()) { - return new Err(res.error); - } - const newValue = f(res.value); - return newValue instanceof _ResultAsync ? newValue._promise : newValue; - })); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - orElse(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return f(res.error); - } - return new Ok(res.value); - }))); - } - match(ok2, _err) { - return this._promise.then((res) => res.match(ok2, _err)); - } - unwrapOr(t) { - return this._promise.then((res) => res.unwrapOr(t)); - } - /** - * Emulates Rust's `?` operator in `safeTry`'s body. See also `safeTry`. - */ - safeUnwrap() { - return __asyncGenerator(this, arguments, function* safeUnwrap_1() { - return yield __await(yield __await(yield* __asyncDelegator(__asyncValues(yield __await(this._promise.then((res) => res.safeUnwrap())))))); - }); - } - // Makes ResultAsync implement PromiseLike - then(successCallback, failureCallback) { - return this._promise.then(successCallback, failureCallback); - } -}; -var okAsync = (value) => new ResultAsync(Promise.resolve(new Ok(value))); -var errAsync = (err2) => new ResultAsync(Promise.resolve(new Err(err2))); -var fromPromise = ResultAsync.fromPromise; -var fromSafePromise = ResultAsync.fromSafePromise; -var fromAsyncThrowable = ResultAsync.fromThrowable; -var combineResultList = (resultList) => { - let acc = ok([]); - for (const result of resultList) { - if (result.isErr()) { - acc = err(result.error); - break; - } else { - acc.map((list) => list.push(result.value)); - } - } - return acc; -}; -var combineResultAsyncList = (asyncResultList) => ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultList); -var combineResultListWithAllErrors = (resultList) => { - let acc = ok([]); - for (const result of resultList) { - if (result.isErr() && acc.isErr()) { - acc.error.push(result.error); - } else if (result.isErr() && acc.isOk()) { - acc = err([result.error]); - } else if (result.isOk() && acc.isOk()) { - acc.value.push(result.value); - } - } - return acc; -}; -var combineResultAsyncListWithAllErrors = (asyncResultList) => ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultListWithAllErrors); -var Result; -(function(Result2) { - function fromThrowable2(fn, errorFn) { - return (...args) => { - try { - const result = fn(...args); - return ok(result); - } catch (e) { - return err(errorFn ? errorFn(e) : e); - } - }; - } - Result2.fromThrowable = fromThrowable2; - function combine(resultList) { - return combineResultList(resultList); - } - Result2.combine = combine; - function combineWithAllErrors(resultList) { - return combineResultListWithAllErrors(resultList); - } - Result2.combineWithAllErrors = combineWithAllErrors; -})(Result || (Result = {})); -var ok = (value) => new Ok(value); -function err(err2) { - return new Err(err2); -} -var Ok = class { - constructor(value) { - this.value = value; - } - isOk() { - return true; - } - isErr() { - return !this.isOk(); - } - map(f) { - return ok(f(this.value)); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - mapErr(_f) { - return ok(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThen(f) { - return f(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThrough(f) { - return f(this.value).map((_value) => this.value); - } - andTee(f) { - try { - f(this.value); - } catch (e) { - } - return ok(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - orElse(_f) { - return ok(this.value); - } - asyncAndThen(f) { - return f(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - asyncAndThrough(f) { - return f(this.value).map(() => this.value); - } - asyncMap(f) { - return ResultAsync.fromSafePromise(f(this.value)); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - unwrapOr(_v) { - return this.value; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - match(ok2, _err) { - return ok2(this.value); - } - safeUnwrap() { - const value = this.value; - return function* () { - return value; - }(); - } - _unsafeUnwrap(_) { - return this.value; - } - _unsafeUnwrapErr(config) { - throw createNeverThrowError("Called `_unsafeUnwrapErr` on an Ok", this, config); - } -}; -var Err = class { - constructor(error) { - this.error = error; - } - isOk() { - return false; - } - isErr() { - return !this.isOk(); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - map(_f) { - return err(this.error); - } - mapErr(f) { - return err(f(this.error)); - } - andThrough(_f) { - return err(this.error); - } - andTee(_f) { - return err(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThen(_f) { - return err(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - orElse(f) { - return f(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - asyncAndThen(_f) { - return errAsync(this.error); - } - asyncAndThrough(_f) { - return errAsync(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - asyncMap(_f) { - return errAsync(this.error); - } - unwrapOr(v) { - return v; - } - match(_ok, err2) { - return err2(this.error); - } - safeUnwrap() { - const error = this.error; - return function* () { - yield err(error); - throw new Error("Do not use this generator out of `safeTry`"); - }(); - } - _unsafeUnwrap(config) { - throw createNeverThrowError("Called `_unsafeUnwrap` on an Err", this, config); - } - _unsafeUnwrapErr(_) { - return this.error; - } -}; -var fromThrowable = Result.fromThrowable; - -// src/error/base-error.ts -var BaseError = class extends Error { - constructor(message, options = {}) { - const { cause, context } = options; - super(message, { cause }); - __publicField(this, "context"); - this.name = this.constructor.name; - this.context = context; - } -}; - -// src/utils.ts -var ensureError = (value) => { - if (value instanceof Error) return value; - let stringified = "[Unable to stringify the thrown value]"; - try { - stringified = JSON.stringify(value); - } catch (_error) { - } - const error = new Error(stringified); - return error; -}; -var isDenoRuntime = () => typeof Deno !== "undefined"; -var workerUrl = (relativePath) => isDenoRuntime() ? new URL(`./worker/${relativePath}.ts`, new URL(".", import.meta.url).href) : new URL( - import.meta.resolve( - `./${relativePath === "main" ? `worker/${relativePath}` : relativePath}.js` - ) -); - -// src/worker/main.ts -var events = new import_events.default(); -var worker; -var isInitialized = false; -self.onmessage = (event) => { - addWorker(event); - if (!isInitialized) { - isInitialized = true; - events.once("OPERATION_FAILED" /* OPERATION_FAILED */, () => { - if (worker) { - worker.terminate(); - } - }); - } -}; -var updateFile = (lufiFile, args) => { - Object.assign(lufiFile, args); - if (typeof WorkerGlobalScope !== "undefined") { - self.postMessage({ - event: "FILE_UPDATED" /* FILE_UPDATED */, - lufiFile - }); - } - return lufiFile; -}; -var sendFileError = (lufiFile, error) => { - updateFile(lufiFile, { uploadStatus: 2 /* FAILED */ }); - self.postMessage({ event: "OPERATION_FAILED" /* OPERATION_FAILED */, error }); -}; -var addWorker = (event, callback) => { - const { action } = event.data; - if (action === 5 /* PAUSE */ || action === 8 /* RESUME */) { - worker.postMessage(event.data); - } else { - switch (action) { - case 2 /* CANCEL */: - { - worker = new Worker(workerUrl("cancel"), { type: "module" }); - worker.postMessage(event.data); - } - break; - case 3 /* DOWNLOAD */: - { - worker = new Worker(workerUrl("download"), { type: "module" }); - worker.postMessage(event.data); - } - break; - case 4 /* INFOS */: - { - worker = new Worker(workerUrl("infos"), { type: "module" }); - worker.postMessage(event.data); - } - break; - case 7 /* REMOVE */: - { - worker = worker || new Worker(workerUrl("remove"), { type: "module" }); - worker.postMessage(event.data); - } - break; - case 9 /* UPLOAD */: - { - worker = worker || new Worker(workerUrl("upload"), { type: "module" }); - worker.postMessage(event.data); - } - break; - default: { - console.error("Action not found"); - } - } - worker.onmessage = (e) => { - if (callback) callback(e); - self.postMessage(e.data); - }; - worker.onerror = (error) => { - console.error(`Error: ${error.message}`); - }; - } -}; -var init = () => { - events.once("SOCKET_OPENED" /* SOCKET_OPENED */, () => { - self.postMessage({ - event: "SOCKET_OPENED" /* SOCKET_OPENED */ - }); - }); - events.once("OPERATION_FAILED" /* OPERATION_FAILED */, (error) => { - self.postMessage({ event: "OPERATION_FAILED" /* OPERATION_FAILED */, error }); - }); -}; - -// src/error/websocket/websocket-error.ts -var WebSocketError = class extends BaseError { -}; - -// src/error/websocket/websocket-connection-error.ts -var WebSocketConnectionError = class extends WebSocketError { - constructor() { - super(...arguments); - __publicField(this, "message", "An error occured while trying to connect to WebSocket"); - } -}; - -// node_modules/.deno/arraybuffer-encoding@1.1.0/node_modules/arraybuffer-encoding/dist/esm/base64/encoding.js -var Encoding = class { - /** - * - * @param charset Charset to use for base64 encoding. This must be 64-characters long. - * @param noPadding If true, encoded strings won't include padding. - */ - constructor(charset, noPadding) { - if (!charset || charset.length != 64) { - throw Error("Charset must contain 64 characters"); - } - this._charset = charset; - this._noPadding = !!noPadding; - this._valid = new RegExp("^[" + this._charset.replace("-", "\\-") + "]+={0,2}$"); - } - /** - * Encode an ArrayBuffer to base64 in a string. - * @param ab Data to encode to base64 - * @returns Base64-encoded string - */ - Encode(ab) { - const len = ab.byteLength; - if (!len) { - return ""; - } - const view = new Uint8Array(ab); - let res = ""; - for (let i = 0; i < len; i += 3) { - res += this._charset[view[i] >> 2] + this._charset[(view[i] & 3) << 4 | view[i + 1] >> 4] + this._charset[(view[i + 1] & 15) << 2 | view[i + 2] >> 6] + this._charset[view[i + 2] & 63]; - } - if (len % 3 == 2) { - res = res.substring(0, res.length - 1); - if (!this._noPadding) { - res += "="; - } - } else if (len % 3 == 1) { - res = res.substring(0, res.length - 2); - if (!this._noPadding) { - res += "=="; - } - } - return res; - } - /** - * Decode a string from base64. Padding is always optional. - * @param str Base64-encoded string - * @returns Data decoded from the base64 string - */ - Decode(str) { - str = (str || "").replace(/[\s]/g, ""); - if (!str) { - return new ArrayBuffer(0); - } - if (!this._valid.test(str)) { - throw Error("Invalid base64 input sequence"); - } - let viewLen = Math.floor(str.length * 0.75); - if (str[str.length - 2] == "=") { - viewLen -= 2; - } else if (str[str.length - 1] == "=") { - viewLen--; - } - const view = new Uint8Array(viewLen); - let enc1, enc2, enc3, enc4, i = 0, j = 0; - while (i < str.length * 0.75) { - enc1 = this._charset.indexOf(str.charAt(j++)); - enc2 = this._charset.indexOf(str.charAt(j++)); - enc3 = this._charset.indexOf(str.charAt(j++)); - enc4 = this._charset.indexOf(str.charAt(j++)); - view[i++] = enc1 << 2 | enc2 >> 4; - view[i++] = (enc2 & 15) << 4 | enc3 >> 2; - view[i++] = (enc3 & 3) << 6 | enc4; - } - return view.buffer; - } -}; - -// node_modules/.deno/arraybuffer-encoding@1.1.0/node_modules/arraybuffer-encoding/dist/esm/base64/standard.js -var obj = new Encoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"); -function Decode(str) { - return obj.Decode(str); -} - -// node_modules/.deno/arraybuffer-encoding@1.1.0/node_modules/arraybuffer-encoding/dist/esm/base64/url.js -var obj2 = new Encoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_", true); -function Decode2(str) { - return obj2.Decode(str); -} - -// src/api/crypto/sjcl.ts -var import_sjcl = __toESM(require_sjcl()); - -// src/error/crypto/crypto-error.ts -var CryptoError = class extends BaseError { -}; - -// src/error/crypto/decryption-error.ts -var DecryptionError = class extends CryptoError { - constructor() { - super(...arguments); - __publicField(this, "message", "Unable to decrypt the provided data"); - } -}; - -// src/api/crypto/sjcl.ts -var decrypt = (key, encryptedData) => { - try { - const data = typeof encryptedData === "string" ? encryptedData : encryptedData.data; - return okAsync(Decode(import_sjcl.default.decrypt(key, data))); - } catch (error) { - return errAsync( - new DecryptionError(void 0, { cause: ensureError(error) }) - ); - } -}; - -// src/api/crypto/web.ts -var decrypt2 = (key, encrypted) => { - return importKey(key).andThen( - (importedKey) => ResultAsync.fromPromise( - crypto.subtle.decrypt( - { - name: "AES-GCM", - iv: encrypted.iv - }, - importedKey, - Decode(encrypted.data) - ), - (error) => new DecryptionError(void 0, { cause: ensureError(error) }) - ) - ); -}; -var importKey = (key) => { - return ResultAsync.fromPromise( - crypto.subtle.importKey( - "raw", - Decode2(key), - { name: "AES-GCM" }, - false, - [ - "encrypt", - "decrypt" - ] - ), - (error) => new CryptoError("Unable to import cryptography key", { - cause: ensureError(error) - }) - ); -}; - -// src/api/crypto.ts -var decrypt3 = (key, value) => { - return value.algo === void 0 || value.algo === 0 /* Sjcl */ ? decrypt(key, value) : decrypt2(key, value); -}; - -// src/api/websocket.ts -var sockets = {}; -var MAX_ERRORS = 5; -var onCancelMessage = (data) => { - events.emit("UPLOAD_CANCELLED" /* UPLOAD_CANCELLED */, data.success); - return okAsync(void 0); -}; -var onDownloadMessage = (response, lufiFile) => { - const result = response.split("XXMOJOXX"); - const metadataString = result.shift(); - if (metadataString !== void 0) { - const metadata = JSON.parse(metadataString); - if (isServerDownloadChunkSuccessMetadata(metadata)) { - const dataString = result.shift(); - if (dataString) { - const encryptedData = JSON.parse(dataString); - if (encryptedData.iv) { - encryptedData.iv = new Uint8Array(Object.values(encryptedData.iv)); - } - return decrypt3(lufiFile.keys.client, encryptedData).andThen( - (decryptedPart) => { - const chunk = typeof decryptedPart === "string" ? new TextEncoder().encode(decryptedPart).buffer : decryptedPart; - if (metadata.part === 0) { - updateFile(lufiFile, { - chunksReady: lufiFile.chunksReady + 1, - delAtFirstView: metadata.del_at_first_view, - delay: metadata.delay, - name: metadata.name, - size: metadata.size, - totalChunks: metadata.total, - type: metadata.type, - zipped: metadata.zipped - }); - events.emit("DOWNLOAD_STARTED" /* DOWNLOAD_STARTED */); - } else { - updateFile(lufiFile, { chunksReady: lufiFile.chunksReady + 1 }); - } - events.emit("CHUNK_DOWNLOADED" /* CHUNK_DOWNLOADED */, chunk, metadata.part); - if (++metadata.part === metadata.total) { - return endDownload(lufiFile).andThen(() => { - events.emit("DOWNLOAD_COMPLETE" /* DOWNLOAD_COMPLETE */); - events.emit("SOCKET_OPERATION_TERMINATED" /* SOCKET_OPERATION_TERMINATED */); - return okAsync(void 0); - }); - } - return okAsync(void 0); - } - ); - } else { - const error = new WebSocketError( - "Can't retrieve metadata from data received by the server" - ); - events.emit("OPERATION_FAILED" /* OPERATION_FAILED */, error); - return errAsync(error); - } - } else { - const error = new WebSocketError(metadata.msg); - events.emit("OPERATION_FAILED" /* OPERATION_FAILED */, error); - return errAsync(error); - } - } else { - const error = new WebSocketError( - "Can't retrieve metadata from data received by the server" - ); - events.emit("OPERATION_FAILED" /* OPERATION_FAILED */, error); - return errAsync(error); - } -}; -var onUploadMessage = (response, lufiFile) => { - if (response.success) { - if (response.j === 0) { - updateFile(lufiFile, { - keys: { client: lufiFile.keys.client, server: response.short }, - actionToken: response.token, - queueIndex: response.i - }); - events.emit("UPLOAD_STARTED" /* UPLOAD_STARTED */); - } - updateFile(lufiFile, { - chunksReady: lufiFile.chunksReady + 1, - createdAt: response.created_at - }); - events.emit("CHUNK_UPLOADED" /* CHUNK_UPLOADED */); - if (lufiFile.chunksReady === lufiFile.totalChunks) { - updateFile(lufiFile, { uploadStatus: 1 /* COMPLETE */ }); - events.emit("UPLOAD_COMPLETE" /* UPLOAD_COMPLETE */); - events.emit("SOCKET_OPERATION_TERMINATED" /* SOCKET_OPERATION_TERMINATED */); - } - return okAsync(void 0); - } else { - const error = new WebSocketError(response.msg); - events.emit("OPERATION_FAILED" /* OPERATION_FAILED */, error); - return errAsync(error); - } -}; -var onMessage = (e, lufiFile) => { - const data = tryParseJson(e.data); - let callback; - if (data) { - if (!data.action && data.msg) { - const error = new WebSocketError(data.msg); - events.emit("OPERATION_FAILED" /* OPERATION_FAILED */, error); - return errAsync(error); - } else { - if ("delay" in data) { - callback = onUploadMessage(data, lufiFile); - } else { - callback = onCancelMessage(data); - } - } - } else { - callback = onDownloadMessage(e.data, lufiFile); - } - return callback; -}; -var isConnecting = (socketKey) => sockets !== void 0 && sockets[socketKey] !== void 0 && sockets[socketKey].readyState === WebSocket.CONNECTING; -var isSpawned = (socketKey) => sockets !== void 0 && sockets[socketKey] !== void 0 && sockets[socketKey].readyState === WebSocket.OPEN; -var downloadChunk = (lufiFile, chunkNumber) => { - let message; - if (lufiFile.password) { - message = { part: chunkNumber, file_pwd: lufiFile.password }; - } else { - message = { part: chunkNumber }; - } - return sendMessage( - downloadSocketUrl(lufiFile), - lufiFile, - JSON.stringify(message) - ); -}; -var endDownload = (lufiFile) => { - let message; - if (lufiFile.password) { - message = { ended: true, file_pwd: lufiFile.password }; - } else { - message = { ended: true }; - } - return sendMessage( - downloadSocketUrl(lufiFile), - lufiFile, - JSON.stringify(message) - ); -}; -var sendMessage = (socketUrl, lufiFile, message) => { - if (!isSpawned(socketUrl)) { - return spawn(socketUrl).andThen( - () => sendMessage(socketUrl, lufiFile, message) - ); - } else { - sockets[socketUrl].onmessage = (e) => onMessage(e, lufiFile); - sockets[socketUrl].send(message); - return okAsync(void 0); - } -}; -var spawn = (socketKey, errorCount = 0) => { - if (!isSpawned(socketKey) && !isConnecting(socketKey)) { - sockets[socketKey] = new WebSocket(socketKey); - events.once("SOCKET_OPERATION_TERMINATED" /* SOCKET_OPERATION_TERMINATED */, () => { - sockets[socketKey].close(); - }); - events.once("OPERATION_FAILED" /* OPERATION_FAILED */, () => { - events.emit("SOCKET_OPERATION_TERMINATED" /* SOCKET_OPERATION_TERMINATED */); - }); - sockets[socketKey].onopen = () => { - events.emit("SOCKET_OPENED" /* SOCKET_OPENED */); - }; - sockets[socketKey].onclose = () => { - }; - sockets[socketKey].onerror = () => { - if (++errorCount <= MAX_ERRORS) { - console.error( - `An error happened while trying to connect to WebSocket ${socketKey}. Trying again. ${errorCount} / ${MAX_ERRORS}` - ); - return spawn(socketKey, errorCount); - } else { - events.emit("SOCKET_ONERROR" /* SOCKET_ONERROR */); - return errAsync( - new WebSocketConnectionError( - `Unable to connect to WebSocket ${socketKey}.` - ) - ); - } - }; - } - return waitForConnection(socketKey).andThen(() => okAsync(socketKey)).orElse((error) => errAsync(error)); -}; -var waitForConnection = (socketKey) => ResultAsync.fromPromise( - new Promise((resolve, reject) => { - if (!isSpawned(socketKey)) { - events.once("SOCKET_OPENED" /* SOCKET_OPENED */, () => { - resolve(void 0); - }); - events.on("SOCKET_ONERROR" /* SOCKET_ONERROR */, () => { - reject(new WebSocketConnectionError()); - }); - } else { - resolve(void 0); - } - }), - (error) => { - return ensureError(error); - } -); -var buildSocketUrl = (instanceUrl, pathname) => { - const url = new URL(instanceUrl); - url.protocol = url.protocol === "http:" ? "ws:" : "wss:"; - url.pathname += pathname; - return new URL(url.origin + url.pathname); -}; -var downloadSocketUrl = (lufiFile) => { - return buildSocketUrl( - new URL(lufiFile.serverUrl), - "download" /* DOWNLOAD */ + `/${lufiFile.keys.server}` - ).toString(); -}; -var tryParseJson = (data) => { - try { - const parsedObject = JSON.parse(data); - if (parsedObject && typeof parsedObject === "object") { - return parsedObject; - } - } catch (_e) { - } - return false; -}; -var isServerDownloadChunkSuccessMetadata = (message) => { - return typeof message === "object" && message !== null && !("msg" in message); -}; - -// node_modules/.deno/eventemitter3@5.0.1/node_modules/eventemitter3/index.mjs -var import_index = __toESM(require_eventemitter3(), 1); - -// node_modules/.deno/p-timeout@6.1.3/node_modules/p-timeout/index.js -var TimeoutError = class extends Error { - constructor(message) { - super(message); - this.name = "TimeoutError"; - } -}; -var AbortError = class extends Error { - constructor(message) { - super(); - this.name = "AbortError"; - this.message = message; - } -}; -var getDOMException = (errorMessage) => globalThis.DOMException === void 0 ? new AbortError(errorMessage) : new DOMException(errorMessage); -var getAbortedReason = (signal) => { - const reason = signal.reason === void 0 ? getDOMException("This operation was aborted.") : signal.reason; - return reason instanceof Error ? reason : getDOMException(reason); -}; -function pTimeout(promise, options) { - const { - milliseconds, - fallback, - message, - customTimers = { setTimeout, clearTimeout } - } = options; - let timer; - const wrappedPromise = new Promise((resolve, reject) => { - if (typeof milliseconds !== "number" || Math.sign(milliseconds) !== 1) { - throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${milliseconds}\``); - } - if (options.signal) { - const { signal } = options; - if (signal.aborted) { - reject(getAbortedReason(signal)); - } - const abortHandler = () => { - reject(getAbortedReason(signal)); - }; - signal.addEventListener("abort", abortHandler, { once: true }); - promise.finally(() => { - signal.removeEventListener("abort", abortHandler); - }); - } - if (milliseconds === Number.POSITIVE_INFINITY) { - promise.then(resolve, reject); - return; - } - const timeoutError = new TimeoutError(); - timer = customTimers.setTimeout.call(void 0, () => { - if (fallback) { - try { - resolve(fallback()); - } catch (error) { - reject(error); - } - return; - } - if (typeof promise.cancel === "function") { - promise.cancel(); - } - if (message === false) { - resolve(); - } else if (message instanceof Error) { - reject(message); - } else { - timeoutError.message = message != null ? message : `Promise timed out after ${milliseconds} milliseconds`; - reject(timeoutError); - } - }, milliseconds); - (async () => { - try { - resolve(await promise); - } catch (error) { - reject(error); - } - })(); - }); - const cancelablePromise = wrappedPromise.finally(() => { - cancelablePromise.clear(); - }); - cancelablePromise.clear = () => { - customTimers.clearTimeout.call(void 0, timer); - timer = void 0; - }; - return cancelablePromise; -} - -// node_modules/.deno/p-queue@8.0.1/node_modules/p-queue/dist/lower-bound.js -function lowerBound(array, value, comparator) { - let first = 0; - let count = array.length; - while (count > 0) { - const step = Math.trunc(count / 2); - let it = first + step; - if (comparator(array[it], value) <= 0) { - first = ++it; - count -= step + 1; - } else { - count = step; - } - } - return first; -} - -// node_modules/.deno/p-queue@8.0.1/node_modules/p-queue/dist/priority-queue.js -var _queue; -var PriorityQueue = class { - constructor() { - __privateAdd(this, _queue, []); - } - enqueue(run, options) { - options = { - priority: 0, - ...options - }; - const element = { - priority: options.priority, - run - }; - if (this.size && __privateGet(this, _queue)[this.size - 1].priority >= options.priority) { - __privateGet(this, _queue).push(element); - return; - } - const index = lowerBound(__privateGet(this, _queue), element, (a, b) => b.priority - a.priority); - __privateGet(this, _queue).splice(index, 0, element); - } - dequeue() { - const item = __privateGet(this, _queue).shift(); - return item == null ? void 0 : item.run; - } - filter(options) { - return __privateGet(this, _queue).filter((element) => element.priority === options.priority).map((element) => element.run); - } - get size() { - return __privateGet(this, _queue).length; - } -}; -_queue = new WeakMap(); - -// node_modules/.deno/p-queue@8.0.1/node_modules/p-queue/dist/index.js -var _carryoverConcurrencyCount, _isIntervalIgnored, _intervalCount, _intervalCap, _interval, _intervalEnd, _intervalId, _timeoutId, _queue2, _queueClass, _pending, _concurrency, _isPaused, _throwOnTimeout, _PQueue_instances, doesIntervalAllowAnother_get, doesConcurrentAllowAnother_get, next_fn, onResumeInterval_fn, isIntervalPaused_get, tryToStartAnother_fn, initializeIntervalIfNeeded_fn, onInterval_fn, processQueue_fn, throwOnAbort_fn, onEvent_fn; -var PQueue = class extends import_index.default { - // TODO: The `throwOnTimeout` option should affect the return types of `add()` and `addAll()` - constructor(options) { - var _a, _b, _c, _d; - super(); - __privateAdd(this, _PQueue_instances); - __privateAdd(this, _carryoverConcurrencyCount); - __privateAdd(this, _isIntervalIgnored); - __privateAdd(this, _intervalCount, 0); - __privateAdd(this, _intervalCap); - __privateAdd(this, _interval); - __privateAdd(this, _intervalEnd, 0); - __privateAdd(this, _intervalId); - __privateAdd(this, _timeoutId); - __privateAdd(this, _queue2); - __privateAdd(this, _queueClass); - __privateAdd(this, _pending, 0); - // The `!` is needed because of https://github.com/microsoft/TypeScript/issues/32194 - __privateAdd(this, _concurrency); - __privateAdd(this, _isPaused); - __privateAdd(this, _throwOnTimeout); - /** - Per-operation timeout in milliseconds. Operations fulfill once `timeout` elapses if they haven't already. - - Applies to each future operation. - */ - __publicField(this, "timeout"); - options = { - carryoverConcurrencyCount: false, - intervalCap: Number.POSITIVE_INFINITY, - interval: 0, - concurrency: Number.POSITIVE_INFINITY, - autoStart: true, - queueClass: PriorityQueue, - ...options - }; - if (!(typeof options.intervalCap === "number" && options.intervalCap >= 1)) { - throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${(_b = (_a = options.intervalCap) == null ? void 0 : _a.toString()) != null ? _b : ""}\` (${typeof options.intervalCap})`); - } - if (options.interval === void 0 || !(Number.isFinite(options.interval) && options.interval >= 0)) { - throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${(_d = (_c = options.interval) == null ? void 0 : _c.toString()) != null ? _d : ""}\` (${typeof options.interval})`); - } - __privateSet(this, _carryoverConcurrencyCount, options.carryoverConcurrencyCount); - __privateSet(this, _isIntervalIgnored, options.intervalCap === Number.POSITIVE_INFINITY || options.interval === 0); - __privateSet(this, _intervalCap, options.intervalCap); - __privateSet(this, _interval, options.interval); - __privateSet(this, _queue2, new options.queueClass()); - __privateSet(this, _queueClass, options.queueClass); - this.concurrency = options.concurrency; - this.timeout = options.timeout; - __privateSet(this, _throwOnTimeout, options.throwOnTimeout === true); - __privateSet(this, _isPaused, options.autoStart === false); - } - get concurrency() { - return __privateGet(this, _concurrency); - } - set concurrency(newConcurrency) { - if (!(typeof newConcurrency === "number" && newConcurrency >= 1)) { - throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${newConcurrency}\` (${typeof newConcurrency})`); - } - __privateSet(this, _concurrency, newConcurrency); - __privateMethod(this, _PQueue_instances, processQueue_fn).call(this); - } - async add(function_, options = {}) { - options = { - timeout: this.timeout, - throwOnTimeout: __privateGet(this, _throwOnTimeout), - ...options - }; - return new Promise((resolve, reject) => { - __privateGet(this, _queue2).enqueue(async () => { - var _a; - __privateWrapper(this, _pending)._++; - __privateWrapper(this, _intervalCount)._++; - try { - (_a = options.signal) == null ? void 0 : _a.throwIfAborted(); - let operation = function_({ signal: options.signal }); - if (options.timeout) { - operation = pTimeout(Promise.resolve(operation), { milliseconds: options.timeout }); - } - if (options.signal) { - operation = Promise.race([operation, __privateMethod(this, _PQueue_instances, throwOnAbort_fn).call(this, options.signal)]); - } - const result = await operation; - resolve(result); - this.emit("completed", result); - } catch (error) { - if (error instanceof TimeoutError && !options.throwOnTimeout) { - resolve(); - return; - } - reject(error); - this.emit("error", error); - } finally { - __privateMethod(this, _PQueue_instances, next_fn).call(this); - } - }, options); - this.emit("add"); - __privateMethod(this, _PQueue_instances, tryToStartAnother_fn).call(this); - }); - } - async addAll(functions, options) { - return Promise.all(functions.map(async (function_) => this.add(function_, options))); - } - /** - Start (or resume) executing enqueued tasks within concurrency limit. No need to call this if queue is not paused (via `options.autoStart = false` or by `.pause()` method.) - */ - start() { - if (!__privateGet(this, _isPaused)) { - return this; - } - __privateSet(this, _isPaused, false); - __privateMethod(this, _PQueue_instances, processQueue_fn).call(this); - return this; - } - /** - Put queue execution on hold. - */ - pause() { - __privateSet(this, _isPaused, true); - } - /** - Clear the queue. - */ - clear() { - __privateSet(this, _queue2, new (__privateGet(this, _queueClass))()); - } - /** - Can be called multiple times. Useful if you for example add additional items at a later time. - - @returns A promise that settles when the queue becomes empty. - */ - async onEmpty() { - if (__privateGet(this, _queue2).size === 0) { - return; - } - await __privateMethod(this, _PQueue_instances, onEvent_fn).call(this, "empty"); - } - /** - @returns A promise that settles when the queue size is less than the given limit: `queue.size < limit`. - - If you want to avoid having the queue grow beyond a certain size you can `await queue.onSizeLessThan()` before adding a new item. - - Note that this only limits the number of items waiting to start. There could still be up to `concurrency` jobs already running that this call does not include in its calculation. - */ - async onSizeLessThan(limit) { - if (__privateGet(this, _queue2).size < limit) { - return; - } - await __privateMethod(this, _PQueue_instances, onEvent_fn).call(this, "next", () => __privateGet(this, _queue2).size < limit); - } - /** - The difference with `.onEmpty` is that `.onIdle` guarantees that all work from the queue has finished. `.onEmpty` merely signals that the queue is empty, but it could mean that some promises haven't completed yet. - - @returns A promise that settles when the queue becomes empty, and all promises have completed; `queue.size === 0 && queue.pending === 0`. - */ - async onIdle() { - if (__privateGet(this, _pending) === 0 && __privateGet(this, _queue2).size === 0) { - return; - } - await __privateMethod(this, _PQueue_instances, onEvent_fn).call(this, "idle"); - } - /** - Size of the queue, the number of queued items waiting to run. - */ - get size() { - return __privateGet(this, _queue2).size; - } - /** - Size of the queue, filtered by the given options. - - For example, this can be used to find the number of items remaining in the queue with a specific priority level. - */ - sizeBy(options) { - return __privateGet(this, _queue2).filter(options).length; - } - /** - Number of running items (no longer in the queue). - */ - get pending() { - return __privateGet(this, _pending); - } - /** - Whether the queue is currently paused. - */ - get isPaused() { - return __privateGet(this, _isPaused); - } -}; -_carryoverConcurrencyCount = new WeakMap(); -_isIntervalIgnored = new WeakMap(); -_intervalCount = new WeakMap(); -_intervalCap = new WeakMap(); -_interval = new WeakMap(); -_intervalEnd = new WeakMap(); -_intervalId = new WeakMap(); -_timeoutId = new WeakMap(); -_queue2 = new WeakMap(); -_queueClass = new WeakMap(); -_pending = new WeakMap(); -_concurrency = new WeakMap(); -_isPaused = new WeakMap(); -_throwOnTimeout = new WeakMap(); -_PQueue_instances = new WeakSet(); -doesIntervalAllowAnother_get = function() { - return __privateGet(this, _isIntervalIgnored) || __privateGet(this, _intervalCount) < __privateGet(this, _intervalCap); -}; -doesConcurrentAllowAnother_get = function() { - return __privateGet(this, _pending) < __privateGet(this, _concurrency); -}; -next_fn = function() { - __privateWrapper(this, _pending)._--; - __privateMethod(this, _PQueue_instances, tryToStartAnother_fn).call(this); - this.emit("next"); -}; -onResumeInterval_fn = function() { - __privateMethod(this, _PQueue_instances, onInterval_fn).call(this); - __privateMethod(this, _PQueue_instances, initializeIntervalIfNeeded_fn).call(this); - __privateSet(this, _timeoutId, void 0); -}; -isIntervalPaused_get = function() { - const now = Date.now(); - if (__privateGet(this, _intervalId) === void 0) { - const delay = __privateGet(this, _intervalEnd) - now; - if (delay < 0) { - __privateSet(this, _intervalCount, __privateGet(this, _carryoverConcurrencyCount) ? __privateGet(this, _pending) : 0); - } else { - if (__privateGet(this, _timeoutId) === void 0) { - __privateSet(this, _timeoutId, setTimeout(() => { - __privateMethod(this, _PQueue_instances, onResumeInterval_fn).call(this); - }, delay)); - } - return true; - } - } - return false; -}; -tryToStartAnother_fn = function() { - if (__privateGet(this, _queue2).size === 0) { - if (__privateGet(this, _intervalId)) { - clearInterval(__privateGet(this, _intervalId)); - } - __privateSet(this, _intervalId, void 0); - this.emit("empty"); - if (__privateGet(this, _pending) === 0) { - this.emit("idle"); - } - return false; - } - if (!__privateGet(this, _isPaused)) { - const canInitializeInterval = !__privateGet(this, _PQueue_instances, isIntervalPaused_get); - if (__privateGet(this, _PQueue_instances, doesIntervalAllowAnother_get) && __privateGet(this, _PQueue_instances, doesConcurrentAllowAnother_get)) { - const job = __privateGet(this, _queue2).dequeue(); - if (!job) { - return false; - } - this.emit("active"); - job(); - if (canInitializeInterval) { - __privateMethod(this, _PQueue_instances, initializeIntervalIfNeeded_fn).call(this); - } - return true; - } - } - return false; -}; -initializeIntervalIfNeeded_fn = function() { - if (__privateGet(this, _isIntervalIgnored) || __privateGet(this, _intervalId) !== void 0) { - return; - } - __privateSet(this, _intervalId, setInterval(() => { - __privateMethod(this, _PQueue_instances, onInterval_fn).call(this); - }, __privateGet(this, _interval))); - __privateSet(this, _intervalEnd, Date.now() + __privateGet(this, _interval)); -}; -onInterval_fn = function() { - if (__privateGet(this, _intervalCount) === 0 && __privateGet(this, _pending) === 0 && __privateGet(this, _intervalId)) { - clearInterval(__privateGet(this, _intervalId)); - __privateSet(this, _intervalId, void 0); - } - __privateSet(this, _intervalCount, __privateGet(this, _carryoverConcurrencyCount) ? __privateGet(this, _pending) : 0); - __privateMethod(this, _PQueue_instances, processQueue_fn).call(this); -}; -/** -Executes all queued functions until it reaches the limit. -*/ -processQueue_fn = function() { - while (__privateMethod(this, _PQueue_instances, tryToStartAnother_fn).call(this)) { - } -}; -throwOnAbort_fn = async function(signal) { - return new Promise((_resolve, reject) => { - signal.addEventListener("abort", () => { - reject(signal.reason); - }, { once: true }); - }); -}; -onEvent_fn = async function(event, filter) { - return new Promise((resolve) => { - const listener = () => { - if (filter && !filter()) { - return; - } - this.off(event, listener); - resolve(); - }; - this.on(event, listener); - }); -}; - -// src/worker/download.ts -var chunks = []; -var QUEUE_CONCURRENCY_LIMIT = navigator.hardwareConcurrency || 4; -var queue = new PQueue({ - concurrency: QUEUE_CONCURRENCY_LIMIT, - autoStart: false -}); -var itemsInQueue = 0; -var isInitiated = false; -var isPaused = false; -self.onmessage = (event) => { - if (!isInitiated) { - init(); - isInitiated = true; - } - const data = event.data; - switch (data.action) { - case 5 /* PAUSE */: - { - isPaused = true; - self.postMessage({ event: "JOB_PAUSED" /* JOB_PAUSED */ }); - } - break; - case 8 /* RESUME */: - { - isPaused = false; - self.postMessage({ event: "JOB_RESUMED" /* JOB_RESUMED */ }); - } - break; - default: - events.once("DOWNLOAD_COMPLETE" /* DOWNLOAD_COMPLETE */, () => { - self.postMessage({ event: "DOWNLOAD_COMPLETE" /* DOWNLOAD_COMPLETE */ }); - }); - events.on("FILE_UPDATED" /* FILE_UPDATED */, updateFile); - events.on("CHUNK_DOWNLOADED" /* CHUNK_DOWNLOADED */, (chunk, index) => { - self.postMessage({ - event: "CHUNK_DOWNLOADED" /* CHUNK_DOWNLOADED */, - chunk: { buffer: chunk, index } - }); - }); - download(data).mapErr((error) => { - sendFileError(data.args.lufiFile, error); - }); - } -}; -var download = (workerMessage) => { - const { lufiFile } = workerMessage.args; - events.on( - "CHUNK_DOWNLOADED" /* CHUNK_DOWNLOADED */, - (chunk, chunkNumber) => { - chunks[chunkNumber] = chunk; - itemsInQueue--; - if (!isPaused && itemsInQueue < QUEUE_CONCURRENCY_LIMIT) { - queue.start(); - } - } - ); - events.on("DOWNLOAD_STARTED" /* DOWNLOAD_STARTED */, async () => { - for (let i = 1; i < lufiFile.totalChunks; i++) { - await queue.add(async () => { - await downloadChunk(lufiFile, i); - itemsInQueue++; - if (isPaused || itemsInQueue === QUEUE_CONCURRENCY_LIMIT) { - queue.pause(); - } - }); - } - queue.start(); - }); - return downloadChunk(lufiFile, 0); -}; -export { - QUEUE_CONCURRENCY_LIMIT, - itemsInQueue, - queue -}; +var $t=Object.create;var Re=Object.defineProperty;var Ht=Object.getOwnPropertyDescriptor;var Xt=Object.getOwnPropertyNames;var Gt=Object.getPrototypeOf,Vt=Object.prototype.hasOwnProperty;var et=t=>{throw TypeError(t)};var Yt=(t,e,r)=>e in t?Re(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var Kt=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var Me=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Qt=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Xt(e))!Vt.call(t,o)&&o!==r&&Re(t,o,{get:()=>e[o],enumerable:!(n=Ht(e,o))||n.enumerable});return t};var Ne=(t,e,r)=>(r=t!=null?$t(Gt(t)):{},Qt(e||!t||!t.__esModule?Re(r,"default",{value:t,enumerable:!0}):r,t));var R=(t,e,r)=>Yt(t,typeof e!="symbol"?e+"":e,r),Ue=(t,e,r)=>e.has(t)||et("Cannot "+r);var p=(t,e,r)=>(Ue(t,e,"read from private field"),r?r.call(t):e.get(t)),A=(t,e,r)=>e.has(t)?et("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),E=(t,e,r,n)=>(Ue(t,e,"write to private field"),n?n.call(t,r):e.set(t,r),r),x=(t,e,r)=>(Ue(t,e,"access private method"),r);var Ae=(t,e,r,n)=>({set _(o){E(t,e,o,r)},get _(){return p(t,e,n)}});var ht=Me((jr,Be)=>{"use strict";var G=typeof Reflect=="object"?Reflect:null,tt=G&&typeof G.apply=="function"?G.apply:function(e,r,n){return Function.prototype.apply.call(e,r,n)},xe;G&&typeof G.ownKeys=="function"?xe=G.ownKeys:Object.getOwnPropertySymbols?xe=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:xe=function(e){return Object.getOwnPropertyNames(e)};function Zt(t){console&&console.warn&&console.warn(t)}var nt=Number.isNaN||function(e){return e!==e};function g(){g.init.call(this)}Be.exports=g;Be.exports.once=nr;g.EventEmitter=g;g.prototype._events=void 0;g.prototype._eventsCount=0;g.prototype._maxListeners=void 0;var rt=10;function Le(t){if(typeof t!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}Object.defineProperty(g,"defaultMaxListeners",{enumerable:!0,get:function(){return rt},set:function(t){if(typeof t!="number"||t<0||nt(t))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+t+".");rt=t}});g.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};g.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||nt(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function ot(t){return t._maxListeners===void 0?g.defaultMaxListeners:t._maxListeners}g.prototype.getMaxListeners=function(){return ot(this)};g.prototype.emit=function(e){for(var r=[],n=1;n0&&(s=r[0]),s instanceof Error)throw s;var c=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw c.context=s,c}var u=i[e];if(u===void 0)return!1;if(typeof u=="function")tt(u,this,r);else for(var f=u.length,l=ut(u,f),n=0;n0&&s.length>o&&!s.warned){s.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=t,c.type=e,c.count=s.length,Zt(c)}return t}g.prototype.addListener=function(e,r){return it(this,e,r,!1)};g.prototype.on=g.prototype.addListener;g.prototype.prependListener=function(e,r){return it(this,e,r,!0)};function er(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function st(t,e,r){var n={fired:!1,wrapFn:void 0,target:t,type:e,listener:r},o=er.bind(n);return o.listener=r,n.wrapFn=o,o}g.prototype.once=function(e,r){return Le(r),this.on(e,st(this,e,r)),this};g.prototype.prependOnceListener=function(e,r){return Le(r),this.prependListener(e,st(this,e,r)),this};g.prototype.removeListener=function(e,r){var n,o,i,s,c;if(Le(r),o=this._events,o===void 0)return this;if(n=o[e],n===void 0)return this;if(n===r||n.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete o[e],o.removeListener&&this.emit("removeListener",e,n.listener||r));else if(typeof n!="function"){for(i=-1,s=n.length-1;s>=0;s--)if(n[s]===r||n[s].listener===r){c=n[s].listener,i=s;break}if(i<0)return this;i===0?n.shift():tr(n,i),n.length===1&&(o[e]=n[0]),o.removeListener!==void 0&&this.emit("removeListener",e,c||r)}return this};g.prototype.off=g.prototype.removeListener;g.prototype.removeAllListeners=function(e){var r,n,o;if(n=this._events,n===void 0)return this;if(n.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):n[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete n[e]),this;if(arguments.length===0){var i=Object.keys(n),s;for(o=0;o=0;o--)this.removeListener(e,r[o]);return this};function at(t,e,r){var n=t._events;if(n===void 0)return[];var o=n[e];return o===void 0?[]:typeof o=="function"?r?[o.listener||o]:[o]:r?rr(o):ut(o,o.length)}g.prototype.listeners=function(e){return at(this,e,!0)};g.prototype.rawListeners=function(e){return at(this,e,!1)};g.listenerCount=function(t,e){return typeof t.listenerCount=="function"?t.listenerCount(e):ct.call(t,e)};g.prototype.listenerCount=ct;function ct(t){var e=this._events;if(e!==void 0){var r=e[t];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}g.prototype.eventNames=function(){return this._eventsCount>0?xe(this._events):[]};function ut(t,e){for(var r=new Array(e),n=0;n{"use strict";var a={cipher:{},hash:{},keyexchange:{},mode:{},misc:{},codec:{},exception:{corrupt:function(t){this.toString=function(){return"CORRUPT: "+this.message},this.message=t},invalid:function(t){this.toString=function(){return"INVALID: "+this.message},this.message=t},bug:function(t){this.toString=function(){return"BUG: "+this.message},this.message=t},notReady:function(t){this.toString=function(){return"NOT READY: "+this.message},this.message=t}}};a.cipher.aes=function(t){this.s[0][0][0]||this.O();var e,r,n,o,i=this.s[0][4],s=this.s[1];e=t.length;var c=1;if(e!==4&&e!==6&&e!==8)throw new a.exception.invalid("invalid aes key size");for(this.b=[n=t.slice(0),o=[]],t=e;t<4*e+28;t++)r=n[t-1],(t%e===0||e===8&&t%e===4)&&(r=i[r>>>24]<<24^i[r>>16&255]<<16^i[r>>8&255]<<8^i[r&255],t%e===0&&(r=r<<8^r>>>24^c<<24,c=c<<1^283*(c>>7))),n[t]=n[t-e]^r;for(e=0;t;e++,t--)r=n[e&3?t:t-4],o[e]=4>=t||4>e?r:s[0][i[r>>>24]]^s[1][i[r>>16&255]]^s[2][i[r>>8&255]]^s[3][i[r&255]]};a.cipher.aes.prototype={encrypt:function(t){return xt(this,t,0)},decrypt:function(t){return xt(this,t,1)},s:[[[],[],[],[],[]],[[],[],[],[],[]]],O:function(){var t=this.s[0],e=this.s[1],r=t[4],n=e[4],o,i,s,c=[],u=[],f,l,h,d;for(o=0;256>o;o++)u[(c[o]=o<<1^283*(o>>7))^o]=o;for(i=s=0;!r[i];i^=f||1,s=u[s]||1)for(h=s^s<<1^s<<2^s<<3^s<<4,h=h>>8^h&255^99,r[i]=h,n[h]=i,l=c[o=c[f=c[i]]],d=16843009*l^65537*o^257*f^16843008*i,l=257*c[h]^16843008*h,o=0;4>o;o++)t[o][i]=l=l<<24^l>>>8,e[o][h]=d=d<<24^d>>>8;for(o=0;5>o;o++)t[o]=t[o].slice(0),e[o]=e[o].slice(0)}};function xt(t,e,r){if(e.length!==4)throw new a.exception.invalid("invalid aes block size");var n=t.b[r],o=e[0]^n[0],i=e[r?3:1]^n[1],s=e[2]^n[2];e=e[r?1:3]^n[3];var c,u,f,l=n.length/4-2,h,d=4,m=[0,0,0,0];c=t.s[r],t=c[0];var w=c[1],X=c[2],we=c[3],Ee=c[4];for(h=0;h>>24]^w[i>>16&255]^X[s>>8&255]^we[e&255]^n[d],u=t[i>>>24]^w[s>>16&255]^X[e>>8&255]^we[o&255]^n[d+1],f=t[s>>>24]^w[e>>16&255]^X[o>>8&255]^we[i&255]^n[d+2],e=t[e>>>24]^w[o>>16&255]^X[i>>8&255]^we[s&255]^n[d+3],d+=4,o=c,i=u,s=f;for(h=0;4>h;h++)m[r?3&-h:h]=Ee[o>>>24]<<24^Ee[i>>16&255]<<16^Ee[s>>8&255]<<8^Ee[e&255]^n[d++],c=o,o=i,i=s,s=e,e=c;return m}a.bitArray={bitSlice:function(t,e,r){return t=a.bitArray.$(t.slice(e/32),32-(e&31)).slice(1),r===void 0?t:a.bitArray.clamp(t,r-e)},extract:function(t,e,r){var n=Math.floor(-e-r&31);return((e+r-1^e)&-32?t[e/32|0]<<32-n^t[e/32+1|0]>>>n:t[e/32|0]>>>n)&(1<>e-1,1)),t},partial:function(t,e,r){return t===32?e:(r?e|0:e<<32-t)+1099511627776*t},getPartial:function(t){return Math.round(t/1099511627776)||32},equal:function(t,e){if(a.bitArray.bitLength(t)!==a.bitArray.bitLength(e))return!1;var r=0,n;for(n=0;n>>e),r=t[o]<<32-e;return o=t.length?t[t.length-1]:0,t=a.bitArray.getPartial(o),n.push(a.bitArray.partial(e+t&31,32>>24|r>>>8&65280|(r&65280)<<8|r<<24;return t}};a.codec.utf8String={fromBits:function(t){var e="",r=a.bitArray.bitLength(t),n,o;for(n=0;n>>8>>>8>>>8),o<<=8;return decodeURIComponent(escape(e))},toBits:function(t){t=unescape(encodeURIComponent(t));var e=[],r,n=0;for(r=0;r>>s)>>>o),sl){if(!e)try{return a.codec.base32hex.toBits(t)}catch{}throw new a.exception.invalid("this isn't "+h+"!")}c>o?(c-=o,i.push(f^l>>>c),f=l<>>o)>>>26),6>o?(s=t[r]<<6-o,o+=26,r++):(s<<=6,o-=6);for(;n.length&3&&!e;)n+="=";return n},toBits:function(t,e){t=t.replace(/\s|=/g,"");var r=[],n,o=0,i=a.codec.base64.B,s=0,c;for(e&&(i=i.substr(0,62)+"-_"),n=0;nc)throw new a.exception.invalid("this isn't base64!");26>>o),s=c<<32-o):(o+=6,s^=c<<32-o)}return o&56&&r.push(a.bitArray.partial(o&56,s,1)),r}};a.codec.base64url={fromBits:function(t){return a.codec.base64.fromBits(t,1,1)},toBits:function(t){return a.codec.base64.toBits(t,1)}};a.hash.sha256=function(t){this.b[0]||this.O(),t?(this.F=t.F.slice(0),this.A=t.A.slice(0),this.l=t.l):this.reset()};a.hash.sha256.hash=function(t){return new a.hash.sha256().update(t).finalize()};a.hash.sha256.prototype={blockSize:512,reset:function(){return this.F=this.Y.slice(0),this.A=[],this.l=0,this},update:function(t){typeof t=="string"&&(t=a.codec.utf8String.toBits(t));var e,r=this.A=a.bitArray.concat(this.A,t);if(e=this.l,t=this.l=e+a.bitArray.bitLength(t),9007199254740991e;r++){for(o=!0,n=2;n*n<=r;n++)if(r%n===0){o=!1;break}o&&(8>e&&(this.Y[e]=t(Math.pow(r,.5))),this.b[e]=t(Math.pow(r,1/3)),e++)}}};function Fe(t,e){var r,n,o,i=t.F,s=t.b,c=i[0],u=i[1],f=i[2],l=i[3],h=i[4],d=i[5],m=i[6],w=i[7];for(r=0;64>r;r++)16>r?n=e[r]:(n=e[r+1&15],o=e[r+14&15],n=e[r&15]=(n>>>7^n>>>18^n>>>3^n<<25^n<<14)+(o>>>17^o>>>19^o>>>10^o<<15^o<<13)+e[r&15]+e[r+9&15]|0),n=n+w+(h>>>6^h>>>11^h>>>25^h<<26^h<<21^h<<7)+(m^h&(d^m))+s[r],w=m,m=d,d=h,h=l+n|0,l=f,f=u,u=c,c=n+(u&f^l&(u^f))+(u>>>2^u>>>13^u>>>22^u<<30^u<<19^u<<10)|0;i[0]=i[0]+c|0,i[1]=i[1]+u|0,i[2]=i[2]+f|0,i[3]=i[3]+l|0,i[4]=i[4]+h|0,i[5]=i[5]+d|0,i[6]=i[6]+m|0,i[7]=i[7]+w|0}a.mode.ccm={name:"ccm",G:[],listenProgress:function(t){a.mode.ccm.G.push(t)},unListenProgress:function(t){t=a.mode.ccm.G.indexOf(t),-1u)throw new a.exception.invalid("ccm: iv must be at least 7 bytes");for(i=2;4>i&&f>>>8*i;i++);return i<15-u&&(i=15-u),r=c.clamp(r,8*(15-i)),e=a.mode.ccm.V(t,e,r,n,o,i),s=a.mode.ccm.C(t,s,r,e,o,i),c.concat(s.data,s.tag)},decrypt:function(t,e,r,n,o){o=o||64,n=n||[];var i=a.bitArray,s=i.bitLength(r)/8,f=i.bitLength(e),c=i.clamp(e,f-o),u=i.bitSlice(e,f-o),f=(f-o)/8;if(7>s)throw new a.exception.invalid("ccm: iv must be at least 7 bytes");for(e=2;4>e&&f>>>8*e;e++);if(e<15-s&&(e=15-s),r=i.clamp(r,8*(15-e)),c=a.mode.ccm.C(t,c,r,u,o,e),t=a.mode.ccm.V(t,c.data,r,n,o,e),!i.equal(c.tag,t))throw new a.exception.corrupt("ccm: tag doesn't match");return c.data},na:function(t,e,r,n,o,i){var s=[],c=a.bitArray,u=c.i;if(n=[c.partial(8,(e.length?64:0)|n-2<<2|i-1)],n=c.concat(n,r),n[3]|=o,n=t.encrypt(n),e.length)for(r=c.bitLength(e)/8,65279>=r?s=[c.partial(16,r)]:4294967295>=r&&(s=c.concat([c.partial(16,65534)],[r])),s=c.concat(s,e),e=0;eo||16l&&(a.mode.ccm.fa(s/u),l+=h),r[3]++,o=t.encrypt(r),e[s]^=o[0],e[s+1]^=o[1],e[s+2]^=o[2],e[s+3]^=o[3];return{tag:n,data:c.clamp(e,f)}}};a.mode.ocb2={name:"ocb2",encrypt:function(t,e,r,n,o,i){if(a.bitArray.bitLength(r)!==128)throw new a.exception.invalid("ocb iv must be 128 bits");var s,c=a.mode.ocb2.S,u=a.bitArray,f=u.i,l=[0,0,0,0];r=c(t.encrypt(r));var h,d=[];for(n=n||[],o=o||64,s=0;s+4o.bitLength(r)&&(c=i(c,n(c)),r=o.concat(r,[-2147483648,0,0,0])),s=i(s,r),t.encrypt(i(n(i(c,n(c))),s))},S:function(t){return[t[0]<<1^t[1]>>>31,t[1]<<1^t[2]>>>31,t[2]<<1^t[3]>>>31,t[3]<<1^135*(t[0]>>>31)]}};a.mode.gcm={name:"gcm",encrypt:function(t,e,r,n,o){var i=e.slice(0);return e=a.bitArray,n=n||[],t=a.mode.gcm.C(!0,t,i,n,r,o||128),e.concat(t.data,t.tag)},decrypt:function(t,e,r,n,o){var i=e.slice(0),s=a.bitArray,c=s.bitLength(i);if(o=o||128,n=n||[],o<=c?(e=s.bitSlice(i,c-o),i=s.bitSlice(i,0,c-o)):(e=i,i=[]),t=a.mode.gcm.C(!1,t,i,n,r,o),!s.equal(t.tag,e))throw new a.exception.corrupt("gcm: tag doesn't match");return t.data},ka:function(t,e){var r,n,o,i,s,c=a.bitArray.i;for(o=[0,0,0,0],i=e.slice(0),r=0;128>r;r++){for((n=(t[Math.floor(r/32)]&1<<31-r%32)!==0)&&(o=c(o,i)),s=(i[3]&1)!==0,n=3;0>>1|(i[n-1]&1)<<31;i[0]>>>=1,s&&(i[0]^=-520093696)}return o},j:function(t,e,r){var n,o=r.length;for(e=e.slice(0),n=0;no&&(t=e.hash(t)),n=0;nn||0>r)throw new a.exception.invalid("invalid params to pbkdf2");typeof t=="string"&&(t=a.codec.utf8String.toBits(t)),typeof e=="string"&&(e=a.codec.utf8String.toBits(e)),o=o||a.misc.hmac,t=new o(t);var i,s,c,u,f=[],l=a.bitArray;for(u=1;32*f.length<(n||1);u++){for(o=i=t.encrypt(l.concat(e,[u])),s=1;ss;s++)o.push(4294967296*Math.random()|0);for(s=0;s=1<this.o&&(this.o=i),this.P++,this.b=a.hash.sha256.hash(this.b.concat(o)),this.L=new a.cipher.aes(this.b),n=0;4>n&&(this.h[n]=this.h[n]+1|0,!this.h[n]);n++);}for(n=0;n>>1;this.c[s].update([n,this.N++,2,e,i,t.length].concat(t))}break;case"string":e===void 0&&(e=t.length),this.c[s].update([n,this.N++,3,e,i,t.length]),this.c[s].update(t);break;default:u=1}if(u)throw new a.exception.bug("random: addEntropy only supports number, array of numbers or string");this.m[s]+=e,this.f+=e,c===this.u&&(this.isReady()!==this.u&&Lt("seeded",Math.max(this.o,this.f)),Lt("progress",this.getProgress()))},isReady:function(t){return t=this.T[t!==void 0?t:this.M],this.o&&this.o>=t?this.m[0]>this.ba&&new Date().valueOf()>this.Z?this.J|this.I:this.I:this.f>=t?this.J|this.u:this.u},getProgress:function(t){return t=this.T[t||this.M],this.o>=t||this.f>t?1:this.f/t},startCollectors:function(){if(!this.D){if(this.a={loadTimeCollector:ce(this,this.ma),mouseCollector:ce(this,this.oa),keyboardCollector:ce(this,this.la),accelerometerCollector:ce(this,this.ea),touchCollector:ce(this,this.qa)},window.addEventListener)window.addEventListener("load",this.a.loadTimeCollector,!1),window.addEventListener("mousemove",this.a.mouseCollector,!1),window.addEventListener("keypress",this.a.keyboardCollector,!1),window.addEventListener("devicemotion",this.a.accelerometerCollector,!1),window.addEventListener("touchmove",this.a.touchCollector,!1);else if(document.attachEvent)document.attachEvent("onload",this.a.loadTimeCollector),document.attachEvent("onmousemove",this.a.mouseCollector),document.attachEvent("keypress",this.a.keyboardCollector);else throw new a.exception.bug("can't attach event");this.D=!0}},stopCollectors:function(){this.D&&(window.removeEventListener?(window.removeEventListener("load",this.a.loadTimeCollector,!1),window.removeEventListener("mousemove",this.a.mouseCollector,!1),window.removeEventListener("keypress",this.a.keyboardCollector,!1),window.removeEventListener("devicemotion",this.a.accelerometerCollector,!1),window.removeEventListener("touchmove",this.a.touchCollector,!1)):document.detachEvent&&(document.detachEvent("onload",this.a.loadTimeCollector),document.detachEvent("onmousemove",this.a.mouseCollector),document.detachEvent("keypress",this.a.keyboardCollector)),this.D=!1)},addEventListener:function(t,e){this.K[t][this.ga++]=e},removeEventListener:function(t,e){var r,n,o=this.K[t],i=[];for(n in o)o.hasOwnProperty(n)&&o[n]===e&&i.push(n);for(r=0;re&&(t.h[e]=t.h[e]+1|0,!t.h[e]);e++);return t.L.encrypt(t.h)}function ce(t,e){return function(){e.apply(t,arguments)}}a.random=new a.prng(6);e:try{if(be=typeof Q<"u"&&Q.exports){try{_e=Kt("crypto")}catch{_e=null}be=Oe=_e}if(be&&Oe.randomBytes)ue=Oe.randomBytes(128),ue=new Uint32Array(new Uint8Array(ue).buffer),a.random.addEntropy(ue,1024,"crypto['randomBytes']");else if(typeof window<"u"&&typeof Uint32Array<"u"){if(fe=new Uint32Array(32),window.crypto&&window.crypto.getRandomValues)window.crypto.getRandomValues(fe);else if(window.msCrypto&&window.msCrypto.getRandomValues)window.msCrypto.getRandomValues(fe);else break e;a.random.addEntropy(fe,1024,"crypto['getRandomValues']")}}catch(t){typeof window<"u"&&window.console&&(console.log("There was an error collecting entropy from the browser:"),console.log(t))}var ue,Oe,fe,be,_e;a.json={defaults:{v:1,iter:1e4,ks:128,ts:64,mode:"ccm",adata:"",cipher:"aes"},ja:function(t,e,r,n){r=r||{},n=n||{};var o=a.json,i=o.g({iv:a.random.randomWords(4,0)},o.defaults),s;if(o.g(i,r),r=i.adata,typeof i.salt=="string"&&(i.salt=a.codec.base64.toBits(i.salt)),typeof i.iv=="string"&&(i.iv=a.codec.base64.toBits(i.iv)),!a.mode[i.mode]||!a.cipher[i.cipher]||typeof t=="string"&&100>=i.iter||i.ts!==64&&i.ts!==96&&i.ts!==128||i.ks!==128&&i.ks!==192&&i.ks!==256||2>i.iv.length||4=e.iter||e.ts!==64&&e.ts!==96&&e.ts!==128||e.ks!==128&&e.ks!==192&&e.ks!==256||!e.iv||2>e.iv.length||4{"use strict";var Tr=Object.prototype.hasOwnProperty,D="~";function he(){}Object.create&&(he.prototype=Object.create(null),new he().__proto__||(D=!1));function Rr(t,e,r){this.fn=t,this.context=e,this.once=r||!1}function Rt(t,e,r,n,o){if(typeof r!="function")throw new TypeError("The listener must be a function");var i=new Rr(r,n||t,o),s=D?D+e:e;return t._events[s]?t._events[s].fn?t._events[s]=[t._events[s],i]:t._events[s].push(i):(t._events[s]=i,t._eventsCount++),t}function De(t,e){--t._eventsCount===0?t._events=new he:delete t._events[e]}function b(){this._events=new he,this._eventsCount=0}b.prototype.eventNames=function(){var e=[],r,n;if(this._eventsCount===0)return e;for(n in r=this._events)Tr.call(r,n)&&e.push(D?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(r)):e};b.prototype.listeners=function(e){var r=D?D+e:e,n=this._events[r];if(!n)return[];if(n.fn)return[n.fn];for(var o=0,i=n.length,s=new Array(i);o{let n=e.isOk()?{type:"Ok",value:e.value}:{type:"Err",value:e.error},o=r.withStackTrace?new Error().stack:void 0;return{data:n,message:t,stack:o}};function V(t,e,r,n){function o(i){return i instanceof r?i:new r(function(s){s(i)})}return new(r||(r=Promise))(function(i,s){function c(l){try{f(n.next(l))}catch(h){s(h)}}function u(l){try{f(n.throw(l))}catch(h){s(h)}}function f(l){l.done?i(l.value):o(l.value).then(c,u)}f((n=n.apply(t,[])).next())})}function lt(t){var e=typeof Symbol=="function"&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&typeof t.length=="number")return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function $(t){return this instanceof $?(this.v=t,this):new $(t)}function sr(t,e,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=r.apply(t,e||[]),o,i=[];return o={},s("next"),s("throw"),s("return"),o[Symbol.asyncIterator]=function(){return this},o;function s(d){n[d]&&(o[d]=function(m){return new Promise(function(w,X){i.push([d,m,w,X])>1||c(d,m)})})}function c(d,m){try{u(n[d](m))}catch(w){h(i[0][3],w)}}function u(d){d.value instanceof $?Promise.resolve(d.value.v).then(f,l):h(i[0][2],d)}function f(d){c("next",d)}function l(d){c("throw",d)}function h(d,m){d(m),i.shift(),i.length&&c(i[0][0],i[0][1])}}function ar(t){var e,r;return e={},n("next"),n("throw",function(o){throw o}),n("return"),e[Symbol.iterator]=function(){return this},e;function n(o,i){e[o]=t[o]?function(s){return(r=!r)?{value:$(t[o](s)),done:o==="return"}:i?i(s):s}:i}}function cr(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof lt=="function"?lt(t):t[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(i){r[i]=t[i]&&function(s){return new Promise(function(c,u){s=t[i](s),o(c,u,s.done,s.value)})}}function o(i,s,c,u){Promise.resolve(u).then(function(f){i({value:f,done:c})},s)}}var O=class t{constructor(e){this._promise=e}static fromSafePromise(e){let r=e.then(n=>new k(n));return new t(r)}static fromPromise(e,r){let n=e.then(o=>new k(o)).catch(o=>new P(r(o)));return new t(n)}static fromThrowable(e,r){return(...n)=>new t(V(this,void 0,void 0,function*(){try{return new k(yield e(...n))}catch(o){return new P(r?r(o):o)}}))}static combine(e){return ur(e)}static combineWithAllErrors(e){return fr(e)}map(e){return new t(this._promise.then(r=>V(this,void 0,void 0,function*(){return r.isErr()?new P(r.error):new k(yield e(r.value))})))}andThrough(e){return new t(this._promise.then(r=>V(this,void 0,void 0,function*(){if(r.isErr())return new P(r.error);let n=yield e(r.value);return n.isErr()?new P(n.error):new k(r.value)})))}andTee(e){return new t(this._promise.then(r=>V(this,void 0,void 0,function*(){if(r.isErr())return new P(r.error);try{yield e(r.value)}catch{}return new k(r.value)})))}mapErr(e){return new t(this._promise.then(r=>V(this,void 0,void 0,function*(){return r.isOk()?new k(r.value):new P(yield e(r.error))})))}andThen(e){return new t(this._promise.then(r=>{if(r.isErr())return new P(r.error);let n=e(r.value);return n instanceof t?n._promise:n}))}orElse(e){return new t(this._promise.then(r=>V(this,void 0,void 0,function*(){return r.isErr()?e(r.error):new k(r.value)})))}match(e,r){return this._promise.then(n=>n.match(e,r))}unwrapOr(e){return this._promise.then(r=>r.unwrapOr(e))}safeUnwrap(){return sr(this,arguments,function*(){return yield $(yield $(yield*ar(cr(yield $(this._promise.then(r=>r.safeUnwrap()))))))})}then(e,r){return this._promise.then(e,r)}},M=t=>new O(Promise.resolve(new k(t))),_=t=>new O(Promise.resolve(new P(t))),Jr=O.fromPromise,zr=O.fromSafePromise,qr=O.fromThrowable,pt=t=>{let e=q([]);for(let r of t)if(r.isErr()){e=B(r.error);break}else e.map(n=>n.push(r.value));return e},ur=t=>O.fromSafePromise(Promise.all(t)).andThen(pt),mt=t=>{let e=q([]);for(let r of t)r.isErr()&&e.isErr()?e.error.push(r.error):r.isErr()&&e.isOk()?e=B([r.error]):r.isOk()&&e.isOk()&&e.value.push(r.value);return e},fr=t=>O.fromSafePromise(Promise.all(t)).andThen(mt),je;(function(t){function e(o,i){return(...s)=>{try{let c=o(...s);return q(c)}catch(c){return B(i?i(c):c)}}}t.fromThrowable=e;function r(o){return pt(o)}t.combine=r;function n(o){return mt(o)}t.combineWithAllErrors=n})(je||(je={}));var q=t=>new k(t);function B(t){return new P(t)}var k=class{constructor(e){this.value=e}isOk(){return!0}isErr(){return!this.isOk()}map(e){return q(e(this.value))}mapErr(e){return q(this.value)}andThen(e){return e(this.value)}andThrough(e){return e(this.value).map(r=>this.value)}andTee(e){try{e(this.value)}catch{}return q(this.value)}orElse(e){return q(this.value)}asyncAndThen(e){return e(this.value)}asyncAndThrough(e){return e(this.value).map(()=>this.value)}asyncMap(e){return O.fromSafePromise(e(this.value))}unwrapOr(e){return this.value}match(e,r){return e(this.value)}safeUnwrap(){let e=this.value;return function*(){return e}()}_unsafeUnwrap(e){return this.value}_unsafeUnwrapErr(e){throw dt("Called `_unsafeUnwrapErr` on an Ok",this,e)}},P=class{constructor(e){this.error=e}isOk(){return!1}isErr(){return!this.isOk()}map(e){return B(this.error)}mapErr(e){return B(e(this.error))}andThrough(e){return B(this.error)}andTee(e){return B(this.error)}andThen(e){return B(this.error)}orElse(e){return e(this.error)}asyncAndThen(e){return _(this.error)}asyncAndThrough(e){return _(this.error)}asyncMap(e){return _(this.error)}unwrapOr(e){return e}match(e,r){return r(this.error)}safeUnwrap(){let e=this.error;return function*(){throw yield B(e),new Error("Do not use this generator out of `safeTry`")}()}_unsafeUnwrap(e){throw dt("Called `_unsafeUnwrap` on an Err",this,e)}_unsafeUnwrapErr(e){return this.error}},$r=je.fromThrowable;var F=class extends Error{constructor(r,n={}){let{cause:o,context:i}=n;super(r,{cause:o});R(this,"context");this.name=this.constructor.name,this.context=i}};var H=t=>{if(t instanceof Error)return t;let e="[Unable to stringify the thrown value]";try{e=JSON.stringify(t)}catch{}return new Error(e)};var hr=()=>typeof Deno<"u";var Y=t=>hr()?new URL(`./worker/${t}.ts`,new URL(".",import.meta.url).href):new URL(import.meta.resolve(`./${t==="main"?`worker/${t}`:t}.js`));var v=new gt.default,L,yt=!1;self.onmessage=t=>{pr(t),yt||(yt=!0,v.once("OPERATION_FAILED",()=>{L&&L.terminate()}))};var j=(t,e)=>(Object.assign(t,e),typeof WorkerGlobalScope<"u"&&self.postMessage({event:"FILE_UPDATED",lufiFile:t}),t),wt=(t,e)=>{j(t,{uploadStatus:2}),self.postMessage({event:"OPERATION_FAILED",error:e})},pr=(t,e)=>{let{action:r}=t.data;if(r===5||r===8)L.postMessage(t.data);else{switch(r){case 2:L=new Worker(Y("cancel"),{type:"module"}),L.postMessage(t.data);break;case 3:L=new Worker(Y("download"),{type:"module"}),L.postMessage(t.data);break;case 4:L=new Worker(Y("infos"),{type:"module"}),L.postMessage(t.data);break;case 7:L=L||new Worker(Y("remove"),{type:"module"}),L.postMessage(t.data);break;case 9:L=L||new Worker(Y("upload"),{type:"module"}),L.postMessage(t.data);break;default:console.error("Action not found")}L.onmessage=n=>{e&&e(n),self.postMessage(n.data)},L.onerror=n=>{console.error(`Error: ${n.message}`)}}},Et=()=>{v.once("SOCKET_OPENED",()=>{self.postMessage({event:"SOCKET_OPENED"})}),v.once("OPERATION_FAILED",t=>{self.postMessage({event:"OPERATION_FAILED",error:t})})};var N=class extends F{};var ie=class extends N{constructor(){super(...arguments);R(this,"message","An error occured while trying to connect to WebSocket")}};var K=class{constructor(e,r){if(!e||e.length!=64)throw Error("Charset must contain 64 characters");this._charset=e,this._noPadding=!!r,this._valid=new RegExp("^["+this._charset.replace("-","\\-")+"]+={0,2}$")}Encode(e){let r=e.byteLength;if(!r)return"";let n=new Uint8Array(e),o="";for(let i=0;i>2]+this._charset[(n[i]&3)<<4|n[i+1]>>4]+this._charset[(n[i+1]&15)<<2|n[i+2]>>6]+this._charset[n[i+2]&63];return r%3==2?(o=o.substring(0,o.length-1),this._noPadding||(o+="=")):r%3==1&&(o=o.substring(0,o.length-2),this._noPadding||(o+="==")),o}Decode(e){if(e=(e||"").replace(/[\s]/g,""),!e)return new ArrayBuffer(0);if(!this._valid.test(e))throw Error("Invalid base64 input sequence");let r=Math.floor(e.length*.75);e[e.length-2]=="="?r-=2:e[e.length-1]=="="&&r--;let n=new Uint8Array(r),o,i,s,c,u=0,f=0;for(;u>4,n[u++]=(i&15)<<4|s>>2,n[u++]=(s&3)<<6|c;return n.buffer}};var mr=new K("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/");function se(t){return mr.Decode(t)}var yr=new K("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",!0);function We(t){return yr.Decode(t)}var Dt=Ne(bt());var J=class extends F{};var Z=class extends J{constructor(){super(...arguments);R(this,"message","Unable to decrypt the provided data")}};var Ct=(t,e)=>{try{let r=typeof e=="string"?e:e.data;return M(se(Dt.default.decrypt(t,r)))}catch(r){return _(new Z(void 0,{cause:H(r)}))}};var St=(t,e)=>wr(t).andThen(r=>O.fromPromise(crypto.subtle.decrypt({name:"AES-GCM",iv:e.iv},r,se(e.data)),n=>new Z(void 0,{cause:H(n)})));var wr=t=>O.fromPromise(crypto.subtle.importKey("raw",We(t),{name:"AES-GCM"},!1,["encrypt","decrypt"]),e=>new J("Unable to import cryptography key",{cause:H(e)}));var kt=(t,e)=>e.algo===void 0||e.algo===0?Ct(t,e):St(t,e);var S={},Pt=5,xr=t=>(v.emit("UPLOAD_CANCELLED",t.success),M(void 0)),Lr=(t,e)=>{let r=t.split("XXMOJOXX"),n=r.shift();if(n!==void 0){let o=JSON.parse(n);if(Pr(o)){let i=r.shift();if(i){let s=JSON.parse(i);return s.iv&&(s.iv=new Uint8Array(Object.values(s.iv))),kt(e.keys.client,s).andThen(c=>{let u=typeof c=="string"?new TextEncoder().encode(c).buffer:c;return o.part===0?(j(e,{chunksReady:e.chunksReady+1,delAtFirstView:o.del_at_first_view,delay:o.delay,name:o.name,size:o.size,totalChunks:o.total,type:o.type,zipped:o.zipped}),v.emit("DOWNLOAD_STARTED")):j(e,{chunksReady:e.chunksReady+1}),v.emit("CHUNK_DOWNLOADED",u,o.part),++o.part===o.total?Dr(e).andThen(()=>(v.emit("DOWNLOAD_COMPLETE"),v.emit("SOCKET_OPERATION_TERMINATED"),M(void 0))):M(void 0)})}else{let s=new N("Can't retrieve metadata from data received by the server");return v.emit("OPERATION_FAILED",s),_(s)}}else{let i=new N(o.msg);return v.emit("OPERATION_FAILED",i),_(i)}}else{let o=new N("Can't retrieve metadata from data received by the server");return v.emit("OPERATION_FAILED",o),_(o)}},Or=(t,e)=>{if(t.success)return t.j===0&&(j(e,{keys:{client:e.keys.client,server:t.short},actionToken:t.token,queueIndex:t.i}),v.emit("UPLOAD_STARTED")),j(e,{chunksReady:e.chunksReady+1,createdAt:t.created_at}),v.emit("CHUNK_UPLOADED"),e.chunksReady===e.totalChunks&&(j(e,{uploadStatus:1}),v.emit("UPLOAD_COMPLETE"),v.emit("SOCKET_OPERATION_TERMINATED")),M(void 0);{let r=new N(t.msg);return v.emit("OPERATION_FAILED",r),_(r)}},br=(t,e)=>{let r=kr(t.data),n;if(r)if(!r.action&&r.msg){let o=new N(r.msg);return v.emit("OPERATION_FAILED",o),_(o)}else"delay"in r?n=Or(r,e):n=xr(r);else n=Lr(t.data,e);return n},_r=t=>S!==void 0&&S[t]!==void 0&&S[t].readyState===WebSocket.CONNECTING,ze=t=>S!==void 0&&S[t]!==void 0&&S[t].readyState===WebSocket.OPEN;var qe=(t,e)=>{let r;return t.password?r={part:e,file_pwd:t.password}:r={part:e},$e(Tt(t),t,JSON.stringify(r))},Dr=t=>{let e;return t.password?e={ended:!0,file_pwd:t.password}:e={ended:!0},$e(Tt(t),t,JSON.stringify(e))};var $e=(t,e,r)=>ze(t)?(S[t].onmessage=n=>br(n,e),S[t].send(r),M(void 0)):It(t).andThen(()=>$e(t,e,r)),It=(t,e=0)=>(!ze(t)&&!_r(t)&&(S[t]=new WebSocket(t),v.once("SOCKET_OPERATION_TERMINATED",()=>{S[t].close()}),v.once("OPERATION_FAILED",()=>{v.emit("SOCKET_OPERATION_TERMINATED")}),S[t].onopen=()=>{v.emit("SOCKET_OPENED")},S[t].onclose=()=>{},S[t].onerror=()=>++e<=Pt?(console.error(`An error happened while trying to connect to WebSocket ${t}. Trying again. ${e} / ${Pt}`),It(t,e)):(v.emit("SOCKET_ONERROR"),_(new ie(`Unable to connect to WebSocket ${t}.`)))),Cr(t).andThen(()=>M(t)).orElse(r=>_(r))),Cr=t=>O.fromPromise(new Promise((e,r)=>{ze(t)?e(void 0):(v.once("SOCKET_OPENED",()=>{e(void 0)}),v.on("SOCKET_ONERROR",()=>{r(new ie)}))}),e=>H(e));var Sr=(t,e)=>{let r=new URL(t);return r.protocol=r.protocol==="http:"?"ws:":"wss:",r.pathname+=e,new URL(r.origin+r.pathname)},Tt=t=>Sr(new URL(t.serverUrl),"download"+`/${t.keys.server}`).toString();var kr=t=>{try{let e=JSON.parse(t);if(e&&typeof e=="object")return e}catch{}return!1},Pr=t=>typeof t=="object"&&t!==null&&!("msg"in t);var Xe=Ne(Mt(),1);var le=class extends Error{constructor(e){super(e),this.name="TimeoutError"}},Ge=class extends Error{constructor(e){super(),this.name="AbortError",this.message=e}},Nt=t=>globalThis.DOMException===void 0?new Ge(t):new DOMException(t),Ut=t=>{let e=t.reason===void 0?Nt("This operation was aborted."):t.reason;return e instanceof Error?e:Nt(e)};function Ve(t,e){let{milliseconds:r,fallback:n,message:o,customTimers:i={setTimeout,clearTimeout}}=e,s,u=new Promise((f,l)=>{if(typeof r!="number"||Math.sign(r)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${r}\``);if(e.signal){let{signal:d}=e;d.aborted&&l(Ut(d));let m=()=>{l(Ut(d))};d.addEventListener("abort",m,{once:!0}),t.finally(()=>{d.removeEventListener("abort",m)})}if(r===Number.POSITIVE_INFINITY){t.then(f,l);return}let h=new le;s=i.setTimeout.call(void 0,()=>{if(n){try{f(n())}catch(d){l(d)}return}typeof t.cancel=="function"&&t.cancel(),o===!1?f():o instanceof Error?l(o):(h.message=o!=null?o:`Promise timed out after ${r} milliseconds`,l(h))},r),(async()=>{try{f(await t)}catch(d){l(d)}})()}).finally(()=>{u.clear()});return u.clear=()=>{i.clearTimeout.call(void 0,s),s=void 0},u}function Ye(t,e,r){let n=0,o=t.length;for(;o>0;){let i=Math.trunc(o/2),s=n+i;r(t[s],e)<=0?(n=++s,o-=i+1):o=i}return n}var U,de=class{constructor(){A(this,U,[])}enqueue(e,r){r={priority:0,...r};let n={priority:r.priority,run:e};if(this.size&&p(this,U)[this.size-1].priority>=r.priority){p(this,U).push(n);return}let o=Ye(p(this,U),n,(i,s)=>s.priority-i.priority);p(this,U).splice(o,0,n)}dequeue(){let e=p(this,U).shift();return e==null?void 0:e.run}filter(e){return p(this,U).filter(r=>r.priority===e.priority).map(r=>r.run)}get size(){return p(this,U).length}};U=new WeakMap;var ee,te,z,me,re,ye,I,ne,C,ve,T,oe,W,ge,y,Bt,jt,Wt,Ft,Jt,Ce,Ke,Qe,Se,zt,ke,pe=class extends Xe.default{constructor(r){var n,o,i,s;super();A(this,y);A(this,ee);A(this,te);A(this,z,0);A(this,me);A(this,re);A(this,ye,0);A(this,I);A(this,ne);A(this,C);A(this,ve);A(this,T,0);A(this,oe);A(this,W);A(this,ge);R(this,"timeout");if(r={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:de,...r},!(typeof r.intervalCap=="number"&&r.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${(o=(n=r.intervalCap)==null?void 0:n.toString())!=null?o:""}\` (${typeof r.intervalCap})`);if(r.interval===void 0||!(Number.isFinite(r.interval)&&r.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${(s=(i=r.interval)==null?void 0:i.toString())!=null?s:""}\` (${typeof r.interval})`);E(this,ee,r.carryoverConcurrencyCount),E(this,te,r.intervalCap===Number.POSITIVE_INFINITY||r.interval===0),E(this,me,r.intervalCap),E(this,re,r.interval),E(this,C,new r.queueClass),E(this,ve,r.queueClass),this.concurrency=r.concurrency,this.timeout=r.timeout,E(this,ge,r.throwOnTimeout===!0),E(this,W,r.autoStart===!1)}get concurrency(){return p(this,oe)}set concurrency(r){if(!(typeof r=="number"&&r>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${r}\` (${typeof r})`);E(this,oe,r),x(this,y,Se).call(this)}async add(r,n={}){return n={timeout:this.timeout,throwOnTimeout:p(this,ge),...n},new Promise((o,i)=>{p(this,C).enqueue(async()=>{var s;Ae(this,T)._++,Ae(this,z)._++;try{(s=n.signal)==null||s.throwIfAborted();let c=r({signal:n.signal});n.timeout&&(c=Ve(Promise.resolve(c),{milliseconds:n.timeout})),n.signal&&(c=Promise.race([c,x(this,y,zt).call(this,n.signal)]));let u=await c;o(u),this.emit("completed",u)}catch(c){if(c instanceof le&&!n.throwOnTimeout){o();return}i(c),this.emit("error",c)}finally{x(this,y,Wt).call(this)}},n),this.emit("add"),x(this,y,Ce).call(this)})}async addAll(r,n){return Promise.all(r.map(async o=>this.add(o,n)))}start(){return p(this,W)?(E(this,W,!1),x(this,y,Se).call(this),this):this}pause(){E(this,W,!0)}clear(){E(this,C,new(p(this,ve)))}async onEmpty(){p(this,C).size!==0&&await x(this,y,ke).call(this,"empty")}async onSizeLessThan(r){p(this,C).sizep(this,C).size{x(this,y,Ft).call(this)},n)),!0}return!1},Ce=function(){if(p(this,C).size===0)return p(this,I)&&clearInterval(p(this,I)),E(this,I,void 0),this.emit("empty"),p(this,T)===0&&this.emit("idle"),!1;if(!p(this,W)){let r=!p(this,y,Jt);if(p(this,y,Bt)&&p(this,y,jt)){let n=p(this,C).dequeue();return n?(this.emit("active"),n(),r&&x(this,y,Ke).call(this),!0):!1}}return!1},Ke=function(){p(this,te)||p(this,I)!==void 0||(E(this,I,setInterval(()=>{x(this,y,Qe).call(this)},p(this,re))),E(this,ye,Date.now()+p(this,re)))},Qe=function(){p(this,z)===0&&p(this,T)===0&&p(this,I)&&(clearInterval(p(this,I)),E(this,I,void 0)),E(this,z,p(this,ee)?p(this,T):0),x(this,y,Se).call(this)},Se=function(){for(;x(this,y,Ce).call(this););},zt=async function(r){return new Promise((n,o)=>{r.addEventListener("abort",()=>{o(r.reason)},{once:!0})})},ke=async function(r,n){return new Promise(o=>{let i=()=>{n&&!n()||(this.off(r,i),o())};this.on(r,i)})};var Mr=[],Ze=navigator.hardwareConcurrency||4,Pe=new pe({concurrency:Ze,autoStart:!1}),Ie=0,qt=!1,Te=!1;self.onmessage=t=>{qt||(Et(),qt=!0);let e=t.data;switch(e.action){case 5:Te=!0,self.postMessage({event:"JOB_PAUSED"});break;case 8:Te=!1,self.postMessage({event:"JOB_RESUMED"});break;default:v.once("DOWNLOAD_COMPLETE",()=>{self.postMessage({event:"DOWNLOAD_COMPLETE"})}),v.on("FILE_UPDATED",j),v.on("CHUNK_DOWNLOADED",(r,n)=>{self.postMessage({event:"CHUNK_DOWNLOADED",chunk:{buffer:r,index:n}})}),Nr(e).mapErr(r=>{wt(e.args.lufiFile,r)})}};var Nr=t=>{let{lufiFile:e}=t.args;return v.on("CHUNK_DOWNLOADED",(r,n)=>{Mr[n]=r,Ie--,!Te&&Ie{for(let r=1;r{await qe(e,r),Ie++,(Te||Ie===Ze)&&Pe.pause()});Pe.start()}),qe(e,0)};export{Ze as QUEUE_CONCURRENCY_LIMIT,Ie as itemsInQueue,Pe as queue}; diff --git a/themes/default/public/js/worker/encrypt.js b/themes/default/public/js/worker/encrypt.js index 2d47299..4fdd22e 100644 --- a/themes/default/public/js/worker/encrypt.js +++ b/themes/default/public/js/worker/encrypt.js @@ -1,1879 +1 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __defNormalProp = (obj3, key, value) => key in obj3 ? __defProp(obj3, key, { enumerable: true, configurable: true, writable: true, value }) : obj3[key] = value; -var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { - get: (a, b) => (typeof require !== "undefined" ? require : a)[b] -}) : x)(function(x) { - if (typeof require !== "undefined") return require.apply(this, arguments); - throw Error('Dynamic require of "' + x + '" is not supported'); -}); -var __commonJS = (cb, mod) => function __require2() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __publicField = (obj3, key, value) => __defNormalProp(obj3, typeof key !== "symbol" ? key + "" : key, value); - -// node_modules/.deno/sjcl@1.0.8/node_modules/sjcl/sjcl.js -var require_sjcl = __commonJS({ - "node_modules/.deno/sjcl@1.0.8/node_modules/sjcl/sjcl.js"(exports, module) { - "use strict"; - var sjcl2 = { cipher: {}, hash: {}, keyexchange: {}, mode: {}, misc: {}, codec: {}, exception: { corrupt: function(a) { - this.toString = function() { - return "CORRUPT: " + this.message; - }; - this.message = a; - }, invalid: function(a) { - this.toString = function() { - return "INVALID: " + this.message; - }; - this.message = a; - }, bug: function(a) { - this.toString = function() { - return "BUG: " + this.message; - }; - this.message = a; - }, notReady: function(a) { - this.toString = function() { - return "NOT READY: " + this.message; - }; - this.message = a; - } } }; - sjcl2.cipher.aes = function(a) { - this.s[0][0][0] || this.O(); - var b, c, d, e, f = this.s[0][4], g = this.s[1]; - b = a.length; - var h = 1; - if (4 !== b && 6 !== b && 8 !== b) throw new sjcl2.exception.invalid("invalid aes key size"); - this.b = [d = a.slice(0), e = []]; - for (a = b; a < 4 * b + 28; a++) { - c = d[a - 1]; - if (0 === a % b || 8 === b && 4 === a % b) c = f[c >>> 24] << 24 ^ f[c >> 16 & 255] << 16 ^ f[c >> 8 & 255] << 8 ^ f[c & 255], 0 === a % b && (c = c << 8 ^ c >>> 24 ^ h << 24, h = h << 1 ^ 283 * (h >> 7)); - d[a] = d[a - b] ^ c; - } - for (b = 0; a; b++, a--) c = d[b & 3 ? a : a - 4], e[b] = 4 >= a || 4 > b ? c : g[0][f[c >>> 24]] ^ g[1][f[c >> 16 & 255]] ^ g[2][f[c >> 8 & 255]] ^ g[3][f[c & 255]]; - }; - sjcl2.cipher.aes.prototype = { encrypt: function(a) { - return t(this, a, 0); - }, decrypt: function(a) { - return t(this, a, 1); - }, s: [[[], [], [], [], []], [[], [], [], [], []]], O: function() { - var a = this.s[0], b = this.s[1], c = a[4], d = b[4], e, f, g, h = [], k = [], l, n, m, p; - for (e = 0; 256 > e; e++) k[(h[e] = e << 1 ^ 283 * (e >> 7)) ^ e] = e; - for (f = g = 0; !c[f]; f ^= l || 1, g = k[g] || 1) for (m = g ^ g << 1 ^ g << 2 ^ g << 3 ^ g << 4, m = m >> 8 ^ m & 255 ^ 99, c[f] = m, d[m] = f, n = h[e = h[l = h[f]]], p = 16843009 * n ^ 65537 * e ^ 257 * l ^ 16843008 * f, n = 257 * h[m] ^ 16843008 * m, e = 0; 4 > e; e++) a[e][f] = n = n << 24 ^ n >>> 8, b[e][m] = p = p << 24 ^ p >>> 8; - for (e = 0; 5 > e; e++) a[e] = a[e].slice(0), b[e] = b[e].slice(0); - } }; - function t(a, b, c) { - if (4 !== b.length) throw new sjcl2.exception.invalid("invalid aes block size"); - var d = a.b[c], e = b[0] ^ d[0], f = b[c ? 3 : 1] ^ d[1], g = b[2] ^ d[2]; - b = b[c ? 1 : 3] ^ d[3]; - var h, k, l, n = d.length / 4 - 2, m, p = 4, r = [0, 0, 0, 0]; - h = a.s[c]; - a = h[0]; - var q = h[1], v = h[2], w = h[3], x = h[4]; - for (m = 0; m < n; m++) h = a[e >>> 24] ^ q[f >> 16 & 255] ^ v[g >> 8 & 255] ^ w[b & 255] ^ d[p], k = a[f >>> 24] ^ q[g >> 16 & 255] ^ v[b >> 8 & 255] ^ w[e & 255] ^ d[p + 1], l = a[g >>> 24] ^ q[b >> 16 & 255] ^ v[e >> 8 & 255] ^ w[f & 255] ^ d[p + 2], b = a[b >>> 24] ^ q[e >> 16 & 255] ^ v[f >> 8 & 255] ^ w[g & 255] ^ d[p + 3], p += 4, e = h, f = k, g = l; - for (m = 0; 4 > m; m++) r[c ? 3 & -m : m] = x[e >>> 24] << 24 ^ x[f >> 16 & 255] << 16 ^ x[g >> 8 & 255] << 8 ^ x[b & 255] ^ d[p++], h = e, e = f, f = g, g = b, b = h; - return r; - } - sjcl2.bitArray = { bitSlice: function(a, b, c) { - a = sjcl2.bitArray.$(a.slice(b / 32), 32 - (b & 31)).slice(1); - return void 0 === c ? a : sjcl2.bitArray.clamp(a, c - b); - }, extract: function(a, b, c) { - var d = Math.floor(-b - c & 31); - return ((b + c - 1 ^ b) & -32 ? a[b / 32 | 0] << 32 - d ^ a[b / 32 + 1 | 0] >>> d : a[b / 32 | 0] >>> d) & (1 << c) - 1; - }, concat: function(a, b) { - if (0 === a.length || 0 === b.length) return a.concat(b); - var c = a[a.length - 1], d = sjcl2.bitArray.getPartial(c); - return 32 === d ? a.concat(b) : sjcl2.bitArray.$(b, d, c | 0, a.slice(0, a.length - 1)); - }, bitLength: function(a) { - var b = a.length; - return 0 === b ? 0 : 32 * (b - 1) + sjcl2.bitArray.getPartial(a[b - 1]); - }, clamp: function(a, b) { - if (32 * a.length < b) return a; - a = a.slice(0, Math.ceil(b / 32)); - var c = a.length; - b = b & 31; - 0 < c && b && (a[c - 1] = sjcl2.bitArray.partial(b, a[c - 1] & 2147483648 >> b - 1, 1)); - return a; - }, partial: function(a, b, c) { - return 32 === a ? b : (c ? b | 0 : b << 32 - a) + 1099511627776 * a; - }, getPartial: function(a) { - return Math.round(a / 1099511627776) || 32; - }, equal: function(a, b) { - if (sjcl2.bitArray.bitLength(a) !== sjcl2.bitArray.bitLength(b)) return false; - var c = 0, d; - for (d = 0; d < a.length; d++) c |= a[d] ^ b[d]; - return 0 === c; - }, $: function(a, b, c, d) { - var e; - e = 0; - for (void 0 === d && (d = []); 32 <= b; b -= 32) d.push(c), c = 0; - if (0 === b) return d.concat(a); - for (e = 0; e < a.length; e++) d.push(c | a[e] >>> b), c = a[e] << 32 - b; - e = a.length ? a[a.length - 1] : 0; - a = sjcl2.bitArray.getPartial(e); - d.push(sjcl2.bitArray.partial(b + a & 31, 32 < b + a ? c : d.pop(), 1)); - return d; - }, i: function(a, b) { - return [a[0] ^ b[0], a[1] ^ b[1], a[2] ^ b[2], a[3] ^ b[3]]; - }, byteswapM: function(a) { - var b, c; - for (b = 0; b < a.length; ++b) c = a[b], a[b] = c >>> 24 | c >>> 8 & 65280 | (c & 65280) << 8 | c << 24; - return a; - } }; - sjcl2.codec.utf8String = { fromBits: function(a) { - var b = "", c = sjcl2.bitArray.bitLength(a), d, e; - for (d = 0; d < c / 8; d++) 0 === (d & 3) && (e = a[d / 4]), b += String.fromCharCode(e >>> 8 >>> 8 >>> 8), e <<= 8; - return decodeURIComponent(escape(b)); - }, toBits: function(a) { - a = unescape(encodeURIComponent(a)); - var b = [], c, d = 0; - for (c = 0; c < a.length; c++) d = d << 8 | a.charCodeAt(c), 3 === (c & 3) && (b.push(d), d = 0); - c & 3 && b.push(sjcl2.bitArray.partial(8 * (c & 3), d)); - return b; - } }; - sjcl2.codec.hex = { fromBits: function(a) { - var b = "", c; - for (c = 0; c < a.length; c++) b += ((a[c] | 0) + 263882790666240).toString(16).substr(4); - return b.substr(0, sjcl2.bitArray.bitLength(a) / 4); - }, toBits: function(a) { - var b, c = [], d; - a = a.replace(/\s|0x/g, ""); - d = a.length; - a = a + "00000000"; - for (b = 0; b < a.length; b += 8) c.push(parseInt(a.substr(b, 8), 16) ^ 0); - return sjcl2.bitArray.clamp(c, 4 * d); - } }; - sjcl2.codec.base32 = { B: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567", X: "0123456789ABCDEFGHIJKLMNOPQRSTUV", BITS: 32, BASE: 5, REMAINING: 27, fromBits: function(a, b, c) { - var d = sjcl2.codec.base32.BASE, e = sjcl2.codec.base32.REMAINING, f = "", g = 0, h = sjcl2.codec.base32.B, k = 0, l = sjcl2.bitArray.bitLength(a); - c && (h = sjcl2.codec.base32.X); - for (c = 0; f.length * d < l; ) f += h.charAt((k ^ a[c] >>> g) >>> e), g < d ? (k = a[c] << d - g, g += e, c++) : (k <<= d, g -= d); - for (; f.length & 7 && !b; ) f += "="; - return f; - }, toBits: function(a, b) { - a = a.replace(/\s|=/g, "").toUpperCase(); - var c = sjcl2.codec.base32.BITS, d = sjcl2.codec.base32.BASE, e = sjcl2.codec.base32.REMAINING, f = [], g, h = 0, k = sjcl2.codec.base32.B, l = 0, n, m = "base32"; - b && (k = sjcl2.codec.base32.X, m = "base32hex"); - for (g = 0; g < a.length; g++) { - n = k.indexOf(a.charAt(g)); - if (0 > n) { - if (!b) try { - return sjcl2.codec.base32hex.toBits(a); - } catch (p) { - } - throw new sjcl2.exception.invalid("this isn't " + m + "!"); - } - h > e ? (h -= e, f.push(l ^ n >>> h), l = n << c - h) : (h += d, l ^= n << c - h); - } - h & 56 && f.push(sjcl2.bitArray.partial(h & 56, l, 1)); - return f; - } }; - sjcl2.codec.base32hex = { fromBits: function(a, b) { - return sjcl2.codec.base32.fromBits(a, b, 1); - }, toBits: function(a) { - return sjcl2.codec.base32.toBits(a, 1); - } }; - sjcl2.codec.base64 = { B: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", fromBits: function(a, b, c) { - var d = "", e = 0, f = sjcl2.codec.base64.B, g = 0, h = sjcl2.bitArray.bitLength(a); - c && (f = f.substr(0, 62) + "-_"); - for (c = 0; 6 * d.length < h; ) d += f.charAt((g ^ a[c] >>> e) >>> 26), 6 > e ? (g = a[c] << 6 - e, e += 26, c++) : (g <<= 6, e -= 6); - for (; d.length & 3 && !b; ) d += "="; - return d; - }, toBits: function(a, b) { - a = a.replace(/\s|=/g, ""); - var c = [], d, e = 0, f = sjcl2.codec.base64.B, g = 0, h; - b && (f = f.substr(0, 62) + "-_"); - for (d = 0; d < a.length; d++) { - h = f.indexOf(a.charAt(d)); - if (0 > h) throw new sjcl2.exception.invalid("this isn't base64!"); - 26 < e ? (e -= 26, c.push(g ^ h >>> e), g = h << 32 - e) : (e += 6, g ^= h << 32 - e); - } - e & 56 && c.push(sjcl2.bitArray.partial(e & 56, g, 1)); - return c; - } }; - sjcl2.codec.base64url = { fromBits: function(a) { - return sjcl2.codec.base64.fromBits(a, 1, 1); - }, toBits: function(a) { - return sjcl2.codec.base64.toBits(a, 1); - } }; - sjcl2.hash.sha256 = function(a) { - this.b[0] || this.O(); - a ? (this.F = a.F.slice(0), this.A = a.A.slice(0), this.l = a.l) : this.reset(); - }; - sjcl2.hash.sha256.hash = function(a) { - return new sjcl2.hash.sha256().update(a).finalize(); - }; - sjcl2.hash.sha256.prototype = { blockSize: 512, reset: function() { - this.F = this.Y.slice(0); - this.A = []; - this.l = 0; - return this; - }, update: function(a) { - "string" === typeof a && (a = sjcl2.codec.utf8String.toBits(a)); - var b, c = this.A = sjcl2.bitArray.concat(this.A, a); - b = this.l; - a = this.l = b + sjcl2.bitArray.bitLength(a); - if (9007199254740991 < a) throw new sjcl2.exception.invalid("Cannot hash more than 2^53 - 1 bits"); - if ("undefined" !== typeof Uint32Array) { - var d = new Uint32Array(c), e = 0; - for (b = 512 + b - (512 + b & 511); b <= a; b += 512) u(this, d.subarray( - 16 * e, - 16 * (e + 1) - )), e += 1; - c.splice(0, 16 * e); - } else for (b = 512 + b - (512 + b & 511); b <= a; b += 512) u(this, c.splice(0, 16)); - return this; - }, finalize: function() { - var a, b = this.A, c = this.F, b = sjcl2.bitArray.concat(b, [sjcl2.bitArray.partial(1, 1)]); - for (a = b.length + 2; a & 15; a++) b.push(0); - b.push(Math.floor(this.l / 4294967296)); - for (b.push(this.l | 0); b.length; ) u(this, b.splice(0, 16)); - this.reset(); - return c; - }, Y: [], b: [], O: function() { - function a(a2) { - return 4294967296 * (a2 - Math.floor(a2)) | 0; - } - for (var b = 0, c = 2, d, e; 64 > b; c++) { - e = true; - for (d = 2; d * d <= c; d++) if (0 === c % d) { - e = false; - break; - } - e && (8 > b && (this.Y[b] = a(Math.pow(c, 0.5))), this.b[b] = a(Math.pow(c, 1 / 3)), b++); - } - } }; - function u(a, b) { - var c, d, e, f = a.F, g = a.b, h = f[0], k = f[1], l = f[2], n = f[3], m = f[4], p = f[5], r = f[6], q = f[7]; - for (c = 0; 64 > c; c++) 16 > c ? d = b[c] : (d = b[c + 1 & 15], e = b[c + 14 & 15], d = b[c & 15] = (d >>> 7 ^ d >>> 18 ^ d >>> 3 ^ d << 25 ^ d << 14) + (e >>> 17 ^ e >>> 19 ^ e >>> 10 ^ e << 15 ^ e << 13) + b[c & 15] + b[c + 9 & 15] | 0), d = d + q + (m >>> 6 ^ m >>> 11 ^ m >>> 25 ^ m << 26 ^ m << 21 ^ m << 7) + (r ^ m & (p ^ r)) + g[c], q = r, r = p, p = m, m = n + d | 0, n = l, l = k, k = h, h = d + (k & l ^ n & (k ^ l)) + (k >>> 2 ^ k >>> 13 ^ k >>> 22 ^ k << 30 ^ k << 19 ^ k << 10) | 0; - f[0] = f[0] + h | 0; - f[1] = f[1] + k | 0; - f[2] = f[2] + l | 0; - f[3] = f[3] + n | 0; - f[4] = f[4] + m | 0; - f[5] = f[5] + p | 0; - f[6] = f[6] + r | 0; - f[7] = f[7] + q | 0; - } - sjcl2.mode.ccm = { name: "ccm", G: [], listenProgress: function(a) { - sjcl2.mode.ccm.G.push(a); - }, unListenProgress: function(a) { - a = sjcl2.mode.ccm.G.indexOf(a); - -1 < a && sjcl2.mode.ccm.G.splice(a, 1); - }, fa: function(a) { - var b = sjcl2.mode.ccm.G.slice(), c; - for (c = 0; c < b.length; c += 1) b[c](a); - }, encrypt: function(a, b, c, d, e) { - var f, g = b.slice(0), h = sjcl2.bitArray, k = h.bitLength(c) / 8, l = h.bitLength(g) / 8; - e = e || 64; - d = d || []; - if (7 > k) throw new sjcl2.exception.invalid("ccm: iv must be at least 7 bytes"); - for (f = 2; 4 > f && l >>> 8 * f; f++) ; - f < 15 - k && (f = 15 - k); - c = h.clamp( - c, - 8 * (15 - f) - ); - b = sjcl2.mode.ccm.V(a, b, c, d, e, f); - g = sjcl2.mode.ccm.C(a, g, c, b, e, f); - return h.concat(g.data, g.tag); - }, decrypt: function(a, b, c, d, e) { - e = e || 64; - d = d || []; - var f = sjcl2.bitArray, g = f.bitLength(c) / 8, h = f.bitLength(b), k = f.clamp(b, h - e), l = f.bitSlice(b, h - e), h = (h - e) / 8; - if (7 > g) throw new sjcl2.exception.invalid("ccm: iv must be at least 7 bytes"); - for (b = 2; 4 > b && h >>> 8 * b; b++) ; - b < 15 - g && (b = 15 - g); - c = f.clamp(c, 8 * (15 - b)); - k = sjcl2.mode.ccm.C(a, k, c, l, e, b); - a = sjcl2.mode.ccm.V(a, k.data, c, d, e, b); - if (!f.equal(k.tag, a)) throw new sjcl2.exception.corrupt("ccm: tag doesn't match"); - return k.data; - }, na: function(a, b, c, d, e, f) { - var g = [], h = sjcl2.bitArray, k = h.i; - d = [h.partial(8, (b.length ? 64 : 0) | d - 2 << 2 | f - 1)]; - d = h.concat(d, c); - d[3] |= e; - d = a.encrypt(d); - if (b.length) for (c = h.bitLength(b) / 8, 65279 >= c ? g = [h.partial(16, c)] : 4294967295 >= c && (g = h.concat([h.partial(16, 65534)], [c])), g = h.concat(g, b), b = 0; b < g.length; b += 4) d = a.encrypt(k(d, g.slice(b, b + 4).concat([0, 0, 0]))); - return d; - }, V: function(a, b, c, d, e, f) { - var g = sjcl2.bitArray, h = g.i; - e /= 8; - if (e % 2 || 4 > e || 16 < e) throw new sjcl2.exception.invalid("ccm: invalid tag length"); - if (4294967295 < d.length || 4294967295 < b.length) throw new sjcl2.exception.bug("ccm: can't deal with 4GiB or more data"); - c = sjcl2.mode.ccm.na(a, d, c, e, g.bitLength(b) / 8, f); - for (d = 0; d < b.length; d += 4) c = a.encrypt(h(c, b.slice(d, d + 4).concat([0, 0, 0]))); - return g.clamp(c, 8 * e); - }, C: function(a, b, c, d, e, f) { - var g, h = sjcl2.bitArray; - g = h.i; - var k = b.length, l = h.bitLength(b), n = k / 50, m = n; - c = h.concat([h.partial(8, f - 1)], c).concat([0, 0, 0]).slice(0, 4); - d = h.bitSlice(g(d, a.encrypt(c)), 0, e); - if (!k) return { tag: d, data: [] }; - for (g = 0; g < k; g += 4) g > n && (sjcl2.mode.ccm.fa(g / k), n += m), c[3]++, e = a.encrypt(c), b[g] ^= e[0], b[g + 1] ^= e[1], b[g + 2] ^= e[2], b[g + 3] ^= e[3]; - return { tag: d, data: h.clamp(b, l) }; - } }; - sjcl2.mode.ocb2 = { name: "ocb2", encrypt: function(a, b, c, d, e, f) { - if (128 !== sjcl2.bitArray.bitLength(c)) throw new sjcl2.exception.invalid("ocb iv must be 128 bits"); - var g, h = sjcl2.mode.ocb2.S, k = sjcl2.bitArray, l = k.i, n = [0, 0, 0, 0]; - c = h(a.encrypt(c)); - var m, p = []; - d = d || []; - e = e || 64; - for (g = 0; g + 4 < b.length; g += 4) m = b.slice(g, g + 4), n = l(n, m), p = p.concat(l(c, a.encrypt(l(c, m)))), c = h(c); - m = b.slice(g); - b = k.bitLength(m); - g = a.encrypt(l(c, [0, 0, 0, b])); - m = k.clamp(l(m.concat([0, 0, 0]), g), b); - n = l(n, l(m.concat([0, 0, 0]), g)); - n = a.encrypt(l(n, l(c, h(c)))); - d.length && (n = l(n, f ? d : sjcl2.mode.ocb2.pmac(a, d))); - return p.concat(k.concat(m, k.clamp(n, e))); - }, decrypt: function(a, b, c, d, e, f) { - if (128 !== sjcl2.bitArray.bitLength(c)) throw new sjcl2.exception.invalid("ocb iv must be 128 bits"); - e = e || 64; - var g = sjcl2.mode.ocb2.S, h = sjcl2.bitArray, k = h.i, l = [0, 0, 0, 0], n = g(a.encrypt(c)), m, p, r = sjcl2.bitArray.bitLength(b) - e, q = []; - d = d || []; - for (c = 0; c + 4 < r / 32; c += 4) m = k(n, a.decrypt(k(n, b.slice(c, c + 4)))), l = k(l, m), q = q.concat(m), n = g(n); - p = r - 32 * c; - m = a.encrypt(k(n, [0, 0, 0, p])); - m = k(m, h.clamp(b.slice(c), p).concat([ - 0, - 0, - 0 - ])); - l = k(l, m); - l = a.encrypt(k(l, k(n, g(n)))); - d.length && (l = k(l, f ? d : sjcl2.mode.ocb2.pmac(a, d))); - if (!h.equal(h.clamp(l, e), h.bitSlice(b, r))) throw new sjcl2.exception.corrupt("ocb: tag doesn't match"); - return q.concat(h.clamp(m, p)); - }, pmac: function(a, b) { - var c, d = sjcl2.mode.ocb2.S, e = sjcl2.bitArray, f = e.i, g = [0, 0, 0, 0], h = a.encrypt([0, 0, 0, 0]), h = f(h, d(d(h))); - for (c = 0; c + 4 < b.length; c += 4) h = d(h), g = f(g, a.encrypt(f(h, b.slice(c, c + 4)))); - c = b.slice(c); - 128 > e.bitLength(c) && (h = f(h, d(h)), c = e.concat(c, [-2147483648, 0, 0, 0])); - g = f(g, c); - return a.encrypt(f(d(f(h, d(h))), g)); - }, S: function(a) { - return [a[0] << 1 ^ a[1] >>> 31, a[1] << 1 ^ a[2] >>> 31, a[2] << 1 ^ a[3] >>> 31, a[3] << 1 ^ 135 * (a[0] >>> 31)]; - } }; - sjcl2.mode.gcm = { name: "gcm", encrypt: function(a, b, c, d, e) { - var f = b.slice(0); - b = sjcl2.bitArray; - d = d || []; - a = sjcl2.mode.gcm.C(true, a, f, d, c, e || 128); - return b.concat(a.data, a.tag); - }, decrypt: function(a, b, c, d, e) { - var f = b.slice(0), g = sjcl2.bitArray, h = g.bitLength(f); - e = e || 128; - d = d || []; - e <= h ? (b = g.bitSlice(f, h - e), f = g.bitSlice(f, 0, h - e)) : (b = f, f = []); - a = sjcl2.mode.gcm.C(false, a, f, d, c, e); - if (!g.equal(a.tag, b)) throw new sjcl2.exception.corrupt("gcm: tag doesn't match"); - return a.data; - }, ka: function(a, b) { - var c, d, e, f, g, h = sjcl2.bitArray.i; - e = [ - 0, - 0, - 0, - 0 - ]; - f = b.slice(0); - for (c = 0; 128 > c; c++) { - (d = 0 !== (a[Math.floor(c / 32)] & 1 << 31 - c % 32)) && (e = h(e, f)); - g = 0 !== (f[3] & 1); - for (d = 3; 0 < d; d--) f[d] = f[d] >>> 1 | (f[d - 1] & 1) << 31; - f[0] >>>= 1; - g && (f[0] ^= -520093696); - } - return e; - }, j: function(a, b, c) { - var d, e = c.length; - b = b.slice(0); - for (d = 0; d < e; d += 4) b[0] ^= 4294967295 & c[d], b[1] ^= 4294967295 & c[d + 1], b[2] ^= 4294967295 & c[d + 2], b[3] ^= 4294967295 & c[d + 3], b = sjcl2.mode.gcm.ka(b, a); - return b; - }, C: function(a, b, c, d, e, f) { - var g, h, k, l, n, m, p, r, q = sjcl2.bitArray; - m = c.length; - p = q.bitLength(c); - r = q.bitLength(d); - h = q.bitLength(e); - g = b.encrypt([0, 0, 0, 0]); - 96 === h ? (e = e.slice(0), e = q.concat(e, [1])) : (e = sjcl2.mode.gcm.j(g, [0, 0, 0, 0], e), e = sjcl2.mode.gcm.j(g, e, [0, 0, Math.floor(h / 4294967296), h & 4294967295])); - h = sjcl2.mode.gcm.j(g, [0, 0, 0, 0], d); - n = e.slice(0); - d = h.slice(0); - a || (d = sjcl2.mode.gcm.j(g, h, c)); - for (l = 0; l < m; l += 4) n[3]++, k = b.encrypt(n), c[l] ^= k[0], c[l + 1] ^= k[1], c[l + 2] ^= k[2], c[l + 3] ^= k[3]; - c = q.clamp(c, p); - a && (d = sjcl2.mode.gcm.j(g, h, c)); - a = [Math.floor(r / 4294967296), r & 4294967295, Math.floor(p / 4294967296), p & 4294967295]; - d = sjcl2.mode.gcm.j(g, d, a); - k = b.encrypt(e); - d[0] ^= k[0]; - d[1] ^= k[1]; - d[2] ^= k[2]; - d[3] ^= k[3]; - return { tag: q.bitSlice(d, 0, f), data: c }; - } }; - sjcl2.misc.hmac = function(a, b) { - this.W = b = b || sjcl2.hash.sha256; - var c = [[], []], d, e = b.prototype.blockSize / 32; - this.w = [new b(), new b()]; - a.length > e && (a = b.hash(a)); - for (d = 0; d < e; d++) c[0][d] = a[d] ^ 909522486, c[1][d] = a[d] ^ 1549556828; - this.w[0].update(c[0]); - this.w[1].update(c[1]); - this.R = new b(this.w[0]); - }; - sjcl2.misc.hmac.prototype.encrypt = sjcl2.misc.hmac.prototype.mac = function(a) { - if (this.aa) throw new sjcl2.exception.invalid("encrypt on already updated hmac called!"); - this.update(a); - return this.digest(a); - }; - sjcl2.misc.hmac.prototype.reset = function() { - this.R = new this.W(this.w[0]); - this.aa = false; - }; - sjcl2.misc.hmac.prototype.update = function(a) { - this.aa = true; - this.R.update(a); - }; - sjcl2.misc.hmac.prototype.digest = function() { - var a = this.R.finalize(), a = new this.W(this.w[1]).update(a).finalize(); - this.reset(); - return a; - }; - sjcl2.misc.pbkdf2 = function(a, b, c, d, e) { - c = c || 1e4; - if (0 > d || 0 > c) throw new sjcl2.exception.invalid("invalid params to pbkdf2"); - "string" === typeof a && (a = sjcl2.codec.utf8String.toBits(a)); - "string" === typeof b && (b = sjcl2.codec.utf8String.toBits(b)); - e = e || sjcl2.misc.hmac; - a = new e(a); - var f, g, h, k, l = [], n = sjcl2.bitArray; - for (k = 1; 32 * l.length < (d || 1); k++) { - e = f = a.encrypt(n.concat(b, [k])); - for (g = 1; g < c; g++) for (f = a.encrypt(f), h = 0; h < f.length; h++) e[h] ^= f[h]; - l = l.concat(e); - } - d && (l = n.clamp(l, d)); - return l; - }; - sjcl2.prng = function(a) { - this.c = [new sjcl2.hash.sha256()]; - this.m = [0]; - this.P = 0; - this.H = {}; - this.N = 0; - this.U = {}; - this.Z = this.f = this.o = this.ha = 0; - this.b = [0, 0, 0, 0, 0, 0, 0, 0]; - this.h = [0, 0, 0, 0]; - this.L = void 0; - this.M = a; - this.D = false; - this.K = { progress: {}, seeded: {} }; - this.u = this.ga = 0; - this.I = 1; - this.J = 2; - this.ca = 65536; - this.T = [0, 48, 64, 96, 128, 192, 256, 384, 512, 768, 1024]; - this.da = 3e4; - this.ba = 80; - }; - sjcl2.prng.prototype = { - randomWords: function(a, b) { - var c = [], d; - d = this.isReady(b); - var e; - if (d === this.u) throw new sjcl2.exception.notReady("generator isn't seeded"); - if (d & this.J) { - d = !(d & this.I); - e = []; - var f = 0, g; - this.Z = e[0] = (/* @__PURE__ */ new Date()).valueOf() + this.da; - for (g = 0; 16 > g; g++) e.push(4294967296 * Math.random() | 0); - for (g = 0; g < this.c.length && (e = e.concat(this.c[g].finalize()), f += this.m[g], this.m[g] = 0, d || !(this.P & 1 << g)); g++) ; - this.P >= 1 << this.c.length && (this.c.push(new sjcl2.hash.sha256()), this.m.push(0)); - this.f -= f; - f > this.o && (this.o = f); - this.P++; - this.b = sjcl2.hash.sha256.hash(this.b.concat(e)); - this.L = new sjcl2.cipher.aes(this.b); - for (d = 0; 4 > d && (this.h[d] = this.h[d] + 1 | 0, !this.h[d]); d++) ; - } - for (d = 0; d < a; d += 4) 0 === (d + 1) % this.ca && y(this), e = z(this), c.push(e[0], e[1], e[2], e[3]); - y(this); - return c.slice(0, a); - }, - setDefaultParanoia: function(a, b) { - if (0 === a && "Setting paranoia=0 will ruin your security; use it only for testing" !== b) throw new sjcl2.exception.invalid("Setting paranoia=0 will ruin your security; use it only for testing"); - this.M = a; - }, - addEntropy: function(a, b, c) { - c = c || "user"; - var d, e, f = (/* @__PURE__ */ new Date()).valueOf(), g = this.H[c], h = this.isReady(), k = 0; - d = this.U[c]; - void 0 === d && (d = this.U[c] = this.ha++); - void 0 === g && (g = this.H[c] = 0); - this.H[c] = (this.H[c] + 1) % this.c.length; - switch (typeof a) { - case "number": - void 0 === b && (b = 1); - this.c[g].update([d, this.N++, 1, b, f, 1, a | 0]); - break; - case "object": - c = Object.prototype.toString.call(a); - if ("[object Uint32Array]" === c) { - e = []; - for (c = 0; c < a.length; c++) e.push(a[c]); - a = e; - } else for ("[object Array]" !== c && (k = 1), c = 0; c < a.length && !k; c++) "number" !== typeof a[c] && (k = 1); - if (!k) { - if (void 0 === b) for (c = b = 0; c < a.length; c++) for (e = a[c]; 0 < e; ) b++, e = e >>> 1; - this.c[g].update([d, this.N++, 2, b, f, a.length].concat(a)); - } - break; - case "string": - void 0 === b && (b = a.length); - this.c[g].update([d, this.N++, 3, b, f, a.length]); - this.c[g].update(a); - break; - default: - k = 1; - } - if (k) throw new sjcl2.exception.bug("random: addEntropy only supports number, array of numbers or string"); - this.m[g] += b; - this.f += b; - h === this.u && (this.isReady() !== this.u && A("seeded", Math.max(this.o, this.f)), A("progress", this.getProgress())); - }, - isReady: function(a) { - a = this.T[void 0 !== a ? a : this.M]; - return this.o && this.o >= a ? this.m[0] > this.ba && (/* @__PURE__ */ new Date()).valueOf() > this.Z ? this.J | this.I : this.I : this.f >= a ? this.J | this.u : this.u; - }, - getProgress: function(a) { - a = this.T[a ? a : this.M]; - return this.o >= a ? 1 : this.f > a ? 1 : this.f / a; - }, - startCollectors: function() { - if (!this.D) { - this.a = { loadTimeCollector: B(this, this.ma), mouseCollector: B(this, this.oa), keyboardCollector: B(this, this.la), accelerometerCollector: B(this, this.ea), touchCollector: B(this, this.qa) }; - if (window.addEventListener) window.addEventListener( - "load", - this.a.loadTimeCollector, - false - ), window.addEventListener("mousemove", this.a.mouseCollector, false), window.addEventListener("keypress", this.a.keyboardCollector, false), window.addEventListener("devicemotion", this.a.accelerometerCollector, false), window.addEventListener("touchmove", this.a.touchCollector, false); - else if (document.attachEvent) document.attachEvent("onload", this.a.loadTimeCollector), document.attachEvent("onmousemove", this.a.mouseCollector), document.attachEvent("keypress", this.a.keyboardCollector); - else throw new sjcl2.exception.bug("can't attach event"); - this.D = true; - } - }, - stopCollectors: function() { - this.D && (window.removeEventListener ? (window.removeEventListener("load", this.a.loadTimeCollector, false), window.removeEventListener("mousemove", this.a.mouseCollector, false), window.removeEventListener("keypress", this.a.keyboardCollector, false), window.removeEventListener("devicemotion", this.a.accelerometerCollector, false), window.removeEventListener("touchmove", this.a.touchCollector, false)) : document.detachEvent && (document.detachEvent("onload", this.a.loadTimeCollector), document.detachEvent( - "onmousemove", - this.a.mouseCollector - ), document.detachEvent("keypress", this.a.keyboardCollector)), this.D = false); - }, - addEventListener: function(a, b) { - this.K[a][this.ga++] = b; - }, - removeEventListener: function(a, b) { - var c, d, e = this.K[a], f = []; - for (d in e) e.hasOwnProperty(d) && e[d] === b && f.push(d); - for (c = 0; c < f.length; c++) d = f[c], delete e[d]; - }, - la: function() { - C(this, 1); - }, - oa: function(a) { - var b, c; - try { - b = a.x || a.clientX || a.offsetX || 0, c = a.y || a.clientY || a.offsetY || 0; - } catch (d) { - c = b = 0; - } - 0 != b && 0 != c && this.addEntropy([b, c], 2, "mouse"); - C(this, 0); - }, - qa: function(a) { - a = a.touches[0] || a.changedTouches[0]; - this.addEntropy([a.pageX || a.clientX, a.pageY || a.clientY], 1, "touch"); - C(this, 0); - }, - ma: function() { - C(this, 2); - }, - ea: function(a) { - a = a.accelerationIncludingGravity.x || a.accelerationIncludingGravity.y || a.accelerationIncludingGravity.z; - if (window.orientation) { - var b = window.orientation; - "number" === typeof b && this.addEntropy(b, 1, "accelerometer"); - } - a && this.addEntropy(a, 2, "accelerometer"); - C(this, 0); - } - }; - function A(a, b) { - var c, d = sjcl2.random.K[a], e = []; - for (c in d) d.hasOwnProperty(c) && e.push(d[c]); - for (c = 0; c < e.length; c++) e[c](b); - } - function C(a, b) { - "undefined" !== typeof window && window.performance && "function" === typeof window.performance.now ? a.addEntropy(window.performance.now(), b, "loadtime") : a.addEntropy((/* @__PURE__ */ new Date()).valueOf(), b, "loadtime"); - } - function y(a) { - a.b = z(a).concat(z(a)); - a.L = new sjcl2.cipher.aes(a.b); - } - function z(a) { - for (var b = 0; 4 > b && (a.h[b] = a.h[b] + 1 | 0, !a.h[b]); b++) ; - return a.L.encrypt(a.h); - } - function B(a, b) { - return function() { - b.apply(a, arguments); - }; - } - sjcl2.random = new sjcl2.prng(6); - a: try { - if (G = "undefined" !== typeof module && module.exports) { - try { - H = __require("crypto"); - } catch (a) { - H = null; - } - G = E = H; - } - if (G && E.randomBytes) D = E.randomBytes(128), D = new Uint32Array(new Uint8Array(D).buffer), sjcl2.random.addEntropy(D, 1024, "crypto['randomBytes']"); - else if ("undefined" !== typeof window && "undefined" !== typeof Uint32Array) { - F = new Uint32Array(32); - if (window.crypto && window.crypto.getRandomValues) window.crypto.getRandomValues(F); - else if (window.msCrypto && window.msCrypto.getRandomValues) window.msCrypto.getRandomValues(F); - else break a; - sjcl2.random.addEntropy(F, 1024, "crypto['getRandomValues']"); - } - } catch (a) { - "undefined" !== typeof window && window.console && (console.log("There was an error collecting entropy from the browser:"), console.log(a)); - } - var D; - var E; - var F; - var G; - var H; - sjcl2.json = { defaults: { v: 1, iter: 1e4, ks: 128, ts: 64, mode: "ccm", adata: "", cipher: "aes" }, ja: function(a, b, c, d) { - c = c || {}; - d = d || {}; - var e = sjcl2.json, f = e.g({ iv: sjcl2.random.randomWords(4, 0) }, e.defaults), g; - e.g(f, c); - c = f.adata; - "string" === typeof f.salt && (f.salt = sjcl2.codec.base64.toBits(f.salt)); - "string" === typeof f.iv && (f.iv = sjcl2.codec.base64.toBits(f.iv)); - if (!sjcl2.mode[f.mode] || !sjcl2.cipher[f.cipher] || "string" === typeof a && 100 >= f.iter || 64 !== f.ts && 96 !== f.ts && 128 !== f.ts || 128 !== f.ks && 192 !== f.ks && 256 !== f.ks || 2 > f.iv.length || 4 < f.iv.length) throw new sjcl2.exception.invalid("json encrypt: invalid parameters"); - "string" === typeof a ? (g = sjcl2.misc.cachedPbkdf2(a, f), a = g.key.slice(0, f.ks / 32), f.salt = g.salt) : sjcl2.ecc && a instanceof sjcl2.ecc.elGamal.publicKey && (g = a.kem(), f.kemtag = g.tag, a = g.key.slice(0, f.ks / 32)); - "string" === typeof b && (b = sjcl2.codec.utf8String.toBits(b)); - "string" === typeof c && (f.adata = c = sjcl2.codec.utf8String.toBits(c)); - g = new sjcl2.cipher[f.cipher](a); - e.g(d, f); - d.key = a; - f.ct = "ccm" === f.mode && sjcl2.arrayBuffer && sjcl2.arrayBuffer.ccm && b instanceof ArrayBuffer ? sjcl2.arrayBuffer.ccm.encrypt(g, b, f.iv, c, f.ts) : sjcl2.mode[f.mode].encrypt(g, b, f.iv, c, f.ts); - return f; - }, encrypt: function(a, b, c, d) { - var e = sjcl2.json, f = e.ja.apply(e, arguments); - return e.encode(f); - }, ia: function(a, b, c, d) { - c = c || {}; - d = d || {}; - var e = sjcl2.json; - b = e.g(e.g(e.g({}, e.defaults), b), c, true); - var f, g; - f = b.adata; - "string" === typeof b.salt && (b.salt = sjcl2.codec.base64.toBits(b.salt)); - "string" === typeof b.iv && (b.iv = sjcl2.codec.base64.toBits(b.iv)); - if (!sjcl2.mode[b.mode] || !sjcl2.cipher[b.cipher] || "string" === typeof a && 100 >= b.iter || 64 !== b.ts && 96 !== b.ts && 128 !== b.ts || 128 !== b.ks && 192 !== b.ks && 256 !== b.ks || !b.iv || 2 > b.iv.length || 4 < b.iv.length) throw new sjcl2.exception.invalid("json decrypt: invalid parameters"); - "string" === typeof a ? (g = sjcl2.misc.cachedPbkdf2(a, b), a = g.key.slice(0, b.ks / 32), b.salt = g.salt) : sjcl2.ecc && a instanceof sjcl2.ecc.elGamal.secretKey && (a = a.unkem(sjcl2.codec.base64.toBits(b.kemtag)).slice(0, b.ks / 32)); - "string" === typeof f && (f = sjcl2.codec.utf8String.toBits(f)); - g = new sjcl2.cipher[b.cipher](a); - f = "ccm" === b.mode && sjcl2.arrayBuffer && sjcl2.arrayBuffer.ccm && b.ct instanceof ArrayBuffer ? sjcl2.arrayBuffer.ccm.decrypt(g, b.ct, b.iv, b.tag, f, b.ts) : sjcl2.mode[b.mode].decrypt(g, b.ct, b.iv, f, b.ts); - e.g(d, b); - d.key = a; - return 1 === c.raw ? f : sjcl2.codec.utf8String.fromBits(f); - }, decrypt: function(a, b, c, d) { - var e = sjcl2.json; - return e.ia(a, e.decode(b), c, d); - }, encode: function(a) { - var b, c = "{", d = ""; - for (b in a) if (a.hasOwnProperty(b)) { - if (!b.match(/^[a-z0-9]+$/i)) throw new sjcl2.exception.invalid("json encode: invalid property name"); - c += d + '"' + b + '":'; - d = ","; - switch (typeof a[b]) { - case "number": - case "boolean": - c += a[b]; - break; - case "string": - c += '"' + escape(a[b]) + '"'; - break; - case "object": - c += '"' + sjcl2.codec.base64.fromBits(a[b], 0) + '"'; - break; - default: - throw new sjcl2.exception.bug("json encode: unsupported type"); - } - } - return c + "}"; - }, decode: function(a) { - a = a.replace(/\s/g, ""); - if (!a.match(/^\{.*\}$/)) throw new sjcl2.exception.invalid("json decode: this isn't json!"); - a = a.replace(/^\{|\}$/g, "").split(/,/); - var b = {}, c, d; - for (c = 0; c < a.length; c++) { - if (!(d = a[c].match(/^\s*(?:(["']?)([a-z][a-z0-9]*)\1)\s*:\s*(?:(-?\d+)|"([a-z0-9+\/%*_.@=\-]*)"|(true|false))$/i))) throw new sjcl2.exception.invalid("json decode: this isn't json!"); - null != d[3] ? b[d[2]] = parseInt(d[3], 10) : null != d[4] ? b[d[2]] = d[2].match(/^(ct|adata|salt|iv)$/) ? sjcl2.codec.base64.toBits(d[4]) : unescape(d[4]) : null != d[5] && (b[d[2]] = "true" === d[5]); - } - return b; - }, g: function(a, b, c) { - void 0 === a && (a = {}); - if (void 0 === b) return a; - for (var d in b) if (b.hasOwnProperty(d)) { - if (c && void 0 !== a[d] && a[d] !== b[d]) throw new sjcl2.exception.invalid("required parameter overridden"); - a[d] = b[d]; - } - return a; - }, sa: function(a, b) { - var c = {}, d; - for (d in a) a.hasOwnProperty(d) && a[d] !== b[d] && (c[d] = a[d]); - return c; - }, ra: function(a, b) { - var c = {}, d; - for (d = 0; d < b.length; d++) void 0 !== a[b[d]] && (c[b[d]] = a[b[d]]); - return c; - } }; - sjcl2.encrypt = sjcl2.json.encrypt; - sjcl2.decrypt = sjcl2.json.decrypt; - sjcl2.misc.pa = {}; - sjcl2.misc.cachedPbkdf2 = function(a, b) { - var c = sjcl2.misc.pa, d; - b = b || {}; - d = b.iter || 1e3; - c = c[a] = c[a] || {}; - d = c[d] = c[d] || { firstSalt: b.salt && b.salt.length ? b.salt.slice(0) : sjcl2.random.randomWords(2, 0) }; - c = void 0 === b.salt ? d.firstSalt : b.salt; - d[c] = d[c] || sjcl2.misc.pbkdf2(a, c, b.iter); - return { key: d[c].slice(0), salt: c.slice(0) }; - }; - "undefined" !== typeof module && module.exports && (module.exports = sjcl2); - "function" === typeof define && define([], function() { - return sjcl2; - }); - } -}); - -// node_modules/.deno/events@3.3.0/node_modules/events/events.js -var require_events = __commonJS({ - "node_modules/.deno/events@3.3.0/node_modules/events/events.js"(exports, module) { - "use strict"; - var R = typeof Reflect === "object" ? Reflect : null; - var ReflectApply = R && typeof R.apply === "function" ? R.apply : function ReflectApply2(target, receiver, args) { - return Function.prototype.apply.call(target, receiver, args); - }; - var ReflectOwnKeys; - if (R && typeof R.ownKeys === "function") { - ReflectOwnKeys = R.ownKeys; - } else if (Object.getOwnPropertySymbols) { - ReflectOwnKeys = function ReflectOwnKeys2(target) { - return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target)); - }; - } else { - ReflectOwnKeys = function ReflectOwnKeys2(target) { - return Object.getOwnPropertyNames(target); - }; - } - function ProcessEmitWarning(warning) { - if (console && console.warn) console.warn(warning); - } - var NumberIsNaN = Number.isNaN || function NumberIsNaN2(value) { - return value !== value; - }; - function EventEmitter2() { - EventEmitter2.init.call(this); - } - module.exports = EventEmitter2; - module.exports.once = once; - EventEmitter2.EventEmitter = EventEmitter2; - EventEmitter2.prototype._events = void 0; - EventEmitter2.prototype._eventsCount = 0; - EventEmitter2.prototype._maxListeners = void 0; - var defaultMaxListeners = 10; - function checkListener(listener) { - if (typeof listener !== "function") { - throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); - } - } - Object.defineProperty(EventEmitter2, "defaultMaxListeners", { - enumerable: true, - get: function() { - return defaultMaxListeners; - }, - set: function(arg) { - if (typeof arg !== "number" || arg < 0 || NumberIsNaN(arg)) { - throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + "."); - } - defaultMaxListeners = arg; - } - }); - EventEmitter2.init = function() { - if (this._events === void 0 || this._events === Object.getPrototypeOf(this)._events) { - this._events = /* @__PURE__ */ Object.create(null); - this._eventsCount = 0; - } - this._maxListeners = this._maxListeners || void 0; - }; - EventEmitter2.prototype.setMaxListeners = function setMaxListeners(n) { - if (typeof n !== "number" || n < 0 || NumberIsNaN(n)) { - throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + "."); - } - this._maxListeners = n; - return this; - }; - function _getMaxListeners(that) { - if (that._maxListeners === void 0) - return EventEmitter2.defaultMaxListeners; - return that._maxListeners; - } - EventEmitter2.prototype.getMaxListeners = function getMaxListeners() { - return _getMaxListeners(this); - }; - EventEmitter2.prototype.emit = function emit(type) { - var args = []; - for (var i = 1; i < arguments.length; i++) args.push(arguments[i]); - var doError = type === "error"; - var events2 = this._events; - if (events2 !== void 0) - doError = doError && events2.error === void 0; - else if (!doError) - return false; - if (doError) { - var er; - if (args.length > 0) - er = args[0]; - if (er instanceof Error) { - throw er; - } - var err2 = new Error("Unhandled error." + (er ? " (" + er.message + ")" : "")); - err2.context = er; - throw err2; - } - var handler = events2[type]; - if (handler === void 0) - return false; - if (typeof handler === "function") { - ReflectApply(handler, this, args); - } else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) - ReflectApply(listeners[i], this, args); - } - return true; - }; - function _addListener(target, type, listener, prepend) { - var m; - var events2; - var existing; - checkListener(listener); - events2 = target._events; - if (events2 === void 0) { - events2 = target._events = /* @__PURE__ */ Object.create(null); - target._eventsCount = 0; - } else { - if (events2.newListener !== void 0) { - target.emit( - "newListener", - type, - listener.listener ? listener.listener : listener - ); - events2 = target._events; - } - existing = events2[type]; - } - if (existing === void 0) { - existing = events2[type] = listener; - ++target._eventsCount; - } else { - if (typeof existing === "function") { - existing = events2[type] = prepend ? [listener, existing] : [existing, listener]; - } else if (prepend) { - existing.unshift(listener); - } else { - existing.push(listener); - } - m = _getMaxListeners(target); - if (m > 0 && existing.length > m && !existing.warned) { - existing.warned = true; - var w = new Error("Possible EventEmitter memory leak detected. " + existing.length + " " + String(type) + " listeners added. Use emitter.setMaxListeners() to increase limit"); - w.name = "MaxListenersExceededWarning"; - w.emitter = target; - w.type = type; - w.count = existing.length; - ProcessEmitWarning(w); - } - } - return target; - } - EventEmitter2.prototype.addListener = function addListener(type, listener) { - return _addListener(this, type, listener, false); - }; - EventEmitter2.prototype.on = EventEmitter2.prototype.addListener; - EventEmitter2.prototype.prependListener = function prependListener(type, listener) { - return _addListener(this, type, listener, true); - }; - function onceWrapper() { - if (!this.fired) { - this.target.removeListener(this.type, this.wrapFn); - this.fired = true; - if (arguments.length === 0) - return this.listener.call(this.target); - return this.listener.apply(this.target, arguments); - } - } - function _onceWrap(target, type, listener) { - var state = { fired: false, wrapFn: void 0, target, type, listener }; - var wrapped = onceWrapper.bind(state); - wrapped.listener = listener; - state.wrapFn = wrapped; - return wrapped; - } - EventEmitter2.prototype.once = function once2(type, listener) { - checkListener(listener); - this.on(type, _onceWrap(this, type, listener)); - return this; - }; - EventEmitter2.prototype.prependOnceListener = function prependOnceListener(type, listener) { - checkListener(listener); - this.prependListener(type, _onceWrap(this, type, listener)); - return this; - }; - EventEmitter2.prototype.removeListener = function removeListener(type, listener) { - var list, events2, position, i, originalListener; - checkListener(listener); - events2 = this._events; - if (events2 === void 0) - return this; - list = events2[type]; - if (list === void 0) - return this; - if (list === listener || list.listener === listener) { - if (--this._eventsCount === 0) - this._events = /* @__PURE__ */ Object.create(null); - else { - delete events2[type]; - if (events2.removeListener) - this.emit("removeListener", type, list.listener || listener); - } - } else if (typeof list !== "function") { - position = -1; - for (i = list.length - 1; i >= 0; i--) { - if (list[i] === listener || list[i].listener === listener) { - originalListener = list[i].listener; - position = i; - break; - } - } - if (position < 0) - return this; - if (position === 0) - list.shift(); - else { - spliceOne(list, position); - } - if (list.length === 1) - events2[type] = list[0]; - if (events2.removeListener !== void 0) - this.emit("removeListener", type, originalListener || listener); - } - return this; - }; - EventEmitter2.prototype.off = EventEmitter2.prototype.removeListener; - EventEmitter2.prototype.removeAllListeners = function removeAllListeners(type) { - var listeners, events2, i; - events2 = this._events; - if (events2 === void 0) - return this; - if (events2.removeListener === void 0) { - if (arguments.length === 0) { - this._events = /* @__PURE__ */ Object.create(null); - this._eventsCount = 0; - } else if (events2[type] !== void 0) { - if (--this._eventsCount === 0) - this._events = /* @__PURE__ */ Object.create(null); - else - delete events2[type]; - } - return this; - } - if (arguments.length === 0) { - var keys = Object.keys(events2); - var key; - for (i = 0; i < keys.length; ++i) { - key = keys[i]; - if (key === "removeListener") continue; - this.removeAllListeners(key); - } - this.removeAllListeners("removeListener"); - this._events = /* @__PURE__ */ Object.create(null); - this._eventsCount = 0; - return this; - } - listeners = events2[type]; - if (typeof listeners === "function") { - this.removeListener(type, listeners); - } else if (listeners !== void 0) { - for (i = listeners.length - 1; i >= 0; i--) { - this.removeListener(type, listeners[i]); - } - } - return this; - }; - function _listeners(target, type, unwrap) { - var events2 = target._events; - if (events2 === void 0) - return []; - var evlistener = events2[type]; - if (evlistener === void 0) - return []; - if (typeof evlistener === "function") - return unwrap ? [evlistener.listener || evlistener] : [evlistener]; - return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); - } - EventEmitter2.prototype.listeners = function listeners(type) { - return _listeners(this, type, true); - }; - EventEmitter2.prototype.rawListeners = function rawListeners(type) { - return _listeners(this, type, false); - }; - EventEmitter2.listenerCount = function(emitter, type) { - if (typeof emitter.listenerCount === "function") { - return emitter.listenerCount(type); - } else { - return listenerCount.call(emitter, type); - } - }; - EventEmitter2.prototype.listenerCount = listenerCount; - function listenerCount(type) { - var events2 = this._events; - if (events2 !== void 0) { - var evlistener = events2[type]; - if (typeof evlistener === "function") { - return 1; - } else if (evlistener !== void 0) { - return evlistener.length; - } - } - return 0; - } - EventEmitter2.prototype.eventNames = function eventNames() { - return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : []; - }; - function arrayClone(arr, n) { - var copy = new Array(n); - for (var i = 0; i < n; ++i) - copy[i] = arr[i]; - return copy; - } - function spliceOne(list, index) { - for (; index + 1 < list.length; index++) - list[index] = list[index + 1]; - list.pop(); - } - function unwrapListeners(arr) { - var ret = new Array(arr.length); - for (var i = 0; i < ret.length; ++i) { - ret[i] = arr[i].listener || arr[i]; - } - return ret; - } - function once(emitter, name) { - return new Promise(function(resolve, reject) { - function errorListener(err2) { - emitter.removeListener(name, resolver); - reject(err2); - } - function resolver() { - if (typeof emitter.removeListener === "function") { - emitter.removeListener("error", errorListener); - } - resolve([].slice.call(arguments)); - } - ; - eventTargetAgnosticAddListener(emitter, name, resolver, { once: true }); - if (name !== "error") { - addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true }); - } - }); - } - function addErrorHandlerIfEventEmitter(emitter, handler, flags) { - if (typeof emitter.on === "function") { - eventTargetAgnosticAddListener(emitter, "error", handler, flags); - } - } - function eventTargetAgnosticAddListener(emitter, name, listener, flags) { - if (typeof emitter.on === "function") { - if (flags.once) { - emitter.once(name, listener); - } else { - emitter.on(name, listener); - } - } else if (typeof emitter.addEventListener === "function") { - emitter.addEventListener(name, function wrapListener(arg) { - if (flags.once) { - emitter.removeEventListener(name, wrapListener); - } - listener(arg); - }); - } else { - throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof emitter); - } - } - } -}); - -// node_modules/.deno/arraybuffer-encoding@1.1.0/node_modules/arraybuffer-encoding/dist/esm/base64/encoding.js -var Encoding = class { - /** - * - * @param charset Charset to use for base64 encoding. This must be 64-characters long. - * @param noPadding If true, encoded strings won't include padding. - */ - constructor(charset, noPadding) { - if (!charset || charset.length != 64) { - throw Error("Charset must contain 64 characters"); - } - this._charset = charset; - this._noPadding = !!noPadding; - this._valid = new RegExp("^[" + this._charset.replace("-", "\\-") + "]+={0,2}$"); - } - /** - * Encode an ArrayBuffer to base64 in a string. - * @param ab Data to encode to base64 - * @returns Base64-encoded string - */ - Encode(ab) { - const len = ab.byteLength; - if (!len) { - return ""; - } - const view = new Uint8Array(ab); - let res = ""; - for (let i = 0; i < len; i += 3) { - res += this._charset[view[i] >> 2] + this._charset[(view[i] & 3) << 4 | view[i + 1] >> 4] + this._charset[(view[i + 1] & 15) << 2 | view[i + 2] >> 6] + this._charset[view[i + 2] & 63]; - } - if (len % 3 == 2) { - res = res.substring(0, res.length - 1); - if (!this._noPadding) { - res += "="; - } - } else if (len % 3 == 1) { - res = res.substring(0, res.length - 2); - if (!this._noPadding) { - res += "=="; - } - } - return res; - } - /** - * Decode a string from base64. Padding is always optional. - * @param str Base64-encoded string - * @returns Data decoded from the base64 string - */ - Decode(str) { - str = (str || "").replace(/[\s]/g, ""); - if (!str) { - return new ArrayBuffer(0); - } - if (!this._valid.test(str)) { - throw Error("Invalid base64 input sequence"); - } - let viewLen = Math.floor(str.length * 0.75); - if (str[str.length - 2] == "=") { - viewLen -= 2; - } else if (str[str.length - 1] == "=") { - viewLen--; - } - const view = new Uint8Array(viewLen); - let enc1, enc2, enc3, enc4, i = 0, j = 0; - while (i < str.length * 0.75) { - enc1 = this._charset.indexOf(str.charAt(j++)); - enc2 = this._charset.indexOf(str.charAt(j++)); - enc3 = this._charset.indexOf(str.charAt(j++)); - enc4 = this._charset.indexOf(str.charAt(j++)); - view[i++] = enc1 << 2 | enc2 >> 4; - view[i++] = (enc2 & 15) << 4 | enc3 >> 2; - view[i++] = (enc3 & 3) << 6 | enc4; - } - return view.buffer; - } -}; - -// node_modules/.deno/arraybuffer-encoding@1.1.0/node_modules/arraybuffer-encoding/dist/esm/base64/standard.js -var obj = new Encoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"); -function Encode(ab) { - return obj.Encode(ab); -} - -// node_modules/.deno/arraybuffer-encoding@1.1.0/node_modules/arraybuffer-encoding/dist/esm/base64/url.js -var obj2 = new Encoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_", true); -function Decode(str) { - return obj2.Decode(str); -} - -// node_modules/.deno/neverthrow@8.0.0/node_modules/neverthrow/dist/index.es.js -var defaultErrorConfig = { - withStackTrace: false -}; -var createNeverThrowError = (message, result, config = defaultErrorConfig) => { - const data = result.isOk() ? { type: "Ok", value: result.value } : { type: "Err", value: result.error }; - const maybeStack = config.withStackTrace ? new Error().stack : void 0; - return { - data, - message, - stack: maybeStack - }; -}; -function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function(resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, [])).next()); - }); -} -function __values(o) { - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; - if (m) return m.call(o); - if (o && typeof o.length === "number") return { - next: function() { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); -} -function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); -} -function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { - return this; - }, i; - function verb(n) { - if (g[n]) i[n] = function(v) { - return new Promise(function(a, b) { - q.push([n, v, a, b]) > 1 || resume(n, v); - }); - }; - } - function resume(n, v) { - try { - step(g[n](v)); - } catch (e) { - settle(q[0][3], e); - } - } - function step(r) { - r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); - } - function fulfill(value) { - resume("next", value); - } - function reject(value) { - resume("throw", value); - } - function settle(f, v) { - if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); - } -} -function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function(e) { - throw e; - }), verb("return"), i[Symbol.iterator] = function() { - return this; - }, i; - function verb(n, f) { - i[n] = o[n] ? function(v) { - return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; - } : f; - } -} -function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { - return this; - }, i); - function verb(n) { - i[n] = o[n] && function(v) { - return new Promise(function(resolve, reject) { - v = o[n](v), settle(resolve, reject, v.done, v.value); - }); - }; - } - function settle(resolve, reject, d, v) { - Promise.resolve(v).then(function(v2) { - resolve({ value: v2, done: d }); - }, reject); - } -} -var ResultAsync = class _ResultAsync { - constructor(res) { - this._promise = res; - } - static fromSafePromise(promise) { - const newPromise = promise.then((value) => new Ok(value)); - return new _ResultAsync(newPromise); - } - static fromPromise(promise, errorFn) { - const newPromise = promise.then((value) => new Ok(value)).catch((e) => new Err(errorFn(e))); - return new _ResultAsync(newPromise); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any - static fromThrowable(fn, errorFn) { - return (...args) => { - return new _ResultAsync((() => __awaiter(this, void 0, void 0, function* () { - try { - return new Ok(yield fn(...args)); - } catch (error) { - return new Err(errorFn ? errorFn(error) : error); - } - }))()); - }; - } - static combine(asyncResultList) { - return combineResultAsyncList(asyncResultList); - } - static combineWithAllErrors(asyncResultList) { - return combineResultAsyncListWithAllErrors(asyncResultList); - } - map(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return new Err(res.error); - } - return new Ok(yield f(res.value)); - }))); - } - andThrough(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return new Err(res.error); - } - const newRes = yield f(res.value); - if (newRes.isErr()) { - return new Err(newRes.error); - } - return new Ok(res.value); - }))); - } - andTee(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return new Err(res.error); - } - try { - yield f(res.value); - } catch (e) { - } - return new Ok(res.value); - }))); - } - mapErr(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isOk()) { - return new Ok(res.value); - } - return new Err(yield f(res.error)); - }))); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThen(f) { - return new _ResultAsync(this._promise.then((res) => { - if (res.isErr()) { - return new Err(res.error); - } - const newValue = f(res.value); - return newValue instanceof _ResultAsync ? newValue._promise : newValue; - })); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - orElse(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return f(res.error); - } - return new Ok(res.value); - }))); - } - match(ok2, _err) { - return this._promise.then((res) => res.match(ok2, _err)); - } - unwrapOr(t) { - return this._promise.then((res) => res.unwrapOr(t)); - } - /** - * Emulates Rust's `?` operator in `safeTry`'s body. See also `safeTry`. - */ - safeUnwrap() { - return __asyncGenerator(this, arguments, function* safeUnwrap_1() { - return yield __await(yield __await(yield* __asyncDelegator(__asyncValues(yield __await(this._promise.then((res) => res.safeUnwrap())))))); - }); - } - // Makes ResultAsync implement PromiseLike - then(successCallback, failureCallback) { - return this._promise.then(successCallback, failureCallback); - } -}; -var okAsync = (value) => new ResultAsync(Promise.resolve(new Ok(value))); -var errAsync = (err2) => new ResultAsync(Promise.resolve(new Err(err2))); -var fromPromise = ResultAsync.fromPromise; -var fromSafePromise = ResultAsync.fromSafePromise; -var fromAsyncThrowable = ResultAsync.fromThrowable; -var combineResultList = (resultList) => { - let acc = ok([]); - for (const result of resultList) { - if (result.isErr()) { - acc = err(result.error); - break; - } else { - acc.map((list) => list.push(result.value)); - } - } - return acc; -}; -var combineResultAsyncList = (asyncResultList) => ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultList); -var combineResultListWithAllErrors = (resultList) => { - let acc = ok([]); - for (const result of resultList) { - if (result.isErr() && acc.isErr()) { - acc.error.push(result.error); - } else if (result.isErr() && acc.isOk()) { - acc = err([result.error]); - } else if (result.isOk() && acc.isOk()) { - acc.value.push(result.value); - } - } - return acc; -}; -var combineResultAsyncListWithAllErrors = (asyncResultList) => ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultListWithAllErrors); -var Result; -(function(Result2) { - function fromThrowable2(fn, errorFn) { - return (...args) => { - try { - const result = fn(...args); - return ok(result); - } catch (e) { - return err(errorFn ? errorFn(e) : e); - } - }; - } - Result2.fromThrowable = fromThrowable2; - function combine(resultList) { - return combineResultList(resultList); - } - Result2.combine = combine; - function combineWithAllErrors(resultList) { - return combineResultListWithAllErrors(resultList); - } - Result2.combineWithAllErrors = combineWithAllErrors; -})(Result || (Result = {})); -var ok = (value) => new Ok(value); -function err(err2) { - return new Err(err2); -} -var Ok = class { - constructor(value) { - this.value = value; - } - isOk() { - return true; - } - isErr() { - return !this.isOk(); - } - map(f) { - return ok(f(this.value)); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - mapErr(_f) { - return ok(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThen(f) { - return f(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThrough(f) { - return f(this.value).map((_value) => this.value); - } - andTee(f) { - try { - f(this.value); - } catch (e) { - } - return ok(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - orElse(_f) { - return ok(this.value); - } - asyncAndThen(f) { - return f(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - asyncAndThrough(f) { - return f(this.value).map(() => this.value); - } - asyncMap(f) { - return ResultAsync.fromSafePromise(f(this.value)); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - unwrapOr(_v) { - return this.value; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - match(ok2, _err) { - return ok2(this.value); - } - safeUnwrap() { - const value = this.value; - return function* () { - return value; - }(); - } - _unsafeUnwrap(_) { - return this.value; - } - _unsafeUnwrapErr(config) { - throw createNeverThrowError("Called `_unsafeUnwrapErr` on an Ok", this, config); - } -}; -var Err = class { - constructor(error) { - this.error = error; - } - isOk() { - return false; - } - isErr() { - return !this.isOk(); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - map(_f) { - return err(this.error); - } - mapErr(f) { - return err(f(this.error)); - } - andThrough(_f) { - return err(this.error); - } - andTee(_f) { - return err(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThen(_f) { - return err(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - orElse(f) { - return f(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - asyncAndThen(_f) { - return errAsync(this.error); - } - asyncAndThrough(_f) { - return errAsync(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - asyncMap(_f) { - return errAsync(this.error); - } - unwrapOr(v) { - return v; - } - match(_ok, err2) { - return err2(this.error); - } - safeUnwrap() { - const error = this.error; - return function* () { - yield err(error); - throw new Error("Do not use this generator out of `safeTry`"); - }(); - } - _unsafeUnwrap(config) { - throw createNeverThrowError("Called `_unsafeUnwrap` on an Err", this, config); - } - _unsafeUnwrapErr(_) { - return this.error; - } -}; -var fromThrowable = Result.fromThrowable; - -// src/api/crypto/sjcl.ts -var import_sjcl = __toESM(require_sjcl()); - -// src/error/base-error.ts -var BaseError = class extends Error { - constructor(message, options = {}) { - const { cause, context } = options; - super(message, { cause }); - __publicField(this, "context"); - this.name = this.constructor.name; - this.context = context; - } -}; - -// src/error/crypto/crypto-error.ts -var CryptoError = class extends BaseError { -}; - -// src/error/crypto/encryption-error.ts -var EncryptionError = class extends CryptoError { - constructor() { - super(...arguments); - __publicField(this, "message", "Unable to encrypt the provided data"); - } -}; - -// src/utils.ts -var ensureError = (value) => { - if (value instanceof Error) return value; - let stringified = "[Unable to stringify the thrown value]"; - try { - stringified = JSON.stringify(value); - } catch (_error) { - } - const error = new Error(stringified); - return error; -}; -var isDenoRuntime = () => typeof Deno !== "undefined"; -var workerUrl = (relativePath) => isDenoRuntime() ? new URL(`./worker/${relativePath}.ts`, new URL(".", import.meta.url).href) : new URL( - import.meta.resolve( - `./${relativePath === "main" ? `worker/${relativePath}` : relativePath}.js` - ) -); - -// src/api/crypto/sjcl.ts -var encrypt = (key, value) => { - try { - const encrypted = import_sjcl.default.encrypt(key, Encode(value)); - return okAsync({ - algo: 0 /* Sjcl */, - data: encrypted, - iv: JSON.parse(encrypted).iv - }); - } catch (e) { - return errAsync(new EncryptionError(void 0, { cause: ensureError(e) })); - } -}; - -// src/api/crypto/web.ts -var encrypt2 = (key, value) => { - return importKey(key).andThen((importedKey) => { - const iv = crypto.getRandomValues(new Uint8Array(12)); - return ResultAsync.fromPromise( - crypto.subtle.encrypt( - { - name: "AES-GCM", - iv - }, - importedKey, - value - ), - (error) => ensureError(error) - ).andThen((encrypted) => { - return okAsync({ - algo: 1 /* WebCrypto */, - data: Encode(encrypted), - iv - }); - }); - }); -}; -var importKey = (key) => { - return ResultAsync.fromPromise( - crypto.subtle.importKey( - "raw", - Decode(key), - { name: "AES-GCM" }, - false, - [ - "encrypt", - "decrypt" - ] - ), - (error) => new CryptoError("Unable to import cryptography key", { - cause: ensureError(error) - }) - ); -}; - -// src/api/crypto.ts -var encrypt3 = (key, value, algo) => { - let encrypted; - if (algo === 0 /* Sjcl */) { - console.debug("sjcl"); - encrypted = encrypt(key, value); - } else { - if (typeof value === "string") { - value = new TextEncoder().encode(value).buffer; - } - encrypted = encrypt2(key, value); - } - return encrypted; -}; - -// src/worker/main.ts -var import_events = __toESM(require_events()); -var events = new import_events.default(); -var worker; -var isInitialized = false; -self.onmessage = (event) => { - addWorker(event); - if (!isInitialized) { - isInitialized = true; - events.once("OPERATION_FAILED" /* OPERATION_FAILED */, () => { - if (worker) { - worker.terminate(); - } - }); - } -}; -var addWorker = (event, callback) => { - const { action } = event.data; - if (action === 5 /* PAUSE */ || action === 8 /* RESUME */) { - worker.postMessage(event.data); - } else { - switch (action) { - case 2 /* CANCEL */: - { - worker = new Worker(workerUrl("cancel"), { type: "module" }); - worker.postMessage(event.data); - } - break; - case 3 /* DOWNLOAD */: - { - worker = new Worker(workerUrl("download"), { type: "module" }); - worker.postMessage(event.data); - } - break; - case 4 /* INFOS */: - { - worker = new Worker(workerUrl("infos"), { type: "module" }); - worker.postMessage(event.data); - } - break; - case 7 /* REMOVE */: - { - worker = worker || new Worker(workerUrl("remove"), { type: "module" }); - worker.postMessage(event.data); - } - break; - case 9 /* UPLOAD */: - { - worker = worker || new Worker(workerUrl("upload"), { type: "module" }); - worker.postMessage(event.data); - } - break; - default: { - console.error("Action not found"); - } - } - worker.onmessage = (e) => { - if (callback) callback(e); - self.postMessage(e.data); - }; - worker.onerror = (error) => { - console.error(`Error: ${error.message}`); - }; - } -}; -var init = () => { - events.once("SOCKET_OPENED" /* SOCKET_OPENED */, () => { - self.postMessage({ - event: "SOCKET_OPENED" /* SOCKET_OPENED */ - }); - }); - events.once("OPERATION_FAILED" /* OPERATION_FAILED */, (error) => { - self.postMessage({ event: "OPERATION_FAILED" /* OPERATION_FAILED */, error }); - }); -}; - -// src/worker/encrypt.ts -var isInitiated = false; -self.onmessage = (event) => { - if (!isInitiated) { - init(); - isInitiated = true; - } - const { lufiFile, chunk, algo } = event.data.args; - if (chunk && typeof algo !== "undefined") { - if (lufiFile.uploadStatus !== 2 /* FAILED */) { - encrypt3(lufiFile.keys.client, chunk.buffer, algo).map((encryptedData) => { - self.postMessage({ encryptedData, chunkIndex: chunk.index }); - }).mapErr((error) => { - self.postMessage({ error }); - }); - } else { - self.postMessage({ error: "File upload already failed" }); - } - } else { - self.postMessage({ error: ensureError("Buffer cannot be undefined") }); - } -}; +var Be=Object.create;var Y=Object.defineProperty;var Ie=Object.getOwnPropertyDescriptor;var Re=Object.getOwnPropertyNames;var je=Object.getPrototypeOf,Ue=Object.prototype.hasOwnProperty;var Te=(t,e,r)=>e in t?Y(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var Fe=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var re=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Ne=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Re(e))!Ue.call(t,o)&&o!==r&&Y(t,o,{get:()=>e[o],enumerable:!(n=Ie(e,o))||n.enumerable});return t};var ne=(t,e,r)=>(r=t!=null?Be(je(t)):{},Ne(e||!t||!t.__esModule?Y(r,"default",{value:t,enumerable:!0}):r,t));var L=(t,e,r)=>Te(t,typeof e!="symbol"?e+"":e,r);var le=re((kt,P)=>{"use strict";var c={cipher:{},hash:{},keyexchange:{},mode:{},misc:{},codec:{},exception:{corrupt:function(t){this.toString=function(){return"CORRUPT: "+this.message},this.message=t},invalid:function(t){this.toString=function(){return"INVALID: "+this.message},this.message=t},bug:function(t){this.toString=function(){return"BUG: "+this.message},this.message=t},notReady:function(t){this.toString=function(){return"NOT READY: "+this.message},this.message=t}}};c.cipher.aes=function(t){this.s[0][0][0]||this.O();var e,r,n,o,i=this.s[0][4],s=this.s[1];e=t.length;var a=1;if(e!==4&&e!==6&&e!==8)throw new c.exception.invalid("invalid aes key size");for(this.b=[n=t.slice(0),o=[]],t=e;t<4*e+28;t++)r=n[t-1],(t%e===0||e===8&&t%e===4)&&(r=i[r>>>24]<<24^i[r>>16&255]<<16^i[r>>8&255]<<8^i[r&255],t%e===0&&(r=r<<8^r>>>24^a<<24,a=a<<1^283*(a>>7))),n[t]=n[t-e]^r;for(e=0;t;e++,t--)r=n[e&3?t:t-4],o[e]=4>=t||4>e?r:s[0][i[r>>>24]]^s[1][i[r>>16&255]]^s[2][i[r>>8&255]]^s[3][i[r&255]]};c.cipher.aes.prototype={encrypt:function(t){return fe(this,t,0)},decrypt:function(t){return fe(this,t,1)},s:[[[],[],[],[],[]],[[],[],[],[],[]]],O:function(){var t=this.s[0],e=this.s[1],r=t[4],n=e[4],o,i,s,a=[],f=[],u,l,h,p;for(o=0;256>o;o++)f[(a[o]=o<<1^283*(o>>7))^o]=o;for(i=s=0;!r[i];i^=u||1,s=f[s]||1)for(h=s^s<<1^s<<2^s<<3^s<<4,h=h>>8^h&255^99,r[i]=h,n[h]=i,l=a[o=a[u=a[i]]],p=16843009*l^65537*o^257*u^16843008*i,l=257*a[h]^16843008*h,o=0;4>o;o++)t[o][i]=l=l<<24^l>>>8,e[o][h]=p=p<<24^p>>>8;for(o=0;5>o;o++)t[o]=t[o].slice(0),e[o]=e[o].slice(0)}};function fe(t,e,r){if(e.length!==4)throw new c.exception.invalid("invalid aes block size");var n=t.b[r],o=e[0]^n[0],i=e[r?3:1]^n[1],s=e[2]^n[2];e=e[r?1:3]^n[3];var a,f,u,l=n.length/4-2,h,p=4,m=[0,0,0,0];a=t.s[r],t=a[0];var y=a[1],O=a[2],N=a[3],W=a[4];for(h=0;h>>24]^y[i>>16&255]^O[s>>8&255]^N[e&255]^n[p],f=t[i>>>24]^y[s>>16&255]^O[e>>8&255]^N[o&255]^n[p+1],u=t[s>>>24]^y[e>>16&255]^O[o>>8&255]^N[i&255]^n[p+2],e=t[e>>>24]^y[o>>16&255]^O[i>>8&255]^N[s&255]^n[p+3],p+=4,o=a,i=f,s=u;for(h=0;4>h;h++)m[r?3&-h:h]=W[o>>>24]<<24^W[i>>16&255]<<16^W[s>>8&255]<<8^W[e&255]^n[p++],a=o,o=i,i=s,s=e,e=a;return m}c.bitArray={bitSlice:function(t,e,r){return t=c.bitArray.$(t.slice(e/32),32-(e&31)).slice(1),r===void 0?t:c.bitArray.clamp(t,r-e)},extract:function(t,e,r){var n=Math.floor(-e-r&31);return((e+r-1^e)&-32?t[e/32|0]<<32-n^t[e/32+1|0]>>>n:t[e/32|0]>>>n)&(1<>e-1,1)),t},partial:function(t,e,r){return t===32?e:(r?e|0:e<<32-t)+1099511627776*t},getPartial:function(t){return Math.round(t/1099511627776)||32},equal:function(t,e){if(c.bitArray.bitLength(t)!==c.bitArray.bitLength(e))return!1;var r=0,n;for(n=0;n>>e),r=t[o]<<32-e;return o=t.length?t[t.length-1]:0,t=c.bitArray.getPartial(o),n.push(c.bitArray.partial(e+t&31,32>>24|r>>>8&65280|(r&65280)<<8|r<<24;return t}};c.codec.utf8String={fromBits:function(t){var e="",r=c.bitArray.bitLength(t),n,o;for(n=0;n>>8>>>8>>>8),o<<=8;return decodeURIComponent(escape(e))},toBits:function(t){t=unescape(encodeURIComponent(t));var e=[],r,n=0;for(r=0;r>>s)>>>o),sl){if(!e)try{return c.codec.base32hex.toBits(t)}catch{}throw new c.exception.invalid("this isn't "+h+"!")}a>o?(a-=o,i.push(u^l>>>a),u=l<>>o)>>>26),6>o?(s=t[r]<<6-o,o+=26,r++):(s<<=6,o-=6);for(;n.length&3&&!e;)n+="=";return n},toBits:function(t,e){t=t.replace(/\s|=/g,"");var r=[],n,o=0,i=c.codec.base64.B,s=0,a;for(e&&(i=i.substr(0,62)+"-_"),n=0;na)throw new c.exception.invalid("this isn't base64!");26>>o),s=a<<32-o):(o+=6,s^=a<<32-o)}return o&56&&r.push(c.bitArray.partial(o&56,s,1)),r}};c.codec.base64url={fromBits:function(t){return c.codec.base64.fromBits(t,1,1)},toBits:function(t){return c.codec.base64.toBits(t,1)}};c.hash.sha256=function(t){this.b[0]||this.O(),t?(this.F=t.F.slice(0),this.A=t.A.slice(0),this.l=t.l):this.reset()};c.hash.sha256.hash=function(t){return new c.hash.sha256().update(t).finalize()};c.hash.sha256.prototype={blockSize:512,reset:function(){return this.F=this.Y.slice(0),this.A=[],this.l=0,this},update:function(t){typeof t=="string"&&(t=c.codec.utf8String.toBits(t));var e,r=this.A=c.bitArray.concat(this.A,t);if(e=this.l,t=this.l=e+c.bitArray.bitLength(t),9007199254740991e;r++){for(o=!0,n=2;n*n<=r;n++)if(r%n===0){o=!1;break}o&&(8>e&&(this.Y[e]=t(Math.pow(r,.5))),this.b[e]=t(Math.pow(r,1/3)),e++)}}};function Z(t,e){var r,n,o,i=t.F,s=t.b,a=i[0],f=i[1],u=i[2],l=i[3],h=i[4],p=i[5],m=i[6],y=i[7];for(r=0;64>r;r++)16>r?n=e[r]:(n=e[r+1&15],o=e[r+14&15],n=e[r&15]=(n>>>7^n>>>18^n>>>3^n<<25^n<<14)+(o>>>17^o>>>19^o>>>10^o<<15^o<<13)+e[r&15]+e[r+9&15]|0),n=n+y+(h>>>6^h>>>11^h>>>25^h<<26^h<<21^h<<7)+(m^h&(p^m))+s[r],y=m,m=p,p=h,h=l+n|0,l=u,u=f,f=a,a=n+(f&u^l&(f^u))+(f>>>2^f>>>13^f>>>22^f<<30^f<<19^f<<10)|0;i[0]=i[0]+a|0,i[1]=i[1]+f|0,i[2]=i[2]+u|0,i[3]=i[3]+l|0,i[4]=i[4]+h|0,i[5]=i[5]+p|0,i[6]=i[6]+m|0,i[7]=i[7]+y|0}c.mode.ccm={name:"ccm",G:[],listenProgress:function(t){c.mode.ccm.G.push(t)},unListenProgress:function(t){t=c.mode.ccm.G.indexOf(t),-1f)throw new c.exception.invalid("ccm: iv must be at least 7 bytes");for(i=2;4>i&&u>>>8*i;i++);return i<15-f&&(i=15-f),r=a.clamp(r,8*(15-i)),e=c.mode.ccm.V(t,e,r,n,o,i),s=c.mode.ccm.C(t,s,r,e,o,i),a.concat(s.data,s.tag)},decrypt:function(t,e,r,n,o){o=o||64,n=n||[];var i=c.bitArray,s=i.bitLength(r)/8,u=i.bitLength(e),a=i.clamp(e,u-o),f=i.bitSlice(e,u-o),u=(u-o)/8;if(7>s)throw new c.exception.invalid("ccm: iv must be at least 7 bytes");for(e=2;4>e&&u>>>8*e;e++);if(e<15-s&&(e=15-s),r=i.clamp(r,8*(15-e)),a=c.mode.ccm.C(t,a,r,f,o,e),t=c.mode.ccm.V(t,a.data,r,n,o,e),!i.equal(a.tag,t))throw new c.exception.corrupt("ccm: tag doesn't match");return a.data},na:function(t,e,r,n,o,i){var s=[],a=c.bitArray,f=a.i;if(n=[a.partial(8,(e.length?64:0)|n-2<<2|i-1)],n=a.concat(n,r),n[3]|=o,n=t.encrypt(n),e.length)for(r=a.bitLength(e)/8,65279>=r?s=[a.partial(16,r)]:4294967295>=r&&(s=a.concat([a.partial(16,65534)],[r])),s=a.concat(s,e),e=0;eo||16l&&(c.mode.ccm.fa(s/f),l+=h),r[3]++,o=t.encrypt(r),e[s]^=o[0],e[s+1]^=o[1],e[s+2]^=o[2],e[s+3]^=o[3];return{tag:n,data:a.clamp(e,u)}}};c.mode.ocb2={name:"ocb2",encrypt:function(t,e,r,n,o,i){if(c.bitArray.bitLength(r)!==128)throw new c.exception.invalid("ocb iv must be 128 bits");var s,a=c.mode.ocb2.S,f=c.bitArray,u=f.i,l=[0,0,0,0];r=a(t.encrypt(r));var h,p=[];for(n=n||[],o=o||64,s=0;s+4o.bitLength(r)&&(a=i(a,n(a)),r=o.concat(r,[-2147483648,0,0,0])),s=i(s,r),t.encrypt(i(n(i(a,n(a))),s))},S:function(t){return[t[0]<<1^t[1]>>>31,t[1]<<1^t[2]>>>31,t[2]<<1^t[3]>>>31,t[3]<<1^135*(t[0]>>>31)]}};c.mode.gcm={name:"gcm",encrypt:function(t,e,r,n,o){var i=e.slice(0);return e=c.bitArray,n=n||[],t=c.mode.gcm.C(!0,t,i,n,r,o||128),e.concat(t.data,t.tag)},decrypt:function(t,e,r,n,o){var i=e.slice(0),s=c.bitArray,a=s.bitLength(i);if(o=o||128,n=n||[],o<=a?(e=s.bitSlice(i,a-o),i=s.bitSlice(i,0,a-o)):(e=i,i=[]),t=c.mode.gcm.C(!1,t,i,n,r,o),!s.equal(t.tag,e))throw new c.exception.corrupt("gcm: tag doesn't match");return t.data},ka:function(t,e){var r,n,o,i,s,a=c.bitArray.i;for(o=[0,0,0,0],i=e.slice(0),r=0;128>r;r++){for((n=(t[Math.floor(r/32)]&1<<31-r%32)!==0)&&(o=a(o,i)),s=(i[3]&1)!==0,n=3;0>>1|(i[n-1]&1)<<31;i[0]>>>=1,s&&(i[0]^=-520093696)}return o},j:function(t,e,r){var n,o=r.length;for(e=e.slice(0),n=0;no&&(t=e.hash(t)),n=0;nn||0>r)throw new c.exception.invalid("invalid params to pbkdf2");typeof t=="string"&&(t=c.codec.utf8String.toBits(t)),typeof e=="string"&&(e=c.codec.utf8String.toBits(e)),o=o||c.misc.hmac,t=new o(t);var i,s,a,f,u=[],l=c.bitArray;for(f=1;32*u.length<(n||1);f++){for(o=i=t.encrypt(l.concat(e,[f])),s=1;ss;s++)o.push(4294967296*Math.random()|0);for(s=0;s=1<this.o&&(this.o=i),this.P++,this.b=c.hash.sha256.hash(this.b.concat(o)),this.L=new c.cipher.aes(this.b),n=0;4>n&&(this.h[n]=this.h[n]+1|0,!this.h[n]);n++);}for(n=0;n>>1;this.c[s].update([n,this.N++,2,e,i,t.length].concat(t))}break;case"string":e===void 0&&(e=t.length),this.c[s].update([n,this.N++,3,e,i,t.length]),this.c[s].update(t);break;default:f=1}if(f)throw new c.exception.bug("random: addEntropy only supports number, array of numbers or string");this.m[s]+=e,this.f+=e,a===this.u&&(this.isReady()!==this.u&&ue("seeded",Math.max(this.o,this.f)),ue("progress",this.getProgress()))},isReady:function(t){return t=this.T[t!==void 0?t:this.M],this.o&&this.o>=t?this.m[0]>this.ba&&new Date().valueOf()>this.Z?this.J|this.I:this.I:this.f>=t?this.J|this.u:this.u},getProgress:function(t){return t=this.T[t||this.M],this.o>=t||this.f>t?1:this.f/t},startCollectors:function(){if(!this.D){if(this.a={loadTimeCollector:U(this,this.ma),mouseCollector:U(this,this.oa),keyboardCollector:U(this,this.la),accelerometerCollector:U(this,this.ea),touchCollector:U(this,this.qa)},window.addEventListener)window.addEventListener("load",this.a.loadTimeCollector,!1),window.addEventListener("mousemove",this.a.mouseCollector,!1),window.addEventListener("keypress",this.a.keyboardCollector,!1),window.addEventListener("devicemotion",this.a.accelerometerCollector,!1),window.addEventListener("touchmove",this.a.touchCollector,!1);else if(document.attachEvent)document.attachEvent("onload",this.a.loadTimeCollector),document.attachEvent("onmousemove",this.a.mouseCollector),document.attachEvent("keypress",this.a.keyboardCollector);else throw new c.exception.bug("can't attach event");this.D=!0}},stopCollectors:function(){this.D&&(window.removeEventListener?(window.removeEventListener("load",this.a.loadTimeCollector,!1),window.removeEventListener("mousemove",this.a.mouseCollector,!1),window.removeEventListener("keypress",this.a.keyboardCollector,!1),window.removeEventListener("devicemotion",this.a.accelerometerCollector,!1),window.removeEventListener("touchmove",this.a.touchCollector,!1)):document.detachEvent&&(document.detachEvent("onload",this.a.loadTimeCollector),document.detachEvent("onmousemove",this.a.mouseCollector),document.detachEvent("keypress",this.a.keyboardCollector)),this.D=!1)},addEventListener:function(t,e){this.K[t][this.ga++]=e},removeEventListener:function(t,e){var r,n,o=this.K[t],i=[];for(n in o)o.hasOwnProperty(n)&&o[n]===e&&i.push(n);for(r=0;re&&(t.h[e]=t.h[e]+1|0,!t.h[e]);e++);return t.L.encrypt(t.h)}function U(t,e){return function(){e.apply(t,arguments)}}c.random=new c.prng(6);e:try{if(K=typeof P<"u"&&P.exports){try{z=Fe("crypto")}catch{z=null}K=G=z}if(K&&G.randomBytes)T=G.randomBytes(128),T=new Uint32Array(new Uint8Array(T).buffer),c.random.addEntropy(T,1024,"crypto['randomBytes']");else if(typeof window<"u"&&typeof Uint32Array<"u"){if(F=new Uint32Array(32),window.crypto&&window.crypto.getRandomValues)window.crypto.getRandomValues(F);else if(window.msCrypto&&window.msCrypto.getRandomValues)window.msCrypto.getRandomValues(F);else break e;c.random.addEntropy(F,1024,"crypto['getRandomValues']")}}catch(t){typeof window<"u"&&window.console&&(console.log("There was an error collecting entropy from the browser:"),console.log(t))}var T,G,F,K,z;c.json={defaults:{v:1,iter:1e4,ks:128,ts:64,mode:"ccm",adata:"",cipher:"aes"},ja:function(t,e,r,n){r=r||{},n=n||{};var o=c.json,i=o.g({iv:c.random.randomWords(4,0)},o.defaults),s;if(o.g(i,r),r=i.adata,typeof i.salt=="string"&&(i.salt=c.codec.base64.toBits(i.salt)),typeof i.iv=="string"&&(i.iv=c.codec.base64.toBits(i.iv)),!c.mode[i.mode]||!c.cipher[i.cipher]||typeof t=="string"&&100>=i.iter||i.ts!==64&&i.ts!==96&&i.ts!==128||i.ks!==128&&i.ks!==192&&i.ks!==256||2>i.iv.length||4=e.iter||e.ts!==64&&e.ts!==96&&e.ts!==128||e.ks!==128&&e.ks!==192&&e.ks!==256||!e.iv||2>e.iv.length||4{"use strict";var I=typeof Reflect=="object"?Reflect:null,ve=I&&typeof I.apply=="function"?I.apply:function(e,r,n){return Function.prototype.apply.call(e,r,n)},q;I&&typeof I.ownKeys=="function"?q=I.ownKeys:Object.getOwnPropertySymbols?q=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:q=function(e){return Object.getOwnPropertyNames(e)};function rt(t){console&&console.warn&&console.warn(t)}var Ee=Number.isNaN||function(e){return e!==e};function d(){d.init.call(this)}ee.exports=d;ee.exports.once=st;d.EventEmitter=d;d.prototype._events=void 0;d.prototype._eventsCount=0;d.prototype._maxListeners=void 0;var we=10;function $(t){if(typeof t!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}Object.defineProperty(d,"defaultMaxListeners",{enumerable:!0,get:function(){return we},set:function(t){if(typeof t!="number"||t<0||Ee(t))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+t+".");we=t}});d.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};d.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||Ee(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function Ae(t){return t._maxListeners===void 0?d.defaultMaxListeners:t._maxListeners}d.prototype.getMaxListeners=function(){return Ae(this)};d.prototype.emit=function(e){for(var r=[],n=1;n0&&(s=r[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var f=i[e];if(f===void 0)return!1;if(typeof f=="function")ve(f,this,r);else for(var u=f.length,l=De(f,u),n=0;n0&&s.length>o&&!s.warned){s.warned=!0;var a=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");a.name="MaxListenersExceededWarning",a.emitter=t,a.type=e,a.count=s.length,rt(a)}return t}d.prototype.addListener=function(e,r){return xe(this,e,r,!1)};d.prototype.on=d.prototype.addListener;d.prototype.prependListener=function(e,r){return xe(this,e,r,!0)};function nt(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function Le(t,e,r){var n={fired:!1,wrapFn:void 0,target:t,type:e,listener:r},o=nt.bind(n);return o.listener=r,n.wrapFn=o,o}d.prototype.once=function(e,r){return $(r),this.on(e,Le(this,e,r)),this};d.prototype.prependOnceListener=function(e,r){return $(r),this.prependListener(e,Le(this,e,r)),this};d.prototype.removeListener=function(e,r){var n,o,i,s,a;if($(r),o=this._events,o===void 0)return this;if(n=o[e],n===void 0)return this;if(n===r||n.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete o[e],o.removeListener&&this.emit("removeListener",e,n.listener||r));else if(typeof n!="function"){for(i=-1,s=n.length-1;s>=0;s--)if(n[s]===r||n[s].listener===r){a=n[s].listener,i=s;break}if(i<0)return this;i===0?n.shift():ot(n,i),n.length===1&&(o[e]=n[0]),o.removeListener!==void 0&&this.emit("removeListener",e,a||r)}return this};d.prototype.off=d.prototype.removeListener;d.prototype.removeAllListeners=function(e){var r,n,o;if(n=this._events,n===void 0)return this;if(n.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):n[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete n[e]),this;if(arguments.length===0){var i=Object.keys(n),s;for(o=0;o=0;o--)this.removeListener(e,r[o]);return this};function be(t,e,r){var n=t._events;if(n===void 0)return[];var o=n[e];return o===void 0?[]:typeof o=="function"?r?[o.listener||o]:[o]:r?it(o):De(o,o.length)}d.prototype.listeners=function(e){return be(this,e,!0)};d.prototype.rawListeners=function(e){return be(this,e,!1)};d.listenerCount=function(t,e){return typeof t.listenerCount=="function"?t.listenerCount(e):ke.call(t,e)};d.prototype.listenerCount=ke;function ke(t){var e=this._events;if(e!==void 0){var r=e[t];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}d.prototype.eventNames=function(){return this._eventsCount>0?q(this._events):[]};function De(t,e){for(var r=new Array(e),n=0;n>2]+this._charset[(n[i]&3)<<4|n[i+1]>>4]+this._charset[(n[i+1]&15)<<2|n[i+2]>>6]+this._charset[n[i+2]&63];return r%3==2?(o=o.substring(0,o.length-1),this._noPadding||(o+="=")):r%3==1&&(o=o.substring(0,o.length-2),this._noPadding||(o+="==")),o}Decode(e){if(e=(e||"").replace(/[\s]/g,""),!e)return new ArrayBuffer(0);if(!this._valid.test(e))throw Error("Invalid base64 input sequence");let r=Math.floor(e.length*.75);e[e.length-2]=="="?r-=2:e[e.length-1]=="="&&r--;let n=new Uint8Array(r),o,i,s,a,f=0,u=0;for(;f>4,n[f++]=(i&15)<<4|s>>2,n[f++]=(s&3)<<6|a;return n.buffer}};var We=new C("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/");function R(t){return We.Encode(t)}var Je=new C("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",!0);function X(t){return Je.Decode(t)}var Ke={withStackTrace:!1},se=(t,e,r=Ke)=>{let n=e.isOk()?{type:"Ok",value:e.value}:{type:"Err",value:e.error},o=r.withStackTrace?new Error().stack:void 0;return{data:n,message:t,stack:o}};function S(t,e,r,n){function o(i){return i instanceof r?i:new r(function(s){s(i)})}return new(r||(r=Promise))(function(i,s){function a(l){try{u(n.next(l))}catch(h){s(h)}}function f(l){try{u(n.throw(l))}catch(h){s(h)}}function u(l){l.done?i(l.value):o(l.value).then(a,f)}u((n=n.apply(t,[])).next())})}function ie(t){var e=typeof Symbol=="function"&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&typeof t.length=="number")return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function k(t){return this instanceof k?(this.v=t,this):new k(t)}function ze(t,e,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=r.apply(t,e||[]),o,i=[];return o={},s("next"),s("throw"),s("return"),o[Symbol.asyncIterator]=function(){return this},o;function s(p){n[p]&&(o[p]=function(m){return new Promise(function(y,O){i.push([p,m,y,O])>1||a(p,m)})})}function a(p,m){try{f(n[p](m))}catch(y){h(i[0][3],y)}}function f(p){p.value instanceof k?Promise.resolve(p.value.v).then(u,l):h(i[0][2],p)}function u(p){a("next",p)}function l(p){a("throw",p)}function h(p,m){p(m),i.shift(),i.length&&a(i[0][0],i[0][1])}}function He(t){var e,r;return e={},n("next"),n("throw",function(o){throw o}),n("return"),e[Symbol.iterator]=function(){return this},e;function n(o,i){e[o]=t[o]?function(s){return(r=!r)?{value:k(t[o](s)),done:o==="return"}:i?i(s):s}:i}}function qe(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof ie=="function"?ie(t):t[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(i){r[i]=t[i]&&function(s){return new Promise(function(a,f){s=t[i](s),o(a,f,s.done,s.value)})}}function o(i,s,a,f){Promise.resolve(f).then(function(u){i({value:u,done:a})},s)}}var v=class t{constructor(e){this._promise=e}static fromSafePromise(e){let r=e.then(n=>new w(n));return new t(r)}static fromPromise(e,r){let n=e.then(o=>new w(o)).catch(o=>new E(r(o)));return new t(n)}static fromThrowable(e,r){return(...n)=>new t(S(this,void 0,void 0,function*(){try{return new w(yield e(...n))}catch(o){return new E(r?r(o):o)}}))}static combine(e){return $e(e)}static combineWithAllErrors(e){return Ye(e)}map(e){return new t(this._promise.then(r=>S(this,void 0,void 0,function*(){return r.isErr()?new E(r.error):new w(yield e(r.value))})))}andThrough(e){return new t(this._promise.then(r=>S(this,void 0,void 0,function*(){if(r.isErr())return new E(r.error);let n=yield e(r.value);return n.isErr()?new E(n.error):new w(r.value)})))}andTee(e){return new t(this._promise.then(r=>S(this,void 0,void 0,function*(){if(r.isErr())return new E(r.error);try{yield e(r.value)}catch{}return new w(r.value)})))}mapErr(e){return new t(this._promise.then(r=>S(this,void 0,void 0,function*(){return r.isOk()?new w(r.value):new E(yield e(r.error))})))}andThen(e){return new t(this._promise.then(r=>{if(r.isErr())return new E(r.error);let n=e(r.value);return n instanceof t?n._promise:n}))}orElse(e){return new t(this._promise.then(r=>S(this,void 0,void 0,function*(){return r.isErr()?e(r.error):new w(r.value)})))}match(e,r){return this._promise.then(n=>n.match(e,r))}unwrapOr(e){return this._promise.then(r=>r.unwrapOr(e))}safeUnwrap(){return ze(this,arguments,function*(){return yield k(yield k(yield*He(qe(yield k(this._promise.then(r=>r.safeUnwrap()))))))})}then(e,r){return this._promise.then(e,r)}},J=t=>new v(Promise.resolve(new w(t))),D=t=>new v(Promise.resolve(new E(t))),Et=v.fromPromise,At=v.fromSafePromise,xt=v.fromThrowable,ce=t=>{let e=b([]);for(let r of t)if(r.isErr()){e=A(r.error);break}else e.map(n=>n.push(r.value));return e},$e=t=>v.fromSafePromise(Promise.all(t)).andThen(ce),ae=t=>{let e=b([]);for(let r of t)r.isErr()&&e.isErr()?e.error.push(r.error):r.isErr()&&e.isOk()?e=A([r.error]):r.isOk()&&e.isOk()&&e.value.push(r.value);return e},Ye=t=>v.fromSafePromise(Promise.all(t)).andThen(ae),V;(function(t){function e(o,i){return(...s)=>{try{let a=o(...s);return b(a)}catch(a){return A(i?i(a):a)}}}t.fromThrowable=e;function r(o){return ce(o)}t.combine=r;function n(o){return ae(o)}t.combineWithAllErrors=n})(V||(V={}));var b=t=>new w(t);function A(t){return new E(t)}var w=class{constructor(e){this.value=e}isOk(){return!0}isErr(){return!this.isOk()}map(e){return b(e(this.value))}mapErr(e){return b(this.value)}andThen(e){return e(this.value)}andThrough(e){return e(this.value).map(r=>this.value)}andTee(e){try{e(this.value)}catch{}return b(this.value)}orElse(e){return b(this.value)}asyncAndThen(e){return e(this.value)}asyncAndThrough(e){return e(this.value).map(()=>this.value)}asyncMap(e){return v.fromSafePromise(e(this.value))}unwrapOr(e){return this.value}match(e,r){return e(this.value)}safeUnwrap(){let e=this.value;return function*(){return e}()}_unsafeUnwrap(e){return this.value}_unsafeUnwrapErr(e){throw se("Called `_unsafeUnwrapErr` on an Ok",this,e)}},E=class{constructor(e){this.error=e}isOk(){return!1}isErr(){return!this.isOk()}map(e){return A(this.error)}mapErr(e){return A(e(this.error))}andThrough(e){return A(this.error)}andTee(e){return A(this.error)}andThen(e){return A(this.error)}orElse(e){return e(this.error)}asyncAndThen(e){return D(this.error)}asyncAndThrough(e){return D(this.error)}asyncMap(e){return D(this.error)}unwrapOr(e){return e}match(e,r){return r(this.error)}safeUnwrap(){let e=this.error;return function*(){throw yield A(e),new Error("Do not use this generator out of `safeTry`")}()}_unsafeUnwrap(e){throw se("Called `_unsafeUnwrap` on an Err",this,e)}_unsafeUnwrapErr(e){return this.error}},Lt=V.fromThrowable;var de=ne(le());var M=class extends Error{constructor(r,n={}){let{cause:o,context:i}=n;super(r,{cause:o});L(this,"context");this.name=this.constructor.name,this.context=i}};var x=class extends M{};var H=class extends x{constructor(){super(...arguments);L(this,"message","Unable to encrypt the provided data")}};var _=t=>{if(t instanceof Error)return t;let e="[Unable to stringify the thrown value]";try{e=JSON.stringify(t)}catch{}return new Error(e)};var Xe=()=>typeof Deno<"u";var B=t=>Xe()?new URL(`./worker/${t}.ts`,new URL(".",import.meta.url).href):new URL(import.meta.resolve(`./${t==="main"?`worker/${t}`:t}.js`));var me=(t,e)=>{try{let r=de.default.encrypt(t,R(e));return J({algo:0,data:r,iv:JSON.parse(r).iv})}catch(r){return D(new H(void 0,{cause:_(r)}))}};var ye=(t,e)=>Qe(t).andThen(r=>{let n=crypto.getRandomValues(new Uint8Array(12));return v.fromPromise(crypto.subtle.encrypt({name:"AES-GCM",iv:n},r,e),o=>_(o)).andThen(o=>J({algo:1,data:R(o),iv:n}))}),Qe=t=>v.fromPromise(crypto.subtle.importKey("raw",X(t),{name:"AES-GCM"},!1,["encrypt","decrypt"]),e=>new x("Unable to import cryptography key",{cause:_(e)}));var ge=(t,e,r)=>{let n;return r===0?n=me(t,e):(typeof e=="string"&&(e=new TextEncoder().encode(e).buffer),n=ye(t,e)),n};var Se=ne(Oe());var te=new Se.default,g,Ce=!1;self.onmessage=t=>{ft(t),Ce||(Ce=!0,te.once("OPERATION_FAILED",()=>{g&&g.terminate()}))};var ft=(t,e)=>{let{action:r}=t.data;if(r===5||r===8)g.postMessage(t.data);else{switch(r){case 2:g=new Worker(B("cancel"),{type:"module"}),g.postMessage(t.data);break;case 3:g=new Worker(B("download"),{type:"module"}),g.postMessage(t.data);break;case 4:g=new Worker(B("infos"),{type:"module"}),g.postMessage(t.data);break;case 7:g=g||new Worker(B("remove"),{type:"module"}),g.postMessage(t.data);break;case 9:g=g||new Worker(B("upload"),{type:"module"}),g.postMessage(t.data);break;default:console.error("Action not found")}g.onmessage=n=>{e&&e(n),self.postMessage(n.data)},g.onerror=n=>{console.error(`Error: ${n.message}`)}}},Pe=()=>{te.once("SOCKET_OPENED",()=>{self.postMessage({event:"SOCKET_OPENED"})}),te.once("OPERATION_FAILED",t=>{self.postMessage({event:"OPERATION_FAILED",error:t})})};var Me=!1;self.onmessage=t=>{Me||(Pe(),Me=!0);let{lufiFile:e,chunk:r,algo:n}=t.data.args;r&&typeof n<"u"?e.uploadStatus!==2?ge(e.keys.client,r.buffer,n).map(o=>{self.postMessage({encryptedData:o,chunkIndex:r.index})}).mapErr(o=>{self.postMessage({error:o})}):self.postMessage({error:"File upload already failed"}):self.postMessage({error:_("Buffer cannot be undefined")})}; diff --git a/themes/default/public/js/worker/infos.js b/themes/default/public/js/worker/infos.js index 55697ea..f22af70 100644 --- a/themes/default/public/js/worker/infos.js +++ b/themes/default/public/js/worker/infos.js @@ -1,2108 +1 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __defNormalProp = (obj3, key, value) => key in obj3 ? __defProp(obj3, key, { enumerable: true, configurable: true, writable: true, value }) : obj3[key] = value; -var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { - get: (a, b) => (typeof require !== "undefined" ? require : a)[b] -}) : x)(function(x) { - if (typeof require !== "undefined") return require.apply(this, arguments); - throw Error('Dynamic require of "' + x + '" is not supported'); -}); -var __commonJS = (cb, mod) => function __require2() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __publicField = (obj3, key, value) => __defNormalProp(obj3, typeof key !== "symbol" ? key + "" : key, value); - -// node_modules/.deno/events@3.3.0/node_modules/events/events.js -var require_events = __commonJS({ - "node_modules/.deno/events@3.3.0/node_modules/events/events.js"(exports, module) { - "use strict"; - var R = typeof Reflect === "object" ? Reflect : null; - var ReflectApply = R && typeof R.apply === "function" ? R.apply : function ReflectApply2(target, receiver, args) { - return Function.prototype.apply.call(target, receiver, args); - }; - var ReflectOwnKeys; - if (R && typeof R.ownKeys === "function") { - ReflectOwnKeys = R.ownKeys; - } else if (Object.getOwnPropertySymbols) { - ReflectOwnKeys = function ReflectOwnKeys2(target) { - return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target)); - }; - } else { - ReflectOwnKeys = function ReflectOwnKeys2(target) { - return Object.getOwnPropertyNames(target); - }; - } - function ProcessEmitWarning(warning) { - if (console && console.warn) console.warn(warning); - } - var NumberIsNaN = Number.isNaN || function NumberIsNaN2(value) { - return value !== value; - }; - function EventEmitter2() { - EventEmitter2.init.call(this); - } - module.exports = EventEmitter2; - module.exports.once = once; - EventEmitter2.EventEmitter = EventEmitter2; - EventEmitter2.prototype._events = void 0; - EventEmitter2.prototype._eventsCount = 0; - EventEmitter2.prototype._maxListeners = void 0; - var defaultMaxListeners = 10; - function checkListener(listener) { - if (typeof listener !== "function") { - throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); - } - } - Object.defineProperty(EventEmitter2, "defaultMaxListeners", { - enumerable: true, - get: function() { - return defaultMaxListeners; - }, - set: function(arg) { - if (typeof arg !== "number" || arg < 0 || NumberIsNaN(arg)) { - throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + "."); - } - defaultMaxListeners = arg; - } - }); - EventEmitter2.init = function() { - if (this._events === void 0 || this._events === Object.getPrototypeOf(this)._events) { - this._events = /* @__PURE__ */ Object.create(null); - this._eventsCount = 0; - } - this._maxListeners = this._maxListeners || void 0; - }; - EventEmitter2.prototype.setMaxListeners = function setMaxListeners(n) { - if (typeof n !== "number" || n < 0 || NumberIsNaN(n)) { - throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + "."); - } - this._maxListeners = n; - return this; - }; - function _getMaxListeners(that) { - if (that._maxListeners === void 0) - return EventEmitter2.defaultMaxListeners; - return that._maxListeners; - } - EventEmitter2.prototype.getMaxListeners = function getMaxListeners() { - return _getMaxListeners(this); - }; - EventEmitter2.prototype.emit = function emit(type) { - var args = []; - for (var i = 1; i < arguments.length; i++) args.push(arguments[i]); - var doError = type === "error"; - var events2 = this._events; - if (events2 !== void 0) - doError = doError && events2.error === void 0; - else if (!doError) - return false; - if (doError) { - var er; - if (args.length > 0) - er = args[0]; - if (er instanceof Error) { - throw er; - } - var err2 = new Error("Unhandled error." + (er ? " (" + er.message + ")" : "")); - err2.context = er; - throw err2; - } - var handler = events2[type]; - if (handler === void 0) - return false; - if (typeof handler === "function") { - ReflectApply(handler, this, args); - } else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) - ReflectApply(listeners[i], this, args); - } - return true; - }; - function _addListener(target, type, listener, prepend) { - var m; - var events2; - var existing; - checkListener(listener); - events2 = target._events; - if (events2 === void 0) { - events2 = target._events = /* @__PURE__ */ Object.create(null); - target._eventsCount = 0; - } else { - if (events2.newListener !== void 0) { - target.emit( - "newListener", - type, - listener.listener ? listener.listener : listener - ); - events2 = target._events; - } - existing = events2[type]; - } - if (existing === void 0) { - existing = events2[type] = listener; - ++target._eventsCount; - } else { - if (typeof existing === "function") { - existing = events2[type] = prepend ? [listener, existing] : [existing, listener]; - } else if (prepend) { - existing.unshift(listener); - } else { - existing.push(listener); - } - m = _getMaxListeners(target); - if (m > 0 && existing.length > m && !existing.warned) { - existing.warned = true; - var w = new Error("Possible EventEmitter memory leak detected. " + existing.length + " " + String(type) + " listeners added. Use emitter.setMaxListeners() to increase limit"); - w.name = "MaxListenersExceededWarning"; - w.emitter = target; - w.type = type; - w.count = existing.length; - ProcessEmitWarning(w); - } - } - return target; - } - EventEmitter2.prototype.addListener = function addListener(type, listener) { - return _addListener(this, type, listener, false); - }; - EventEmitter2.prototype.on = EventEmitter2.prototype.addListener; - EventEmitter2.prototype.prependListener = function prependListener(type, listener) { - return _addListener(this, type, listener, true); - }; - function onceWrapper() { - if (!this.fired) { - this.target.removeListener(this.type, this.wrapFn); - this.fired = true; - if (arguments.length === 0) - return this.listener.call(this.target); - return this.listener.apply(this.target, arguments); - } - } - function _onceWrap(target, type, listener) { - var state = { fired: false, wrapFn: void 0, target, type, listener }; - var wrapped = onceWrapper.bind(state); - wrapped.listener = listener; - state.wrapFn = wrapped; - return wrapped; - } - EventEmitter2.prototype.once = function once2(type, listener) { - checkListener(listener); - this.on(type, _onceWrap(this, type, listener)); - return this; - }; - EventEmitter2.prototype.prependOnceListener = function prependOnceListener(type, listener) { - checkListener(listener); - this.prependListener(type, _onceWrap(this, type, listener)); - return this; - }; - EventEmitter2.prototype.removeListener = function removeListener(type, listener) { - var list, events2, position, i, originalListener; - checkListener(listener); - events2 = this._events; - if (events2 === void 0) - return this; - list = events2[type]; - if (list === void 0) - return this; - if (list === listener || list.listener === listener) { - if (--this._eventsCount === 0) - this._events = /* @__PURE__ */ Object.create(null); - else { - delete events2[type]; - if (events2.removeListener) - this.emit("removeListener", type, list.listener || listener); - } - } else if (typeof list !== "function") { - position = -1; - for (i = list.length - 1; i >= 0; i--) { - if (list[i] === listener || list[i].listener === listener) { - originalListener = list[i].listener; - position = i; - break; - } - } - if (position < 0) - return this; - if (position === 0) - list.shift(); - else { - spliceOne(list, position); - } - if (list.length === 1) - events2[type] = list[0]; - if (events2.removeListener !== void 0) - this.emit("removeListener", type, originalListener || listener); - } - return this; - }; - EventEmitter2.prototype.off = EventEmitter2.prototype.removeListener; - EventEmitter2.prototype.removeAllListeners = function removeAllListeners(type) { - var listeners, events2, i; - events2 = this._events; - if (events2 === void 0) - return this; - if (events2.removeListener === void 0) { - if (arguments.length === 0) { - this._events = /* @__PURE__ */ Object.create(null); - this._eventsCount = 0; - } else if (events2[type] !== void 0) { - if (--this._eventsCount === 0) - this._events = /* @__PURE__ */ Object.create(null); - else - delete events2[type]; - } - return this; - } - if (arguments.length === 0) { - var keys = Object.keys(events2); - var key; - for (i = 0; i < keys.length; ++i) { - key = keys[i]; - if (key === "removeListener") continue; - this.removeAllListeners(key); - } - this.removeAllListeners("removeListener"); - this._events = /* @__PURE__ */ Object.create(null); - this._eventsCount = 0; - return this; - } - listeners = events2[type]; - if (typeof listeners === "function") { - this.removeListener(type, listeners); - } else if (listeners !== void 0) { - for (i = listeners.length - 1; i >= 0; i--) { - this.removeListener(type, listeners[i]); - } - } - return this; - }; - function _listeners(target, type, unwrap) { - var events2 = target._events; - if (events2 === void 0) - return []; - var evlistener = events2[type]; - if (evlistener === void 0) - return []; - if (typeof evlistener === "function") - return unwrap ? [evlistener.listener || evlistener] : [evlistener]; - return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); - } - EventEmitter2.prototype.listeners = function listeners(type) { - return _listeners(this, type, true); - }; - EventEmitter2.prototype.rawListeners = function rawListeners(type) { - return _listeners(this, type, false); - }; - EventEmitter2.listenerCount = function(emitter, type) { - if (typeof emitter.listenerCount === "function") { - return emitter.listenerCount(type); - } else { - return listenerCount.call(emitter, type); - } - }; - EventEmitter2.prototype.listenerCount = listenerCount; - function listenerCount(type) { - var events2 = this._events; - if (events2 !== void 0) { - var evlistener = events2[type]; - if (typeof evlistener === "function") { - return 1; - } else if (evlistener !== void 0) { - return evlistener.length; - } - } - return 0; - } - EventEmitter2.prototype.eventNames = function eventNames() { - return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : []; - }; - function arrayClone(arr, n) { - var copy = new Array(n); - for (var i = 0; i < n; ++i) - copy[i] = arr[i]; - return copy; - } - function spliceOne(list, index) { - for (; index + 1 < list.length; index++) - list[index] = list[index + 1]; - list.pop(); - } - function unwrapListeners(arr) { - var ret = new Array(arr.length); - for (var i = 0; i < ret.length; ++i) { - ret[i] = arr[i].listener || arr[i]; - } - return ret; - } - function once(emitter, name) { - return new Promise(function(resolve, reject) { - function errorListener(err2) { - emitter.removeListener(name, resolver); - reject(err2); - } - function resolver() { - if (typeof emitter.removeListener === "function") { - emitter.removeListener("error", errorListener); - } - resolve([].slice.call(arguments)); - } - ; - eventTargetAgnosticAddListener(emitter, name, resolver, { once: true }); - if (name !== "error") { - addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true }); - } - }); - } - function addErrorHandlerIfEventEmitter(emitter, handler, flags) { - if (typeof emitter.on === "function") { - eventTargetAgnosticAddListener(emitter, "error", handler, flags); - } - } - function eventTargetAgnosticAddListener(emitter, name, listener, flags) { - if (typeof emitter.on === "function") { - if (flags.once) { - emitter.once(name, listener); - } else { - emitter.on(name, listener); - } - } else if (typeof emitter.addEventListener === "function") { - emitter.addEventListener(name, function wrapListener(arg) { - if (flags.once) { - emitter.removeEventListener(name, wrapListener); - } - listener(arg); - }); - } else { - throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof emitter); - } - } - } -}); - -// node_modules/.deno/sjcl@1.0.8/node_modules/sjcl/sjcl.js -var require_sjcl = __commonJS({ - "node_modules/.deno/sjcl@1.0.8/node_modules/sjcl/sjcl.js"(exports, module) { - "use strict"; - var sjcl2 = { cipher: {}, hash: {}, keyexchange: {}, mode: {}, misc: {}, codec: {}, exception: { corrupt: function(a) { - this.toString = function() { - return "CORRUPT: " + this.message; - }; - this.message = a; - }, invalid: function(a) { - this.toString = function() { - return "INVALID: " + this.message; - }; - this.message = a; - }, bug: function(a) { - this.toString = function() { - return "BUG: " + this.message; - }; - this.message = a; - }, notReady: function(a) { - this.toString = function() { - return "NOT READY: " + this.message; - }; - this.message = a; - } } }; - sjcl2.cipher.aes = function(a) { - this.s[0][0][0] || this.O(); - var b, c, d, e, f = this.s[0][4], g = this.s[1]; - b = a.length; - var h = 1; - if (4 !== b && 6 !== b && 8 !== b) throw new sjcl2.exception.invalid("invalid aes key size"); - this.b = [d = a.slice(0), e = []]; - for (a = b; a < 4 * b + 28; a++) { - c = d[a - 1]; - if (0 === a % b || 8 === b && 4 === a % b) c = f[c >>> 24] << 24 ^ f[c >> 16 & 255] << 16 ^ f[c >> 8 & 255] << 8 ^ f[c & 255], 0 === a % b && (c = c << 8 ^ c >>> 24 ^ h << 24, h = h << 1 ^ 283 * (h >> 7)); - d[a] = d[a - b] ^ c; - } - for (b = 0; a; b++, a--) c = d[b & 3 ? a : a - 4], e[b] = 4 >= a || 4 > b ? c : g[0][f[c >>> 24]] ^ g[1][f[c >> 16 & 255]] ^ g[2][f[c >> 8 & 255]] ^ g[3][f[c & 255]]; - }; - sjcl2.cipher.aes.prototype = { encrypt: function(a) { - return t(this, a, 0); - }, decrypt: function(a) { - return t(this, a, 1); - }, s: [[[], [], [], [], []], [[], [], [], [], []]], O: function() { - var a = this.s[0], b = this.s[1], c = a[4], d = b[4], e, f, g, h = [], k = [], l, n, m, p; - for (e = 0; 256 > e; e++) k[(h[e] = e << 1 ^ 283 * (e >> 7)) ^ e] = e; - for (f = g = 0; !c[f]; f ^= l || 1, g = k[g] || 1) for (m = g ^ g << 1 ^ g << 2 ^ g << 3 ^ g << 4, m = m >> 8 ^ m & 255 ^ 99, c[f] = m, d[m] = f, n = h[e = h[l = h[f]]], p = 16843009 * n ^ 65537 * e ^ 257 * l ^ 16843008 * f, n = 257 * h[m] ^ 16843008 * m, e = 0; 4 > e; e++) a[e][f] = n = n << 24 ^ n >>> 8, b[e][m] = p = p << 24 ^ p >>> 8; - for (e = 0; 5 > e; e++) a[e] = a[e].slice(0), b[e] = b[e].slice(0); - } }; - function t(a, b, c) { - if (4 !== b.length) throw new sjcl2.exception.invalid("invalid aes block size"); - var d = a.b[c], e = b[0] ^ d[0], f = b[c ? 3 : 1] ^ d[1], g = b[2] ^ d[2]; - b = b[c ? 1 : 3] ^ d[3]; - var h, k, l, n = d.length / 4 - 2, m, p = 4, r = [0, 0, 0, 0]; - h = a.s[c]; - a = h[0]; - var q = h[1], v = h[2], w = h[3], x = h[4]; - for (m = 0; m < n; m++) h = a[e >>> 24] ^ q[f >> 16 & 255] ^ v[g >> 8 & 255] ^ w[b & 255] ^ d[p], k = a[f >>> 24] ^ q[g >> 16 & 255] ^ v[b >> 8 & 255] ^ w[e & 255] ^ d[p + 1], l = a[g >>> 24] ^ q[b >> 16 & 255] ^ v[e >> 8 & 255] ^ w[f & 255] ^ d[p + 2], b = a[b >>> 24] ^ q[e >> 16 & 255] ^ v[f >> 8 & 255] ^ w[g & 255] ^ d[p + 3], p += 4, e = h, f = k, g = l; - for (m = 0; 4 > m; m++) r[c ? 3 & -m : m] = x[e >>> 24] << 24 ^ x[f >> 16 & 255] << 16 ^ x[g >> 8 & 255] << 8 ^ x[b & 255] ^ d[p++], h = e, e = f, f = g, g = b, b = h; - return r; - } - sjcl2.bitArray = { bitSlice: function(a, b, c) { - a = sjcl2.bitArray.$(a.slice(b / 32), 32 - (b & 31)).slice(1); - return void 0 === c ? a : sjcl2.bitArray.clamp(a, c - b); - }, extract: function(a, b, c) { - var d = Math.floor(-b - c & 31); - return ((b + c - 1 ^ b) & -32 ? a[b / 32 | 0] << 32 - d ^ a[b / 32 + 1 | 0] >>> d : a[b / 32 | 0] >>> d) & (1 << c) - 1; - }, concat: function(a, b) { - if (0 === a.length || 0 === b.length) return a.concat(b); - var c = a[a.length - 1], d = sjcl2.bitArray.getPartial(c); - return 32 === d ? a.concat(b) : sjcl2.bitArray.$(b, d, c | 0, a.slice(0, a.length - 1)); - }, bitLength: function(a) { - var b = a.length; - return 0 === b ? 0 : 32 * (b - 1) + sjcl2.bitArray.getPartial(a[b - 1]); - }, clamp: function(a, b) { - if (32 * a.length < b) return a; - a = a.slice(0, Math.ceil(b / 32)); - var c = a.length; - b = b & 31; - 0 < c && b && (a[c - 1] = sjcl2.bitArray.partial(b, a[c - 1] & 2147483648 >> b - 1, 1)); - return a; - }, partial: function(a, b, c) { - return 32 === a ? b : (c ? b | 0 : b << 32 - a) + 1099511627776 * a; - }, getPartial: function(a) { - return Math.round(a / 1099511627776) || 32; - }, equal: function(a, b) { - if (sjcl2.bitArray.bitLength(a) !== sjcl2.bitArray.bitLength(b)) return false; - var c = 0, d; - for (d = 0; d < a.length; d++) c |= a[d] ^ b[d]; - return 0 === c; - }, $: function(a, b, c, d) { - var e; - e = 0; - for (void 0 === d && (d = []); 32 <= b; b -= 32) d.push(c), c = 0; - if (0 === b) return d.concat(a); - for (e = 0; e < a.length; e++) d.push(c | a[e] >>> b), c = a[e] << 32 - b; - e = a.length ? a[a.length - 1] : 0; - a = sjcl2.bitArray.getPartial(e); - d.push(sjcl2.bitArray.partial(b + a & 31, 32 < b + a ? c : d.pop(), 1)); - return d; - }, i: function(a, b) { - return [a[0] ^ b[0], a[1] ^ b[1], a[2] ^ b[2], a[3] ^ b[3]]; - }, byteswapM: function(a) { - var b, c; - for (b = 0; b < a.length; ++b) c = a[b], a[b] = c >>> 24 | c >>> 8 & 65280 | (c & 65280) << 8 | c << 24; - return a; - } }; - sjcl2.codec.utf8String = { fromBits: function(a) { - var b = "", c = sjcl2.bitArray.bitLength(a), d, e; - for (d = 0; d < c / 8; d++) 0 === (d & 3) && (e = a[d / 4]), b += String.fromCharCode(e >>> 8 >>> 8 >>> 8), e <<= 8; - return decodeURIComponent(escape(b)); - }, toBits: function(a) { - a = unescape(encodeURIComponent(a)); - var b = [], c, d = 0; - for (c = 0; c < a.length; c++) d = d << 8 | a.charCodeAt(c), 3 === (c & 3) && (b.push(d), d = 0); - c & 3 && b.push(sjcl2.bitArray.partial(8 * (c & 3), d)); - return b; - } }; - sjcl2.codec.hex = { fromBits: function(a) { - var b = "", c; - for (c = 0; c < a.length; c++) b += ((a[c] | 0) + 263882790666240).toString(16).substr(4); - return b.substr(0, sjcl2.bitArray.bitLength(a) / 4); - }, toBits: function(a) { - var b, c = [], d; - a = a.replace(/\s|0x/g, ""); - d = a.length; - a = a + "00000000"; - for (b = 0; b < a.length; b += 8) c.push(parseInt(a.substr(b, 8), 16) ^ 0); - return sjcl2.bitArray.clamp(c, 4 * d); - } }; - sjcl2.codec.base32 = { B: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567", X: "0123456789ABCDEFGHIJKLMNOPQRSTUV", BITS: 32, BASE: 5, REMAINING: 27, fromBits: function(a, b, c) { - var d = sjcl2.codec.base32.BASE, e = sjcl2.codec.base32.REMAINING, f = "", g = 0, h = sjcl2.codec.base32.B, k = 0, l = sjcl2.bitArray.bitLength(a); - c && (h = sjcl2.codec.base32.X); - for (c = 0; f.length * d < l; ) f += h.charAt((k ^ a[c] >>> g) >>> e), g < d ? (k = a[c] << d - g, g += e, c++) : (k <<= d, g -= d); - for (; f.length & 7 && !b; ) f += "="; - return f; - }, toBits: function(a, b) { - a = a.replace(/\s|=/g, "").toUpperCase(); - var c = sjcl2.codec.base32.BITS, d = sjcl2.codec.base32.BASE, e = sjcl2.codec.base32.REMAINING, f = [], g, h = 0, k = sjcl2.codec.base32.B, l = 0, n, m = "base32"; - b && (k = sjcl2.codec.base32.X, m = "base32hex"); - for (g = 0; g < a.length; g++) { - n = k.indexOf(a.charAt(g)); - if (0 > n) { - if (!b) try { - return sjcl2.codec.base32hex.toBits(a); - } catch (p) { - } - throw new sjcl2.exception.invalid("this isn't " + m + "!"); - } - h > e ? (h -= e, f.push(l ^ n >>> h), l = n << c - h) : (h += d, l ^= n << c - h); - } - h & 56 && f.push(sjcl2.bitArray.partial(h & 56, l, 1)); - return f; - } }; - sjcl2.codec.base32hex = { fromBits: function(a, b) { - return sjcl2.codec.base32.fromBits(a, b, 1); - }, toBits: function(a) { - return sjcl2.codec.base32.toBits(a, 1); - } }; - sjcl2.codec.base64 = { B: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", fromBits: function(a, b, c) { - var d = "", e = 0, f = sjcl2.codec.base64.B, g = 0, h = sjcl2.bitArray.bitLength(a); - c && (f = f.substr(0, 62) + "-_"); - for (c = 0; 6 * d.length < h; ) d += f.charAt((g ^ a[c] >>> e) >>> 26), 6 > e ? (g = a[c] << 6 - e, e += 26, c++) : (g <<= 6, e -= 6); - for (; d.length & 3 && !b; ) d += "="; - return d; - }, toBits: function(a, b) { - a = a.replace(/\s|=/g, ""); - var c = [], d, e = 0, f = sjcl2.codec.base64.B, g = 0, h; - b && (f = f.substr(0, 62) + "-_"); - for (d = 0; d < a.length; d++) { - h = f.indexOf(a.charAt(d)); - if (0 > h) throw new sjcl2.exception.invalid("this isn't base64!"); - 26 < e ? (e -= 26, c.push(g ^ h >>> e), g = h << 32 - e) : (e += 6, g ^= h << 32 - e); - } - e & 56 && c.push(sjcl2.bitArray.partial(e & 56, g, 1)); - return c; - } }; - sjcl2.codec.base64url = { fromBits: function(a) { - return sjcl2.codec.base64.fromBits(a, 1, 1); - }, toBits: function(a) { - return sjcl2.codec.base64.toBits(a, 1); - } }; - sjcl2.hash.sha256 = function(a) { - this.b[0] || this.O(); - a ? (this.F = a.F.slice(0), this.A = a.A.slice(0), this.l = a.l) : this.reset(); - }; - sjcl2.hash.sha256.hash = function(a) { - return new sjcl2.hash.sha256().update(a).finalize(); - }; - sjcl2.hash.sha256.prototype = { blockSize: 512, reset: function() { - this.F = this.Y.slice(0); - this.A = []; - this.l = 0; - return this; - }, update: function(a) { - "string" === typeof a && (a = sjcl2.codec.utf8String.toBits(a)); - var b, c = this.A = sjcl2.bitArray.concat(this.A, a); - b = this.l; - a = this.l = b + sjcl2.bitArray.bitLength(a); - if (9007199254740991 < a) throw new sjcl2.exception.invalid("Cannot hash more than 2^53 - 1 bits"); - if ("undefined" !== typeof Uint32Array) { - var d = new Uint32Array(c), e = 0; - for (b = 512 + b - (512 + b & 511); b <= a; b += 512) u(this, d.subarray( - 16 * e, - 16 * (e + 1) - )), e += 1; - c.splice(0, 16 * e); - } else for (b = 512 + b - (512 + b & 511); b <= a; b += 512) u(this, c.splice(0, 16)); - return this; - }, finalize: function() { - var a, b = this.A, c = this.F, b = sjcl2.bitArray.concat(b, [sjcl2.bitArray.partial(1, 1)]); - for (a = b.length + 2; a & 15; a++) b.push(0); - b.push(Math.floor(this.l / 4294967296)); - for (b.push(this.l | 0); b.length; ) u(this, b.splice(0, 16)); - this.reset(); - return c; - }, Y: [], b: [], O: function() { - function a(a2) { - return 4294967296 * (a2 - Math.floor(a2)) | 0; - } - for (var b = 0, c = 2, d, e; 64 > b; c++) { - e = true; - for (d = 2; d * d <= c; d++) if (0 === c % d) { - e = false; - break; - } - e && (8 > b && (this.Y[b] = a(Math.pow(c, 0.5))), this.b[b] = a(Math.pow(c, 1 / 3)), b++); - } - } }; - function u(a, b) { - var c, d, e, f = a.F, g = a.b, h = f[0], k = f[1], l = f[2], n = f[3], m = f[4], p = f[5], r = f[6], q = f[7]; - for (c = 0; 64 > c; c++) 16 > c ? d = b[c] : (d = b[c + 1 & 15], e = b[c + 14 & 15], d = b[c & 15] = (d >>> 7 ^ d >>> 18 ^ d >>> 3 ^ d << 25 ^ d << 14) + (e >>> 17 ^ e >>> 19 ^ e >>> 10 ^ e << 15 ^ e << 13) + b[c & 15] + b[c + 9 & 15] | 0), d = d + q + (m >>> 6 ^ m >>> 11 ^ m >>> 25 ^ m << 26 ^ m << 21 ^ m << 7) + (r ^ m & (p ^ r)) + g[c], q = r, r = p, p = m, m = n + d | 0, n = l, l = k, k = h, h = d + (k & l ^ n & (k ^ l)) + (k >>> 2 ^ k >>> 13 ^ k >>> 22 ^ k << 30 ^ k << 19 ^ k << 10) | 0; - f[0] = f[0] + h | 0; - f[1] = f[1] + k | 0; - f[2] = f[2] + l | 0; - f[3] = f[3] + n | 0; - f[4] = f[4] + m | 0; - f[5] = f[5] + p | 0; - f[6] = f[6] + r | 0; - f[7] = f[7] + q | 0; - } - sjcl2.mode.ccm = { name: "ccm", G: [], listenProgress: function(a) { - sjcl2.mode.ccm.G.push(a); - }, unListenProgress: function(a) { - a = sjcl2.mode.ccm.G.indexOf(a); - -1 < a && sjcl2.mode.ccm.G.splice(a, 1); - }, fa: function(a) { - var b = sjcl2.mode.ccm.G.slice(), c; - for (c = 0; c < b.length; c += 1) b[c](a); - }, encrypt: function(a, b, c, d, e) { - var f, g = b.slice(0), h = sjcl2.bitArray, k = h.bitLength(c) / 8, l = h.bitLength(g) / 8; - e = e || 64; - d = d || []; - if (7 > k) throw new sjcl2.exception.invalid("ccm: iv must be at least 7 bytes"); - for (f = 2; 4 > f && l >>> 8 * f; f++) ; - f < 15 - k && (f = 15 - k); - c = h.clamp( - c, - 8 * (15 - f) - ); - b = sjcl2.mode.ccm.V(a, b, c, d, e, f); - g = sjcl2.mode.ccm.C(a, g, c, b, e, f); - return h.concat(g.data, g.tag); - }, decrypt: function(a, b, c, d, e) { - e = e || 64; - d = d || []; - var f = sjcl2.bitArray, g = f.bitLength(c) / 8, h = f.bitLength(b), k = f.clamp(b, h - e), l = f.bitSlice(b, h - e), h = (h - e) / 8; - if (7 > g) throw new sjcl2.exception.invalid("ccm: iv must be at least 7 bytes"); - for (b = 2; 4 > b && h >>> 8 * b; b++) ; - b < 15 - g && (b = 15 - g); - c = f.clamp(c, 8 * (15 - b)); - k = sjcl2.mode.ccm.C(a, k, c, l, e, b); - a = sjcl2.mode.ccm.V(a, k.data, c, d, e, b); - if (!f.equal(k.tag, a)) throw new sjcl2.exception.corrupt("ccm: tag doesn't match"); - return k.data; - }, na: function(a, b, c, d, e, f) { - var g = [], h = sjcl2.bitArray, k = h.i; - d = [h.partial(8, (b.length ? 64 : 0) | d - 2 << 2 | f - 1)]; - d = h.concat(d, c); - d[3] |= e; - d = a.encrypt(d); - if (b.length) for (c = h.bitLength(b) / 8, 65279 >= c ? g = [h.partial(16, c)] : 4294967295 >= c && (g = h.concat([h.partial(16, 65534)], [c])), g = h.concat(g, b), b = 0; b < g.length; b += 4) d = a.encrypt(k(d, g.slice(b, b + 4).concat([0, 0, 0]))); - return d; - }, V: function(a, b, c, d, e, f) { - var g = sjcl2.bitArray, h = g.i; - e /= 8; - if (e % 2 || 4 > e || 16 < e) throw new sjcl2.exception.invalid("ccm: invalid tag length"); - if (4294967295 < d.length || 4294967295 < b.length) throw new sjcl2.exception.bug("ccm: can't deal with 4GiB or more data"); - c = sjcl2.mode.ccm.na(a, d, c, e, g.bitLength(b) / 8, f); - for (d = 0; d < b.length; d += 4) c = a.encrypt(h(c, b.slice(d, d + 4).concat([0, 0, 0]))); - return g.clamp(c, 8 * e); - }, C: function(a, b, c, d, e, f) { - var g, h = sjcl2.bitArray; - g = h.i; - var k = b.length, l = h.bitLength(b), n = k / 50, m = n; - c = h.concat([h.partial(8, f - 1)], c).concat([0, 0, 0]).slice(0, 4); - d = h.bitSlice(g(d, a.encrypt(c)), 0, e); - if (!k) return { tag: d, data: [] }; - for (g = 0; g < k; g += 4) g > n && (sjcl2.mode.ccm.fa(g / k), n += m), c[3]++, e = a.encrypt(c), b[g] ^= e[0], b[g + 1] ^= e[1], b[g + 2] ^= e[2], b[g + 3] ^= e[3]; - return { tag: d, data: h.clamp(b, l) }; - } }; - sjcl2.mode.ocb2 = { name: "ocb2", encrypt: function(a, b, c, d, e, f) { - if (128 !== sjcl2.bitArray.bitLength(c)) throw new sjcl2.exception.invalid("ocb iv must be 128 bits"); - var g, h = sjcl2.mode.ocb2.S, k = sjcl2.bitArray, l = k.i, n = [0, 0, 0, 0]; - c = h(a.encrypt(c)); - var m, p = []; - d = d || []; - e = e || 64; - for (g = 0; g + 4 < b.length; g += 4) m = b.slice(g, g + 4), n = l(n, m), p = p.concat(l(c, a.encrypt(l(c, m)))), c = h(c); - m = b.slice(g); - b = k.bitLength(m); - g = a.encrypt(l(c, [0, 0, 0, b])); - m = k.clamp(l(m.concat([0, 0, 0]), g), b); - n = l(n, l(m.concat([0, 0, 0]), g)); - n = a.encrypt(l(n, l(c, h(c)))); - d.length && (n = l(n, f ? d : sjcl2.mode.ocb2.pmac(a, d))); - return p.concat(k.concat(m, k.clamp(n, e))); - }, decrypt: function(a, b, c, d, e, f) { - if (128 !== sjcl2.bitArray.bitLength(c)) throw new sjcl2.exception.invalid("ocb iv must be 128 bits"); - e = e || 64; - var g = sjcl2.mode.ocb2.S, h = sjcl2.bitArray, k = h.i, l = [0, 0, 0, 0], n = g(a.encrypt(c)), m, p, r = sjcl2.bitArray.bitLength(b) - e, q = []; - d = d || []; - for (c = 0; c + 4 < r / 32; c += 4) m = k(n, a.decrypt(k(n, b.slice(c, c + 4)))), l = k(l, m), q = q.concat(m), n = g(n); - p = r - 32 * c; - m = a.encrypt(k(n, [0, 0, 0, p])); - m = k(m, h.clamp(b.slice(c), p).concat([ - 0, - 0, - 0 - ])); - l = k(l, m); - l = a.encrypt(k(l, k(n, g(n)))); - d.length && (l = k(l, f ? d : sjcl2.mode.ocb2.pmac(a, d))); - if (!h.equal(h.clamp(l, e), h.bitSlice(b, r))) throw new sjcl2.exception.corrupt("ocb: tag doesn't match"); - return q.concat(h.clamp(m, p)); - }, pmac: function(a, b) { - var c, d = sjcl2.mode.ocb2.S, e = sjcl2.bitArray, f = e.i, g = [0, 0, 0, 0], h = a.encrypt([0, 0, 0, 0]), h = f(h, d(d(h))); - for (c = 0; c + 4 < b.length; c += 4) h = d(h), g = f(g, a.encrypt(f(h, b.slice(c, c + 4)))); - c = b.slice(c); - 128 > e.bitLength(c) && (h = f(h, d(h)), c = e.concat(c, [-2147483648, 0, 0, 0])); - g = f(g, c); - return a.encrypt(f(d(f(h, d(h))), g)); - }, S: function(a) { - return [a[0] << 1 ^ a[1] >>> 31, a[1] << 1 ^ a[2] >>> 31, a[2] << 1 ^ a[3] >>> 31, a[3] << 1 ^ 135 * (a[0] >>> 31)]; - } }; - sjcl2.mode.gcm = { name: "gcm", encrypt: function(a, b, c, d, e) { - var f = b.slice(0); - b = sjcl2.bitArray; - d = d || []; - a = sjcl2.mode.gcm.C(true, a, f, d, c, e || 128); - return b.concat(a.data, a.tag); - }, decrypt: function(a, b, c, d, e) { - var f = b.slice(0), g = sjcl2.bitArray, h = g.bitLength(f); - e = e || 128; - d = d || []; - e <= h ? (b = g.bitSlice(f, h - e), f = g.bitSlice(f, 0, h - e)) : (b = f, f = []); - a = sjcl2.mode.gcm.C(false, a, f, d, c, e); - if (!g.equal(a.tag, b)) throw new sjcl2.exception.corrupt("gcm: tag doesn't match"); - return a.data; - }, ka: function(a, b) { - var c, d, e, f, g, h = sjcl2.bitArray.i; - e = [ - 0, - 0, - 0, - 0 - ]; - f = b.slice(0); - for (c = 0; 128 > c; c++) { - (d = 0 !== (a[Math.floor(c / 32)] & 1 << 31 - c % 32)) && (e = h(e, f)); - g = 0 !== (f[3] & 1); - for (d = 3; 0 < d; d--) f[d] = f[d] >>> 1 | (f[d - 1] & 1) << 31; - f[0] >>>= 1; - g && (f[0] ^= -520093696); - } - return e; - }, j: function(a, b, c) { - var d, e = c.length; - b = b.slice(0); - for (d = 0; d < e; d += 4) b[0] ^= 4294967295 & c[d], b[1] ^= 4294967295 & c[d + 1], b[2] ^= 4294967295 & c[d + 2], b[3] ^= 4294967295 & c[d + 3], b = sjcl2.mode.gcm.ka(b, a); - return b; - }, C: function(a, b, c, d, e, f) { - var g, h, k, l, n, m, p, r, q = sjcl2.bitArray; - m = c.length; - p = q.bitLength(c); - r = q.bitLength(d); - h = q.bitLength(e); - g = b.encrypt([0, 0, 0, 0]); - 96 === h ? (e = e.slice(0), e = q.concat(e, [1])) : (e = sjcl2.mode.gcm.j(g, [0, 0, 0, 0], e), e = sjcl2.mode.gcm.j(g, e, [0, 0, Math.floor(h / 4294967296), h & 4294967295])); - h = sjcl2.mode.gcm.j(g, [0, 0, 0, 0], d); - n = e.slice(0); - d = h.slice(0); - a || (d = sjcl2.mode.gcm.j(g, h, c)); - for (l = 0; l < m; l += 4) n[3]++, k = b.encrypt(n), c[l] ^= k[0], c[l + 1] ^= k[1], c[l + 2] ^= k[2], c[l + 3] ^= k[3]; - c = q.clamp(c, p); - a && (d = sjcl2.mode.gcm.j(g, h, c)); - a = [Math.floor(r / 4294967296), r & 4294967295, Math.floor(p / 4294967296), p & 4294967295]; - d = sjcl2.mode.gcm.j(g, d, a); - k = b.encrypt(e); - d[0] ^= k[0]; - d[1] ^= k[1]; - d[2] ^= k[2]; - d[3] ^= k[3]; - return { tag: q.bitSlice(d, 0, f), data: c }; - } }; - sjcl2.misc.hmac = function(a, b) { - this.W = b = b || sjcl2.hash.sha256; - var c = [[], []], d, e = b.prototype.blockSize / 32; - this.w = [new b(), new b()]; - a.length > e && (a = b.hash(a)); - for (d = 0; d < e; d++) c[0][d] = a[d] ^ 909522486, c[1][d] = a[d] ^ 1549556828; - this.w[0].update(c[0]); - this.w[1].update(c[1]); - this.R = new b(this.w[0]); - }; - sjcl2.misc.hmac.prototype.encrypt = sjcl2.misc.hmac.prototype.mac = function(a) { - if (this.aa) throw new sjcl2.exception.invalid("encrypt on already updated hmac called!"); - this.update(a); - return this.digest(a); - }; - sjcl2.misc.hmac.prototype.reset = function() { - this.R = new this.W(this.w[0]); - this.aa = false; - }; - sjcl2.misc.hmac.prototype.update = function(a) { - this.aa = true; - this.R.update(a); - }; - sjcl2.misc.hmac.prototype.digest = function() { - var a = this.R.finalize(), a = new this.W(this.w[1]).update(a).finalize(); - this.reset(); - return a; - }; - sjcl2.misc.pbkdf2 = function(a, b, c, d, e) { - c = c || 1e4; - if (0 > d || 0 > c) throw new sjcl2.exception.invalid("invalid params to pbkdf2"); - "string" === typeof a && (a = sjcl2.codec.utf8String.toBits(a)); - "string" === typeof b && (b = sjcl2.codec.utf8String.toBits(b)); - e = e || sjcl2.misc.hmac; - a = new e(a); - var f, g, h, k, l = [], n = sjcl2.bitArray; - for (k = 1; 32 * l.length < (d || 1); k++) { - e = f = a.encrypt(n.concat(b, [k])); - for (g = 1; g < c; g++) for (f = a.encrypt(f), h = 0; h < f.length; h++) e[h] ^= f[h]; - l = l.concat(e); - } - d && (l = n.clamp(l, d)); - return l; - }; - sjcl2.prng = function(a) { - this.c = [new sjcl2.hash.sha256()]; - this.m = [0]; - this.P = 0; - this.H = {}; - this.N = 0; - this.U = {}; - this.Z = this.f = this.o = this.ha = 0; - this.b = [0, 0, 0, 0, 0, 0, 0, 0]; - this.h = [0, 0, 0, 0]; - this.L = void 0; - this.M = a; - this.D = false; - this.K = { progress: {}, seeded: {} }; - this.u = this.ga = 0; - this.I = 1; - this.J = 2; - this.ca = 65536; - this.T = [0, 48, 64, 96, 128, 192, 256, 384, 512, 768, 1024]; - this.da = 3e4; - this.ba = 80; - }; - sjcl2.prng.prototype = { - randomWords: function(a, b) { - var c = [], d; - d = this.isReady(b); - var e; - if (d === this.u) throw new sjcl2.exception.notReady("generator isn't seeded"); - if (d & this.J) { - d = !(d & this.I); - e = []; - var f = 0, g; - this.Z = e[0] = (/* @__PURE__ */ new Date()).valueOf() + this.da; - for (g = 0; 16 > g; g++) e.push(4294967296 * Math.random() | 0); - for (g = 0; g < this.c.length && (e = e.concat(this.c[g].finalize()), f += this.m[g], this.m[g] = 0, d || !(this.P & 1 << g)); g++) ; - this.P >= 1 << this.c.length && (this.c.push(new sjcl2.hash.sha256()), this.m.push(0)); - this.f -= f; - f > this.o && (this.o = f); - this.P++; - this.b = sjcl2.hash.sha256.hash(this.b.concat(e)); - this.L = new sjcl2.cipher.aes(this.b); - for (d = 0; 4 > d && (this.h[d] = this.h[d] + 1 | 0, !this.h[d]); d++) ; - } - for (d = 0; d < a; d += 4) 0 === (d + 1) % this.ca && y(this), e = z(this), c.push(e[0], e[1], e[2], e[3]); - y(this); - return c.slice(0, a); - }, - setDefaultParanoia: function(a, b) { - if (0 === a && "Setting paranoia=0 will ruin your security; use it only for testing" !== b) throw new sjcl2.exception.invalid("Setting paranoia=0 will ruin your security; use it only for testing"); - this.M = a; - }, - addEntropy: function(a, b, c) { - c = c || "user"; - var d, e, f = (/* @__PURE__ */ new Date()).valueOf(), g = this.H[c], h = this.isReady(), k = 0; - d = this.U[c]; - void 0 === d && (d = this.U[c] = this.ha++); - void 0 === g && (g = this.H[c] = 0); - this.H[c] = (this.H[c] + 1) % this.c.length; - switch (typeof a) { - case "number": - void 0 === b && (b = 1); - this.c[g].update([d, this.N++, 1, b, f, 1, a | 0]); - break; - case "object": - c = Object.prototype.toString.call(a); - if ("[object Uint32Array]" === c) { - e = []; - for (c = 0; c < a.length; c++) e.push(a[c]); - a = e; - } else for ("[object Array]" !== c && (k = 1), c = 0; c < a.length && !k; c++) "number" !== typeof a[c] && (k = 1); - if (!k) { - if (void 0 === b) for (c = b = 0; c < a.length; c++) for (e = a[c]; 0 < e; ) b++, e = e >>> 1; - this.c[g].update([d, this.N++, 2, b, f, a.length].concat(a)); - } - break; - case "string": - void 0 === b && (b = a.length); - this.c[g].update([d, this.N++, 3, b, f, a.length]); - this.c[g].update(a); - break; - default: - k = 1; - } - if (k) throw new sjcl2.exception.bug("random: addEntropy only supports number, array of numbers or string"); - this.m[g] += b; - this.f += b; - h === this.u && (this.isReady() !== this.u && A("seeded", Math.max(this.o, this.f)), A("progress", this.getProgress())); - }, - isReady: function(a) { - a = this.T[void 0 !== a ? a : this.M]; - return this.o && this.o >= a ? this.m[0] > this.ba && (/* @__PURE__ */ new Date()).valueOf() > this.Z ? this.J | this.I : this.I : this.f >= a ? this.J | this.u : this.u; - }, - getProgress: function(a) { - a = this.T[a ? a : this.M]; - return this.o >= a ? 1 : this.f > a ? 1 : this.f / a; - }, - startCollectors: function() { - if (!this.D) { - this.a = { loadTimeCollector: B(this, this.ma), mouseCollector: B(this, this.oa), keyboardCollector: B(this, this.la), accelerometerCollector: B(this, this.ea), touchCollector: B(this, this.qa) }; - if (window.addEventListener) window.addEventListener( - "load", - this.a.loadTimeCollector, - false - ), window.addEventListener("mousemove", this.a.mouseCollector, false), window.addEventListener("keypress", this.a.keyboardCollector, false), window.addEventListener("devicemotion", this.a.accelerometerCollector, false), window.addEventListener("touchmove", this.a.touchCollector, false); - else if (document.attachEvent) document.attachEvent("onload", this.a.loadTimeCollector), document.attachEvent("onmousemove", this.a.mouseCollector), document.attachEvent("keypress", this.a.keyboardCollector); - else throw new sjcl2.exception.bug("can't attach event"); - this.D = true; - } - }, - stopCollectors: function() { - this.D && (window.removeEventListener ? (window.removeEventListener("load", this.a.loadTimeCollector, false), window.removeEventListener("mousemove", this.a.mouseCollector, false), window.removeEventListener("keypress", this.a.keyboardCollector, false), window.removeEventListener("devicemotion", this.a.accelerometerCollector, false), window.removeEventListener("touchmove", this.a.touchCollector, false)) : document.detachEvent && (document.detachEvent("onload", this.a.loadTimeCollector), document.detachEvent( - "onmousemove", - this.a.mouseCollector - ), document.detachEvent("keypress", this.a.keyboardCollector)), this.D = false); - }, - addEventListener: function(a, b) { - this.K[a][this.ga++] = b; - }, - removeEventListener: function(a, b) { - var c, d, e = this.K[a], f = []; - for (d in e) e.hasOwnProperty(d) && e[d] === b && f.push(d); - for (c = 0; c < f.length; c++) d = f[c], delete e[d]; - }, - la: function() { - C(this, 1); - }, - oa: function(a) { - var b, c; - try { - b = a.x || a.clientX || a.offsetX || 0, c = a.y || a.clientY || a.offsetY || 0; - } catch (d) { - c = b = 0; - } - 0 != b && 0 != c && this.addEntropy([b, c], 2, "mouse"); - C(this, 0); - }, - qa: function(a) { - a = a.touches[0] || a.changedTouches[0]; - this.addEntropy([a.pageX || a.clientX, a.pageY || a.clientY], 1, "touch"); - C(this, 0); - }, - ma: function() { - C(this, 2); - }, - ea: function(a) { - a = a.accelerationIncludingGravity.x || a.accelerationIncludingGravity.y || a.accelerationIncludingGravity.z; - if (window.orientation) { - var b = window.orientation; - "number" === typeof b && this.addEntropy(b, 1, "accelerometer"); - } - a && this.addEntropy(a, 2, "accelerometer"); - C(this, 0); - } - }; - function A(a, b) { - var c, d = sjcl2.random.K[a], e = []; - for (c in d) d.hasOwnProperty(c) && e.push(d[c]); - for (c = 0; c < e.length; c++) e[c](b); - } - function C(a, b) { - "undefined" !== typeof window && window.performance && "function" === typeof window.performance.now ? a.addEntropy(window.performance.now(), b, "loadtime") : a.addEntropy((/* @__PURE__ */ new Date()).valueOf(), b, "loadtime"); - } - function y(a) { - a.b = z(a).concat(z(a)); - a.L = new sjcl2.cipher.aes(a.b); - } - function z(a) { - for (var b = 0; 4 > b && (a.h[b] = a.h[b] + 1 | 0, !a.h[b]); b++) ; - return a.L.encrypt(a.h); - } - function B(a, b) { - return function() { - b.apply(a, arguments); - }; - } - sjcl2.random = new sjcl2.prng(6); - a: try { - if (G = "undefined" !== typeof module && module.exports) { - try { - H = __require("crypto"); - } catch (a) { - H = null; - } - G = E = H; - } - if (G && E.randomBytes) D = E.randomBytes(128), D = new Uint32Array(new Uint8Array(D).buffer), sjcl2.random.addEntropy(D, 1024, "crypto['randomBytes']"); - else if ("undefined" !== typeof window && "undefined" !== typeof Uint32Array) { - F = new Uint32Array(32); - if (window.crypto && window.crypto.getRandomValues) window.crypto.getRandomValues(F); - else if (window.msCrypto && window.msCrypto.getRandomValues) window.msCrypto.getRandomValues(F); - else break a; - sjcl2.random.addEntropy(F, 1024, "crypto['getRandomValues']"); - } - } catch (a) { - "undefined" !== typeof window && window.console && (console.log("There was an error collecting entropy from the browser:"), console.log(a)); - } - var D; - var E; - var F; - var G; - var H; - sjcl2.json = { defaults: { v: 1, iter: 1e4, ks: 128, ts: 64, mode: "ccm", adata: "", cipher: "aes" }, ja: function(a, b, c, d) { - c = c || {}; - d = d || {}; - var e = sjcl2.json, f = e.g({ iv: sjcl2.random.randomWords(4, 0) }, e.defaults), g; - e.g(f, c); - c = f.adata; - "string" === typeof f.salt && (f.salt = sjcl2.codec.base64.toBits(f.salt)); - "string" === typeof f.iv && (f.iv = sjcl2.codec.base64.toBits(f.iv)); - if (!sjcl2.mode[f.mode] || !sjcl2.cipher[f.cipher] || "string" === typeof a && 100 >= f.iter || 64 !== f.ts && 96 !== f.ts && 128 !== f.ts || 128 !== f.ks && 192 !== f.ks && 256 !== f.ks || 2 > f.iv.length || 4 < f.iv.length) throw new sjcl2.exception.invalid("json encrypt: invalid parameters"); - "string" === typeof a ? (g = sjcl2.misc.cachedPbkdf2(a, f), a = g.key.slice(0, f.ks / 32), f.salt = g.salt) : sjcl2.ecc && a instanceof sjcl2.ecc.elGamal.publicKey && (g = a.kem(), f.kemtag = g.tag, a = g.key.slice(0, f.ks / 32)); - "string" === typeof b && (b = sjcl2.codec.utf8String.toBits(b)); - "string" === typeof c && (f.adata = c = sjcl2.codec.utf8String.toBits(c)); - g = new sjcl2.cipher[f.cipher](a); - e.g(d, f); - d.key = a; - f.ct = "ccm" === f.mode && sjcl2.arrayBuffer && sjcl2.arrayBuffer.ccm && b instanceof ArrayBuffer ? sjcl2.arrayBuffer.ccm.encrypt(g, b, f.iv, c, f.ts) : sjcl2.mode[f.mode].encrypt(g, b, f.iv, c, f.ts); - return f; - }, encrypt: function(a, b, c, d) { - var e = sjcl2.json, f = e.ja.apply(e, arguments); - return e.encode(f); - }, ia: function(a, b, c, d) { - c = c || {}; - d = d || {}; - var e = sjcl2.json; - b = e.g(e.g(e.g({}, e.defaults), b), c, true); - var f, g; - f = b.adata; - "string" === typeof b.salt && (b.salt = sjcl2.codec.base64.toBits(b.salt)); - "string" === typeof b.iv && (b.iv = sjcl2.codec.base64.toBits(b.iv)); - if (!sjcl2.mode[b.mode] || !sjcl2.cipher[b.cipher] || "string" === typeof a && 100 >= b.iter || 64 !== b.ts && 96 !== b.ts && 128 !== b.ts || 128 !== b.ks && 192 !== b.ks && 256 !== b.ks || !b.iv || 2 > b.iv.length || 4 < b.iv.length) throw new sjcl2.exception.invalid("json decrypt: invalid parameters"); - "string" === typeof a ? (g = sjcl2.misc.cachedPbkdf2(a, b), a = g.key.slice(0, b.ks / 32), b.salt = g.salt) : sjcl2.ecc && a instanceof sjcl2.ecc.elGamal.secretKey && (a = a.unkem(sjcl2.codec.base64.toBits(b.kemtag)).slice(0, b.ks / 32)); - "string" === typeof f && (f = sjcl2.codec.utf8String.toBits(f)); - g = new sjcl2.cipher[b.cipher](a); - f = "ccm" === b.mode && sjcl2.arrayBuffer && sjcl2.arrayBuffer.ccm && b.ct instanceof ArrayBuffer ? sjcl2.arrayBuffer.ccm.decrypt(g, b.ct, b.iv, b.tag, f, b.ts) : sjcl2.mode[b.mode].decrypt(g, b.ct, b.iv, f, b.ts); - e.g(d, b); - d.key = a; - return 1 === c.raw ? f : sjcl2.codec.utf8String.fromBits(f); - }, decrypt: function(a, b, c, d) { - var e = sjcl2.json; - return e.ia(a, e.decode(b), c, d); - }, encode: function(a) { - var b, c = "{", d = ""; - for (b in a) if (a.hasOwnProperty(b)) { - if (!b.match(/^[a-z0-9]+$/i)) throw new sjcl2.exception.invalid("json encode: invalid property name"); - c += d + '"' + b + '":'; - d = ","; - switch (typeof a[b]) { - case "number": - case "boolean": - c += a[b]; - break; - case "string": - c += '"' + escape(a[b]) + '"'; - break; - case "object": - c += '"' + sjcl2.codec.base64.fromBits(a[b], 0) + '"'; - break; - default: - throw new sjcl2.exception.bug("json encode: unsupported type"); - } - } - return c + "}"; - }, decode: function(a) { - a = a.replace(/\s/g, ""); - if (!a.match(/^\{.*\}$/)) throw new sjcl2.exception.invalid("json decode: this isn't json!"); - a = a.replace(/^\{|\}$/g, "").split(/,/); - var b = {}, c, d; - for (c = 0; c < a.length; c++) { - if (!(d = a[c].match(/^\s*(?:(["']?)([a-z][a-z0-9]*)\1)\s*:\s*(?:(-?\d+)|"([a-z0-9+\/%*_.@=\-]*)"|(true|false))$/i))) throw new sjcl2.exception.invalid("json decode: this isn't json!"); - null != d[3] ? b[d[2]] = parseInt(d[3], 10) : null != d[4] ? b[d[2]] = d[2].match(/^(ct|adata|salt|iv)$/) ? sjcl2.codec.base64.toBits(d[4]) : unescape(d[4]) : null != d[5] && (b[d[2]] = "true" === d[5]); - } - return b; - }, g: function(a, b, c) { - void 0 === a && (a = {}); - if (void 0 === b) return a; - for (var d in b) if (b.hasOwnProperty(d)) { - if (c && void 0 !== a[d] && a[d] !== b[d]) throw new sjcl2.exception.invalid("required parameter overridden"); - a[d] = b[d]; - } - return a; - }, sa: function(a, b) { - var c = {}, d; - for (d in a) a.hasOwnProperty(d) && a[d] !== b[d] && (c[d] = a[d]); - return c; - }, ra: function(a, b) { - var c = {}, d; - for (d = 0; d < b.length; d++) void 0 !== a[b[d]] && (c[b[d]] = a[b[d]]); - return c; - } }; - sjcl2.encrypt = sjcl2.json.encrypt; - sjcl2.decrypt = sjcl2.json.decrypt; - sjcl2.misc.pa = {}; - sjcl2.misc.cachedPbkdf2 = function(a, b) { - var c = sjcl2.misc.pa, d; - b = b || {}; - d = b.iter || 1e3; - c = c[a] = c[a] || {}; - d = c[d] = c[d] || { firstSalt: b.salt && b.salt.length ? b.salt.slice(0) : sjcl2.random.randomWords(2, 0) }; - c = void 0 === b.salt ? d.firstSalt : b.salt; - d[c] = d[c] || sjcl2.misc.pbkdf2(a, c, b.iter); - return { key: d[c].slice(0), salt: c.slice(0) }; - }; - "undefined" !== typeof module && module.exports && (module.exports = sjcl2); - "function" === typeof define && define([], function() { - return sjcl2; - }); - } -}); - -// node_modules/.deno/neverthrow@8.0.0/node_modules/neverthrow/dist/index.es.js -var defaultErrorConfig = { - withStackTrace: false -}; -var createNeverThrowError = (message, result, config = defaultErrorConfig) => { - const data = result.isOk() ? { type: "Ok", value: result.value } : { type: "Err", value: result.error }; - const maybeStack = config.withStackTrace ? new Error().stack : void 0; - return { - data, - message, - stack: maybeStack - }; -}; -function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function(resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, [])).next()); - }); -} -function __values(o) { - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; - if (m) return m.call(o); - if (o && typeof o.length === "number") return { - next: function() { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); -} -function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); -} -function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { - return this; - }, i; - function verb(n) { - if (g[n]) i[n] = function(v) { - return new Promise(function(a, b) { - q.push([n, v, a, b]) > 1 || resume(n, v); - }); - }; - } - function resume(n, v) { - try { - step(g[n](v)); - } catch (e) { - settle(q[0][3], e); - } - } - function step(r) { - r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); - } - function fulfill(value) { - resume("next", value); - } - function reject(value) { - resume("throw", value); - } - function settle(f, v) { - if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); - } -} -function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function(e) { - throw e; - }), verb("return"), i[Symbol.iterator] = function() { - return this; - }, i; - function verb(n, f) { - i[n] = o[n] ? function(v) { - return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; - } : f; - } -} -function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { - return this; - }, i); - function verb(n) { - i[n] = o[n] && function(v) { - return new Promise(function(resolve, reject) { - v = o[n](v), settle(resolve, reject, v.done, v.value); - }); - }; - } - function settle(resolve, reject, d, v) { - Promise.resolve(v).then(function(v2) { - resolve({ value: v2, done: d }); - }, reject); - } -} -var ResultAsync = class _ResultAsync { - constructor(res) { - this._promise = res; - } - static fromSafePromise(promise) { - const newPromise = promise.then((value) => new Ok(value)); - return new _ResultAsync(newPromise); - } - static fromPromise(promise, errorFn) { - const newPromise = promise.then((value) => new Ok(value)).catch((e) => new Err(errorFn(e))); - return new _ResultAsync(newPromise); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any - static fromThrowable(fn, errorFn) { - return (...args) => { - return new _ResultAsync((() => __awaiter(this, void 0, void 0, function* () { - try { - return new Ok(yield fn(...args)); - } catch (error) { - return new Err(errorFn ? errorFn(error) : error); - } - }))()); - }; - } - static combine(asyncResultList) { - return combineResultAsyncList(asyncResultList); - } - static combineWithAllErrors(asyncResultList) { - return combineResultAsyncListWithAllErrors(asyncResultList); - } - map(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return new Err(res.error); - } - return new Ok(yield f(res.value)); - }))); - } - andThrough(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return new Err(res.error); - } - const newRes = yield f(res.value); - if (newRes.isErr()) { - return new Err(newRes.error); - } - return new Ok(res.value); - }))); - } - andTee(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return new Err(res.error); - } - try { - yield f(res.value); - } catch (e) { - } - return new Ok(res.value); - }))); - } - mapErr(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isOk()) { - return new Ok(res.value); - } - return new Err(yield f(res.error)); - }))); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThen(f) { - return new _ResultAsync(this._promise.then((res) => { - if (res.isErr()) { - return new Err(res.error); - } - const newValue = f(res.value); - return newValue instanceof _ResultAsync ? newValue._promise : newValue; - })); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - orElse(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return f(res.error); - } - return new Ok(res.value); - }))); - } - match(ok2, _err) { - return this._promise.then((res) => res.match(ok2, _err)); - } - unwrapOr(t) { - return this._promise.then((res) => res.unwrapOr(t)); - } - /** - * Emulates Rust's `?` operator in `safeTry`'s body. See also `safeTry`. - */ - safeUnwrap() { - return __asyncGenerator(this, arguments, function* safeUnwrap_1() { - return yield __await(yield __await(yield* __asyncDelegator(__asyncValues(yield __await(this._promise.then((res) => res.safeUnwrap())))))); - }); - } - // Makes ResultAsync implement PromiseLike - then(successCallback, failureCallback) { - return this._promise.then(successCallback, failureCallback); - } -}; -var okAsync = (value) => new ResultAsync(Promise.resolve(new Ok(value))); -var errAsync = (err2) => new ResultAsync(Promise.resolve(new Err(err2))); -var fromPromise = ResultAsync.fromPromise; -var fromSafePromise = ResultAsync.fromSafePromise; -var fromAsyncThrowable = ResultAsync.fromThrowable; -var combineResultList = (resultList) => { - let acc = ok([]); - for (const result of resultList) { - if (result.isErr()) { - acc = err(result.error); - break; - } else { - acc.map((list) => list.push(result.value)); - } - } - return acc; -}; -var combineResultAsyncList = (asyncResultList) => ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultList); -var combineResultListWithAllErrors = (resultList) => { - let acc = ok([]); - for (const result of resultList) { - if (result.isErr() && acc.isErr()) { - acc.error.push(result.error); - } else if (result.isErr() && acc.isOk()) { - acc = err([result.error]); - } else if (result.isOk() && acc.isOk()) { - acc.value.push(result.value); - } - } - return acc; -}; -var combineResultAsyncListWithAllErrors = (asyncResultList) => ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultListWithAllErrors); -var Result; -(function(Result2) { - function fromThrowable2(fn, errorFn) { - return (...args) => { - try { - const result = fn(...args); - return ok(result); - } catch (e) { - return err(errorFn ? errorFn(e) : e); - } - }; - } - Result2.fromThrowable = fromThrowable2; - function combine(resultList) { - return combineResultList(resultList); - } - Result2.combine = combine; - function combineWithAllErrors(resultList) { - return combineResultListWithAllErrors(resultList); - } - Result2.combineWithAllErrors = combineWithAllErrors; -})(Result || (Result = {})); -var ok = (value) => new Ok(value); -function err(err2) { - return new Err(err2); -} -var Ok = class { - constructor(value) { - this.value = value; - } - isOk() { - return true; - } - isErr() { - return !this.isOk(); - } - map(f) { - return ok(f(this.value)); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - mapErr(_f) { - return ok(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThen(f) { - return f(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThrough(f) { - return f(this.value).map((_value) => this.value); - } - andTee(f) { - try { - f(this.value); - } catch (e) { - } - return ok(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - orElse(_f) { - return ok(this.value); - } - asyncAndThen(f) { - return f(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - asyncAndThrough(f) { - return f(this.value).map(() => this.value); - } - asyncMap(f) { - return ResultAsync.fromSafePromise(f(this.value)); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - unwrapOr(_v) { - return this.value; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - match(ok2, _err) { - return ok2(this.value); - } - safeUnwrap() { - const value = this.value; - return function* () { - return value; - }(); - } - _unsafeUnwrap(_) { - return this.value; - } - _unsafeUnwrapErr(config) { - throw createNeverThrowError("Called `_unsafeUnwrapErr` on an Ok", this, config); - } -}; -var Err = class { - constructor(error) { - this.error = error; - } - isOk() { - return false; - } - isErr() { - return !this.isOk(); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - map(_f) { - return err(this.error); - } - mapErr(f) { - return err(f(this.error)); - } - andThrough(_f) { - return err(this.error); - } - andTee(_f) { - return err(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThen(_f) { - return err(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - orElse(f) { - return f(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - asyncAndThen(_f) { - return errAsync(this.error); - } - asyncAndThrough(_f) { - return errAsync(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - asyncMap(_f) { - return errAsync(this.error); - } - unwrapOr(v) { - return v; - } - match(_ok, err2) { - return err2(this.error); - } - safeUnwrap() { - const error = this.error; - return function* () { - yield err(error); - throw new Error("Do not use this generator out of `safeTry`"); - }(); - } - _unsafeUnwrap(config) { - throw createNeverThrowError("Called `_unsafeUnwrap` on an Err", this, config); - } - _unsafeUnwrapErr(_) { - return this.error; - } -}; -var fromThrowable = Result.fromThrowable; - -// src/error/base-error.ts -var BaseError = class extends Error { - constructor(message, options = {}) { - const { cause, context } = options; - super(message, { cause }); - __publicField(this, "context"); - this.name = this.constructor.name; - this.context = context; - } -}; - -// src/error/websocket/websocket-error.ts -var WebSocketError = class extends BaseError { -}; - -// src/error/websocket/websocket-connection-error.ts -var WebSocketConnectionError = class extends WebSocketError { - constructor() { - super(...arguments); - __publicField(this, "message", "An error occured while trying to connect to WebSocket"); - } -}; - -// src/utils.ts -var ensureError = (value) => { - if (value instanceof Error) return value; - let stringified = "[Unable to stringify the thrown value]"; - try { - stringified = JSON.stringify(value); - } catch (_error) { - } - const error = new Error(stringified); - return error; -}; -var isDenoRuntime = () => typeof Deno !== "undefined"; -var workerUrl = (relativePath) => isDenoRuntime() ? new URL(`./worker/${relativePath}.ts`, new URL(".", import.meta.url).href) : new URL( - import.meta.resolve( - `./${relativePath === "main" ? `worker/${relativePath}` : relativePath}.js` - ) -); - -// src/worker/main.ts -var import_events = __toESM(require_events()); -var events = new import_events.default(); -var worker; -var isInitialized = false; -self.onmessage = (event) => { - addWorker(event); - if (!isInitialized) { - isInitialized = true; - events.once("OPERATION_FAILED" /* OPERATION_FAILED */, () => { - if (worker) { - worker.terminate(); - } - }); - } -}; -var updateFile = (lufiFile, args) => { - Object.assign(lufiFile, args); - if (typeof WorkerGlobalScope !== "undefined") { - self.postMessage({ - event: "FILE_UPDATED" /* FILE_UPDATED */, - lufiFile - }); - } - return lufiFile; -}; -var addWorker = (event, callback) => { - const { action } = event.data; - if (action === 5 /* PAUSE */ || action === 8 /* RESUME */) { - worker.postMessage(event.data); - } else { - switch (action) { - case 2 /* CANCEL */: - { - worker = new Worker(workerUrl("cancel"), { type: "module" }); - worker.postMessage(event.data); - } - break; - case 3 /* DOWNLOAD */: - { - worker = new Worker(workerUrl("download"), { type: "module" }); - worker.postMessage(event.data); - } - break; - case 4 /* INFOS */: - { - worker = new Worker(workerUrl("infos"), { type: "module" }); - worker.postMessage(event.data); - } - break; - case 7 /* REMOVE */: - { - worker = worker || new Worker(workerUrl("remove"), { type: "module" }); - worker.postMessage(event.data); - } - break; - case 9 /* UPLOAD */: - { - worker = worker || new Worker(workerUrl("upload"), { type: "module" }); - worker.postMessage(event.data); - } - break; - default: { - console.error("Action not found"); - } - } - worker.onmessage = (e) => { - if (callback) callback(e); - self.postMessage(e.data); - }; - worker.onerror = (error) => { - console.error(`Error: ${error.message}`); - }; - } -}; -var init = () => { - events.once("SOCKET_OPENED" /* SOCKET_OPENED */, () => { - self.postMessage({ - event: "SOCKET_OPENED" /* SOCKET_OPENED */ - }); - }); - events.once("OPERATION_FAILED" /* OPERATION_FAILED */, (error) => { - self.postMessage({ event: "OPERATION_FAILED" /* OPERATION_FAILED */, error }); - }); -}; - -// node_modules/.deno/arraybuffer-encoding@1.1.0/node_modules/arraybuffer-encoding/dist/esm/base64/encoding.js -var Encoding = class { - /** - * - * @param charset Charset to use for base64 encoding. This must be 64-characters long. - * @param noPadding If true, encoded strings won't include padding. - */ - constructor(charset, noPadding) { - if (!charset || charset.length != 64) { - throw Error("Charset must contain 64 characters"); - } - this._charset = charset; - this._noPadding = !!noPadding; - this._valid = new RegExp("^[" + this._charset.replace("-", "\\-") + "]+={0,2}$"); - } - /** - * Encode an ArrayBuffer to base64 in a string. - * @param ab Data to encode to base64 - * @returns Base64-encoded string - */ - Encode(ab) { - const len = ab.byteLength; - if (!len) { - return ""; - } - const view = new Uint8Array(ab); - let res = ""; - for (let i = 0; i < len; i += 3) { - res += this._charset[view[i] >> 2] + this._charset[(view[i] & 3) << 4 | view[i + 1] >> 4] + this._charset[(view[i + 1] & 15) << 2 | view[i + 2] >> 6] + this._charset[view[i + 2] & 63]; - } - if (len % 3 == 2) { - res = res.substring(0, res.length - 1); - if (!this._noPadding) { - res += "="; - } - } else if (len % 3 == 1) { - res = res.substring(0, res.length - 2); - if (!this._noPadding) { - res += "=="; - } - } - return res; - } - /** - * Decode a string from base64. Padding is always optional. - * @param str Base64-encoded string - * @returns Data decoded from the base64 string - */ - Decode(str) { - str = (str || "").replace(/[\s]/g, ""); - if (!str) { - return new ArrayBuffer(0); - } - if (!this._valid.test(str)) { - throw Error("Invalid base64 input sequence"); - } - let viewLen = Math.floor(str.length * 0.75); - if (str[str.length - 2] == "=") { - viewLen -= 2; - } else if (str[str.length - 1] == "=") { - viewLen--; - } - const view = new Uint8Array(viewLen); - let enc1, enc2, enc3, enc4, i = 0, j = 0; - while (i < str.length * 0.75) { - enc1 = this._charset.indexOf(str.charAt(j++)); - enc2 = this._charset.indexOf(str.charAt(j++)); - enc3 = this._charset.indexOf(str.charAt(j++)); - enc4 = this._charset.indexOf(str.charAt(j++)); - view[i++] = enc1 << 2 | enc2 >> 4; - view[i++] = (enc2 & 15) << 4 | enc3 >> 2; - view[i++] = (enc3 & 3) << 6 | enc4; - } - return view.buffer; - } -}; - -// node_modules/.deno/arraybuffer-encoding@1.1.0/node_modules/arraybuffer-encoding/dist/esm/base64/standard.js -var obj = new Encoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"); -function Decode(str) { - return obj.Decode(str); -} - -// node_modules/.deno/arraybuffer-encoding@1.1.0/node_modules/arraybuffer-encoding/dist/esm/base64/url.js -var obj2 = new Encoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_", true); -function Decode2(str) { - return obj2.Decode(str); -} - -// src/api/crypto/sjcl.ts -var import_sjcl = __toESM(require_sjcl()); - -// src/error/crypto/crypto-error.ts -var CryptoError = class extends BaseError { -}; - -// src/error/crypto/decryption-error.ts -var DecryptionError = class extends CryptoError { - constructor() { - super(...arguments); - __publicField(this, "message", "Unable to decrypt the provided data"); - } -}; - -// src/api/crypto/sjcl.ts -var decrypt = (key, encryptedData) => { - try { - const data = typeof encryptedData === "string" ? encryptedData : encryptedData.data; - return okAsync(Decode(import_sjcl.default.decrypt(key, data))); - } catch (error) { - return errAsync( - new DecryptionError(void 0, { cause: ensureError(error) }) - ); - } -}; - -// src/api/crypto/web.ts -var decrypt2 = (key, encrypted) => { - return importKey(key).andThen( - (importedKey) => ResultAsync.fromPromise( - crypto.subtle.decrypt( - { - name: "AES-GCM", - iv: encrypted.iv - }, - importedKey, - Decode(encrypted.data) - ), - (error) => new DecryptionError(void 0, { cause: ensureError(error) }) - ) - ); -}; -var importKey = (key) => { - return ResultAsync.fromPromise( - crypto.subtle.importKey( - "raw", - Decode2(key), - { name: "AES-GCM" }, - false, - [ - "encrypt", - "decrypt" - ] - ), - (error) => new CryptoError("Unable to import cryptography key", { - cause: ensureError(error) - }) - ); -}; - -// src/api/crypto.ts -var decrypt3 = (key, value) => { - return value.algo === void 0 || value.algo === 0 /* Sjcl */ ? decrypt(key, value) : decrypt2(key, value); -}; - -// src/api/websocket.ts -var sockets = {}; -var MAX_ERRORS = 5; -var onCancelMessage = (data) => { - events.emit("UPLOAD_CANCELLED" /* UPLOAD_CANCELLED */, data.success); - return okAsync(void 0); -}; -var onDownloadMessage = (response, lufiFile) => { - const result = response.split("XXMOJOXX"); - const metadataString = result.shift(); - if (metadataString !== void 0) { - const metadata = JSON.parse(metadataString); - if (isServerDownloadChunkSuccessMetadata(metadata)) { - const dataString = result.shift(); - if (dataString) { - const encryptedData = JSON.parse(dataString); - if (encryptedData.iv) { - encryptedData.iv = new Uint8Array(Object.values(encryptedData.iv)); - } - return decrypt3(lufiFile.keys.client, encryptedData).andThen( - (decryptedPart) => { - const chunk = typeof decryptedPart === "string" ? new TextEncoder().encode(decryptedPart).buffer : decryptedPart; - if (metadata.part === 0) { - updateFile(lufiFile, { - chunksReady: lufiFile.chunksReady + 1, - delAtFirstView: metadata.del_at_first_view, - delay: metadata.delay, - name: metadata.name, - size: metadata.size, - totalChunks: metadata.total, - type: metadata.type, - zipped: metadata.zipped - }); - events.emit("DOWNLOAD_STARTED" /* DOWNLOAD_STARTED */); - } else { - updateFile(lufiFile, { chunksReady: lufiFile.chunksReady + 1 }); - } - events.emit("CHUNK_DOWNLOADED" /* CHUNK_DOWNLOADED */, chunk, metadata.part); - if (++metadata.part === metadata.total) { - return endDownload(lufiFile).andThen(() => { - events.emit("DOWNLOAD_COMPLETE" /* DOWNLOAD_COMPLETE */); - events.emit("SOCKET_OPERATION_TERMINATED" /* SOCKET_OPERATION_TERMINATED */); - return okAsync(void 0); - }); - } - return okAsync(void 0); - } - ); - } else { - const error = new WebSocketError( - "Can't retrieve metadata from data received by the server" - ); - events.emit("OPERATION_FAILED" /* OPERATION_FAILED */, error); - return errAsync(error); - } - } else { - const error = new WebSocketError(metadata.msg); - events.emit("OPERATION_FAILED" /* OPERATION_FAILED */, error); - return errAsync(error); - } - } else { - const error = new WebSocketError( - "Can't retrieve metadata from data received by the server" - ); - events.emit("OPERATION_FAILED" /* OPERATION_FAILED */, error); - return errAsync(error); - } -}; -var onUploadMessage = (response, lufiFile) => { - if (response.success) { - if (response.j === 0) { - updateFile(lufiFile, { - keys: { client: lufiFile.keys.client, server: response.short }, - actionToken: response.token, - queueIndex: response.i - }); - events.emit("UPLOAD_STARTED" /* UPLOAD_STARTED */); - } - updateFile(lufiFile, { - chunksReady: lufiFile.chunksReady + 1, - createdAt: response.created_at - }); - events.emit("CHUNK_UPLOADED" /* CHUNK_UPLOADED */); - if (lufiFile.chunksReady === lufiFile.totalChunks) { - updateFile(lufiFile, { uploadStatus: 1 /* COMPLETE */ }); - events.emit("UPLOAD_COMPLETE" /* UPLOAD_COMPLETE */); - events.emit("SOCKET_OPERATION_TERMINATED" /* SOCKET_OPERATION_TERMINATED */); - } - return okAsync(void 0); - } else { - const error = new WebSocketError(response.msg); - events.emit("OPERATION_FAILED" /* OPERATION_FAILED */, error); - return errAsync(error); - } -}; -var onMessage = (e, lufiFile) => { - const data = tryParseJson(e.data); - let callback; - if (data) { - if (!data.action && data.msg) { - const error = new WebSocketError(data.msg); - events.emit("OPERATION_FAILED" /* OPERATION_FAILED */, error); - return errAsync(error); - } else { - if ("delay" in data) { - callback = onUploadMessage(data, lufiFile); - } else { - callback = onCancelMessage(data); - } - } - } else { - callback = onDownloadMessage(e.data, lufiFile); - } - return callback; -}; -var isConnecting = (socketKey) => sockets !== void 0 && sockets[socketKey] !== void 0 && sockets[socketKey].readyState === WebSocket.CONNECTING; -var isSpawned = (socketKey) => sockets !== void 0 && sockets[socketKey] !== void 0 && sockets[socketKey].readyState === WebSocket.OPEN; -var downloadChunk = (lufiFile, chunkNumber) => { - let message; - if (lufiFile.password) { - message = { part: chunkNumber, file_pwd: lufiFile.password }; - } else { - message = { part: chunkNumber }; - } - return sendMessage( - downloadSocketUrl(lufiFile), - lufiFile, - JSON.stringify(message) - ); -}; -var endDownload = (lufiFile) => { - let message; - if (lufiFile.password) { - message = { ended: true, file_pwd: lufiFile.password }; - } else { - message = { ended: true }; - } - return sendMessage( - downloadSocketUrl(lufiFile), - lufiFile, - JSON.stringify(message) - ); -}; -var sendMessage = (socketUrl, lufiFile, message) => { - if (!isSpawned(socketUrl)) { - return spawn(socketUrl).andThen( - () => sendMessage(socketUrl, lufiFile, message) - ); - } else { - sockets[socketUrl].onmessage = (e) => onMessage(e, lufiFile); - sockets[socketUrl].send(message); - return okAsync(void 0); - } -}; -var spawn = (socketKey, errorCount = 0) => { - if (!isSpawned(socketKey) && !isConnecting(socketKey)) { - sockets[socketKey] = new WebSocket(socketKey); - events.once("SOCKET_OPERATION_TERMINATED" /* SOCKET_OPERATION_TERMINATED */, () => { - sockets[socketKey].close(); - }); - events.once("OPERATION_FAILED" /* OPERATION_FAILED */, () => { - events.emit("SOCKET_OPERATION_TERMINATED" /* SOCKET_OPERATION_TERMINATED */); - }); - sockets[socketKey].onopen = () => { - events.emit("SOCKET_OPENED" /* SOCKET_OPENED */); - }; - sockets[socketKey].onclose = () => { - }; - sockets[socketKey].onerror = () => { - if (++errorCount <= MAX_ERRORS) { - console.error( - `An error happened while trying to connect to WebSocket ${socketKey}. Trying again. ${errorCount} / ${MAX_ERRORS}` - ); - return spawn(socketKey, errorCount); - } else { - events.emit("SOCKET_ONERROR" /* SOCKET_ONERROR */); - return errAsync( - new WebSocketConnectionError( - `Unable to connect to WebSocket ${socketKey}.` - ) - ); - } - }; - } - return waitForConnection(socketKey).andThen(() => okAsync(socketKey)).orElse((error) => errAsync(error)); -}; -var waitForConnection = (socketKey) => ResultAsync.fromPromise( - new Promise((resolve, reject) => { - if (!isSpawned(socketKey)) { - events.once("SOCKET_OPENED" /* SOCKET_OPENED */, () => { - resolve(void 0); - }); - events.on("SOCKET_ONERROR" /* SOCKET_ONERROR */, () => { - reject(new WebSocketConnectionError()); - }); - } else { - resolve(void 0); - } - }), - (error) => { - return ensureError(error); - } -); -var buildSocketUrl = (instanceUrl, pathname) => { - const url = new URL(instanceUrl); - url.protocol = url.protocol === "http:" ? "ws:" : "wss:"; - url.pathname += pathname; - return new URL(url.origin + url.pathname); -}; -var downloadSocketUrl = (lufiFile) => { - return buildSocketUrl( - new URL(lufiFile.serverUrl), - "download" /* DOWNLOAD */ + `/${lufiFile.keys.server}` - ).toString(); -}; -var tryParseJson = (data) => { - try { - const parsedObject = JSON.parse(data); - if (parsedObject && typeof parsedObject === "object") { - return parsedObject; - } - } catch (_e) { - } - return false; -}; -var isServerDownloadChunkSuccessMetadata = (message) => { - return typeof message === "object" && message !== null && !("msg" in message); -}; - -// src/worker/infos.ts -var isInitiated = false; -self.onmessage = (event) => { - if (!isInitiated) { - init(); - isInitiated = true; - } - events.on("DOWNLOAD_STARTED" /* DOWNLOAD_STARTED */, () => { - sockets[downloadSocketUrl(event.data.args.lufiFile)].close(); - self.postMessage({ event: "INFOS_RETRIEVED" /* INFOS_RETRIEVED */ }); - }); - retrieveInfos(event.data).mapErr((error) => { - self.postMessage({ - event: "OPERATION_FAILED" /* OPERATION_FAILED */, - error - }); - }); -}; -var retrieveInfos = (workerMessage) => downloadChunk(workerMessage.args.lufiFile, 0); +var ze=Object.create;var te=Object.defineProperty;var Ge=Object.getOwnPropertyDescriptor;var He=Object.getOwnPropertyNames;var $e=Object.getPrototypeOf,qe=Object.prototype.hasOwnProperty;var Ve=(e,t,r)=>t in e?te(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var Ke=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var fe=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Ye=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of He(t))!qe.call(e,o)&&o!==r&&te(e,o,{get:()=>t[o],enumerable:!(n=Ge(t,o))||n.enumerable});return e};var ue=(e,t,r)=>(r=e!=null?ze($e(e)):{},Ye(t||!e||!e.__esModule?te(r,"default",{value:e,enumerable:!0}):r,e));var b=(e,t,r)=>Ve(e,typeof t!="symbol"?t+"":t,r);var De=fe((sr,ne)=>{"use strict";var U=typeof Reflect=="object"?Reflect:null,me=U&&typeof U.apply=="function"?U.apply:function(t,r,n){return Function.prototype.apply.call(t,r,n)},V;U&&typeof U.ownKeys=="function"?V=U.ownKeys:Object.getOwnPropertySymbols?V=function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:V=function(t){return Object.getOwnPropertyNames(t)};function it(e){console&&console.warn&&console.warn(e)}var ge=Number.isNaN||function(t){return t!==t};function p(){p.init.call(this)}ne.exports=p;ne.exports.once=ft;p.EventEmitter=p;p.prototype._events=void 0;p.prototype._eventsCount=0;p.prototype._maxListeners=void 0;var ye=10;function K(e){if(typeof e!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}Object.defineProperty(p,"defaultMaxListeners",{enumerable:!0,get:function(){return ye},set:function(e){if(typeof e!="number"||e<0||ge(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");ye=e}});p.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};p.prototype.setMaxListeners=function(t){if(typeof t!="number"||t<0||ge(t))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+t+".");return this._maxListeners=t,this};function ve(e){return e._maxListeners===void 0?p.defaultMaxListeners:e._maxListeners}p.prototype.getMaxListeners=function(){return ve(this)};p.prototype.emit=function(t){for(var r=[],n=1;n0&&(s=r[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var f=i[t];if(f===void 0)return!1;if(typeof f=="function")me(f,this,r);else for(var u=f.length,l=xe(f,u),n=0;n0&&s.length>o&&!s.warned){s.warned=!0;var a=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");a.name="MaxListenersExceededWarning",a.emitter=e,a.type=t,a.count=s.length,it(a)}return e}p.prototype.addListener=function(t,r){return we(this,t,r,!1)};p.prototype.on=p.prototype.addListener;p.prototype.prependListener=function(t,r){return we(this,t,r,!0)};function st(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function Ee(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},o=st.bind(n);return o.listener=r,n.wrapFn=o,o}p.prototype.once=function(t,r){return K(r),this.on(t,Ee(this,t,r)),this};p.prototype.prependOnceListener=function(t,r){return K(r),this.prependListener(t,Ee(this,t,r)),this};p.prototype.removeListener=function(t,r){var n,o,i,s,a;if(K(r),o=this._events,o===void 0)return this;if(n=o[t],n===void 0)return this;if(n===r||n.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete o[t],o.removeListener&&this.emit("removeListener",t,n.listener||r));else if(typeof n!="function"){for(i=-1,s=n.length-1;s>=0;s--)if(n[s]===r||n[s].listener===r){a=n[s].listener,i=s;break}if(i<0)return this;i===0?n.shift():ct(n,i),n.length===1&&(o[t]=n[0]),o.removeListener!==void 0&&this.emit("removeListener",t,a||r)}return this};p.prototype.off=p.prototype.removeListener;p.prototype.removeAllListeners=function(t){var r,n,o;if(n=this._events,n===void 0)return this;if(n.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):n[t]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete n[t]),this;if(arguments.length===0){var i=Object.keys(n),s;for(o=0;o=0;o--)this.removeListener(t,r[o]);return this};function Ae(e,t,r){var n=e._events;if(n===void 0)return[];var o=n[t];return o===void 0?[]:typeof o=="function"?r?[o.listener||o]:[o]:r?at(o):xe(o,o.length)}p.prototype.listeners=function(t){return Ae(this,t,!0)};p.prototype.rawListeners=function(t){return Ae(this,t,!1)};p.listenerCount=function(e,t){return typeof e.listenerCount=="function"?e.listenerCount(t):Le.call(e,t)};p.prototype.listenerCount=Le;function Le(e){var t=this._events;if(t!==void 0){var r=t[e];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}p.prototype.eventNames=function(){return this._eventsCount>0?V(this._events):[]};function xe(e,t){for(var r=new Array(t),n=0;n{"use strict";var c={cipher:{},hash:{},keyexchange:{},mode:{},misc:{},codec:{},exception:{corrupt:function(e){this.toString=function(){return"CORRUPT: "+this.message},this.message=e},invalid:function(e){this.toString=function(){return"INVALID: "+this.message},this.message=e},bug:function(e){this.toString=function(){return"BUG: "+this.message},this.message=e},notReady:function(e){this.toString=function(){return"NOT READY: "+this.message},this.message=e}}};c.cipher.aes=function(e){this.s[0][0][0]||this.O();var t,r,n,o,i=this.s[0][4],s=this.s[1];t=e.length;var a=1;if(t!==4&&t!==6&&t!==8)throw new c.exception.invalid("invalid aes key size");for(this.b=[n=e.slice(0),o=[]],e=t;e<4*t+28;e++)r=n[e-1],(e%t===0||t===8&&e%t===4)&&(r=i[r>>>24]<<24^i[r>>16&255]<<16^i[r>>8&255]<<8^i[r&255],e%t===0&&(r=r<<8^r>>>24^a<<24,a=a<<1^283*(a>>7))),n[e]=n[e-t]^r;for(t=0;e;t++,e--)r=n[t&3?e:e-4],o[t]=4>=e||4>t?r:s[0][i[r>>>24]]^s[1][i[r>>16&255]]^s[2][i[r>>8&255]]^s[3][i[r&255]]};c.cipher.aes.prototype={encrypt:function(e){return Re(this,e,0)},decrypt:function(e){return Re(this,e,1)},s:[[[],[],[],[],[]],[[],[],[],[],[]]],O:function(){var e=this.s[0],t=this.s[1],r=e[4],n=t[4],o,i,s,a=[],f=[],u,l,h,d;for(o=0;256>o;o++)f[(a[o]=o<<1^283*(o>>7))^o]=o;for(i=s=0;!r[i];i^=u||1,s=f[s]||1)for(h=s^s<<1^s<<2^s<<3^s<<4,h=h>>8^h&255^99,r[i]=h,n[h]=i,l=a[o=a[u=a[i]]],d=16843009*l^65537*o^257*u^16843008*i,l=257*a[h]^16843008*h,o=0;4>o;o++)e[o][i]=l=l<<24^l>>>8,t[o][h]=d=d<<24^d>>>8;for(o=0;5>o;o++)e[o]=e[o].slice(0),t[o]=t[o].slice(0)}};function Re(e,t,r){if(t.length!==4)throw new c.exception.invalid("invalid aes block size");var n=e.b[r],o=t[0]^n[0],i=t[r?3:1]^n[1],s=t[2]^n[2];t=t[r?1:3]^n[3];var a,f,u,l=n.length/4-2,h,d=4,y=[0,0,0,0];a=e.s[r],e=a[0];var g=a[1],M=a[2],$=a[3],q=a[4];for(h=0;h>>24]^g[i>>16&255]^M[s>>8&255]^$[t&255]^n[d],f=e[i>>>24]^g[s>>16&255]^M[t>>8&255]^$[o&255]^n[d+1],u=e[s>>>24]^g[t>>16&255]^M[o>>8&255]^$[i&255]^n[d+2],t=e[t>>>24]^g[o>>16&255]^M[i>>8&255]^$[s&255]^n[d+3],d+=4,o=a,i=f,s=u;for(h=0;4>h;h++)y[r?3&-h:h]=q[o>>>24]<<24^q[i>>16&255]<<16^q[s>>8&255]<<8^q[t&255]^n[d++],a=o,o=i,i=s,s=t,t=a;return y}c.bitArray={bitSlice:function(e,t,r){return e=c.bitArray.$(e.slice(t/32),32-(t&31)).slice(1),r===void 0?e:c.bitArray.clamp(e,r-t)},extract:function(e,t,r){var n=Math.floor(-t-r&31);return((t+r-1^t)&-32?e[t/32|0]<<32-n^e[t/32+1|0]>>>n:e[t/32|0]>>>n)&(1<>t-1,1)),e},partial:function(e,t,r){return e===32?t:(r?t|0:t<<32-e)+1099511627776*e},getPartial:function(e){return Math.round(e/1099511627776)||32},equal:function(e,t){if(c.bitArray.bitLength(e)!==c.bitArray.bitLength(t))return!1;var r=0,n;for(n=0;n>>t),r=e[o]<<32-t;return o=e.length?e[e.length-1]:0,e=c.bitArray.getPartial(o),n.push(c.bitArray.partial(t+e&31,32>>24|r>>>8&65280|(r&65280)<<8|r<<24;return e}};c.codec.utf8String={fromBits:function(e){var t="",r=c.bitArray.bitLength(e),n,o;for(n=0;n>>8>>>8>>>8),o<<=8;return decodeURIComponent(escape(t))},toBits:function(e){e=unescape(encodeURIComponent(e));var t=[],r,n=0;for(r=0;r>>s)>>>o),sl){if(!t)try{return c.codec.base32hex.toBits(e)}catch{}throw new c.exception.invalid("this isn't "+h+"!")}a>o?(a-=o,i.push(u^l>>>a),u=l<>>o)>>>26),6>o?(s=e[r]<<6-o,o+=26,r++):(s<<=6,o-=6);for(;n.length&3&&!t;)n+="=";return n},toBits:function(e,t){e=e.replace(/\s|=/g,"");var r=[],n,o=0,i=c.codec.base64.B,s=0,a;for(t&&(i=i.substr(0,62)+"-_"),n=0;na)throw new c.exception.invalid("this isn't base64!");26>>o),s=a<<32-o):(o+=6,s^=a<<32-o)}return o&56&&r.push(c.bitArray.partial(o&56,s,1)),r}};c.codec.base64url={fromBits:function(e){return c.codec.base64.fromBits(e,1,1)},toBits:function(e){return c.codec.base64.toBits(e,1)}};c.hash.sha256=function(e){this.b[0]||this.O(),e?(this.F=e.F.slice(0),this.A=e.A.slice(0),this.l=e.l):this.reset()};c.hash.sha256.hash=function(e){return new c.hash.sha256().update(e).finalize()};c.hash.sha256.prototype={blockSize:512,reset:function(){return this.F=this.Y.slice(0),this.A=[],this.l=0,this},update:function(e){typeof e=="string"&&(e=c.codec.utf8String.toBits(e));var t,r=this.A=c.bitArray.concat(this.A,e);if(t=this.l,e=this.l=t+c.bitArray.bitLength(e),9007199254740991t;r++){for(o=!0,n=2;n*n<=r;n++)if(r%n===0){o=!1;break}o&&(8>t&&(this.Y[t]=e(Math.pow(r,.5))),this.b[t]=e(Math.pow(r,1/3)),t++)}}};function ie(e,t){var r,n,o,i=e.F,s=e.b,a=i[0],f=i[1],u=i[2],l=i[3],h=i[4],d=i[5],y=i[6],g=i[7];for(r=0;64>r;r++)16>r?n=t[r]:(n=t[r+1&15],o=t[r+14&15],n=t[r&15]=(n>>>7^n>>>18^n>>>3^n<<25^n<<14)+(o>>>17^o>>>19^o>>>10^o<<15^o<<13)+t[r&15]+t[r+9&15]|0),n=n+g+(h>>>6^h>>>11^h>>>25^h<<26^h<<21^h<<7)+(y^h&(d^y))+s[r],g=y,y=d,d=h,h=l+n|0,l=u,u=f,f=a,a=n+(f&u^l&(f^u))+(f>>>2^f>>>13^f>>>22^f<<30^f<<19^f<<10)|0;i[0]=i[0]+a|0,i[1]=i[1]+f|0,i[2]=i[2]+u|0,i[3]=i[3]+l|0,i[4]=i[4]+h|0,i[5]=i[5]+d|0,i[6]=i[6]+y|0,i[7]=i[7]+g|0}c.mode.ccm={name:"ccm",G:[],listenProgress:function(e){c.mode.ccm.G.push(e)},unListenProgress:function(e){e=c.mode.ccm.G.indexOf(e),-1f)throw new c.exception.invalid("ccm: iv must be at least 7 bytes");for(i=2;4>i&&u>>>8*i;i++);return i<15-f&&(i=15-f),r=a.clamp(r,8*(15-i)),t=c.mode.ccm.V(e,t,r,n,o,i),s=c.mode.ccm.C(e,s,r,t,o,i),a.concat(s.data,s.tag)},decrypt:function(e,t,r,n,o){o=o||64,n=n||[];var i=c.bitArray,s=i.bitLength(r)/8,u=i.bitLength(t),a=i.clamp(t,u-o),f=i.bitSlice(t,u-o),u=(u-o)/8;if(7>s)throw new c.exception.invalid("ccm: iv must be at least 7 bytes");for(t=2;4>t&&u>>>8*t;t++);if(t<15-s&&(t=15-s),r=i.clamp(r,8*(15-t)),a=c.mode.ccm.C(e,a,r,f,o,t),e=c.mode.ccm.V(e,a.data,r,n,o,t),!i.equal(a.tag,e))throw new c.exception.corrupt("ccm: tag doesn't match");return a.data},na:function(e,t,r,n,o,i){var s=[],a=c.bitArray,f=a.i;if(n=[a.partial(8,(t.length?64:0)|n-2<<2|i-1)],n=a.concat(n,r),n[3]|=o,n=e.encrypt(n),t.length)for(r=a.bitLength(t)/8,65279>=r?s=[a.partial(16,r)]:4294967295>=r&&(s=a.concat([a.partial(16,65534)],[r])),s=a.concat(s,t),t=0;to||16l&&(c.mode.ccm.fa(s/f),l+=h),r[3]++,o=e.encrypt(r),t[s]^=o[0],t[s+1]^=o[1],t[s+2]^=o[2],t[s+3]^=o[3];return{tag:n,data:a.clamp(t,u)}}};c.mode.ocb2={name:"ocb2",encrypt:function(e,t,r,n,o,i){if(c.bitArray.bitLength(r)!==128)throw new c.exception.invalid("ocb iv must be 128 bits");var s,a=c.mode.ocb2.S,f=c.bitArray,u=f.i,l=[0,0,0,0];r=a(e.encrypt(r));var h,d=[];for(n=n||[],o=o||64,s=0;s+4o.bitLength(r)&&(a=i(a,n(a)),r=o.concat(r,[-2147483648,0,0,0])),s=i(s,r),e.encrypt(i(n(i(a,n(a))),s))},S:function(e){return[e[0]<<1^e[1]>>>31,e[1]<<1^e[2]>>>31,e[2]<<1^e[3]>>>31,e[3]<<1^135*(e[0]>>>31)]}};c.mode.gcm={name:"gcm",encrypt:function(e,t,r,n,o){var i=t.slice(0);return t=c.bitArray,n=n||[],e=c.mode.gcm.C(!0,e,i,n,r,o||128),t.concat(e.data,e.tag)},decrypt:function(e,t,r,n,o){var i=t.slice(0),s=c.bitArray,a=s.bitLength(i);if(o=o||128,n=n||[],o<=a?(t=s.bitSlice(i,a-o),i=s.bitSlice(i,0,a-o)):(t=i,i=[]),e=c.mode.gcm.C(!1,e,i,n,r,o),!s.equal(e.tag,t))throw new c.exception.corrupt("gcm: tag doesn't match");return e.data},ka:function(e,t){var r,n,o,i,s,a=c.bitArray.i;for(o=[0,0,0,0],i=t.slice(0),r=0;128>r;r++){for((n=(e[Math.floor(r/32)]&1<<31-r%32)!==0)&&(o=a(o,i)),s=(i[3]&1)!==0,n=3;0>>1|(i[n-1]&1)<<31;i[0]>>>=1,s&&(i[0]^=-520093696)}return o},j:function(e,t,r){var n,o=r.length;for(t=t.slice(0),n=0;no&&(e=t.hash(e)),n=0;nn||0>r)throw new c.exception.invalid("invalid params to pbkdf2");typeof e=="string"&&(e=c.codec.utf8String.toBits(e)),typeof t=="string"&&(t=c.codec.utf8String.toBits(t)),o=o||c.misc.hmac,e=new o(e);var i,s,a,f,u=[],l=c.bitArray;for(f=1;32*u.length<(n||1);f++){for(o=i=e.encrypt(l.concat(t,[f])),s=1;ss;s++)o.push(4294967296*Math.random()|0);for(s=0;s=1<this.o&&(this.o=i),this.P++,this.b=c.hash.sha256.hash(this.b.concat(o)),this.L=new c.cipher.aes(this.b),n=0;4>n&&(this.h[n]=this.h[n]+1|0,!this.h[n]);n++);}for(n=0;n>>1;this.c[s].update([n,this.N++,2,t,i,e.length].concat(e))}break;case"string":t===void 0&&(t=e.length),this.c[s].update([n,this.N++,3,t,i,e.length]),this.c[s].update(e);break;default:f=1}if(f)throw new c.exception.bug("random: addEntropy only supports number, array of numbers or string");this.m[s]+=t,this.f+=t,a===this.u&&(this.isReady()!==this.u&&Pe("seeded",Math.max(this.o,this.f)),Pe("progress",this.getProgress()))},isReady:function(e){return e=this.T[e!==void 0?e:this.M],this.o&&this.o>=e?this.m[0]>this.ba&&new Date().valueOf()>this.Z?this.J|this.I:this.I:this.f>=e?this.J|this.u:this.u},getProgress:function(e){return e=this.T[e||this.M],this.o>=e||this.f>e?1:this.f/e},startCollectors:function(){if(!this.D){if(this.a={loadTimeCollector:z(this,this.ma),mouseCollector:z(this,this.oa),keyboardCollector:z(this,this.la),accelerometerCollector:z(this,this.ea),touchCollector:z(this,this.qa)},window.addEventListener)window.addEventListener("load",this.a.loadTimeCollector,!1),window.addEventListener("mousemove",this.a.mouseCollector,!1),window.addEventListener("keypress",this.a.keyboardCollector,!1),window.addEventListener("devicemotion",this.a.accelerometerCollector,!1),window.addEventListener("touchmove",this.a.touchCollector,!1);else if(document.attachEvent)document.attachEvent("onload",this.a.loadTimeCollector),document.attachEvent("onmousemove",this.a.mouseCollector),document.attachEvent("keypress",this.a.keyboardCollector);else throw new c.exception.bug("can't attach event");this.D=!0}},stopCollectors:function(){this.D&&(window.removeEventListener?(window.removeEventListener("load",this.a.loadTimeCollector,!1),window.removeEventListener("mousemove",this.a.mouseCollector,!1),window.removeEventListener("keypress",this.a.keyboardCollector,!1),window.removeEventListener("devicemotion",this.a.accelerometerCollector,!1),window.removeEventListener("touchmove",this.a.touchCollector,!1)):document.detachEvent&&(document.detachEvent("onload",this.a.loadTimeCollector),document.detachEvent("onmousemove",this.a.mouseCollector),document.detachEvent("keypress",this.a.keyboardCollector)),this.D=!1)},addEventListener:function(e,t){this.K[e][this.ga++]=t},removeEventListener:function(e,t){var r,n,o=this.K[e],i=[];for(n in o)o.hasOwnProperty(n)&&o[n]===t&&i.push(n);for(r=0;rt&&(e.h[t]=e.h[t]+1|0,!e.h[t]);t++);return e.L.encrypt(e.h)}function z(e,t){return function(){t.apply(e,arguments)}}c.random=new c.prng(6);e:try{if(Z=typeof j<"u"&&j.exports){try{Q=Ke("crypto")}catch{Q=null}Z=Y=Q}if(Z&&Y.randomBytes)G=Y.randomBytes(128),G=new Uint32Array(new Uint8Array(G).buffer),c.random.addEntropy(G,1024,"crypto['randomBytes']");else if(typeof window<"u"&&typeof Uint32Array<"u"){if(H=new Uint32Array(32),window.crypto&&window.crypto.getRandomValues)window.crypto.getRandomValues(H);else if(window.msCrypto&&window.msCrypto.getRandomValues)window.msCrypto.getRandomValues(H);else break e;c.random.addEntropy(H,1024,"crypto['getRandomValues']")}}catch(e){typeof window<"u"&&window.console&&(console.log("There was an error collecting entropy from the browser:"),console.log(e))}var G,Y,H,Z,Q;c.json={defaults:{v:1,iter:1e4,ks:128,ts:64,mode:"ccm",adata:"",cipher:"aes"},ja:function(e,t,r,n){r=r||{},n=n||{};var o=c.json,i=o.g({iv:c.random.randomWords(4,0)},o.defaults),s;if(o.g(i,r),r=i.adata,typeof i.salt=="string"&&(i.salt=c.codec.base64.toBits(i.salt)),typeof i.iv=="string"&&(i.iv=c.codec.base64.toBits(i.iv)),!c.mode[i.mode]||!c.cipher[i.cipher]||typeof e=="string"&&100>=i.iter||i.ts!==64&&i.ts!==96&&i.ts!==128||i.ks!==128&&i.ks!==192&&i.ks!==256||2>i.iv.length||4=t.iter||t.ts!==64&&t.ts!==96&&t.ts!==128||t.ks!==128&&t.ks!==192&&t.ks!==256||!t.iv||2>t.iv.length||4{let n=t.isOk()?{type:"Ok",value:t.value}:{type:"Err",value:t.error},o=r.withStackTrace?new Error().stack:void 0;return{data:n,message:e,stack:o}};function T(e,t,r,n){function o(i){return i instanceof r?i:new r(function(s){s(i)})}return new(r||(r=Promise))(function(i,s){function a(l){try{u(n.next(l))}catch(h){s(h)}}function f(l){try{u(n.throw(l))}catch(h){s(h)}}function u(l){l.done?i(l.value):o(l.value).then(a,f)}u((n=n.apply(e,[])).next())})}function he(e){var t=typeof Symbol=="function"&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&typeof e.length=="number")return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function R(e){return this instanceof R?(this.v=e,this):new R(e)}function Qe(e,t,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=r.apply(e,t||[]),o,i=[];return o={},s("next"),s("throw"),s("return"),o[Symbol.asyncIterator]=function(){return this},o;function s(d){n[d]&&(o[d]=function(y){return new Promise(function(g,M){i.push([d,y,g,M])>1||a(d,y)})})}function a(d,y){try{f(n[d](y))}catch(g){h(i[0][3],g)}}function f(d){d.value instanceof R?Promise.resolve(d.value.v).then(u,l):h(i[0][2],d)}function u(d){a("next",d)}function l(d){a("throw",d)}function h(d,y){d(y),i.shift(),i.length&&a(i[0][0],i[0][1])}}function et(e){var t,r;return t={},n("next"),n("throw",function(o){throw o}),n("return"),t[Symbol.iterator]=function(){return this},t;function n(o,i){t[o]=e[o]?function(s){return(r=!r)?{value:R(e[o](s)),done:o==="return"}:i?i(s):s}:i}}function tt(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof he=="function"?he(e):e[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(i){r[i]=e[i]&&function(s){return new Promise(function(a,f){s=e[i](s),o(a,f,s.done,s.value)})}}function o(i,s,a,f){Promise.resolve(f).then(function(u){i({value:u,done:a})},s)}}var w=class e{constructor(t){this._promise=t}static fromSafePromise(t){let r=t.then(n=>new L(n));return new e(r)}static fromPromise(t,r){let n=t.then(o=>new L(o)).catch(o=>new x(r(o)));return new e(n)}static fromThrowable(t,r){return(...n)=>new e(T(this,void 0,void 0,function*(){try{return new L(yield t(...n))}catch(o){return new x(r?r(o):o)}}))}static combine(t){return rt(t)}static combineWithAllErrors(t){return nt(t)}map(t){return new e(this._promise.then(r=>T(this,void 0,void 0,function*(){return r.isErr()?new x(r.error):new L(yield t(r.value))})))}andThrough(t){return new e(this._promise.then(r=>T(this,void 0,void 0,function*(){if(r.isErr())return new x(r.error);let n=yield t(r.value);return n.isErr()?new x(n.error):new L(r.value)})))}andTee(t){return new e(this._promise.then(r=>T(this,void 0,void 0,function*(){if(r.isErr())return new x(r.error);try{yield t(r.value)}catch{}return new L(r.value)})))}mapErr(t){return new e(this._promise.then(r=>T(this,void 0,void 0,function*(){return r.isOk()?new L(r.value):new x(yield t(r.error))})))}andThen(t){return new e(this._promise.then(r=>{if(r.isErr())return new x(r.error);let n=t(r.value);return n instanceof e?n._promise:n}))}orElse(t){return new e(this._promise.then(r=>T(this,void 0,void 0,function*(){return r.isErr()?t(r.error):new L(r.value)})))}match(t,r){return this._promise.then(n=>n.match(t,r))}unwrapOr(t){return this._promise.then(r=>r.unwrapOr(t))}safeUnwrap(){return Qe(this,arguments,function*(){return yield R(yield R(yield*et(tt(yield R(this._promise.then(r=>r.safeUnwrap()))))))})}then(t,r){return this._promise.then(t,r)}},O=e=>new w(Promise.resolve(new L(e))),E=e=>new w(Promise.resolve(new x(e))),Mt=w.fromPromise,Tt=w.fromSafePromise,It=w.fromThrowable,de=e=>{let t=C([]);for(let r of e)if(r.isErr()){t=S(r.error);break}else t.map(n=>n.push(r.value));return t},rt=e=>w.fromSafePromise(Promise.all(e)).andThen(de),pe=e=>{let t=C([]);for(let r of e)r.isErr()&&t.isErr()?t.error.push(r.error):r.isErr()&&t.isOk()?t=S([r.error]):r.isOk()&&t.isOk()&&t.value.push(r.value);return t},nt=e=>w.fromSafePromise(Promise.all(e)).andThen(pe),re;(function(e){function t(o,i){return(...s)=>{try{let a=o(...s);return C(a)}catch(a){return S(i?i(a):a)}}}e.fromThrowable=t;function r(o){return de(o)}e.combine=r;function n(o){return pe(o)}e.combineWithAllErrors=n})(re||(re={}));var C=e=>new L(e);function S(e){return new x(e)}var L=class{constructor(t){this.value=t}isOk(){return!0}isErr(){return!this.isOk()}map(t){return C(t(this.value))}mapErr(t){return C(this.value)}andThen(t){return t(this.value)}andThrough(t){return t(this.value).map(r=>this.value)}andTee(t){try{t(this.value)}catch{}return C(this.value)}orElse(t){return C(this.value)}asyncAndThen(t){return t(this.value)}asyncAndThrough(t){return t(this.value).map(()=>this.value)}asyncMap(t){return w.fromSafePromise(t(this.value))}unwrapOr(t){return this.value}match(t,r){return t(this.value)}safeUnwrap(){let t=this.value;return function*(){return t}()}_unsafeUnwrap(t){return this.value}_unsafeUnwrapErr(t){throw le("Called `_unsafeUnwrapErr` on an Ok",this,t)}},x=class{constructor(t){this.error=t}isOk(){return!1}isErr(){return!this.isOk()}map(t){return S(this.error)}mapErr(t){return S(t(this.error))}andThrough(t){return S(this.error)}andTee(t){return S(this.error)}andThen(t){return S(this.error)}orElse(t){return t(this.error)}asyncAndThen(t){return E(this.error)}asyncAndThrough(t){return E(this.error)}asyncMap(t){return E(this.error)}unwrapOr(t){return t}match(t,r){return r(this.error)}safeUnwrap(){let t=this.error;return function*(){throw yield S(t),new Error("Do not use this generator out of `safeTry`")}()}_unsafeUnwrap(t){throw le("Called `_unsafeUnwrap` on an Err",this,t)}_unsafeUnwrapErr(t){return this.error}},Ut=re.fromThrowable;var k=class extends Error{constructor(r,n={}){let{cause:o,context:i}=n;super(r,{cause:o});b(this,"context");this.name=this.constructor.name,this.context=i}};var D=class extends k{};var J=class extends D{constructor(){super(...arguments);b(this,"message","An error occured while trying to connect to WebSocket")}};var P=e=>{if(e instanceof Error)return e;let t="[Unable to stringify the thrown value]";try{t=JSON.stringify(e)}catch{}return new Error(t)};var ot=()=>typeof Deno<"u";var I=e=>ot()?new URL(`./worker/${e}.ts`,new URL(".",import.meta.url).href):new URL(import.meta.resolve(`./${e==="main"?`worker/${e}`:e}.js`));var ke=ue(De());var m=new ke.default,v,be=!1;self.onmessage=e=>{lt(e),be||(be=!0,m.once("OPERATION_FAILED",()=>{v&&v.terminate()}))};var B=(e,t)=>(Object.assign(e,t),typeof WorkerGlobalScope<"u"&&self.postMessage({event:"FILE_UPDATED",lufiFile:e}),e);var lt=(e,t)=>{let{action:r}=e.data;if(r===5||r===8)v.postMessage(e.data);else{switch(r){case 2:v=new Worker(I("cancel"),{type:"module"}),v.postMessage(e.data);break;case 3:v=new Worker(I("download"),{type:"module"}),v.postMessage(e.data);break;case 4:v=new Worker(I("infos"),{type:"module"}),v.postMessage(e.data);break;case 7:v=v||new Worker(I("remove"),{type:"module"}),v.postMessage(e.data);break;case 9:v=v||new Worker(I("upload"),{type:"module"}),v.postMessage(e.data);break;default:console.error("Action not found")}v.onmessage=n=>{t&&t(n),self.postMessage(n.data)},v.onerror=n=>{console.error(`Error: ${n.message}`)}}},_e=()=>{m.once("SOCKET_OPENED",()=>{self.postMessage({event:"SOCKET_OPENED"})}),m.once("OPERATION_FAILED",e=>{self.postMessage({event:"OPERATION_FAILED",error:e})})};var N=class{constructor(t,r){if(!t||t.length!=64)throw Error("Charset must contain 64 characters");this._charset=t,this._noPadding=!!r,this._valid=new RegExp("^["+this._charset.replace("-","\\-")+"]+={0,2}$")}Encode(t){let r=t.byteLength;if(!r)return"";let n=new Uint8Array(t),o="";for(let i=0;i>2]+this._charset[(n[i]&3)<<4|n[i+1]>>4]+this._charset[(n[i+1]&15)<<2|n[i+2]>>6]+this._charset[n[i+2]&63];return r%3==2?(o=o.substring(0,o.length-1),this._noPadding||(o+="=")):r%3==1&&(o=o.substring(0,o.length-2),this._noPadding||(o+="==")),o}Decode(t){if(t=(t||"").replace(/[\s]/g,""),!t)return new ArrayBuffer(0);if(!this._valid.test(t))throw Error("Invalid base64 input sequence");let r=Math.floor(t.length*.75);t[t.length-2]=="="?r-=2:t[t.length-1]=="="&&r--;let n=new Uint8Array(r),o,i,s,a,f=0,u=0;for(;f>4,n[f++]=(i&15)<<4|s>>2,n[f++]=(s&3)<<6|a;return n.buffer}};var dt=new N("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/");function F(e){return dt.Decode(e)}var pt=new N("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",!0);function oe(e){return pt.Decode(e)}var Ue=ue(Te());var _=class extends k{};var W=class extends _{constructor(){super(...arguments);b(this,"message","Unable to decrypt the provided data")}};var Be=(e,t)=>{try{let r=typeof t=="string"?t:t.data;return O(F(Ue.default.decrypt(e,r)))}catch(r){return E(new W(void 0,{cause:P(r)}))}};var Ne=(e,t)=>gt(e).andThen(r=>w.fromPromise(crypto.subtle.decrypt({name:"AES-GCM",iv:t.iv},r,F(t.data)),n=>new W(void 0,{cause:P(n)})));var gt=e=>w.fromPromise(crypto.subtle.importKey("raw",oe(e),{name:"AES-GCM"},!1,["encrypt","decrypt"]),t=>new _("Unable to import cryptography key",{cause:P(t)}));var je=(e,t)=>t.algo===void 0||t.algo===0?Be(e,t):Ne(e,t);var A={},We=5,Et=e=>(m.emit("UPLOAD_CANCELLED",e.success),O(void 0)),At=(e,t)=>{let r=e.split("XXMOJOXX"),n=r.shift();if(n!==void 0){let o=JSON.parse(n);if(_t(o)){let i=r.shift();if(i){let s=JSON.parse(i);return s.iv&&(s.iv=new Uint8Array(Object.values(s.iv))),je(t.keys.client,s).andThen(a=>{let f=typeof a=="string"?new TextEncoder().encode(a).buffer:a;return o.part===0?(B(t,{chunksReady:t.chunksReady+1,delAtFirstView:o.del_at_first_view,delay:o.delay,name:o.name,size:o.size,totalChunks:o.total,type:o.type,zipped:o.zipped}),m.emit("DOWNLOAD_STARTED")):B(t,{chunksReady:t.chunksReady+1}),m.emit("CHUNK_DOWNLOADED",f,o.part),++o.part===o.total?Dt(t).andThen(()=>(m.emit("DOWNLOAD_COMPLETE"),m.emit("SOCKET_OPERATION_TERMINATED"),O(void 0))):O(void 0)})}else{let s=new D("Can't retrieve metadata from data received by the server");return m.emit("OPERATION_FAILED",s),E(s)}}else{let i=new D(o.msg);return m.emit("OPERATION_FAILED",i),E(i)}}else{let o=new D("Can't retrieve metadata from data received by the server");return m.emit("OPERATION_FAILED",o),E(o)}},Lt=(e,t)=>{if(e.success)return e.j===0&&(B(t,{keys:{client:t.keys.client,server:e.short},actionToken:e.token,queueIndex:e.i}),m.emit("UPLOAD_STARTED")),B(t,{chunksReady:t.chunksReady+1,createdAt:e.created_at}),m.emit("CHUNK_UPLOADED"),t.chunksReady===t.totalChunks&&(B(t,{uploadStatus:1}),m.emit("UPLOAD_COMPLETE"),m.emit("SOCKET_OPERATION_TERMINATED")),O(void 0);{let r=new D(e.msg);return m.emit("OPERATION_FAILED",r),E(r)}},xt=(e,t)=>{let r=kt(e.data),n;if(r)if(!r.action&&r.msg){let o=new D(r.msg);return m.emit("OPERATION_FAILED",o),E(o)}else"delay"in r?n=Lt(r,t):n=Et(r);else n=At(e.data,t);return n},Ot=e=>A!==void 0&&A[e]!==void 0&&A[e].readyState===WebSocket.CONNECTING,ce=e=>A!==void 0&&A[e]!==void 0&&A[e].readyState===WebSocket.OPEN;var Je=(e,t)=>{let r;return e.password?r={part:t,file_pwd:e.password}:r={part:t},ae(ee(e),e,JSON.stringify(r))},Dt=e=>{let t;return e.password?t={ended:!0,file_pwd:e.password}:t={ended:!0},ae(ee(e),e,JSON.stringify(t))};var ae=(e,t,r)=>ce(e)?(A[e].onmessage=n=>xt(n,t),A[e].send(r),O(void 0)):Fe(e).andThen(()=>ae(e,t,r)),Fe=(e,t=0)=>(!ce(e)&&!Ot(e)&&(A[e]=new WebSocket(e),m.once("SOCKET_OPERATION_TERMINATED",()=>{A[e].close()}),m.once("OPERATION_FAILED",()=>{m.emit("SOCKET_OPERATION_TERMINATED")}),A[e].onopen=()=>{m.emit("SOCKET_OPENED")},A[e].onclose=()=>{},A[e].onerror=()=>++t<=We?(console.error(`An error happened while trying to connect to WebSocket ${e}. Trying again. ${t} / ${We}`),Fe(e,t)):(m.emit("SOCKET_ONERROR"),E(new J(`Unable to connect to WebSocket ${e}.`)))),bt(e).andThen(()=>O(e)).orElse(r=>E(r))),bt=e=>w.fromPromise(new Promise((t,r)=>{ce(e)?t(void 0):(m.once("SOCKET_OPENED",()=>{t(void 0)}),m.on("SOCKET_ONERROR",()=>{r(new J)}))}),t=>P(t));var St=(e,t)=>{let r=new URL(e);return r.protocol=r.protocol==="http:"?"ws:":"wss:",r.pathname+=t,new URL(r.origin+r.pathname)},ee=e=>St(new URL(e.serverUrl),"download"+`/${e.keys.server}`).toString();var kt=e=>{try{let t=JSON.parse(e);if(t&&typeof t=="object")return t}catch{}return!1},_t=e=>typeof e=="object"&&e!==null&&!("msg"in e);var Xe=!1;self.onmessage=e=>{Xe||(_e(),Xe=!0),m.on("DOWNLOAD_STARTED",()=>{A[ee(e.data.args.lufiFile)].close(),self.postMessage({event:"INFOS_RETRIEVED"})}),Rt(e.data).mapErr(t=>{self.postMessage({event:"OPERATION_FAILED",error:t})})};var Rt=e=>Je(e.args.lufiFile,0); diff --git a/themes/default/public/js/worker/main.js b/themes/default/public/js/worker/main.js index bdaf6bf..0245dfd 100644 --- a/themes/default/public/js/worker/main.js +++ b/themes/default/public/js/worker/main.js @@ -1,934 +1 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); - -// node_modules/.deno/events@3.3.0/node_modules/events/events.js -var require_events = __commonJS({ - "node_modules/.deno/events@3.3.0/node_modules/events/events.js"(exports, module) { - "use strict"; - var R = typeof Reflect === "object" ? Reflect : null; - var ReflectApply = R && typeof R.apply === "function" ? R.apply : function ReflectApply2(target, receiver, args) { - return Function.prototype.apply.call(target, receiver, args); - }; - var ReflectOwnKeys; - if (R && typeof R.ownKeys === "function") { - ReflectOwnKeys = R.ownKeys; - } else if (Object.getOwnPropertySymbols) { - ReflectOwnKeys = function ReflectOwnKeys2(target) { - return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target)); - }; - } else { - ReflectOwnKeys = function ReflectOwnKeys2(target) { - return Object.getOwnPropertyNames(target); - }; - } - function ProcessEmitWarning(warning) { - if (console && console.warn) console.warn(warning); - } - var NumberIsNaN = Number.isNaN || function NumberIsNaN2(value) { - return value !== value; - }; - function EventEmitter2() { - EventEmitter2.init.call(this); - } - module.exports = EventEmitter2; - module.exports.once = once; - EventEmitter2.EventEmitter = EventEmitter2; - EventEmitter2.prototype._events = void 0; - EventEmitter2.prototype._eventsCount = 0; - EventEmitter2.prototype._maxListeners = void 0; - var defaultMaxListeners = 10; - function checkListener(listener) { - if (typeof listener !== "function") { - throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); - } - } - Object.defineProperty(EventEmitter2, "defaultMaxListeners", { - enumerable: true, - get: function() { - return defaultMaxListeners; - }, - set: function(arg) { - if (typeof arg !== "number" || arg < 0 || NumberIsNaN(arg)) { - throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + "."); - } - defaultMaxListeners = arg; - } - }); - EventEmitter2.init = function() { - if (this._events === void 0 || this._events === Object.getPrototypeOf(this)._events) { - this._events = /* @__PURE__ */ Object.create(null); - this._eventsCount = 0; - } - this._maxListeners = this._maxListeners || void 0; - }; - EventEmitter2.prototype.setMaxListeners = function setMaxListeners(n) { - if (typeof n !== "number" || n < 0 || NumberIsNaN(n)) { - throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + "."); - } - this._maxListeners = n; - return this; - }; - function _getMaxListeners(that) { - if (that._maxListeners === void 0) - return EventEmitter2.defaultMaxListeners; - return that._maxListeners; - } - EventEmitter2.prototype.getMaxListeners = function getMaxListeners() { - return _getMaxListeners(this); - }; - EventEmitter2.prototype.emit = function emit(type) { - var args = []; - for (var i = 1; i < arguments.length; i++) args.push(arguments[i]); - var doError = type === "error"; - var events2 = this._events; - if (events2 !== void 0) - doError = doError && events2.error === void 0; - else if (!doError) - return false; - if (doError) { - var er; - if (args.length > 0) - er = args[0]; - if (er instanceof Error) { - throw er; - } - var err2 = new Error("Unhandled error." + (er ? " (" + er.message + ")" : "")); - err2.context = er; - throw err2; - } - var handler = events2[type]; - if (handler === void 0) - return false; - if (typeof handler === "function") { - ReflectApply(handler, this, args); - } else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) - ReflectApply(listeners[i], this, args); - } - return true; - }; - function _addListener(target, type, listener, prepend) { - var m; - var events2; - var existing; - checkListener(listener); - events2 = target._events; - if (events2 === void 0) { - events2 = target._events = /* @__PURE__ */ Object.create(null); - target._eventsCount = 0; - } else { - if (events2.newListener !== void 0) { - target.emit( - "newListener", - type, - listener.listener ? listener.listener : listener - ); - events2 = target._events; - } - existing = events2[type]; - } - if (existing === void 0) { - existing = events2[type] = listener; - ++target._eventsCount; - } else { - if (typeof existing === "function") { - existing = events2[type] = prepend ? [listener, existing] : [existing, listener]; - } else if (prepend) { - existing.unshift(listener); - } else { - existing.push(listener); - } - m = _getMaxListeners(target); - if (m > 0 && existing.length > m && !existing.warned) { - existing.warned = true; - var w = new Error("Possible EventEmitter memory leak detected. " + existing.length + " " + String(type) + " listeners added. Use emitter.setMaxListeners() to increase limit"); - w.name = "MaxListenersExceededWarning"; - w.emitter = target; - w.type = type; - w.count = existing.length; - ProcessEmitWarning(w); - } - } - return target; - } - EventEmitter2.prototype.addListener = function addListener(type, listener) { - return _addListener(this, type, listener, false); - }; - EventEmitter2.prototype.on = EventEmitter2.prototype.addListener; - EventEmitter2.prototype.prependListener = function prependListener(type, listener) { - return _addListener(this, type, listener, true); - }; - function onceWrapper() { - if (!this.fired) { - this.target.removeListener(this.type, this.wrapFn); - this.fired = true; - if (arguments.length === 0) - return this.listener.call(this.target); - return this.listener.apply(this.target, arguments); - } - } - function _onceWrap(target, type, listener) { - var state = { fired: false, wrapFn: void 0, target, type, listener }; - var wrapped = onceWrapper.bind(state); - wrapped.listener = listener; - state.wrapFn = wrapped; - return wrapped; - } - EventEmitter2.prototype.once = function once2(type, listener) { - checkListener(listener); - this.on(type, _onceWrap(this, type, listener)); - return this; - }; - EventEmitter2.prototype.prependOnceListener = function prependOnceListener(type, listener) { - checkListener(listener); - this.prependListener(type, _onceWrap(this, type, listener)); - return this; - }; - EventEmitter2.prototype.removeListener = function removeListener(type, listener) { - var list, events2, position, i, originalListener; - checkListener(listener); - events2 = this._events; - if (events2 === void 0) - return this; - list = events2[type]; - if (list === void 0) - return this; - if (list === listener || list.listener === listener) { - if (--this._eventsCount === 0) - this._events = /* @__PURE__ */ Object.create(null); - else { - delete events2[type]; - if (events2.removeListener) - this.emit("removeListener", type, list.listener || listener); - } - } else if (typeof list !== "function") { - position = -1; - for (i = list.length - 1; i >= 0; i--) { - if (list[i] === listener || list[i].listener === listener) { - originalListener = list[i].listener; - position = i; - break; - } - } - if (position < 0) - return this; - if (position === 0) - list.shift(); - else { - spliceOne(list, position); - } - if (list.length === 1) - events2[type] = list[0]; - if (events2.removeListener !== void 0) - this.emit("removeListener", type, originalListener || listener); - } - return this; - }; - EventEmitter2.prototype.off = EventEmitter2.prototype.removeListener; - EventEmitter2.prototype.removeAllListeners = function removeAllListeners(type) { - var listeners, events2, i; - events2 = this._events; - if (events2 === void 0) - return this; - if (events2.removeListener === void 0) { - if (arguments.length === 0) { - this._events = /* @__PURE__ */ Object.create(null); - this._eventsCount = 0; - } else if (events2[type] !== void 0) { - if (--this._eventsCount === 0) - this._events = /* @__PURE__ */ Object.create(null); - else - delete events2[type]; - } - return this; - } - if (arguments.length === 0) { - var keys = Object.keys(events2); - var key; - for (i = 0; i < keys.length; ++i) { - key = keys[i]; - if (key === "removeListener") continue; - this.removeAllListeners(key); - } - this.removeAllListeners("removeListener"); - this._events = /* @__PURE__ */ Object.create(null); - this._eventsCount = 0; - return this; - } - listeners = events2[type]; - if (typeof listeners === "function") { - this.removeListener(type, listeners); - } else if (listeners !== void 0) { - for (i = listeners.length - 1; i >= 0; i--) { - this.removeListener(type, listeners[i]); - } - } - return this; - }; - function _listeners(target, type, unwrap) { - var events2 = target._events; - if (events2 === void 0) - return []; - var evlistener = events2[type]; - if (evlistener === void 0) - return []; - if (typeof evlistener === "function") - return unwrap ? [evlistener.listener || evlistener] : [evlistener]; - return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); - } - EventEmitter2.prototype.listeners = function listeners(type) { - return _listeners(this, type, true); - }; - EventEmitter2.prototype.rawListeners = function rawListeners(type) { - return _listeners(this, type, false); - }; - EventEmitter2.listenerCount = function(emitter, type) { - if (typeof emitter.listenerCount === "function") { - return emitter.listenerCount(type); - } else { - return listenerCount.call(emitter, type); - } - }; - EventEmitter2.prototype.listenerCount = listenerCount; - function listenerCount(type) { - var events2 = this._events; - if (events2 !== void 0) { - var evlistener = events2[type]; - if (typeof evlistener === "function") { - return 1; - } else if (evlistener !== void 0) { - return evlistener.length; - } - } - return 0; - } - EventEmitter2.prototype.eventNames = function eventNames() { - return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : []; - }; - function arrayClone(arr, n) { - var copy = new Array(n); - for (var i = 0; i < n; ++i) - copy[i] = arr[i]; - return copy; - } - function spliceOne(list, index) { - for (; index + 1 < list.length; index++) - list[index] = list[index + 1]; - list.pop(); - } - function unwrapListeners(arr) { - var ret = new Array(arr.length); - for (var i = 0; i < ret.length; ++i) { - ret[i] = arr[i].listener || arr[i]; - } - return ret; - } - function once(emitter, name) { - return new Promise(function(resolve, reject) { - function errorListener(err2) { - emitter.removeListener(name, resolver); - reject(err2); - } - function resolver() { - if (typeof emitter.removeListener === "function") { - emitter.removeListener("error", errorListener); - } - resolve([].slice.call(arguments)); - } - ; - eventTargetAgnosticAddListener(emitter, name, resolver, { once: true }); - if (name !== "error") { - addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true }); - } - }); - } - function addErrorHandlerIfEventEmitter(emitter, handler, flags) { - if (typeof emitter.on === "function") { - eventTargetAgnosticAddListener(emitter, "error", handler, flags); - } - } - function eventTargetAgnosticAddListener(emitter, name, listener, flags) { - if (typeof emitter.on === "function") { - if (flags.once) { - emitter.once(name, listener); - } else { - emitter.on(name, listener); - } - } else if (typeof emitter.addEventListener === "function") { - emitter.addEventListener(name, function wrapListener(arg) { - if (flags.once) { - emitter.removeEventListener(name, wrapListener); - } - listener(arg); - }); - } else { - throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof emitter); - } - } - } -}); - -// src/worker/main.ts -var import_events = __toESM(require_events()); - -// src/enum/worker-action.ts -var WORKER_ACTION = /* @__PURE__ */ ((WORKER_ACTION2) => { - WORKER_ACTION2[WORKER_ACTION2["ARCHIVE_ADD"] = 0] = "ARCHIVE_ADD"; - WORKER_ACTION2[WORKER_ACTION2["ARCHHIVE_COMPRESS"] = 1] = "ARCHHIVE_COMPRESS"; - WORKER_ACTION2[WORKER_ACTION2["CANCEL"] = 2] = "CANCEL"; - WORKER_ACTION2[WORKER_ACTION2["DOWNLOAD"] = 3] = "DOWNLOAD"; - WORKER_ACTION2[WORKER_ACTION2["INFOS"] = 4] = "INFOS"; - WORKER_ACTION2[WORKER_ACTION2["PAUSE"] = 5] = "PAUSE"; - WORKER_ACTION2[WORKER_ACTION2["PROVIDE_FILE"] = 6] = "PROVIDE_FILE"; - WORKER_ACTION2[WORKER_ACTION2["REMOVE"] = 7] = "REMOVE"; - WORKER_ACTION2[WORKER_ACTION2["RESUME"] = 8] = "RESUME"; - WORKER_ACTION2[WORKER_ACTION2["UPLOAD"] = 9] = "UPLOAD"; - return WORKER_ACTION2; -})(WORKER_ACTION || {}); - -// node_modules/.deno/neverthrow@8.0.0/node_modules/neverthrow/dist/index.es.js -var defaultErrorConfig = { - withStackTrace: false -}; -var createNeverThrowError = (message, result, config = defaultErrorConfig) => { - const data = result.isOk() ? { type: "Ok", value: result.value } : { type: "Err", value: result.error }; - const maybeStack = config.withStackTrace ? new Error().stack : void 0; - return { - data, - message, - stack: maybeStack - }; -}; -function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function(resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, [])).next()); - }); -} -function __values(o) { - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; - if (m) return m.call(o); - if (o && typeof o.length === "number") return { - next: function() { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); -} -function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); -} -function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { - return this; - }, i; - function verb(n) { - if (g[n]) i[n] = function(v) { - return new Promise(function(a, b) { - q.push([n, v, a, b]) > 1 || resume(n, v); - }); - }; - } - function resume(n, v) { - try { - step(g[n](v)); - } catch (e) { - settle(q[0][3], e); - } - } - function step(r) { - r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); - } - function fulfill(value) { - resume("next", value); - } - function reject(value) { - resume("throw", value); - } - function settle(f, v) { - if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); - } -} -function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function(e) { - throw e; - }), verb("return"), i[Symbol.iterator] = function() { - return this; - }, i; - function verb(n, f) { - i[n] = o[n] ? function(v) { - return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; - } : f; - } -} -function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { - return this; - }, i); - function verb(n) { - i[n] = o[n] && function(v) { - return new Promise(function(resolve, reject) { - v = o[n](v), settle(resolve, reject, v.done, v.value); - }); - }; - } - function settle(resolve, reject, d, v) { - Promise.resolve(v).then(function(v2) { - resolve({ value: v2, done: d }); - }, reject); - } -} -var ResultAsync = class _ResultAsync { - constructor(res) { - this._promise = res; - } - static fromSafePromise(promise) { - const newPromise = promise.then((value) => new Ok(value)); - return new _ResultAsync(newPromise); - } - static fromPromise(promise, errorFn) { - const newPromise = promise.then((value) => new Ok(value)).catch((e) => new Err(errorFn(e))); - return new _ResultAsync(newPromise); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any - static fromThrowable(fn, errorFn) { - return (...args) => { - return new _ResultAsync((() => __awaiter(this, void 0, void 0, function* () { - try { - return new Ok(yield fn(...args)); - } catch (error) { - return new Err(errorFn ? errorFn(error) : error); - } - }))()); - }; - } - static combine(asyncResultList) { - return combineResultAsyncList(asyncResultList); - } - static combineWithAllErrors(asyncResultList) { - return combineResultAsyncListWithAllErrors(asyncResultList); - } - map(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return new Err(res.error); - } - return new Ok(yield f(res.value)); - }))); - } - andThrough(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return new Err(res.error); - } - const newRes = yield f(res.value); - if (newRes.isErr()) { - return new Err(newRes.error); - } - return new Ok(res.value); - }))); - } - andTee(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return new Err(res.error); - } - try { - yield f(res.value); - } catch (e) { - } - return new Ok(res.value); - }))); - } - mapErr(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isOk()) { - return new Ok(res.value); - } - return new Err(yield f(res.error)); - }))); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThen(f) { - return new _ResultAsync(this._promise.then((res) => { - if (res.isErr()) { - return new Err(res.error); - } - const newValue = f(res.value); - return newValue instanceof _ResultAsync ? newValue._promise : newValue; - })); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - orElse(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return f(res.error); - } - return new Ok(res.value); - }))); - } - match(ok2, _err) { - return this._promise.then((res) => res.match(ok2, _err)); - } - unwrapOr(t) { - return this._promise.then((res) => res.unwrapOr(t)); - } - /** - * Emulates Rust's `?` operator in `safeTry`'s body. See also `safeTry`. - */ - safeUnwrap() { - return __asyncGenerator(this, arguments, function* safeUnwrap_1() { - return yield __await(yield __await(yield* __asyncDelegator(__asyncValues(yield __await(this._promise.then((res) => res.safeUnwrap())))))); - }); - } - // Makes ResultAsync implement PromiseLike - then(successCallback, failureCallback) { - return this._promise.then(successCallback, failureCallback); - } -}; -var errAsync = (err2) => new ResultAsync(Promise.resolve(new Err(err2))); -var fromPromise = ResultAsync.fromPromise; -var fromSafePromise = ResultAsync.fromSafePromise; -var fromAsyncThrowable = ResultAsync.fromThrowable; -var combineResultList = (resultList) => { - let acc = ok([]); - for (const result of resultList) { - if (result.isErr()) { - acc = err(result.error); - break; - } else { - acc.map((list) => list.push(result.value)); - } - } - return acc; -}; -var combineResultAsyncList = (asyncResultList) => ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultList); -var combineResultListWithAllErrors = (resultList) => { - let acc = ok([]); - for (const result of resultList) { - if (result.isErr() && acc.isErr()) { - acc.error.push(result.error); - } else if (result.isErr() && acc.isOk()) { - acc = err([result.error]); - } else if (result.isOk() && acc.isOk()) { - acc.value.push(result.value); - } - } - return acc; -}; -var combineResultAsyncListWithAllErrors = (asyncResultList) => ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultListWithAllErrors); -var Result; -(function(Result2) { - function fromThrowable2(fn, errorFn) { - return (...args) => { - try { - const result = fn(...args); - return ok(result); - } catch (e) { - return err(errorFn ? errorFn(e) : e); - } - }; - } - Result2.fromThrowable = fromThrowable2; - function combine(resultList) { - return combineResultList(resultList); - } - Result2.combine = combine; - function combineWithAllErrors(resultList) { - return combineResultListWithAllErrors(resultList); - } - Result2.combineWithAllErrors = combineWithAllErrors; -})(Result || (Result = {})); -var ok = (value) => new Ok(value); -function err(err2) { - return new Err(err2); -} -var Ok = class { - constructor(value) { - this.value = value; - } - isOk() { - return true; - } - isErr() { - return !this.isOk(); - } - map(f) { - return ok(f(this.value)); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - mapErr(_f) { - return ok(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThen(f) { - return f(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThrough(f) { - return f(this.value).map((_value) => this.value); - } - andTee(f) { - try { - f(this.value); - } catch (e) { - } - return ok(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - orElse(_f) { - return ok(this.value); - } - asyncAndThen(f) { - return f(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - asyncAndThrough(f) { - return f(this.value).map(() => this.value); - } - asyncMap(f) { - return ResultAsync.fromSafePromise(f(this.value)); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - unwrapOr(_v) { - return this.value; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - match(ok2, _err) { - return ok2(this.value); - } - safeUnwrap() { - const value = this.value; - return function* () { - return value; - }(); - } - _unsafeUnwrap(_) { - return this.value; - } - _unsafeUnwrapErr(config) { - throw createNeverThrowError("Called `_unsafeUnwrapErr` on an Ok", this, config); - } -}; -var Err = class { - constructor(error) { - this.error = error; - } - isOk() { - return false; - } - isErr() { - return !this.isOk(); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - map(_f) { - return err(this.error); - } - mapErr(f) { - return err(f(this.error)); - } - andThrough(_f) { - return err(this.error); - } - andTee(_f) { - return err(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThen(_f) { - return err(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - orElse(f) { - return f(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - asyncAndThen(_f) { - return errAsync(this.error); - } - asyncAndThrough(_f) { - return errAsync(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - asyncMap(_f) { - return errAsync(this.error); - } - unwrapOr(v) { - return v; - } - match(_ok, err2) { - return err2(this.error); - } - safeUnwrap() { - const error = this.error; - return function* () { - yield err(error); - throw new Error("Do not use this generator out of `safeTry`"); - }(); - } - _unsafeUnwrap(config) { - throw createNeverThrowError("Called `_unsafeUnwrap` on an Err", this, config); - } - _unsafeUnwrapErr(_) { - return this.error; - } -}; -var fromThrowable = Result.fromThrowable; - -// src/utils.ts -var isDenoRuntime = () => typeof Deno !== "undefined"; -var workerUrl = (relativePath) => isDenoRuntime() ? new URL(`./worker/${relativePath}.ts`, new URL(".", import.meta.url).href) : new URL( - import.meta.resolve( - `./${relativePath === "main" ? `worker/${relativePath}` : relativePath}.js` - ) -); - -// src/worker/main.ts -var events = new import_events.default(); -var worker; -var isInitialized = false; -self.onmessage = (event) => { - addWorker(event); - if (!isInitialized) { - isInitialized = true; - events.once("OPERATION_FAILED" /* OPERATION_FAILED */, () => { - if (worker) { - worker.terminate(); - } - }); - } -}; -var updateFile = (lufiFile, args) => { - Object.assign(lufiFile, args); - if (typeof WorkerGlobalScope !== "undefined") { - self.postMessage({ - event: "FILE_UPDATED" /* FILE_UPDATED */, - lufiFile - }); - } - return lufiFile; -}; -var sendFileError = (lufiFile, error) => { - updateFile(lufiFile, { uploadStatus: 2 /* FAILED */ }); - self.postMessage({ event: "OPERATION_FAILED" /* OPERATION_FAILED */, error }); -}; -var addWorker = (event, callback) => { - const { action } = event.data; - if (action === 5 /* PAUSE */ || action === 8 /* RESUME */) { - worker.postMessage(event.data); - } else { - switch (action) { - case 2 /* CANCEL */: - { - worker = new Worker(workerUrl("cancel"), { type: "module" }); - worker.postMessage(event.data); - } - break; - case 3 /* DOWNLOAD */: - { - worker = new Worker(workerUrl("download"), { type: "module" }); - worker.postMessage(event.data); - } - break; - case 4 /* INFOS */: - { - worker = new Worker(workerUrl("infos"), { type: "module" }); - worker.postMessage(event.data); - } - break; - case 7 /* REMOVE */: - { - worker = worker || new Worker(workerUrl("remove"), { type: "module" }); - worker.postMessage(event.data); - } - break; - case 9 /* UPLOAD */: - { - worker = worker || new Worker(workerUrl("upload"), { type: "module" }); - worker.postMessage(event.data); - } - break; - default: { - console.error("Action not found"); - } - } - worker.onmessage = (e) => { - if (callback) callback(e); - self.postMessage(e.data); - }; - worker.onerror = (error) => { - console.error(`Error: ${error.message}`); - }; - } -}; -var init = () => { - events.once("SOCKET_OPENED" /* SOCKET_OPENED */, () => { - self.postMessage({ - event: "SOCKET_OPENED" /* SOCKET_OPENED */ - }); - }); - events.once("OPERATION_FAILED" /* OPERATION_FAILED */, (error) => { - self.postMessage({ event: "OPERATION_FAILED" /* OPERATION_FAILED */, error }); - }); -}; -var isWorkerActionMessage = (message) => { - return typeof message === "object" && message !== null && "action" in message && Object.values(WORKER_ACTION).includes(message.action); -}; -export { - events, - init, - isWorkerActionMessage, - sendFileError, - updateFile -}; +var V=Object.create;var C=Object.defineProperty;var ee=Object.getOwnPropertyDescriptor;var re=Object.getOwnPropertyNames;var te=Object.getPrototypeOf,ne=Object.prototype.hasOwnProperty;var oe=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports);var ie=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of re(e))!ne.call(r,o)&&o!==t&&C(r,o,{get:()=>e[o],enumerable:!(n=ee(e,o))||n.enumerable});return r};var se=(r,e,t)=>(t=r!=null?V(te(r)):{},ie(e||!r||!r.__esModule?C(t,"default",{value:r,enumerable:!0}):t,r));var $=oe((De,M)=>{"use strict";var g=typeof Reflect=="object"?Reflect:null,U=g&&typeof g.apply=="function"?g.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)},O;g&&typeof g.ownKeys=="function"?O=g.ownKeys:Object.getOwnPropertySymbols?O=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:O=function(e){return Object.getOwnPropertyNames(e)};function ue(r){console&&console.warn&&console.warn(r)}var R=Number.isNaN||function(e){return e!==e};function a(){a.init.call(this)}M.exports=a;M.exports.once=le;a.EventEmitter=a;a.prototype._events=void 0;a.prototype._eventsCount=0;a.prototype._maxListeners=void 0;var F=10;function A(r){if(typeof r!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof r)}Object.defineProperty(a,"defaultMaxListeners",{enumerable:!0,get:function(){return F},set:function(r){if(typeof r!="number"||r<0||R(r))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+r+".");F=r}});a.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};a.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||R(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function T(r){return r._maxListeners===void 0?a.defaultMaxListeners:r._maxListeners}a.prototype.getMaxListeners=function(){return T(this)};a.prototype.emit=function(e){for(var t=[],n=1;n0&&(i=t[0]),i instanceof Error)throw i;var f=new Error("Unhandled error."+(i?" ("+i.message+")":""));throw f.context=i,f}var h=s[e];if(h===void 0)return!1;if(typeof h=="function")U(h,this,t);else for(var m=h.length,u=H(h,m),n=0;n0&&i.length>o&&!i.warned){i.warned=!0;var f=new Error("Possible EventEmitter memory leak detected. "+i.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");f.name="MaxListenersExceededWarning",f.emitter=r,f.type=e,f.count=i.length,ue(f)}return r}a.prototype.addListener=function(e,t){return j(this,e,t,!1)};a.prototype.on=a.prototype.addListener;a.prototype.prependListener=function(e,t){return j(this,e,t,!0)};function ae(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function N(r,e,t){var n={fired:!1,wrapFn:void 0,target:r,type:e,listener:t},o=ae.bind(n);return o.listener=t,n.wrapFn=o,o}a.prototype.once=function(e,t){return A(t),this.on(e,N(this,e,t)),this};a.prototype.prependOnceListener=function(e,t){return A(t),this.prependListener(e,N(this,e,t)),this};a.prototype.removeListener=function(e,t){var n,o,s,i,f;if(A(t),o=this._events,o===void 0)return this;if(n=o[e],n===void 0)return this;if(n===t||n.listener===t)--this._eventsCount===0?this._events=Object.create(null):(delete o[e],o.removeListener&&this.emit("removeListener",e,n.listener||t));else if(typeof n!="function"){for(s=-1,i=n.length-1;i>=0;i--)if(n[i]===t||n[i].listener===t){f=n[i].listener,s=i;break}if(s<0)return this;s===0?n.shift():fe(n,s),n.length===1&&(o[e]=n[0]),o.removeListener!==void 0&&this.emit("removeListener",e,f||t)}return this};a.prototype.off=a.prototype.removeListener;a.prototype.removeAllListeners=function(e){var t,n,o;if(n=this._events,n===void 0)return this;if(n.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):n[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete n[e]),this;if(arguments.length===0){var s=Object.keys(n),i;for(o=0;o=0;o--)this.removeListener(e,t[o]);return this};function W(r,e,t){var n=r._events;if(n===void 0)return[];var o=n[e];return o===void 0?[]:typeof o=="function"?t?[o.listener||o]:[o]:t?ce(o):H(o,o.length)}a.prototype.listeners=function(e){return W(this,e,!0)};a.prototype.rawListeners=function(e){return W(this,e,!1)};a.listenerCount=function(r,e){return typeof r.listenerCount=="function"?r.listenerCount(e):J.call(r,e)};a.prototype.listenerCount=J;function J(r){var e=this._events;if(e!==void 0){var t=e[r];if(typeof t=="function")return 1;if(t!==void 0)return t.length}return 0}a.prototype.eventNames=function(){return this._eventsCount>0?O(this._events):[]};function H(r,e){for(var t=new Array(e),n=0;n(u[u.ARCHIVE_ADD=0]="ARCHIVE_ADD",u[u.ARCHHIVE_COMPRESS=1]="ARCHHIVE_COMPRESS",u[u.CANCEL=2]="CANCEL",u[u.DOWNLOAD=3]="DOWNLOAD",u[u.INFOS=4]="INFOS",u[u.PAUSE=5]="PAUSE",u[u.PROVIDE_FILE=6]="PROVIDE_FILE",u[u.REMOVE=7]="REMOVE",u[u.RESUME=8]="RESUME",u[u.UPLOAD=9]="UPLOAD",u))(k||{});var pe={withStackTrace:!1},q=(r,e,t=pe)=>{let n=e.isOk()?{type:"Ok",value:e.value}:{type:"Err",value:e.error},o=t.withStackTrace?new Error().stack:void 0;return{data:n,message:r,stack:o}};function b(r,e,t,n){function o(s){return s instanceof t?s:new t(function(i){i(s)})}return new(t||(t=Promise))(function(s,i){function f(u){try{m(n.next(u))}catch(L){i(L)}}function h(u){try{m(n.throw(u))}catch(L){i(L)}}function m(u){u.done?s(u.value):o(u.value).then(f,h)}m((n=n.apply(r,[])).next())})}function G(r){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&r[e],n=0;if(t)return t.call(r);if(r&&typeof r.length=="number")return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function y(r){return this instanceof y?(this.v=r,this):new y(r)}function de(r,e,t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=t.apply(r,e||[]),o,s=[];return o={},i("next"),i("throw"),i("return"),o[Symbol.asyncIterator]=function(){return this},o;function i(l){n[l]&&(o[l]=function(_){return new Promise(function(x,K){s.push([l,_,x,K])>1||f(l,_)})})}function f(l,_){try{h(n[l](_))}catch(x){L(s[0][3],x)}}function h(l){l.value instanceof y?Promise.resolve(l.value.v).then(m,u):L(s[0][2],l)}function m(l){f("next",l)}function u(l){f("throw",l)}function L(l,_){l(_),s.shift(),s.length&&f(s[0][0],s[0][1])}}function me(r){var e,t;return e={},n("next"),n("throw",function(o){throw o}),n("return"),e[Symbol.iterator]=function(){return this},e;function n(o,s){e[o]=r[o]?function(i){return(t=!t)?{value:y(r[o](i)),done:o==="return"}:s?s(i):i}:s}}function ve(r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=r[Symbol.asyncIterator],t;return e?e.call(r):(r=typeof G=="function"?G(r):r[Symbol.iterator](),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(s){t[s]=r[s]&&function(i){return new Promise(function(f,h){i=r[s](i),o(f,h,i.done,i.value)})}}function o(s,i,f,h){Promise.resolve(h).then(function(m){s({value:m,done:f})},i)}}var v=class r{constructor(e){this._promise=e}static fromSafePromise(e){let t=e.then(n=>new d(n));return new r(t)}static fromPromise(e,t){let n=e.then(o=>new d(o)).catch(o=>new p(t(o)));return new r(n)}static fromThrowable(e,t){return(...n)=>new r(b(this,void 0,void 0,function*(){try{return new d(yield e(...n))}catch(o){return new p(t?t(o):o)}}))}static combine(e){return we(e)}static combineWithAllErrors(e){return Ee(e)}map(e){return new r(this._promise.then(t=>b(this,void 0,void 0,function*(){return t.isErr()?new p(t.error):new d(yield e(t.value))})))}andThrough(e){return new r(this._promise.then(t=>b(this,void 0,void 0,function*(){if(t.isErr())return new p(t.error);let n=yield e(t.value);return n.isErr()?new p(n.error):new d(t.value)})))}andTee(e){return new r(this._promise.then(t=>b(this,void 0,void 0,function*(){if(t.isErr())return new p(t.error);try{yield e(t.value)}catch{}return new d(t.value)})))}mapErr(e){return new r(this._promise.then(t=>b(this,void 0,void 0,function*(){return t.isOk()?new d(t.value):new p(yield e(t.error))})))}andThen(e){return new r(this._promise.then(t=>{if(t.isErr())return new p(t.error);let n=e(t.value);return n instanceof r?n._promise:n}))}orElse(e){return new r(this._promise.then(t=>b(this,void 0,void 0,function*(){return t.isErr()?e(t.error):new d(t.value)})))}match(e,t){return this._promise.then(n=>n.match(e,t))}unwrapOr(e){return this._promise.then(t=>t.unwrapOr(e))}safeUnwrap(){return de(this,arguments,function*(){return yield y(yield y(yield*me(ve(yield y(this._promise.then(t=>t.safeUnwrap()))))))})}then(e,t){return this._promise.then(e,t)}};var P=r=>new v(Promise.resolve(new p(r))),xe=v.fromPromise,Me=v.fromSafePromise,ke=v.fromThrowable,z=r=>{let e=E([]);for(let t of r)if(t.isErr()){e=w(t.error);break}else e.map(n=>n.push(t.value));return e},we=r=>v.fromSafePromise(Promise.all(r)).andThen(z),Q=r=>{let e=E([]);for(let t of r)t.isErr()&&e.isErr()?e.error.push(t.error):t.isErr()&&e.isOk()?e=w([t.error]):t.isOk()&&e.isOk()&&e.value.push(t.value);return e},Ee=r=>v.fromSafePromise(Promise.all(r)).andThen(Q),I;(function(r){function e(o,s){return(...i)=>{try{let f=o(...i);return E(f)}catch(f){return w(s?s(f):f)}}}r.fromThrowable=e;function t(o){return z(o)}r.combine=t;function n(o){return Q(o)}r.combineWithAllErrors=n})(I||(I={}));var E=r=>new d(r);function w(r){return new p(r)}var d=class{constructor(e){this.value=e}isOk(){return!0}isErr(){return!this.isOk()}map(e){return E(e(this.value))}mapErr(e){return E(this.value)}andThen(e){return e(this.value)}andThrough(e){return e(this.value).map(t=>this.value)}andTee(e){try{e(this.value)}catch{}return E(this.value)}orElse(e){return E(this.value)}asyncAndThen(e){return e(this.value)}asyncAndThrough(e){return e(this.value).map(()=>this.value)}asyncMap(e){return v.fromSafePromise(e(this.value))}unwrapOr(e){return this.value}match(e,t){return e(this.value)}safeUnwrap(){let e=this.value;return function*(){return e}()}_unsafeUnwrap(e){return this.value}_unsafeUnwrapErr(e){throw q("Called `_unsafeUnwrapErr` on an Ok",this,e)}},p=class{constructor(e){this.error=e}isOk(){return!1}isErr(){return!this.isOk()}map(e){return w(this.error)}mapErr(e){return w(e(this.error))}andThrough(e){return w(this.error)}andTee(e){return w(this.error)}andThen(e){return w(this.error)}orElse(e){return e(this.error)}asyncAndThen(e){return P(this.error)}asyncAndThrough(e){return P(this.error)}asyncMap(e){return P(this.error)}unwrapOr(e){return e}match(e,t){return t(this.error)}safeUnwrap(){let e=this.error;return function*(){throw yield w(e),new Error("Do not use this generator out of `safeTry`")}()}_unsafeUnwrap(e){throw q("Called `_unsafeUnwrap` on an Err",this,e)}_unsafeUnwrapErr(e){return this.error}},Ie=I.fromThrowable;var Le=()=>typeof Deno<"u";var D=r=>Le()?new URL(`./worker/${r}.ts`,new URL(".",import.meta.url).href):new URL(import.meta.resolve(`./${r==="main"?`worker/${r}`:r}.js`));var S=new Y.default,c,X=!1;self.onmessage=r=>{ge(r),X||(X=!0,S.once("OPERATION_FAILED",()=>{c&&c.terminate()}))};var _e=(r,e)=>(Object.assign(r,e),typeof WorkerGlobalScope<"u"&&self.postMessage({event:"FILE_UPDATED",lufiFile:r}),r),Ve=(r,e)=>{_e(r,{uploadStatus:2}),self.postMessage({event:"OPERATION_FAILED",error:e})},ge=(r,e)=>{let{action:t}=r.data;if(t===5||t===8)c.postMessage(r.data);else{switch(t){case 2:c=new Worker(D("cancel"),{type:"module"}),c.postMessage(r.data);break;case 3:c=new Worker(D("download"),{type:"module"}),c.postMessage(r.data);break;case 4:c=new Worker(D("infos"),{type:"module"}),c.postMessage(r.data);break;case 7:c=c||new Worker(D("remove"),{type:"module"}),c.postMessage(r.data);break;case 9:c=c||new Worker(D("upload"),{type:"module"}),c.postMessage(r.data);break;default:console.error("Action not found")}c.onmessage=n=>{e&&e(n),self.postMessage(n.data)},c.onerror=n=>{console.error(`Error: ${n.message}`)}}},er=()=>{S.once("SOCKET_OPENED",()=>{self.postMessage({event:"SOCKET_OPENED"})}),S.once("OPERATION_FAILED",r=>{self.postMessage({event:"OPERATION_FAILED",error:r})})},rr=r=>typeof r=="object"&&r!==null&&"action"in r&&Object.values(k).includes(r.action);export{S as events,er as init,rr as isWorkerActionMessage,Ve as sendFileError,_e as updateFile}; diff --git a/themes/default/public/js/worker/remove.js b/themes/default/public/js/worker/remove.js index 8990105..9005618 100644 --- a/themes/default/public/js/worker/remove.js +++ b/themes/default/public/js/worker/remove.js @@ -1,929 +1 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __commonJS = (cb, mod) => function __require() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); - -// node_modules/.deno/events@3.3.0/node_modules/events/events.js -var require_events = __commonJS({ - "node_modules/.deno/events@3.3.0/node_modules/events/events.js"(exports, module) { - "use strict"; - var R = typeof Reflect === "object" ? Reflect : null; - var ReflectApply = R && typeof R.apply === "function" ? R.apply : function ReflectApply2(target, receiver, args) { - return Function.prototype.apply.call(target, receiver, args); - }; - var ReflectOwnKeys; - if (R && typeof R.ownKeys === "function") { - ReflectOwnKeys = R.ownKeys; - } else if (Object.getOwnPropertySymbols) { - ReflectOwnKeys = function ReflectOwnKeys2(target) { - return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target)); - }; - } else { - ReflectOwnKeys = function ReflectOwnKeys2(target) { - return Object.getOwnPropertyNames(target); - }; - } - function ProcessEmitWarning(warning) { - if (console && console.warn) console.warn(warning); - } - var NumberIsNaN = Number.isNaN || function NumberIsNaN2(value) { - return value !== value; - }; - function EventEmitter2() { - EventEmitter2.init.call(this); - } - module.exports = EventEmitter2; - module.exports.once = once; - EventEmitter2.EventEmitter = EventEmitter2; - EventEmitter2.prototype._events = void 0; - EventEmitter2.prototype._eventsCount = 0; - EventEmitter2.prototype._maxListeners = void 0; - var defaultMaxListeners = 10; - function checkListener(listener) { - if (typeof listener !== "function") { - throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); - } - } - Object.defineProperty(EventEmitter2, "defaultMaxListeners", { - enumerable: true, - get: function() { - return defaultMaxListeners; - }, - set: function(arg) { - if (typeof arg !== "number" || arg < 0 || NumberIsNaN(arg)) { - throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + "."); - } - defaultMaxListeners = arg; - } - }); - EventEmitter2.init = function() { - if (this._events === void 0 || this._events === Object.getPrototypeOf(this)._events) { - this._events = /* @__PURE__ */ Object.create(null); - this._eventsCount = 0; - } - this._maxListeners = this._maxListeners || void 0; - }; - EventEmitter2.prototype.setMaxListeners = function setMaxListeners(n) { - if (typeof n !== "number" || n < 0 || NumberIsNaN(n)) { - throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + "."); - } - this._maxListeners = n; - return this; - }; - function _getMaxListeners(that) { - if (that._maxListeners === void 0) - return EventEmitter2.defaultMaxListeners; - return that._maxListeners; - } - EventEmitter2.prototype.getMaxListeners = function getMaxListeners() { - return _getMaxListeners(this); - }; - EventEmitter2.prototype.emit = function emit(type) { - var args = []; - for (var i = 1; i < arguments.length; i++) args.push(arguments[i]); - var doError = type === "error"; - var events2 = this._events; - if (events2 !== void 0) - doError = doError && events2.error === void 0; - else if (!doError) - return false; - if (doError) { - var er; - if (args.length > 0) - er = args[0]; - if (er instanceof Error) { - throw er; - } - var err2 = new Error("Unhandled error." + (er ? " (" + er.message + ")" : "")); - err2.context = er; - throw err2; - } - var handler = events2[type]; - if (handler === void 0) - return false; - if (typeof handler === "function") { - ReflectApply(handler, this, args); - } else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) - ReflectApply(listeners[i], this, args); - } - return true; - }; - function _addListener(target, type, listener, prepend) { - var m; - var events2; - var existing; - checkListener(listener); - events2 = target._events; - if (events2 === void 0) { - events2 = target._events = /* @__PURE__ */ Object.create(null); - target._eventsCount = 0; - } else { - if (events2.newListener !== void 0) { - target.emit( - "newListener", - type, - listener.listener ? listener.listener : listener - ); - events2 = target._events; - } - existing = events2[type]; - } - if (existing === void 0) { - existing = events2[type] = listener; - ++target._eventsCount; - } else { - if (typeof existing === "function") { - existing = events2[type] = prepend ? [listener, existing] : [existing, listener]; - } else if (prepend) { - existing.unshift(listener); - } else { - existing.push(listener); - } - m = _getMaxListeners(target); - if (m > 0 && existing.length > m && !existing.warned) { - existing.warned = true; - var w = new Error("Possible EventEmitter memory leak detected. " + existing.length + " " + String(type) + " listeners added. Use emitter.setMaxListeners() to increase limit"); - w.name = "MaxListenersExceededWarning"; - w.emitter = target; - w.type = type; - w.count = existing.length; - ProcessEmitWarning(w); - } - } - return target; - } - EventEmitter2.prototype.addListener = function addListener(type, listener) { - return _addListener(this, type, listener, false); - }; - EventEmitter2.prototype.on = EventEmitter2.prototype.addListener; - EventEmitter2.prototype.prependListener = function prependListener(type, listener) { - return _addListener(this, type, listener, true); - }; - function onceWrapper() { - if (!this.fired) { - this.target.removeListener(this.type, this.wrapFn); - this.fired = true; - if (arguments.length === 0) - return this.listener.call(this.target); - return this.listener.apply(this.target, arguments); - } - } - function _onceWrap(target, type, listener) { - var state = { fired: false, wrapFn: void 0, target, type, listener }; - var wrapped = onceWrapper.bind(state); - wrapped.listener = listener; - state.wrapFn = wrapped; - return wrapped; - } - EventEmitter2.prototype.once = function once2(type, listener) { - checkListener(listener); - this.on(type, _onceWrap(this, type, listener)); - return this; - }; - EventEmitter2.prototype.prependOnceListener = function prependOnceListener(type, listener) { - checkListener(listener); - this.prependListener(type, _onceWrap(this, type, listener)); - return this; - }; - EventEmitter2.prototype.removeListener = function removeListener(type, listener) { - var list, events2, position, i, originalListener; - checkListener(listener); - events2 = this._events; - if (events2 === void 0) - return this; - list = events2[type]; - if (list === void 0) - return this; - if (list === listener || list.listener === listener) { - if (--this._eventsCount === 0) - this._events = /* @__PURE__ */ Object.create(null); - else { - delete events2[type]; - if (events2.removeListener) - this.emit("removeListener", type, list.listener || listener); - } - } else if (typeof list !== "function") { - position = -1; - for (i = list.length - 1; i >= 0; i--) { - if (list[i] === listener || list[i].listener === listener) { - originalListener = list[i].listener; - position = i; - break; - } - } - if (position < 0) - return this; - if (position === 0) - list.shift(); - else { - spliceOne(list, position); - } - if (list.length === 1) - events2[type] = list[0]; - if (events2.removeListener !== void 0) - this.emit("removeListener", type, originalListener || listener); - } - return this; - }; - EventEmitter2.prototype.off = EventEmitter2.prototype.removeListener; - EventEmitter2.prototype.removeAllListeners = function removeAllListeners(type) { - var listeners, events2, i; - events2 = this._events; - if (events2 === void 0) - return this; - if (events2.removeListener === void 0) { - if (arguments.length === 0) { - this._events = /* @__PURE__ */ Object.create(null); - this._eventsCount = 0; - } else if (events2[type] !== void 0) { - if (--this._eventsCount === 0) - this._events = /* @__PURE__ */ Object.create(null); - else - delete events2[type]; - } - return this; - } - if (arguments.length === 0) { - var keys = Object.keys(events2); - var key; - for (i = 0; i < keys.length; ++i) { - key = keys[i]; - if (key === "removeListener") continue; - this.removeAllListeners(key); - } - this.removeAllListeners("removeListener"); - this._events = /* @__PURE__ */ Object.create(null); - this._eventsCount = 0; - return this; - } - listeners = events2[type]; - if (typeof listeners === "function") { - this.removeListener(type, listeners); - } else if (listeners !== void 0) { - for (i = listeners.length - 1; i >= 0; i--) { - this.removeListener(type, listeners[i]); - } - } - return this; - }; - function _listeners(target, type, unwrap) { - var events2 = target._events; - if (events2 === void 0) - return []; - var evlistener = events2[type]; - if (evlistener === void 0) - return []; - if (typeof evlistener === "function") - return unwrap ? [evlistener.listener || evlistener] : [evlistener]; - return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); - } - EventEmitter2.prototype.listeners = function listeners(type) { - return _listeners(this, type, true); - }; - EventEmitter2.prototype.rawListeners = function rawListeners(type) { - return _listeners(this, type, false); - }; - EventEmitter2.listenerCount = function(emitter, type) { - if (typeof emitter.listenerCount === "function") { - return emitter.listenerCount(type); - } else { - return listenerCount.call(emitter, type); - } - }; - EventEmitter2.prototype.listenerCount = listenerCount; - function listenerCount(type) { - var events2 = this._events; - if (events2 !== void 0) { - var evlistener = events2[type]; - if (typeof evlistener === "function") { - return 1; - } else if (evlistener !== void 0) { - return evlistener.length; - } - } - return 0; - } - EventEmitter2.prototype.eventNames = function eventNames() { - return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : []; - }; - function arrayClone(arr, n) { - var copy = new Array(n); - for (var i = 0; i < n; ++i) - copy[i] = arr[i]; - return copy; - } - function spliceOne(list, index) { - for (; index + 1 < list.length; index++) - list[index] = list[index + 1]; - list.pop(); - } - function unwrapListeners(arr) { - var ret = new Array(arr.length); - for (var i = 0; i < ret.length; ++i) { - ret[i] = arr[i].listener || arr[i]; - } - return ret; - } - function once(emitter, name) { - return new Promise(function(resolve, reject) { - function errorListener(err2) { - emitter.removeListener(name, resolver); - reject(err2); - } - function resolver() { - if (typeof emitter.removeListener === "function") { - emitter.removeListener("error", errorListener); - } - resolve([].slice.call(arguments)); - } - ; - eventTargetAgnosticAddListener(emitter, name, resolver, { once: true }); - if (name !== "error") { - addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true }); - } - }); - } - function addErrorHandlerIfEventEmitter(emitter, handler, flags) { - if (typeof emitter.on === "function") { - eventTargetAgnosticAddListener(emitter, "error", handler, flags); - } - } - function eventTargetAgnosticAddListener(emitter, name, listener, flags) { - if (typeof emitter.on === "function") { - if (flags.once) { - emitter.once(name, listener); - } else { - emitter.on(name, listener); - } - } else if (typeof emitter.addEventListener === "function") { - emitter.addEventListener(name, function wrapListener(arg) { - if (flags.once) { - emitter.removeEventListener(name, wrapListener); - } - listener(arg); - }); - } else { - throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof emitter); - } - } - } -}); - -// node_modules/.deno/neverthrow@8.0.0/node_modules/neverthrow/dist/index.es.js -var defaultErrorConfig = { - withStackTrace: false -}; -var createNeverThrowError = (message, result, config = defaultErrorConfig) => { - const data = result.isOk() ? { type: "Ok", value: result.value } : { type: "Err", value: result.error }; - const maybeStack = config.withStackTrace ? new Error().stack : void 0; - return { - data, - message, - stack: maybeStack - }; -}; -function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function(resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, [])).next()); - }); -} -function __values(o) { - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; - if (m) return m.call(o); - if (o && typeof o.length === "number") return { - next: function() { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); -} -function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); -} -function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { - return this; - }, i; - function verb(n) { - if (g[n]) i[n] = function(v) { - return new Promise(function(a, b) { - q.push([n, v, a, b]) > 1 || resume(n, v); - }); - }; - } - function resume(n, v) { - try { - step(g[n](v)); - } catch (e) { - settle(q[0][3], e); - } - } - function step(r) { - r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); - } - function fulfill(value) { - resume("next", value); - } - function reject(value) { - resume("throw", value); - } - function settle(f, v) { - if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); - } -} -function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function(e) { - throw e; - }), verb("return"), i[Symbol.iterator] = function() { - return this; - }, i; - function verb(n, f) { - i[n] = o[n] ? function(v) { - return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; - } : f; - } -} -function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { - return this; - }, i); - function verb(n) { - i[n] = o[n] && function(v) { - return new Promise(function(resolve, reject) { - v = o[n](v), settle(resolve, reject, v.done, v.value); - }); - }; - } - function settle(resolve, reject, d, v) { - Promise.resolve(v).then(function(v2) { - resolve({ value: v2, done: d }); - }, reject); - } -} -var ResultAsync = class _ResultAsync { - constructor(res) { - this._promise = res; - } - static fromSafePromise(promise) { - const newPromise = promise.then((value) => new Ok(value)); - return new _ResultAsync(newPromise); - } - static fromPromise(promise, errorFn) { - const newPromise = promise.then((value) => new Ok(value)).catch((e) => new Err(errorFn(e))); - return new _ResultAsync(newPromise); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any - static fromThrowable(fn, errorFn) { - return (...args) => { - return new _ResultAsync((() => __awaiter(this, void 0, void 0, function* () { - try { - return new Ok(yield fn(...args)); - } catch (error) { - return new Err(errorFn ? errorFn(error) : error); - } - }))()); - }; - } - static combine(asyncResultList) { - return combineResultAsyncList(asyncResultList); - } - static combineWithAllErrors(asyncResultList) { - return combineResultAsyncListWithAllErrors(asyncResultList); - } - map(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return new Err(res.error); - } - return new Ok(yield f(res.value)); - }))); - } - andThrough(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return new Err(res.error); - } - const newRes = yield f(res.value); - if (newRes.isErr()) { - return new Err(newRes.error); - } - return new Ok(res.value); - }))); - } - andTee(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return new Err(res.error); - } - try { - yield f(res.value); - } catch (e) { - } - return new Ok(res.value); - }))); - } - mapErr(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isOk()) { - return new Ok(res.value); - } - return new Err(yield f(res.error)); - }))); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThen(f) { - return new _ResultAsync(this._promise.then((res) => { - if (res.isErr()) { - return new Err(res.error); - } - const newValue = f(res.value); - return newValue instanceof _ResultAsync ? newValue._promise : newValue; - })); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - orElse(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return f(res.error); - } - return new Ok(res.value); - }))); - } - match(ok2, _err) { - return this._promise.then((res) => res.match(ok2, _err)); - } - unwrapOr(t) { - return this._promise.then((res) => res.unwrapOr(t)); - } - /** - * Emulates Rust's `?` operator in `safeTry`'s body. See also `safeTry`. - */ - safeUnwrap() { - return __asyncGenerator(this, arguments, function* safeUnwrap_1() { - return yield __await(yield __await(yield* __asyncDelegator(__asyncValues(yield __await(this._promise.then((res) => res.safeUnwrap())))))); - }); - } - // Makes ResultAsync implement PromiseLike - then(successCallback, failureCallback) { - return this._promise.then(successCallback, failureCallback); - } -}; -var errAsync = (err2) => new ResultAsync(Promise.resolve(new Err(err2))); -var fromPromise = ResultAsync.fromPromise; -var fromSafePromise = ResultAsync.fromSafePromise; -var fromAsyncThrowable = ResultAsync.fromThrowable; -var combineResultList = (resultList) => { - let acc = ok([]); - for (const result of resultList) { - if (result.isErr()) { - acc = err(result.error); - break; - } else { - acc.map((list) => list.push(result.value)); - } - } - return acc; -}; -var combineResultAsyncList = (asyncResultList) => ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultList); -var combineResultListWithAllErrors = (resultList) => { - let acc = ok([]); - for (const result of resultList) { - if (result.isErr() && acc.isErr()) { - acc.error.push(result.error); - } else if (result.isErr() && acc.isOk()) { - acc = err([result.error]); - } else if (result.isOk() && acc.isOk()) { - acc.value.push(result.value); - } - } - return acc; -}; -var combineResultAsyncListWithAllErrors = (asyncResultList) => ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultListWithAllErrors); -var Result; -(function(Result2) { - function fromThrowable2(fn, errorFn) { - return (...args) => { - try { - const result = fn(...args); - return ok(result); - } catch (e) { - return err(errorFn ? errorFn(e) : e); - } - }; - } - Result2.fromThrowable = fromThrowable2; - function combine(resultList) { - return combineResultList(resultList); - } - Result2.combine = combine; - function combineWithAllErrors(resultList) { - return combineResultListWithAllErrors(resultList); - } - Result2.combineWithAllErrors = combineWithAllErrors; -})(Result || (Result = {})); -var ok = (value) => new Ok(value); -function err(err2) { - return new Err(err2); -} -var Ok = class { - constructor(value) { - this.value = value; - } - isOk() { - return true; - } - isErr() { - return !this.isOk(); - } - map(f) { - return ok(f(this.value)); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - mapErr(_f) { - return ok(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThen(f) { - return f(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThrough(f) { - return f(this.value).map((_value) => this.value); - } - andTee(f) { - try { - f(this.value); - } catch (e) { - } - return ok(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - orElse(_f) { - return ok(this.value); - } - asyncAndThen(f) { - return f(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - asyncAndThrough(f) { - return f(this.value).map(() => this.value); - } - asyncMap(f) { - return ResultAsync.fromSafePromise(f(this.value)); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - unwrapOr(_v) { - return this.value; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - match(ok2, _err) { - return ok2(this.value); - } - safeUnwrap() { - const value = this.value; - return function* () { - return value; - }(); - } - _unsafeUnwrap(_) { - return this.value; - } - _unsafeUnwrapErr(config) { - throw createNeverThrowError("Called `_unsafeUnwrapErr` on an Ok", this, config); - } -}; -var Err = class { - constructor(error) { - this.error = error; - } - isOk() { - return false; - } - isErr() { - return !this.isOk(); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - map(_f) { - return err(this.error); - } - mapErr(f) { - return err(f(this.error)); - } - andThrough(_f) { - return err(this.error); - } - andTee(_f) { - return err(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThen(_f) { - return err(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - orElse(f) { - return f(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - asyncAndThen(_f) { - return errAsync(this.error); - } - asyncAndThrough(_f) { - return errAsync(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - asyncMap(_f) { - return errAsync(this.error); - } - unwrapOr(v) { - return v; - } - match(_ok, err2) { - return err2(this.error); - } - safeUnwrap() { - const error = this.error; - return function* () { - yield err(error); - throw new Error("Do not use this generator out of `safeTry`"); - }(); - } - _unsafeUnwrap(config) { - throw createNeverThrowError("Called `_unsafeUnwrap` on an Err", this, config); - } - _unsafeUnwrapErr(_) { - return this.error; - } -}; -var fromThrowable = Result.fromThrowable; - -// src/utils.ts -var ensureError = (value) => { - if (value instanceof Error) return value; - let stringified = "[Unable to stringify the thrown value]"; - try { - stringified = JSON.stringify(value); - } catch (_error) { - } - const error = new Error(stringified); - return error; -}; -var isDenoRuntime = () => typeof Deno !== "undefined"; -var workerUrl = (relativePath) => isDenoRuntime() ? new URL(`./worker/${relativePath}.ts`, new URL(".", import.meta.url).href) : new URL( - import.meta.resolve( - `./${relativePath === "main" ? `worker/${relativePath}` : relativePath}.js` - ) -); - -// src/worker/main.ts -var import_events = __toESM(require_events()); -var events = new import_events.default(); -var worker; -var isInitialized = false; -self.onmessage = (event) => { - addWorker(event); - if (!isInitialized) { - isInitialized = true; - events.once("OPERATION_FAILED" /* OPERATION_FAILED */, () => { - if (worker) { - worker.terminate(); - } - }); - } -}; -var addWorker = (event, callback) => { - const { action } = event.data; - if (action === 5 /* PAUSE */ || action === 8 /* RESUME */) { - worker.postMessage(event.data); - } else { - switch (action) { - case 2 /* CANCEL */: - { - worker = new Worker(workerUrl("cancel"), { type: "module" }); - worker.postMessage(event.data); - } - break; - case 3 /* DOWNLOAD */: - { - worker = new Worker(workerUrl("download"), { type: "module" }); - worker.postMessage(event.data); - } - break; - case 4 /* INFOS */: - { - worker = new Worker(workerUrl("infos"), { type: "module" }); - worker.postMessage(event.data); - } - break; - case 7 /* REMOVE */: - { - worker = worker || new Worker(workerUrl("remove"), { type: "module" }); - worker.postMessage(event.data); - } - break; - case 9 /* UPLOAD */: - { - worker = worker || new Worker(workerUrl("upload"), { type: "module" }); - worker.postMessage(event.data); - } - break; - default: { - console.error("Action not found"); - } - } - worker.onmessage = (e) => { - if (callback) callback(e); - self.postMessage(e.data); - }; - worker.onerror = (error) => { - console.error(`Error: ${error.message}`); - }; - } -}; -var init = () => { - events.once("SOCKET_OPENED" /* SOCKET_OPENED */, () => { - self.postMessage({ - event: "SOCKET_OPENED" /* SOCKET_OPENED */ - }); - }); - events.once("OPERATION_FAILED" /* OPERATION_FAILED */, (error) => { - self.postMessage({ event: "OPERATION_FAILED" /* OPERATION_FAILED */, error }); - }); -}; - -// src/worker/remove.ts -var isInitiated = false; -self.onmessage = (event) => { - if (!isInitiated) { - init(); - isInitiated = true; - } - removeFile(event.data).map(() => { - self.postMessage({ event: "FILE_REMOVED" /* FILE_REMOVED */ }); - }).mapErr((error) => { - self.postMessage({ - event: "OPERATION_FAILED" /* OPERATION_FAILED */, - error - }); - }); -}; -var removeFile = (workerMessage) => ResultAsync.fromPromise( - new Promise((resolve, reject) => { - const lufiFile = workerMessage.args.lufiFile; - fetch( - `${new URL(lufiFile.serverUrl).href}d/${lufiFile.keys.server}/${lufiFile.actionToken}` - ).then((request) => request.ok ? resolve(void 0) : reject(request.statusText)); - }), - (error) => ensureError(error) -); +var re=Object.create;var S=Object.defineProperty;var te=Object.getOwnPropertyDescriptor;var ne=Object.getOwnPropertyNames;var oe=Object.getPrototypeOf,se=Object.prototype.hasOwnProperty;var ie=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports);var ue=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of ne(e))!se.call(r,o)&&o!==t&&S(r,o,{get:()=>e[o],enumerable:!(n=te(e,o))||n.enumerable});return r};var ae=(r,e,t)=>(t=r!=null?re(oe(r)):{},ue(e||!r||!r.__esModule?S(t,"default",{value:r,enumerable:!0}):t,r));var q=ie((Qe,M)=>{"use strict";var D=typeof Reflect=="object"?Reflect:null,N=D&&typeof D.apply=="function"?D.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)},A;D&&typeof D.ownKeys=="function"?A=D.ownKeys:Object.getOwnPropertySymbols?A=function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:A=function(e){return Object.getOwnPropertyNames(e)};function Ee(r){console&&console.warn&&console.warn(r)}var J=Number.isNaN||function(e){return e!==e};function u(){u.init.call(this)}M.exports=u;M.exports.once=ge;u.EventEmitter=u;u.prototype._events=void 0;u.prototype._eventsCount=0;u.prototype._maxListeners=void 0;var W=10;function P(r){if(typeof r!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof r)}Object.defineProperty(u,"defaultMaxListeners",{enumerable:!0,get:function(){return W},set:function(r){if(typeof r!="number"||r<0||J(r))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+r+".");W=r}});u.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};u.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||J(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function H(r){return r._maxListeners===void 0?u.defaultMaxListeners:r._maxListeners}u.prototype.getMaxListeners=function(){return H(this)};u.prototype.emit=function(e){for(var t=[],n=1;n0&&(s=t[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var l=i[e];if(l===void 0)return!1;if(typeof l=="function")N(l,this,t);else for(var v=l.length,m=Q(l,v),n=0;n0&&s.length>o&&!s.warned){s.warned=!0;var a=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");a.name="MaxListenersExceededWarning",a.emitter=r,a.type=e,a.count=s.length,Ee(a)}return r}u.prototype.addListener=function(e,t){return B(this,e,t,!1)};u.prototype.on=u.prototype.addListener;u.prototype.prependListener=function(e,t){return B(this,e,t,!0)};function we(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function $(r,e,t){var n={fired:!1,wrapFn:void 0,target:r,type:e,listener:t},o=we.bind(n);return o.listener=t,n.wrapFn=o,o}u.prototype.once=function(e,t){return P(t),this.on(e,$(this,e,t)),this};u.prototype.prependOnceListener=function(e,t){return P(t),this.prependListener(e,$(this,e,t)),this};u.prototype.removeListener=function(e,t){var n,o,i,s,a;if(P(t),o=this._events,o===void 0)return this;if(n=o[e],n===void 0)return this;if(n===t||n.listener===t)--this._eventsCount===0?this._events=Object.create(null):(delete o[e],o.removeListener&&this.emit("removeListener",e,n.listener||t));else if(typeof n!="function"){for(i=-1,s=n.length-1;s>=0;s--)if(n[s]===t||n[s].listener===t){a=n[s].listener,i=s;break}if(i<0)return this;i===0?n.shift():ye(n,i),n.length===1&&(o[e]=n[0]),o.removeListener!==void 0&&this.emit("removeListener",e,a||t)}return this};u.prototype.off=u.prototype.removeListener;u.prototype.removeAllListeners=function(e){var t,n,o;if(n=this._events,n===void 0)return this;if(n.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):n[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete n[e]),this;if(arguments.length===0){var i=Object.keys(n),s;for(o=0;o=0;o--)this.removeListener(e,t[o]);return this};function G(r,e,t){var n=r._events;if(n===void 0)return[];var o=n[e];return o===void 0?[]:typeof o=="function"?t?[o.listener||o]:[o]:t?Le(o):Q(o,o.length)}u.prototype.listeners=function(e){return G(this,e,!0)};u.prototype.rawListeners=function(e){return G(this,e,!1)};u.listenerCount=function(r,e){return typeof r.listenerCount=="function"?r.listenerCount(e):z.call(r,e)};u.prototype.listenerCount=z;function z(r){var e=this._events;if(e!==void 0){var t=e[r];if(typeof t=="function")return 1;if(t!==void 0)return t.length}return 0}u.prototype.eventNames=function(){return this._eventsCount>0?A(this._events):[]};function Q(r,e){for(var t=new Array(e),n=0;n{let n=e.isOk()?{type:"Ok",value:e.value}:{type:"Err",value:e.error},o=t.withStackTrace?new Error().stack:void 0;return{data:n,message:r,stack:o}};function _(r,e,t,n){function o(i){return i instanceof t?i:new t(function(s){s(i)})}return new(t||(t=Promise))(function(i,s){function a(m){try{v(n.next(m))}catch(L){s(L)}}function l(m){try{v(n.throw(m))}catch(L){s(L)}}function v(m){m.done?i(m.value):o(m.value).then(a,l)}v((n=n.apply(r,[])).next())})}function C(r){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&r[e],n=0;if(t)return t.call(r);if(r&&typeof r.length=="number")return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function y(r){return this instanceof y?(this.v=r,this):new y(r)}function ce(r,e,t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=t.apply(r,e||[]),o,i=[];return o={},s("next"),s("throw"),s("return"),o[Symbol.asyncIterator]=function(){return this},o;function s(c){n[c]&&(o[c]=function(g){return new Promise(function(k,ee){i.push([c,g,k,ee])>1||a(c,g)})})}function a(c,g){try{l(n[c](g))}catch(k){L(i[0][3],k)}}function l(c){c.value instanceof y?Promise.resolve(c.value.v).then(v,m):L(i[0][2],c)}function v(c){a("next",c)}function m(c){a("throw",c)}function L(c,g){c(g),i.shift(),i.length&&a(i[0][0],i[0][1])}}function le(r){var e,t;return e={},n("next"),n("throw",function(o){throw o}),n("return"),e[Symbol.iterator]=function(){return this},e;function n(o,i){e[o]=r[o]?function(s){return(t=!t)?{value:y(r[o](s)),done:o==="return"}:i?i(s):s}:i}}function he(r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=r[Symbol.asyncIterator],t;return e?e.call(r):(r=typeof C=="function"?C(r):r[Symbol.iterator](),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(i){t[i]=r[i]&&function(s){return new Promise(function(a,l){s=r[i](s),o(a,l,s.done,s.value)})}}function o(i,s,a,l){Promise.resolve(l).then(function(v){i({value:v,done:a})},s)}}var p=class r{constructor(e){this._promise=e}static fromSafePromise(e){let t=e.then(n=>new d(n));return new r(t)}static fromPromise(e,t){let n=e.then(o=>new d(o)).catch(o=>new h(t(o)));return new r(n)}static fromThrowable(e,t){return(...n)=>new r(_(this,void 0,void 0,function*(){try{return new d(yield e(...n))}catch(o){return new h(t?t(o):o)}}))}static combine(e){return pe(e)}static combineWithAllErrors(e){return me(e)}map(e){return new r(this._promise.then(t=>_(this,void 0,void 0,function*(){return t.isErr()?new h(t.error):new d(yield e(t.value))})))}andThrough(e){return new r(this._promise.then(t=>_(this,void 0,void 0,function*(){if(t.isErr())return new h(t.error);let n=yield e(t.value);return n.isErr()?new h(n.error):new d(t.value)})))}andTee(e){return new r(this._promise.then(t=>_(this,void 0,void 0,function*(){if(t.isErr())return new h(t.error);try{yield e(t.value)}catch{}return new d(t.value)})))}mapErr(e){return new r(this._promise.then(t=>_(this,void 0,void 0,function*(){return t.isOk()?new d(t.value):new h(yield e(t.error))})))}andThen(e){return new r(this._promise.then(t=>{if(t.isErr())return new h(t.error);let n=e(t.value);return n instanceof r?n._promise:n}))}orElse(e){return new r(this._promise.then(t=>_(this,void 0,void 0,function*(){return t.isErr()?e(t.error):new d(t.value)})))}match(e,t){return this._promise.then(n=>n.match(e,t))}unwrapOr(e){return this._promise.then(t=>t.unwrapOr(e))}safeUnwrap(){return ce(this,arguments,function*(){return yield y(yield y(yield*le(he(yield y(this._promise.then(t=>t.safeUnwrap()))))))})}then(e,t){return this._promise.then(e,t)}};var O=r=>new p(Promise.resolve(new h(r))),ke=p.fromPromise,xe=p.fromSafePromise,Me=p.fromThrowable,R=r=>{let e=w([]);for(let t of r)if(t.isErr()){e=E(t.error);break}else e.map(n=>n.push(t.value));return e},pe=r=>p.fromSafePromise(Promise.all(r)).andThen(R),U=r=>{let e=w([]);for(let t of r)t.isErr()&&e.isErr()?e.error.push(t.error):t.isErr()&&e.isOk()?e=E([t.error]):t.isOk()&&e.isOk()&&e.value.push(t.value);return e},me=r=>p.fromSafePromise(Promise.all(r)).andThen(U),x;(function(r){function e(o,i){return(...s)=>{try{let a=o(...s);return w(a)}catch(a){return E(i?i(a):a)}}}r.fromThrowable=e;function t(o){return R(o)}r.combine=t;function n(o){return U(o)}r.combineWithAllErrors=n})(x||(x={}));var w=r=>new d(r);function E(r){return new h(r)}var d=class{constructor(e){this.value=e}isOk(){return!0}isErr(){return!this.isOk()}map(e){return w(e(this.value))}mapErr(e){return w(this.value)}andThen(e){return e(this.value)}andThrough(e){return e(this.value).map(t=>this.value)}andTee(e){try{e(this.value)}catch{}return w(this.value)}orElse(e){return w(this.value)}asyncAndThen(e){return e(this.value)}asyncAndThrough(e){return e(this.value).map(()=>this.value)}asyncMap(e){return p.fromSafePromise(e(this.value))}unwrapOr(e){return this.value}match(e,t){return e(this.value)}safeUnwrap(){let e=this.value;return function*(){return e}()}_unsafeUnwrap(e){return this.value}_unsafeUnwrapErr(e){throw F("Called `_unsafeUnwrapErr` on an Ok",this,e)}},h=class{constructor(e){this.error=e}isOk(){return!1}isErr(){return!this.isOk()}map(e){return E(this.error)}mapErr(e){return E(e(this.error))}andThrough(e){return E(this.error)}andTee(e){return E(this.error)}andThen(e){return E(this.error)}orElse(e){return e(this.error)}asyncAndThen(e){return O(this.error)}asyncAndThrough(e){return O(this.error)}asyncMap(e){return O(this.error)}unwrapOr(e){return e}match(e,t){return t(this.error)}safeUnwrap(){let e=this.error;return function*(){throw yield E(e),new Error("Do not use this generator out of `safeTry`")}()}_unsafeUnwrap(e){throw F("Called `_unsafeUnwrap` on an Err",this,e)}_unsafeUnwrapErr(e){return this.error}},Ie=x.fromThrowable;var j=r=>{if(r instanceof Error)return r;let e="[Unable to stringify the thrown value]";try{e=JSON.stringify(r)}catch{}return new Error(e)};var ve=()=>typeof Deno<"u";var b=r=>ve()?new URL(`./worker/${r}.ts`,new URL(".",import.meta.url).href):new URL(import.meta.resolve(`./${r==="main"?`worker/${r}`:r}.js`));var Y=ae(q());var I=new Y.default,f,X=!1;self.onmessage=r=>{De(r),X||(X=!0,I.once("OPERATION_FAILED",()=>{f&&f.terminate()}))};var De=(r,e)=>{let{action:t}=r.data;if(t===5||t===8)f.postMessage(r.data);else{switch(t){case 2:f=new Worker(b("cancel"),{type:"module"}),f.postMessage(r.data);break;case 3:f=new Worker(b("download"),{type:"module"}),f.postMessage(r.data);break;case 4:f=new Worker(b("infos"),{type:"module"}),f.postMessage(r.data);break;case 7:f=f||new Worker(b("remove"),{type:"module"}),f.postMessage(r.data);break;case 9:f=f||new Worker(b("upload"),{type:"module"}),f.postMessage(r.data);break;default:console.error("Action not found")}f.onmessage=n=>{e&&e(n),self.postMessage(n.data)},f.onerror=n=>{console.error(`Error: ${n.message}`)}}},K=()=>{I.once("SOCKET_OPENED",()=>{self.postMessage({event:"SOCKET_OPENED"})}),I.once("OPERATION_FAILED",r=>{self.postMessage({event:"OPERATION_FAILED",error:r})})};var V=!1;self.onmessage=r=>{V||(K(),V=!0),Oe(r.data).map(()=>{self.postMessage({event:"FILE_REMOVED"})}).mapErr(e=>{self.postMessage({event:"OPERATION_FAILED",error:e})})};var Oe=r=>p.fromPromise(new Promise((e,t)=>{let n=r.args.lufiFile;fetch(`${new URL(n.serverUrl).href}d/${n.keys.server}/${n.actionToken}`).then(o=>o.ok?e(void 0):t(o.statusText))}),e=>j(e)); diff --git a/themes/default/public/js/worker/upload.js b/themes/default/public/js/worker/upload.js index d03e708..60a4119 100644 --- a/themes/default/public/js/worker/upload.js +++ b/themes/default/public/js/worker/upload.js @@ -1,2860 +1 @@ -var __create = Object.create; -var __defProp = Object.defineProperty; -var __getOwnPropDesc = Object.getOwnPropertyDescriptor; -var __getOwnPropNames = Object.getOwnPropertyNames; -var __getProtoOf = Object.getPrototypeOf; -var __hasOwnProp = Object.prototype.hasOwnProperty; -var __typeError = (msg) => { - throw TypeError(msg); -}; -var __defNormalProp = (obj3, key, value) => key in obj3 ? __defProp(obj3, key, { enumerable: true, configurable: true, writable: true, value }) : obj3[key] = value; -var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { - get: (a, b) => (typeof require !== "undefined" ? require : a)[b] -}) : x)(function(x) { - if (typeof require !== "undefined") return require.apply(this, arguments); - throw Error('Dynamic require of "' + x + '" is not supported'); -}); -var __commonJS = (cb, mod) => function __require2() { - return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; -}; -var __copyProps = (to, from, except, desc) => { - if (from && typeof from === "object" || typeof from === "function") { - for (let key of __getOwnPropNames(from)) - if (!__hasOwnProp.call(to, key) && key !== except) - __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); - } - return to; -}; -var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( - // If the importer is in node compatibility mode or this is not an ESM - // file that has been converted to a CommonJS file using a Babel- - // compatible transform (i.e. "__esModule" has not been set), then set - // "default" to the CommonJS "module.exports" for node compatibility. - isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, - mod -)); -var __publicField = (obj3, key, value) => __defNormalProp(obj3, typeof key !== "symbol" ? key + "" : key, value); -var __accessCheck = (obj3, member, msg) => member.has(obj3) || __typeError("Cannot " + msg); -var __privateGet = (obj3, member, getter) => (__accessCheck(obj3, member, "read from private field"), getter ? getter.call(obj3) : member.get(obj3)); -var __privateAdd = (obj3, member, value) => member.has(obj3) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj3) : member.set(obj3, value); -var __privateSet = (obj3, member, value, setter) => (__accessCheck(obj3, member, "write to private field"), setter ? setter.call(obj3, value) : member.set(obj3, value), value); -var __privateMethod = (obj3, member, method) => (__accessCheck(obj3, member, "access private method"), method); -var __privateWrapper = (obj3, member, setter, getter) => ({ - set _(value) { - __privateSet(obj3, member, value, setter); - }, - get _() { - return __privateGet(obj3, member, getter); - } -}); - -// node_modules/.deno/events@3.3.0/node_modules/events/events.js -var require_events = __commonJS({ - "node_modules/.deno/events@3.3.0/node_modules/events/events.js"(exports, module) { - "use strict"; - var R = typeof Reflect === "object" ? Reflect : null; - var ReflectApply = R && typeof R.apply === "function" ? R.apply : function ReflectApply2(target, receiver, args) { - return Function.prototype.apply.call(target, receiver, args); - }; - var ReflectOwnKeys; - if (R && typeof R.ownKeys === "function") { - ReflectOwnKeys = R.ownKeys; - } else if (Object.getOwnPropertySymbols) { - ReflectOwnKeys = function ReflectOwnKeys2(target) { - return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target)); - }; - } else { - ReflectOwnKeys = function ReflectOwnKeys2(target) { - return Object.getOwnPropertyNames(target); - }; - } - function ProcessEmitWarning(warning) { - if (console && console.warn) console.warn(warning); - } - var NumberIsNaN = Number.isNaN || function NumberIsNaN2(value) { - return value !== value; - }; - function EventEmitter5() { - EventEmitter5.init.call(this); - } - module.exports = EventEmitter5; - module.exports.once = once; - EventEmitter5.EventEmitter = EventEmitter5; - EventEmitter5.prototype._events = void 0; - EventEmitter5.prototype._eventsCount = 0; - EventEmitter5.prototype._maxListeners = void 0; - var defaultMaxListeners = 10; - function checkListener(listener) { - if (typeof listener !== "function") { - throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof listener); - } - } - Object.defineProperty(EventEmitter5, "defaultMaxListeners", { - enumerable: true, - get: function() { - return defaultMaxListeners; - }, - set: function(arg) { - if (typeof arg !== "number" || arg < 0 || NumberIsNaN(arg)) { - throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + arg + "."); - } - defaultMaxListeners = arg; - } - }); - EventEmitter5.init = function() { - if (this._events === void 0 || this._events === Object.getPrototypeOf(this)._events) { - this._events = /* @__PURE__ */ Object.create(null); - this._eventsCount = 0; - } - this._maxListeners = this._maxListeners || void 0; - }; - EventEmitter5.prototype.setMaxListeners = function setMaxListeners(n) { - if (typeof n !== "number" || n < 0 || NumberIsNaN(n)) { - throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + n + "."); - } - this._maxListeners = n; - return this; - }; - function _getMaxListeners(that) { - if (that._maxListeners === void 0) - return EventEmitter5.defaultMaxListeners; - return that._maxListeners; - } - EventEmitter5.prototype.getMaxListeners = function getMaxListeners() { - return _getMaxListeners(this); - }; - EventEmitter5.prototype.emit = function emit(type) { - var args = []; - for (var i = 1; i < arguments.length; i++) args.push(arguments[i]); - var doError = type === "error"; - var events3 = this._events; - if (events3 !== void 0) - doError = doError && events3.error === void 0; - else if (!doError) - return false; - if (doError) { - var er; - if (args.length > 0) - er = args[0]; - if (er instanceof Error) { - throw er; - } - var err2 = new Error("Unhandled error." + (er ? " (" + er.message + ")" : "")); - err2.context = er; - throw err2; - } - var handler = events3[type]; - if (handler === void 0) - return false; - if (typeof handler === "function") { - ReflectApply(handler, this, args); - } else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) - ReflectApply(listeners[i], this, args); - } - return true; - }; - function _addListener(target, type, listener, prepend) { - var m; - var events3; - var existing; - checkListener(listener); - events3 = target._events; - if (events3 === void 0) { - events3 = target._events = /* @__PURE__ */ Object.create(null); - target._eventsCount = 0; - } else { - if (events3.newListener !== void 0) { - target.emit( - "newListener", - type, - listener.listener ? listener.listener : listener - ); - events3 = target._events; - } - existing = events3[type]; - } - if (existing === void 0) { - existing = events3[type] = listener; - ++target._eventsCount; - } else { - if (typeof existing === "function") { - existing = events3[type] = prepend ? [listener, existing] : [existing, listener]; - } else if (prepend) { - existing.unshift(listener); - } else { - existing.push(listener); - } - m = _getMaxListeners(target); - if (m > 0 && existing.length > m && !existing.warned) { - existing.warned = true; - var w = new Error("Possible EventEmitter memory leak detected. " + existing.length + " " + String(type) + " listeners added. Use emitter.setMaxListeners() to increase limit"); - w.name = "MaxListenersExceededWarning"; - w.emitter = target; - w.type = type; - w.count = existing.length; - ProcessEmitWarning(w); - } - } - return target; - } - EventEmitter5.prototype.addListener = function addListener(type, listener) { - return _addListener(this, type, listener, false); - }; - EventEmitter5.prototype.on = EventEmitter5.prototype.addListener; - EventEmitter5.prototype.prependListener = function prependListener(type, listener) { - return _addListener(this, type, listener, true); - }; - function onceWrapper() { - if (!this.fired) { - this.target.removeListener(this.type, this.wrapFn); - this.fired = true; - if (arguments.length === 0) - return this.listener.call(this.target); - return this.listener.apply(this.target, arguments); - } - } - function _onceWrap(target, type, listener) { - var state = { fired: false, wrapFn: void 0, target, type, listener }; - var wrapped = onceWrapper.bind(state); - wrapped.listener = listener; - state.wrapFn = wrapped; - return wrapped; - } - EventEmitter5.prototype.once = function once2(type, listener) { - checkListener(listener); - this.on(type, _onceWrap(this, type, listener)); - return this; - }; - EventEmitter5.prototype.prependOnceListener = function prependOnceListener(type, listener) { - checkListener(listener); - this.prependListener(type, _onceWrap(this, type, listener)); - return this; - }; - EventEmitter5.prototype.removeListener = function removeListener(type, listener) { - var list, events3, position, i, originalListener; - checkListener(listener); - events3 = this._events; - if (events3 === void 0) - return this; - list = events3[type]; - if (list === void 0) - return this; - if (list === listener || list.listener === listener) { - if (--this._eventsCount === 0) - this._events = /* @__PURE__ */ Object.create(null); - else { - delete events3[type]; - if (events3.removeListener) - this.emit("removeListener", type, list.listener || listener); - } - } else if (typeof list !== "function") { - position = -1; - for (i = list.length - 1; i >= 0; i--) { - if (list[i] === listener || list[i].listener === listener) { - originalListener = list[i].listener; - position = i; - break; - } - } - if (position < 0) - return this; - if (position === 0) - list.shift(); - else { - spliceOne(list, position); - } - if (list.length === 1) - events3[type] = list[0]; - if (events3.removeListener !== void 0) - this.emit("removeListener", type, originalListener || listener); - } - return this; - }; - EventEmitter5.prototype.off = EventEmitter5.prototype.removeListener; - EventEmitter5.prototype.removeAllListeners = function removeAllListeners(type) { - var listeners, events3, i; - events3 = this._events; - if (events3 === void 0) - return this; - if (events3.removeListener === void 0) { - if (arguments.length === 0) { - this._events = /* @__PURE__ */ Object.create(null); - this._eventsCount = 0; - } else if (events3[type] !== void 0) { - if (--this._eventsCount === 0) - this._events = /* @__PURE__ */ Object.create(null); - else - delete events3[type]; - } - return this; - } - if (arguments.length === 0) { - var keys = Object.keys(events3); - var key; - for (i = 0; i < keys.length; ++i) { - key = keys[i]; - if (key === "removeListener") continue; - this.removeAllListeners(key); - } - this.removeAllListeners("removeListener"); - this._events = /* @__PURE__ */ Object.create(null); - this._eventsCount = 0; - return this; - } - listeners = events3[type]; - if (typeof listeners === "function") { - this.removeListener(type, listeners); - } else if (listeners !== void 0) { - for (i = listeners.length - 1; i >= 0; i--) { - this.removeListener(type, listeners[i]); - } - } - return this; - }; - function _listeners(target, type, unwrap) { - var events3 = target._events; - if (events3 === void 0) - return []; - var evlistener = events3[type]; - if (evlistener === void 0) - return []; - if (typeof evlistener === "function") - return unwrap ? [evlistener.listener || evlistener] : [evlistener]; - return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); - } - EventEmitter5.prototype.listeners = function listeners(type) { - return _listeners(this, type, true); - }; - EventEmitter5.prototype.rawListeners = function rawListeners(type) { - return _listeners(this, type, false); - }; - EventEmitter5.listenerCount = function(emitter, type) { - if (typeof emitter.listenerCount === "function") { - return emitter.listenerCount(type); - } else { - return listenerCount.call(emitter, type); - } - }; - EventEmitter5.prototype.listenerCount = listenerCount; - function listenerCount(type) { - var events3 = this._events; - if (events3 !== void 0) { - var evlistener = events3[type]; - if (typeof evlistener === "function") { - return 1; - } else if (evlistener !== void 0) { - return evlistener.length; - } - } - return 0; - } - EventEmitter5.prototype.eventNames = function eventNames() { - return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : []; - }; - function arrayClone(arr, n) { - var copy = new Array(n); - for (var i = 0; i < n; ++i) - copy[i] = arr[i]; - return copy; - } - function spliceOne(list, index) { - for (; index + 1 < list.length; index++) - list[index] = list[index + 1]; - list.pop(); - } - function unwrapListeners(arr) { - var ret = new Array(arr.length); - for (var i = 0; i < ret.length; ++i) { - ret[i] = arr[i].listener || arr[i]; - } - return ret; - } - function once(emitter, name) { - return new Promise(function(resolve, reject) { - function errorListener(err2) { - emitter.removeListener(name, resolver); - reject(err2); - } - function resolver() { - if (typeof emitter.removeListener === "function") { - emitter.removeListener("error", errorListener); - } - resolve([].slice.call(arguments)); - } - ; - eventTargetAgnosticAddListener(emitter, name, resolver, { once: true }); - if (name !== "error") { - addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true }); - } - }); - } - function addErrorHandlerIfEventEmitter(emitter, handler, flags) { - if (typeof emitter.on === "function") { - eventTargetAgnosticAddListener(emitter, "error", handler, flags); - } - } - function eventTargetAgnosticAddListener(emitter, name, listener, flags) { - if (typeof emitter.on === "function") { - if (flags.once) { - emitter.once(name, listener); - } else { - emitter.on(name, listener); - } - } else if (typeof emitter.addEventListener === "function") { - emitter.addEventListener(name, function wrapListener(arg) { - if (flags.once) { - emitter.removeEventListener(name, wrapListener); - } - listener(arg); - }); - } else { - throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof emitter); - } - } - } -}); - -// node_modules/.deno/sjcl@1.0.8/node_modules/sjcl/sjcl.js -var require_sjcl = __commonJS({ - "node_modules/.deno/sjcl@1.0.8/node_modules/sjcl/sjcl.js"(exports, module) { - "use strict"; - var sjcl2 = { cipher: {}, hash: {}, keyexchange: {}, mode: {}, misc: {}, codec: {}, exception: { corrupt: function(a) { - this.toString = function() { - return "CORRUPT: " + this.message; - }; - this.message = a; - }, invalid: function(a) { - this.toString = function() { - return "INVALID: " + this.message; - }; - this.message = a; - }, bug: function(a) { - this.toString = function() { - return "BUG: " + this.message; - }; - this.message = a; - }, notReady: function(a) { - this.toString = function() { - return "NOT READY: " + this.message; - }; - this.message = a; - } } }; - sjcl2.cipher.aes = function(a) { - this.s[0][0][0] || this.O(); - var b, c, d, e, f = this.s[0][4], g = this.s[1]; - b = a.length; - var h = 1; - if (4 !== b && 6 !== b && 8 !== b) throw new sjcl2.exception.invalid("invalid aes key size"); - this.b = [d = a.slice(0), e = []]; - for (a = b; a < 4 * b + 28; a++) { - c = d[a - 1]; - if (0 === a % b || 8 === b && 4 === a % b) c = f[c >>> 24] << 24 ^ f[c >> 16 & 255] << 16 ^ f[c >> 8 & 255] << 8 ^ f[c & 255], 0 === a % b && (c = c << 8 ^ c >>> 24 ^ h << 24, h = h << 1 ^ 283 * (h >> 7)); - d[a] = d[a - b] ^ c; - } - for (b = 0; a; b++, a--) c = d[b & 3 ? a : a - 4], e[b] = 4 >= a || 4 > b ? c : g[0][f[c >>> 24]] ^ g[1][f[c >> 16 & 255]] ^ g[2][f[c >> 8 & 255]] ^ g[3][f[c & 255]]; - }; - sjcl2.cipher.aes.prototype = { encrypt: function(a) { - return t(this, a, 0); - }, decrypt: function(a) { - return t(this, a, 1); - }, s: [[[], [], [], [], []], [[], [], [], [], []]], O: function() { - var a = this.s[0], b = this.s[1], c = a[4], d = b[4], e, f, g, h = [], k = [], l, n, m, p; - for (e = 0; 256 > e; e++) k[(h[e] = e << 1 ^ 283 * (e >> 7)) ^ e] = e; - for (f = g = 0; !c[f]; f ^= l || 1, g = k[g] || 1) for (m = g ^ g << 1 ^ g << 2 ^ g << 3 ^ g << 4, m = m >> 8 ^ m & 255 ^ 99, c[f] = m, d[m] = f, n = h[e = h[l = h[f]]], p = 16843009 * n ^ 65537 * e ^ 257 * l ^ 16843008 * f, n = 257 * h[m] ^ 16843008 * m, e = 0; 4 > e; e++) a[e][f] = n = n << 24 ^ n >>> 8, b[e][m] = p = p << 24 ^ p >>> 8; - for (e = 0; 5 > e; e++) a[e] = a[e].slice(0), b[e] = b[e].slice(0); - } }; - function t(a, b, c) { - if (4 !== b.length) throw new sjcl2.exception.invalid("invalid aes block size"); - var d = a.b[c], e = b[0] ^ d[0], f = b[c ? 3 : 1] ^ d[1], g = b[2] ^ d[2]; - b = b[c ? 1 : 3] ^ d[3]; - var h, k, l, n = d.length / 4 - 2, m, p = 4, r = [0, 0, 0, 0]; - h = a.s[c]; - a = h[0]; - var q = h[1], v = h[2], w = h[3], x = h[4]; - for (m = 0; m < n; m++) h = a[e >>> 24] ^ q[f >> 16 & 255] ^ v[g >> 8 & 255] ^ w[b & 255] ^ d[p], k = a[f >>> 24] ^ q[g >> 16 & 255] ^ v[b >> 8 & 255] ^ w[e & 255] ^ d[p + 1], l = a[g >>> 24] ^ q[b >> 16 & 255] ^ v[e >> 8 & 255] ^ w[f & 255] ^ d[p + 2], b = a[b >>> 24] ^ q[e >> 16 & 255] ^ v[f >> 8 & 255] ^ w[g & 255] ^ d[p + 3], p += 4, e = h, f = k, g = l; - for (m = 0; 4 > m; m++) r[c ? 3 & -m : m] = x[e >>> 24] << 24 ^ x[f >> 16 & 255] << 16 ^ x[g >> 8 & 255] << 8 ^ x[b & 255] ^ d[p++], h = e, e = f, f = g, g = b, b = h; - return r; - } - sjcl2.bitArray = { bitSlice: function(a, b, c) { - a = sjcl2.bitArray.$(a.slice(b / 32), 32 - (b & 31)).slice(1); - return void 0 === c ? a : sjcl2.bitArray.clamp(a, c - b); - }, extract: function(a, b, c) { - var d = Math.floor(-b - c & 31); - return ((b + c - 1 ^ b) & -32 ? a[b / 32 | 0] << 32 - d ^ a[b / 32 + 1 | 0] >>> d : a[b / 32 | 0] >>> d) & (1 << c) - 1; - }, concat: function(a, b) { - if (0 === a.length || 0 === b.length) return a.concat(b); - var c = a[a.length - 1], d = sjcl2.bitArray.getPartial(c); - return 32 === d ? a.concat(b) : sjcl2.bitArray.$(b, d, c | 0, a.slice(0, a.length - 1)); - }, bitLength: function(a) { - var b = a.length; - return 0 === b ? 0 : 32 * (b - 1) + sjcl2.bitArray.getPartial(a[b - 1]); - }, clamp: function(a, b) { - if (32 * a.length < b) return a; - a = a.slice(0, Math.ceil(b / 32)); - var c = a.length; - b = b & 31; - 0 < c && b && (a[c - 1] = sjcl2.bitArray.partial(b, a[c - 1] & 2147483648 >> b - 1, 1)); - return a; - }, partial: function(a, b, c) { - return 32 === a ? b : (c ? b | 0 : b << 32 - a) + 1099511627776 * a; - }, getPartial: function(a) { - return Math.round(a / 1099511627776) || 32; - }, equal: function(a, b) { - if (sjcl2.bitArray.bitLength(a) !== sjcl2.bitArray.bitLength(b)) return false; - var c = 0, d; - for (d = 0; d < a.length; d++) c |= a[d] ^ b[d]; - return 0 === c; - }, $: function(a, b, c, d) { - var e; - e = 0; - for (void 0 === d && (d = []); 32 <= b; b -= 32) d.push(c), c = 0; - if (0 === b) return d.concat(a); - for (e = 0; e < a.length; e++) d.push(c | a[e] >>> b), c = a[e] << 32 - b; - e = a.length ? a[a.length - 1] : 0; - a = sjcl2.bitArray.getPartial(e); - d.push(sjcl2.bitArray.partial(b + a & 31, 32 < b + a ? c : d.pop(), 1)); - return d; - }, i: function(a, b) { - return [a[0] ^ b[0], a[1] ^ b[1], a[2] ^ b[2], a[3] ^ b[3]]; - }, byteswapM: function(a) { - var b, c; - for (b = 0; b < a.length; ++b) c = a[b], a[b] = c >>> 24 | c >>> 8 & 65280 | (c & 65280) << 8 | c << 24; - return a; - } }; - sjcl2.codec.utf8String = { fromBits: function(a) { - var b = "", c = sjcl2.bitArray.bitLength(a), d, e; - for (d = 0; d < c / 8; d++) 0 === (d & 3) && (e = a[d / 4]), b += String.fromCharCode(e >>> 8 >>> 8 >>> 8), e <<= 8; - return decodeURIComponent(escape(b)); - }, toBits: function(a) { - a = unescape(encodeURIComponent(a)); - var b = [], c, d = 0; - for (c = 0; c < a.length; c++) d = d << 8 | a.charCodeAt(c), 3 === (c & 3) && (b.push(d), d = 0); - c & 3 && b.push(sjcl2.bitArray.partial(8 * (c & 3), d)); - return b; - } }; - sjcl2.codec.hex = { fromBits: function(a) { - var b = "", c; - for (c = 0; c < a.length; c++) b += ((a[c] | 0) + 263882790666240).toString(16).substr(4); - return b.substr(0, sjcl2.bitArray.bitLength(a) / 4); - }, toBits: function(a) { - var b, c = [], d; - a = a.replace(/\s|0x/g, ""); - d = a.length; - a = a + "00000000"; - for (b = 0; b < a.length; b += 8) c.push(parseInt(a.substr(b, 8), 16) ^ 0); - return sjcl2.bitArray.clamp(c, 4 * d); - } }; - sjcl2.codec.base32 = { B: "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567", X: "0123456789ABCDEFGHIJKLMNOPQRSTUV", BITS: 32, BASE: 5, REMAINING: 27, fromBits: function(a, b, c) { - var d = sjcl2.codec.base32.BASE, e = sjcl2.codec.base32.REMAINING, f = "", g = 0, h = sjcl2.codec.base32.B, k = 0, l = sjcl2.bitArray.bitLength(a); - c && (h = sjcl2.codec.base32.X); - for (c = 0; f.length * d < l; ) f += h.charAt((k ^ a[c] >>> g) >>> e), g < d ? (k = a[c] << d - g, g += e, c++) : (k <<= d, g -= d); - for (; f.length & 7 && !b; ) f += "="; - return f; - }, toBits: function(a, b) { - a = a.replace(/\s|=/g, "").toUpperCase(); - var c = sjcl2.codec.base32.BITS, d = sjcl2.codec.base32.BASE, e = sjcl2.codec.base32.REMAINING, f = [], g, h = 0, k = sjcl2.codec.base32.B, l = 0, n, m = "base32"; - b && (k = sjcl2.codec.base32.X, m = "base32hex"); - for (g = 0; g < a.length; g++) { - n = k.indexOf(a.charAt(g)); - if (0 > n) { - if (!b) try { - return sjcl2.codec.base32hex.toBits(a); - } catch (p) { - } - throw new sjcl2.exception.invalid("this isn't " + m + "!"); - } - h > e ? (h -= e, f.push(l ^ n >>> h), l = n << c - h) : (h += d, l ^= n << c - h); - } - h & 56 && f.push(sjcl2.bitArray.partial(h & 56, l, 1)); - return f; - } }; - sjcl2.codec.base32hex = { fromBits: function(a, b) { - return sjcl2.codec.base32.fromBits(a, b, 1); - }, toBits: function(a) { - return sjcl2.codec.base32.toBits(a, 1); - } }; - sjcl2.codec.base64 = { B: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", fromBits: function(a, b, c) { - var d = "", e = 0, f = sjcl2.codec.base64.B, g = 0, h = sjcl2.bitArray.bitLength(a); - c && (f = f.substr(0, 62) + "-_"); - for (c = 0; 6 * d.length < h; ) d += f.charAt((g ^ a[c] >>> e) >>> 26), 6 > e ? (g = a[c] << 6 - e, e += 26, c++) : (g <<= 6, e -= 6); - for (; d.length & 3 && !b; ) d += "="; - return d; - }, toBits: function(a, b) { - a = a.replace(/\s|=/g, ""); - var c = [], d, e = 0, f = sjcl2.codec.base64.B, g = 0, h; - b && (f = f.substr(0, 62) + "-_"); - for (d = 0; d < a.length; d++) { - h = f.indexOf(a.charAt(d)); - if (0 > h) throw new sjcl2.exception.invalid("this isn't base64!"); - 26 < e ? (e -= 26, c.push(g ^ h >>> e), g = h << 32 - e) : (e += 6, g ^= h << 32 - e); - } - e & 56 && c.push(sjcl2.bitArray.partial(e & 56, g, 1)); - return c; - } }; - sjcl2.codec.base64url = { fromBits: function(a) { - return sjcl2.codec.base64.fromBits(a, 1, 1); - }, toBits: function(a) { - return sjcl2.codec.base64.toBits(a, 1); - } }; - sjcl2.hash.sha256 = function(a) { - this.b[0] || this.O(); - a ? (this.F = a.F.slice(0), this.A = a.A.slice(0), this.l = a.l) : this.reset(); - }; - sjcl2.hash.sha256.hash = function(a) { - return new sjcl2.hash.sha256().update(a).finalize(); - }; - sjcl2.hash.sha256.prototype = { blockSize: 512, reset: function() { - this.F = this.Y.slice(0); - this.A = []; - this.l = 0; - return this; - }, update: function(a) { - "string" === typeof a && (a = sjcl2.codec.utf8String.toBits(a)); - var b, c = this.A = sjcl2.bitArray.concat(this.A, a); - b = this.l; - a = this.l = b + sjcl2.bitArray.bitLength(a); - if (9007199254740991 < a) throw new sjcl2.exception.invalid("Cannot hash more than 2^53 - 1 bits"); - if ("undefined" !== typeof Uint32Array) { - var d = new Uint32Array(c), e = 0; - for (b = 512 + b - (512 + b & 511); b <= a; b += 512) u(this, d.subarray( - 16 * e, - 16 * (e + 1) - )), e += 1; - c.splice(0, 16 * e); - } else for (b = 512 + b - (512 + b & 511); b <= a; b += 512) u(this, c.splice(0, 16)); - return this; - }, finalize: function() { - var a, b = this.A, c = this.F, b = sjcl2.bitArray.concat(b, [sjcl2.bitArray.partial(1, 1)]); - for (a = b.length + 2; a & 15; a++) b.push(0); - b.push(Math.floor(this.l / 4294967296)); - for (b.push(this.l | 0); b.length; ) u(this, b.splice(0, 16)); - this.reset(); - return c; - }, Y: [], b: [], O: function() { - function a(a2) { - return 4294967296 * (a2 - Math.floor(a2)) | 0; - } - for (var b = 0, c = 2, d, e; 64 > b; c++) { - e = true; - for (d = 2; d * d <= c; d++) if (0 === c % d) { - e = false; - break; - } - e && (8 > b && (this.Y[b] = a(Math.pow(c, 0.5))), this.b[b] = a(Math.pow(c, 1 / 3)), b++); - } - } }; - function u(a, b) { - var c, d, e, f = a.F, g = a.b, h = f[0], k = f[1], l = f[2], n = f[3], m = f[4], p = f[5], r = f[6], q = f[7]; - for (c = 0; 64 > c; c++) 16 > c ? d = b[c] : (d = b[c + 1 & 15], e = b[c + 14 & 15], d = b[c & 15] = (d >>> 7 ^ d >>> 18 ^ d >>> 3 ^ d << 25 ^ d << 14) + (e >>> 17 ^ e >>> 19 ^ e >>> 10 ^ e << 15 ^ e << 13) + b[c & 15] + b[c + 9 & 15] | 0), d = d + q + (m >>> 6 ^ m >>> 11 ^ m >>> 25 ^ m << 26 ^ m << 21 ^ m << 7) + (r ^ m & (p ^ r)) + g[c], q = r, r = p, p = m, m = n + d | 0, n = l, l = k, k = h, h = d + (k & l ^ n & (k ^ l)) + (k >>> 2 ^ k >>> 13 ^ k >>> 22 ^ k << 30 ^ k << 19 ^ k << 10) | 0; - f[0] = f[0] + h | 0; - f[1] = f[1] + k | 0; - f[2] = f[2] + l | 0; - f[3] = f[3] + n | 0; - f[4] = f[4] + m | 0; - f[5] = f[5] + p | 0; - f[6] = f[6] + r | 0; - f[7] = f[7] + q | 0; - } - sjcl2.mode.ccm = { name: "ccm", G: [], listenProgress: function(a) { - sjcl2.mode.ccm.G.push(a); - }, unListenProgress: function(a) { - a = sjcl2.mode.ccm.G.indexOf(a); - -1 < a && sjcl2.mode.ccm.G.splice(a, 1); - }, fa: function(a) { - var b = sjcl2.mode.ccm.G.slice(), c; - for (c = 0; c < b.length; c += 1) b[c](a); - }, encrypt: function(a, b, c, d, e) { - var f, g = b.slice(0), h = sjcl2.bitArray, k = h.bitLength(c) / 8, l = h.bitLength(g) / 8; - e = e || 64; - d = d || []; - if (7 > k) throw new sjcl2.exception.invalid("ccm: iv must be at least 7 bytes"); - for (f = 2; 4 > f && l >>> 8 * f; f++) ; - f < 15 - k && (f = 15 - k); - c = h.clamp( - c, - 8 * (15 - f) - ); - b = sjcl2.mode.ccm.V(a, b, c, d, e, f); - g = sjcl2.mode.ccm.C(a, g, c, b, e, f); - return h.concat(g.data, g.tag); - }, decrypt: function(a, b, c, d, e) { - e = e || 64; - d = d || []; - var f = sjcl2.bitArray, g = f.bitLength(c) / 8, h = f.bitLength(b), k = f.clamp(b, h - e), l = f.bitSlice(b, h - e), h = (h - e) / 8; - if (7 > g) throw new sjcl2.exception.invalid("ccm: iv must be at least 7 bytes"); - for (b = 2; 4 > b && h >>> 8 * b; b++) ; - b < 15 - g && (b = 15 - g); - c = f.clamp(c, 8 * (15 - b)); - k = sjcl2.mode.ccm.C(a, k, c, l, e, b); - a = sjcl2.mode.ccm.V(a, k.data, c, d, e, b); - if (!f.equal(k.tag, a)) throw new sjcl2.exception.corrupt("ccm: tag doesn't match"); - return k.data; - }, na: function(a, b, c, d, e, f) { - var g = [], h = sjcl2.bitArray, k = h.i; - d = [h.partial(8, (b.length ? 64 : 0) | d - 2 << 2 | f - 1)]; - d = h.concat(d, c); - d[3] |= e; - d = a.encrypt(d); - if (b.length) for (c = h.bitLength(b) / 8, 65279 >= c ? g = [h.partial(16, c)] : 4294967295 >= c && (g = h.concat([h.partial(16, 65534)], [c])), g = h.concat(g, b), b = 0; b < g.length; b += 4) d = a.encrypt(k(d, g.slice(b, b + 4).concat([0, 0, 0]))); - return d; - }, V: function(a, b, c, d, e, f) { - var g = sjcl2.bitArray, h = g.i; - e /= 8; - if (e % 2 || 4 > e || 16 < e) throw new sjcl2.exception.invalid("ccm: invalid tag length"); - if (4294967295 < d.length || 4294967295 < b.length) throw new sjcl2.exception.bug("ccm: can't deal with 4GiB or more data"); - c = sjcl2.mode.ccm.na(a, d, c, e, g.bitLength(b) / 8, f); - for (d = 0; d < b.length; d += 4) c = a.encrypt(h(c, b.slice(d, d + 4).concat([0, 0, 0]))); - return g.clamp(c, 8 * e); - }, C: function(a, b, c, d, e, f) { - var g, h = sjcl2.bitArray; - g = h.i; - var k = b.length, l = h.bitLength(b), n = k / 50, m = n; - c = h.concat([h.partial(8, f - 1)], c).concat([0, 0, 0]).slice(0, 4); - d = h.bitSlice(g(d, a.encrypt(c)), 0, e); - if (!k) return { tag: d, data: [] }; - for (g = 0; g < k; g += 4) g > n && (sjcl2.mode.ccm.fa(g / k), n += m), c[3]++, e = a.encrypt(c), b[g] ^= e[0], b[g + 1] ^= e[1], b[g + 2] ^= e[2], b[g + 3] ^= e[3]; - return { tag: d, data: h.clamp(b, l) }; - } }; - sjcl2.mode.ocb2 = { name: "ocb2", encrypt: function(a, b, c, d, e, f) { - if (128 !== sjcl2.bitArray.bitLength(c)) throw new sjcl2.exception.invalid("ocb iv must be 128 bits"); - var g, h = sjcl2.mode.ocb2.S, k = sjcl2.bitArray, l = k.i, n = [0, 0, 0, 0]; - c = h(a.encrypt(c)); - var m, p = []; - d = d || []; - e = e || 64; - for (g = 0; g + 4 < b.length; g += 4) m = b.slice(g, g + 4), n = l(n, m), p = p.concat(l(c, a.encrypt(l(c, m)))), c = h(c); - m = b.slice(g); - b = k.bitLength(m); - g = a.encrypt(l(c, [0, 0, 0, b])); - m = k.clamp(l(m.concat([0, 0, 0]), g), b); - n = l(n, l(m.concat([0, 0, 0]), g)); - n = a.encrypt(l(n, l(c, h(c)))); - d.length && (n = l(n, f ? d : sjcl2.mode.ocb2.pmac(a, d))); - return p.concat(k.concat(m, k.clamp(n, e))); - }, decrypt: function(a, b, c, d, e, f) { - if (128 !== sjcl2.bitArray.bitLength(c)) throw new sjcl2.exception.invalid("ocb iv must be 128 bits"); - e = e || 64; - var g = sjcl2.mode.ocb2.S, h = sjcl2.bitArray, k = h.i, l = [0, 0, 0, 0], n = g(a.encrypt(c)), m, p, r = sjcl2.bitArray.bitLength(b) - e, q = []; - d = d || []; - for (c = 0; c + 4 < r / 32; c += 4) m = k(n, a.decrypt(k(n, b.slice(c, c + 4)))), l = k(l, m), q = q.concat(m), n = g(n); - p = r - 32 * c; - m = a.encrypt(k(n, [0, 0, 0, p])); - m = k(m, h.clamp(b.slice(c), p).concat([ - 0, - 0, - 0 - ])); - l = k(l, m); - l = a.encrypt(k(l, k(n, g(n)))); - d.length && (l = k(l, f ? d : sjcl2.mode.ocb2.pmac(a, d))); - if (!h.equal(h.clamp(l, e), h.bitSlice(b, r))) throw new sjcl2.exception.corrupt("ocb: tag doesn't match"); - return q.concat(h.clamp(m, p)); - }, pmac: function(a, b) { - var c, d = sjcl2.mode.ocb2.S, e = sjcl2.bitArray, f = e.i, g = [0, 0, 0, 0], h = a.encrypt([0, 0, 0, 0]), h = f(h, d(d(h))); - for (c = 0; c + 4 < b.length; c += 4) h = d(h), g = f(g, a.encrypt(f(h, b.slice(c, c + 4)))); - c = b.slice(c); - 128 > e.bitLength(c) && (h = f(h, d(h)), c = e.concat(c, [-2147483648, 0, 0, 0])); - g = f(g, c); - return a.encrypt(f(d(f(h, d(h))), g)); - }, S: function(a) { - return [a[0] << 1 ^ a[1] >>> 31, a[1] << 1 ^ a[2] >>> 31, a[2] << 1 ^ a[3] >>> 31, a[3] << 1 ^ 135 * (a[0] >>> 31)]; - } }; - sjcl2.mode.gcm = { name: "gcm", encrypt: function(a, b, c, d, e) { - var f = b.slice(0); - b = sjcl2.bitArray; - d = d || []; - a = sjcl2.mode.gcm.C(true, a, f, d, c, e || 128); - return b.concat(a.data, a.tag); - }, decrypt: function(a, b, c, d, e) { - var f = b.slice(0), g = sjcl2.bitArray, h = g.bitLength(f); - e = e || 128; - d = d || []; - e <= h ? (b = g.bitSlice(f, h - e), f = g.bitSlice(f, 0, h - e)) : (b = f, f = []); - a = sjcl2.mode.gcm.C(false, a, f, d, c, e); - if (!g.equal(a.tag, b)) throw new sjcl2.exception.corrupt("gcm: tag doesn't match"); - return a.data; - }, ka: function(a, b) { - var c, d, e, f, g, h = sjcl2.bitArray.i; - e = [ - 0, - 0, - 0, - 0 - ]; - f = b.slice(0); - for (c = 0; 128 > c; c++) { - (d = 0 !== (a[Math.floor(c / 32)] & 1 << 31 - c % 32)) && (e = h(e, f)); - g = 0 !== (f[3] & 1); - for (d = 3; 0 < d; d--) f[d] = f[d] >>> 1 | (f[d - 1] & 1) << 31; - f[0] >>>= 1; - g && (f[0] ^= -520093696); - } - return e; - }, j: function(a, b, c) { - var d, e = c.length; - b = b.slice(0); - for (d = 0; d < e; d += 4) b[0] ^= 4294967295 & c[d], b[1] ^= 4294967295 & c[d + 1], b[2] ^= 4294967295 & c[d + 2], b[3] ^= 4294967295 & c[d + 3], b = sjcl2.mode.gcm.ka(b, a); - return b; - }, C: function(a, b, c, d, e, f) { - var g, h, k, l, n, m, p, r, q = sjcl2.bitArray; - m = c.length; - p = q.bitLength(c); - r = q.bitLength(d); - h = q.bitLength(e); - g = b.encrypt([0, 0, 0, 0]); - 96 === h ? (e = e.slice(0), e = q.concat(e, [1])) : (e = sjcl2.mode.gcm.j(g, [0, 0, 0, 0], e), e = sjcl2.mode.gcm.j(g, e, [0, 0, Math.floor(h / 4294967296), h & 4294967295])); - h = sjcl2.mode.gcm.j(g, [0, 0, 0, 0], d); - n = e.slice(0); - d = h.slice(0); - a || (d = sjcl2.mode.gcm.j(g, h, c)); - for (l = 0; l < m; l += 4) n[3]++, k = b.encrypt(n), c[l] ^= k[0], c[l + 1] ^= k[1], c[l + 2] ^= k[2], c[l + 3] ^= k[3]; - c = q.clamp(c, p); - a && (d = sjcl2.mode.gcm.j(g, h, c)); - a = [Math.floor(r / 4294967296), r & 4294967295, Math.floor(p / 4294967296), p & 4294967295]; - d = sjcl2.mode.gcm.j(g, d, a); - k = b.encrypt(e); - d[0] ^= k[0]; - d[1] ^= k[1]; - d[2] ^= k[2]; - d[3] ^= k[3]; - return { tag: q.bitSlice(d, 0, f), data: c }; - } }; - sjcl2.misc.hmac = function(a, b) { - this.W = b = b || sjcl2.hash.sha256; - var c = [[], []], d, e = b.prototype.blockSize / 32; - this.w = [new b(), new b()]; - a.length > e && (a = b.hash(a)); - for (d = 0; d < e; d++) c[0][d] = a[d] ^ 909522486, c[1][d] = a[d] ^ 1549556828; - this.w[0].update(c[0]); - this.w[1].update(c[1]); - this.R = new b(this.w[0]); - }; - sjcl2.misc.hmac.prototype.encrypt = sjcl2.misc.hmac.prototype.mac = function(a) { - if (this.aa) throw new sjcl2.exception.invalid("encrypt on already updated hmac called!"); - this.update(a); - return this.digest(a); - }; - sjcl2.misc.hmac.prototype.reset = function() { - this.R = new this.W(this.w[0]); - this.aa = false; - }; - sjcl2.misc.hmac.prototype.update = function(a) { - this.aa = true; - this.R.update(a); - }; - sjcl2.misc.hmac.prototype.digest = function() { - var a = this.R.finalize(), a = new this.W(this.w[1]).update(a).finalize(); - this.reset(); - return a; - }; - sjcl2.misc.pbkdf2 = function(a, b, c, d, e) { - c = c || 1e4; - if (0 > d || 0 > c) throw new sjcl2.exception.invalid("invalid params to pbkdf2"); - "string" === typeof a && (a = sjcl2.codec.utf8String.toBits(a)); - "string" === typeof b && (b = sjcl2.codec.utf8String.toBits(b)); - e = e || sjcl2.misc.hmac; - a = new e(a); - var f, g, h, k, l = [], n = sjcl2.bitArray; - for (k = 1; 32 * l.length < (d || 1); k++) { - e = f = a.encrypt(n.concat(b, [k])); - for (g = 1; g < c; g++) for (f = a.encrypt(f), h = 0; h < f.length; h++) e[h] ^= f[h]; - l = l.concat(e); - } - d && (l = n.clamp(l, d)); - return l; - }; - sjcl2.prng = function(a) { - this.c = [new sjcl2.hash.sha256()]; - this.m = [0]; - this.P = 0; - this.H = {}; - this.N = 0; - this.U = {}; - this.Z = this.f = this.o = this.ha = 0; - this.b = [0, 0, 0, 0, 0, 0, 0, 0]; - this.h = [0, 0, 0, 0]; - this.L = void 0; - this.M = a; - this.D = false; - this.K = { progress: {}, seeded: {} }; - this.u = this.ga = 0; - this.I = 1; - this.J = 2; - this.ca = 65536; - this.T = [0, 48, 64, 96, 128, 192, 256, 384, 512, 768, 1024]; - this.da = 3e4; - this.ba = 80; - }; - sjcl2.prng.prototype = { - randomWords: function(a, b) { - var c = [], d; - d = this.isReady(b); - var e; - if (d === this.u) throw new sjcl2.exception.notReady("generator isn't seeded"); - if (d & this.J) { - d = !(d & this.I); - e = []; - var f = 0, g; - this.Z = e[0] = (/* @__PURE__ */ new Date()).valueOf() + this.da; - for (g = 0; 16 > g; g++) e.push(4294967296 * Math.random() | 0); - for (g = 0; g < this.c.length && (e = e.concat(this.c[g].finalize()), f += this.m[g], this.m[g] = 0, d || !(this.P & 1 << g)); g++) ; - this.P >= 1 << this.c.length && (this.c.push(new sjcl2.hash.sha256()), this.m.push(0)); - this.f -= f; - f > this.o && (this.o = f); - this.P++; - this.b = sjcl2.hash.sha256.hash(this.b.concat(e)); - this.L = new sjcl2.cipher.aes(this.b); - for (d = 0; 4 > d && (this.h[d] = this.h[d] + 1 | 0, !this.h[d]); d++) ; - } - for (d = 0; d < a; d += 4) 0 === (d + 1) % this.ca && y(this), e = z(this), c.push(e[0], e[1], e[2], e[3]); - y(this); - return c.slice(0, a); - }, - setDefaultParanoia: function(a, b) { - if (0 === a && "Setting paranoia=0 will ruin your security; use it only for testing" !== b) throw new sjcl2.exception.invalid("Setting paranoia=0 will ruin your security; use it only for testing"); - this.M = a; - }, - addEntropy: function(a, b, c) { - c = c || "user"; - var d, e, f = (/* @__PURE__ */ new Date()).valueOf(), g = this.H[c], h = this.isReady(), k = 0; - d = this.U[c]; - void 0 === d && (d = this.U[c] = this.ha++); - void 0 === g && (g = this.H[c] = 0); - this.H[c] = (this.H[c] + 1) % this.c.length; - switch (typeof a) { - case "number": - void 0 === b && (b = 1); - this.c[g].update([d, this.N++, 1, b, f, 1, a | 0]); - break; - case "object": - c = Object.prototype.toString.call(a); - if ("[object Uint32Array]" === c) { - e = []; - for (c = 0; c < a.length; c++) e.push(a[c]); - a = e; - } else for ("[object Array]" !== c && (k = 1), c = 0; c < a.length && !k; c++) "number" !== typeof a[c] && (k = 1); - if (!k) { - if (void 0 === b) for (c = b = 0; c < a.length; c++) for (e = a[c]; 0 < e; ) b++, e = e >>> 1; - this.c[g].update([d, this.N++, 2, b, f, a.length].concat(a)); - } - break; - case "string": - void 0 === b && (b = a.length); - this.c[g].update([d, this.N++, 3, b, f, a.length]); - this.c[g].update(a); - break; - default: - k = 1; - } - if (k) throw new sjcl2.exception.bug("random: addEntropy only supports number, array of numbers or string"); - this.m[g] += b; - this.f += b; - h === this.u && (this.isReady() !== this.u && A("seeded", Math.max(this.o, this.f)), A("progress", this.getProgress())); - }, - isReady: function(a) { - a = this.T[void 0 !== a ? a : this.M]; - return this.o && this.o >= a ? this.m[0] > this.ba && (/* @__PURE__ */ new Date()).valueOf() > this.Z ? this.J | this.I : this.I : this.f >= a ? this.J | this.u : this.u; - }, - getProgress: function(a) { - a = this.T[a ? a : this.M]; - return this.o >= a ? 1 : this.f > a ? 1 : this.f / a; - }, - startCollectors: function() { - if (!this.D) { - this.a = { loadTimeCollector: B(this, this.ma), mouseCollector: B(this, this.oa), keyboardCollector: B(this, this.la), accelerometerCollector: B(this, this.ea), touchCollector: B(this, this.qa) }; - if (window.addEventListener) window.addEventListener( - "load", - this.a.loadTimeCollector, - false - ), window.addEventListener("mousemove", this.a.mouseCollector, false), window.addEventListener("keypress", this.a.keyboardCollector, false), window.addEventListener("devicemotion", this.a.accelerometerCollector, false), window.addEventListener("touchmove", this.a.touchCollector, false); - else if (document.attachEvent) document.attachEvent("onload", this.a.loadTimeCollector), document.attachEvent("onmousemove", this.a.mouseCollector), document.attachEvent("keypress", this.a.keyboardCollector); - else throw new sjcl2.exception.bug("can't attach event"); - this.D = true; - } - }, - stopCollectors: function() { - this.D && (window.removeEventListener ? (window.removeEventListener("load", this.a.loadTimeCollector, false), window.removeEventListener("mousemove", this.a.mouseCollector, false), window.removeEventListener("keypress", this.a.keyboardCollector, false), window.removeEventListener("devicemotion", this.a.accelerometerCollector, false), window.removeEventListener("touchmove", this.a.touchCollector, false)) : document.detachEvent && (document.detachEvent("onload", this.a.loadTimeCollector), document.detachEvent( - "onmousemove", - this.a.mouseCollector - ), document.detachEvent("keypress", this.a.keyboardCollector)), this.D = false); - }, - addEventListener: function(a, b) { - this.K[a][this.ga++] = b; - }, - removeEventListener: function(a, b) { - var c, d, e = this.K[a], f = []; - for (d in e) e.hasOwnProperty(d) && e[d] === b && f.push(d); - for (c = 0; c < f.length; c++) d = f[c], delete e[d]; - }, - la: function() { - C(this, 1); - }, - oa: function(a) { - var b, c; - try { - b = a.x || a.clientX || a.offsetX || 0, c = a.y || a.clientY || a.offsetY || 0; - } catch (d) { - c = b = 0; - } - 0 != b && 0 != c && this.addEntropy([b, c], 2, "mouse"); - C(this, 0); - }, - qa: function(a) { - a = a.touches[0] || a.changedTouches[0]; - this.addEntropy([a.pageX || a.clientX, a.pageY || a.clientY], 1, "touch"); - C(this, 0); - }, - ma: function() { - C(this, 2); - }, - ea: function(a) { - a = a.accelerationIncludingGravity.x || a.accelerationIncludingGravity.y || a.accelerationIncludingGravity.z; - if (window.orientation) { - var b = window.orientation; - "number" === typeof b && this.addEntropy(b, 1, "accelerometer"); - } - a && this.addEntropy(a, 2, "accelerometer"); - C(this, 0); - } - }; - function A(a, b) { - var c, d = sjcl2.random.K[a], e = []; - for (c in d) d.hasOwnProperty(c) && e.push(d[c]); - for (c = 0; c < e.length; c++) e[c](b); - } - function C(a, b) { - "undefined" !== typeof window && window.performance && "function" === typeof window.performance.now ? a.addEntropy(window.performance.now(), b, "loadtime") : a.addEntropy((/* @__PURE__ */ new Date()).valueOf(), b, "loadtime"); - } - function y(a) { - a.b = z(a).concat(z(a)); - a.L = new sjcl2.cipher.aes(a.b); - } - function z(a) { - for (var b = 0; 4 > b && (a.h[b] = a.h[b] + 1 | 0, !a.h[b]); b++) ; - return a.L.encrypt(a.h); - } - function B(a, b) { - return function() { - b.apply(a, arguments); - }; - } - sjcl2.random = new sjcl2.prng(6); - a: try { - if (G = "undefined" !== typeof module && module.exports) { - try { - H = __require("crypto"); - } catch (a) { - H = null; - } - G = E = H; - } - if (G && E.randomBytes) D = E.randomBytes(128), D = new Uint32Array(new Uint8Array(D).buffer), sjcl2.random.addEntropy(D, 1024, "crypto['randomBytes']"); - else if ("undefined" !== typeof window && "undefined" !== typeof Uint32Array) { - F = new Uint32Array(32); - if (window.crypto && window.crypto.getRandomValues) window.crypto.getRandomValues(F); - else if (window.msCrypto && window.msCrypto.getRandomValues) window.msCrypto.getRandomValues(F); - else break a; - sjcl2.random.addEntropy(F, 1024, "crypto['getRandomValues']"); - } - } catch (a) { - "undefined" !== typeof window && window.console && (console.log("There was an error collecting entropy from the browser:"), console.log(a)); - } - var D; - var E; - var F; - var G; - var H; - sjcl2.json = { defaults: { v: 1, iter: 1e4, ks: 128, ts: 64, mode: "ccm", adata: "", cipher: "aes" }, ja: function(a, b, c, d) { - c = c || {}; - d = d || {}; - var e = sjcl2.json, f = e.g({ iv: sjcl2.random.randomWords(4, 0) }, e.defaults), g; - e.g(f, c); - c = f.adata; - "string" === typeof f.salt && (f.salt = sjcl2.codec.base64.toBits(f.salt)); - "string" === typeof f.iv && (f.iv = sjcl2.codec.base64.toBits(f.iv)); - if (!sjcl2.mode[f.mode] || !sjcl2.cipher[f.cipher] || "string" === typeof a && 100 >= f.iter || 64 !== f.ts && 96 !== f.ts && 128 !== f.ts || 128 !== f.ks && 192 !== f.ks && 256 !== f.ks || 2 > f.iv.length || 4 < f.iv.length) throw new sjcl2.exception.invalid("json encrypt: invalid parameters"); - "string" === typeof a ? (g = sjcl2.misc.cachedPbkdf2(a, f), a = g.key.slice(0, f.ks / 32), f.salt = g.salt) : sjcl2.ecc && a instanceof sjcl2.ecc.elGamal.publicKey && (g = a.kem(), f.kemtag = g.tag, a = g.key.slice(0, f.ks / 32)); - "string" === typeof b && (b = sjcl2.codec.utf8String.toBits(b)); - "string" === typeof c && (f.adata = c = sjcl2.codec.utf8String.toBits(c)); - g = new sjcl2.cipher[f.cipher](a); - e.g(d, f); - d.key = a; - f.ct = "ccm" === f.mode && sjcl2.arrayBuffer && sjcl2.arrayBuffer.ccm && b instanceof ArrayBuffer ? sjcl2.arrayBuffer.ccm.encrypt(g, b, f.iv, c, f.ts) : sjcl2.mode[f.mode].encrypt(g, b, f.iv, c, f.ts); - return f; - }, encrypt: function(a, b, c, d) { - var e = sjcl2.json, f = e.ja.apply(e, arguments); - return e.encode(f); - }, ia: function(a, b, c, d) { - c = c || {}; - d = d || {}; - var e = sjcl2.json; - b = e.g(e.g(e.g({}, e.defaults), b), c, true); - var f, g; - f = b.adata; - "string" === typeof b.salt && (b.salt = sjcl2.codec.base64.toBits(b.salt)); - "string" === typeof b.iv && (b.iv = sjcl2.codec.base64.toBits(b.iv)); - if (!sjcl2.mode[b.mode] || !sjcl2.cipher[b.cipher] || "string" === typeof a && 100 >= b.iter || 64 !== b.ts && 96 !== b.ts && 128 !== b.ts || 128 !== b.ks && 192 !== b.ks && 256 !== b.ks || !b.iv || 2 > b.iv.length || 4 < b.iv.length) throw new sjcl2.exception.invalid("json decrypt: invalid parameters"); - "string" === typeof a ? (g = sjcl2.misc.cachedPbkdf2(a, b), a = g.key.slice(0, b.ks / 32), b.salt = g.salt) : sjcl2.ecc && a instanceof sjcl2.ecc.elGamal.secretKey && (a = a.unkem(sjcl2.codec.base64.toBits(b.kemtag)).slice(0, b.ks / 32)); - "string" === typeof f && (f = sjcl2.codec.utf8String.toBits(f)); - g = new sjcl2.cipher[b.cipher](a); - f = "ccm" === b.mode && sjcl2.arrayBuffer && sjcl2.arrayBuffer.ccm && b.ct instanceof ArrayBuffer ? sjcl2.arrayBuffer.ccm.decrypt(g, b.ct, b.iv, b.tag, f, b.ts) : sjcl2.mode[b.mode].decrypt(g, b.ct, b.iv, f, b.ts); - e.g(d, b); - d.key = a; - return 1 === c.raw ? f : sjcl2.codec.utf8String.fromBits(f); - }, decrypt: function(a, b, c, d) { - var e = sjcl2.json; - return e.ia(a, e.decode(b), c, d); - }, encode: function(a) { - var b, c = "{", d = ""; - for (b in a) if (a.hasOwnProperty(b)) { - if (!b.match(/^[a-z0-9]+$/i)) throw new sjcl2.exception.invalid("json encode: invalid property name"); - c += d + '"' + b + '":'; - d = ","; - switch (typeof a[b]) { - case "number": - case "boolean": - c += a[b]; - break; - case "string": - c += '"' + escape(a[b]) + '"'; - break; - case "object": - c += '"' + sjcl2.codec.base64.fromBits(a[b], 0) + '"'; - break; - default: - throw new sjcl2.exception.bug("json encode: unsupported type"); - } - } - return c + "}"; - }, decode: function(a) { - a = a.replace(/\s/g, ""); - if (!a.match(/^\{.*\}$/)) throw new sjcl2.exception.invalid("json decode: this isn't json!"); - a = a.replace(/^\{|\}$/g, "").split(/,/); - var b = {}, c, d; - for (c = 0; c < a.length; c++) { - if (!(d = a[c].match(/^\s*(?:(["']?)([a-z][a-z0-9]*)\1)\s*:\s*(?:(-?\d+)|"([a-z0-9+\/%*_.@=\-]*)"|(true|false))$/i))) throw new sjcl2.exception.invalid("json decode: this isn't json!"); - null != d[3] ? b[d[2]] = parseInt(d[3], 10) : null != d[4] ? b[d[2]] = d[2].match(/^(ct|adata|salt|iv)$/) ? sjcl2.codec.base64.toBits(d[4]) : unescape(d[4]) : null != d[5] && (b[d[2]] = "true" === d[5]); - } - return b; - }, g: function(a, b, c) { - void 0 === a && (a = {}); - if (void 0 === b) return a; - for (var d in b) if (b.hasOwnProperty(d)) { - if (c && void 0 !== a[d] && a[d] !== b[d]) throw new sjcl2.exception.invalid("required parameter overridden"); - a[d] = b[d]; - } - return a; - }, sa: function(a, b) { - var c = {}, d; - for (d in a) a.hasOwnProperty(d) && a[d] !== b[d] && (c[d] = a[d]); - return c; - }, ra: function(a, b) { - var c = {}, d; - for (d = 0; d < b.length; d++) void 0 !== a[b[d]] && (c[b[d]] = a[b[d]]); - return c; - } }; - sjcl2.encrypt = sjcl2.json.encrypt; - sjcl2.decrypt = sjcl2.json.decrypt; - sjcl2.misc.pa = {}; - sjcl2.misc.cachedPbkdf2 = function(a, b) { - var c = sjcl2.misc.pa, d; - b = b || {}; - d = b.iter || 1e3; - c = c[a] = c[a] || {}; - d = c[d] = c[d] || { firstSalt: b.salt && b.salt.length ? b.salt.slice(0) : sjcl2.random.randomWords(2, 0) }; - c = void 0 === b.salt ? d.firstSalt : b.salt; - d[c] = d[c] || sjcl2.misc.pbkdf2(a, c, b.iter); - return { key: d[c].slice(0), salt: c.slice(0) }; - }; - "undefined" !== typeof module && module.exports && (module.exports = sjcl2); - "function" === typeof define && define([], function() { - return sjcl2; - }); - } -}); - -// node_modules/.deno/eventemitter3@5.0.1/node_modules/eventemitter3/index.js -var require_eventemitter3 = __commonJS({ - "node_modules/.deno/eventemitter3@5.0.1/node_modules/eventemitter3/index.js"(exports, module) { - "use strict"; - var has = Object.prototype.hasOwnProperty; - var prefix = "~"; - function Events() { - } - if (Object.create) { - Events.prototype = /* @__PURE__ */ Object.create(null); - if (!new Events().__proto__) prefix = false; - } - function EE(fn, context, once) { - this.fn = fn; - this.context = context; - this.once = once || false; - } - function addListener(emitter, event, fn, context, once) { - if (typeof fn !== "function") { - throw new TypeError("The listener must be a function"); - } - var listener = new EE(fn, context || emitter, once), evt = prefix ? prefix + event : event; - if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++; - else if (!emitter._events[evt].fn) emitter._events[evt].push(listener); - else emitter._events[evt] = [emitter._events[evt], listener]; - return emitter; - } - function clearEvent(emitter, evt) { - if (--emitter._eventsCount === 0) emitter._events = new Events(); - else delete emitter._events[evt]; - } - function EventEmitter5() { - this._events = new Events(); - this._eventsCount = 0; - } - EventEmitter5.prototype.eventNames = function eventNames() { - var names = [], events3, name; - if (this._eventsCount === 0) return names; - for (name in events3 = this._events) { - if (has.call(events3, name)) names.push(prefix ? name.slice(1) : name); - } - if (Object.getOwnPropertySymbols) { - return names.concat(Object.getOwnPropertySymbols(events3)); - } - return names; - }; - EventEmitter5.prototype.listeners = function listeners(event) { - var evt = prefix ? prefix + event : event, handlers = this._events[evt]; - if (!handlers) return []; - if (handlers.fn) return [handlers.fn]; - for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) { - ee[i] = handlers[i].fn; - } - return ee; - }; - EventEmitter5.prototype.listenerCount = function listenerCount(event) { - var evt = prefix ? prefix + event : event, listeners = this._events[evt]; - if (!listeners) return 0; - if (listeners.fn) return 1; - return listeners.length; - }; - EventEmitter5.prototype.emit = function emit(event, a1, a2, a3, a4, a5) { - var evt = prefix ? prefix + event : event; - if (!this._events[evt]) return false; - var listeners = this._events[evt], len = arguments.length, args, i; - if (listeners.fn) { - if (listeners.once) this.removeListener(event, listeners.fn, void 0, true); - switch (len) { - case 1: - return listeners.fn.call(listeners.context), true; - case 2: - return listeners.fn.call(listeners.context, a1), true; - case 3: - return listeners.fn.call(listeners.context, a1, a2), true; - case 4: - return listeners.fn.call(listeners.context, a1, a2, a3), true; - case 5: - return listeners.fn.call(listeners.context, a1, a2, a3, a4), true; - case 6: - return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true; - } - for (i = 1, args = new Array(len - 1); i < len; i++) { - args[i - 1] = arguments[i]; - } - listeners.fn.apply(listeners.context, args); - } else { - var length = listeners.length, j; - for (i = 0; i < length; i++) { - if (listeners[i].once) this.removeListener(event, listeners[i].fn, void 0, true); - switch (len) { - case 1: - listeners[i].fn.call(listeners[i].context); - break; - case 2: - listeners[i].fn.call(listeners[i].context, a1); - break; - case 3: - listeners[i].fn.call(listeners[i].context, a1, a2); - break; - case 4: - listeners[i].fn.call(listeners[i].context, a1, a2, a3); - break; - default: - if (!args) for (j = 1, args = new Array(len - 1); j < len; j++) { - args[j - 1] = arguments[j]; - } - listeners[i].fn.apply(listeners[i].context, args); - } - } - } - return true; - }; - EventEmitter5.prototype.on = function on(event, fn, context) { - return addListener(this, event, fn, context, false); - }; - EventEmitter5.prototype.once = function once(event, fn, context) { - return addListener(this, event, fn, context, true); - }; - EventEmitter5.prototype.removeListener = function removeListener(event, fn, context, once) { - var evt = prefix ? prefix + event : event; - if (!this._events[evt]) return this; - if (!fn) { - clearEvent(this, evt); - return this; - } - var listeners = this._events[evt]; - if (listeners.fn) { - if (listeners.fn === fn && (!once || listeners.once) && (!context || listeners.context === context)) { - clearEvent(this, evt); - } - } else { - for (var i = 0, events3 = [], length = listeners.length; i < length; i++) { - if (listeners[i].fn !== fn || once && !listeners[i].once || context && listeners[i].context !== context) { - events3.push(listeners[i]); - } - } - if (events3.length) this._events[evt] = events3.length === 1 ? events3[0] : events3; - else clearEvent(this, evt); - } - return this; - }; - EventEmitter5.prototype.removeAllListeners = function removeAllListeners(event) { - var evt; - if (event) { - evt = prefix ? prefix + event : event; - if (this._events[evt]) clearEvent(this, evt); - } else { - this._events = new Events(); - this._eventsCount = 0; - } - return this; - }; - EventEmitter5.prototype.off = EventEmitter5.prototype.removeListener; - EventEmitter5.prototype.addListener = EventEmitter5.prototype.on; - EventEmitter5.prefixed = prefix; - EventEmitter5.EventEmitter = EventEmitter5; - if ("undefined" !== typeof module) { - module.exports = EventEmitter5; - } - } -}); - -// node_modules/.deno/neverthrow@8.0.0/node_modules/neverthrow/dist/index.es.js -var defaultErrorConfig = { - withStackTrace: false -}; -var createNeverThrowError = (message, result, config = defaultErrorConfig) => { - const data = result.isOk() ? { type: "Ok", value: result.value } : { type: "Err", value: result.error }; - const maybeStack = config.withStackTrace ? new Error().stack : void 0; - return { - data, - message, - stack: maybeStack - }; -}; -function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { - return value instanceof P ? value : new P(function(resolve) { - resolve(value); - }); - } - return new (P || (P = Promise))(function(resolve, reject) { - function fulfilled(value) { - try { - step(generator.next(value)); - } catch (e) { - reject(e); - } - } - function rejected(value) { - try { - step(generator["throw"](value)); - } catch (e) { - reject(e); - } - } - function step(result) { - result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); - } - step((generator = generator.apply(thisArg, [])).next()); - }); -} -function __values(o) { - var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; - if (m) return m.call(o); - if (o && typeof o.length === "number") return { - next: function() { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; - throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); -} -function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); -} -function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { - return this; - }, i; - function verb(n) { - if (g[n]) i[n] = function(v) { - return new Promise(function(a, b) { - q.push([n, v, a, b]) > 1 || resume(n, v); - }); - }; - } - function resume(n, v) { - try { - step(g[n](v)); - } catch (e) { - settle(q[0][3], e); - } - } - function step(r) { - r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); - } - function fulfill(value) { - resume("next", value); - } - function reject(value) { - resume("throw", value); - } - function settle(f, v) { - if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); - } -} -function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function(e) { - throw e; - }), verb("return"), i[Symbol.iterator] = function() { - return this; - }, i; - function verb(n, f) { - i[n] = o[n] ? function(v) { - return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; - } : f; - } -} -function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { - return this; - }, i); - function verb(n) { - i[n] = o[n] && function(v) { - return new Promise(function(resolve, reject) { - v = o[n](v), settle(resolve, reject, v.done, v.value); - }); - }; - } - function settle(resolve, reject, d, v) { - Promise.resolve(v).then(function(v2) { - resolve({ value: v2, done: d }); - }, reject); - } -} -var ResultAsync = class _ResultAsync { - constructor(res) { - this._promise = res; - } - static fromSafePromise(promise) { - const newPromise = promise.then((value) => new Ok(value)); - return new _ResultAsync(newPromise); - } - static fromPromise(promise, errorFn) { - const newPromise = promise.then((value) => new Ok(value)).catch((e) => new Err(errorFn(e))); - return new _ResultAsync(newPromise); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any - static fromThrowable(fn, errorFn) { - return (...args) => { - return new _ResultAsync((() => __awaiter(this, void 0, void 0, function* () { - try { - return new Ok(yield fn(...args)); - } catch (error) { - return new Err(errorFn ? errorFn(error) : error); - } - }))()); - }; - } - static combine(asyncResultList) { - return combineResultAsyncList(asyncResultList); - } - static combineWithAllErrors(asyncResultList) { - return combineResultAsyncListWithAllErrors(asyncResultList); - } - map(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return new Err(res.error); - } - return new Ok(yield f(res.value)); - }))); - } - andThrough(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return new Err(res.error); - } - const newRes = yield f(res.value); - if (newRes.isErr()) { - return new Err(newRes.error); - } - return new Ok(res.value); - }))); - } - andTee(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return new Err(res.error); - } - try { - yield f(res.value); - } catch (e) { - } - return new Ok(res.value); - }))); - } - mapErr(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isOk()) { - return new Ok(res.value); - } - return new Err(yield f(res.error)); - }))); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThen(f) { - return new _ResultAsync(this._promise.then((res) => { - if (res.isErr()) { - return new Err(res.error); - } - const newValue = f(res.value); - return newValue instanceof _ResultAsync ? newValue._promise : newValue; - })); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - orElse(f) { - return new _ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () { - if (res.isErr()) { - return f(res.error); - } - return new Ok(res.value); - }))); - } - match(ok2, _err) { - return this._promise.then((res) => res.match(ok2, _err)); - } - unwrapOr(t) { - return this._promise.then((res) => res.unwrapOr(t)); - } - /** - * Emulates Rust's `?` operator in `safeTry`'s body. See also `safeTry`. - */ - safeUnwrap() { - return __asyncGenerator(this, arguments, function* safeUnwrap_1() { - return yield __await(yield __await(yield* __asyncDelegator(__asyncValues(yield __await(this._promise.then((res) => res.safeUnwrap())))))); - }); - } - // Makes ResultAsync implement PromiseLike - then(successCallback, failureCallback) { - return this._promise.then(successCallback, failureCallback); - } -}; -var okAsync = (value) => new ResultAsync(Promise.resolve(new Ok(value))); -var errAsync = (err2) => new ResultAsync(Promise.resolve(new Err(err2))); -var fromPromise = ResultAsync.fromPromise; -var fromSafePromise = ResultAsync.fromSafePromise; -var fromAsyncThrowable = ResultAsync.fromThrowable; -var combineResultList = (resultList) => { - let acc = ok([]); - for (const result of resultList) { - if (result.isErr()) { - acc = err(result.error); - break; - } else { - acc.map((list) => list.push(result.value)); - } - } - return acc; -}; -var combineResultAsyncList = (asyncResultList) => ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultList); -var combineResultListWithAllErrors = (resultList) => { - let acc = ok([]); - for (const result of resultList) { - if (result.isErr() && acc.isErr()) { - acc.error.push(result.error); - } else if (result.isErr() && acc.isOk()) { - acc = err([result.error]); - } else if (result.isOk() && acc.isOk()) { - acc.value.push(result.value); - } - } - return acc; -}; -var combineResultAsyncListWithAllErrors = (asyncResultList) => ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultListWithAllErrors); -var Result; -(function(Result3) { - function fromThrowable2(fn, errorFn) { - return (...args) => { - try { - const result = fn(...args); - return ok(result); - } catch (e) { - return err(errorFn ? errorFn(e) : e); - } - }; - } - Result3.fromThrowable = fromThrowable2; - function combine(resultList) { - return combineResultList(resultList); - } - Result3.combine = combine; - function combineWithAllErrors(resultList) { - return combineResultListWithAllErrors(resultList); - } - Result3.combineWithAllErrors = combineWithAllErrors; -})(Result || (Result = {})); -var ok = (value) => new Ok(value); -function err(err2) { - return new Err(err2); -} -var Ok = class { - constructor(value) { - this.value = value; - } - isOk() { - return true; - } - isErr() { - return !this.isOk(); - } - map(f) { - return ok(f(this.value)); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - mapErr(_f) { - return ok(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThen(f) { - return f(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThrough(f) { - return f(this.value).map((_value) => this.value); - } - andTee(f) { - try { - f(this.value); - } catch (e) { - } - return ok(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - orElse(_f) { - return ok(this.value); - } - asyncAndThen(f) { - return f(this.value); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - asyncAndThrough(f) { - return f(this.value).map(() => this.value); - } - asyncMap(f) { - return ResultAsync.fromSafePromise(f(this.value)); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - unwrapOr(_v) { - return this.value; - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - match(ok2, _err) { - return ok2(this.value); - } - safeUnwrap() { - const value = this.value; - return function* () { - return value; - }(); - } - _unsafeUnwrap(_) { - return this.value; - } - _unsafeUnwrapErr(config) { - throw createNeverThrowError("Called `_unsafeUnwrapErr` on an Ok", this, config); - } -}; -var Err = class { - constructor(error) { - this.error = error; - } - isOk() { - return false; - } - isErr() { - return !this.isOk(); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - map(_f) { - return err(this.error); - } - mapErr(f) { - return err(f(this.error)); - } - andThrough(_f) { - return err(this.error); - } - andTee(_f) { - return err(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - andThen(_f) { - return err(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types - orElse(f) { - return f(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - asyncAndThen(_f) { - return errAsync(this.error); - } - asyncAndThrough(_f) { - return errAsync(this.error); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars - asyncMap(_f) { - return errAsync(this.error); - } - unwrapOr(v) { - return v; - } - match(_ok, err2) { - return err2(this.error); - } - safeUnwrap() { - const error = this.error; - return function* () { - yield err(error); - throw new Error("Do not use this generator out of `safeTry`"); - }(); - } - _unsafeUnwrap(config) { - throw createNeverThrowError("Called `_unsafeUnwrap` on an Err", this, config); - } - _unsafeUnwrapErr(_) { - return this.error; - } -}; -var fromThrowable = Result.fromThrowable; - -// src/error/base-error.ts -var BaseError = class extends Error { - constructor(message, options = {}) { - const { cause, context } = options; - super(message, { cause }); - __publicField(this, "context"); - this.name = this.constructor.name; - this.context = context; - } -}; - -// src/utils.ts -var ensureError = (value) => { - if (value instanceof Error) return value; - let stringified = "[Unable to stringify the thrown value]"; - try { - stringified = JSON.stringify(value); - } catch (_error) { - } - const error = new Error(stringified); - return error; -}; -var isDenoRuntime = () => typeof Deno !== "undefined"; -var workerUrl = (relativePath) => isDenoRuntime() ? new URL(`./worker/${relativePath}.ts`, new URL(".", import.meta.url).href) : new URL( - import.meta.resolve( - `./${relativePath === "main" ? `worker/${relativePath}` : relativePath}.js` - ) -); - -// src/error/websocket/websocket-error.ts -var WebSocketError = class extends BaseError { -}; - -// src/error/websocket/websocket-connection-error.ts -var WebSocketConnectionError = class extends WebSocketError { - constructor() { - super(...arguments); - __publicField(this, "message", "An error occured while trying to connect to WebSocket"); - } -}; - -// src/worker/main.ts -var import_events = __toESM(require_events()); -var events = new import_events.default(); -var worker; -var isInitialized = false; -self.onmessage = (event) => { - addWorker(event); - if (!isInitialized) { - isInitialized = true; - events.once("OPERATION_FAILED" /* OPERATION_FAILED */, () => { - if (worker) { - worker.terminate(); - } - }); - } -}; -var updateFile = (lufiFile, args) => { - Object.assign(lufiFile, args); - if (typeof WorkerGlobalScope !== "undefined") { - self.postMessage({ - event: "FILE_UPDATED" /* FILE_UPDATED */, - lufiFile - }); - } - return lufiFile; -}; -var sendFileError = (lufiFile, error) => { - updateFile(lufiFile, { uploadStatus: 2 /* FAILED */ }); - self.postMessage({ event: "OPERATION_FAILED" /* OPERATION_FAILED */, error }); -}; -var addWorker = (event, callback) => { - const { action } = event.data; - if (action === 5 /* PAUSE */ || action === 8 /* RESUME */) { - worker.postMessage(event.data); - } else { - switch (action) { - case 2 /* CANCEL */: - { - worker = new Worker(workerUrl("cancel"), { type: "module" }); - worker.postMessage(event.data); - } - break; - case 3 /* DOWNLOAD */: - { - worker = new Worker(workerUrl("download"), { type: "module" }); - worker.postMessage(event.data); - } - break; - case 4 /* INFOS */: - { - worker = new Worker(workerUrl("infos"), { type: "module" }); - worker.postMessage(event.data); - } - break; - case 7 /* REMOVE */: - { - worker = worker || new Worker(workerUrl("remove"), { type: "module" }); - worker.postMessage(event.data); - } - break; - case 9 /* UPLOAD */: - { - worker = worker || new Worker(workerUrl("upload"), { type: "module" }); - worker.postMessage(event.data); - } - break; - default: { - console.error("Action not found"); - } - } - worker.onmessage = (e) => { - if (callback) callback(e); - self.postMessage(e.data); - }; - worker.onerror = (error) => { - console.error(`Error: ${error.message}`); - }; - } -}; -var init = () => { - events.once("SOCKET_OPENED" /* SOCKET_OPENED */, () => { - self.postMessage({ - event: "SOCKET_OPENED" /* SOCKET_OPENED */ - }); - }); - events.once("OPERATION_FAILED" /* OPERATION_FAILED */, (error) => { - self.postMessage({ event: "OPERATION_FAILED" /* OPERATION_FAILED */, error }); - }); -}; - -// node_modules/.deno/arraybuffer-encoding@1.1.0/node_modules/arraybuffer-encoding/dist/esm/base64/encoding.js -var Encoding = class { - /** - * - * @param charset Charset to use for base64 encoding. This must be 64-characters long. - * @param noPadding If true, encoded strings won't include padding. - */ - constructor(charset, noPadding) { - if (!charset || charset.length != 64) { - throw Error("Charset must contain 64 characters"); - } - this._charset = charset; - this._noPadding = !!noPadding; - this._valid = new RegExp("^[" + this._charset.replace("-", "\\-") + "]+={0,2}$"); - } - /** - * Encode an ArrayBuffer to base64 in a string. - * @param ab Data to encode to base64 - * @returns Base64-encoded string - */ - Encode(ab) { - const len = ab.byteLength; - if (!len) { - return ""; - } - const view = new Uint8Array(ab); - let res = ""; - for (let i = 0; i < len; i += 3) { - res += this._charset[view[i] >> 2] + this._charset[(view[i] & 3) << 4 | view[i + 1] >> 4] + this._charset[(view[i + 1] & 15) << 2 | view[i + 2] >> 6] + this._charset[view[i + 2] & 63]; - } - if (len % 3 == 2) { - res = res.substring(0, res.length - 1); - if (!this._noPadding) { - res += "="; - } - } else if (len % 3 == 1) { - res = res.substring(0, res.length - 2); - if (!this._noPadding) { - res += "=="; - } - } - return res; - } - /** - * Decode a string from base64. Padding is always optional. - * @param str Base64-encoded string - * @returns Data decoded from the base64 string - */ - Decode(str) { - str = (str || "").replace(/[\s]/g, ""); - if (!str) { - return new ArrayBuffer(0); - } - if (!this._valid.test(str)) { - throw Error("Invalid base64 input sequence"); - } - let viewLen = Math.floor(str.length * 0.75); - if (str[str.length - 2] == "=") { - viewLen -= 2; - } else if (str[str.length - 1] == "=") { - viewLen--; - } - const view = new Uint8Array(viewLen); - let enc1, enc2, enc3, enc4, i = 0, j = 0; - while (i < str.length * 0.75) { - enc1 = this._charset.indexOf(str.charAt(j++)); - enc2 = this._charset.indexOf(str.charAt(j++)); - enc3 = this._charset.indexOf(str.charAt(j++)); - enc4 = this._charset.indexOf(str.charAt(j++)); - view[i++] = enc1 << 2 | enc2 >> 4; - view[i++] = (enc2 & 15) << 4 | enc3 >> 2; - view[i++] = (enc3 & 3) << 6 | enc4; - } - return view.buffer; - } -}; - -// node_modules/.deno/arraybuffer-encoding@1.1.0/node_modules/arraybuffer-encoding/dist/esm/base64/standard.js -var obj = new Encoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"); -function Decode(str) { - return obj.Decode(str); -} - -// node_modules/.deno/arraybuffer-encoding@1.1.0/node_modules/arraybuffer-encoding/dist/esm/base64/url.js -var obj2 = new Encoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_", true); -function Decode2(str) { - return obj2.Decode(str); -} - -// src/api/crypto/sjcl.ts -var import_sjcl = __toESM(require_sjcl()); - -// src/error/crypto/crypto-error.ts -var CryptoError = class extends BaseError { -}; - -// src/error/crypto/decryption-error.ts -var DecryptionError = class extends CryptoError { - constructor() { - super(...arguments); - __publicField(this, "message", "Unable to decrypt the provided data"); - } -}; - -// src/api/crypto/sjcl.ts -var decrypt = (key, encryptedData) => { - try { - const data = typeof encryptedData === "string" ? encryptedData : encryptedData.data; - return okAsync(Decode(import_sjcl.default.decrypt(key, data))); - } catch (error) { - return errAsync( - new DecryptionError(void 0, { cause: ensureError(error) }) - ); - } -}; - -// src/api/crypto/web.ts -var decrypt2 = (key, encrypted) => { - return importKey(key).andThen( - (importedKey) => ResultAsync.fromPromise( - crypto.subtle.decrypt( - { - name: "AES-GCM", - iv: encrypted.iv - }, - importedKey, - Decode(encrypted.data) - ), - (error) => new DecryptionError(void 0, { cause: ensureError(error) }) - ) - ); -}; -var importKey = (key) => { - return ResultAsync.fromPromise( - crypto.subtle.importKey( - "raw", - Decode2(key), - { name: "AES-GCM" }, - false, - [ - "encrypt", - "decrypt" - ] - ), - (error) => new CryptoError("Unable to import cryptography key", { - cause: ensureError(error) - }) - ); -}; - -// src/api/crypto.ts -var decrypt3 = (key, value) => { - return value.algo === void 0 || value.algo === 0 /* Sjcl */ ? decrypt(key, value) : decrypt2(key, value); -}; - -// src/api/websocket.ts -var sockets = {}; -var MAX_ERRORS = 5; -var onCancelMessage = (data) => { - events.emit("UPLOAD_CANCELLED" /* UPLOAD_CANCELLED */, data.success); - return okAsync(void 0); -}; -var onDownloadMessage = (response, lufiFile) => { - const result = response.split("XXMOJOXX"); - const metadataString = result.shift(); - if (metadataString !== void 0) { - const metadata = JSON.parse(metadataString); - if (isServerDownloadChunkSuccessMetadata(metadata)) { - const dataString = result.shift(); - if (dataString) { - const encryptedData = JSON.parse(dataString); - if (encryptedData.iv) { - encryptedData.iv = new Uint8Array(Object.values(encryptedData.iv)); - } - return decrypt3(lufiFile.keys.client, encryptedData).andThen( - (decryptedPart) => { - const chunk = typeof decryptedPart === "string" ? new TextEncoder().encode(decryptedPart).buffer : decryptedPart; - if (metadata.part === 0) { - updateFile(lufiFile, { - chunksReady: lufiFile.chunksReady + 1, - delAtFirstView: metadata.del_at_first_view, - delay: metadata.delay, - name: metadata.name, - size: metadata.size, - totalChunks: metadata.total, - type: metadata.type, - zipped: metadata.zipped - }); - events.emit("DOWNLOAD_STARTED" /* DOWNLOAD_STARTED */); - } else { - updateFile(lufiFile, { chunksReady: lufiFile.chunksReady + 1 }); - } - events.emit("CHUNK_DOWNLOADED" /* CHUNK_DOWNLOADED */, chunk, metadata.part); - if (++metadata.part === metadata.total) { - return endDownload(lufiFile).andThen(() => { - events.emit("DOWNLOAD_COMPLETE" /* DOWNLOAD_COMPLETE */); - events.emit("SOCKET_OPERATION_TERMINATED" /* SOCKET_OPERATION_TERMINATED */); - return okAsync(void 0); - }); - } - return okAsync(void 0); - } - ); - } else { - const error = new WebSocketError( - "Can't retrieve metadata from data received by the server" - ); - events.emit("OPERATION_FAILED" /* OPERATION_FAILED */, error); - return errAsync(error); - } - } else { - const error = new WebSocketError(metadata.msg); - events.emit("OPERATION_FAILED" /* OPERATION_FAILED */, error); - return errAsync(error); - } - } else { - const error = new WebSocketError( - "Can't retrieve metadata from data received by the server" - ); - events.emit("OPERATION_FAILED" /* OPERATION_FAILED */, error); - return errAsync(error); - } -}; -var onUploadMessage = (response, lufiFile) => { - if (response.success) { - if (response.j === 0) { - updateFile(lufiFile, { - keys: { client: lufiFile.keys.client, server: response.short }, - actionToken: response.token, - queueIndex: response.i - }); - events.emit("UPLOAD_STARTED" /* UPLOAD_STARTED */); - } - updateFile(lufiFile, { - chunksReady: lufiFile.chunksReady + 1, - createdAt: response.created_at - }); - events.emit("CHUNK_UPLOADED" /* CHUNK_UPLOADED */); - if (lufiFile.chunksReady === lufiFile.totalChunks) { - updateFile(lufiFile, { uploadStatus: 1 /* COMPLETE */ }); - events.emit("UPLOAD_COMPLETE" /* UPLOAD_COMPLETE */); - events.emit("SOCKET_OPERATION_TERMINATED" /* SOCKET_OPERATION_TERMINATED */); - } - return okAsync(void 0); - } else { - const error = new WebSocketError(response.msg); - events.emit("OPERATION_FAILED" /* OPERATION_FAILED */, error); - return errAsync(error); - } -}; -var onMessage = (e, lufiFile) => { - const data = tryParseJson(e.data); - let callback; - if (data) { - if (!data.action && data.msg) { - const error = new WebSocketError(data.msg); - events.emit("OPERATION_FAILED" /* OPERATION_FAILED */, error); - return errAsync(error); - } else { - if ("delay" in data) { - callback = onUploadMessage(data, lufiFile); - } else { - callback = onCancelMessage(data); - } - } - } else { - callback = onDownloadMessage(e.data, lufiFile); - } - return callback; -}; -var isConnecting = (socketKey) => sockets !== void 0 && sockets[socketKey] !== void 0 && sockets[socketKey].readyState === WebSocket.CONNECTING; -var isSpawned = (socketKey) => sockets !== void 0 && sockets[socketKey] !== void 0 && sockets[socketKey].readyState === WebSocket.OPEN; -var endDownload = (lufiFile) => { - let message; - if (lufiFile.password) { - message = { ended: true, file_pwd: lufiFile.password }; - } else { - message = { ended: true }; - } - return sendMessage( - downloadSocketUrl(lufiFile), - lufiFile, - JSON.stringify(message) - ); -}; -var uploadChunk = (lufiFile, metadata, encryptedData) => sendMessage( - uploadSocketUrl(lufiFile), - lufiFile, - `${JSON.stringify(metadata)}XXMOJOXX${JSON.stringify(encryptedData)}` -); -var sendMessage = (socketUrl, lufiFile, message) => { - if (!isSpawned(socketUrl)) { - return spawn(socketUrl).andThen( - () => sendMessage(socketUrl, lufiFile, message) - ); - } else { - sockets[socketUrl].onmessage = (e) => onMessage(e, lufiFile); - sockets[socketUrl].send(message); - return okAsync(void 0); - } -}; -var spawn = (socketKey, errorCount = 0) => { - if (!isSpawned(socketKey) && !isConnecting(socketKey)) { - sockets[socketKey] = new WebSocket(socketKey); - events.once("SOCKET_OPERATION_TERMINATED" /* SOCKET_OPERATION_TERMINATED */, () => { - sockets[socketKey].close(); - }); - events.once("OPERATION_FAILED" /* OPERATION_FAILED */, () => { - events.emit("SOCKET_OPERATION_TERMINATED" /* SOCKET_OPERATION_TERMINATED */); - }); - sockets[socketKey].onopen = () => { - events.emit("SOCKET_OPENED" /* SOCKET_OPENED */); - }; - sockets[socketKey].onclose = () => { - }; - sockets[socketKey].onerror = () => { - if (++errorCount <= MAX_ERRORS) { - console.error( - `An error happened while trying to connect to WebSocket ${socketKey}. Trying again. ${errorCount} / ${MAX_ERRORS}` - ); - return spawn(socketKey, errorCount); - } else { - events.emit("SOCKET_ONERROR" /* SOCKET_ONERROR */); - return errAsync( - new WebSocketConnectionError( - `Unable to connect to WebSocket ${socketKey}.` - ) - ); - } - }; - } - return waitForConnection(socketKey).andThen(() => okAsync(socketKey)).orElse((error) => errAsync(error)); -}; -var waitForConnection = (socketKey) => ResultAsync.fromPromise( - new Promise((resolve, reject) => { - if (!isSpawned(socketKey)) { - events.once("SOCKET_OPENED" /* SOCKET_OPENED */, () => { - resolve(void 0); - }); - events.on("SOCKET_ONERROR" /* SOCKET_ONERROR */, () => { - reject(new WebSocketConnectionError()); - }); - } else { - resolve(void 0); - } - }), - (error) => { - return ensureError(error); - } -); -var buildSocketUrl = (instanceUrl, pathname) => { - const url = new URL(instanceUrl); - url.protocol = url.protocol === "http:" ? "ws:" : "wss:"; - url.pathname += pathname; - return new URL(url.origin + url.pathname); -}; -var downloadSocketUrl = (lufiFile) => { - return buildSocketUrl( - new URL(lufiFile.serverUrl), - "download" /* DOWNLOAD */ + `/${lufiFile.keys.server}` - ).toString(); -}; -var uploadSocketUrl = (lufiFile) => { - return buildSocketUrl(new URL(lufiFile.serverUrl), "upload" /* UPLOAD */).toString(); -}; -var tryParseJson = (data) => { - try { - const parsedObject = JSON.parse(data); - if (parsedObject && typeof parsedObject === "object") { - return parsedObject; - } - } catch (_e) { - } - return false; -}; -var isServerDownloadChunkSuccessMetadata = (message) => { - return typeof message === "object" && message !== null && !("msg" in message); -}; - -// src/api/lufi.ts -var import_events3 = __toESM(require_events()); - -// src/entities/lufi-job.ts -var import_events2 = __toESM(require_events()); - -// src/api/lufi.ts -var files = {}; -var events2 = new import_events3.default(); -var getFilesQueued = () => Object.values(files).filter( - (file) => file.uploadStatus === 4 /* QUEUED */ -); -var getFileIndexInQueue = (clientKey) => Object.keys(getFilesQueued()).indexOf(clientKey); - -// node_modules/.deno/eventemitter3@5.0.1/node_modules/eventemitter3/index.mjs -var import_index = __toESM(require_eventemitter3(), 1); - -// node_modules/.deno/p-timeout@6.1.3/node_modules/p-timeout/index.js -var TimeoutError = class extends Error { - constructor(message) { - super(message); - this.name = "TimeoutError"; - } -}; -var AbortError = class extends Error { - constructor(message) { - super(); - this.name = "AbortError"; - this.message = message; - } -}; -var getDOMException = (errorMessage) => globalThis.DOMException === void 0 ? new AbortError(errorMessage) : new DOMException(errorMessage); -var getAbortedReason = (signal) => { - const reason = signal.reason === void 0 ? getDOMException("This operation was aborted.") : signal.reason; - return reason instanceof Error ? reason : getDOMException(reason); -}; -function pTimeout(promise, options) { - const { - milliseconds, - fallback, - message, - customTimers = { setTimeout, clearTimeout } - } = options; - let timer; - const wrappedPromise = new Promise((resolve, reject) => { - if (typeof milliseconds !== "number" || Math.sign(milliseconds) !== 1) { - throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${milliseconds}\``); - } - if (options.signal) { - const { signal } = options; - if (signal.aborted) { - reject(getAbortedReason(signal)); - } - const abortHandler = () => { - reject(getAbortedReason(signal)); - }; - signal.addEventListener("abort", abortHandler, { once: true }); - promise.finally(() => { - signal.removeEventListener("abort", abortHandler); - }); - } - if (milliseconds === Number.POSITIVE_INFINITY) { - promise.then(resolve, reject); - return; - } - const timeoutError = new TimeoutError(); - timer = customTimers.setTimeout.call(void 0, () => { - if (fallback) { - try { - resolve(fallback()); - } catch (error) { - reject(error); - } - return; - } - if (typeof promise.cancel === "function") { - promise.cancel(); - } - if (message === false) { - resolve(); - } else if (message instanceof Error) { - reject(message); - } else { - timeoutError.message = message != null ? message : `Promise timed out after ${milliseconds} milliseconds`; - reject(timeoutError); - } - }, milliseconds); - (async () => { - try { - resolve(await promise); - } catch (error) { - reject(error); - } - })(); - }); - const cancelablePromise = wrappedPromise.finally(() => { - cancelablePromise.clear(); - }); - cancelablePromise.clear = () => { - customTimers.clearTimeout.call(void 0, timer); - timer = void 0; - }; - return cancelablePromise; -} - -// node_modules/.deno/p-queue@8.0.1/node_modules/p-queue/dist/lower-bound.js -function lowerBound(array, value, comparator) { - let first = 0; - let count = array.length; - while (count > 0) { - const step = Math.trunc(count / 2); - let it = first + step; - if (comparator(array[it], value) <= 0) { - first = ++it; - count -= step + 1; - } else { - count = step; - } - } - return first; -} - -// node_modules/.deno/p-queue@8.0.1/node_modules/p-queue/dist/priority-queue.js -var _queue; -var PriorityQueue = class { - constructor() { - __privateAdd(this, _queue, []); - } - enqueue(run, options) { - options = { - priority: 0, - ...options - }; - const element = { - priority: options.priority, - run - }; - if (this.size && __privateGet(this, _queue)[this.size - 1].priority >= options.priority) { - __privateGet(this, _queue).push(element); - return; - } - const index = lowerBound(__privateGet(this, _queue), element, (a, b) => b.priority - a.priority); - __privateGet(this, _queue).splice(index, 0, element); - } - dequeue() { - const item = __privateGet(this, _queue).shift(); - return item == null ? void 0 : item.run; - } - filter(options) { - return __privateGet(this, _queue).filter((element) => element.priority === options.priority).map((element) => element.run); - } - get size() { - return __privateGet(this, _queue).length; - } -}; -_queue = new WeakMap(); - -// node_modules/.deno/p-queue@8.0.1/node_modules/p-queue/dist/index.js -var _carryoverConcurrencyCount, _isIntervalIgnored, _intervalCount, _intervalCap, _interval, _intervalEnd, _intervalId, _timeoutId, _queue2, _queueClass, _pending, _concurrency, _isPaused, _throwOnTimeout, _PQueue_instances, doesIntervalAllowAnother_get, doesConcurrentAllowAnother_get, next_fn, onResumeInterval_fn, isIntervalPaused_get, tryToStartAnother_fn, initializeIntervalIfNeeded_fn, onInterval_fn, processQueue_fn, throwOnAbort_fn, onEvent_fn; -var PQueue = class extends import_index.default { - // TODO: The `throwOnTimeout` option should affect the return types of `add()` and `addAll()` - constructor(options) { - var _a, _b, _c, _d; - super(); - __privateAdd(this, _PQueue_instances); - __privateAdd(this, _carryoverConcurrencyCount); - __privateAdd(this, _isIntervalIgnored); - __privateAdd(this, _intervalCount, 0); - __privateAdd(this, _intervalCap); - __privateAdd(this, _interval); - __privateAdd(this, _intervalEnd, 0); - __privateAdd(this, _intervalId); - __privateAdd(this, _timeoutId); - __privateAdd(this, _queue2); - __privateAdd(this, _queueClass); - __privateAdd(this, _pending, 0); - // The `!` is needed because of https://github.com/microsoft/TypeScript/issues/32194 - __privateAdd(this, _concurrency); - __privateAdd(this, _isPaused); - __privateAdd(this, _throwOnTimeout); - /** - Per-operation timeout in milliseconds. Operations fulfill once `timeout` elapses if they haven't already. - - Applies to each future operation. - */ - __publicField(this, "timeout"); - options = { - carryoverConcurrencyCount: false, - intervalCap: Number.POSITIVE_INFINITY, - interval: 0, - concurrency: Number.POSITIVE_INFINITY, - autoStart: true, - queueClass: PriorityQueue, - ...options - }; - if (!(typeof options.intervalCap === "number" && options.intervalCap >= 1)) { - throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${(_b = (_a = options.intervalCap) == null ? void 0 : _a.toString()) != null ? _b : ""}\` (${typeof options.intervalCap})`); - } - if (options.interval === void 0 || !(Number.isFinite(options.interval) && options.interval >= 0)) { - throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${(_d = (_c = options.interval) == null ? void 0 : _c.toString()) != null ? _d : ""}\` (${typeof options.interval})`); - } - __privateSet(this, _carryoverConcurrencyCount, options.carryoverConcurrencyCount); - __privateSet(this, _isIntervalIgnored, options.intervalCap === Number.POSITIVE_INFINITY || options.interval === 0); - __privateSet(this, _intervalCap, options.intervalCap); - __privateSet(this, _interval, options.interval); - __privateSet(this, _queue2, new options.queueClass()); - __privateSet(this, _queueClass, options.queueClass); - this.concurrency = options.concurrency; - this.timeout = options.timeout; - __privateSet(this, _throwOnTimeout, options.throwOnTimeout === true); - __privateSet(this, _isPaused, options.autoStart === false); - } - get concurrency() { - return __privateGet(this, _concurrency); - } - set concurrency(newConcurrency) { - if (!(typeof newConcurrency === "number" && newConcurrency >= 1)) { - throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${newConcurrency}\` (${typeof newConcurrency})`); - } - __privateSet(this, _concurrency, newConcurrency); - __privateMethod(this, _PQueue_instances, processQueue_fn).call(this); - } - async add(function_, options = {}) { - options = { - timeout: this.timeout, - throwOnTimeout: __privateGet(this, _throwOnTimeout), - ...options - }; - return new Promise((resolve, reject) => { - __privateGet(this, _queue2).enqueue(async () => { - var _a; - __privateWrapper(this, _pending)._++; - __privateWrapper(this, _intervalCount)._++; - try { - (_a = options.signal) == null ? void 0 : _a.throwIfAborted(); - let operation = function_({ signal: options.signal }); - if (options.timeout) { - operation = pTimeout(Promise.resolve(operation), { milliseconds: options.timeout }); - } - if (options.signal) { - operation = Promise.race([operation, __privateMethod(this, _PQueue_instances, throwOnAbort_fn).call(this, options.signal)]); - } - const result = await operation; - resolve(result); - this.emit("completed", result); - } catch (error) { - if (error instanceof TimeoutError && !options.throwOnTimeout) { - resolve(); - return; - } - reject(error); - this.emit("error", error); - } finally { - __privateMethod(this, _PQueue_instances, next_fn).call(this); - } - }, options); - this.emit("add"); - __privateMethod(this, _PQueue_instances, tryToStartAnother_fn).call(this); - }); - } - async addAll(functions, options) { - return Promise.all(functions.map(async (function_) => this.add(function_, options))); - } - /** - Start (or resume) executing enqueued tasks within concurrency limit. No need to call this if queue is not paused (via `options.autoStart = false` or by `.pause()` method.) - */ - start() { - if (!__privateGet(this, _isPaused)) { - return this; - } - __privateSet(this, _isPaused, false); - __privateMethod(this, _PQueue_instances, processQueue_fn).call(this); - return this; - } - /** - Put queue execution on hold. - */ - pause() { - __privateSet(this, _isPaused, true); - } - /** - Clear the queue. - */ - clear() { - __privateSet(this, _queue2, new (__privateGet(this, _queueClass))()); - } - /** - Can be called multiple times. Useful if you for example add additional items at a later time. - - @returns A promise that settles when the queue becomes empty. - */ - async onEmpty() { - if (__privateGet(this, _queue2).size === 0) { - return; - } - await __privateMethod(this, _PQueue_instances, onEvent_fn).call(this, "empty"); - } - /** - @returns A promise that settles when the queue size is less than the given limit: `queue.size < limit`. - - If you want to avoid having the queue grow beyond a certain size you can `await queue.onSizeLessThan()` before adding a new item. - - Note that this only limits the number of items waiting to start. There could still be up to `concurrency` jobs already running that this call does not include in its calculation. - */ - async onSizeLessThan(limit) { - if (__privateGet(this, _queue2).size < limit) { - return; - } - await __privateMethod(this, _PQueue_instances, onEvent_fn).call(this, "next", () => __privateGet(this, _queue2).size < limit); - } - /** - The difference with `.onEmpty` is that `.onIdle` guarantees that all work from the queue has finished. `.onEmpty` merely signals that the queue is empty, but it could mean that some promises haven't completed yet. - - @returns A promise that settles when the queue becomes empty, and all promises have completed; `queue.size === 0 && queue.pending === 0`. - */ - async onIdle() { - if (__privateGet(this, _pending) === 0 && __privateGet(this, _queue2).size === 0) { - return; - } - await __privateMethod(this, _PQueue_instances, onEvent_fn).call(this, "idle"); - } - /** - Size of the queue, the number of queued items waiting to run. - */ - get size() { - return __privateGet(this, _queue2).size; - } - /** - Size of the queue, filtered by the given options. - - For example, this can be used to find the number of items remaining in the queue with a specific priority level. - */ - sizeBy(options) { - return __privateGet(this, _queue2).filter(options).length; - } - /** - Number of running items (no longer in the queue). - */ - get pending() { - return __privateGet(this, _pending); - } - /** - Whether the queue is currently paused. - */ - get isPaused() { - return __privateGet(this, _isPaused); - } -}; -_carryoverConcurrencyCount = new WeakMap(); -_isIntervalIgnored = new WeakMap(); -_intervalCount = new WeakMap(); -_intervalCap = new WeakMap(); -_interval = new WeakMap(); -_intervalEnd = new WeakMap(); -_intervalId = new WeakMap(); -_timeoutId = new WeakMap(); -_queue2 = new WeakMap(); -_queueClass = new WeakMap(); -_pending = new WeakMap(); -_concurrency = new WeakMap(); -_isPaused = new WeakMap(); -_throwOnTimeout = new WeakMap(); -_PQueue_instances = new WeakSet(); -doesIntervalAllowAnother_get = function() { - return __privateGet(this, _isIntervalIgnored) || __privateGet(this, _intervalCount) < __privateGet(this, _intervalCap); -}; -doesConcurrentAllowAnother_get = function() { - return __privateGet(this, _pending) < __privateGet(this, _concurrency); -}; -next_fn = function() { - __privateWrapper(this, _pending)._--; - __privateMethod(this, _PQueue_instances, tryToStartAnother_fn).call(this); - this.emit("next"); -}; -onResumeInterval_fn = function() { - __privateMethod(this, _PQueue_instances, onInterval_fn).call(this); - __privateMethod(this, _PQueue_instances, initializeIntervalIfNeeded_fn).call(this); - __privateSet(this, _timeoutId, void 0); -}; -isIntervalPaused_get = function() { - const now = Date.now(); - if (__privateGet(this, _intervalId) === void 0) { - const delay = __privateGet(this, _intervalEnd) - now; - if (delay < 0) { - __privateSet(this, _intervalCount, __privateGet(this, _carryoverConcurrencyCount) ? __privateGet(this, _pending) : 0); - } else { - if (__privateGet(this, _timeoutId) === void 0) { - __privateSet(this, _timeoutId, setTimeout(() => { - __privateMethod(this, _PQueue_instances, onResumeInterval_fn).call(this); - }, delay)); - } - return true; - } - } - return false; -}; -tryToStartAnother_fn = function() { - if (__privateGet(this, _queue2).size === 0) { - if (__privateGet(this, _intervalId)) { - clearInterval(__privateGet(this, _intervalId)); - } - __privateSet(this, _intervalId, void 0); - this.emit("empty"); - if (__privateGet(this, _pending) === 0) { - this.emit("idle"); - } - return false; - } - if (!__privateGet(this, _isPaused)) { - const canInitializeInterval = !__privateGet(this, _PQueue_instances, isIntervalPaused_get); - if (__privateGet(this, _PQueue_instances, doesIntervalAllowAnother_get) && __privateGet(this, _PQueue_instances, doesConcurrentAllowAnother_get)) { - const job = __privateGet(this, _queue2).dequeue(); - if (!job) { - return false; - } - this.emit("active"); - job(); - if (canInitializeInterval) { - __privateMethod(this, _PQueue_instances, initializeIntervalIfNeeded_fn).call(this); - } - return true; - } - } - return false; -}; -initializeIntervalIfNeeded_fn = function() { - if (__privateGet(this, _isIntervalIgnored) || __privateGet(this, _intervalId) !== void 0) { - return; - } - __privateSet(this, _intervalId, setInterval(() => { - __privateMethod(this, _PQueue_instances, onInterval_fn).call(this); - }, __privateGet(this, _interval))); - __privateSet(this, _intervalEnd, Date.now() + __privateGet(this, _interval)); -}; -onInterval_fn = function() { - if (__privateGet(this, _intervalCount) === 0 && __privateGet(this, _pending) === 0 && __privateGet(this, _intervalId)) { - clearInterval(__privateGet(this, _intervalId)); - __privateSet(this, _intervalId, void 0); - } - __privateSet(this, _intervalCount, __privateGet(this, _carryoverConcurrencyCount) ? __privateGet(this, _pending) : 0); - __privateMethod(this, _PQueue_instances, processQueue_fn).call(this); -}; -/** -Executes all queued functions until it reaches the limit. -*/ -processQueue_fn = function() { - while (__privateMethod(this, _PQueue_instances, tryToStartAnother_fn).call(this)) { - } -}; -throwOnAbort_fn = async function(signal) { - return new Promise((_resolve, reject) => { - signal.addEventListener("abort", () => { - reject(signal.reason); - }, { once: true }); - }); -}; -onEvent_fn = async function(event, filter) { - return new Promise((resolve) => { - const listener = () => { - if (filter && !filter()) { - return; - } - this.off(event, listener); - resolve(); - }; - this.on(event, listener); - }); -}; - -// src/worker/upload.ts -var isInitialized2 = false; -var QUEUE_CONCURRENCY_LIMIT = navigator.hardwareConcurrency || 4; -var queue = new PQueue({ - concurrency: QUEUE_CONCURRENCY_LIMIT, - autoStart: false -}); -var itemsInQueue = 0; -var chunks = []; -var isPaused = false; -self.onmessage = (event) => { - const data = event.data; - const { chunk, lufiFile } = data.args; - if (!isInitialized2) { - init(); - isInitialized2 = true; - } - if (chunk) { - chunks[chunk.index] = chunk; - if (chunks.length === lufiFile.totalChunks) { - events.once("UPLOAD_COMPLETE" /* UPLOAD_COMPLETE */, () => { - self.postMessage({ - event: "UPLOAD_COMPLETE" /* UPLOAD_COMPLETE */ - }); - }); - events.on("FILE_UPDATED" /* FILE_UPDATED */, updateFile); - events.on("CHUNK_UPLOADED" /* CHUNK_UPLOADED */, () => { - self.postMessage({ event: "CHUNK_UPLOADED" /* CHUNK_UPLOADED */ }); - itemsInQueue--; - if (!isPaused && itemsInQueue < QUEUE_CONCURRENCY_LIMIT) { - queue.start(); - } - }); - return upload(event.data); - } - } else { - if (data.action === 5 /* PAUSE */) { - isPaused = true; - queue.pause(); - self.postMessage({ event: "JOB_PAUSED" /* JOB_PAUSED */ }); - } - if (data.action === 8 /* RESUME */) { - isPaused = false; - queue.start(); - self.postMessage({ event: "JOB_RESUMED" /* JOB_RESUMED */ }); - } - } -}; -var upload = (workerMessage) => startUpload( - workerMessage, - getFileIndexInQueue(workerMessage.args.lufiFile.keys.client) -); -var startUpload = (workerMessage, queueIndex) => { - const { lufiFile } = workerMessage.args; - const job = new Worker(workerUrl("encrypt"), { type: "module" }); - events.on("UPLOAD_STARTED" /* UPLOAD_STARTED */, () => { - job.onmessage = async (event) => { - if (event.data.encryptedData) { - const { encryptedData } = event.data; - await queue.add(async () => { - await uploadChunk( - lufiFile, - { - total: lufiFile.totalChunks, - part: event.data.chunkIndex, - size: lufiFile.size, - name: lufiFile.name.split("/").pop(), - type: lufiFile.type, - delay: lufiFile.delay, - del_at_first_view: lufiFile.delAtFirstView, - zipped: lufiFile.zipped, - id: lufiFile.keys.server, - i: queueIndex, - file_pwd: lufiFile.password - }, - encryptedData - ); - itemsInQueue++; - if (isPaused || itemsInQueue === QUEUE_CONCURRENCY_LIMIT) { - queue.pause(); - } - }); - } - queue.start(); - if (event.data.error) { - sendFileError(lufiFile, event.data.error); - job.terminate(); - } - }; - for (let i = 1; i < lufiFile.totalChunks; i++) { - workerMessage.args.chunk = chunks[i]; - job.postMessage(workerMessage); - } - }); - job.onmessage = (event) => { - if (event.data.encryptedData) { - const { encryptedData } = event.data; - uploadChunk( - lufiFile, - { - total: lufiFile.totalChunks, - part: event.data.chunkIndex, - size: lufiFile.size, - name: lufiFile.name.split("/").pop(), - type: lufiFile.type, - delay: lufiFile.delay, - del_at_first_view: lufiFile.delAtFirstView, - zipped: lufiFile.zipped, - id: null, - i: queueIndex, - file_pwd: lufiFile.password - }, - encryptedData - ).mapErr((error) => { - sendFileError(lufiFile, error); - }); - } - if (event.data.error) { - sendFileError(lufiFile, event.data.error); - } - }; - workerMessage.args.chunk = chunks[0]; - job.postMessage(workerMessage); - return okAsync(void 0); -}; +var Yt=Object.create;var je=Object.defineProperty;var Qt=Object.getOwnPropertyDescriptor;var Zt=Object.getOwnPropertyNames;var er=Object.getPrototypeOf,tr=Object.prototype.hasOwnProperty;var st=e=>{throw TypeError(e)};var rr=(e,t,r)=>t in e?je(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var nr=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,r)=>(typeof require<"u"?require:t)[r]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var We=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ir=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Zt(t))!tr.call(e,i)&&i!==r&&je(e,i,{get:()=>t[i],enumerable:!(n=Qt(t,i))||n.enumerable});return e};var se=(e,t,r)=>(r=e!=null?Yt(er(e)):{},ir(t||!e||!e.__esModule?je(r,"default",{value:e,enumerable:!0}):r,e));var D=(e,t,r)=>rr(e,typeof t!="symbol"?t+"":t,r),ze=(e,t,r)=>t.has(e)||st("Cannot "+r);var d=(e,t,r)=>(ze(e,t,"read from private field"),r?r.call(e):t.get(e)),A=(e,t,r)=>t.has(e)?st("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),w=(e,t,r,n)=>(ze(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r),b=(e,t,r)=>(ze(e,t,"access private method"),r);var be=(e,t,r,n)=>({set _(i){w(e,t,i,r)},get _(){return d(e,t,n)}});var De=We((wn,qe)=>{"use strict";var K=typeof Reflect=="object"?Reflect:null,lt=K&&typeof K.apply=="function"?K.apply:function(t,r,n){return Function.prototype.apply.call(t,r,n)},Oe;K&&typeof K.ownKeys=="function"?Oe=K.ownKeys:Object.getOwnPropertySymbols?Oe=function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Oe=function(t){return Object.getOwnPropertyNames(t)};function hr(e){console&&console.warn&&console.warn(e)}var pt=Number.isNaN||function(t){return t!==t};function v(){v.init.call(this)}qe.exports=v;qe.exports.once=yr;v.EventEmitter=v;v.prototype._events=void 0;v.prototype._eventsCount=0;v.prototype._maxListeners=void 0;var ht=10;function xe(e){if(typeof e!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}Object.defineProperty(v,"defaultMaxListeners",{enumerable:!0,get:function(){return ht},set:function(e){if(typeof e!="number"||e<0||pt(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");ht=e}});v.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};v.prototype.setMaxListeners=function(t){if(typeof t!="number"||t<0||pt(t))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+t+".");return this._maxListeners=t,this};function dt(e){return e._maxListeners===void 0?v.defaultMaxListeners:e._maxListeners}v.prototype.getMaxListeners=function(){return dt(this)};v.prototype.emit=function(t){for(var r=[],n=1;n0&&(s=r[0]),s instanceof Error)throw s;var c=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw c.context=s,c}var u=o[t];if(u===void 0)return!1;if(typeof u=="function")lt(u,this,r);else for(var f=u.length,h=Et(u,f),n=0;n0&&s.length>i&&!s.warned){s.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=s.length,hr(c)}return e}v.prototype.addListener=function(t,r){return mt(this,t,r,!1)};v.prototype.on=v.prototype.addListener;v.prototype.prependListener=function(t,r){return mt(this,t,r,!0)};function pr(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function yt(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},i=pr.bind(n);return i.listener=r,n.wrapFn=i,i}v.prototype.once=function(t,r){return xe(r),this.on(t,yt(this,t,r)),this};v.prototype.prependOnceListener=function(t,r){return xe(r),this.prependListener(t,yt(this,t,r)),this};v.prototype.removeListener=function(t,r){var n,i,o,s,c;if(xe(r),i=this._events,i===void 0)return this;if(n=i[t],n===void 0)return this;if(n===r||n.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete i[t],i.removeListener&&this.emit("removeListener",t,n.listener||r));else if(typeof n!="function"){for(o=-1,s=n.length-1;s>=0;s--)if(n[s]===r||n[s].listener===r){c=n[s].listener,o=s;break}if(o<0)return this;o===0?n.shift():dr(n,o),n.length===1&&(i[t]=n[0]),i.removeListener!==void 0&&this.emit("removeListener",t,c||r)}return this};v.prototype.off=v.prototype.removeListener;v.prototype.removeAllListeners=function(t){var r,n,i;if(n=this._events,n===void 0)return this;if(n.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):n[t]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete n[t]),this;if(arguments.length===0){var o=Object.keys(n),s;for(i=0;i=0;i--)this.removeListener(t,r[i]);return this};function gt(e,t,r){var n=e._events;if(n===void 0)return[];var i=n[t];return i===void 0?[]:typeof i=="function"?r?[i.listener||i]:[i]:r?mr(i):Et(i,i.length)}v.prototype.listeners=function(t){return gt(this,t,!0)};v.prototype.rawListeners=function(t){return gt(this,t,!1)};v.listenerCount=function(e,t){return typeof e.listenerCount=="function"?e.listenerCount(t):vt.call(e,t)};v.prototype.listenerCount=vt;function vt(e){var t=this._events;if(t!==void 0){var r=t[e];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}v.prototype.eventNames=function(){return this._eventsCount>0?Oe(this._events):[]};function Et(e,t){for(var r=new Array(t),n=0;n{"use strict";var a={cipher:{},hash:{},keyexchange:{},mode:{},misc:{},codec:{},exception:{corrupt:function(e){this.toString=function(){return"CORRUPT: "+this.message},this.message=e},invalid:function(e){this.toString=function(){return"INVALID: "+this.message},this.message=e},bug:function(e){this.toString=function(){return"BUG: "+this.message},this.message=e},notReady:function(e){this.toString=function(){return"NOT READY: "+this.message},this.message=e}}};a.cipher.aes=function(e){this.s[0][0][0]||this.O();var t,r,n,i,o=this.s[0][4],s=this.s[1];t=e.length;var c=1;if(t!==4&&t!==6&&t!==8)throw new a.exception.invalid("invalid aes key size");for(this.b=[n=e.slice(0),i=[]],e=t;e<4*t+28;e++)r=n[e-1],(e%t===0||t===8&&e%t===4)&&(r=o[r>>>24]<<24^o[r>>16&255]<<16^o[r>>8&255]<<8^o[r&255],e%t===0&&(r=r<<8^r>>>24^c<<24,c=c<<1^283*(c>>7))),n[e]=n[e-t]^r;for(t=0;e;t++,e--)r=n[t&3?e:e-4],i[t]=4>=e||4>t?r:s[0][o[r>>>24]]^s[1][o[r>>16&255]]^s[2][o[r>>8&255]]^s[3][o[r&255]]};a.cipher.aes.prototype={encrypt:function(e){return Dt(this,e,0)},decrypt:function(e){return Dt(this,e,1)},s:[[[],[],[],[],[]],[[],[],[],[],[]]],O:function(){var e=this.s[0],t=this.s[1],r=e[4],n=t[4],i,o,s,c=[],u=[],f,h,l,p;for(i=0;256>i;i++)u[(c[i]=i<<1^283*(i>>7))^i]=i;for(o=s=0;!r[o];o^=f||1,s=u[s]||1)for(l=s^s<<1^s<<2^s<<3^s<<4,l=l>>8^l&255^99,r[o]=l,n[l]=o,h=c[i=c[f=c[o]]],p=16843009*h^65537*i^257*f^16843008*o,h=257*c[l]^16843008*l,i=0;4>i;i++)e[i][o]=h=h<<24^h>>>8,t[i][l]=p=p<<24^p>>>8;for(i=0;5>i;i++)e[i]=e[i].slice(0),t[i]=t[i].slice(0)}};function Dt(e,t,r){if(t.length!==4)throw new a.exception.invalid("invalid aes block size");var n=e.b[r],i=t[0]^n[0],o=t[r?3:1]^n[1],s=t[2]^n[2];t=t[r?1:3]^n[3];var c,u,f,h=n.length/4-2,l,p=4,m=[0,0,0,0];c=e.s[r],e=c[0];var E=c[1],V=c[2],Ae=c[3],Le=c[4];for(l=0;l>>24]^E[o>>16&255]^V[s>>8&255]^Ae[t&255]^n[p],u=e[o>>>24]^E[s>>16&255]^V[t>>8&255]^Ae[i&255]^n[p+1],f=e[s>>>24]^E[t>>16&255]^V[i>>8&255]^Ae[o&255]^n[p+2],t=e[t>>>24]^E[i>>16&255]^V[o>>8&255]^Ae[s&255]^n[p+3],p+=4,i=c,o=u,s=f;for(l=0;4>l;l++)m[r?3&-l:l]=Le[i>>>24]<<24^Le[o>>16&255]<<16^Le[s>>8&255]<<8^Le[t&255]^n[p++],c=i,i=o,o=s,s=t,t=c;return m}a.bitArray={bitSlice:function(e,t,r){return e=a.bitArray.$(e.slice(t/32),32-(t&31)).slice(1),r===void 0?e:a.bitArray.clamp(e,r-t)},extract:function(e,t,r){var n=Math.floor(-t-r&31);return((t+r-1^t)&-32?e[t/32|0]<<32-n^e[t/32+1|0]>>>n:e[t/32|0]>>>n)&(1<>t-1,1)),e},partial:function(e,t,r){return e===32?t:(r?t|0:t<<32-e)+1099511627776*e},getPartial:function(e){return Math.round(e/1099511627776)||32},equal:function(e,t){if(a.bitArray.bitLength(e)!==a.bitArray.bitLength(t))return!1;var r=0,n;for(n=0;n>>t),r=e[i]<<32-t;return i=e.length?e[e.length-1]:0,e=a.bitArray.getPartial(i),n.push(a.bitArray.partial(t+e&31,32>>24|r>>>8&65280|(r&65280)<<8|r<<24;return e}};a.codec.utf8String={fromBits:function(e){var t="",r=a.bitArray.bitLength(e),n,i;for(n=0;n>>8>>>8>>>8),i<<=8;return decodeURIComponent(escape(t))},toBits:function(e){e=unescape(encodeURIComponent(e));var t=[],r,n=0;for(r=0;r>>s)>>>i),sh){if(!t)try{return a.codec.base32hex.toBits(e)}catch{}throw new a.exception.invalid("this isn't "+l+"!")}c>i?(c-=i,o.push(f^h>>>c),f=h<>>i)>>>26),6>i?(s=e[r]<<6-i,i+=26,r++):(s<<=6,i-=6);for(;n.length&3&&!t;)n+="=";return n},toBits:function(e,t){e=e.replace(/\s|=/g,"");var r=[],n,i=0,o=a.codec.base64.B,s=0,c;for(t&&(o=o.substr(0,62)+"-_"),n=0;nc)throw new a.exception.invalid("this isn't base64!");26>>i),s=c<<32-i):(i+=6,s^=c<<32-i)}return i&56&&r.push(a.bitArray.partial(i&56,s,1)),r}};a.codec.base64url={fromBits:function(e){return a.codec.base64.fromBits(e,1,1)},toBits:function(e){return a.codec.base64.toBits(e,1)}};a.hash.sha256=function(e){this.b[0]||this.O(),e?(this.F=e.F.slice(0),this.A=e.A.slice(0),this.l=e.l):this.reset()};a.hash.sha256.hash=function(e){return new a.hash.sha256().update(e).finalize()};a.hash.sha256.prototype={blockSize:512,reset:function(){return this.F=this.Y.slice(0),this.A=[],this.l=0,this},update:function(e){typeof e=="string"&&(e=a.codec.utf8String.toBits(e));var t,r=this.A=a.bitArray.concat(this.A,e);if(t=this.l,e=this.l=t+a.bitArray.bitLength(e),9007199254740991t;r++){for(i=!0,n=2;n*n<=r;n++)if(r%n===0){i=!1;break}i&&(8>t&&(this.Y[t]=e(Math.pow(r,.5))),this.b[t]=e(Math.pow(r,1/3)),t++)}}};function He(e,t){var r,n,i,o=e.F,s=e.b,c=o[0],u=o[1],f=o[2],h=o[3],l=o[4],p=o[5],m=o[6],E=o[7];for(r=0;64>r;r++)16>r?n=t[r]:(n=t[r+1&15],i=t[r+14&15],n=t[r&15]=(n>>>7^n>>>18^n>>>3^n<<25^n<<14)+(i>>>17^i>>>19^i>>>10^i<<15^i<<13)+t[r&15]+t[r+9&15]|0),n=n+E+(l>>>6^l>>>11^l>>>25^l<<26^l<<21^l<<7)+(m^l&(p^m))+s[r],E=m,m=p,p=l,l=h+n|0,h=f,f=u,u=c,c=n+(u&f^h&(u^f))+(u>>>2^u>>>13^u>>>22^u<<30^u<<19^u<<10)|0;o[0]=o[0]+c|0,o[1]=o[1]+u|0,o[2]=o[2]+f|0,o[3]=o[3]+h|0,o[4]=o[4]+l|0,o[5]=o[5]+p|0,o[6]=o[6]+m|0,o[7]=o[7]+E|0}a.mode.ccm={name:"ccm",G:[],listenProgress:function(e){a.mode.ccm.G.push(e)},unListenProgress:function(e){e=a.mode.ccm.G.indexOf(e),-1u)throw new a.exception.invalid("ccm: iv must be at least 7 bytes");for(o=2;4>o&&f>>>8*o;o++);return o<15-u&&(o=15-u),r=c.clamp(r,8*(15-o)),t=a.mode.ccm.V(e,t,r,n,i,o),s=a.mode.ccm.C(e,s,r,t,i,o),c.concat(s.data,s.tag)},decrypt:function(e,t,r,n,i){i=i||64,n=n||[];var o=a.bitArray,s=o.bitLength(r)/8,f=o.bitLength(t),c=o.clamp(t,f-i),u=o.bitSlice(t,f-i),f=(f-i)/8;if(7>s)throw new a.exception.invalid("ccm: iv must be at least 7 bytes");for(t=2;4>t&&f>>>8*t;t++);if(t<15-s&&(t=15-s),r=o.clamp(r,8*(15-t)),c=a.mode.ccm.C(e,c,r,u,i,t),e=a.mode.ccm.V(e,c.data,r,n,i,t),!o.equal(c.tag,e))throw new a.exception.corrupt("ccm: tag doesn't match");return c.data},na:function(e,t,r,n,i,o){var s=[],c=a.bitArray,u=c.i;if(n=[c.partial(8,(t.length?64:0)|n-2<<2|o-1)],n=c.concat(n,r),n[3]|=i,n=e.encrypt(n),t.length)for(r=c.bitLength(t)/8,65279>=r?s=[c.partial(16,r)]:4294967295>=r&&(s=c.concat([c.partial(16,65534)],[r])),s=c.concat(s,t),t=0;ti||16h&&(a.mode.ccm.fa(s/u),h+=l),r[3]++,i=e.encrypt(r),t[s]^=i[0],t[s+1]^=i[1],t[s+2]^=i[2],t[s+3]^=i[3];return{tag:n,data:c.clamp(t,f)}}};a.mode.ocb2={name:"ocb2",encrypt:function(e,t,r,n,i,o){if(a.bitArray.bitLength(r)!==128)throw new a.exception.invalid("ocb iv must be 128 bits");var s,c=a.mode.ocb2.S,u=a.bitArray,f=u.i,h=[0,0,0,0];r=c(e.encrypt(r));var l,p=[];for(n=n||[],i=i||64,s=0;s+4i.bitLength(r)&&(c=o(c,n(c)),r=i.concat(r,[-2147483648,0,0,0])),s=o(s,r),e.encrypt(o(n(o(c,n(c))),s))},S:function(e){return[e[0]<<1^e[1]>>>31,e[1]<<1^e[2]>>>31,e[2]<<1^e[3]>>>31,e[3]<<1^135*(e[0]>>>31)]}};a.mode.gcm={name:"gcm",encrypt:function(e,t,r,n,i){var o=t.slice(0);return t=a.bitArray,n=n||[],e=a.mode.gcm.C(!0,e,o,n,r,i||128),t.concat(e.data,e.tag)},decrypt:function(e,t,r,n,i){var o=t.slice(0),s=a.bitArray,c=s.bitLength(o);if(i=i||128,n=n||[],i<=c?(t=s.bitSlice(o,c-i),o=s.bitSlice(o,0,c-i)):(t=o,o=[]),e=a.mode.gcm.C(!1,e,o,n,r,i),!s.equal(e.tag,t))throw new a.exception.corrupt("gcm: tag doesn't match");return e.data},ka:function(e,t){var r,n,i,o,s,c=a.bitArray.i;for(i=[0,0,0,0],o=t.slice(0),r=0;128>r;r++){for((n=(e[Math.floor(r/32)]&1<<31-r%32)!==0)&&(i=c(i,o)),s=(o[3]&1)!==0,n=3;0>>1|(o[n-1]&1)<<31;o[0]>>>=1,s&&(o[0]^=-520093696)}return i},j:function(e,t,r){var n,i=r.length;for(t=t.slice(0),n=0;ni&&(e=t.hash(e)),n=0;nn||0>r)throw new a.exception.invalid("invalid params to pbkdf2");typeof e=="string"&&(e=a.codec.utf8String.toBits(e)),typeof t=="string"&&(t=a.codec.utf8String.toBits(t)),i=i||a.misc.hmac,e=new i(e);var o,s,c,u,f=[],h=a.bitArray;for(u=1;32*f.length<(n||1);u++){for(i=o=e.encrypt(h.concat(t,[u])),s=1;ss;s++)i.push(4294967296*Math.random()|0);for(s=0;s=1<this.o&&(this.o=o),this.P++,this.b=a.hash.sha256.hash(this.b.concat(i)),this.L=new a.cipher.aes(this.b),n=0;4>n&&(this.h[n]=this.h[n]+1|0,!this.h[n]);n++);}for(n=0;n>>1;this.c[s].update([n,this.N++,2,t,o,e.length].concat(e))}break;case"string":t===void 0&&(t=e.length),this.c[s].update([n,this.N++,3,t,o,e.length]),this.c[s].update(e);break;default:u=1}if(u)throw new a.exception.bug("random: addEntropy only supports number, array of numbers or string");this.m[s]+=t,this.f+=t,c===this.u&&(this.isReady()!==this.u&&_t("seeded",Math.max(this.o,this.f)),_t("progress",this.getProgress()))},isReady:function(e){return e=this.T[e!==void 0?e:this.M],this.o&&this.o>=e?this.m[0]>this.ba&&new Date().valueOf()>this.Z?this.J|this.I:this.I:this.f>=e?this.J|this.u:this.u},getProgress:function(e){return e=this.T[e||this.M],this.o>=e||this.f>e?1:this.f/e},startCollectors:function(){if(!this.D){if(this.a={loadTimeCollector:fe(this,this.ma),mouseCollector:fe(this,this.oa),keyboardCollector:fe(this,this.la),accelerometerCollector:fe(this,this.ea),touchCollector:fe(this,this.qa)},window.addEventListener)window.addEventListener("load",this.a.loadTimeCollector,!1),window.addEventListener("mousemove",this.a.mouseCollector,!1),window.addEventListener("keypress",this.a.keyboardCollector,!1),window.addEventListener("devicemotion",this.a.accelerometerCollector,!1),window.addEventListener("touchmove",this.a.touchCollector,!1);else if(document.attachEvent)document.attachEvent("onload",this.a.loadTimeCollector),document.attachEvent("onmousemove",this.a.mouseCollector),document.attachEvent("keypress",this.a.keyboardCollector);else throw new a.exception.bug("can't attach event");this.D=!0}},stopCollectors:function(){this.D&&(window.removeEventListener?(window.removeEventListener("load",this.a.loadTimeCollector,!1),window.removeEventListener("mousemove",this.a.mouseCollector,!1),window.removeEventListener("keypress",this.a.keyboardCollector,!1),window.removeEventListener("devicemotion",this.a.accelerometerCollector,!1),window.removeEventListener("touchmove",this.a.touchCollector,!1)):document.detachEvent&&(document.detachEvent("onload",this.a.loadTimeCollector),document.detachEvent("onmousemove",this.a.mouseCollector),document.detachEvent("keypress",this.a.keyboardCollector)),this.D=!1)},addEventListener:function(e,t){this.K[e][this.ga++]=t},removeEventListener:function(e,t){var r,n,i=this.K[e],o=[];for(n in i)i.hasOwnProperty(n)&&i[n]===t&&o.push(n);for(r=0;rt&&(e.h[t]=e.h[t]+1|0,!e.h[t]);t++);return e.L.encrypt(e.h)}function fe(e,t){return function(){t.apply(e,arguments)}}a.random=new a.prng(6);e:try{if(Se=typeof Q<"u"&&Q.exports){try{Re=nr("crypto")}catch{Re=null}Se=Pe=Re}if(Se&&Pe.randomBytes)le=Pe.randomBytes(128),le=new Uint32Array(new Uint8Array(le).buffer),a.random.addEntropy(le,1024,"crypto['randomBytes']");else if(typeof window<"u"&&typeof Uint32Array<"u"){if(he=new Uint32Array(32),window.crypto&&window.crypto.getRandomValues)window.crypto.getRandomValues(he);else if(window.msCrypto&&window.msCrypto.getRandomValues)window.msCrypto.getRandomValues(he);else break e;a.random.addEntropy(he,1024,"crypto['getRandomValues']")}}catch(e){typeof window<"u"&&window.console&&(console.log("There was an error collecting entropy from the browser:"),console.log(e))}var le,Pe,he,Se,Re;a.json={defaults:{v:1,iter:1e4,ks:128,ts:64,mode:"ccm",adata:"",cipher:"aes"},ja:function(e,t,r,n){r=r||{},n=n||{};var i=a.json,o=i.g({iv:a.random.randomWords(4,0)},i.defaults),s;if(i.g(o,r),r=o.adata,typeof o.salt=="string"&&(o.salt=a.codec.base64.toBits(o.salt)),typeof o.iv=="string"&&(o.iv=a.codec.base64.toBits(o.iv)),!a.mode[o.mode]||!a.cipher[o.cipher]||typeof e=="string"&&100>=o.iter||o.ts!==64&&o.ts!==96&&o.ts!==128||o.ks!==128&&o.ks!==192&&o.ks!==256||2>o.iv.length||4=t.iter||t.ts!==64&&t.ts!==96&&t.ts!==128||t.ks!==128&&t.ks!==192&&t.ks!==256||!t.iv||2>t.iv.length||4{"use strict";var Wr=Object.prototype.hasOwnProperty,k="~";function pe(){}Object.create&&(pe.prototype=Object.create(null),new pe().__proto__||(k=!1));function zr(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function jt(e,t,r,n,i){if(typeof r!="function")throw new TypeError("The listener must be a function");var o=new zr(r,n||e,i),s=k?k+t:t;return e._events[s]?e._events[s].fn?e._events[s]=[e._events[s],o]:e._events[s].push(o):(e._events[s]=o,e._eventsCount++),e}function Te(e,t){--e._eventsCount===0?e._events=new pe:delete e._events[t]}function _(){this._events=new pe,this._eventsCount=0}_.prototype.eventNames=function(){var t=[],r,n;if(this._eventsCount===0)return t;for(n in r=this._events)Wr.call(r,n)&&t.push(k?n.slice(1):n);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(r)):t};_.prototype.listeners=function(t){var r=k?k+t:t,n=this._events[r];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,o=n.length,s=new Array(o);i{let n=t.isOk()?{type:"Ok",value:t.value}:{type:"Err",value:t.error},i=r.withStackTrace?new Error().stack:void 0;return{data:n,message:e,stack:i}};function X(e,t,r,n){function i(o){return o instanceof r?o:new r(function(s){s(o)})}return new(r||(r=Promise))(function(o,s){function c(h){try{f(n.next(h))}catch(l){s(l)}}function u(h){try{f(n.throw(h))}catch(l){s(l)}}function f(h){h.done?o(h.value):i(h.value).then(c,u)}f((n=n.apply(e,[])).next())})}function at(e){var t=typeof Symbol=="function"&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&typeof e.length=="number")return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function G(e){return this instanceof G?(this.v=e,this):new G(e)}function sr(e,t,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=r.apply(e,t||[]),i,o=[];return i={},s("next"),s("throw"),s("return"),i[Symbol.asyncIterator]=function(){return this},i;function s(p){n[p]&&(i[p]=function(m){return new Promise(function(E,V){o.push([p,m,E,V])>1||c(p,m)})})}function c(p,m){try{u(n[p](m))}catch(E){l(o[0][3],E)}}function u(p){p.value instanceof G?Promise.resolve(p.value.v).then(f,h):l(o[0][2],p)}function f(p){c("next",p)}function h(p){c("throw",p)}function l(p,m){p(m),o.shift(),o.length&&c(o[0][0],o[0][1])}}function ar(e){var t,r;return t={},n("next"),n("throw",function(i){throw i}),n("return"),t[Symbol.iterator]=function(){return this},t;function n(i,o){t[i]=e[i]?function(s){return(r=!r)?{value:G(e[i](s)),done:i==="return"}:o?o(s):s}:o}}function cr(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof at=="function"?at(e):e[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(o){r[o]=e[o]&&function(s){return new Promise(function(c,u){s=e[o](s),i(c,u,s.done,s.value)})}}function i(o,s,c,u){Promise.resolve(u).then(function(f){o({value:f,done:c})},s)}}var L=class e{constructor(t){this._promise=t}static fromSafePromise(t){let r=t.then(n=>new R(n));return new e(r)}static fromPromise(t,r){let n=t.then(i=>new R(i)).catch(i=>new T(r(i)));return new e(n)}static fromThrowable(t,r){return(...n)=>new e(X(this,void 0,void 0,function*(){try{return new R(yield t(...n))}catch(i){return new T(r?r(i):i)}}))}static combine(t){return ur(t)}static combineWithAllErrors(t){return fr(t)}map(t){return new e(this._promise.then(r=>X(this,void 0,void 0,function*(){return r.isErr()?new T(r.error):new R(yield t(r.value))})))}andThrough(t){return new e(this._promise.then(r=>X(this,void 0,void 0,function*(){if(r.isErr())return new T(r.error);let n=yield t(r.value);return n.isErr()?new T(n.error):new R(r.value)})))}andTee(t){return new e(this._promise.then(r=>X(this,void 0,void 0,function*(){if(r.isErr())return new T(r.error);try{yield t(r.value)}catch{}return new R(r.value)})))}mapErr(t){return new e(this._promise.then(r=>X(this,void 0,void 0,function*(){return r.isOk()?new R(r.value):new T(yield t(r.error))})))}andThen(t){return new e(this._promise.then(r=>{if(r.isErr())return new T(r.error);let n=t(r.value);return n instanceof e?n._promise:n}))}orElse(t){return new e(this._promise.then(r=>X(this,void 0,void 0,function*(){return r.isErr()?t(r.error):new R(r.value)})))}match(t,r){return this._promise.then(n=>n.match(t,r))}unwrapOr(t){return this._promise.then(r=>r.unwrapOr(t))}safeUnwrap(){return sr(this,arguments,function*(){return yield G(yield G(yield*ar(cr(yield G(this._promise.then(r=>r.safeUnwrap()))))))})}then(t,r){return this._promise.then(t,r)}},C=e=>new L(Promise.resolve(new R(e))),O=e=>new L(Promise.resolve(new T(e))),Hr=L.fromPromise,Gr=L.fromSafePromise,Vr=L.fromThrowable,ut=e=>{let t=q([]);for(let r of e)if(r.isErr()){t=U(r.error);break}else t.map(n=>n.push(r.value));return t},ur=e=>L.fromSafePromise(Promise.all(e)).andThen(ut),ft=e=>{let t=q([]);for(let r of e)r.isErr()&&t.isErr()?t.error.push(r.error):r.isErr()&&t.isOk()?t=U([r.error]):r.isOk()&&t.isOk()&&t.value.push(r.value);return t},fr=e=>L.fromSafePromise(Promise.all(e)).andThen(ft),Je;(function(e){function t(i,o){return(...s)=>{try{let c=i(...s);return q(c)}catch(c){return U(o?o(c):c)}}}e.fromThrowable=t;function r(i){return ut(i)}e.combine=r;function n(i){return ft(i)}e.combineWithAllErrors=n})(Je||(Je={}));var q=e=>new R(e);function U(e){return new T(e)}var R=class{constructor(t){this.value=t}isOk(){return!0}isErr(){return!this.isOk()}map(t){return q(t(this.value))}mapErr(t){return q(this.value)}andThen(t){return t(this.value)}andThrough(t){return t(this.value).map(r=>this.value)}andTee(t){try{t(this.value)}catch{}return q(this.value)}orElse(t){return q(this.value)}asyncAndThen(t){return t(this.value)}asyncAndThrough(t){return t(this.value).map(()=>this.value)}asyncMap(t){return L.fromSafePromise(t(this.value))}unwrapOr(t){return this.value}match(t,r){return t(this.value)}safeUnwrap(){let t=this.value;return function*(){return t}()}_unsafeUnwrap(t){return this.value}_unsafeUnwrapErr(t){throw ct("Called `_unsafeUnwrapErr` on an Ok",this,t)}},T=class{constructor(t){this.error=t}isOk(){return!1}isErr(){return!this.isOk()}map(t){return U(this.error)}mapErr(t){return U(t(this.error))}andThrough(t){return U(this.error)}andTee(t){return U(this.error)}andThen(t){return U(this.error)}orElse(t){return t(this.error)}asyncAndThen(t){return O(this.error)}asyncAndThrough(t){return O(this.error)}asyncMap(t){return O(this.error)}unwrapOr(t){return t}match(t,r){return r(this.error)}safeUnwrap(){let t=this.error;return function*(){throw yield U(t),new Error("Do not use this generator out of `safeTry`")}()}_unsafeUnwrap(t){throw ct("Called `_unsafeUnwrap` on an Err",this,t)}_unsafeUnwrapErr(t){return this.error}},Xr=Je.fromThrowable;var B=class extends Error{constructor(r,n={}){let{cause:i,context:o}=n;super(r,{cause:i});D(this,"context");this.name=this.constructor.name,this.context=o}};var j=e=>{if(e instanceof Error)return e;let t="[Unable to stringify the thrown value]";try{t=JSON.stringify(e)}catch{}return new Error(t)};var lr=()=>typeof Deno<"u";var W=e=>lr()?new URL(`./worker/${e}.ts`,new URL(".",import.meta.url).href):new URL(import.meta.resolve(`./${e==="main"?`worker/${e}`:e}.js`));var N=class extends B{};var ae=class extends N{constructor(){super(...arguments);D(this,"message","An error occured while trying to connect to WebSocket")}};var bt=se(De());var g=new bt.default,x,At=!1;self.onmessage=e=>{vr(e),At||(At=!0,g.once("OPERATION_FAILED",()=>{x&&x.terminate()}))};var z=(e,t)=>(Object.assign(e,t),typeof WorkerGlobalScope<"u"&&self.postMessage({event:"FILE_UPDATED",lufiFile:e}),e),Ce=(e,t)=>{z(e,{uploadStatus:2}),self.postMessage({event:"OPERATION_FAILED",error:t})},vr=(e,t)=>{let{action:r}=e.data;if(r===5||r===8)x.postMessage(e.data);else{switch(r){case 2:x=new Worker(W("cancel"),{type:"module"}),x.postMessage(e.data);break;case 3:x=new Worker(W("download"),{type:"module"}),x.postMessage(e.data);break;case 4:x=new Worker(W("infos"),{type:"module"}),x.postMessage(e.data);break;case 7:x=x||new Worker(W("remove"),{type:"module"}),x.postMessage(e.data);break;case 9:x=x||new Worker(W("upload"),{type:"module"}),x.postMessage(e.data);break;default:console.error("Action not found")}x.onmessage=n=>{t&&t(n),self.postMessage(n.data)},x.onerror=n=>{console.error(`Error: ${n.message}`)}}},Ot=()=>{g.once("SOCKET_OPENED",()=>{self.postMessage({event:"SOCKET_OPENED"})}),g.once("OPERATION_FAILED",e=>{self.postMessage({event:"OPERATION_FAILED",error:e})})};var Y=class{constructor(t,r){if(!t||t.length!=64)throw Error("Charset must contain 64 characters");this._charset=t,this._noPadding=!!r,this._valid=new RegExp("^["+this._charset.replace("-","\\-")+"]+={0,2}$")}Encode(t){let r=t.byteLength;if(!r)return"";let n=new Uint8Array(t),i="";for(let o=0;o>2]+this._charset[(n[o]&3)<<4|n[o+1]>>4]+this._charset[(n[o+1]&15)<<2|n[o+2]>>6]+this._charset[n[o+2]&63];return r%3==2?(i=i.substring(0,i.length-1),this._noPadding||(i+="=")):r%3==1&&(i=i.substring(0,i.length-2),this._noPadding||(i+="==")),i}Decode(t){if(t=(t||"").replace(/[\s]/g,""),!t)return new ArrayBuffer(0);if(!this._valid.test(t))throw Error("Invalid base64 input sequence");let r=Math.floor(t.length*.75);t[t.length-2]=="="?r-=2:t[t.length-1]=="="&&r--;let n=new Uint8Array(r),i,o,s,c,u=0,f=0;for(;u>4,n[u++]=(o&15)<<4|s>>2,n[u++]=(s&3)<<6|c;return n.buffer}};var Er=new Y("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/");function ce(e){return Er.Decode(e)}var wr=new Y("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",!0);function $e(e){return wr.Decode(e)}var Pt=se(Ct());var $=class extends B{};var Z=class extends ${constructor(){super(...arguments);D(this,"message","Unable to decrypt the provided data")}};var St=(e,t)=>{try{let r=typeof t=="string"?t:t.data;return C(ce(Pt.default.decrypt(e,r)))}catch(r){return O(new Z(void 0,{cause:j(r)}))}};var Rt=(e,t)=>br(e).andThen(r=>L.fromPromise(crypto.subtle.decrypt({name:"AES-GCM",iv:t.iv},r,ce(t.data)),n=>new Z(void 0,{cause:j(n)})));var br=e=>L.fromPromise(crypto.subtle.importKey("raw",$e(e),{name:"AES-GCM"},!1,["encrypt","decrypt"]),t=>new $("Unable to import cryptography key",{cause:j(t)}));var Tt=(e,t)=>t.algo===void 0||t.algo===0?St(e,t):Rt(e,t);var S={},Mt=5,xr=e=>(g.emit("UPLOAD_CANCELLED",e.success),C(void 0)),Dr=(e,t)=>{let r=e.split("XXMOJOXX"),n=r.shift();if(n!==void 0){let i=JSON.parse(n);if(Mr(i)){let o=r.shift();if(o){let s=JSON.parse(o);return s.iv&&(s.iv=new Uint8Array(Object.values(s.iv))),Tt(t.keys.client,s).andThen(c=>{let u=typeof c=="string"?new TextEncoder().encode(c).buffer:c;return i.part===0?(z(t,{chunksReady:t.chunksReady+1,delAtFirstView:i.del_at_first_view,delay:i.delay,name:i.name,size:i.size,totalChunks:i.total,type:i.type,zipped:i.zipped}),g.emit("DOWNLOAD_STARTED")):z(t,{chunksReady:t.chunksReady+1}),g.emit("CHUNK_DOWNLOADED",u,i.part),++i.part===i.total?Pr(t).andThen(()=>(g.emit("DOWNLOAD_COMPLETE"),g.emit("SOCKET_OPERATION_TERMINATED"),C(void 0))):C(void 0)})}else{let s=new N("Can't retrieve metadata from data received by the server");return g.emit("OPERATION_FAILED",s),O(s)}}else{let o=new N(i.msg);return g.emit("OPERATION_FAILED",o),O(o)}}else{let i=new N("Can't retrieve metadata from data received by the server");return g.emit("OPERATION_FAILED",i),O(i)}},_r=(e,t)=>{if(e.success)return e.j===0&&(z(t,{keys:{client:t.keys.client,server:e.short},actionToken:e.token,queueIndex:e.i}),g.emit("UPLOAD_STARTED")),z(t,{chunksReady:t.chunksReady+1,createdAt:e.created_at}),g.emit("CHUNK_UPLOADED"),t.chunksReady===t.totalChunks&&(z(t,{uploadStatus:1}),g.emit("UPLOAD_COMPLETE"),g.emit("SOCKET_OPERATION_TERMINATED")),C(void 0);{let r=new N(e.msg);return g.emit("OPERATION_FAILED",r),O(r)}},kr=(e,t)=>{let r=Ir(e.data),n;if(r)if(!r.action&&r.msg){let i=new N(r.msg);return g.emit("OPERATION_FAILED",i),O(i)}else"delay"in r?n=_r(r,t):n=xr(r);else n=Dr(e.data,t);return n},Cr=e=>S!==void 0&&S[e]!==void 0&&S[e].readyState===WebSocket.CONNECTING,Xe=e=>S!==void 0&&S[e]!==void 0&&S[e].readyState===WebSocket.OPEN;var Pr=e=>{let t;return e.password?t={ended:!0,file_pwd:e.password}:t={ended:!0},Ye(Rr(e),e,JSON.stringify(t))},Ke=(e,t,r)=>Ye(Tr(e),e,`${JSON.stringify(t)}XXMOJOXX${JSON.stringify(r)}`),Ye=(e,t,r)=>Xe(e)?(S[e].onmessage=n=>kr(n,t),S[e].send(r),C(void 0)):Ut(e).andThen(()=>Ye(e,t,r)),Ut=(e,t=0)=>(!Xe(e)&&!Cr(e)&&(S[e]=new WebSocket(e),g.once("SOCKET_OPERATION_TERMINATED",()=>{S[e].close()}),g.once("OPERATION_FAILED",()=>{g.emit("SOCKET_OPERATION_TERMINATED")}),S[e].onopen=()=>{g.emit("SOCKET_OPENED")},S[e].onclose=()=>{},S[e].onerror=()=>++t<=Mt?(console.error(`An error happened while trying to connect to WebSocket ${e}. Trying again. ${t} / ${Mt}`),Ut(e,t)):(g.emit("SOCKET_ONERROR"),O(new ae(`Unable to connect to WebSocket ${e}.`)))),Sr(e).andThen(()=>C(e)).orElse(r=>O(r))),Sr=e=>L.fromPromise(new Promise((t,r)=>{Xe(e)?t(void 0):(g.once("SOCKET_OPENED",()=>{t(void 0)}),g.on("SOCKET_ONERROR",()=>{r(new ae)}))}),t=>j(t));var Nt=(e,t)=>{let r=new URL(e);return r.protocol=r.protocol==="http:"?"ws:":"wss:",r.pathname+=t,new URL(r.origin+r.pathname)},Rr=e=>Nt(new URL(e.serverUrl),"download"+`/${e.keys.server}`).toString(),Tr=e=>Nt(new URL(e.serverUrl),"upload").toString(),Ir=e=>{try{let t=JSON.parse(e);if(t&&typeof t=="object")return t}catch{}return!1},Mr=e=>typeof e=="object"&&e!==null&&!("msg"in e);var Ft=se(De());var Fr=se(De());var Br={},so=new Ft.default;var jr=()=>Object.values(Br).filter(e=>e.uploadStatus===4),Bt=e=>Object.keys(jr()).indexOf(e);var Ze=se(Wt(),1);var de=class extends Error{constructor(t){super(t),this.name="TimeoutError"}},et=class extends Error{constructor(t){super(),this.name="AbortError",this.message=t}},zt=e=>globalThis.DOMException===void 0?new et(e):new DOMException(e),Jt=e=>{let t=e.reason===void 0?zt("This operation was aborted."):e.reason;return t instanceof Error?t:zt(t)};function tt(e,t){let{milliseconds:r,fallback:n,message:i,customTimers:o={setTimeout,clearTimeout}}=t,s,u=new Promise((f,h)=>{if(typeof r!="number"||Math.sign(r)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${r}\``);if(t.signal){let{signal:p}=t;p.aborted&&h(Jt(p));let m=()=>{h(Jt(p))};p.addEventListener("abort",m,{once:!0}),e.finally(()=>{p.removeEventListener("abort",m)})}if(r===Number.POSITIVE_INFINITY){e.then(f,h);return}let l=new de;s=o.setTimeout.call(void 0,()=>{if(n){try{f(n())}catch(p){h(p)}return}typeof e.cancel=="function"&&e.cancel(),i===!1?f():i instanceof Error?h(i):(l.message=i!=null?i:`Promise timed out after ${r} milliseconds`,h(l))},r),(async()=>{try{f(await e)}catch(p){h(p)}})()}).finally(()=>{u.clear()});return u.clear=()=>{o.clearTimeout.call(void 0,s),s=void 0},u}function rt(e,t,r){let n=0,i=e.length;for(;i>0;){let o=Math.trunc(i/2),s=n+o;r(e[s],t)<=0?(n=++s,i-=o+1):i=o}return n}var F,me=class{constructor(){A(this,F,[])}enqueue(t,r){r={priority:0,...r};let n={priority:r.priority,run:t};if(this.size&&d(this,F)[this.size-1].priority>=r.priority){d(this,F).push(n);return}let i=rt(d(this,F),n,(o,s)=>s.priority-o.priority);d(this,F).splice(i,0,n)}dequeue(){let t=d(this,F).shift();return t==null?void 0:t.run}filter(t){return d(this,F).filter(r=>r.priority===t.priority).map(r=>r.run)}get size(){return d(this,F).length}};F=new WeakMap;var ee,te,H,ge,re,ve,I,ne,P,Ee,M,ie,J,we,y,qt,$t,Ht,Gt,Vt,Ie,nt,it,Me,Xt,Ue,ye=class extends Ze.default{constructor(r){var n,i,o,s;super();A(this,y);A(this,ee);A(this,te);A(this,H,0);A(this,ge);A(this,re);A(this,ve,0);A(this,I);A(this,ne);A(this,P);A(this,Ee);A(this,M,0);A(this,ie);A(this,J);A(this,we);D(this,"timeout");if(r={carryoverConcurrencyCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:me,...r},!(typeof r.intervalCap=="number"&&r.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${(i=(n=r.intervalCap)==null?void 0:n.toString())!=null?i:""}\` (${typeof r.intervalCap})`);if(r.interval===void 0||!(Number.isFinite(r.interval)&&r.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${(s=(o=r.interval)==null?void 0:o.toString())!=null?s:""}\` (${typeof r.interval})`);w(this,ee,r.carryoverConcurrencyCount),w(this,te,r.intervalCap===Number.POSITIVE_INFINITY||r.interval===0),w(this,ge,r.intervalCap),w(this,re,r.interval),w(this,P,new r.queueClass),w(this,Ee,r.queueClass),this.concurrency=r.concurrency,this.timeout=r.timeout,w(this,we,r.throwOnTimeout===!0),w(this,J,r.autoStart===!1)}get concurrency(){return d(this,ie)}set concurrency(r){if(!(typeof r=="number"&&r>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${r}\` (${typeof r})`);w(this,ie,r),b(this,y,Me).call(this)}async add(r,n={}){return n={timeout:this.timeout,throwOnTimeout:d(this,we),...n},new Promise((i,o)=>{d(this,P).enqueue(async()=>{var s;be(this,M)._++,be(this,H)._++;try{(s=n.signal)==null||s.throwIfAborted();let c=r({signal:n.signal});n.timeout&&(c=tt(Promise.resolve(c),{milliseconds:n.timeout})),n.signal&&(c=Promise.race([c,b(this,y,Xt).call(this,n.signal)]));let u=await c;i(u),this.emit("completed",u)}catch(c){if(c instanceof de&&!n.throwOnTimeout){i();return}o(c),this.emit("error",c)}finally{b(this,y,Ht).call(this)}},n),this.emit("add"),b(this,y,Ie).call(this)})}async addAll(r,n){return Promise.all(r.map(async i=>this.add(i,n)))}start(){return d(this,J)?(w(this,J,!1),b(this,y,Me).call(this),this):this}pause(){w(this,J,!0)}clear(){w(this,P,new(d(this,Ee)))}async onEmpty(){d(this,P).size!==0&&await b(this,y,Ue).call(this,"empty")}async onSizeLessThan(r){d(this,P).sized(this,P).size{b(this,y,Gt).call(this)},n)),!0}return!1},Ie=function(){if(d(this,P).size===0)return d(this,I)&&clearInterval(d(this,I)),w(this,I,void 0),this.emit("empty"),d(this,M)===0&&this.emit("idle"),!1;if(!d(this,J)){let r=!d(this,y,Vt);if(d(this,y,qt)&&d(this,y,$t)){let n=d(this,P).dequeue();return n?(this.emit("active"),n(),r&&b(this,y,nt).call(this),!0):!1}}return!1},nt=function(){d(this,te)||d(this,I)!==void 0||(w(this,I,setInterval(()=>{b(this,y,it).call(this)},d(this,re))),w(this,ve,Date.now()+d(this,re)))},it=function(){d(this,H)===0&&d(this,M)===0&&d(this,I)&&(clearInterval(d(this,I)),w(this,I,void 0)),w(this,H,d(this,ee)?d(this,M):0),b(this,y,Me).call(this)},Me=function(){for(;b(this,y,Ie).call(this););},Xt=async function(r){return new Promise((n,i)=>{r.addEventListener("abort",()=>{i(r.reason)},{once:!0})})},Ue=async function(r,n){return new Promise(i=>{let o=()=>{n&&!n()||(this.off(r,o),i())};this.on(r,o)})};var Kt=!1,ot=navigator.hardwareConcurrency||4,oe=new ye({concurrency:ot,autoStart:!1}),Fe=0,Be=[],Ne=!1;self.onmessage=e=>{let t=e.data,{chunk:r,lufiFile:n}=t.args;if(Kt||(Ot(),Kt=!0),r){if(Be[r.index]=r,Be.length===n.totalChunks)return g.once("UPLOAD_COMPLETE",()=>{self.postMessage({event:"UPLOAD_COMPLETE"})}),g.on("FILE_UPDATED",z),g.on("CHUNK_UPLOADED",()=>{self.postMessage({event:"CHUNK_UPLOADED"}),Fe--,!Ne&&Feqr(e,Bt(e.args.lufiFile.keys.client)),qr=(e,t)=>{let{lufiFile:r}=e.args,n=new Worker(W("encrypt"),{type:"module"});return g.on("UPLOAD_STARTED",()=>{n.onmessage=async i=>{if(i.data.encryptedData){let{encryptedData:o}=i.data;await oe.add(async()=>{await Ke(r,{total:r.totalChunks,part:i.data.chunkIndex,size:r.size,name:r.name.split("/").pop(),type:r.type,delay:r.delay,del_at_first_view:r.delAtFirstView,zipped:r.zipped,id:r.keys.server,i:t,file_pwd:r.password},o),Fe++,(Ne||Fe===ot)&&oe.pause()})}oe.start(),i.data.error&&(Ce(r,i.data.error),n.terminate())};for(let i=1;i{if(i.data.encryptedData){let{encryptedData:o}=i.data;Ke(r,{total:r.totalChunks,part:i.data.chunkIndex,size:r.size,name:r.name.split("/").pop(),type:r.type,delay:r.delay,del_at_first_view:r.delAtFirstView,zipped:r.zipped,id:null,i:t,file_pwd:r.password},o).mapErr(s=>{Ce(r,s)})}i.data.error&&Ce(r,i.data.error)},e.args.chunk=Be[0],n.postMessage(e),C(void 0)};