UNPKG

can-can-word-bug

Version:

can-can-word-bug 是一个 TS 编写的工具库

1,427 lines 50.7 kB
import { c as ne, g as Mr } from "../_commonjsHelpers-BkfeUUK-.js"; import { c as te } from "../_commonjs-dynamic-modules-BpilXLfW.js"; var Me = { exports: {} }; /*! localForage -- Offline Storage, Improved Version 1.10.0 https://localforage.github.io/localForage (c) 2013-2017 Mozilla, Apache License 2.0 */ (function(oe, zr) { (function(z) { oe.exports = z(); })(function() { return function z(M, K, E) { function C(T, U) { if (!K[T]) { if (!M[T]) { var v = typeof te == "function" && te; if (!U && v) return v(T, !0); if (b) return b(T, !0); var h = new Error("Cannot find module '" + T + "'"); throw h.code = "MODULE_NOT_FOUND", h; } var I = K[T] = { exports: {} }; M[T][0].call(I.exports, function(A) { var Y = M[T][1][A]; return C(Y || A); }, I, I.exports, z, M, K, E); } return K[T].exports; } for (var b = typeof te == "function" && te, B = 0; B < E.length; B++) C(E[B]); return C; }({ 1: [function(z, M, K) { (function(E) { var C = E.MutationObserver || E.WebKitMutationObserver, b; if (C) { var B = 0, T = new C(A), U = E.document.createTextNode(""); T.observe(U, { characterData: !0 }), b = function() { U.data = B = ++B % 2; }; } else if (!E.setImmediate && typeof E.MessageChannel < "u") { var v = new E.MessageChannel(); v.port1.onmessage = A, b = function() { v.port2.postMessage(0); }; } else "document" in E && "onreadystatechange" in E.document.createElement("script") ? b = function() { var D = E.document.createElement("script"); D.onreadystatechange = function() { A(), D.onreadystatechange = null, D.parentNode.removeChild(D), D = null; }, E.document.documentElement.appendChild(D); } : b = function() { setTimeout(A, 0); }; var h, I = []; function A() { h = !0; for (var D, W, N = I.length; N; ) { for (W = I, I = [], D = -1; ++D < N; ) W[D](); N = I.length; } h = !1; } M.exports = Y; function Y(D) { I.push(D) === 1 && !h && b(); } }).call(this, typeof ne < "u" ? ne : typeof self < "u" ? self : typeof window < "u" ? window : {}); }, {}], 2: [function(z, M, K) { var E = z(1); function C() { } var b = {}, B = ["REJECTED"], T = ["FULFILLED"], U = ["PENDING"]; M.exports = v; function v(l) { if (typeof l != "function") throw new TypeError("resolver must be a function"); this.state = U, this.queue = [], this.outcome = void 0, l !== C && Y(this, l); } v.prototype.catch = function(l) { return this.then(null, l); }, v.prototype.then = function(l, p) { if (typeof l != "function" && this.state === T || typeof p != "function" && this.state === B) return this; var y = new this.constructor(C); if (this.state !== U) { var w = this.state === T ? l : p; I(y, w, this.outcome); } else this.queue.push(new h(y, l, p)); return y; }; function h(l, p, y) { this.promise = l, typeof p == "function" && (this.onFulfilled = p, this.callFulfilled = this.otherCallFulfilled), typeof y == "function" && (this.onRejected = y, this.callRejected = this.otherCallRejected); } h.prototype.callFulfilled = function(l) { b.resolve(this.promise, l); }, h.prototype.otherCallFulfilled = function(l) { I(this.promise, this.onFulfilled, l); }, h.prototype.callRejected = function(l) { b.reject(this.promise, l); }, h.prototype.otherCallRejected = function(l) { I(this.promise, this.onRejected, l); }; function I(l, p, y) { E(function() { var w; try { w = p(y); } catch (x) { return b.reject(l, x); } w === l ? b.reject(l, new TypeError("Cannot resolve promise with itself")) : b.resolve(l, w); }); } b.resolve = function(l, p) { var y = D(A, p); if (y.status === "error") return b.reject(l, y.value); var w = y.value; if (w) Y(l, w); else { l.state = T, l.outcome = p; for (var x = -1, O = l.queue.length; ++x < O; ) l.queue[x].callFulfilled(p); } return l; }, b.reject = function(l, p) { l.state = B, l.outcome = p; for (var y = -1, w = l.queue.length; ++y < w; ) l.queue[y].callRejected(p); return l; }; function A(l) { var p = l && l.then; if (l && (typeof l == "object" || typeof l == "function") && typeof p == "function") return function() { p.apply(l, arguments); }; } function Y(l, p) { var y = !1; function w(P) { y || (y = !0, b.reject(l, P)); } function x(P) { y || (y = !0, b.resolve(l, P)); } function O() { p(x, w); } var L = D(O); L.status === "error" && w(L.value); } function D(l, p) { var y = {}; try { y.value = l(p), y.status = "success"; } catch (w) { y.status = "error", y.value = w; } return y; } v.resolve = W; function W(l) { return l instanceof this ? l : b.resolve(new this(C), l); } v.reject = N; function N(l) { var p = new this(C); return b.reject(p, l); } v.all = ae; function ae(l) { var p = this; if (Object.prototype.toString.call(l) !== "[object Array]") return this.reject(new TypeError("must be an array")); var y = l.length, w = !1; if (!y) return this.resolve([]); for (var x = new Array(y), O = 0, L = -1, P = new this(C); ++L < y; ) $(l[L], L); return P; function $(j, q) { p.resolve(j).then(ie, function(X) { w || (w = !0, b.reject(P, X)); }); function ie(X) { x[q] = X, ++O === y && !w && (w = !0, b.resolve(P, x)); } } } v.race = H; function H(l) { var p = this; if (Object.prototype.toString.call(l) !== "[object Array]") return this.reject(new TypeError("must be an array")); var y = l.length, w = !1; if (!y) return this.resolve([]); for (var x = -1, O = new this(C); ++x < y; ) L(l[x]); return O; function L(P) { p.resolve(P).then(function($) { w || (w = !0, b.resolve(O, $)); }, function($) { w || (w = !0, b.reject(O, $)); }); } } }, { 1: 1 }], 3: [function(z, M, K) { (function(E) { typeof E.Promise != "function" && (E.Promise = z(2)); }).call(this, typeof ne < "u" ? ne : typeof self < "u" ? self : typeof window < "u" ? window : {}); }, { 2: 2 }], 4: [function(z, M, K) { var E = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(e) { return typeof e; } : function(e) { return e && typeof Symbol == "function" && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e; }; function C(e, n) { if (!(e instanceof n)) throw new TypeError("Cannot call a class as a function"); } function b() { try { if (typeof indexedDB < "u") return indexedDB; if (typeof webkitIndexedDB < "u") return webkitIndexedDB; if (typeof mozIndexedDB < "u") return mozIndexedDB; if (typeof OIndexedDB < "u") return OIndexedDB; if (typeof msIndexedDB < "u") return msIndexedDB; } catch { return; } } var B = b(); function T() { try { if (!B || !B.open) return !1; var e = typeof openDatabase < "u" && /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(navigator.platform), n = typeof fetch == "function" && fetch.toString().indexOf("[native code") !== -1; return (!e || n) && typeof indexedDB < "u" && // some outdated implementations of IDB that appear on Samsung // and HTC Android devices <4.4 are missing IDBKeyRange // See: https://github.com/mozilla/localForage/issues/128 // See: https://github.com/mozilla/localForage/issues/272 typeof IDBKeyRange < "u"; } catch { return !1; } } function U(e, n) { e = e || [], n = n || {}; try { return new Blob(e, n); } catch (t) { if (t.name !== "TypeError") throw t; for (var r = typeof BlobBuilder < "u" ? BlobBuilder : typeof MSBlobBuilder < "u" ? MSBlobBuilder : typeof MozBlobBuilder < "u" ? MozBlobBuilder : WebKitBlobBuilder, o = new r(), a = 0; a < e.length; a += 1) o.append(e[a]); return o.getBlob(n.type); } } typeof Promise > "u" && z(3); var v = Promise; function h(e, n) { n && e.then(function(r) { n(null, r); }, function(r) { n(r); }); } function I(e, n, r) { typeof n == "function" && e.then(n), typeof r == "function" && e.catch(r); } function A(e) { return typeof e != "string" && (console.warn(e + " used as a key, but it is not a string."), e = String(e)), e; } function Y() { if (arguments.length && typeof arguments[arguments.length - 1] == "function") return arguments[arguments.length - 1]; } var D = "local-forage-detect-blob-support", W = void 0, N = {}, ae = Object.prototype.toString, H = "readonly", l = "readwrite"; function p(e) { for (var n = e.length, r = new ArrayBuffer(n), o = new Uint8Array(r), a = 0; a < n; a++) o[a] = e.charCodeAt(a); return r; } function y(e) { return new v(function(n) { var r = e.transaction(D, l), o = U([""]); r.objectStore(D).put(o, "key"), r.onabort = function(a) { a.preventDefault(), a.stopPropagation(), n(!1); }, r.oncomplete = function() { var a = navigator.userAgent.match(/Chrome\/(\d+)/), t = navigator.userAgent.match(/Edge\//); n(t || !a || parseInt(a[1], 10) >= 43); }; }).catch(function() { return !1; }); } function w(e) { return typeof W == "boolean" ? v.resolve(W) : y(e).then(function(n) { return W = n, W; }); } function x(e) { var n = N[e.name], r = {}; r.promise = new v(function(o, a) { r.resolve = o, r.reject = a; }), n.deferredOperations.push(r), n.dbReady ? n.dbReady = n.dbReady.then(function() { return r.promise; }) : n.dbReady = r.promise; } function O(e) { var n = N[e.name], r = n.deferredOperations.pop(); if (r) return r.resolve(), r.promise; } function L(e, n) { var r = N[e.name], o = r.deferredOperations.pop(); if (o) return o.reject(n), o.promise; } function P(e, n) { return new v(function(r, o) { if (N[e.name] = N[e.name] || pe(), e.db) if (n) x(e), e.db.close(); else return r(e.db); var a = [e.name]; n && a.push(e.version); var t = B.open.apply(B, a); n && (t.onupgradeneeded = function(i) { var f = t.result; try { f.createObjectStore(e.storeName), i.oldVersion <= 1 && f.createObjectStore(D); } catch (u) { if (u.name === "ConstraintError") console.warn('The database "' + e.name + '" has been upgraded from version ' + i.oldVersion + " to version " + i.newVersion + ', but the storage "' + e.storeName + '" already exists.'); else throw u; } }), t.onerror = function(i) { i.preventDefault(), o(t.error); }, t.onsuccess = function() { var i = t.result; i.onversionchange = function(f) { f.target.close(); }, r(i), O(e); }; }); } function $(e) { return P(e, !1); } function j(e) { return P(e, !0); } function q(e, n) { if (!e.db) return !0; var r = !e.db.objectStoreNames.contains(e.storeName), o = e.version < e.db.version, a = e.version > e.db.version; if (o && (e.version !== n && console.warn('The database "' + e.name + `" can't be downgraded from version ` + e.db.version + " to version " + e.version + "."), e.version = e.db.version), a || r) { if (r) { var t = e.db.version + 1; t > e.version && (e.version = t); } return !0; } return !1; } function ie(e) { return new v(function(n, r) { var o = new FileReader(); o.onerror = r, o.onloadend = function(a) { var t = btoa(a.target.result || ""); n({ __local_forage_encoded_blob: !0, data: t, type: e.type }); }, o.readAsBinaryString(e); }); } function X(e) { var n = p(atob(e.data)); return U([n], { type: e.type }); } function ye(e) { return e && e.__local_forage_encoded_blob; } function Ue(e) { var n = this, r = n._initReady().then(function() { var o = N[n._dbInfo.name]; if (o && o.dbReady) return o.dbReady; }); return I(r, e, e), r; } function Ye(e) { x(e); for (var n = N[e.name], r = n.forages, o = 0; o < r.length; o++) { var a = r[o]; a._dbInfo.db && (a._dbInfo.db.close(), a._dbInfo.db = null); } return e.db = null, $(e).then(function(t) { return e.db = t, q(e) ? j(e) : t; }).then(function(t) { e.db = n.db = t; for (var i = 0; i < r.length; i++) r[i]._dbInfo.db = t; }).catch(function(t) { throw L(e, t), t; }); } function V(e, n, r, o) { o === void 0 && (o = 1); try { var a = e.db.transaction(e.storeName, n); r(null, a); } catch (t) { if (o > 0 && (!e.db || t.name === "InvalidStateError" || t.name === "NotFoundError")) return v.resolve().then(function() { if (!e.db || t.name === "NotFoundError" && !e.db.objectStoreNames.contains(e.storeName) && e.version <= e.db.version) return e.db && (e.version = e.db.version + 1), j(e); }).then(function() { return Ye(e).then(function() { V(e, n, r, o - 1); }); }).catch(r); r(t); } } function pe() { return { // Running localForages sharing a database. forages: [], // Shared database. db: null, // Database readiness (promise). dbReady: null, // Deferred operations on the database. deferredOperations: [] }; } function ze(e) { var n = this, r = { db: null }; if (e) for (var o in e) r[o] = e[o]; var a = N[r.name]; a || (a = pe(), N[r.name] = a), a.forages.push(n), n._initReady || (n._initReady = n.ready, n.ready = Ue); var t = []; function i() { return v.resolve(); } for (var f = 0; f < a.forages.length; f++) { var u = a.forages[f]; u !== n && t.push(u._initReady().catch(i)); } var c = a.forages.slice(0); return v.all(t).then(function() { return r.db = a.db, $(r); }).then(function(s) { return r.db = s, q(r, n._defaultConfig.version) ? j(r) : s; }).then(function(s) { r.db = a.db = s, n._dbInfo = r; for (var d = 0; d < c.length; d++) { var m = c[d]; m !== n && (m._dbInfo.db = r.db, m._dbInfo.version = r.version); } }); } function We(e, n) { var r = this; e = A(e); var o = new v(function(a, t) { r.ready().then(function() { V(r._dbInfo, H, function(i, f) { if (i) return t(i); try { var u = f.objectStore(r._dbInfo.storeName), c = u.get(e); c.onsuccess = function() { var s = c.result; s === void 0 && (s = null), ye(s) && (s = X(s)), a(s); }, c.onerror = function() { t(c.error); }; } catch (s) { t(s); } }); }).catch(t); }); return h(o, n), o; } function $e(e, n) { var r = this, o = new v(function(a, t) { r.ready().then(function() { V(r._dbInfo, H, function(i, f) { if (i) return t(i); try { var u = f.objectStore(r._dbInfo.storeName), c = u.openCursor(), s = 1; c.onsuccess = function() { var d = c.result; if (d) { var m = d.value; ye(m) && (m = X(m)); var g = e(m, d.key, s++); g !== void 0 ? a(g) : d.continue(); } else a(); }, c.onerror = function() { t(c.error); }; } catch (d) { t(d); } }); }).catch(t); }); return h(o, n), o; } function Ve(e, n, r) { var o = this; e = A(e); var a = new v(function(t, i) { var f; o.ready().then(function() { return f = o._dbInfo, ae.call(n) === "[object Blob]" ? w(f.db).then(function(u) { return u ? n : ie(n); }) : n; }).then(function(u) { V(o._dbInfo, l, function(c, s) { if (c) return i(c); try { var d = s.objectStore(o._dbInfo.storeName); u === null && (u = void 0); var m = d.put(u, e); s.oncomplete = function() { u === void 0 && (u = null), t(u); }, s.onabort = s.onerror = function() { var g = m.error ? m.error : m.transaction.error; i(g); }; } catch (g) { i(g); } }); }).catch(i); }); return h(a, r), a; } function Ke(e, n) { var r = this; e = A(e); var o = new v(function(a, t) { r.ready().then(function() { V(r._dbInfo, l, function(i, f) { if (i) return t(i); try { var u = f.objectStore(r._dbInfo.storeName), c = u.delete(e); f.oncomplete = function() { a(); }, f.onerror = function() { t(c.error); }, f.onabort = function() { var s = c.error ? c.error : c.transaction.error; t(s); }; } catch (s) { t(s); } }); }).catch(t); }); return h(o, n), o; } function Qe(e) { var n = this, r = new v(function(o, a) { n.ready().then(function() { V(n._dbInfo, l, function(t, i) { if (t) return a(t); try { var f = i.objectStore(n._dbInfo.storeName), u = f.clear(); i.oncomplete = function() { o(); }, i.onabort = i.onerror = function() { var c = u.error ? u.error : u.transaction.error; a(c); }; } catch (c) { a(c); } }); }).catch(a); }); return h(r, e), r; } function Ge(e) { var n = this, r = new v(function(o, a) { n.ready().then(function() { V(n._dbInfo, H, function(t, i) { if (t) return a(t); try { var f = i.objectStore(n._dbInfo.storeName), u = f.count(); u.onsuccess = function() { o(u.result); }, u.onerror = function() { a(u.error); }; } catch (c) { a(c); } }); }).catch(a); }); return h(r, e), r; } function He(e, n) { var r = this, o = new v(function(a, t) { if (e < 0) { a(null); return; } r.ready().then(function() { V(r._dbInfo, H, function(i, f) { if (i) return t(i); try { var u = f.objectStore(r._dbInfo.storeName), c = !1, s = u.openKeyCursor(); s.onsuccess = function() { var d = s.result; if (!d) { a(null); return; } e === 0 || c ? a(d.key) : (c = !0, d.advance(e)); }, s.onerror = function() { t(s.error); }; } catch (d) { t(d); } }); }).catch(t); }); return h(o, n), o; } function Xe(e) { var n = this, r = new v(function(o, a) { n.ready().then(function() { V(n._dbInfo, H, function(t, i) { if (t) return a(t); try { var f = i.objectStore(n._dbInfo.storeName), u = f.openKeyCursor(), c = []; u.onsuccess = function() { var s = u.result; if (!s) { o(c); return; } c.push(s.key), s.continue(); }, u.onerror = function() { a(u.error); }; } catch (s) { a(s); } }); }).catch(a); }); return h(r, e), r; } function Je(e, n) { n = Y.apply(this, arguments); var r = this.config(); e = typeof e != "function" && e || {}, e.name || (e.name = e.name || r.name, e.storeName = e.storeName || r.storeName); var o = this, a; if (!e.name) a = v.reject("Invalid arguments"); else { var t = e.name === r.name && o._dbInfo.db, i = t ? v.resolve(o._dbInfo.db) : $(e).then(function(f) { var u = N[e.name], c = u.forages; u.db = f; for (var s = 0; s < c.length; s++) c[s]._dbInfo.db = f; return f; }); e.storeName ? a = i.then(function(f) { if (f.objectStoreNames.contains(e.storeName)) { var u = f.version + 1; x(e); var c = N[e.name], s = c.forages; f.close(); for (var d = 0; d < s.length; d++) { var m = s[d]; m._dbInfo.db = null, m._dbInfo.version = u; } var g = new v(function(_, R) { var S = B.open(e.name, u); S.onerror = function(F) { var k = S.result; k.close(), R(F); }, S.onupgradeneeded = function() { var F = S.result; F.deleteObjectStore(e.storeName); }, S.onsuccess = function() { var F = S.result; F.close(), _(F); }; }); return g.then(function(_) { c.db = _; for (var R = 0; R < s.length; R++) { var S = s[R]; S._dbInfo.db = _, O(S._dbInfo); } }).catch(function(_) { throw (L(e, _) || v.resolve()).catch(function() { }), _; }); } }) : a = i.then(function(f) { x(e); var u = N[e.name], c = u.forages; f.close(); for (var s = 0; s < c.length; s++) { var d = c[s]; d._dbInfo.db = null; } var m = new v(function(g, _) { var R = B.deleteDatabase(e.name); R.onerror = function() { var S = R.result; S && S.close(), _(R.error); }, R.onblocked = function() { console.warn('dropInstance blocked for database "' + e.name + '" until all open connections are closed'); }, R.onsuccess = function() { var S = R.result; S && S.close(), g(S); }; }); return m.then(function(g) { u.db = g; for (var _ = 0; _ < c.length; _++) { var R = c[_]; O(R._dbInfo); } }).catch(function(g) { throw (L(e, g) || v.resolve()).catch(function() { }), g; }); }); } return h(a, n), a; } var je = { _driver: "asyncStorage", _initStorage: ze, _support: T(), iterate: $e, getItem: We, setItem: Ve, removeItem: Ke, clear: Qe, length: Ge, key: He, keys: Xe, dropInstance: Je }; function Ze() { return typeof openDatabase == "function"; } var Q = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", ke = "~~local_forage_type~", ge = /^~~local_forage_type~([^~]+)~/, ee = "__lfsc__:", fe = ee.length, ue = "arbf", ce = "blob", _e = "si08", be = "ui08", we = "uic8", Ee = "si16", Se = "si32", Ie = "ur16", Re = "ui32", Ae = "fl32", De = "fl64", Ne = fe + ue.length, Te = Object.prototype.toString; function xe(e) { var n = e.length * 0.75, r = e.length, o, a = 0, t, i, f, u; e[e.length - 1] === "=" && (n--, e[e.length - 2] === "=" && n--); var c = new ArrayBuffer(n), s = new Uint8Array(c); for (o = 0; o < r; o += 4) t = Q.indexOf(e[o]), i = Q.indexOf(e[o + 1]), f = Q.indexOf(e[o + 2]), u = Q.indexOf(e[o + 3]), s[a++] = t << 2 | i >> 4, s[a++] = (i & 15) << 4 | f >> 2, s[a++] = (f & 3) << 6 | u & 63; return c; } function se(e) { var n = new Uint8Array(e), r = "", o; for (o = 0; o < n.length; o += 3) r += Q[n[o] >> 2], r += Q[(n[o] & 3) << 4 | n[o + 1] >> 4], r += Q[(n[o + 1] & 15) << 2 | n[o + 2] >> 6], r += Q[n[o + 2] & 63]; return n.length % 3 === 2 ? r = r.substring(0, r.length - 1) + "=" : n.length % 3 === 1 && (r = r.substring(0, r.length - 2) + "=="), r; } function qe(e, n) { var r = ""; if (e && (r = Te.call(e)), e && (r === "[object ArrayBuffer]" || e.buffer && Te.call(e.buffer) === "[object ArrayBuffer]")) { var o, a = ee; e instanceof ArrayBuffer ? (o = e, a += ue) : (o = e.buffer, r === "[object Int8Array]" ? a += _e : r === "[object Uint8Array]" ? a += be : r === "[object Uint8ClampedArray]" ? a += we : r === "[object Int16Array]" ? a += Ee : r === "[object Uint16Array]" ? a += Ie : r === "[object Int32Array]" ? a += Se : r === "[object Uint32Array]" ? a += Re : r === "[object Float32Array]" ? a += Ae : r === "[object Float64Array]" ? a += De : n(new Error("Failed to get type for BinaryArray"))), n(a + se(o)); } else if (r === "[object Blob]") { var t = new FileReader(); t.onload = function() { var i = ke + e.type + "~" + se(this.result); n(ee + ce + i); }, t.readAsArrayBuffer(e); } else try { n(JSON.stringify(e)); } catch (i) { console.error("Couldn't convert value into a JSON string: ", e), n(null, i); } } function er(e) { if (e.substring(0, fe) !== ee) return JSON.parse(e); var n = e.substring(Ne), r = e.substring(fe, Ne), o; if (r === ce && ge.test(n)) { var a = n.match(ge); o = a[1], n = n.substring(a[0].length); } var t = xe(n); switch (r) { case ue: return t; case ce: return U([t], { type: o }); case _e: return new Int8Array(t); case be: return new Uint8Array(t); case we: return new Uint8ClampedArray(t); case Ee: return new Int16Array(t); case Ie: return new Uint16Array(t); case Se: return new Int32Array(t); case Re: return new Uint32Array(t); case Ae: return new Float32Array(t); case De: return new Float64Array(t); default: throw new Error("Unkown type: " + r); } } var le = { serialize: qe, deserialize: er, stringToBuffer: xe, bufferToString: se }; function Be(e, n, r, o) { e.executeSql("CREATE TABLE IF NOT EXISTS " + n.storeName + " (id INTEGER PRIMARY KEY, key unique, value)", [], r, o); } function rr(e) { var n = this, r = { db: null }; if (e) for (var o in e) r[o] = typeof e[o] != "string" ? e[o].toString() : e[o]; var a = new v(function(t, i) { try { r.db = openDatabase(r.name, String(r.version), r.description, r.size); } catch (f) { return i(f); } r.db.transaction(function(f) { Be(f, r, function() { n._dbInfo = r, t(); }, function(u, c) { i(c); }); }, i); }); return r.serializer = le, a; } function G(e, n, r, o, a, t) { e.executeSql(r, o, a, function(i, f) { f.code === f.SYNTAX_ERR ? i.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?", [n.storeName], function(u, c) { c.rows.length ? t(u, f) : Be(u, n, function() { u.executeSql(r, o, a, t); }, t); }, t) : t(i, f); }, t); } function nr(e, n) { var r = this; e = A(e); var o = new v(function(a, t) { r.ready().then(function() { var i = r._dbInfo; i.db.transaction(function(f) { G(f, i, "SELECT * FROM " + i.storeName + " WHERE key = ? LIMIT 1", [e], function(u, c) { var s = c.rows.length ? c.rows.item(0).value : null; s && (s = i.serializer.deserialize(s)), a(s); }, function(u, c) { t(c); }); }); }).catch(t); }); return h(o, n), o; } function tr(e, n) { var r = this, o = new v(function(a, t) { r.ready().then(function() { var i = r._dbInfo; i.db.transaction(function(f) { G(f, i, "SELECT * FROM " + i.storeName, [], function(u, c) { for (var s = c.rows, d = s.length, m = 0; m < d; m++) { var g = s.item(m), _ = g.value; if (_ && (_ = i.serializer.deserialize(_)), _ = e(_, g.key, m + 1), _ !== void 0) { a(_); return; } } a(); }, function(u, c) { t(c); }); }); }).catch(t); }); return h(o, n), o; } function Ce(e, n, r, o) { var a = this; e = A(e); var t = new v(function(i, f) { a.ready().then(function() { n === void 0 && (n = null); var u = n, c = a._dbInfo; c.serializer.serialize(n, function(s, d) { d ? f(d) : c.db.transaction(function(m) { G(m, c, "INSERT OR REPLACE INTO " + c.storeName + " (key, value) VALUES (?, ?)", [e, s], function() { i(u); }, function(g, _) { f(_); }); }, function(m) { if (m.code === m.QUOTA_ERR) { if (o > 0) { i(Ce.apply(a, [e, u, r, o - 1])); return; } f(m); } }); }); }).catch(f); }); return h(t, r), t; } function or(e, n, r) { return Ce.apply(this, [e, n, r, 1]); } function ar(e, n) { var r = this; e = A(e); var o = new v(function(a, t) { r.ready().then(function() { var i = r._dbInfo; i.db.transaction(function(f) { G(f, i, "DELETE FROM " + i.storeName + " WHERE key = ?", [e], function() { a(); }, function(u, c) { t(c); }); }); }).catch(t); }); return h(o, n), o; } function ir(e) { var n = this, r = new v(function(o, a) { n.ready().then(function() { var t = n._dbInfo; t.db.transaction(function(i) { G(i, t, "DELETE FROM " + t.storeName, [], function() { o(); }, function(f, u) { a(u); }); }); }).catch(a); }); return h(r, e), r; } function fr(e) { var n = this, r = new v(function(o, a) { n.ready().then(function() { var t = n._dbInfo; t.db.transaction(function(i) { G(i, t, "SELECT COUNT(key) as c FROM " + t.storeName, [], function(f, u) { var c = u.rows.item(0).c; o(c); }, function(f, u) { a(u); }); }); }).catch(a); }); return h(r, e), r; } function ur(e, n) { var r = this, o = new v(function(a, t) { r.ready().then(function() { var i = r._dbInfo; i.db.transaction(function(f) { G(f, i, "SELECT key FROM " + i.storeName + " WHERE id = ? LIMIT 1", [e + 1], function(u, c) { var s = c.rows.length ? c.rows.item(0).key : null; a(s); }, function(u, c) { t(c); }); }); }).catch(t); }); return h(o, n), o; } function cr(e) { var n = this, r = new v(function(o, a) { n.ready().then(function() { var t = n._dbInfo; t.db.transaction(function(i) { G(i, t, "SELECT key FROM " + t.storeName, [], function(f, u) { for (var c = [], s = 0; s < u.rows.length; s++) c.push(u.rows.item(s).key); o(c); }, function(f, u) { a(u); }); }); }).catch(a); }); return h(r, e), r; } function sr(e) { return new v(function(n, r) { e.transaction(function(o) { o.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'", [], function(a, t) { for (var i = [], f = 0; f < t.rows.length; f++) i.push(t.rows.item(f).name); n({ db: e, storeNames: i }); }, function(a, t) { r(t); }); }, function(o) { r(o); }); }); } function lr(e, n) { n = Y.apply(this, arguments); var r = this.config(); e = typeof e != "function" && e || {}, e.name || (e.name = e.name || r.name, e.storeName = e.storeName || r.storeName); var o = this, a; return e.name ? a = new v(function(t) { var i; e.name === r.name ? i = o._dbInfo.db : i = openDatabase(e.name, "", "", 0), e.storeName ? t({ db: i, storeNames: [e.storeName] }) : t(sr(i)); }).then(function(t) { return new v(function(i, f) { t.db.transaction(function(u) { function c(g) { return new v(function(_, R) { u.executeSql("DROP TABLE IF EXISTS " + g, [], function() { _(); }, function(S, F) { R(F); }); }); } for (var s = [], d = 0, m = t.storeNames.length; d < m; d++) s.push(c(t.storeNames[d])); v.all(s).then(function() { i(); }).catch(function(g) { f(g); }); }, function(u) { f(u); }); }); }) : a = v.reject("Invalid arguments"), h(a, n), a; } var vr = { _driver: "webSQLStorage", _initStorage: rr, _support: Ze(), iterate: tr, getItem: nr, setItem: or, removeItem: ar, clear: ir, length: fr, key: ur, keys: cr, dropInstance: lr }; function dr() { try { return typeof localStorage < "u" && "setItem" in localStorage && // in IE8 typeof localStorage.setItem === 'object' !!localStorage.setItem; } catch { return !1; } } function Oe(e, n) { var r = e.name + "/"; return e.storeName !== n.storeName && (r += e.storeName + "/"), r; } function hr() { var e = "_localforage_support_test"; try { return localStorage.setItem(e, !0), localStorage.removeItem(e), !1; } catch { return !0; } } function mr() { return !hr() || localStorage.length > 0; } function yr(e) { var n = this, r = {}; if (e) for (var o in e) r[o] = e[o]; return r.keyPrefix = Oe(e, n._defaultConfig), mr() ? (n._dbInfo = r, r.serializer = le, v.resolve()) : v.reject(); } function pr(e) { var n = this, r = n.ready().then(function() { for (var o = n._dbInfo.keyPrefix, a = localStorage.length - 1; a >= 0; a--) { var t = localStorage.key(a); t.indexOf(o) === 0 && localStorage.removeItem(t); } }); return h(r, e), r; } function gr(e, n) { var r = this; e = A(e); var o = r.ready().then(function() { var a = r._dbInfo, t = localStorage.getItem(a.keyPrefix + e); return t && (t = a.serializer.deserialize(t)), t; }); return h(o, n), o; } function _r(e, n) { var r = this, o = r.ready().then(function() { for (var a = r._dbInfo, t = a.keyPrefix, i = t.length, f = localStorage.length, u = 1, c = 0; c < f; c++) { var s = localStorage.key(c); if (s.indexOf(t) === 0) { var d = localStorage.getItem(s); if (d && (d = a.serializer.deserialize(d)), d = e(d, s.substring(i), u++), d !== void 0) return d; } } }); return h(o, n), o; } function br(e, n) { var r = this, o = r.ready().then(function() { var a = r._dbInfo, t; try { t = localStorage.key(e); } catch { t = null; } return t && (t = t.substring(a.keyPrefix.length)), t; }); return h(o, n), o; } function wr(e) { var n = this, r = n.ready().then(function() { for (var o = n._dbInfo, a = localStorage.length, t = [], i = 0; i < a; i++) { var f = localStorage.key(i); f.indexOf(o.keyPrefix) === 0 && t.push(f.substring(o.keyPrefix.length)); } return t; }); return h(r, e), r; } function Er(e) { var n = this, r = n.keys().then(function(o) { return o.length; }); return h(r, e), r; } function Sr(e, n) { var r = this; e = A(e); var o = r.ready().then(function() { var a = r._dbInfo; localStorage.removeItem(a.keyPrefix + e); }); return h(o, n), o; } function Ir(e, n, r) { var o = this; e = A(e); var a = o.ready().then(function() { n === void 0 && (n = null); var t = n; return new v(function(i, f) { var u = o._dbInfo; u.serializer.serialize(n, function(c, s) { if (s) f(s); else try { localStorage.setItem(u.keyPrefix + e, c), i(t); } catch (d) { (d.name === "QuotaExceededError" || d.name === "NS_ERROR_DOM_QUOTA_REACHED") && f(d), f(d); } }); }); }); return h(a, r), a; } function Rr(e, n) { if (n = Y.apply(this, arguments), e = typeof e != "function" && e || {}, !e.name) { var r = this.config(); e.name = e.name || r.name, e.storeName = e.storeName || r.storeName; } var o = this, a; return e.name ? a = new v(function(t) { e.storeName ? t(Oe(e, o._defaultConfig)) : t(e.name + "/"); }).then(function(t) { for (var i = localStorage.length - 1; i >= 0; i--) { var f = localStorage.key(i); f.indexOf(t) === 0 && localStorage.removeItem(f); } }) : a = v.reject("Invalid arguments"), h(a, n), a; } var Ar = { _driver: "localStorageWrapper", _initStorage: yr, _support: dr(), iterate: _r, getItem: gr, setItem: Ir, removeItem: Sr, clear: pr, length: Er, key: br, keys: wr, dropInstance: Rr }, Dr = function(n, r) { return n === r || typeof n == "number" && typeof r == "number" && isNaN(n) && isNaN(r); }, Nr = function(n, r) { for (var o = n.length, a = 0; a < o; ) { if (Dr(n[a], r)) return !0; a++; } return !1; }, Le = Array.isArray || function(e) { return Object.prototype.toString.call(e) === "[object Array]"; }, Z = {}, Pe = {}, J = { INDEXEDDB: je, WEBSQL: vr, LOCALSTORAGE: Ar }, Tr = [J.INDEXEDDB._driver, J.WEBSQL._driver, J.LOCALSTORAGE._driver], re = ["dropInstance"], ve = ["clear", "getItem", "iterate", "key", "keys", "length", "removeItem", "setItem"].concat(re), xr = { description: "", driver: Tr.slice(), name: "localforage", // Default DB size is _JUST UNDER_ 5MB, as it's the highest size // we can use without a prompt. size: 4980736, storeName: "keyvaluepairs", version: 1 }; function Br(e, n) { e[n] = function() { var r = arguments; return e.ready().then(function() { return e[n].apply(e, r); }); }; } function de() { for (var e = 1; e < arguments.length; e++) { var n = arguments[e]; if (n) for (var r in n) n.hasOwnProperty(r) && (Le(n[r]) ? arguments[0][r] = n[r].slice() : arguments[0][r] = n[r]); } return arguments[0]; } var Cr = function() { function e(n) { C(this, e); for (var r in J) if (J.hasOwnProperty(r)) { var o = J[r], a = o._driver; this[r] = a, Z[a] || this.defineDriver(o); } this._defaultConfig = de({}, xr), this._config = de({}, this._defaultConfig, n), this._driverSet = null, this._initDriver = null, this._ready = !1, this._dbInfo = null, this._wrapLibraryMethodsWithReady(), this.setDriver(this._config.driver).catch(function() { }); } return e.prototype.config = function(r) { if ((typeof r > "u" ? "undefined" : E(r)) === "object") { if (this._ready) return new Error("Can't call config() after localforage has been used."); for (var o in r) { if (o === "storeName" && (r[o] = r[o].replace(/\W/g, "_")), o === "version" && typeof r[o] != "number") return new Error("Database version must be a number."); this._config[o] = r[o]; } return "driver" in r && r.driver ? this.setDriver(this._config.driver) : !0; } else return typeof r == "string" ? this._config[r] : this._config; }, e.prototype.defineDriver = function(r, o, a) { var t = new v(function(i, f) { try { var u = r._driver, c = new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver"); if (!r._driver) { f(c); return; } for (var s = ve.concat("_initStorage"), d = 0, m = s.length; d < m; d++) { var g = s[d], _ = !Nr(re, g); if ((_ || r[g]) && typeof r[g] != "function") { f(c); return; } } var R = function() { for (var k = function(Pr) { return function() { var Fr = new Error("Method " + Pr + " is not implemented by the current driver"), Fe = v.reject(Fr); return h(Fe, arguments[arguments.length - 1]), Fe; }; }, he = 0, Lr = re.length; he < Lr; he++) { var me = re[he]; r[me] || (r[me] = k(me)); } }; R(); var S = function(k) { Z[u] && console.info("Redefining LocalForage driver: " + u), Z[u] = r, Pe[u] = k, i(); }; "_support" in r ? r._support && typeof r._support == "function" ? r._support().then(S, f) : S(!!r._support) : S(!0); } catch (F) { f(F); } }); return I(t, o, a), t; }, e.prototype.driver = function() { return this._driver || null; }, e.prototype.getDriver = function(r, o, a) { var t = Z[r] ? v.resolve(Z[r]) : v.reject(new Error("Driver not found.")); return I(t, o, a), t; }, e.prototype.getSerializer = function(r) { var o = v.resolve(le); return I(o, r), o; }, e.prototype.ready = function(r) { var o = this, a = o._driverSet.then(function() { return o._ready === null && (o._ready = o._initDriver()), o._ready; }); return I(a, r, r), a; }, e.prototype.setDriver = function(r, o, a) { var t = this; Le(r) || (r = [r]); var i = this._getSupportedDrivers(r); function f() { t._config.driver = t.driver(); } function u(d) { return t._extend(d), f(), t._ready = t._initStorage(t._config), t._ready; } function c(d) { return function() { var m = 0; function g() { for (; m < d.length; ) { var _ = d[m]; return m++, t._dbInfo = null, t._ready = null, t.getDriver(_).then(u).catch(g); } f(); var R = new Error("No available storage method found."); return t._driverSet = v.reject(R), t._driverSet; } return g(); }; } var s = this._driverSet !== null ? this._driverSet.catch(function() { return v.resolve(); }) : v.resolve(); return this._driverSet = s.then(function() { var d = i[0]; return t._dbInfo = null, t._ready = null, t.getDriver(d).then(function(m) { t._driver = m._driver, f(), t._wrapLibraryMethodsWithReady(), t._initDriver = c(i); }); }).catch(function() { f(); var d = new Error("No available storage method found."); return t._driverSet = v.reject(d), t._driverSet; }), I(this._driverSet, o, a), this._driverSet; }, e.prototype.supports = function(r) { return !!Pe[r]; }, e.prototype._extend = function(r) { de(this, r);