You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

1814 lines
70 KiB

/*!
localForage -- Offline Storage, Improved
Version 1.10.0
https://localforage.github.io/localForage
(c) 2013-2017 Mozilla, Apache License 2.0
*/
!function(a) {
if ("object" == typeof exports && "undefined" != typeof module)
module.exports = a();
else if ("function" == typeof define && define.amd)
define([], a);
else {
var b;
b = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this,
b.localforage = a()
}
}(function() {
return function a(b, c, d) {
function e(g, h) {
if (!c[g]) {
if (!b[g]) {
var i = "function" == typeof require && require;
if (!h && i)
return i(g, !0);
if (f)
return f(g, !0);
var j = new Error("Cannot find module '" + g + "'");
throw j.code = "MODULE_NOT_FOUND",
j
}
var k = c[g] = {
exports: {}
};
b[g][0].call(k.exports, function(a) {
var c = b[g][1][a];
return e(c || a)
}, k, k.exports, a, b, c, d)
}
return c[g].exports
}
for (var f = "function" == typeof require && require, g = 0; g < d.length; g++)
e(d[g]);
return e
}({
1: [function(a, b, c) {
(function(a) {
"use strict";
function c() {
k = !0;
for (var a, b, c = l.length; c; ) {
for (b = l,
l = [],
a = -1; ++a < c; )
b[a]();
c = l.length
}
k = !1
}
function d(a) {
1 !== l.push(a) || k || e()
}
var e, f = a.MutationObserver || a.WebKitMutationObserver;
if (f) {
var g = 0
, h = new f(c)
, i = a.document.createTextNode("");
h.observe(i, {
characterData: !0
}),
e = function() {
i.data = g = ++g % 2
}
} else if (a.setImmediate || void 0 === a.MessageChannel)
e = "document"in a && "onreadystatechange"in a.document.createElement("script") ? function() {
var b = a.document.createElement("script");
b.onreadystatechange = function() {
c(),
b.onreadystatechange = null,
b.parentNode.removeChild(b),
b = null
}
,
a.document.documentElement.appendChild(b)
}
: function() {
setTimeout(c, 0)
}
;
else {
var j = new a.MessageChannel;
j.port1.onmessage = c,
e = function() {
j.port2.postMessage(0)
}
}
var k, l = [];
b.exports = d
}
).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {})
}
, {}],
2: [function(a, b, c) {
"use strict";
function d() {}
function e(a) {
if ("function" != typeof a)
throw new TypeError("resolver must be a function");
this.state = s,
this.queue = [],
this.outcome = void 0,
a !== d && i(this, a)
}
function f(a, b, c) {
this.promise = a,
"function" == typeof b && (this.onFulfilled = b,
this.callFulfilled = this.otherCallFulfilled),
"function" == typeof c && (this.onRejected = c,
this.callRejected = this.otherCallRejected)
}
function g(a, b, c) {
o(function() {
var d;
try {
d = b(c)
} catch (b) {
return p.reject(a, b)
}
d === a ? p.reject(a, new TypeError("Cannot resolve promise with itself")) : p.resolve(a, d)
})
}
function h(a) {
var b = a && a.then;
if (a && ("object" == typeof a || "function" == typeof a) && "function" == typeof b)
return function() {
b.apply(a, arguments)
}
}
function i(a, b) {
function c(b) {
f || (f = !0,
p.reject(a, b))
}
function d(b) {
f || (f = !0,
p.resolve(a, b))
}
function e() {
b(d, c)
}
var f = !1
, g = j(e);
"error" === g.status && c(g.value)
}
function j(a, b) {
var c = {};
try {
c.value = a(b),
c.status = "success"
} catch (a) {
c.status = "error",
c.value = a
}
return c
}
function k(a) {
return a instanceof this ? a : p.resolve(new this(d), a)
}
function l(a) {
var b = new this(d);
return p.reject(b, a)
}
function m(a) {
function b(a, b) {
function d(a) {
g[b] = a,
++h !== e || f || (f = !0,
p.resolve(j, g))
}
c.resolve(a).then(d, function(a) {
f || (f = !0,
p.reject(j, a))
})
}
var c = this;
if ("[object Array]" !== Object.prototype.toString.call(a))
return this.reject(new TypeError("must be an array"));
var e = a.length
, f = !1;
if (!e)
return this.resolve([]);
for (var g = new Array(e), h = 0, i = -1, j = new this(d); ++i < e; )
b(a[i], i);
return j
}
function n(a) {
function b(a) {
c.resolve(a).then(function(a) {
f || (f = !0,
p.resolve(h, a))
}, function(a) {
f || (f = !0,
p.reject(h, a))
})
}
var c = this;
if ("[object Array]" !== Object.prototype.toString.call(a))
return this.reject(new TypeError("must be an array"));
var e = a.length
, f = !1;
if (!e)
return this.resolve([]);
for (var g = -1, h = new this(d); ++g < e; )
b(a[g]);
return h
}
var o = a(1)
, p = {}
, q = ["REJECTED"]
, r = ["FULFILLED"]
, s = ["PENDING"];
b.exports = e,
e.prototype.catch = function(a) {
return this.then(null, a)
}
,
e.prototype.then = function(a, b) {
if ("function" != typeof a && this.state === r || "function" != typeof b && this.state === q)
return this;
var c = new this.constructor(d);
if (this.state !== s) {
g(c, this.state === r ? a : b, this.outcome)
} else
this.queue.push(new f(c,a,b));
return c
}
,
f.prototype.callFulfilled = function(a) {
p.resolve(this.promise, a)
}
,
f.prototype.otherCallFulfilled = function(a) {
g(this.promise, this.onFulfilled, a)
}
,
f.prototype.callRejected = function(a) {
p.reject(this.promise, a)
}
,
f.prototype.otherCallRejected = function(a) {
g(this.promise, this.onRejected, a)
}
,
p.resolve = function(a, b) {
var c = j(h, b);
if ("error" === c.status)
return p.reject(a, c.value);
var d = c.value;
if (d)
i(a, d);
else {
a.state = r,
a.outcome = b;
for (var e = -1, f = a.queue.length; ++e < f; )
a.queue[e].callFulfilled(b)
}
return a
}
,
p.reject = function(a, b) {
a.state = q,
a.outcome = b;
for (var c = -1, d = a.queue.length; ++c < d; )
a.queue[c].callRejected(b);
return a
}
,
e.resolve = k,
e.reject = l,
e.all = m,
e.race = n
}
, {
1: 1
}],
3: [function(a, b, c) {
(function(b) {
"use strict";
"function" != typeof b.Promise && (b.Promise = a(2))
}
).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {})
}
, {
2: 2
}],
4: [function(a, b, c) {
"use strict";
function d(a, b) {
if (!(a instanceof b))
throw new TypeError("Cannot call a class as a function")
}
function e() {
try {
if ("undefined" != typeof indexedDB)
return indexedDB;
if ("undefined" != typeof webkitIndexedDB)
return webkitIndexedDB;
if ("undefined" != typeof mozIndexedDB)
return mozIndexedDB;
if ("undefined" != typeof OIndexedDB)
return OIndexedDB;
if ("undefined" != typeof msIndexedDB)
return msIndexedDB
} catch (a) {
return
}
}
function f() {
try {
if (!ua || !ua.open)
return !1;
var a = "undefined" != typeof openDatabase && /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(navigator.platform)
, b = "function" == typeof fetch && -1 !== fetch.toString().indexOf("[native code");
return (!a || b) && "undefined" != typeof indexedDB && "undefined" != typeof IDBKeyRange
} catch (a) {
return !1
}
}
function g(a, b) {
a = a || [],
b = b || {};
try {
return new Blob(a,b)
} catch (f) {
if ("TypeError" !== f.name)
throw f;
for (var c = "undefined" != typeof BlobBuilder ? BlobBuilder : "undefined" != typeof MSBlobBuilder ? MSBlobBuilder : "undefined" != typeof MozBlobBuilder ? MozBlobBuilder : WebKitBlobBuilder, d = new c, e = 0; e < a.length; e += 1)
d.append(a[e]);
return d.getBlob(b.type)
}
}
function h(a, b) {
b && a.then(function(a) {
b(null, a)
}, function(a) {
b(a)
})
}
function i(a, b, c) {
"function" == typeof b && a.then(b),
"function" == typeof c && a.catch(c)
}
function j(a) {
return "string" != typeof a && (console.warn(a + " used as a key, but it is not a string."),
a = String(a)),
a
}
function k() {
if (arguments.length && "function" == typeof arguments[arguments.length - 1])
return arguments[arguments.length - 1]
}
function l(a) {
for (var b = a.length, c = new ArrayBuffer(b), d = new Uint8Array(c), e = 0; e < b; e++)
d[e] = a.charCodeAt(e);
return c
}
function m(a) {
return new va(function(b) {
var c = a.transaction(wa, Ba)
, d = g([""]);
c.objectStore(wa).put(d, "key"),
c.onabort = function(a) {
a.preventDefault(),
a.stopPropagation(),
b(!1)
}
,
c.oncomplete = function() {
var a = navigator.userAgent.match(/Chrome\/(\d+)/)
, c = navigator.userAgent.match(/Edge\//);
b(c || !a || parseInt(a[1], 10) >= 43)
}
}
).catch(function() {
return !1
})
}
function n(a) {
return "boolean" == typeof xa ? va.resolve(xa) : m(a).then(function(a) {
return xa = a
})
}
function o(a) {
var b = ya[a.name]
, c = {};
c.promise = new va(function(a, b) {
c.resolve = a,
c.reject = b
}
),
b.deferredOperations.push(c),
b.dbReady ? b.dbReady = b.dbReady.then(function() {
return c.promise
}) : b.dbReady = c.promise
}
function p(a) {
var b = ya[a.name]
, c = b.deferredOperations.pop();
if (c)
return c.resolve(),
c.promise
}
function q(a, b) {
var c = ya[a.name]
, d = c.deferredOperations.pop();
if (d)
return d.reject(b),
d.promise
}
function r(a, b) {
return new va(function(c, d) {
if (ya[a.name] = ya[a.name] || B(),
a.db) {
if (!b)
return c(a.db);
o(a),
a.db.close()
}
var e = [a.name];
b && e.push(a.version);
var f = ua.open.apply(ua, e);
b && (f.onupgradeneeded = function(b) {
var c = f.result;
try {
c.createObjectStore(a.storeName),
b.oldVersion <= 1 && c.createObjectStore(wa)
} catch (c) {
if ("ConstraintError" !== c.name)
throw c;
console.warn('The database "' + a.name + '" has been upgraded from version ' + b.oldVersion + " to version " + b.newVersion + ', but the storage "' + a.storeName + '" already exists.')
}
}
),
f.onerror = function(a) {
a.preventDefault(),
d(f.error)
}
,
f.onsuccess = function() {
var b = f.result;
b.onversionchange = function(a) {
a.target.close()
}
,
c(b),
p(a)
}
}
)
}
function s(a) {
return r(a, !1)
}
function t(a) {
return r(a, !0)
}
function u(a, b) {
if (!a.db)
return !0;
var c = !a.db.objectStoreNames.contains(a.storeName)
, d = a.version < a.db.version
, e = a.version > a.db.version;
if (d && (a.version !== b && console.warn('The database "' + a.name + "\" can't be downgraded from version " + a.db.version + " to version " + a.version + "."),
a.version = a.db.version),
e || c) {
if (c) {
var f = a.db.version + 1;
f > a.version && (a.version = f)
}
return !0
}
return !1
}
function v(a) {
return new va(function(b, c) {
var d = new FileReader;
d.onerror = c,
d.onloadend = function(c) {
var d = btoa(c.target.result || "");
b({
__local_forage_encoded_blob: !0,
data: d,
type: a.type
})
}
,
d.readAsBinaryString(a)
}
)
}
function w(a) {
return g([l(atob(a.data))], {
type: a.type
})
}
function x(a) {
return a && a.__local_forage_encoded_blob
}
function y(a) {
var b = this
, c = b._initReady().then(function() {
var a = ya[b._dbInfo.name];
if (a && a.dbReady)
return a.dbReady
});
return i(c, a, a),
c
}
function z(a) {
o(a);
for (var b = ya[a.name], c = b.forages, d = 0; d < c.length; d++) {
var e = c[d];
e._dbInfo.db && (e._dbInfo.db.close(),
e._dbInfo.db = null)
}
return a.db = null,
s(a).then(function(b) {
return a.db = b,
u(a) ? t(a) : b
}).then(function(d) {
a.db = b.db = d;
for (var e = 0; e < c.length; e++)
c[e]._dbInfo.db = d
}).catch(function(b) {
throw q(a, b),
b
})
}
function A(a, b, c, d) {
void 0 === d && (d = 1);
try {
var e = a.db.transaction(a.storeName, b);
c(null, e)
} catch (e) {
if (d > 0 && (!a.db || "InvalidStateError" === e.name || "NotFoundError" === e.name))
return va.resolve().then(function() {
if (!a.db || "NotFoundError" === e.name && !a.db.objectStoreNames.contains(a.storeName) && a.version <= a.db.version)
return a.db && (a.version = a.db.version + 1),
t(a)
}).then(function() {
return z(a).then(function() {
A(a, b, c, d - 1)
})
}).catch(c);
c(e)
}
}
function B() {
return {
forages: [],
db: null,
dbReady: null,
deferredOperations: []
}
}
function C(a) {
function b() {
return va.resolve()
}
var c = this
, d = {
db: null
};
if (a)
for (var e in a)
d[e] = a[e];
var f = ya[d.name];
f || (f = B(),
ya[d.name] = f),
f.forages.push(c),
c._initReady || (c._initReady = c.ready,
c.ready = y);
for (var g = [], h = 0; h < f.forages.length; h++) {
var i = f.forages[h];
i !== c && g.push(i._initReady().catch(b))
}
var j = f.forages.slice(0);
return va.all(g).then(function() {
return d.db = f.db,
s(d)
}).then(function(a) {
return d.db = a,
u(d, c._defaultConfig.version) ? t(d) : a
}).then(function(a) {
d.db = f.db = a,
c._dbInfo = d;
for (var b = 0; b < j.length; b++) {
var e = j[b];
e !== c && (e._dbInfo.db = d.db,
e._dbInfo.version = d.version)
}
})
}
function D(a, b) {
var c = this;
a = j(a);
var d = new va(function(b, d) {
c.ready().then(function() {
A(c._dbInfo, Aa, function(e, f) {
if (e)
return d(e);
try {
var g = f.objectStore(c._dbInfo.storeName)
, h = g.get(a);
h.onsuccess = function() {
var a = h.result;
void 0 === a && (a = null),
x(a) && (a = w(a)),
b(a)
}
,
h.onerror = function() {
d(h.error)
}
} catch (a) {
d(a)
}
})
}).catch(d)
}
);
return h(d, b),
d
}
function E(a, b) {
var c = this
, d = new va(function(b, d) {
c.ready().then(function() {
A(c._dbInfo, Aa, function(e, f) {
if (e)
return d(e);
try {
var g = f.objectStore(c._dbInfo.storeName)
, h = g.openCursor()
, i = 1;
h.onsuccess = function() {
var c = h.result;
if (c) {
var d = c.value;
x(d) && (d = w(d));
var e = a(d, c.key, i++);
void 0 !== e ? b(e) : c.continue()
} else
b()
}
,
h.onerror = function() {
d(h.error)
}
} catch (a) {
d(a)
}
})
}).catch(d)
}
);
return h(d, b),
d
}
function F(a, b, c) {
var d = this;
a = j(a);
var e = new va(function(c, e) {
var f;
d.ready().then(function() {
return f = d._dbInfo,
"[object Blob]" === za.call(b) ? n(f.db).then(function(a) {
return a ? b : v(b)
}) : b
}).then(function(b) {
A(d._dbInfo, Ba, function(f, g) {
if (f)
return e(f);
try {
var h = g.objectStore(d._dbInfo.storeName);
null === b && (b = void 0);
var i = h.put(b, a);
g.oncomplete = function() {
void 0 === b && (b = null),
c(b)
}
,
g.onabort = g.onerror = function() {
var a = i.error ? i.error : i.transaction.error;
e(a)
}
} catch (a) {
e(a)
}
})
}).catch(e)
}
);
return h(e, c),
e
}
function G(a, b) {
var c = this;
a = j(a);
var d = new va(function(b, d) {
c.ready().then(function() {
A(c._dbInfo, Ba, function(e, f) {
if (e)
return d(e);
try {
var g = f.objectStore(c._dbInfo.storeName)
, h = g.delete(a);
f.oncomplete = function() {
b()
}
,
f.onerror = function() {
d(h.error)
}
,
f.onabort = function() {
var a = h.error ? h.error : h.transaction.error;
d(a)
}
} catch (a) {
d(a)
}
})
}).catch(d)
}
);
return h(d, b),
d
}
function H(a) {
var b = this
, c = new va(function(a, c) {
b.ready().then(function() {
A(b._dbInfo, Ba, function(d, e) {
if (d)
return c(d);
try {
var f = e.objectStore(b._dbInfo.storeName)
, g = f.clear();
e.oncomplete = function() {
a()
}
,
e.onabort = e.onerror = function() {
var a = g.error ? g.error : g.transaction.error;
c(a)
}
} catch (a) {
c(a)
}
})
}).catch(c)
}
);
return h(c, a),
c
}
function I(a) {
var b = this
, c = new va(function(a, c) {
b.ready().then(function() {
A(b._dbInfo, Aa, function(d, e) {
if (d)
return c(d);
try {
var f = e.objectStore(b._dbInfo.storeName)
, g = f.count();
g.onsuccess = function() {
a(g.result)
}
,
g.onerror = function() {
c(g.error)
}
} catch (a) {
c(a)
}
})
}).catch(c)
}
);
return h(c, a),
c
}
function J(a, b) {
var c = this
, d = new va(function(b, d) {
if (a < 0)
return void b(null);
c.ready().then(function() {
A(c._dbInfo, Aa, function(e, f) {
if (e)
return d(e);
try {
var g = f.objectStore(c._dbInfo.storeName)
, h = !1
, i = g.openKeyCursor();
i.onsuccess = function() {
var c = i.result;
if (!c)
return void b(null);
0 === a ? b(c.key) : h ? b(c.key) : (h = !0,
c.advance(a))
}
,
i.onerror = function() {
d(i.error)
}
} catch (a) {
d(a)
}
})
}).catch(d)
}
);
return h(d, b),
d
}
function K(a) {
var b = this
, c = new va(function(a, c) {
b.ready().then(function() {
A(b._dbInfo, Aa, function(d, e) {
if (d)
return c(d);
try {
var f = e.objectStore(b._dbInfo.storeName)
, g = f.openKeyCursor()
, h = [];
g.onsuccess = function() {
var b = g.result;
if (!b)
return void a(h);
h.push(b.key),
b.continue()
}
,
g.onerror = function() {
c(g.error)
}
} catch (a) {
c(a)
}
})
}).catch(c)
}
);
return h(c, a),
c
}
function L(a, b) {
b = k.apply(this, arguments);
var c = this.config();
a = "function" != typeof a && a || {},
a.name || (a.name = a.name || c.name,
a.storeName = a.storeName || c.storeName);
var d, e = this;
if (a.name) {
var f = a.name === c.name && e._dbInfo.db
, g = f ? va.resolve(e._dbInfo.db) : s(a).then(function(b) {
var c = ya[a.name]
, d = c.forages;
c.db = b;
for (var e = 0; e < d.length; e++)
d[e]._dbInfo.db = b;
return b
});
d = a.storeName ? g.then(function(b) {
if (b.objectStoreNames.contains(a.storeName)) {
var c = b.version + 1;
o(a);
var d = ya[a.name]
, e = d.forages;
b.close();
for (var f = 0; f < e.length; f++) {
var g = e[f];
g._dbInfo.db = null,
g._dbInfo.version = c
}
return new va(function(b, d) {
var e = ua.open(a.name, c);
e.onerror = function(a) {
e.result.close(),
d(a)
}
,
e.onupgradeneeded = function() {
e.result.deleteObjectStore(a.storeName)
}
,
e.onsuccess = function() {
var a = e.result;
a.close(),
b(a)
}
}
).then(function(a) {
d.db = a;
for (var b = 0; b < e.length; b++) {
var c = e[b];
c._dbInfo.db = a,
p(c._dbInfo)
}
}).catch(function(b) {
throw (q(a, b) || va.resolve()).catch(function() {}),
b
})
}
}) : g.then(function(b) {
o(a);
var c = ya[a.name]
, d = c.forages;
b.close();
for (var e = 0; e < d.length; e++) {
d[e]._dbInfo.db = null
}
return new va(function(b, c) {
var d = ua.deleteDatabase(a.name);
d.onerror = function() {
var a = d.result;
a && a.close(),
c(d.error)
}
,
d.onblocked = function() {
console.warn('dropInstance blocked for database "' + a.name + '" until all open connections are closed')
}
,
d.onsuccess = function() {
var a = d.result;
a && a.close(),
b(a)
}
}
).then(function(a) {
c.db = a;
for (var b = 0; b < d.length; b++)
p(d[b]._dbInfo)
}).catch(function(b) {
throw (q(a, b) || va.resolve()).catch(function() {}),
b
})
})
} else
d = va.reject("Invalid arguments");
return h(d, b),
d
}
function M() {
return "function" == typeof openDatabase
}
function N(a) {
var b, c, d, e, f, g = .75 * a.length, h = a.length, i = 0;
"=" === a[a.length - 1] && (g--,
"=" === a[a.length - 2] && g--);
var j = new ArrayBuffer(g)
, k = new Uint8Array(j);
for (b = 0; b < h; b += 4)
c = Da.indexOf(a[b]),
d = Da.indexOf(a[b + 1]),
e = Da.indexOf(a[b + 2]),
f = Da.indexOf(a[b + 3]),
k[i++] = c << 2 | d >> 4,
k[i++] = (15 & d) << 4 | e >> 2,
k[i++] = (3 & e) << 6 | 63 & f;
return j
}
function O(a) {
var b, c = new Uint8Array(a), d = "";
for (b = 0; b < c.length; b += 3)
d += Da[c[b] >> 2],
d += Da[(3 & c[b]) << 4 | c[b + 1] >> 4],
d += Da[(15 & c[b + 1]) << 2 | c[b + 2] >> 6],
d += Da[63 & c[b + 2]];
return c.length % 3 == 2 ? d = d.substring(0, d.length - 1) + "=" : c.length % 3 == 1 && (d = d.substring(0, d.length - 2) + "=="),
d
}
function P(a, b) {
var c = "";
if (a && (c = Ua.call(a)),
a && ("[object ArrayBuffer]" === c || a.buffer && "[object ArrayBuffer]" === Ua.call(a.buffer))) {
var d, e = Ga;
a instanceof ArrayBuffer ? (d = a,
e += Ia) : (d = a.buffer,
"[object Int8Array]" === c ? e += Ka : "[object Uint8Array]" === c ? e += La : "[object Uint8ClampedArray]" === c ? e += Ma : "[object Int16Array]" === c ? e += Na : "[object Uint16Array]" === c ? e += Pa : "[object Int32Array]" === c ? e += Oa : "[object Uint32Array]" === c ? e += Qa : "[object Float32Array]" === c ? e += Ra : "[object Float64Array]" === c ? e += Sa : b(new Error("Failed to get type for BinaryArray"))),
b(e + O(d))
} else if ("[object Blob]" === c) {
var f = new FileReader;
f.onload = function() {
var c = Ea + a.type + "~" + O(this.result);
b(Ga + Ja + c)
}
,
f.readAsArrayBuffer(a)
} else
try {
b(JSON.stringify(a))
} catch (c) {
console.error("Couldn't convert value into a JSON string: ", a),
b(null, c)
}
}
function Q(a) {
if (a.substring(0, Ha) !== Ga)
return JSON.parse(a);
var b, c = a.substring(Ta), d = a.substring(Ha, Ta);
if (d === Ja && Fa.test(c)) {
var e = c.match(Fa);
b = e[1],
c = c.substring(e[0].length)
}
var f = N(c);
switch (d) {
case Ia:
return f;
case Ja:
return g([f], {
type: b
});
case Ka:
return new Int8Array(f);
case La:
return new Uint8Array(f);
case Ma:
return new Uint8ClampedArray(f);
case Na:
return new Int16Array(f);
case Pa:
return new Uint16Array(f);
case Oa:
return new Int32Array(f);
case Qa:
return new Uint32Array(f);
case Ra:
return new Float32Array(f);
case Sa:
return new Float64Array(f);
default:
throw new Error("Unkown type: " + d)
}
}
function R(a, b, c, d) {
a.executeSql("CREATE TABLE IF NOT EXISTS " + b.storeName + " (id INTEGER PRIMARY KEY, key unique, value)", [], c, d)
}
function S(a) {
var b = this
, c = {
db: null
};
if (a)
for (var d in a)
c[d] = "string" != typeof a[d] ? a[d].toString() : a[d];
var e = new va(function(a, d) {
try {
c.db = openDatabase(c.name, String(c.version), c.description, c.size)
} catch (a) {
return d(a)
}
c.db.transaction(function(e) {
R(e, c, function() {
b._dbInfo = c,
a()
}, function(a, b) {
d(b)
})
}, d)
}
);
return c.serializer = Va,
e
}
function T(a, b, c, d, e, f) {
a.executeSql(c, d, e, function(a, g) {
g.code === g.SYNTAX_ERR ? a.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?", [b.storeName], function(a, h) {
h.rows.length ? f(a, g) : R(a, b, function() {
a.executeSql(c, d, e, f)
}, f)
}, f) : f(a, g)
}, f)
}
function U(a, b) {
var c = this;
a = j(a);
var d = new va(function(b, d) {
c.ready().then(function() {
var e = c._dbInfo;
e.db.transaction(function(c) {
T(c, e, "SELECT * FROM " + e.storeName + " WHERE key = ? LIMIT 1", [a], function(a, c) {
var d = c.rows.length ? c.rows.item(0).value : null;
d && (d = e.serializer.deserialize(d)),
b(d)
}, function(a, b) {
d(b)
})
})
}).catch(d)
}
);
return h(d, b),
d
}
function V(a, b) {
var c = this
, d = new va(function(b, d) {
c.ready().then(function() {
var e = c._dbInfo;
e.db.transaction(function(c) {
T(c, e, "SELECT * FROM " + e.storeName, [], function(c, d) {
for (var f = d.rows, g = f.length, h = 0; h < g; h++) {
var i = f.item(h)
, j = i.value;
if (j && (j = e.serializer.deserialize(j)),
void 0 !== (j = a(j, i.key, h + 1)))
return void b(j)
}
b()
}, function(a, b) {
d(b)
})
})
}).catch(d)
}
);
return h(d, b),
d
}
function W(a, b, c, d) {
var e = this;
a = j(a);
var f = new va(function(f, g) {
e.ready().then(function() {
void 0 === b && (b = null);
var h = b
, i = e._dbInfo;
i.serializer.serialize(b, function(b, j) {
j ? g(j) : i.db.transaction(function(c) {
T(c, i, "INSERT OR REPLACE INTO " + i.storeName + " (key, value) VALUES (?, ?)", [a, b], function() {
f(h)
}, function(a, b) {
g(b)
})
}, function(b) {
if (b.code === b.QUOTA_ERR) {
if (d > 0)
return void f(W.apply(e, [a, h, c, d - 1]));
g(b)
}
})
})
}).catch(g)
}
);
return h(f, c),
f
}
function X(a, b, c) {
return W.apply(this, [a, b, c, 1])
}
function Y(a, b) {
var c = this;
a = j(a);
var d = new va(function(b, d) {
c.ready().then(function() {
var e = c._dbInfo;
e.db.transaction(function(c) {
T(c, e, "DELETE FROM " + e.storeName + " WHERE key = ?", [a], function() {
b()
}, function(a, b) {
d(b)
})
})
}).catch(d)
}
);
return h(d, b),
d
}
function Z(a) {
var b = this
, c = new va(function(a, c) {
b.ready().then(function() {
var d = b._dbInfo;
d.db.transaction(function(b) {
T(b, d, "DELETE FROM " + d.storeName, [], function() {
a()
}, function(a, b) {
c(b)
})
})
}).catch(c)
}
);
return h(c, a),
c
}
function $(a) {
var b = this
, c = new va(function(a, c) {
b.ready().then(function() {
var d = b._dbInfo;
d.db.transaction(function(b) {
T(b, d, "SELECT COUNT(key) as c FROM " + d.storeName, [], function(b, c) {
var d = c.rows.item(0).c;
a(d)
}, function(a, b) {
c(b)
})
})
}).catch(c)
}
);
return h(c, a),
c
}
function _(a, b) {
var c = this
, d = new va(function(b, d) {
c.ready().then(function() {
var e = c._dbInfo;
e.db.transaction(function(c) {
T(c, e, "SELECT key FROM " + e.storeName + " WHERE id = ? LIMIT 1", [a + 1], function(a, c) {
var d = c.rows.length ? c.rows.item(0).key : null;
b(d)
}, function(a, b) {
d(b)
})
})
}).catch(d)
}
);
return h(d, b),
d
}
function aa(a) {
var b = this
, c = new va(function(a, c) {
b.ready().then(function() {
var d = b._dbInfo;
d.db.transaction(function(b) {
T(b, d, "SELECT key FROM " + d.storeName, [], function(b, c) {
for (var d = [], e = 0; e < c.rows.length; e++)
d.push(c.rows.item(e).key);
a(d)
}, function(a, b) {
c(b)
})
})
}).catch(c)
}
);
return h(c, a),
c
}
function ba(a) {
return new va(function(b, c) {
a.transaction(function(d) {
d.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'", [], function(c, d) {
for (var e = [], f = 0; f < d.rows.length; f++)
e.push(d.rows.item(f).name);
b({
db: a,
storeNames: e
})
}, function(a, b) {
c(b)
})
}, function(a) {
c(a)
})
}
)
}
function ca(a, b) {
b = k.apply(this, arguments);
var c = this.config();
a = "function" != typeof a && a || {},
a.name || (a.name = a.name || c.name,
a.storeName = a.storeName || c.storeName);
var d, e = this;
return d = a.name ? new va(function(b) {
var d;
d = a.name === c.name ? e._dbInfo.db : openDatabase(a.name, "", "", 0),
b(a.storeName ? {
db: d,
storeNames: [a.storeName]
} : ba(d))
}
).then(function(a) {
return new va(function(b, c) {
a.db.transaction(function(d) {
function e(a) {
return new va(function(b, c) {
d.executeSql("DROP TABLE IF EXISTS " + a, [], function() {
b()
}, function(a, b) {
c(b)
})
}
)
}
for (var f = [], g = 0, h = a.storeNames.length; g < h; g++)
f.push(e(a.storeNames[g]));
va.all(f).then(function() {
b()
}).catch(function(a) {
c(a)
})
}, function(a) {
c(a)
})
}
)
}) : va.reject("Invalid arguments"),
h(d, b),
d
}
function da() {
try {
return "undefined" != typeof localStorage && "setItem"in localStorage && !!localStorage.setItem
} catch (a) {
return !1
}
}
function ea(a, b) {
var c = a.name + "/";
return a.storeName !== b.storeName && (c += a.storeName + "/"),
c
}
function fa() {
var a = "_localforage_support_test";
try {
return localStorage.setItem(a, !0),
localStorage.removeItem(a),
!1
} catch (a) {
return !0
}
}
function ga() {
return !fa() || localStorage.length > 0
}
function ha(a) {
var b = this
, c = {};
if (a)
for (var d in a)
c[d] = a[d];
return c.keyPrefix = ea(a, b._defaultConfig),
ga() ? (b._dbInfo = c,
c.serializer = Va,
va.resolve()) : va.reject()
}
function ia(a) {
var b = this
, c = b.ready().then(function() {
for (var a = b._dbInfo.keyPrefix, c = localStorage.length - 1; c >= 0; c--) {
var d = localStorage.key(c);
0 === d.indexOf(a) && localStorage.removeItem(d)
}
});
return h(c, a),
c
}
function ja(a, b) {
var c = this;
a = j(a);
var d = c.ready().then(function() {
var b = c._dbInfo
, d = localStorage.getItem(b.keyPrefix + a);
return d && (d = b.serializer.deserialize(d)),
d
});
return h(d, b),
d
}
function ka(a, b) {
var c = this
, d = c.ready().then(function() {
for (var b = c._dbInfo, d = b.keyPrefix, e = d.length, f = localStorage.length, g = 1, h = 0; h < f; h++) {
var i = localStorage.key(h);
if (0 === i.indexOf(d)) {
var j = localStorage.getItem(i);
if (j && (j = b.serializer.deserialize(j)),
void 0 !== (j = a(j, i.substring(e), g++)))
return j
}
}
});
return h(d, b),
d
}
function la(a, b) {
var c = this
, d = c.ready().then(function() {
var b, d = c._dbInfo;
try {
b = localStorage.key(a)
} catch (a) {
b = null
}
return b && (b = b.substring(d.keyPrefix.length)),
b
});
return h(d, b),
d
}
function ma(a) {
var b = this
, c = b.ready().then(function() {
for (var a = b._dbInfo, c = localStorage.length, d = [], e = 0; e < c; e++) {
var f = localStorage.key(e);
0 === f.indexOf(a.keyPrefix) && d.push(f.substring(a.keyPrefix.length))
}
return d
});
return h(c, a),
c
}
function na(a) {
var b = this
, c = b.keys().then(function(a) {
return a.length
});
return h(c, a),
c
}
function oa(a, b) {
var c = this;
a = j(a);
var d = c.ready().then(function() {
var b = c._dbInfo;
localStorage.removeItem(b.keyPrefix + a)
});
return h(d, b),
d
}
function pa(a, b, c) {
var d = this;
a = j(a);
var e = d.ready().then(function() {
void 0 === b && (b = null);
var c = b;
return new va(function(e, f) {
var g = d._dbInfo;
g.serializer.serialize(b, function(b, d) {
if (d)
f(d);
else
try {
localStorage.setItem(g.keyPrefix + a, b),
e(c)
} catch (a) {
"QuotaExceededError" !== a.name && "NS_ERROR_DOM_QUOTA_REACHED" !== a.name || f(a),
f(a)
}
})
}
)
});
return h(e, c),
e
}
function qa(a, b) {
if (b = k.apply(this, arguments),
a = "function" != typeof a && a || {},
!a.name) {
var c = this.config();
a.name = a.name || c.name,
a.storeName = a.storeName || c.storeName
}
var d, e = this;
return d = a.name ? new va(function(b) {
b(a.storeName ? ea(a, e._defaultConfig) : a.name + "/")
}
).then(function(a) {
for (var b = localStorage.length - 1; b >= 0; b--) {
var c = localStorage.key(b);
0 === c.indexOf(a) && localStorage.removeItem(c)
}
}) : va.reject("Invalid arguments"),
h(d, b),
d
}
function ra(a, b) {
a[b] = function() {
var c = arguments;
return a.ready().then(function() {
return a[b].apply(a, c)
})
}
}
function sa() {
for (var a = 1; a < arguments.length; a++) {
var b = arguments[a];
if (b)
for (var c in b)
b.hasOwnProperty(c) && ($a(b[c]) ? arguments[0][c] = b[c].slice() : arguments[0][c] = b[c])
}
return arguments[0]
}
var ta = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(a) {
return typeof a
}
: function(a) {
return a && "function" == typeof Symbol && a.constructor === Symbol && a !== Symbol.prototype ? "symbol" : typeof a
}
, ua = e();
"undefined" == typeof Promise && a(3);
var va = Promise
, wa = "local-forage-detect-blob-support"
, xa = void 0
, ya = {}
, za = Object.prototype.toString
, Aa = "readonly"
, Ba = "readwrite"
, Ca = {
_driver: "asyncStorage",
_initStorage: C,
_support: f(),
iterate: E,
getItem: D,
setItem: F,
removeItem: G,
clear: H,
length: I,
key: J,
keys: K,
dropInstance: L
}
, Da = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
, Ea = "~~local_forage_type~"
, Fa = /^~~local_forage_type~([^~]+)~/
, Ga = "__lfsc__:"
, Ha = Ga.length
, Ia = "arbf"
, Ja = "blob"
, Ka = "si08"
, La = "ui08"
, Ma = "uic8"
, Na = "si16"
, Oa = "si32"
, Pa = "ur16"
, Qa = "ui32"
, Ra = "fl32"
, Sa = "fl64"
, Ta = Ha + Ia.length
, Ua = Object.prototype.toString
, Va = {
serialize: P,
deserialize: Q,
stringToBuffer: N,
bufferToString: O
}
, Wa = {
_driver: "webSQLStorage",
_initStorage: S,
_support: M(),
iterate: V,
getItem: U,
setItem: X,
removeItem: Y,
clear: Z,
length: $,
key: _,
keys: aa,
dropInstance: ca
}
, Xa = {
_driver: "localStorageWrapper",
_initStorage: ha,
_support: da(),
iterate: ka,
getItem: ja,
setItem: pa,
removeItem: oa,
clear: ia,
length: na,
key: la,
keys: ma,
dropInstance: qa
}
, Ya = function(a, b) {
return a === b || "number" == typeof a && "number" == typeof b && isNaN(a) && isNaN(b)
}
, Za = function(a, b) {
for (var c = a.length, d = 0; d < c; ) {
if (Ya(a[d], b))
return !0;
d++
}
return !1
}
, $a = Array.isArray || function(a) {
return "[object Array]" === Object.prototype.toString.call(a)
}
, _a = {}
, ab = {}
, bb = {
INDEXEDDB: Ca,
WEBSQL: Wa,
LOCALSTORAGE: Xa
}
, cb = [bb.INDEXEDDB._driver, bb.WEBSQL._driver, bb.LOCALSTORAGE._driver]
, db = ["dropInstance"]
, eb = ["clear", "getItem", "iterate", "key", "keys", "length", "removeItem", "setItem"].concat(db)
, fb = {
description: "",
driver: cb.slice(),
name: "localforage",
size: 4980736,
storeName: "keyvaluepairs",
version: 1
}
, gb = function() {
function a(b) {
d(this, a);
for (var c in bb)
if (bb.hasOwnProperty(c)) {
var e = bb[c]
, f = e._driver;
this[c] = f,
_a[f] || this.defineDriver(e)
}
this._defaultConfig = sa({}, fb),
this._config = sa({}, this._defaultConfig, b),
this._driverSet = null,
this._initDriver = null,
this._ready = !1,
this._dbInfo = null,
this._wrapLibraryMethodsWithReady(),
this.setDriver(this._config.driver).catch(function() {})
}
return a.prototype.config = function(a) {
if ("object" === (void 0 === a ? "undefined" : ta(a))) {
if (this._ready)
return new Error("Can't call config() after localforage has been used.");
for (var b in a) {
if ("storeName" === b && (a[b] = a[b].replace(/\W/g, "_")),
"version" === b && "number" != typeof a[b])
return new Error("Database version must be a number.");
this._config[b] = a[b]
}
return !("driver"in a && a.driver) || this.setDriver(this._config.driver)
}
return "string" == typeof a ? this._config[a] : this._config
}
,
a.prototype.defineDriver = function(a, b, c) {
var d = new va(function(b, c) {
try {
var d = a._driver
, e = new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver");
if (!a._driver)
return void c(e);
for (var f = eb.concat("_initStorage"), g = 0, i = f.length; g < i; g++) {
var j = f[g];
if ((!Za(db, j) || a[j]) && "function" != typeof a[j])
return void c(e)
}
(function() {
for (var b = function(a) {
return function() {
var b = new Error("Method " + a + " is not implemented by the current driver")
, c = va.reject(b);
return h(c, arguments[arguments.length - 1]),
c
}
}, c = 0, d = db.length; c < d; c++) {
var e = db[c];
a[e] || (a[e] = b(e))
}
}
)();
var k = function(c) {
_a[d] && console.info("Redefining LocalForage driver: " + d),
_a[d] = a,
ab[d] = c,
b()
};
"_support"in a ? a._support && "function" == typeof a._support ? a._support().then(k, c) : k(!!a._support) : k(!0)
} catch (a) {
c(a)
}
}
);
return i(d, b, c),
d
}
,
a.prototype.driver = function() {
return this._driver || null
}
,
a.prototype.getDriver = function(a, b, c) {
var d = _a[a] ? va.resolve(_a[a]) : va.reject(new Error("Driver not found."));
return i(d, b, c),
d
}
,
a.prototype.getSerializer = function(a) {
var b = va.resolve(Va);
return i(b, a),
b
}
,
a.prototype.ready = function(a) {
var b = this
, c = b._driverSet.then(function() {
return null === b._ready && (b._ready = b._initDriver()),
b._ready
});
return i(c, a, a),
c
}
,
a.prototype.setDriver = function(a, b, c) {
function d() {
g._config.driver = g.driver()
}
function e(a) {
return g._extend(a),
d(),
g._ready = g._initStorage(g._config),
g._ready
}
function f(a) {
return function() {
function b() {
for (; c < a.length; ) {
var f = a[c];
return c++,
g._dbInfo = null,
g._ready = null,
g.getDriver(f).then(e).catch(b)
}
d();
var h = new Error("No available storage method found.");
return g._driverSet = va.reject(h),
g._driverSet
}
var c = 0;
return b()
}
}
var g = this;
$a(a) || (a = [a]);
var h = this._getSupportedDrivers(a)
, j = null !== this._driverSet ? this._driverSet.catch(function() {
return va.resolve()
}) : va.resolve();
return this._driverSet = j.then(function() {
var a = h[0];
return g._dbInfo = null,
g._ready = null,
g.getDriver(a).then(function(a) {
g._driver = a._driver,
d(),
g._wrapLibraryMethodsWithReady(),
g._initDriver = f(h)
})
}).catch(function() {
d();
var a = new Error("No available storage method found.");
return g._driverSet = va.reject(a),
g._driverSet
}),
i(this._driverSet, b, c),
this._driverSet
}
,
a.prototype.supports = function(a) {
return !!ab[a]
}
,
a.prototype._extend = function(a) {
sa(this, a)
}
,
a.prototype._getSupportedDrivers = function(a) {
for (var b = [], c = 0, d = a.length; c < d; c++) {
var e = a[c];
this.supports(e) && b.push(e)
}
return b
}
,
a.prototype._wrapLibraryMethodsWithReady = function() {
for (var a = 0, b = eb.length; a < b; a++)
ra(this, eb[a])
}
,
a.prototype.createInstance = function(b) {
return new a(b)
}
,
a
}()
, hb = new gb;
b.exports = hb
}
, {
3: 3
}]
}, {}, [4])(4)
});