magic-sdk 29.4.1-canary.913.16658556087.0 → 29.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +1 -2773
- package/dist/cjs/index.js.map +2 -2
- package/dist/es/index.js +1 -2770
- package/dist/es/index.js.map +2 -2
- package/dist/es/index.mjs +1 -2770
- package/dist/es/index.mjs.map +2 -2
- package/dist/magic.js +5 -5459
- package/package.json +4 -4
package/dist/cjs/index.js
CHANGED
@@ -1,2774 +1,2 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __create = Object.create;
|
3
|
-
var __defProp = Object.defineProperty;
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
8
|
-
var __commonJS = (cb, mod) => function __require() {
|
9
|
-
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
10
|
-
};
|
11
|
-
var __export = (target, all) => {
|
12
|
-
for (var name in all)
|
13
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
14
|
-
};
|
15
|
-
var __copyProps = (to, from, except, desc) => {
|
16
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
17
|
-
for (let key of __getOwnPropNames(from))
|
18
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
19
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
20
|
-
}
|
21
|
-
return to;
|
22
|
-
};
|
23
|
-
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
24
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
25
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
26
|
-
// file that has been converted to a CommonJS file using a Babel-
|
27
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
28
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
29
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
30
|
-
mod
|
31
|
-
));
|
32
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
33
|
-
|
34
|
-
// node_modules/localforage/dist/localforage.js
|
35
|
-
var require_localforage = __commonJS({
|
36
|
-
"node_modules/localforage/dist/localforage.js"(exports, module2) {
|
37
|
-
"use strict";
|
38
|
-
(function(f) {
|
39
|
-
if (typeof exports === "object" && typeof module2 !== "undefined") {
|
40
|
-
module2.exports = f();
|
41
|
-
} else if (typeof define === "function" && define.amd) {
|
42
|
-
define([], f);
|
43
|
-
} else {
|
44
|
-
var g;
|
45
|
-
if (typeof window !== "undefined") {
|
46
|
-
g = window;
|
47
|
-
} else if (typeof global !== "undefined") {
|
48
|
-
g = global;
|
49
|
-
} else if (typeof self !== "undefined") {
|
50
|
-
g = self;
|
51
|
-
} else {
|
52
|
-
g = this;
|
53
|
-
}
|
54
|
-
g.localforage = f();
|
55
|
-
}
|
56
|
-
})(function() {
|
57
|
-
var define2, module3, exports2;
|
58
|
-
return function e(t, n, r) {
|
59
|
-
function s(o2, u) {
|
60
|
-
if (!n[o2]) {
|
61
|
-
if (!t[o2]) {
|
62
|
-
var a = typeof require == "function" && require;
|
63
|
-
if (!u && a) return a(o2, true);
|
64
|
-
if (i) return i(o2, true);
|
65
|
-
var f = new Error("Cannot find module '" + o2 + "'");
|
66
|
-
throw f.code = "MODULE_NOT_FOUND", f;
|
67
|
-
}
|
68
|
-
var l = n[o2] = { exports: {} };
|
69
|
-
t[o2][0].call(l.exports, function(e2) {
|
70
|
-
var n2 = t[o2][1][e2];
|
71
|
-
return s(n2 ? n2 : e2);
|
72
|
-
}, l, l.exports, e, t, n, r);
|
73
|
-
}
|
74
|
-
return n[o2].exports;
|
75
|
-
}
|
76
|
-
var i = typeof require == "function" && require;
|
77
|
-
for (var o = 0; o < r.length; o++) s(r[o]);
|
78
|
-
return s;
|
79
|
-
}({ 1: [function(_dereq_, module4, exports3) {
|
80
|
-
(function(global2) {
|
81
|
-
"use strict";
|
82
|
-
var Mutation = global2.MutationObserver || global2.WebKitMutationObserver;
|
83
|
-
var scheduleDrain;
|
84
|
-
{
|
85
|
-
if (Mutation) {
|
86
|
-
var called = 0;
|
87
|
-
var observer = new Mutation(nextTick);
|
88
|
-
var element = global2.document.createTextNode("");
|
89
|
-
observer.observe(element, {
|
90
|
-
characterData: true
|
91
|
-
});
|
92
|
-
scheduleDrain = function() {
|
93
|
-
element.data = called = ++called % 2;
|
94
|
-
};
|
95
|
-
} else if (!global2.setImmediate && typeof global2.MessageChannel !== "undefined") {
|
96
|
-
var channel = new global2.MessageChannel();
|
97
|
-
channel.port1.onmessage = nextTick;
|
98
|
-
scheduleDrain = function() {
|
99
|
-
channel.port2.postMessage(0);
|
100
|
-
};
|
101
|
-
} else if ("document" in global2 && "onreadystatechange" in global2.document.createElement("script")) {
|
102
|
-
scheduleDrain = function() {
|
103
|
-
var scriptEl = global2.document.createElement("script");
|
104
|
-
scriptEl.onreadystatechange = function() {
|
105
|
-
nextTick();
|
106
|
-
scriptEl.onreadystatechange = null;
|
107
|
-
scriptEl.parentNode.removeChild(scriptEl);
|
108
|
-
scriptEl = null;
|
109
|
-
};
|
110
|
-
global2.document.documentElement.appendChild(scriptEl);
|
111
|
-
};
|
112
|
-
} else {
|
113
|
-
scheduleDrain = function() {
|
114
|
-
setTimeout(nextTick, 0);
|
115
|
-
};
|
116
|
-
}
|
117
|
-
}
|
118
|
-
var draining;
|
119
|
-
var queue = [];
|
120
|
-
function nextTick() {
|
121
|
-
draining = true;
|
122
|
-
var i, oldQueue;
|
123
|
-
var len = queue.length;
|
124
|
-
while (len) {
|
125
|
-
oldQueue = queue;
|
126
|
-
queue = [];
|
127
|
-
i = -1;
|
128
|
-
while (++i < len) {
|
129
|
-
oldQueue[i]();
|
130
|
-
}
|
131
|
-
len = queue.length;
|
132
|
-
}
|
133
|
-
draining = false;
|
134
|
-
}
|
135
|
-
module4.exports = immediate;
|
136
|
-
function immediate(task) {
|
137
|
-
if (queue.push(task) === 1 && !draining) {
|
138
|
-
scheduleDrain();
|
139
|
-
}
|
140
|
-
}
|
141
|
-
}).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {});
|
142
|
-
}, {}], 2: [function(_dereq_, module4, exports3) {
|
143
|
-
"use strict";
|
144
|
-
var immediate = _dereq_(1);
|
145
|
-
function INTERNAL() {
|
146
|
-
}
|
147
|
-
var handlers = {};
|
148
|
-
var REJECTED = ["REJECTED"];
|
149
|
-
var FULFILLED = ["FULFILLED"];
|
150
|
-
var PENDING = ["PENDING"];
|
151
|
-
module4.exports = Promise2;
|
152
|
-
function Promise2(resolver) {
|
153
|
-
if (typeof resolver !== "function") {
|
154
|
-
throw new TypeError("resolver must be a function");
|
155
|
-
}
|
156
|
-
this.state = PENDING;
|
157
|
-
this.queue = [];
|
158
|
-
this.outcome = void 0;
|
159
|
-
if (resolver !== INTERNAL) {
|
160
|
-
safelyResolveThenable(this, resolver);
|
161
|
-
}
|
162
|
-
}
|
163
|
-
Promise2.prototype["catch"] = function(onRejected) {
|
164
|
-
return this.then(null, onRejected);
|
165
|
-
};
|
166
|
-
Promise2.prototype.then = function(onFulfilled, onRejected) {
|
167
|
-
if (typeof onFulfilled !== "function" && this.state === FULFILLED || typeof onRejected !== "function" && this.state === REJECTED) {
|
168
|
-
return this;
|
169
|
-
}
|
170
|
-
var promise = new this.constructor(INTERNAL);
|
171
|
-
if (this.state !== PENDING) {
|
172
|
-
var resolver = this.state === FULFILLED ? onFulfilled : onRejected;
|
173
|
-
unwrap(promise, resolver, this.outcome);
|
174
|
-
} else {
|
175
|
-
this.queue.push(new QueueItem(promise, onFulfilled, onRejected));
|
176
|
-
}
|
177
|
-
return promise;
|
178
|
-
};
|
179
|
-
function QueueItem(promise, onFulfilled, onRejected) {
|
180
|
-
this.promise = promise;
|
181
|
-
if (typeof onFulfilled === "function") {
|
182
|
-
this.onFulfilled = onFulfilled;
|
183
|
-
this.callFulfilled = this.otherCallFulfilled;
|
184
|
-
}
|
185
|
-
if (typeof onRejected === "function") {
|
186
|
-
this.onRejected = onRejected;
|
187
|
-
this.callRejected = this.otherCallRejected;
|
188
|
-
}
|
189
|
-
}
|
190
|
-
QueueItem.prototype.callFulfilled = function(value) {
|
191
|
-
handlers.resolve(this.promise, value);
|
192
|
-
};
|
193
|
-
QueueItem.prototype.otherCallFulfilled = function(value) {
|
194
|
-
unwrap(this.promise, this.onFulfilled, value);
|
195
|
-
};
|
196
|
-
QueueItem.prototype.callRejected = function(value) {
|
197
|
-
handlers.reject(this.promise, value);
|
198
|
-
};
|
199
|
-
QueueItem.prototype.otherCallRejected = function(value) {
|
200
|
-
unwrap(this.promise, this.onRejected, value);
|
201
|
-
};
|
202
|
-
function unwrap(promise, func, value) {
|
203
|
-
immediate(function() {
|
204
|
-
var returnValue;
|
205
|
-
try {
|
206
|
-
returnValue = func(value);
|
207
|
-
} catch (e) {
|
208
|
-
return handlers.reject(promise, e);
|
209
|
-
}
|
210
|
-
if (returnValue === promise) {
|
211
|
-
handlers.reject(promise, new TypeError("Cannot resolve promise with itself"));
|
212
|
-
} else {
|
213
|
-
handlers.resolve(promise, returnValue);
|
214
|
-
}
|
215
|
-
});
|
216
|
-
}
|
217
|
-
handlers.resolve = function(self2, value) {
|
218
|
-
var result = tryCatch(getThen, value);
|
219
|
-
if (result.status === "error") {
|
220
|
-
return handlers.reject(self2, result.value);
|
221
|
-
}
|
222
|
-
var thenable = result.value;
|
223
|
-
if (thenable) {
|
224
|
-
safelyResolveThenable(self2, thenable);
|
225
|
-
} else {
|
226
|
-
self2.state = FULFILLED;
|
227
|
-
self2.outcome = value;
|
228
|
-
var i = -1;
|
229
|
-
var len = self2.queue.length;
|
230
|
-
while (++i < len) {
|
231
|
-
self2.queue[i].callFulfilled(value);
|
232
|
-
}
|
233
|
-
}
|
234
|
-
return self2;
|
235
|
-
};
|
236
|
-
handlers.reject = function(self2, error) {
|
237
|
-
self2.state = REJECTED;
|
238
|
-
self2.outcome = error;
|
239
|
-
var i = -1;
|
240
|
-
var len = self2.queue.length;
|
241
|
-
while (++i < len) {
|
242
|
-
self2.queue[i].callRejected(error);
|
243
|
-
}
|
244
|
-
return self2;
|
245
|
-
};
|
246
|
-
function getThen(obj) {
|
247
|
-
var then = obj && obj.then;
|
248
|
-
if (obj && (typeof obj === "object" || typeof obj === "function") && typeof then === "function") {
|
249
|
-
return function appyThen() {
|
250
|
-
then.apply(obj, arguments);
|
251
|
-
};
|
252
|
-
}
|
253
|
-
}
|
254
|
-
function safelyResolveThenable(self2, thenable) {
|
255
|
-
var called = false;
|
256
|
-
function onError(value) {
|
257
|
-
if (called) {
|
258
|
-
return;
|
259
|
-
}
|
260
|
-
called = true;
|
261
|
-
handlers.reject(self2, value);
|
262
|
-
}
|
263
|
-
function onSuccess(value) {
|
264
|
-
if (called) {
|
265
|
-
return;
|
266
|
-
}
|
267
|
-
called = true;
|
268
|
-
handlers.resolve(self2, value);
|
269
|
-
}
|
270
|
-
function tryToUnwrap() {
|
271
|
-
thenable(onSuccess, onError);
|
272
|
-
}
|
273
|
-
var result = tryCatch(tryToUnwrap);
|
274
|
-
if (result.status === "error") {
|
275
|
-
onError(result.value);
|
276
|
-
}
|
277
|
-
}
|
278
|
-
function tryCatch(func, value) {
|
279
|
-
var out = {};
|
280
|
-
try {
|
281
|
-
out.value = func(value);
|
282
|
-
out.status = "success";
|
283
|
-
} catch (e) {
|
284
|
-
out.status = "error";
|
285
|
-
out.value = e;
|
286
|
-
}
|
287
|
-
return out;
|
288
|
-
}
|
289
|
-
Promise2.resolve = resolve;
|
290
|
-
function resolve(value) {
|
291
|
-
if (value instanceof this) {
|
292
|
-
return value;
|
293
|
-
}
|
294
|
-
return handlers.resolve(new this(INTERNAL), value);
|
295
|
-
}
|
296
|
-
Promise2.reject = reject;
|
297
|
-
function reject(reason) {
|
298
|
-
var promise = new this(INTERNAL);
|
299
|
-
return handlers.reject(promise, reason);
|
300
|
-
}
|
301
|
-
Promise2.all = all;
|
302
|
-
function all(iterable) {
|
303
|
-
var self2 = this;
|
304
|
-
if (Object.prototype.toString.call(iterable) !== "[object Array]") {
|
305
|
-
return this.reject(new TypeError("must be an array"));
|
306
|
-
}
|
307
|
-
var len = iterable.length;
|
308
|
-
var called = false;
|
309
|
-
if (!len) {
|
310
|
-
return this.resolve([]);
|
311
|
-
}
|
312
|
-
var values = new Array(len);
|
313
|
-
var resolved = 0;
|
314
|
-
var i = -1;
|
315
|
-
var promise = new this(INTERNAL);
|
316
|
-
while (++i < len) {
|
317
|
-
allResolver(iterable[i], i);
|
318
|
-
}
|
319
|
-
return promise;
|
320
|
-
function allResolver(value, i2) {
|
321
|
-
self2.resolve(value).then(resolveFromAll, function(error) {
|
322
|
-
if (!called) {
|
323
|
-
called = true;
|
324
|
-
handlers.reject(promise, error);
|
325
|
-
}
|
326
|
-
});
|
327
|
-
function resolveFromAll(outValue) {
|
328
|
-
values[i2] = outValue;
|
329
|
-
if (++resolved === len && !called) {
|
330
|
-
called = true;
|
331
|
-
handlers.resolve(promise, values);
|
332
|
-
}
|
333
|
-
}
|
334
|
-
}
|
335
|
-
}
|
336
|
-
Promise2.race = race;
|
337
|
-
function race(iterable) {
|
338
|
-
var self2 = this;
|
339
|
-
if (Object.prototype.toString.call(iterable) !== "[object Array]") {
|
340
|
-
return this.reject(new TypeError("must be an array"));
|
341
|
-
}
|
342
|
-
var len = iterable.length;
|
343
|
-
var called = false;
|
344
|
-
if (!len) {
|
345
|
-
return this.resolve([]);
|
346
|
-
}
|
347
|
-
var i = -1;
|
348
|
-
var promise = new this(INTERNAL);
|
349
|
-
while (++i < len) {
|
350
|
-
resolver(iterable[i]);
|
351
|
-
}
|
352
|
-
return promise;
|
353
|
-
function resolver(value) {
|
354
|
-
self2.resolve(value).then(function(response) {
|
355
|
-
if (!called) {
|
356
|
-
called = true;
|
357
|
-
handlers.resolve(promise, response);
|
358
|
-
}
|
359
|
-
}, function(error) {
|
360
|
-
if (!called) {
|
361
|
-
called = true;
|
362
|
-
handlers.reject(promise, error);
|
363
|
-
}
|
364
|
-
});
|
365
|
-
}
|
366
|
-
}
|
367
|
-
}, { "1": 1 }], 3: [function(_dereq_, module4, exports3) {
|
368
|
-
(function(global2) {
|
369
|
-
"use strict";
|
370
|
-
if (typeof global2.Promise !== "function") {
|
371
|
-
global2.Promise = _dereq_(2);
|
372
|
-
}
|
373
|
-
}).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {});
|
374
|
-
}, { "2": 2 }], 4: [function(_dereq_, module4, exports3) {
|
375
|
-
"use strict";
|
376
|
-
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) {
|
377
|
-
return typeof obj;
|
378
|
-
} : function(obj) {
|
379
|
-
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
380
|
-
};
|
381
|
-
function _classCallCheck(instance, Constructor) {
|
382
|
-
if (!(instance instanceof Constructor)) {
|
383
|
-
throw new TypeError("Cannot call a class as a function");
|
384
|
-
}
|
385
|
-
}
|
386
|
-
function getIDB() {
|
387
|
-
try {
|
388
|
-
if (typeof indexedDB !== "undefined") {
|
389
|
-
return indexedDB;
|
390
|
-
}
|
391
|
-
if (typeof webkitIndexedDB !== "undefined") {
|
392
|
-
return webkitIndexedDB;
|
393
|
-
}
|
394
|
-
if (typeof mozIndexedDB !== "undefined") {
|
395
|
-
return mozIndexedDB;
|
396
|
-
}
|
397
|
-
if (typeof OIndexedDB !== "undefined") {
|
398
|
-
return OIndexedDB;
|
399
|
-
}
|
400
|
-
if (typeof msIndexedDB !== "undefined") {
|
401
|
-
return msIndexedDB;
|
402
|
-
}
|
403
|
-
} catch (e) {
|
404
|
-
return;
|
405
|
-
}
|
406
|
-
}
|
407
|
-
var idb = getIDB();
|
408
|
-
function isIndexedDBValid() {
|
409
|
-
try {
|
410
|
-
if (!idb || !idb.open) {
|
411
|
-
return false;
|
412
|
-
}
|
413
|
-
var isSafari = typeof openDatabase !== "undefined" && /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(navigator.platform);
|
414
|
-
var hasFetch = typeof fetch === "function" && fetch.toString().indexOf("[native code") !== -1;
|
415
|
-
return (!isSafari || hasFetch) && typeof indexedDB !== "undefined" && // some outdated implementations of IDB that appear on Samsung
|
416
|
-
// and HTC Android devices <4.4 are missing IDBKeyRange
|
417
|
-
// See: https://github.com/mozilla/localForage/issues/128
|
418
|
-
// See: https://github.com/mozilla/localForage/issues/272
|
419
|
-
typeof IDBKeyRange !== "undefined";
|
420
|
-
} catch (e) {
|
421
|
-
return false;
|
422
|
-
}
|
423
|
-
}
|
424
|
-
function createBlob(parts, properties) {
|
425
|
-
parts = parts || [];
|
426
|
-
properties = properties || {};
|
427
|
-
try {
|
428
|
-
return new Blob(parts, properties);
|
429
|
-
} catch (e) {
|
430
|
-
if (e.name !== "TypeError") {
|
431
|
-
throw e;
|
432
|
-
}
|
433
|
-
var Builder = typeof BlobBuilder !== "undefined" ? BlobBuilder : typeof MSBlobBuilder !== "undefined" ? MSBlobBuilder : typeof MozBlobBuilder !== "undefined" ? MozBlobBuilder : WebKitBlobBuilder;
|
434
|
-
var builder = new Builder();
|
435
|
-
for (var i = 0; i < parts.length; i += 1) {
|
436
|
-
builder.append(parts[i]);
|
437
|
-
}
|
438
|
-
return builder.getBlob(properties.type);
|
439
|
-
}
|
440
|
-
}
|
441
|
-
if (typeof Promise === "undefined") {
|
442
|
-
_dereq_(3);
|
443
|
-
}
|
444
|
-
var Promise$1 = Promise;
|
445
|
-
function executeCallback(promise, callback) {
|
446
|
-
if (callback) {
|
447
|
-
promise.then(function(result) {
|
448
|
-
callback(null, result);
|
449
|
-
}, function(error) {
|
450
|
-
callback(error);
|
451
|
-
});
|
452
|
-
}
|
453
|
-
}
|
454
|
-
function executeTwoCallbacks(promise, callback, errorCallback) {
|
455
|
-
if (typeof callback === "function") {
|
456
|
-
promise.then(callback);
|
457
|
-
}
|
458
|
-
if (typeof errorCallback === "function") {
|
459
|
-
promise["catch"](errorCallback);
|
460
|
-
}
|
461
|
-
}
|
462
|
-
function normalizeKey(key2) {
|
463
|
-
if (typeof key2 !== "string") {
|
464
|
-
console.warn(key2 + " used as a key, but it is not a string.");
|
465
|
-
key2 = String(key2);
|
466
|
-
}
|
467
|
-
return key2;
|
468
|
-
}
|
469
|
-
function getCallback() {
|
470
|
-
if (arguments.length && typeof arguments[arguments.length - 1] === "function") {
|
471
|
-
return arguments[arguments.length - 1];
|
472
|
-
}
|
473
|
-
}
|
474
|
-
var DETECT_BLOB_SUPPORT_STORE = "local-forage-detect-blob-support";
|
475
|
-
var supportsBlobs = void 0;
|
476
|
-
var dbContexts = {};
|
477
|
-
var toString = Object.prototype.toString;
|
478
|
-
var READ_ONLY = "readonly";
|
479
|
-
var READ_WRITE = "readwrite";
|
480
|
-
function _binStringToArrayBuffer(bin) {
|
481
|
-
var length2 = bin.length;
|
482
|
-
var buf = new ArrayBuffer(length2);
|
483
|
-
var arr = new Uint8Array(buf);
|
484
|
-
for (var i = 0; i < length2; i++) {
|
485
|
-
arr[i] = bin.charCodeAt(i);
|
486
|
-
}
|
487
|
-
return buf;
|
488
|
-
}
|
489
|
-
function _checkBlobSupportWithoutCaching(idb2) {
|
490
|
-
return new Promise$1(function(resolve) {
|
491
|
-
var txn = idb2.transaction(DETECT_BLOB_SUPPORT_STORE, READ_WRITE);
|
492
|
-
var blob = createBlob([""]);
|
493
|
-
txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob, "key");
|
494
|
-
txn.onabort = function(e) {
|
495
|
-
e.preventDefault();
|
496
|
-
e.stopPropagation();
|
497
|
-
resolve(false);
|
498
|
-
};
|
499
|
-
txn.oncomplete = function() {
|
500
|
-
var matchedChrome = navigator.userAgent.match(/Chrome\/(\d+)/);
|
501
|
-
var matchedEdge = navigator.userAgent.match(/Edge\//);
|
502
|
-
resolve(matchedEdge || !matchedChrome || parseInt(matchedChrome[1], 10) >= 43);
|
503
|
-
};
|
504
|
-
})["catch"](function() {
|
505
|
-
return false;
|
506
|
-
});
|
507
|
-
}
|
508
|
-
function _checkBlobSupport(idb2) {
|
509
|
-
if (typeof supportsBlobs === "boolean") {
|
510
|
-
return Promise$1.resolve(supportsBlobs);
|
511
|
-
}
|
512
|
-
return _checkBlobSupportWithoutCaching(idb2).then(function(value) {
|
513
|
-
supportsBlobs = value;
|
514
|
-
return supportsBlobs;
|
515
|
-
});
|
516
|
-
}
|
517
|
-
function _deferReadiness(dbInfo) {
|
518
|
-
var dbContext = dbContexts[dbInfo.name];
|
519
|
-
var deferredOperation = {};
|
520
|
-
deferredOperation.promise = new Promise$1(function(resolve, reject) {
|
521
|
-
deferredOperation.resolve = resolve;
|
522
|
-
deferredOperation.reject = reject;
|
523
|
-
});
|
524
|
-
dbContext.deferredOperations.push(deferredOperation);
|
525
|
-
if (!dbContext.dbReady) {
|
526
|
-
dbContext.dbReady = deferredOperation.promise;
|
527
|
-
} else {
|
528
|
-
dbContext.dbReady = dbContext.dbReady.then(function() {
|
529
|
-
return deferredOperation.promise;
|
530
|
-
});
|
531
|
-
}
|
532
|
-
}
|
533
|
-
function _advanceReadiness(dbInfo) {
|
534
|
-
var dbContext = dbContexts[dbInfo.name];
|
535
|
-
var deferredOperation = dbContext.deferredOperations.pop();
|
536
|
-
if (deferredOperation) {
|
537
|
-
deferredOperation.resolve();
|
538
|
-
return deferredOperation.promise;
|
539
|
-
}
|
540
|
-
}
|
541
|
-
function _rejectReadiness(dbInfo, err) {
|
542
|
-
var dbContext = dbContexts[dbInfo.name];
|
543
|
-
var deferredOperation = dbContext.deferredOperations.pop();
|
544
|
-
if (deferredOperation) {
|
545
|
-
deferredOperation.reject(err);
|
546
|
-
return deferredOperation.promise;
|
547
|
-
}
|
548
|
-
}
|
549
|
-
function _getConnection(dbInfo, upgradeNeeded) {
|
550
|
-
return new Promise$1(function(resolve, reject) {
|
551
|
-
dbContexts[dbInfo.name] = dbContexts[dbInfo.name] || createDbContext();
|
552
|
-
if (dbInfo.db) {
|
553
|
-
if (upgradeNeeded) {
|
554
|
-
_deferReadiness(dbInfo);
|
555
|
-
dbInfo.db.close();
|
556
|
-
} else {
|
557
|
-
return resolve(dbInfo.db);
|
558
|
-
}
|
559
|
-
}
|
560
|
-
var dbArgs = [dbInfo.name];
|
561
|
-
if (upgradeNeeded) {
|
562
|
-
dbArgs.push(dbInfo.version);
|
563
|
-
}
|
564
|
-
var openreq = idb.open.apply(idb, dbArgs);
|
565
|
-
if (upgradeNeeded) {
|
566
|
-
openreq.onupgradeneeded = function(e) {
|
567
|
-
var db = openreq.result;
|
568
|
-
try {
|
569
|
-
db.createObjectStore(dbInfo.storeName);
|
570
|
-
if (e.oldVersion <= 1) {
|
571
|
-
db.createObjectStore(DETECT_BLOB_SUPPORT_STORE);
|
572
|
-
}
|
573
|
-
} catch (ex) {
|
574
|
-
if (ex.name === "ConstraintError") {
|
575
|
-
console.warn('The database "' + dbInfo.name + '" has been upgraded from version ' + e.oldVersion + " to version " + e.newVersion + ', but the storage "' + dbInfo.storeName + '" already exists.');
|
576
|
-
} else {
|
577
|
-
throw ex;
|
578
|
-
}
|
579
|
-
}
|
580
|
-
};
|
581
|
-
}
|
582
|
-
openreq.onerror = function(e) {
|
583
|
-
e.preventDefault();
|
584
|
-
reject(openreq.error);
|
585
|
-
};
|
586
|
-
openreq.onsuccess = function() {
|
587
|
-
var db = openreq.result;
|
588
|
-
db.onversionchange = function(e) {
|
589
|
-
e.target.close();
|
590
|
-
};
|
591
|
-
resolve(db);
|
592
|
-
_advanceReadiness(dbInfo);
|
593
|
-
};
|
594
|
-
});
|
595
|
-
}
|
596
|
-
function _getOriginalConnection(dbInfo) {
|
597
|
-
return _getConnection(dbInfo, false);
|
598
|
-
}
|
599
|
-
function _getUpgradedConnection(dbInfo) {
|
600
|
-
return _getConnection(dbInfo, true);
|
601
|
-
}
|
602
|
-
function _isUpgradeNeeded(dbInfo, defaultVersion) {
|
603
|
-
if (!dbInfo.db) {
|
604
|
-
return true;
|
605
|
-
}
|
606
|
-
var isNewStore = !dbInfo.db.objectStoreNames.contains(dbInfo.storeName);
|
607
|
-
var isDowngrade = dbInfo.version < dbInfo.db.version;
|
608
|
-
var isUpgrade = dbInfo.version > dbInfo.db.version;
|
609
|
-
if (isDowngrade) {
|
610
|
-
if (dbInfo.version !== defaultVersion) {
|
611
|
-
console.warn('The database "' + dbInfo.name + `" can't be downgraded from version ` + dbInfo.db.version + " to version " + dbInfo.version + ".");
|
612
|
-
}
|
613
|
-
dbInfo.version = dbInfo.db.version;
|
614
|
-
}
|
615
|
-
if (isUpgrade || isNewStore) {
|
616
|
-
if (isNewStore) {
|
617
|
-
var incVersion = dbInfo.db.version + 1;
|
618
|
-
if (incVersion > dbInfo.version) {
|
619
|
-
dbInfo.version = incVersion;
|
620
|
-
}
|
621
|
-
}
|
622
|
-
return true;
|
623
|
-
}
|
624
|
-
return false;
|
625
|
-
}
|
626
|
-
function _encodeBlob(blob) {
|
627
|
-
return new Promise$1(function(resolve, reject) {
|
628
|
-
var reader = new FileReader();
|
629
|
-
reader.onerror = reject;
|
630
|
-
reader.onloadend = function(e) {
|
631
|
-
var base64 = btoa(e.target.result || "");
|
632
|
-
resolve({
|
633
|
-
__local_forage_encoded_blob: true,
|
634
|
-
data: base64,
|
635
|
-
type: blob.type
|
636
|
-
});
|
637
|
-
};
|
638
|
-
reader.readAsBinaryString(blob);
|
639
|
-
});
|
640
|
-
}
|
641
|
-
function _decodeBlob(encodedBlob) {
|
642
|
-
var arrayBuff = _binStringToArrayBuffer(atob(encodedBlob.data));
|
643
|
-
return createBlob([arrayBuff], { type: encodedBlob.type });
|
644
|
-
}
|
645
|
-
function _isEncodedBlob(value) {
|
646
|
-
return value && value.__local_forage_encoded_blob;
|
647
|
-
}
|
648
|
-
function _fullyReady(callback) {
|
649
|
-
var self2 = this;
|
650
|
-
var promise = self2._initReady().then(function() {
|
651
|
-
var dbContext = dbContexts[self2._dbInfo.name];
|
652
|
-
if (dbContext && dbContext.dbReady) {
|
653
|
-
return dbContext.dbReady;
|
654
|
-
}
|
655
|
-
});
|
656
|
-
executeTwoCallbacks(promise, callback, callback);
|
657
|
-
return promise;
|
658
|
-
}
|
659
|
-
function _tryReconnect(dbInfo) {
|
660
|
-
_deferReadiness(dbInfo);
|
661
|
-
var dbContext = dbContexts[dbInfo.name];
|
662
|
-
var forages = dbContext.forages;
|
663
|
-
for (var i = 0; i < forages.length; i++) {
|
664
|
-
var forage = forages[i];
|
665
|
-
if (forage._dbInfo.db) {
|
666
|
-
forage._dbInfo.db.close();
|
667
|
-
forage._dbInfo.db = null;
|
668
|
-
}
|
669
|
-
}
|
670
|
-
dbInfo.db = null;
|
671
|
-
return _getOriginalConnection(dbInfo).then(function(db) {
|
672
|
-
dbInfo.db = db;
|
673
|
-
if (_isUpgradeNeeded(dbInfo)) {
|
674
|
-
return _getUpgradedConnection(dbInfo);
|
675
|
-
}
|
676
|
-
return db;
|
677
|
-
}).then(function(db) {
|
678
|
-
dbInfo.db = dbContext.db = db;
|
679
|
-
for (var i2 = 0; i2 < forages.length; i2++) {
|
680
|
-
forages[i2]._dbInfo.db = db;
|
681
|
-
}
|
682
|
-
})["catch"](function(err) {
|
683
|
-
_rejectReadiness(dbInfo, err);
|
684
|
-
throw err;
|
685
|
-
});
|
686
|
-
}
|
687
|
-
function createTransaction(dbInfo, mode, callback, retries) {
|
688
|
-
if (retries === void 0) {
|
689
|
-
retries = 1;
|
690
|
-
}
|
691
|
-
try {
|
692
|
-
var tx = dbInfo.db.transaction(dbInfo.storeName, mode);
|
693
|
-
callback(null, tx);
|
694
|
-
} catch (err) {
|
695
|
-
if (retries > 0 && (!dbInfo.db || err.name === "InvalidStateError" || err.name === "NotFoundError")) {
|
696
|
-
return Promise$1.resolve().then(function() {
|
697
|
-
if (!dbInfo.db || err.name === "NotFoundError" && !dbInfo.db.objectStoreNames.contains(dbInfo.storeName) && dbInfo.version <= dbInfo.db.version) {
|
698
|
-
if (dbInfo.db) {
|
699
|
-
dbInfo.version = dbInfo.db.version + 1;
|
700
|
-
}
|
701
|
-
return _getUpgradedConnection(dbInfo);
|
702
|
-
}
|
703
|
-
}).then(function() {
|
704
|
-
return _tryReconnect(dbInfo).then(function() {
|
705
|
-
createTransaction(dbInfo, mode, callback, retries - 1);
|
706
|
-
});
|
707
|
-
})["catch"](callback);
|
708
|
-
}
|
709
|
-
callback(err);
|
710
|
-
}
|
711
|
-
}
|
712
|
-
function createDbContext() {
|
713
|
-
return {
|
714
|
-
// Running localForages sharing a database.
|
715
|
-
forages: [],
|
716
|
-
// Shared database.
|
717
|
-
db: null,
|
718
|
-
// Database readiness (promise).
|
719
|
-
dbReady: null,
|
720
|
-
// Deferred operations on the database.
|
721
|
-
deferredOperations: []
|
722
|
-
};
|
723
|
-
}
|
724
|
-
function _initStorage(options) {
|
725
|
-
var self2 = this;
|
726
|
-
var dbInfo = {
|
727
|
-
db: null
|
728
|
-
};
|
729
|
-
if (options) {
|
730
|
-
for (var i in options) {
|
731
|
-
dbInfo[i] = options[i];
|
732
|
-
}
|
733
|
-
}
|
734
|
-
var dbContext = dbContexts[dbInfo.name];
|
735
|
-
if (!dbContext) {
|
736
|
-
dbContext = createDbContext();
|
737
|
-
dbContexts[dbInfo.name] = dbContext;
|
738
|
-
}
|
739
|
-
dbContext.forages.push(self2);
|
740
|
-
if (!self2._initReady) {
|
741
|
-
self2._initReady = self2.ready;
|
742
|
-
self2.ready = _fullyReady;
|
743
|
-
}
|
744
|
-
var initPromises = [];
|
745
|
-
function ignoreErrors() {
|
746
|
-
return Promise$1.resolve();
|
747
|
-
}
|
748
|
-
for (var j = 0; j < dbContext.forages.length; j++) {
|
749
|
-
var forage = dbContext.forages[j];
|
750
|
-
if (forage !== self2) {
|
751
|
-
initPromises.push(forage._initReady()["catch"](ignoreErrors));
|
752
|
-
}
|
753
|
-
}
|
754
|
-
var forages = dbContext.forages.slice(0);
|
755
|
-
return Promise$1.all(initPromises).then(function() {
|
756
|
-
dbInfo.db = dbContext.db;
|
757
|
-
return _getOriginalConnection(dbInfo);
|
758
|
-
}).then(function(db) {
|
759
|
-
dbInfo.db = db;
|
760
|
-
if (_isUpgradeNeeded(dbInfo, self2._defaultConfig.version)) {
|
761
|
-
return _getUpgradedConnection(dbInfo);
|
762
|
-
}
|
763
|
-
return db;
|
764
|
-
}).then(function(db) {
|
765
|
-
dbInfo.db = dbContext.db = db;
|
766
|
-
self2._dbInfo = dbInfo;
|
767
|
-
for (var k = 0; k < forages.length; k++) {
|
768
|
-
var forage2 = forages[k];
|
769
|
-
if (forage2 !== self2) {
|
770
|
-
forage2._dbInfo.db = dbInfo.db;
|
771
|
-
forage2._dbInfo.version = dbInfo.version;
|
772
|
-
}
|
773
|
-
}
|
774
|
-
});
|
775
|
-
}
|
776
|
-
function getItem(key2, callback) {
|
777
|
-
var self2 = this;
|
778
|
-
key2 = normalizeKey(key2);
|
779
|
-
var promise = new Promise$1(function(resolve, reject) {
|
780
|
-
self2.ready().then(function() {
|
781
|
-
createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) {
|
782
|
-
if (err) {
|
783
|
-
return reject(err);
|
784
|
-
}
|
785
|
-
try {
|
786
|
-
var store = transaction.objectStore(self2._dbInfo.storeName);
|
787
|
-
var req = store.get(key2);
|
788
|
-
req.onsuccess = function() {
|
789
|
-
var value = req.result;
|
790
|
-
if (value === void 0) {
|
791
|
-
value = null;
|
792
|
-
}
|
793
|
-
if (_isEncodedBlob(value)) {
|
794
|
-
value = _decodeBlob(value);
|
795
|
-
}
|
796
|
-
resolve(value);
|
797
|
-
};
|
798
|
-
req.onerror = function() {
|
799
|
-
reject(req.error);
|
800
|
-
};
|
801
|
-
} catch (e) {
|
802
|
-
reject(e);
|
803
|
-
}
|
804
|
-
});
|
805
|
-
})["catch"](reject);
|
806
|
-
});
|
807
|
-
executeCallback(promise, callback);
|
808
|
-
return promise;
|
809
|
-
}
|
810
|
-
function iterate(iterator, callback) {
|
811
|
-
var self2 = this;
|
812
|
-
var promise = new Promise$1(function(resolve, reject) {
|
813
|
-
self2.ready().then(function() {
|
814
|
-
createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) {
|
815
|
-
if (err) {
|
816
|
-
return reject(err);
|
817
|
-
}
|
818
|
-
try {
|
819
|
-
var store = transaction.objectStore(self2._dbInfo.storeName);
|
820
|
-
var req = store.openCursor();
|
821
|
-
var iterationNumber = 1;
|
822
|
-
req.onsuccess = function() {
|
823
|
-
var cursor = req.result;
|
824
|
-
if (cursor) {
|
825
|
-
var value = cursor.value;
|
826
|
-
if (_isEncodedBlob(value)) {
|
827
|
-
value = _decodeBlob(value);
|
828
|
-
}
|
829
|
-
var result = iterator(value, cursor.key, iterationNumber++);
|
830
|
-
if (result !== void 0) {
|
831
|
-
resolve(result);
|
832
|
-
} else {
|
833
|
-
cursor["continue"]();
|
834
|
-
}
|
835
|
-
} else {
|
836
|
-
resolve();
|
837
|
-
}
|
838
|
-
};
|
839
|
-
req.onerror = function() {
|
840
|
-
reject(req.error);
|
841
|
-
};
|
842
|
-
} catch (e) {
|
843
|
-
reject(e);
|
844
|
-
}
|
845
|
-
});
|
846
|
-
})["catch"](reject);
|
847
|
-
});
|
848
|
-
executeCallback(promise, callback);
|
849
|
-
return promise;
|
850
|
-
}
|
851
|
-
function setItem(key2, value, callback) {
|
852
|
-
var self2 = this;
|
853
|
-
key2 = normalizeKey(key2);
|
854
|
-
var promise = new Promise$1(function(resolve, reject) {
|
855
|
-
var dbInfo;
|
856
|
-
self2.ready().then(function() {
|
857
|
-
dbInfo = self2._dbInfo;
|
858
|
-
if (toString.call(value) === "[object Blob]") {
|
859
|
-
return _checkBlobSupport(dbInfo.db).then(function(blobSupport) {
|
860
|
-
if (blobSupport) {
|
861
|
-
return value;
|
862
|
-
}
|
863
|
-
return _encodeBlob(value);
|
864
|
-
});
|
865
|
-
}
|
866
|
-
return value;
|
867
|
-
}).then(function(value2) {
|
868
|
-
createTransaction(self2._dbInfo, READ_WRITE, function(err, transaction) {
|
869
|
-
if (err) {
|
870
|
-
return reject(err);
|
871
|
-
}
|
872
|
-
try {
|
873
|
-
var store = transaction.objectStore(self2._dbInfo.storeName);
|
874
|
-
if (value2 === null) {
|
875
|
-
value2 = void 0;
|
876
|
-
}
|
877
|
-
var req = store.put(value2, key2);
|
878
|
-
transaction.oncomplete = function() {
|
879
|
-
if (value2 === void 0) {
|
880
|
-
value2 = null;
|
881
|
-
}
|
882
|
-
resolve(value2);
|
883
|
-
};
|
884
|
-
transaction.onabort = transaction.onerror = function() {
|
885
|
-
var err2 = req.error ? req.error : req.transaction.error;
|
886
|
-
reject(err2);
|
887
|
-
};
|
888
|
-
} catch (e) {
|
889
|
-
reject(e);
|
890
|
-
}
|
891
|
-
});
|
892
|
-
})["catch"](reject);
|
893
|
-
});
|
894
|
-
executeCallback(promise, callback);
|
895
|
-
return promise;
|
896
|
-
}
|
897
|
-
function removeItem(key2, callback) {
|
898
|
-
var self2 = this;
|
899
|
-
key2 = normalizeKey(key2);
|
900
|
-
var promise = new Promise$1(function(resolve, reject) {
|
901
|
-
self2.ready().then(function() {
|
902
|
-
createTransaction(self2._dbInfo, READ_WRITE, function(err, transaction) {
|
903
|
-
if (err) {
|
904
|
-
return reject(err);
|
905
|
-
}
|
906
|
-
try {
|
907
|
-
var store = transaction.objectStore(self2._dbInfo.storeName);
|
908
|
-
var req = store["delete"](key2);
|
909
|
-
transaction.oncomplete = function() {
|
910
|
-
resolve();
|
911
|
-
};
|
912
|
-
transaction.onerror = function() {
|
913
|
-
reject(req.error);
|
914
|
-
};
|
915
|
-
transaction.onabort = function() {
|
916
|
-
var err2 = req.error ? req.error : req.transaction.error;
|
917
|
-
reject(err2);
|
918
|
-
};
|
919
|
-
} catch (e) {
|
920
|
-
reject(e);
|
921
|
-
}
|
922
|
-
});
|
923
|
-
})["catch"](reject);
|
924
|
-
});
|
925
|
-
executeCallback(promise, callback);
|
926
|
-
return promise;
|
927
|
-
}
|
928
|
-
function clear(callback) {
|
929
|
-
var self2 = this;
|
930
|
-
var promise = new Promise$1(function(resolve, reject) {
|
931
|
-
self2.ready().then(function() {
|
932
|
-
createTransaction(self2._dbInfo, READ_WRITE, function(err, transaction) {
|
933
|
-
if (err) {
|
934
|
-
return reject(err);
|
935
|
-
}
|
936
|
-
try {
|
937
|
-
var store = transaction.objectStore(self2._dbInfo.storeName);
|
938
|
-
var req = store.clear();
|
939
|
-
transaction.oncomplete = function() {
|
940
|
-
resolve();
|
941
|
-
};
|
942
|
-
transaction.onabort = transaction.onerror = function() {
|
943
|
-
var err2 = req.error ? req.error : req.transaction.error;
|
944
|
-
reject(err2);
|
945
|
-
};
|
946
|
-
} catch (e) {
|
947
|
-
reject(e);
|
948
|
-
}
|
949
|
-
});
|
950
|
-
})["catch"](reject);
|
951
|
-
});
|
952
|
-
executeCallback(promise, callback);
|
953
|
-
return promise;
|
954
|
-
}
|
955
|
-
function length(callback) {
|
956
|
-
var self2 = this;
|
957
|
-
var promise = new Promise$1(function(resolve, reject) {
|
958
|
-
self2.ready().then(function() {
|
959
|
-
createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) {
|
960
|
-
if (err) {
|
961
|
-
return reject(err);
|
962
|
-
}
|
963
|
-
try {
|
964
|
-
var store = transaction.objectStore(self2._dbInfo.storeName);
|
965
|
-
var req = store.count();
|
966
|
-
req.onsuccess = function() {
|
967
|
-
resolve(req.result);
|
968
|
-
};
|
969
|
-
req.onerror = function() {
|
970
|
-
reject(req.error);
|
971
|
-
};
|
972
|
-
} catch (e) {
|
973
|
-
reject(e);
|
974
|
-
}
|
975
|
-
});
|
976
|
-
})["catch"](reject);
|
977
|
-
});
|
978
|
-
executeCallback(promise, callback);
|
979
|
-
return promise;
|
980
|
-
}
|
981
|
-
function key(n, callback) {
|
982
|
-
var self2 = this;
|
983
|
-
var promise = new Promise$1(function(resolve, reject) {
|
984
|
-
if (n < 0) {
|
985
|
-
resolve(null);
|
986
|
-
return;
|
987
|
-
}
|
988
|
-
self2.ready().then(function() {
|
989
|
-
createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) {
|
990
|
-
if (err) {
|
991
|
-
return reject(err);
|
992
|
-
}
|
993
|
-
try {
|
994
|
-
var store = transaction.objectStore(self2._dbInfo.storeName);
|
995
|
-
var advanced = false;
|
996
|
-
var req = store.openKeyCursor();
|
997
|
-
req.onsuccess = function() {
|
998
|
-
var cursor = req.result;
|
999
|
-
if (!cursor) {
|
1000
|
-
resolve(null);
|
1001
|
-
return;
|
1002
|
-
}
|
1003
|
-
if (n === 0) {
|
1004
|
-
resolve(cursor.key);
|
1005
|
-
} else {
|
1006
|
-
if (!advanced) {
|
1007
|
-
advanced = true;
|
1008
|
-
cursor.advance(n);
|
1009
|
-
} else {
|
1010
|
-
resolve(cursor.key);
|
1011
|
-
}
|
1012
|
-
}
|
1013
|
-
};
|
1014
|
-
req.onerror = function() {
|
1015
|
-
reject(req.error);
|
1016
|
-
};
|
1017
|
-
} catch (e) {
|
1018
|
-
reject(e);
|
1019
|
-
}
|
1020
|
-
});
|
1021
|
-
})["catch"](reject);
|
1022
|
-
});
|
1023
|
-
executeCallback(promise, callback);
|
1024
|
-
return promise;
|
1025
|
-
}
|
1026
|
-
function keys(callback) {
|
1027
|
-
var self2 = this;
|
1028
|
-
var promise = new Promise$1(function(resolve, reject) {
|
1029
|
-
self2.ready().then(function() {
|
1030
|
-
createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) {
|
1031
|
-
if (err) {
|
1032
|
-
return reject(err);
|
1033
|
-
}
|
1034
|
-
try {
|
1035
|
-
var store = transaction.objectStore(self2._dbInfo.storeName);
|
1036
|
-
var req = store.openKeyCursor();
|
1037
|
-
var keys2 = [];
|
1038
|
-
req.onsuccess = function() {
|
1039
|
-
var cursor = req.result;
|
1040
|
-
if (!cursor) {
|
1041
|
-
resolve(keys2);
|
1042
|
-
return;
|
1043
|
-
}
|
1044
|
-
keys2.push(cursor.key);
|
1045
|
-
cursor["continue"]();
|
1046
|
-
};
|
1047
|
-
req.onerror = function() {
|
1048
|
-
reject(req.error);
|
1049
|
-
};
|
1050
|
-
} catch (e) {
|
1051
|
-
reject(e);
|
1052
|
-
}
|
1053
|
-
});
|
1054
|
-
})["catch"](reject);
|
1055
|
-
});
|
1056
|
-
executeCallback(promise, callback);
|
1057
|
-
return promise;
|
1058
|
-
}
|
1059
|
-
function dropInstance(options, callback) {
|
1060
|
-
callback = getCallback.apply(this, arguments);
|
1061
|
-
var currentConfig = this.config();
|
1062
|
-
options = typeof options !== "function" && options || {};
|
1063
|
-
if (!options.name) {
|
1064
|
-
options.name = options.name || currentConfig.name;
|
1065
|
-
options.storeName = options.storeName || currentConfig.storeName;
|
1066
|
-
}
|
1067
|
-
var self2 = this;
|
1068
|
-
var promise;
|
1069
|
-
if (!options.name) {
|
1070
|
-
promise = Promise$1.reject("Invalid arguments");
|
1071
|
-
} else {
|
1072
|
-
var isCurrentDb = options.name === currentConfig.name && self2._dbInfo.db;
|
1073
|
-
var dbPromise = isCurrentDb ? Promise$1.resolve(self2._dbInfo.db) : _getOriginalConnection(options).then(function(db) {
|
1074
|
-
var dbContext = dbContexts[options.name];
|
1075
|
-
var forages = dbContext.forages;
|
1076
|
-
dbContext.db = db;
|
1077
|
-
for (var i = 0; i < forages.length; i++) {
|
1078
|
-
forages[i]._dbInfo.db = db;
|
1079
|
-
}
|
1080
|
-
return db;
|
1081
|
-
});
|
1082
|
-
if (!options.storeName) {
|
1083
|
-
promise = dbPromise.then(function(db) {
|
1084
|
-
_deferReadiness(options);
|
1085
|
-
var dbContext = dbContexts[options.name];
|
1086
|
-
var forages = dbContext.forages;
|
1087
|
-
db.close();
|
1088
|
-
for (var i = 0; i < forages.length; i++) {
|
1089
|
-
var forage = forages[i];
|
1090
|
-
forage._dbInfo.db = null;
|
1091
|
-
}
|
1092
|
-
var dropDBPromise = new Promise$1(function(resolve, reject) {
|
1093
|
-
var req = idb.deleteDatabase(options.name);
|
1094
|
-
req.onerror = function() {
|
1095
|
-
var db2 = req.result;
|
1096
|
-
if (db2) {
|
1097
|
-
db2.close();
|
1098
|
-
}
|
1099
|
-
reject(req.error);
|
1100
|
-
};
|
1101
|
-
req.onblocked = function() {
|
1102
|
-
console.warn('dropInstance blocked for database "' + options.name + '" until all open connections are closed');
|
1103
|
-
};
|
1104
|
-
req.onsuccess = function() {
|
1105
|
-
var db2 = req.result;
|
1106
|
-
if (db2) {
|
1107
|
-
db2.close();
|
1108
|
-
}
|
1109
|
-
resolve(db2);
|
1110
|
-
};
|
1111
|
-
});
|
1112
|
-
return dropDBPromise.then(function(db2) {
|
1113
|
-
dbContext.db = db2;
|
1114
|
-
for (var i2 = 0; i2 < forages.length; i2++) {
|
1115
|
-
var _forage = forages[i2];
|
1116
|
-
_advanceReadiness(_forage._dbInfo);
|
1117
|
-
}
|
1118
|
-
})["catch"](function(err) {
|
1119
|
-
(_rejectReadiness(options, err) || Promise$1.resolve())["catch"](function() {
|
1120
|
-
});
|
1121
|
-
throw err;
|
1122
|
-
});
|
1123
|
-
});
|
1124
|
-
} else {
|
1125
|
-
promise = dbPromise.then(function(db) {
|
1126
|
-
if (!db.objectStoreNames.contains(options.storeName)) {
|
1127
|
-
return;
|
1128
|
-
}
|
1129
|
-
var newVersion = db.version + 1;
|
1130
|
-
_deferReadiness(options);
|
1131
|
-
var dbContext = dbContexts[options.name];
|
1132
|
-
var forages = dbContext.forages;
|
1133
|
-
db.close();
|
1134
|
-
for (var i = 0; i < forages.length; i++) {
|
1135
|
-
var forage = forages[i];
|
1136
|
-
forage._dbInfo.db = null;
|
1137
|
-
forage._dbInfo.version = newVersion;
|
1138
|
-
}
|
1139
|
-
var dropObjectPromise = new Promise$1(function(resolve, reject) {
|
1140
|
-
var req = idb.open(options.name, newVersion);
|
1141
|
-
req.onerror = function(err) {
|
1142
|
-
var db2 = req.result;
|
1143
|
-
db2.close();
|
1144
|
-
reject(err);
|
1145
|
-
};
|
1146
|
-
req.onupgradeneeded = function() {
|
1147
|
-
var db2 = req.result;
|
1148
|
-
db2.deleteObjectStore(options.storeName);
|
1149
|
-
};
|
1150
|
-
req.onsuccess = function() {
|
1151
|
-
var db2 = req.result;
|
1152
|
-
db2.close();
|
1153
|
-
resolve(db2);
|
1154
|
-
};
|
1155
|
-
});
|
1156
|
-
return dropObjectPromise.then(function(db2) {
|
1157
|
-
dbContext.db = db2;
|
1158
|
-
for (var j = 0; j < forages.length; j++) {
|
1159
|
-
var _forage2 = forages[j];
|
1160
|
-
_forage2._dbInfo.db = db2;
|
1161
|
-
_advanceReadiness(_forage2._dbInfo);
|
1162
|
-
}
|
1163
|
-
})["catch"](function(err) {
|
1164
|
-
(_rejectReadiness(options, err) || Promise$1.resolve())["catch"](function() {
|
1165
|
-
});
|
1166
|
-
throw err;
|
1167
|
-
});
|
1168
|
-
});
|
1169
|
-
}
|
1170
|
-
}
|
1171
|
-
executeCallback(promise, callback);
|
1172
|
-
return promise;
|
1173
|
-
}
|
1174
|
-
var asyncStorage = {
|
1175
|
-
_driver: "asyncStorage",
|
1176
|
-
_initStorage,
|
1177
|
-
_support: isIndexedDBValid(),
|
1178
|
-
iterate,
|
1179
|
-
getItem,
|
1180
|
-
setItem,
|
1181
|
-
removeItem,
|
1182
|
-
clear,
|
1183
|
-
length,
|
1184
|
-
key,
|
1185
|
-
keys,
|
1186
|
-
dropInstance
|
1187
|
-
};
|
1188
|
-
function isWebSQLValid() {
|
1189
|
-
return typeof openDatabase === "function";
|
1190
|
-
}
|
1191
|
-
var BASE_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
1192
|
-
var BLOB_TYPE_PREFIX = "~~local_forage_type~";
|
1193
|
-
var BLOB_TYPE_PREFIX_REGEX = /^~~local_forage_type~([^~]+)~/;
|
1194
|
-
var SERIALIZED_MARKER = "__lfsc__:";
|
1195
|
-
var SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER.length;
|
1196
|
-
var TYPE_ARRAYBUFFER = "arbf";
|
1197
|
-
var TYPE_BLOB = "blob";
|
1198
|
-
var TYPE_INT8ARRAY = "si08";
|
1199
|
-
var TYPE_UINT8ARRAY = "ui08";
|
1200
|
-
var TYPE_UINT8CLAMPEDARRAY = "uic8";
|
1201
|
-
var TYPE_INT16ARRAY = "si16";
|
1202
|
-
var TYPE_INT32ARRAY = "si32";
|
1203
|
-
var TYPE_UINT16ARRAY = "ur16";
|
1204
|
-
var TYPE_UINT32ARRAY = "ui32";
|
1205
|
-
var TYPE_FLOAT32ARRAY = "fl32";
|
1206
|
-
var TYPE_FLOAT64ARRAY = "fl64";
|
1207
|
-
var TYPE_SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER_LENGTH + TYPE_ARRAYBUFFER.length;
|
1208
|
-
var toString$1 = Object.prototype.toString;
|
1209
|
-
function stringToBuffer(serializedString) {
|
1210
|
-
var bufferLength = serializedString.length * 0.75;
|
1211
|
-
var len = serializedString.length;
|
1212
|
-
var i;
|
1213
|
-
var p = 0;
|
1214
|
-
var encoded1, encoded2, encoded3, encoded4;
|
1215
|
-
if (serializedString[serializedString.length - 1] === "=") {
|
1216
|
-
bufferLength--;
|
1217
|
-
if (serializedString[serializedString.length - 2] === "=") {
|
1218
|
-
bufferLength--;
|
1219
|
-
}
|
1220
|
-
}
|
1221
|
-
var buffer = new ArrayBuffer(bufferLength);
|
1222
|
-
var bytes = new Uint8Array(buffer);
|
1223
|
-
for (i = 0; i < len; i += 4) {
|
1224
|
-
encoded1 = BASE_CHARS.indexOf(serializedString[i]);
|
1225
|
-
encoded2 = BASE_CHARS.indexOf(serializedString[i + 1]);
|
1226
|
-
encoded3 = BASE_CHARS.indexOf(serializedString[i + 2]);
|
1227
|
-
encoded4 = BASE_CHARS.indexOf(serializedString[i + 3]);
|
1228
|
-
bytes[p++] = encoded1 << 2 | encoded2 >> 4;
|
1229
|
-
bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;
|
1230
|
-
bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;
|
1231
|
-
}
|
1232
|
-
return buffer;
|
1233
|
-
}
|
1234
|
-
function bufferToString(buffer) {
|
1235
|
-
var bytes = new Uint8Array(buffer);
|
1236
|
-
var base64String = "";
|
1237
|
-
var i;
|
1238
|
-
for (i = 0; i < bytes.length; i += 3) {
|
1239
|
-
base64String += BASE_CHARS[bytes[i] >> 2];
|
1240
|
-
base64String += BASE_CHARS[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4];
|
1241
|
-
base64String += BASE_CHARS[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6];
|
1242
|
-
base64String += BASE_CHARS[bytes[i + 2] & 63];
|
1243
|
-
}
|
1244
|
-
if (bytes.length % 3 === 2) {
|
1245
|
-
base64String = base64String.substring(0, base64String.length - 1) + "=";
|
1246
|
-
} else if (bytes.length % 3 === 1) {
|
1247
|
-
base64String = base64String.substring(0, base64String.length - 2) + "==";
|
1248
|
-
}
|
1249
|
-
return base64String;
|
1250
|
-
}
|
1251
|
-
function serialize(value, callback) {
|
1252
|
-
var valueType = "";
|
1253
|
-
if (value) {
|
1254
|
-
valueType = toString$1.call(value);
|
1255
|
-
}
|
1256
|
-
if (value && (valueType === "[object ArrayBuffer]" || value.buffer && toString$1.call(value.buffer) === "[object ArrayBuffer]")) {
|
1257
|
-
var buffer;
|
1258
|
-
var marker = SERIALIZED_MARKER;
|
1259
|
-
if (value instanceof ArrayBuffer) {
|
1260
|
-
buffer = value;
|
1261
|
-
marker += TYPE_ARRAYBUFFER;
|
1262
|
-
} else {
|
1263
|
-
buffer = value.buffer;
|
1264
|
-
if (valueType === "[object Int8Array]") {
|
1265
|
-
marker += TYPE_INT8ARRAY;
|
1266
|
-
} else if (valueType === "[object Uint8Array]") {
|
1267
|
-
marker += TYPE_UINT8ARRAY;
|
1268
|
-
} else if (valueType === "[object Uint8ClampedArray]") {
|
1269
|
-
marker += TYPE_UINT8CLAMPEDARRAY;
|
1270
|
-
} else if (valueType === "[object Int16Array]") {
|
1271
|
-
marker += TYPE_INT16ARRAY;
|
1272
|
-
} else if (valueType === "[object Uint16Array]") {
|
1273
|
-
marker += TYPE_UINT16ARRAY;
|
1274
|
-
} else if (valueType === "[object Int32Array]") {
|
1275
|
-
marker += TYPE_INT32ARRAY;
|
1276
|
-
} else if (valueType === "[object Uint32Array]") {
|
1277
|
-
marker += TYPE_UINT32ARRAY;
|
1278
|
-
} else if (valueType === "[object Float32Array]") {
|
1279
|
-
marker += TYPE_FLOAT32ARRAY;
|
1280
|
-
} else if (valueType === "[object Float64Array]") {
|
1281
|
-
marker += TYPE_FLOAT64ARRAY;
|
1282
|
-
} else {
|
1283
|
-
callback(new Error("Failed to get type for BinaryArray"));
|
1284
|
-
}
|
1285
|
-
}
|
1286
|
-
callback(marker + bufferToString(buffer));
|
1287
|
-
} else if (valueType === "[object Blob]") {
|
1288
|
-
var fileReader = new FileReader();
|
1289
|
-
fileReader.onload = function() {
|
1290
|
-
var str = BLOB_TYPE_PREFIX + value.type + "~" + bufferToString(this.result);
|
1291
|
-
callback(SERIALIZED_MARKER + TYPE_BLOB + str);
|
1292
|
-
};
|
1293
|
-
fileReader.readAsArrayBuffer(value);
|
1294
|
-
} else {
|
1295
|
-
try {
|
1296
|
-
callback(JSON.stringify(value));
|
1297
|
-
} catch (e) {
|
1298
|
-
console.error("Couldn't convert value into a JSON string: ", value);
|
1299
|
-
callback(null, e);
|
1300
|
-
}
|
1301
|
-
}
|
1302
|
-
}
|
1303
|
-
function deserialize(value) {
|
1304
|
-
if (value.substring(0, SERIALIZED_MARKER_LENGTH) !== SERIALIZED_MARKER) {
|
1305
|
-
return JSON.parse(value);
|
1306
|
-
}
|
1307
|
-
var serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH);
|
1308
|
-
var type = value.substring(SERIALIZED_MARKER_LENGTH, TYPE_SERIALIZED_MARKER_LENGTH);
|
1309
|
-
var blobType;
|
1310
|
-
if (type === TYPE_BLOB && BLOB_TYPE_PREFIX_REGEX.test(serializedString)) {
|
1311
|
-
var matcher = serializedString.match(BLOB_TYPE_PREFIX_REGEX);
|
1312
|
-
blobType = matcher[1];
|
1313
|
-
serializedString = serializedString.substring(matcher[0].length);
|
1314
|
-
}
|
1315
|
-
var buffer = stringToBuffer(serializedString);
|
1316
|
-
switch (type) {
|
1317
|
-
case TYPE_ARRAYBUFFER:
|
1318
|
-
return buffer;
|
1319
|
-
case TYPE_BLOB:
|
1320
|
-
return createBlob([buffer], { type: blobType });
|
1321
|
-
case TYPE_INT8ARRAY:
|
1322
|
-
return new Int8Array(buffer);
|
1323
|
-
case TYPE_UINT8ARRAY:
|
1324
|
-
return new Uint8Array(buffer);
|
1325
|
-
case TYPE_UINT8CLAMPEDARRAY:
|
1326
|
-
return new Uint8ClampedArray(buffer);
|
1327
|
-
case TYPE_INT16ARRAY:
|
1328
|
-
return new Int16Array(buffer);
|
1329
|
-
case TYPE_UINT16ARRAY:
|
1330
|
-
return new Uint16Array(buffer);
|
1331
|
-
case TYPE_INT32ARRAY:
|
1332
|
-
return new Int32Array(buffer);
|
1333
|
-
case TYPE_UINT32ARRAY:
|
1334
|
-
return new Uint32Array(buffer);
|
1335
|
-
case TYPE_FLOAT32ARRAY:
|
1336
|
-
return new Float32Array(buffer);
|
1337
|
-
case TYPE_FLOAT64ARRAY:
|
1338
|
-
return new Float64Array(buffer);
|
1339
|
-
default:
|
1340
|
-
throw new Error("Unkown type: " + type);
|
1341
|
-
}
|
1342
|
-
}
|
1343
|
-
var localforageSerializer = {
|
1344
|
-
serialize,
|
1345
|
-
deserialize,
|
1346
|
-
stringToBuffer,
|
1347
|
-
bufferToString
|
1348
|
-
};
|
1349
|
-
function createDbTable(t, dbInfo, callback, errorCallback) {
|
1350
|
-
t.executeSql("CREATE TABLE IF NOT EXISTS " + dbInfo.storeName + " (id INTEGER PRIMARY KEY, key unique, value)", [], callback, errorCallback);
|
1351
|
-
}
|
1352
|
-
function _initStorage$1(options) {
|
1353
|
-
var self2 = this;
|
1354
|
-
var dbInfo = {
|
1355
|
-
db: null
|
1356
|
-
};
|
1357
|
-
if (options) {
|
1358
|
-
for (var i in options) {
|
1359
|
-
dbInfo[i] = typeof options[i] !== "string" ? options[i].toString() : options[i];
|
1360
|
-
}
|
1361
|
-
}
|
1362
|
-
var dbInfoPromise = new Promise$1(function(resolve, reject) {
|
1363
|
-
try {
|
1364
|
-
dbInfo.db = openDatabase(dbInfo.name, String(dbInfo.version), dbInfo.description, dbInfo.size);
|
1365
|
-
} catch (e) {
|
1366
|
-
return reject(e);
|
1367
|
-
}
|
1368
|
-
dbInfo.db.transaction(function(t) {
|
1369
|
-
createDbTable(t, dbInfo, function() {
|
1370
|
-
self2._dbInfo = dbInfo;
|
1371
|
-
resolve();
|
1372
|
-
}, function(t2, error) {
|
1373
|
-
reject(error);
|
1374
|
-
});
|
1375
|
-
}, reject);
|
1376
|
-
});
|
1377
|
-
dbInfo.serializer = localforageSerializer;
|
1378
|
-
return dbInfoPromise;
|
1379
|
-
}
|
1380
|
-
function tryExecuteSql(t, dbInfo, sqlStatement, args, callback, errorCallback) {
|
1381
|
-
t.executeSql(sqlStatement, args, callback, function(t2, error) {
|
1382
|
-
if (error.code === error.SYNTAX_ERR) {
|
1383
|
-
t2.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?", [dbInfo.storeName], function(t3, results) {
|
1384
|
-
if (!results.rows.length) {
|
1385
|
-
createDbTable(t3, dbInfo, function() {
|
1386
|
-
t3.executeSql(sqlStatement, args, callback, errorCallback);
|
1387
|
-
}, errorCallback);
|
1388
|
-
} else {
|
1389
|
-
errorCallback(t3, error);
|
1390
|
-
}
|
1391
|
-
}, errorCallback);
|
1392
|
-
} else {
|
1393
|
-
errorCallback(t2, error);
|
1394
|
-
}
|
1395
|
-
}, errorCallback);
|
1396
|
-
}
|
1397
|
-
function getItem$1(key2, callback) {
|
1398
|
-
var self2 = this;
|
1399
|
-
key2 = normalizeKey(key2);
|
1400
|
-
var promise = new Promise$1(function(resolve, reject) {
|
1401
|
-
self2.ready().then(function() {
|
1402
|
-
var dbInfo = self2._dbInfo;
|
1403
|
-
dbInfo.db.transaction(function(t) {
|
1404
|
-
tryExecuteSql(t, dbInfo, "SELECT * FROM " + dbInfo.storeName + " WHERE key = ? LIMIT 1", [key2], function(t2, results) {
|
1405
|
-
var result = results.rows.length ? results.rows.item(0).value : null;
|
1406
|
-
if (result) {
|
1407
|
-
result = dbInfo.serializer.deserialize(result);
|
1408
|
-
}
|
1409
|
-
resolve(result);
|
1410
|
-
}, function(t2, error) {
|
1411
|
-
reject(error);
|
1412
|
-
});
|
1413
|
-
});
|
1414
|
-
})["catch"](reject);
|
1415
|
-
});
|
1416
|
-
executeCallback(promise, callback);
|
1417
|
-
return promise;
|
1418
|
-
}
|
1419
|
-
function iterate$1(iterator, callback) {
|
1420
|
-
var self2 = this;
|
1421
|
-
var promise = new Promise$1(function(resolve, reject) {
|
1422
|
-
self2.ready().then(function() {
|
1423
|
-
var dbInfo = self2._dbInfo;
|
1424
|
-
dbInfo.db.transaction(function(t) {
|
1425
|
-
tryExecuteSql(t, dbInfo, "SELECT * FROM " + dbInfo.storeName, [], function(t2, results) {
|
1426
|
-
var rows = results.rows;
|
1427
|
-
var length2 = rows.length;
|
1428
|
-
for (var i = 0; i < length2; i++) {
|
1429
|
-
var item = rows.item(i);
|
1430
|
-
var result = item.value;
|
1431
|
-
if (result) {
|
1432
|
-
result = dbInfo.serializer.deserialize(result);
|
1433
|
-
}
|
1434
|
-
result = iterator(result, item.key, i + 1);
|
1435
|
-
if (result !== void 0) {
|
1436
|
-
resolve(result);
|
1437
|
-
return;
|
1438
|
-
}
|
1439
|
-
}
|
1440
|
-
resolve();
|
1441
|
-
}, function(t2, error) {
|
1442
|
-
reject(error);
|
1443
|
-
});
|
1444
|
-
});
|
1445
|
-
})["catch"](reject);
|
1446
|
-
});
|
1447
|
-
executeCallback(promise, callback);
|
1448
|
-
return promise;
|
1449
|
-
}
|
1450
|
-
function _setItem(key2, value, callback, retriesLeft) {
|
1451
|
-
var self2 = this;
|
1452
|
-
key2 = normalizeKey(key2);
|
1453
|
-
var promise = new Promise$1(function(resolve, reject) {
|
1454
|
-
self2.ready().then(function() {
|
1455
|
-
if (value === void 0) {
|
1456
|
-
value = null;
|
1457
|
-
}
|
1458
|
-
var originalValue = value;
|
1459
|
-
var dbInfo = self2._dbInfo;
|
1460
|
-
dbInfo.serializer.serialize(value, function(value2, error) {
|
1461
|
-
if (error) {
|
1462
|
-
reject(error);
|
1463
|
-
} else {
|
1464
|
-
dbInfo.db.transaction(function(t) {
|
1465
|
-
tryExecuteSql(t, dbInfo, "INSERT OR REPLACE INTO " + dbInfo.storeName + " (key, value) VALUES (?, ?)", [key2, value2], function() {
|
1466
|
-
resolve(originalValue);
|
1467
|
-
}, function(t2, error2) {
|
1468
|
-
reject(error2);
|
1469
|
-
});
|
1470
|
-
}, function(sqlError) {
|
1471
|
-
if (sqlError.code === sqlError.QUOTA_ERR) {
|
1472
|
-
if (retriesLeft > 0) {
|
1473
|
-
resolve(_setItem.apply(self2, [key2, originalValue, callback, retriesLeft - 1]));
|
1474
|
-
return;
|
1475
|
-
}
|
1476
|
-
reject(sqlError);
|
1477
|
-
}
|
1478
|
-
});
|
1479
|
-
}
|
1480
|
-
});
|
1481
|
-
})["catch"](reject);
|
1482
|
-
});
|
1483
|
-
executeCallback(promise, callback);
|
1484
|
-
return promise;
|
1485
|
-
}
|
1486
|
-
function setItem$1(key2, value, callback) {
|
1487
|
-
return _setItem.apply(this, [key2, value, callback, 1]);
|
1488
|
-
}
|
1489
|
-
function removeItem$1(key2, callback) {
|
1490
|
-
var self2 = this;
|
1491
|
-
key2 = normalizeKey(key2);
|
1492
|
-
var promise = new Promise$1(function(resolve, reject) {
|
1493
|
-
self2.ready().then(function() {
|
1494
|
-
var dbInfo = self2._dbInfo;
|
1495
|
-
dbInfo.db.transaction(function(t) {
|
1496
|
-
tryExecuteSql(t, dbInfo, "DELETE FROM " + dbInfo.storeName + " WHERE key = ?", [key2], function() {
|
1497
|
-
resolve();
|
1498
|
-
}, function(t2, error) {
|
1499
|
-
reject(error);
|
1500
|
-
});
|
1501
|
-
});
|
1502
|
-
})["catch"](reject);
|
1503
|
-
});
|
1504
|
-
executeCallback(promise, callback);
|
1505
|
-
return promise;
|
1506
|
-
}
|
1507
|
-
function clear$1(callback) {
|
1508
|
-
var self2 = this;
|
1509
|
-
var promise = new Promise$1(function(resolve, reject) {
|
1510
|
-
self2.ready().then(function() {
|
1511
|
-
var dbInfo = self2._dbInfo;
|
1512
|
-
dbInfo.db.transaction(function(t) {
|
1513
|
-
tryExecuteSql(t, dbInfo, "DELETE FROM " + dbInfo.storeName, [], function() {
|
1514
|
-
resolve();
|
1515
|
-
}, function(t2, error) {
|
1516
|
-
reject(error);
|
1517
|
-
});
|
1518
|
-
});
|
1519
|
-
})["catch"](reject);
|
1520
|
-
});
|
1521
|
-
executeCallback(promise, callback);
|
1522
|
-
return promise;
|
1523
|
-
}
|
1524
|
-
function length$1(callback) {
|
1525
|
-
var self2 = this;
|
1526
|
-
var promise = new Promise$1(function(resolve, reject) {
|
1527
|
-
self2.ready().then(function() {
|
1528
|
-
var dbInfo = self2._dbInfo;
|
1529
|
-
dbInfo.db.transaction(function(t) {
|
1530
|
-
tryExecuteSql(t, dbInfo, "SELECT COUNT(key) as c FROM " + dbInfo.storeName, [], function(t2, results) {
|
1531
|
-
var result = results.rows.item(0).c;
|
1532
|
-
resolve(result);
|
1533
|
-
}, function(t2, error) {
|
1534
|
-
reject(error);
|
1535
|
-
});
|
1536
|
-
});
|
1537
|
-
})["catch"](reject);
|
1538
|
-
});
|
1539
|
-
executeCallback(promise, callback);
|
1540
|
-
return promise;
|
1541
|
-
}
|
1542
|
-
function key$1(n, callback) {
|
1543
|
-
var self2 = this;
|
1544
|
-
var promise = new Promise$1(function(resolve, reject) {
|
1545
|
-
self2.ready().then(function() {
|
1546
|
-
var dbInfo = self2._dbInfo;
|
1547
|
-
dbInfo.db.transaction(function(t) {
|
1548
|
-
tryExecuteSql(t, dbInfo, "SELECT key FROM " + dbInfo.storeName + " WHERE id = ? LIMIT 1", [n + 1], function(t2, results) {
|
1549
|
-
var result = results.rows.length ? results.rows.item(0).key : null;
|
1550
|
-
resolve(result);
|
1551
|
-
}, function(t2, error) {
|
1552
|
-
reject(error);
|
1553
|
-
});
|
1554
|
-
});
|
1555
|
-
})["catch"](reject);
|
1556
|
-
});
|
1557
|
-
executeCallback(promise, callback);
|
1558
|
-
return promise;
|
1559
|
-
}
|
1560
|
-
function keys$1(callback) {
|
1561
|
-
var self2 = this;
|
1562
|
-
var promise = new Promise$1(function(resolve, reject) {
|
1563
|
-
self2.ready().then(function() {
|
1564
|
-
var dbInfo = self2._dbInfo;
|
1565
|
-
dbInfo.db.transaction(function(t) {
|
1566
|
-
tryExecuteSql(t, dbInfo, "SELECT key FROM " + dbInfo.storeName, [], function(t2, results) {
|
1567
|
-
var keys2 = [];
|
1568
|
-
for (var i = 0; i < results.rows.length; i++) {
|
1569
|
-
keys2.push(results.rows.item(i).key);
|
1570
|
-
}
|
1571
|
-
resolve(keys2);
|
1572
|
-
}, function(t2, error) {
|
1573
|
-
reject(error);
|
1574
|
-
});
|
1575
|
-
});
|
1576
|
-
})["catch"](reject);
|
1577
|
-
});
|
1578
|
-
executeCallback(promise, callback);
|
1579
|
-
return promise;
|
1580
|
-
}
|
1581
|
-
function getAllStoreNames(db) {
|
1582
|
-
return new Promise$1(function(resolve, reject) {
|
1583
|
-
db.transaction(function(t) {
|
1584
|
-
t.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'", [], function(t2, results) {
|
1585
|
-
var storeNames = [];
|
1586
|
-
for (var i = 0; i < results.rows.length; i++) {
|
1587
|
-
storeNames.push(results.rows.item(i).name);
|
1588
|
-
}
|
1589
|
-
resolve({
|
1590
|
-
db,
|
1591
|
-
storeNames
|
1592
|
-
});
|
1593
|
-
}, function(t2, error) {
|
1594
|
-
reject(error);
|
1595
|
-
});
|
1596
|
-
}, function(sqlError) {
|
1597
|
-
reject(sqlError);
|
1598
|
-
});
|
1599
|
-
});
|
1600
|
-
}
|
1601
|
-
function dropInstance$1(options, callback) {
|
1602
|
-
callback = getCallback.apply(this, arguments);
|
1603
|
-
var currentConfig = this.config();
|
1604
|
-
options = typeof options !== "function" && options || {};
|
1605
|
-
if (!options.name) {
|
1606
|
-
options.name = options.name || currentConfig.name;
|
1607
|
-
options.storeName = options.storeName || currentConfig.storeName;
|
1608
|
-
}
|
1609
|
-
var self2 = this;
|
1610
|
-
var promise;
|
1611
|
-
if (!options.name) {
|
1612
|
-
promise = Promise$1.reject("Invalid arguments");
|
1613
|
-
} else {
|
1614
|
-
promise = new Promise$1(function(resolve) {
|
1615
|
-
var db;
|
1616
|
-
if (options.name === currentConfig.name) {
|
1617
|
-
db = self2._dbInfo.db;
|
1618
|
-
} else {
|
1619
|
-
db = openDatabase(options.name, "", "", 0);
|
1620
|
-
}
|
1621
|
-
if (!options.storeName) {
|
1622
|
-
resolve(getAllStoreNames(db));
|
1623
|
-
} else {
|
1624
|
-
resolve({
|
1625
|
-
db,
|
1626
|
-
storeNames: [options.storeName]
|
1627
|
-
});
|
1628
|
-
}
|
1629
|
-
}).then(function(operationInfo) {
|
1630
|
-
return new Promise$1(function(resolve, reject) {
|
1631
|
-
operationInfo.db.transaction(function(t) {
|
1632
|
-
function dropTable(storeName) {
|
1633
|
-
return new Promise$1(function(resolve2, reject2) {
|
1634
|
-
t.executeSql("DROP TABLE IF EXISTS " + storeName, [], function() {
|
1635
|
-
resolve2();
|
1636
|
-
}, function(t2, error) {
|
1637
|
-
reject2(error);
|
1638
|
-
});
|
1639
|
-
});
|
1640
|
-
}
|
1641
|
-
var operations = [];
|
1642
|
-
for (var i = 0, len = operationInfo.storeNames.length; i < len; i++) {
|
1643
|
-
operations.push(dropTable(operationInfo.storeNames[i]));
|
1644
|
-
}
|
1645
|
-
Promise$1.all(operations).then(function() {
|
1646
|
-
resolve();
|
1647
|
-
})["catch"](function(e) {
|
1648
|
-
reject(e);
|
1649
|
-
});
|
1650
|
-
}, function(sqlError) {
|
1651
|
-
reject(sqlError);
|
1652
|
-
});
|
1653
|
-
});
|
1654
|
-
});
|
1655
|
-
}
|
1656
|
-
executeCallback(promise, callback);
|
1657
|
-
return promise;
|
1658
|
-
}
|
1659
|
-
var webSQLStorage = {
|
1660
|
-
_driver: "webSQLStorage",
|
1661
|
-
_initStorage: _initStorage$1,
|
1662
|
-
_support: isWebSQLValid(),
|
1663
|
-
iterate: iterate$1,
|
1664
|
-
getItem: getItem$1,
|
1665
|
-
setItem: setItem$1,
|
1666
|
-
removeItem: removeItem$1,
|
1667
|
-
clear: clear$1,
|
1668
|
-
length: length$1,
|
1669
|
-
key: key$1,
|
1670
|
-
keys: keys$1,
|
1671
|
-
dropInstance: dropInstance$1
|
1672
|
-
};
|
1673
|
-
function isLocalStorageValid() {
|
1674
|
-
try {
|
1675
|
-
return typeof localStorage !== "undefined" && "setItem" in localStorage && // in IE8 typeof localStorage.setItem === 'object'
|
1676
|
-
!!localStorage.setItem;
|
1677
|
-
} catch (e) {
|
1678
|
-
return false;
|
1679
|
-
}
|
1680
|
-
}
|
1681
|
-
function _getKeyPrefix(options, defaultConfig) {
|
1682
|
-
var keyPrefix = options.name + "/";
|
1683
|
-
if (options.storeName !== defaultConfig.storeName) {
|
1684
|
-
keyPrefix += options.storeName + "/";
|
1685
|
-
}
|
1686
|
-
return keyPrefix;
|
1687
|
-
}
|
1688
|
-
function checkIfLocalStorageThrows() {
|
1689
|
-
var localStorageTestKey = "_localforage_support_test";
|
1690
|
-
try {
|
1691
|
-
localStorage.setItem(localStorageTestKey, true);
|
1692
|
-
localStorage.removeItem(localStorageTestKey);
|
1693
|
-
return false;
|
1694
|
-
} catch (e) {
|
1695
|
-
return true;
|
1696
|
-
}
|
1697
|
-
}
|
1698
|
-
function _isLocalStorageUsable() {
|
1699
|
-
return !checkIfLocalStorageThrows() || localStorage.length > 0;
|
1700
|
-
}
|
1701
|
-
function _initStorage$2(options) {
|
1702
|
-
var self2 = this;
|
1703
|
-
var dbInfo = {};
|
1704
|
-
if (options) {
|
1705
|
-
for (var i in options) {
|
1706
|
-
dbInfo[i] = options[i];
|
1707
|
-
}
|
1708
|
-
}
|
1709
|
-
dbInfo.keyPrefix = _getKeyPrefix(options, self2._defaultConfig);
|
1710
|
-
if (!_isLocalStorageUsable()) {
|
1711
|
-
return Promise$1.reject();
|
1712
|
-
}
|
1713
|
-
self2._dbInfo = dbInfo;
|
1714
|
-
dbInfo.serializer = localforageSerializer;
|
1715
|
-
return Promise$1.resolve();
|
1716
|
-
}
|
1717
|
-
function clear$2(callback) {
|
1718
|
-
var self2 = this;
|
1719
|
-
var promise = self2.ready().then(function() {
|
1720
|
-
var keyPrefix = self2._dbInfo.keyPrefix;
|
1721
|
-
for (var i = localStorage.length - 1; i >= 0; i--) {
|
1722
|
-
var key2 = localStorage.key(i);
|
1723
|
-
if (key2.indexOf(keyPrefix) === 0) {
|
1724
|
-
localStorage.removeItem(key2);
|
1725
|
-
}
|
1726
|
-
}
|
1727
|
-
});
|
1728
|
-
executeCallback(promise, callback);
|
1729
|
-
return promise;
|
1730
|
-
}
|
1731
|
-
function getItem$2(key2, callback) {
|
1732
|
-
var self2 = this;
|
1733
|
-
key2 = normalizeKey(key2);
|
1734
|
-
var promise = self2.ready().then(function() {
|
1735
|
-
var dbInfo = self2._dbInfo;
|
1736
|
-
var result = localStorage.getItem(dbInfo.keyPrefix + key2);
|
1737
|
-
if (result) {
|
1738
|
-
result = dbInfo.serializer.deserialize(result);
|
1739
|
-
}
|
1740
|
-
return result;
|
1741
|
-
});
|
1742
|
-
executeCallback(promise, callback);
|
1743
|
-
return promise;
|
1744
|
-
}
|
1745
|
-
function iterate$2(iterator, callback) {
|
1746
|
-
var self2 = this;
|
1747
|
-
var promise = self2.ready().then(function() {
|
1748
|
-
var dbInfo = self2._dbInfo;
|
1749
|
-
var keyPrefix = dbInfo.keyPrefix;
|
1750
|
-
var keyPrefixLength = keyPrefix.length;
|
1751
|
-
var length2 = localStorage.length;
|
1752
|
-
var iterationNumber = 1;
|
1753
|
-
for (var i = 0; i < length2; i++) {
|
1754
|
-
var key2 = localStorage.key(i);
|
1755
|
-
if (key2.indexOf(keyPrefix) !== 0) {
|
1756
|
-
continue;
|
1757
|
-
}
|
1758
|
-
var value = localStorage.getItem(key2);
|
1759
|
-
if (value) {
|
1760
|
-
value = dbInfo.serializer.deserialize(value);
|
1761
|
-
}
|
1762
|
-
value = iterator(value, key2.substring(keyPrefixLength), iterationNumber++);
|
1763
|
-
if (value !== void 0) {
|
1764
|
-
return value;
|
1765
|
-
}
|
1766
|
-
}
|
1767
|
-
});
|
1768
|
-
executeCallback(promise, callback);
|
1769
|
-
return promise;
|
1770
|
-
}
|
1771
|
-
function key$2(n, callback) {
|
1772
|
-
var self2 = this;
|
1773
|
-
var promise = self2.ready().then(function() {
|
1774
|
-
var dbInfo = self2._dbInfo;
|
1775
|
-
var result;
|
1776
|
-
try {
|
1777
|
-
result = localStorage.key(n);
|
1778
|
-
} catch (error) {
|
1779
|
-
result = null;
|
1780
|
-
}
|
1781
|
-
if (result) {
|
1782
|
-
result = result.substring(dbInfo.keyPrefix.length);
|
1783
|
-
}
|
1784
|
-
return result;
|
1785
|
-
});
|
1786
|
-
executeCallback(promise, callback);
|
1787
|
-
return promise;
|
1788
|
-
}
|
1789
|
-
function keys$2(callback) {
|
1790
|
-
var self2 = this;
|
1791
|
-
var promise = self2.ready().then(function() {
|
1792
|
-
var dbInfo = self2._dbInfo;
|
1793
|
-
var length2 = localStorage.length;
|
1794
|
-
var keys2 = [];
|
1795
|
-
for (var i = 0; i < length2; i++) {
|
1796
|
-
var itemKey = localStorage.key(i);
|
1797
|
-
if (itemKey.indexOf(dbInfo.keyPrefix) === 0) {
|
1798
|
-
keys2.push(itemKey.substring(dbInfo.keyPrefix.length));
|
1799
|
-
}
|
1800
|
-
}
|
1801
|
-
return keys2;
|
1802
|
-
});
|
1803
|
-
executeCallback(promise, callback);
|
1804
|
-
return promise;
|
1805
|
-
}
|
1806
|
-
function length$2(callback) {
|
1807
|
-
var self2 = this;
|
1808
|
-
var promise = self2.keys().then(function(keys2) {
|
1809
|
-
return keys2.length;
|
1810
|
-
});
|
1811
|
-
executeCallback(promise, callback);
|
1812
|
-
return promise;
|
1813
|
-
}
|
1814
|
-
function removeItem$2(key2, callback) {
|
1815
|
-
var self2 = this;
|
1816
|
-
key2 = normalizeKey(key2);
|
1817
|
-
var promise = self2.ready().then(function() {
|
1818
|
-
var dbInfo = self2._dbInfo;
|
1819
|
-
localStorage.removeItem(dbInfo.keyPrefix + key2);
|
1820
|
-
});
|
1821
|
-
executeCallback(promise, callback);
|
1822
|
-
return promise;
|
1823
|
-
}
|
1824
|
-
function setItem$2(key2, value, callback) {
|
1825
|
-
var self2 = this;
|
1826
|
-
key2 = normalizeKey(key2);
|
1827
|
-
var promise = self2.ready().then(function() {
|
1828
|
-
if (value === void 0) {
|
1829
|
-
value = null;
|
1830
|
-
}
|
1831
|
-
var originalValue = value;
|
1832
|
-
return new Promise$1(function(resolve, reject) {
|
1833
|
-
var dbInfo = self2._dbInfo;
|
1834
|
-
dbInfo.serializer.serialize(value, function(value2, error) {
|
1835
|
-
if (error) {
|
1836
|
-
reject(error);
|
1837
|
-
} else {
|
1838
|
-
try {
|
1839
|
-
localStorage.setItem(dbInfo.keyPrefix + key2, value2);
|
1840
|
-
resolve(originalValue);
|
1841
|
-
} catch (e) {
|
1842
|
-
if (e.name === "QuotaExceededError" || e.name === "NS_ERROR_DOM_QUOTA_REACHED") {
|
1843
|
-
reject(e);
|
1844
|
-
}
|
1845
|
-
reject(e);
|
1846
|
-
}
|
1847
|
-
}
|
1848
|
-
});
|
1849
|
-
});
|
1850
|
-
});
|
1851
|
-
executeCallback(promise, callback);
|
1852
|
-
return promise;
|
1853
|
-
}
|
1854
|
-
function dropInstance$2(options, callback) {
|
1855
|
-
callback = getCallback.apply(this, arguments);
|
1856
|
-
options = typeof options !== "function" && options || {};
|
1857
|
-
if (!options.name) {
|
1858
|
-
var currentConfig = this.config();
|
1859
|
-
options.name = options.name || currentConfig.name;
|
1860
|
-
options.storeName = options.storeName || currentConfig.storeName;
|
1861
|
-
}
|
1862
|
-
var self2 = this;
|
1863
|
-
var promise;
|
1864
|
-
if (!options.name) {
|
1865
|
-
promise = Promise$1.reject("Invalid arguments");
|
1866
|
-
} else {
|
1867
|
-
promise = new Promise$1(function(resolve) {
|
1868
|
-
if (!options.storeName) {
|
1869
|
-
resolve(options.name + "/");
|
1870
|
-
} else {
|
1871
|
-
resolve(_getKeyPrefix(options, self2._defaultConfig));
|
1872
|
-
}
|
1873
|
-
}).then(function(keyPrefix) {
|
1874
|
-
for (var i = localStorage.length - 1; i >= 0; i--) {
|
1875
|
-
var key2 = localStorage.key(i);
|
1876
|
-
if (key2.indexOf(keyPrefix) === 0) {
|
1877
|
-
localStorage.removeItem(key2);
|
1878
|
-
}
|
1879
|
-
}
|
1880
|
-
});
|
1881
|
-
}
|
1882
|
-
executeCallback(promise, callback);
|
1883
|
-
return promise;
|
1884
|
-
}
|
1885
|
-
var localStorageWrapper = {
|
1886
|
-
_driver: "localStorageWrapper",
|
1887
|
-
_initStorage: _initStorage$2,
|
1888
|
-
_support: isLocalStorageValid(),
|
1889
|
-
iterate: iterate$2,
|
1890
|
-
getItem: getItem$2,
|
1891
|
-
setItem: setItem$2,
|
1892
|
-
removeItem: removeItem$2,
|
1893
|
-
clear: clear$2,
|
1894
|
-
length: length$2,
|
1895
|
-
key: key$2,
|
1896
|
-
keys: keys$2,
|
1897
|
-
dropInstance: dropInstance$2
|
1898
|
-
};
|
1899
|
-
var sameValue = function sameValue2(x, y) {
|
1900
|
-
return x === y || typeof x === "number" && typeof y === "number" && isNaN(x) && isNaN(y);
|
1901
|
-
};
|
1902
|
-
var includes = function includes2(array, searchElement) {
|
1903
|
-
var len = array.length;
|
1904
|
-
var i = 0;
|
1905
|
-
while (i < len) {
|
1906
|
-
if (sameValue(array[i], searchElement)) {
|
1907
|
-
return true;
|
1908
|
-
}
|
1909
|
-
i++;
|
1910
|
-
}
|
1911
|
-
return false;
|
1912
|
-
};
|
1913
|
-
var isArray = Array.isArray || function(arg) {
|
1914
|
-
return Object.prototype.toString.call(arg) === "[object Array]";
|
1915
|
-
};
|
1916
|
-
var DefinedDrivers = {};
|
1917
|
-
var DriverSupport = {};
|
1918
|
-
var DefaultDrivers = {
|
1919
|
-
INDEXEDDB: asyncStorage,
|
1920
|
-
WEBSQL: webSQLStorage,
|
1921
|
-
LOCALSTORAGE: localStorageWrapper
|
1922
|
-
};
|
1923
|
-
var DefaultDriverOrder = [DefaultDrivers.INDEXEDDB._driver, DefaultDrivers.WEBSQL._driver, DefaultDrivers.LOCALSTORAGE._driver];
|
1924
|
-
var OptionalDriverMethods = ["dropInstance"];
|
1925
|
-
var LibraryMethods = ["clear", "getItem", "iterate", "key", "keys", "length", "removeItem", "setItem"].concat(OptionalDriverMethods);
|
1926
|
-
var DefaultConfig = {
|
1927
|
-
description: "",
|
1928
|
-
driver: DefaultDriverOrder.slice(),
|
1929
|
-
name: "localforage",
|
1930
|
-
// Default DB size is _JUST UNDER_ 5MB, as it's the highest size
|
1931
|
-
// we can use without a prompt.
|
1932
|
-
size: 4980736,
|
1933
|
-
storeName: "keyvaluepairs",
|
1934
|
-
version: 1
|
1935
|
-
};
|
1936
|
-
function callWhenReady(localForageInstance, libraryMethod) {
|
1937
|
-
localForageInstance[libraryMethod] = function() {
|
1938
|
-
var _args = arguments;
|
1939
|
-
return localForageInstance.ready().then(function() {
|
1940
|
-
return localForageInstance[libraryMethod].apply(localForageInstance, _args);
|
1941
|
-
});
|
1942
|
-
};
|
1943
|
-
}
|
1944
|
-
function extend() {
|
1945
|
-
for (var i = 1; i < arguments.length; i++) {
|
1946
|
-
var arg = arguments[i];
|
1947
|
-
if (arg) {
|
1948
|
-
for (var _key in arg) {
|
1949
|
-
if (arg.hasOwnProperty(_key)) {
|
1950
|
-
if (isArray(arg[_key])) {
|
1951
|
-
arguments[0][_key] = arg[_key].slice();
|
1952
|
-
} else {
|
1953
|
-
arguments[0][_key] = arg[_key];
|
1954
|
-
}
|
1955
|
-
}
|
1956
|
-
}
|
1957
|
-
}
|
1958
|
-
}
|
1959
|
-
return arguments[0];
|
1960
|
-
}
|
1961
|
-
var LocalForage = function() {
|
1962
|
-
function LocalForage2(options) {
|
1963
|
-
_classCallCheck(this, LocalForage2);
|
1964
|
-
for (var driverTypeKey in DefaultDrivers) {
|
1965
|
-
if (DefaultDrivers.hasOwnProperty(driverTypeKey)) {
|
1966
|
-
var driver = DefaultDrivers[driverTypeKey];
|
1967
|
-
var driverName = driver._driver;
|
1968
|
-
this[driverTypeKey] = driverName;
|
1969
|
-
if (!DefinedDrivers[driverName]) {
|
1970
|
-
this.defineDriver(driver);
|
1971
|
-
}
|
1972
|
-
}
|
1973
|
-
}
|
1974
|
-
this._defaultConfig = extend({}, DefaultConfig);
|
1975
|
-
this._config = extend({}, this._defaultConfig, options);
|
1976
|
-
this._driverSet = null;
|
1977
|
-
this._initDriver = null;
|
1978
|
-
this._ready = false;
|
1979
|
-
this._dbInfo = null;
|
1980
|
-
this._wrapLibraryMethodsWithReady();
|
1981
|
-
this.setDriver(this._config.driver)["catch"](function() {
|
1982
|
-
});
|
1983
|
-
}
|
1984
|
-
LocalForage2.prototype.config = function config(options) {
|
1985
|
-
if ((typeof options === "undefined" ? "undefined" : _typeof(options)) === "object") {
|
1986
|
-
if (this._ready) {
|
1987
|
-
return new Error("Can't call config() after localforage has been used.");
|
1988
|
-
}
|
1989
|
-
for (var i in options) {
|
1990
|
-
if (i === "storeName") {
|
1991
|
-
options[i] = options[i].replace(/\W/g, "_");
|
1992
|
-
}
|
1993
|
-
if (i === "version" && typeof options[i] !== "number") {
|
1994
|
-
return new Error("Database version must be a number.");
|
1995
|
-
}
|
1996
|
-
this._config[i] = options[i];
|
1997
|
-
}
|
1998
|
-
if ("driver" in options && options.driver) {
|
1999
|
-
return this.setDriver(this._config.driver);
|
2000
|
-
}
|
2001
|
-
return true;
|
2002
|
-
} else if (typeof options === "string") {
|
2003
|
-
return this._config[options];
|
2004
|
-
} else {
|
2005
|
-
return this._config;
|
2006
|
-
}
|
2007
|
-
};
|
2008
|
-
LocalForage2.prototype.defineDriver = function defineDriver(driverObject, callback, errorCallback) {
|
2009
|
-
var promise = new Promise$1(function(resolve, reject) {
|
2010
|
-
try {
|
2011
|
-
var driverName = driverObject._driver;
|
2012
|
-
var complianceError = new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver");
|
2013
|
-
if (!driverObject._driver) {
|
2014
|
-
reject(complianceError);
|
2015
|
-
return;
|
2016
|
-
}
|
2017
|
-
var driverMethods = LibraryMethods.concat("_initStorage");
|
2018
|
-
for (var i = 0, len = driverMethods.length; i < len; i++) {
|
2019
|
-
var driverMethodName = driverMethods[i];
|
2020
|
-
var isRequired = !includes(OptionalDriverMethods, driverMethodName);
|
2021
|
-
if ((isRequired || driverObject[driverMethodName]) && typeof driverObject[driverMethodName] !== "function") {
|
2022
|
-
reject(complianceError);
|
2023
|
-
return;
|
2024
|
-
}
|
2025
|
-
}
|
2026
|
-
var configureMissingMethods = function configureMissingMethods2() {
|
2027
|
-
var methodNotImplementedFactory = function methodNotImplementedFactory2(methodName) {
|
2028
|
-
return function() {
|
2029
|
-
var error = new Error("Method " + methodName + " is not implemented by the current driver");
|
2030
|
-
var promise2 = Promise$1.reject(error);
|
2031
|
-
executeCallback(promise2, arguments[arguments.length - 1]);
|
2032
|
-
return promise2;
|
2033
|
-
};
|
2034
|
-
};
|
2035
|
-
for (var _i = 0, _len = OptionalDriverMethods.length; _i < _len; _i++) {
|
2036
|
-
var optionalDriverMethod = OptionalDriverMethods[_i];
|
2037
|
-
if (!driverObject[optionalDriverMethod]) {
|
2038
|
-
driverObject[optionalDriverMethod] = methodNotImplementedFactory(optionalDriverMethod);
|
2039
|
-
}
|
2040
|
-
}
|
2041
|
-
};
|
2042
|
-
configureMissingMethods();
|
2043
|
-
var setDriverSupport = function setDriverSupport2(support) {
|
2044
|
-
if (DefinedDrivers[driverName]) {
|
2045
|
-
console.info("Redefining LocalForage driver: " + driverName);
|
2046
|
-
}
|
2047
|
-
DefinedDrivers[driverName] = driverObject;
|
2048
|
-
DriverSupport[driverName] = support;
|
2049
|
-
resolve();
|
2050
|
-
};
|
2051
|
-
if ("_support" in driverObject) {
|
2052
|
-
if (driverObject._support && typeof driverObject._support === "function") {
|
2053
|
-
driverObject._support().then(setDriverSupport, reject);
|
2054
|
-
} else {
|
2055
|
-
setDriverSupport(!!driverObject._support);
|
2056
|
-
}
|
2057
|
-
} else {
|
2058
|
-
setDriverSupport(true);
|
2059
|
-
}
|
2060
|
-
} catch (e) {
|
2061
|
-
reject(e);
|
2062
|
-
}
|
2063
|
-
});
|
2064
|
-
executeTwoCallbacks(promise, callback, errorCallback);
|
2065
|
-
return promise;
|
2066
|
-
};
|
2067
|
-
LocalForage2.prototype.driver = function driver() {
|
2068
|
-
return this._driver || null;
|
2069
|
-
};
|
2070
|
-
LocalForage2.prototype.getDriver = function getDriver(driverName, callback, errorCallback) {
|
2071
|
-
var getDriverPromise = DefinedDrivers[driverName] ? Promise$1.resolve(DefinedDrivers[driverName]) : Promise$1.reject(new Error("Driver not found."));
|
2072
|
-
executeTwoCallbacks(getDriverPromise, callback, errorCallback);
|
2073
|
-
return getDriverPromise;
|
2074
|
-
};
|
2075
|
-
LocalForage2.prototype.getSerializer = function getSerializer(callback) {
|
2076
|
-
var serializerPromise = Promise$1.resolve(localforageSerializer);
|
2077
|
-
executeTwoCallbacks(serializerPromise, callback);
|
2078
|
-
return serializerPromise;
|
2079
|
-
};
|
2080
|
-
LocalForage2.prototype.ready = function ready(callback) {
|
2081
|
-
var self2 = this;
|
2082
|
-
var promise = self2._driverSet.then(function() {
|
2083
|
-
if (self2._ready === null) {
|
2084
|
-
self2._ready = self2._initDriver();
|
2085
|
-
}
|
2086
|
-
return self2._ready;
|
2087
|
-
});
|
2088
|
-
executeTwoCallbacks(promise, callback, callback);
|
2089
|
-
return promise;
|
2090
|
-
};
|
2091
|
-
LocalForage2.prototype.setDriver = function setDriver(drivers, callback, errorCallback) {
|
2092
|
-
var self2 = this;
|
2093
|
-
if (!isArray(drivers)) {
|
2094
|
-
drivers = [drivers];
|
2095
|
-
}
|
2096
|
-
var supportedDrivers = this._getSupportedDrivers(drivers);
|
2097
|
-
function setDriverToConfig() {
|
2098
|
-
self2._config.driver = self2.driver();
|
2099
|
-
}
|
2100
|
-
function extendSelfWithDriver(driver) {
|
2101
|
-
self2._extend(driver);
|
2102
|
-
setDriverToConfig();
|
2103
|
-
self2._ready = self2._initStorage(self2._config);
|
2104
|
-
return self2._ready;
|
2105
|
-
}
|
2106
|
-
function initDriver(supportedDrivers2) {
|
2107
|
-
return function() {
|
2108
|
-
var currentDriverIndex = 0;
|
2109
|
-
function driverPromiseLoop() {
|
2110
|
-
while (currentDriverIndex < supportedDrivers2.length) {
|
2111
|
-
var driverName = supportedDrivers2[currentDriverIndex];
|
2112
|
-
currentDriverIndex++;
|
2113
|
-
self2._dbInfo = null;
|
2114
|
-
self2._ready = null;
|
2115
|
-
return self2.getDriver(driverName).then(extendSelfWithDriver)["catch"](driverPromiseLoop);
|
2116
|
-
}
|
2117
|
-
setDriverToConfig();
|
2118
|
-
var error = new Error("No available storage method found.");
|
2119
|
-
self2._driverSet = Promise$1.reject(error);
|
2120
|
-
return self2._driverSet;
|
2121
|
-
}
|
2122
|
-
return driverPromiseLoop();
|
2123
|
-
};
|
2124
|
-
}
|
2125
|
-
var oldDriverSetDone = this._driverSet !== null ? this._driverSet["catch"](function() {
|
2126
|
-
return Promise$1.resolve();
|
2127
|
-
}) : Promise$1.resolve();
|
2128
|
-
this._driverSet = oldDriverSetDone.then(function() {
|
2129
|
-
var driverName = supportedDrivers[0];
|
2130
|
-
self2._dbInfo = null;
|
2131
|
-
self2._ready = null;
|
2132
|
-
return self2.getDriver(driverName).then(function(driver) {
|
2133
|
-
self2._driver = driver._driver;
|
2134
|
-
setDriverToConfig();
|
2135
|
-
self2._wrapLibraryMethodsWithReady();
|
2136
|
-
self2._initDriver = initDriver(supportedDrivers);
|
2137
|
-
});
|
2138
|
-
})["catch"](function() {
|
2139
|
-
setDriverToConfig();
|
2140
|
-
var error = new Error("No available storage method found.");
|
2141
|
-
self2._driverSet = Promise$1.reject(error);
|
2142
|
-
return self2._driverSet;
|
2143
|
-
});
|
2144
|
-
executeTwoCallbacks(this._driverSet, callback, errorCallback);
|
2145
|
-
return this._driverSet;
|
2146
|
-
};
|
2147
|
-
LocalForage2.prototype.supports = function supports(driverName) {
|
2148
|
-
return !!DriverSupport[driverName];
|
2149
|
-
};
|
2150
|
-
LocalForage2.prototype._extend = function _extend(libraryMethodsAndProperties) {
|
2151
|
-
extend(this, libraryMethodsAndProperties);
|
2152
|
-
};
|
2153
|
-
LocalForage2.prototype._getSupportedDrivers = function _getSupportedDrivers(drivers) {
|
2154
|
-
var supportedDrivers = [];
|
2155
|
-
for (var i = 0, len = drivers.length; i < len; i++) {
|
2156
|
-
var driverName = drivers[i];
|
2157
|
-
if (this.supports(driverName)) {
|
2158
|
-
supportedDrivers.push(driverName);
|
2159
|
-
}
|
2160
|
-
}
|
2161
|
-
return supportedDrivers;
|
2162
|
-
};
|
2163
|
-
LocalForage2.prototype._wrapLibraryMethodsWithReady = function _wrapLibraryMethodsWithReady() {
|
2164
|
-
for (var i = 0, len = LibraryMethods.length; i < len; i++) {
|
2165
|
-
callWhenReady(this, LibraryMethods[i]);
|
2166
|
-
}
|
2167
|
-
};
|
2168
|
-
LocalForage2.prototype.createInstance = function createInstance(options) {
|
2169
|
-
return new LocalForage2(options);
|
2170
|
-
};
|
2171
|
-
return LocalForage2;
|
2172
|
-
}();
|
2173
|
-
var localforage_js = new LocalForage();
|
2174
|
-
module4.exports = localforage_js;
|
2175
|
-
}, { "3": 3 }] }, {}, [4])(4);
|
2176
|
-
});
|
2177
|
-
}
|
2178
|
-
});
|
2179
|
-
|
2180
|
-
// ../../node_modules/localforage-driver-memory/_bundle/umd.js
|
2181
|
-
var require_umd = __commonJS({
|
2182
|
-
"../../node_modules/localforage-driver-memory/_bundle/umd.js"(exports, module2) {
|
2183
|
-
"use strict";
|
2184
|
-
(function(global2, factory) {
|
2185
|
-
typeof exports === "object" && typeof module2 !== "undefined" ? factory(exports) : typeof define === "function" && define.amd ? define("localforage-driver-memory", ["exports"], factory) : factory(global2.LocalforageDriverMemory = {});
|
2186
|
-
})(typeof self !== "undefined" ? self : exports, function(exports2) {
|
2187
|
-
"use strict";
|
2188
|
-
var _driver2 = "localforage-driver-memory";
|
2189
|
-
function __values(o) {
|
2190
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
|
2191
|
-
if (m) return m.call(o);
|
2192
|
-
return {
|
2193
|
-
next: function() {
|
2194
|
-
if (o && i >= o.length) o = void 0;
|
2195
|
-
return { value: o && o[i++], done: !o };
|
2196
|
-
}
|
2197
|
-
};
|
2198
|
-
}
|
2199
|
-
function createBlob(parts, properties) {
|
2200
|
-
parts = parts || [];
|
2201
|
-
properties = properties || {};
|
2202
|
-
try {
|
2203
|
-
return new Blob(parts, properties);
|
2204
|
-
} catch (e) {
|
2205
|
-
if (e.name !== "TypeError") {
|
2206
|
-
throw e;
|
2207
|
-
}
|
2208
|
-
var Builder = typeof BlobBuilder !== "undefined" ? BlobBuilder : typeof MSBlobBuilder !== "undefined" ? MSBlobBuilder : typeof MozBlobBuilder !== "undefined" ? MozBlobBuilder : WebKitBlobBuilder;
|
2209
|
-
var builder = new Builder();
|
2210
|
-
for (var i = 0; i < parts.length; i += 1) {
|
2211
|
-
builder.append(parts[i]);
|
2212
|
-
}
|
2213
|
-
return builder.getBlob(properties.type);
|
2214
|
-
}
|
2215
|
-
}
|
2216
|
-
var BLOB_TYPE_PREFIX_REGEX = /^~~local_forage_type~([^~]+)~/;
|
2217
|
-
var SERIALIZED_MARKER_LENGTH = "__lfsc__:".length;
|
2218
|
-
var TYPE_SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER_LENGTH + "arbf".length;
|
2219
|
-
var toString = Object.prototype.toString;
|
2220
|
-
function stringToBuffer(serializedString) {
|
2221
|
-
var bufferLength = serializedString.length * 0.75;
|
2222
|
-
var len = serializedString.length;
|
2223
|
-
if (serializedString[serializedString.length - 1] === "=") {
|
2224
|
-
bufferLength--;
|
2225
|
-
if (serializedString[serializedString.length - 2] === "=") {
|
2226
|
-
bufferLength--;
|
2227
|
-
}
|
2228
|
-
}
|
2229
|
-
var buffer = new ArrayBuffer(bufferLength);
|
2230
|
-
var bytes = new Uint8Array(buffer);
|
2231
|
-
for (var i = 0, p = 0; i < len; i += 4) {
|
2232
|
-
var encoded1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(serializedString[i]);
|
2233
|
-
var encoded2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(serializedString[i + 1]);
|
2234
|
-
var encoded3 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(serializedString[i + 2]);
|
2235
|
-
var encoded4 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(serializedString[i + 3]);
|
2236
|
-
bytes[p++] = encoded1 << 2 | encoded2 >> 4;
|
2237
|
-
bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;
|
2238
|
-
bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;
|
2239
|
-
}
|
2240
|
-
return buffer;
|
2241
|
-
}
|
2242
|
-
function bufferToString(buffer) {
|
2243
|
-
var bytes = new Uint8Array(buffer);
|
2244
|
-
var base64String = "";
|
2245
|
-
for (var i = 0; i < bytes.length; i += 3) {
|
2246
|
-
base64String += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[bytes[i] >> 2];
|
2247
|
-
base64String += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4];
|
2248
|
-
base64String += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6];
|
2249
|
-
base64String += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[bytes[i + 2] & 63];
|
2250
|
-
}
|
2251
|
-
if (bytes.length % 3 === 2) {
|
2252
|
-
base64String = base64String.substring(0, base64String.length - 1) + "=";
|
2253
|
-
} else if (bytes.length % 3 === 1) {
|
2254
|
-
base64String = base64String.substring(0, base64String.length - 2) + "==";
|
2255
|
-
}
|
2256
|
-
return base64String;
|
2257
|
-
}
|
2258
|
-
function serialize(value, callback) {
|
2259
|
-
var valueType = "";
|
2260
|
-
if (value) {
|
2261
|
-
valueType = toString.call(value);
|
2262
|
-
}
|
2263
|
-
if (value && (valueType === "[object ArrayBuffer]" || value.buffer && toString.call(value.buffer) === "[object ArrayBuffer]")) {
|
2264
|
-
var buffer = void 0;
|
2265
|
-
var marker = "__lfsc__:";
|
2266
|
-
if (value instanceof ArrayBuffer) {
|
2267
|
-
buffer = value;
|
2268
|
-
marker += "arbf";
|
2269
|
-
} else {
|
2270
|
-
buffer = value.buffer;
|
2271
|
-
if (valueType === "[object Int8Array]") {
|
2272
|
-
marker += "si08";
|
2273
|
-
} else if (valueType === "[object Uint8Array]") {
|
2274
|
-
marker += "ui08";
|
2275
|
-
} else if (valueType === "[object Uint8ClampedArray]") {
|
2276
|
-
marker += "uic8";
|
2277
|
-
} else if (valueType === "[object Int16Array]") {
|
2278
|
-
marker += "si16";
|
2279
|
-
} else if (valueType === "[object Uint16Array]") {
|
2280
|
-
marker += "ur16";
|
2281
|
-
} else if (valueType === "[object Int32Array]") {
|
2282
|
-
marker += "si32";
|
2283
|
-
} else if (valueType === "[object Uint32Array]") {
|
2284
|
-
marker += "ui32";
|
2285
|
-
} else if (valueType === "[object Float32Array]") {
|
2286
|
-
marker += "fl32";
|
2287
|
-
} else if (valueType === "[object Float64Array]") {
|
2288
|
-
marker += "fl64";
|
2289
|
-
} else {
|
2290
|
-
callback(new Error("Failed to get type for BinaryArray"));
|
2291
|
-
}
|
2292
|
-
}
|
2293
|
-
callback(marker + bufferToString(buffer));
|
2294
|
-
} else if (valueType === "[object Blob]") {
|
2295
|
-
var fileReader = new FileReader();
|
2296
|
-
fileReader.onload = function() {
|
2297
|
-
var str = "~~local_forage_type~" + value.type + "~" + bufferToString(this.result);
|
2298
|
-
callback("__lfsc__:blob" + str);
|
2299
|
-
};
|
2300
|
-
fileReader.readAsArrayBuffer(value);
|
2301
|
-
} else {
|
2302
|
-
try {
|
2303
|
-
callback(JSON.stringify(value));
|
2304
|
-
} catch (e) {
|
2305
|
-
console.error("Couldn't convert value into a JSON string: ", value);
|
2306
|
-
callback(null, e);
|
2307
|
-
}
|
2308
|
-
}
|
2309
|
-
}
|
2310
|
-
function deserialize(value) {
|
2311
|
-
if (value.substring(0, SERIALIZED_MARKER_LENGTH) !== "__lfsc__:") {
|
2312
|
-
return JSON.parse(value);
|
2313
|
-
}
|
2314
|
-
var serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH);
|
2315
|
-
var type = value.substring(SERIALIZED_MARKER_LENGTH, TYPE_SERIALIZED_MARKER_LENGTH);
|
2316
|
-
var blobType;
|
2317
|
-
if (type === "blob" && BLOB_TYPE_PREFIX_REGEX.test(serializedString)) {
|
2318
|
-
var matcher = serializedString.match(BLOB_TYPE_PREFIX_REGEX);
|
2319
|
-
blobType = matcher[1];
|
2320
|
-
serializedString = serializedString.substring(matcher[0].length);
|
2321
|
-
}
|
2322
|
-
var buffer = stringToBuffer(serializedString);
|
2323
|
-
switch (type) {
|
2324
|
-
case "arbf":
|
2325
|
-
return buffer;
|
2326
|
-
case "blob":
|
2327
|
-
return createBlob([buffer], { type: blobType });
|
2328
|
-
case "si08":
|
2329
|
-
return new Int8Array(buffer);
|
2330
|
-
case "ui08":
|
2331
|
-
return new Uint8Array(buffer);
|
2332
|
-
case "uic8":
|
2333
|
-
return new Uint8ClampedArray(buffer);
|
2334
|
-
case "si16":
|
2335
|
-
return new Int16Array(buffer);
|
2336
|
-
case "ur16":
|
2337
|
-
return new Uint16Array(buffer);
|
2338
|
-
case "si32":
|
2339
|
-
return new Int32Array(buffer);
|
2340
|
-
case "ui32":
|
2341
|
-
return new Uint32Array(buffer);
|
2342
|
-
case "fl32":
|
2343
|
-
return new Float32Array(buffer);
|
2344
|
-
case "fl64":
|
2345
|
-
return new Float64Array(buffer);
|
2346
|
-
default:
|
2347
|
-
throw new Error("Unkown type: " + type);
|
2348
|
-
}
|
2349
|
-
}
|
2350
|
-
function clone(obj) {
|
2351
|
-
var e_1, _a;
|
2352
|
-
if (obj === null || typeof obj !== "object" || "isActiveClone" in obj) {
|
2353
|
-
return obj;
|
2354
|
-
}
|
2355
|
-
var temp = obj instanceof Date ? new Date(obj) : obj.constructor();
|
2356
|
-
try {
|
2357
|
-
for (var _b = __values(Object.keys(obj)), _c = _b.next(); !_c.done; _c = _b.next()) {
|
2358
|
-
var key2 = _c.value;
|
2359
|
-
if (Object.prototype.hasOwnProperty.call(obj, key2)) {
|
2360
|
-
obj["isActiveClone"] = null;
|
2361
|
-
temp[key2] = clone(obj[key2]);
|
2362
|
-
delete obj["isActiveClone"];
|
2363
|
-
}
|
2364
|
-
}
|
2365
|
-
} catch (e_1_1) {
|
2366
|
-
e_1 = { error: e_1_1 };
|
2367
|
-
} finally {
|
2368
|
-
try {
|
2369
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
2370
|
-
} finally {
|
2371
|
-
if (e_1) throw e_1.error;
|
2372
|
-
}
|
2373
|
-
}
|
2374
|
-
return temp;
|
2375
|
-
}
|
2376
|
-
function getKeyPrefix(options, defaultConfig) {
|
2377
|
-
return (options.name || defaultConfig.name) + "/" + (options.storeName || defaultConfig.storeName) + "/";
|
2378
|
-
}
|
2379
|
-
function executeCallback(promise, callback) {
|
2380
|
-
if (callback) {
|
2381
|
-
promise.then(function(result) {
|
2382
|
-
callback(null, result);
|
2383
|
-
}, function(error) {
|
2384
|
-
callback(error);
|
2385
|
-
});
|
2386
|
-
}
|
2387
|
-
}
|
2388
|
-
function getCallback() {
|
2389
|
-
var _args = [];
|
2390
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
2391
|
-
_args[_i] = arguments[_i];
|
2392
|
-
}
|
2393
|
-
if (arguments.length && typeof arguments[arguments.length - 1] === "function") {
|
2394
|
-
return arguments[arguments.length - 1];
|
2395
|
-
}
|
2396
|
-
}
|
2397
|
-
function dropInstanceCommon(options, callback) {
|
2398
|
-
var _this = this;
|
2399
|
-
callback = getCallback.apply(this, arguments);
|
2400
|
-
options = typeof options !== "function" && options || {};
|
2401
|
-
if (!options.name) {
|
2402
|
-
var currentConfig = this.config();
|
2403
|
-
options.name = options.name || currentConfig.name;
|
2404
|
-
options.storeName = options.storeName || currentConfig.storeName;
|
2405
|
-
}
|
2406
|
-
var promise;
|
2407
|
-
if (!options.name) {
|
2408
|
-
promise = Promise.reject("Invalid arguments");
|
2409
|
-
} else {
|
2410
|
-
promise = new Promise(function(resolve) {
|
2411
|
-
if (!options.storeName) {
|
2412
|
-
resolve(options.name + "/");
|
2413
|
-
} else {
|
2414
|
-
resolve(getKeyPrefix(options, _this._defaultConfig));
|
2415
|
-
}
|
2416
|
-
});
|
2417
|
-
}
|
2418
|
-
return { promise, callback };
|
2419
|
-
}
|
2420
|
-
function normaliseKey(key2) {
|
2421
|
-
if (typeof key2 !== "string") {
|
2422
|
-
console.warn(key2 + " used as a key, but it is not a string.");
|
2423
|
-
key2 = String(key2);
|
2424
|
-
}
|
2425
|
-
return key2;
|
2426
|
-
}
|
2427
|
-
var serialiser = {
|
2428
|
-
bufferToString,
|
2429
|
-
deserialize,
|
2430
|
-
serialize,
|
2431
|
-
stringToBuffer
|
2432
|
-
};
|
2433
|
-
var stores = {};
|
2434
|
-
var Store = (
|
2435
|
-
/** @class */
|
2436
|
-
function() {
|
2437
|
-
function Store2(kp) {
|
2438
|
-
this.kp = kp;
|
2439
|
-
this.data = {};
|
2440
|
-
}
|
2441
|
-
Store2.resolve = function(kp) {
|
2442
|
-
if (!stores[kp]) {
|
2443
|
-
stores[kp] = new Store2(kp);
|
2444
|
-
}
|
2445
|
-
return stores[kp];
|
2446
|
-
};
|
2447
|
-
Store2.prototype.clear = function() {
|
2448
|
-
this.data = {};
|
2449
|
-
};
|
2450
|
-
Store2.prototype.drop = function() {
|
2451
|
-
this.clear();
|
2452
|
-
delete stores[this.kp];
|
2453
|
-
};
|
2454
|
-
Store2.prototype.get = function(key2) {
|
2455
|
-
return this.data[key2];
|
2456
|
-
};
|
2457
|
-
Store2.prototype.key = function(idx) {
|
2458
|
-
return this.keys()[idx];
|
2459
|
-
};
|
2460
|
-
Store2.prototype.keys = function() {
|
2461
|
-
return Object.keys(this.data);
|
2462
|
-
};
|
2463
|
-
Store2.prototype.rm = function(k) {
|
2464
|
-
delete this.data[k];
|
2465
|
-
};
|
2466
|
-
Store2.prototype.set = function(k, v) {
|
2467
|
-
this.data[k] = v;
|
2468
|
-
};
|
2469
|
-
return Store2;
|
2470
|
-
}()
|
2471
|
-
);
|
2472
|
-
function _initStorage(options) {
|
2473
|
-
var opts = options ? clone(options) : {};
|
2474
|
-
var kp = getKeyPrefix(opts, this._defaultConfig);
|
2475
|
-
var store = Store.resolve(kp);
|
2476
|
-
this._dbInfo = opts;
|
2477
|
-
this._dbInfo.serializer = serialiser;
|
2478
|
-
this._dbInfo.keyPrefix = kp;
|
2479
|
-
this._dbInfo.mStore = store;
|
2480
|
-
return Promise.resolve();
|
2481
|
-
}
|
2482
|
-
function clear(callback) {
|
2483
|
-
var _this = this;
|
2484
|
-
var promise = this.ready().then(function() {
|
2485
|
-
_this._dbInfo.mStore.clear();
|
2486
|
-
});
|
2487
|
-
executeCallback(promise, callback);
|
2488
|
-
return promise;
|
2489
|
-
}
|
2490
|
-
function dropInstance(_options, _cb) {
|
2491
|
-
var _a = dropInstanceCommon.apply(this, arguments), promise = _a.promise, callback = _a.callback;
|
2492
|
-
var outPromise = promise.then(function(keyPrefix) {
|
2493
|
-
Store.resolve(keyPrefix).drop();
|
2494
|
-
});
|
2495
|
-
executeCallback(outPromise, callback);
|
2496
|
-
return promise;
|
2497
|
-
}
|
2498
|
-
function getItem(key$, callback) {
|
2499
|
-
var _this = this;
|
2500
|
-
key$ = normaliseKey(key$);
|
2501
|
-
var promise = this.ready().then(function() {
|
2502
|
-
var result = _this._dbInfo.mStore.get(key$);
|
2503
|
-
return result == null ? null : _this._dbInfo.serializer.deserialize(result);
|
2504
|
-
});
|
2505
|
-
executeCallback(promise, callback);
|
2506
|
-
return promise;
|
2507
|
-
}
|
2508
|
-
function iterate(iterator, callback) {
|
2509
|
-
var _this = this;
|
2510
|
-
var promise = this.ready().then(function() {
|
2511
|
-
var store = _this._dbInfo.mStore;
|
2512
|
-
var keys2 = store.keys();
|
2513
|
-
for (var i = 0; i < keys2.length; i++) {
|
2514
|
-
var value = store.get(keys2[i]);
|
2515
|
-
if (value) {
|
2516
|
-
value = _this._dbInfo.serializer.deserialize(value);
|
2517
|
-
}
|
2518
|
-
value = iterator(value, keys2[i], i + 1);
|
2519
|
-
if (value !== void 0) {
|
2520
|
-
return value;
|
2521
|
-
}
|
2522
|
-
}
|
2523
|
-
});
|
2524
|
-
executeCallback(promise, callback);
|
2525
|
-
return promise;
|
2526
|
-
}
|
2527
|
-
function key(idx, callback) {
|
2528
|
-
var _this = this;
|
2529
|
-
var promise = this.ready().then(function() {
|
2530
|
-
var result;
|
2531
|
-
try {
|
2532
|
-
result = _this._dbInfo.mStore.key(idx);
|
2533
|
-
if (result === void 0) {
|
2534
|
-
result = null;
|
2535
|
-
}
|
2536
|
-
} catch (_a) {
|
2537
|
-
result = null;
|
2538
|
-
}
|
2539
|
-
return result;
|
2540
|
-
});
|
2541
|
-
executeCallback(promise, callback);
|
2542
|
-
return promise;
|
2543
|
-
}
|
2544
|
-
function keys(callback) {
|
2545
|
-
var _this = this;
|
2546
|
-
var promise = this.ready().then(function() {
|
2547
|
-
return _this._dbInfo.mStore.keys();
|
2548
|
-
});
|
2549
|
-
executeCallback(promise, callback);
|
2550
|
-
return promise;
|
2551
|
-
}
|
2552
|
-
function length(callback) {
|
2553
|
-
var promise = this.keys().then(function(keys$) {
|
2554
|
-
return keys$.length;
|
2555
|
-
});
|
2556
|
-
executeCallback(promise, callback);
|
2557
|
-
return promise;
|
2558
|
-
}
|
2559
|
-
function removeItem(key$, callback) {
|
2560
|
-
var _this = this;
|
2561
|
-
key$ = normaliseKey(key$);
|
2562
|
-
var promise = this.ready().then(function() {
|
2563
|
-
_this._dbInfo.mStore.rm(key$);
|
2564
|
-
});
|
2565
|
-
executeCallback(promise, callback);
|
2566
|
-
return promise;
|
2567
|
-
}
|
2568
|
-
function setItem(key$, value, callback) {
|
2569
|
-
var _this = this;
|
2570
|
-
key$ = normaliseKey(key$);
|
2571
|
-
var promise = this.ready().then(function() {
|
2572
|
-
if (value === void 0) {
|
2573
|
-
value = null;
|
2574
|
-
}
|
2575
|
-
var originalValue = value;
|
2576
|
-
return new Promise(function(resolve, reject) {
|
2577
|
-
_this._dbInfo.serializer.serialize(value, function(value$, error) {
|
2578
|
-
if (error) {
|
2579
|
-
reject(error);
|
2580
|
-
} else {
|
2581
|
-
try {
|
2582
|
-
_this._dbInfo.mStore.set(key$, value$);
|
2583
|
-
resolve(originalValue);
|
2584
|
-
} catch (e) {
|
2585
|
-
reject(e);
|
2586
|
-
}
|
2587
|
-
}
|
2588
|
-
});
|
2589
|
-
});
|
2590
|
-
});
|
2591
|
-
executeCallback(promise, callback);
|
2592
|
-
return promise;
|
2593
|
-
}
|
2594
|
-
var _support = true;
|
2595
|
-
exports2._support = _support;
|
2596
|
-
exports2._driver = _driver2;
|
2597
|
-
exports2._initStorage = _initStorage;
|
2598
|
-
exports2.clear = clear;
|
2599
|
-
exports2.dropInstance = dropInstance;
|
2600
|
-
exports2.getItem = getItem;
|
2601
|
-
exports2.iterate = iterate;
|
2602
|
-
exports2.key = key;
|
2603
|
-
exports2.keys = keys;
|
2604
|
-
exports2.length = length;
|
2605
|
-
exports2.removeItem = removeItem;
|
2606
|
-
exports2.setItem = setItem;
|
2607
|
-
Object.defineProperty(exports2, "__esModule", { value: true });
|
2608
|
-
});
|
2609
|
-
}
|
2610
|
-
});
|
2611
|
-
|
2612
|
-
// src/index.ts
|
2613
|
-
var index_exports = {};
|
2614
|
-
__export(index_exports, {
|
2615
|
-
Magic: () => Magic
|
2616
|
-
});
|
2617
|
-
module.exports = __toCommonJS(index_exports);
|
2618
|
-
var import_provider2 = require("@magic-sdk/provider");
|
2619
|
-
var import_localforage = __toESM(require_localforage());
|
2620
|
-
var memoryDriver = __toESM(require_umd());
|
2621
|
-
|
2622
|
-
// src/iframe-controller.ts
|
2623
|
-
var import_provider = require("@magic-sdk/provider");
|
2624
|
-
var import_types = require("@magic-sdk/types");
|
2625
|
-
var overlayStyles = {
|
2626
|
-
display: "none",
|
2627
|
-
position: "fixed",
|
2628
|
-
top: "0",
|
2629
|
-
right: "0",
|
2630
|
-
width: "100%",
|
2631
|
-
height: "100%",
|
2632
|
-
borderRadius: "0",
|
2633
|
-
border: "none",
|
2634
|
-
// necessary for iOS Safari
|
2635
|
-
opacity: "0",
|
2636
|
-
// necessary for iOS 17 and earlier
|
2637
|
-
zIndex: "-1"
|
2638
|
-
};
|
2639
|
-
function applyOverlayStyles(elem) {
|
2640
|
-
for (const [cssProperty, value] of Object.entries(overlayStyles)) {
|
2641
|
-
elem.style[cssProperty] = value;
|
2642
|
-
}
|
2643
|
-
}
|
2644
|
-
function checkForSameSrcInstances(parameters) {
|
2645
|
-
const iframes = [].slice.call(document.querySelectorAll(".magic-iframe"));
|
2646
|
-
return Boolean(iframes.find((iframe) => iframe.src.includes(parameters)));
|
2647
|
-
}
|
2648
|
-
var IframeController = class extends import_provider.ViewController {
|
2649
|
-
activeElement = null;
|
2650
|
-
iframe;
|
2651
|
-
relayerSrc = (0, import_provider.createURL)(`/send?params=${encodeURIComponent(this.parameters)}`, this.endpoint).href;
|
2652
|
-
/**
|
2653
|
-
* Initializes the underlying `<iframe>` element.
|
2654
|
-
* Initializes the underlying `Window.onmessage` event listener.
|
2655
|
-
*/
|
2656
|
-
init() {
|
2657
|
-
this.test = "hello";
|
2658
|
-
this.iframe = new Promise((resolve) => {
|
2659
|
-
const onload = () => {
|
2660
|
-
if (!checkForSameSrcInstances(encodeURIComponent(this.parameters))) {
|
2661
|
-
const iframe = document.createElement("iframe");
|
2662
|
-
iframe.classList.add("magic-iframe");
|
2663
|
-
iframe.dataset.magicIframeLabel = (0, import_provider.createURL)(this.endpoint).host;
|
2664
|
-
iframe.title = "Secure Modal";
|
2665
|
-
iframe.src = this.relayerSrc;
|
2666
|
-
iframe.allow = "clipboard-read; clipboard-write";
|
2667
|
-
applyOverlayStyles(iframe);
|
2668
|
-
document.body.appendChild(iframe);
|
2669
|
-
resolve(iframe);
|
2670
|
-
} else {
|
2671
|
-
(0, import_provider.createDuplicateIframeWarning)().log();
|
2672
|
-
}
|
2673
|
-
};
|
2674
|
-
if (["loaded", "interactive", "complete"].includes(document.readyState)) {
|
2675
|
-
onload();
|
2676
|
-
} else {
|
2677
|
-
window.addEventListener("load", onload, false);
|
2678
|
-
}
|
2679
|
-
});
|
2680
|
-
this.iframe.then((iframe) => {
|
2681
|
-
if (iframe instanceof HTMLIFrameElement) {
|
2682
|
-
iframe.addEventListener("load", async () => {
|
2683
|
-
this.heartbeatDebounce();
|
2684
|
-
});
|
2685
|
-
}
|
2686
|
-
});
|
2687
|
-
window.addEventListener("message", (event) => {
|
2688
|
-
if (event.origin === this.endpoint && event.data.msgType) {
|
2689
|
-
if (event.data.msgType.includes(import_types.MagicIncomingWindowMessage.MAGIC_PONG)) {
|
2690
|
-
this.lastPongTime = Date.now();
|
2691
|
-
}
|
2692
|
-
if (event.data && this.messageHandlers.size) {
|
2693
|
-
event.data.response = event.data.response ?? {};
|
2694
|
-
this.stopHeartBeat();
|
2695
|
-
for (const handler of this.messageHandlers.values()) {
|
2696
|
-
handler(event);
|
2697
|
-
}
|
2698
|
-
}
|
2699
|
-
}
|
2700
|
-
});
|
2701
|
-
window.addEventListener("beforeunload", () => {
|
2702
|
-
this.stopHeartBeat();
|
2703
|
-
});
|
2704
|
-
}
|
2705
|
-
async showOverlay() {
|
2706
|
-
const iframe = await this.iframe;
|
2707
|
-
iframe.style.display = "block";
|
2708
|
-
iframe.style.zIndex = "2147483647";
|
2709
|
-
iframe.style.opacity = "1";
|
2710
|
-
this.activeElement = document.activeElement;
|
2711
|
-
iframe.focus();
|
2712
|
-
}
|
2713
|
-
async hideOverlay() {
|
2714
|
-
const iframe = await this.iframe;
|
2715
|
-
iframe.style.display = "none";
|
2716
|
-
iframe.style.zIndex = "-1";
|
2717
|
-
iframe.style.opacity = "0";
|
2718
|
-
if (this.activeElement?.focus) this.activeElement.focus();
|
2719
|
-
this.activeElement = null;
|
2720
|
-
}
|
2721
|
-
async _post(data) {
|
2722
|
-
const iframe = await this.iframe;
|
2723
|
-
if (iframe && iframe.contentWindow) {
|
2724
|
-
iframe.contentWindow.postMessage(data, this.endpoint);
|
2725
|
-
} else {
|
2726
|
-
throw (0, import_provider.createModalNotReadyError)();
|
2727
|
-
}
|
2728
|
-
}
|
2729
|
-
async checkRelayerExistsInDOM() {
|
2730
|
-
const iframe = await this.iframe;
|
2731
|
-
if (!iframe || !iframe.contentWindow) {
|
2732
|
-
return false;
|
2733
|
-
}
|
2734
|
-
const iframes = [].slice.call(document.querySelectorAll(".magic-iframe"));
|
2735
|
-
return Boolean(iframes.find((iframe2) => iframe2.src.includes(encodeURIComponent(this.parameters))));
|
2736
|
-
}
|
2737
|
-
async reloadRelayer() {
|
2738
|
-
const iframe = await this.iframe;
|
2739
|
-
this.stopHeartBeat();
|
2740
|
-
if (!iframe) {
|
2741
|
-
this.init();
|
2742
|
-
console.warn("Magic SDK: Modal lost, re-initiating");
|
2743
|
-
return;
|
2744
|
-
}
|
2745
|
-
if (!iframe.contentWindow) {
|
2746
|
-
document.body.appendChild(iframe);
|
2747
|
-
console.warn("Magic SDK: Modal did not append in the iframe, re-initiating");
|
2748
|
-
return;
|
2749
|
-
}
|
2750
|
-
if (iframe) {
|
2751
|
-
iframe.src = this.relayerSrc;
|
2752
|
-
}
|
2753
|
-
}
|
2754
|
-
};
|
2755
|
-
|
2756
|
-
// src/index.ts
|
2757
|
-
__reExport(index_exports, require("@magic-sdk/commons"), module.exports);
|
2758
|
-
var Magic = (0, import_provider2.createSDK)(import_provider2.SDKBase, {
|
2759
|
-
platform: "web",
|
2760
|
-
sdkName: "magic-sdk",
|
2761
|
-
version: "29.4.0",
|
2762
|
-
defaultEndpoint: "https://auth.magic.link/",
|
2763
|
-
ViewController: IframeController,
|
2764
|
-
configureStorage: async () => {
|
2765
|
-
const lf = import_localforage.default.createInstance({
|
2766
|
-
name: "MagicAuthLocalStorageDB",
|
2767
|
-
storeName: "MagicAuthLocalStorage"
|
2768
|
-
});
|
2769
|
-
await lf.defineDriver(memoryDriver);
|
2770
|
-
await lf.setDriver([import_localforage.default.INDEXEDDB, import_localforage.default.LOCALSTORAGE, memoryDriver._driver]);
|
2771
|
-
return lf;
|
2772
|
-
}
|
2773
|
-
});
|
1
|
+
"use strict";var et=Object.create;var ge=Object.defineProperty;var rt=Object.getOwnPropertyDescriptor;var tt=Object.getOwnPropertyNames;var nt=Object.getPrototypeOf,ot=Object.prototype.hasOwnProperty;var ke=(_,m)=>()=>(m||_((m={exports:{}}).exports,m),m.exports),it=(_,m)=>{for(var O in m)ge(_,O,{get:m[O],enumerable:!0})},pe=(_,m,O,C)=>{if(m&&typeof m=="object"||typeof m=="function")for(let W of tt(m))!ot.call(_,W)&&W!==O&&ge(_,W,{get:()=>m[W],enumerable:!(C=rt(m,W))||C.enumerable});return _},ae=(_,m,O)=>(pe(_,m,"default"),O&&pe(O,m,"default")),er=(_,m,O)=>(O=_!=null?et(nt(_)):{},pe(m||!_||!_.__esModule?ge(O,"default",{value:_,enumerable:!0}):O,_)),at=_=>pe(ge({},"__esModule",{value:!0}),_);var tr=ke((rr,Oe)=>{"use strict";(function(_){if(typeof rr=="object"&&typeof Oe<"u")Oe.exports=_();else if(typeof define=="function"&&define.amd)define([],_);else{var m;typeof window<"u"?m=window:typeof global<"u"?m=global:typeof self<"u"?m=self:m=this,m.localforage=_()}})(function(){var _,m,O;return function C(W,Z,L){function V(K,J){if(!Z[K]){if(!W[K]){var y=typeof require=="function"&&require;if(!J&&y)return y(K,!0);if(D)return D(K,!0);var w=new Error("Cannot find module '"+K+"'");throw w.code="MODULE_NOT_FOUND",w}var T=Z[K]={exports:{}};W[K][0].call(T.exports,function(F){var $=W[K][1][F];return V($||F)},T,T.exports,C,W,Z,L)}return Z[K].exports}for(var D=typeof require=="function"&&require,z=0;z<L.length;z++)V(L[z]);return V}({1:[function(C,W,Z){(function(L){"use strict";var V=L.MutationObserver||L.WebKitMutationObserver,D;if(V){var z=0,K=new V(F),J=L.document.createTextNode("");K.observe(J,{characterData:!0}),D=function(){J.data=z=++z%2}}else if(!L.setImmediate&&typeof L.MessageChannel<"u"){var y=new L.MessageChannel;y.port1.onmessage=F,D=function(){y.port2.postMessage(0)}}else"document"in L&&"onreadystatechange"in L.document.createElement("script")?D=function(){var P=L.document.createElement("script");P.onreadystatechange=function(){F(),P.onreadystatechange=null,P.parentNode.removeChild(P),P=null},L.document.documentElement.appendChild(P)}:D=function(){setTimeout(F,0)};var w,T=[];function F(){w=!0;for(var P,k,M=T.length;M;){for(k=T,T=[],P=-1;++P<M;)k[P]();M=T.length}w=!1}W.exports=$;function $(P){T.push(P)===1&&!w&&D()}}).call(this,typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{})},{}],2:[function(C,W,Z){"use strict";var L=C(1);function V(){}var D={},z=["REJECTED"],K=["FULFILLED"],J=["PENDING"];W.exports=y;function y(h){if(typeof h!="function")throw new TypeError("resolver must be a function");this.state=J,this.queue=[],this.outcome=void 0,h!==V&&$(this,h)}y.prototype.catch=function(h){return this.then(null,h)},y.prototype.then=function(h,A){if(typeof h!="function"&&this.state===K||typeof A!="function"&&this.state===z)return this;var E=new this.constructor(V);if(this.state!==J){var N=this.state===K?h:A;T(E,N,this.outcome)}else this.queue.push(new w(E,h,A));return E};function w(h,A,E){this.promise=h,typeof A=="function"&&(this.onFulfilled=A,this.callFulfilled=this.otherCallFulfilled),typeof E=="function"&&(this.onRejected=E,this.callRejected=this.otherCallRejected)}w.prototype.callFulfilled=function(h){D.resolve(this.promise,h)},w.prototype.otherCallFulfilled=function(h){T(this.promise,this.onFulfilled,h)},w.prototype.callRejected=function(h){D.reject(this.promise,h)},w.prototype.otherCallRejected=function(h){T(this.promise,this.onRejected,h)};function T(h,A,E){L(function(){var N;try{N=A(E)}catch(H){return D.reject(h,H)}N===h?D.reject(h,new TypeError("Cannot resolve promise with itself")):D.resolve(h,N)})}D.resolve=function(h,A){var E=P(F,A);if(E.status==="error")return D.reject(h,E.value);var N=E.value;if(N)$(h,N);else{h.state=K,h.outcome=A;for(var H=-1,j=h.queue.length;++H<j;)h.queue[H].callFulfilled(A)}return h},D.reject=function(h,A){h.state=z,h.outcome=A;for(var E=-1,N=h.queue.length;++E<N;)h.queue[E].callRejected(A);return h};function F(h){var A=h&&h.then;if(h&&(typeof h=="object"||typeof h=="function")&&typeof A=="function")return function(){A.apply(h,arguments)}}function $(h,A){var E=!1;function N(Q){E||(E=!0,D.reject(h,Q))}function H(Q){E||(E=!0,D.resolve(h,Q))}function j(){A(H,N)}var X=P(j);X.status==="error"&&N(X.value)}function P(h,A){var E={};try{E.value=h(A),E.status="success"}catch(N){E.status="error",E.value=N}return E}y.resolve=k;function k(h){return h instanceof this?h:D.resolve(new this(V),h)}y.reject=M;function M(h){var A=new this(V);return D.reject(A,h)}y.all=ue;function ue(h){var A=this;if(Object.prototype.toString.call(h)!=="[object Array]")return this.reject(new TypeError("must be an array"));var E=h.length,N=!1;if(!E)return this.resolve([]);for(var H=new Array(E),j=0,X=-1,Q=new this(V);++X<E;)ee(h[X],X);return Q;function ee(fe,a){A.resolve(fe).then(u,function(v){N||(N=!0,D.reject(Q,v))});function u(v){H[a]=v,++j===E&&!N&&(N=!0,D.resolve(Q,H))}}}y.race=re;function re(h){var A=this;if(Object.prototype.toString.call(h)!=="[object Array]")return this.reject(new TypeError("must be an array"));var E=h.length,N=!1;if(!E)return this.resolve([]);for(var H=-1,j=new this(V);++H<E;)X(h[H]);return j;function X(Q){A.resolve(Q).then(function(ee){N||(N=!0,D.resolve(j,ee))},function(ee){N||(N=!0,D.reject(j,ee))})}}},{1:1}],3:[function(C,W,Z){(function(L){"use strict";typeof L.Promise!="function"&&(L.Promise=C(2))}).call(this,typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{})},{2:2}],4:[function(C,W,Z){"use strict";var L=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 V(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function D(){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 z=D();function K(){try{if(!z||!z.open)return!1;var e=typeof openDatabase<"u"&&/(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)&&!/BlackBerry/.test(navigator.platform),t=typeof fetch=="function"&&fetch.toString().indexOf("[native code")!==-1;return(!e||t)&&typeof indexedDB<"u"&&typeof IDBKeyRange<"u"}catch{return!1}}function J(e,t){e=e||[],t=t||{};try{return new Blob(e,t)}catch(n){if(n.name!=="TypeError")throw n;for(var r=typeof BlobBuilder<"u"?BlobBuilder:typeof MSBlobBuilder<"u"?MSBlobBuilder:typeof MozBlobBuilder<"u"?MozBlobBuilder:WebKitBlobBuilder,o=new r,i=0;i<e.length;i+=1)o.append(e[i]);return o.getBlob(t.type)}}typeof Promise>"u"&&C(3);var y=Promise;function w(e,t){t&&e.then(function(r){t(null,r)},function(r){t(r)})}function T(e,t,r){typeof t=="function"&&e.then(t),typeof r=="function"&&e.catch(r)}function F(e){return typeof e!="string"&&(console.warn(e+" used as a key, but it is not a string."),e=String(e)),e}function $(){if(arguments.length&&typeof arguments[arguments.length-1]=="function")return arguments[arguments.length-1]}var P="local-forage-detect-blob-support",k=void 0,M={},ue=Object.prototype.toString,re="readonly",h="readwrite";function A(e){for(var t=e.length,r=new ArrayBuffer(t),o=new Uint8Array(r),i=0;i<t;i++)o[i]=e.charCodeAt(i);return r}function E(e){return new y(function(t){var r=e.transaction(P,h),o=J([""]);r.objectStore(P).put(o,"key"),r.onabort=function(i){i.preventDefault(),i.stopPropagation(),t(!1)},r.oncomplete=function(){var i=navigator.userAgent.match(/Chrome\/(\d+)/),n=navigator.userAgent.match(/Edge\//);t(n||!i||parseInt(i[1],10)>=43)}}).catch(function(){return!1})}function N(e){return typeof k=="boolean"?y.resolve(k):E(e).then(function(t){return k=t,k})}function H(e){var t=M[e.name],r={};r.promise=new y(function(o,i){r.resolve=o,r.reject=i}),t.deferredOperations.push(r),t.dbReady?t.dbReady=t.dbReady.then(function(){return r.promise}):t.dbReady=r.promise}function j(e){var t=M[e.name],r=t.deferredOperations.pop();if(r)return r.resolve(),r.promise}function X(e,t){var r=M[e.name],o=r.deferredOperations.pop();if(o)return o.reject(t),o.promise}function Q(e,t){return new y(function(r,o){if(M[e.name]=M[e.name]||G(),e.db)if(t)H(e),e.db.close();else return r(e.db);var i=[e.name];t&&i.push(e.version);var n=z.open.apply(z,i);t&&(n.onupgradeneeded=function(f){var s=n.result;try{s.createObjectStore(e.storeName),f.oldVersion<=1&&s.createObjectStore(P)}catch(c){if(c.name==="ConstraintError")console.warn('The database "'+e.name+'" has been upgraded from version '+f.oldVersion+" to version "+f.newVersion+', but the storage "'+e.storeName+'" already exists.');else throw c}}),n.onerror=function(f){f.preventDefault(),o(n.error)},n.onsuccess=function(){var f=n.result;f.onversionchange=function(s){s.target.close()},r(f),j(e)}})}function ee(e){return Q(e,!1)}function fe(e){return Q(e,!0)}function a(e,t){if(!e.db)return!0;var r=!e.db.objectStoreNames.contains(e.storeName),o=e.version<e.db.version,i=e.version>e.db.version;if(o&&(e.version!==t&&console.warn('The database "'+e.name+`" can't be downgraded from version `+e.db.version+" to version "+e.version+"."),e.version=e.db.version),i||r){if(r){var n=e.db.version+1;n>e.version&&(e.version=n)}return!0}return!1}function u(e){return new y(function(t,r){var o=new FileReader;o.onerror=r,o.onloadend=function(i){var n=btoa(i.target.result||"");t({__local_forage_encoded_blob:!0,data:n,type:e.type})},o.readAsBinaryString(e)})}function v(e){var t=A(atob(e.data));return J([t],{type:e.type})}function g(e){return e&&e.__local_forage_encoded_blob}function b(e){var t=this,r=t._initReady().then(function(){var o=M[t._dbInfo.name];if(o&&o.dbReady)return o.dbReady});return T(r,e,e),r}function I(e){H(e);for(var t=M[e.name],r=t.forages,o=0;o<r.length;o++){var i=r[o];i._dbInfo.db&&(i._dbInfo.db.close(),i._dbInfo.db=null)}return e.db=null,ee(e).then(function(n){return e.db=n,a(e)?fe(e):n}).then(function(n){e.db=t.db=n;for(var f=0;f<r.length;f++)r[f]._dbInfo.db=n}).catch(function(n){throw X(e,n),n})}function R(e,t,r,o){o===void 0&&(o=1);try{var i=e.db.transaction(e.storeName,t);r(null,i)}catch(n){if(o>0&&(!e.db||n.name==="InvalidStateError"||n.name==="NotFoundError"))return y.resolve().then(function(){if(!e.db||n.name==="NotFoundError"&&!e.db.objectStoreNames.contains(e.storeName)&&e.version<=e.db.version)return e.db&&(e.version=e.db.version+1),fe(e)}).then(function(){return I(e).then(function(){R(e,t,r,o-1)})}).catch(r);r(n)}}function G(){return{forages:[],db:null,dbReady:null,deferredOperations:[]}}function ce(e){var t=this,r={db:null};if(e)for(var o in e)r[o]=e[o];var i=M[r.name];i||(i=G(),M[r.name]=i),i.forages.push(t),t._initReady||(t._initReady=t.ready,t.ready=b);var n=[];function f(){return y.resolve()}for(var s=0;s<i.forages.length;s++){var c=i.forages[s];c!==t&&n.push(c._initReady().catch(f))}var l=i.forages.slice(0);return y.all(n).then(function(){return r.db=i.db,ee(r)}).then(function(d){return r.db=d,a(r,t._defaultConfig.version)?fe(r):d}).then(function(d){r.db=i.db=d,t._dbInfo=r;for(var p=0;p<l.length;p++){var S=l[p];S!==t&&(S._dbInfo.db=r.db,S._dbInfo.version=r.version)}})}function se(e,t){var r=this;e=F(e);var o=new y(function(i,n){r.ready().then(function(){R(r._dbInfo,re,function(f,s){if(f)return n(f);try{var c=s.objectStore(r._dbInfo.storeName),l=c.get(e);l.onsuccess=function(){var d=l.result;d===void 0&&(d=null),g(d)&&(d=v(d)),i(d)},l.onerror=function(){n(l.error)}}catch(d){n(d)}})}).catch(n)});return w(o,t),o}function de(e,t){var r=this,o=new y(function(i,n){r.ready().then(function(){R(r._dbInfo,re,function(f,s){if(f)return n(f);try{var c=s.objectStore(r._dbInfo.storeName),l=c.openCursor(),d=1;l.onsuccess=function(){var p=l.result;if(p){var S=p.value;g(S)&&(S=v(S));var B=e(S,p.key,d++);B!==void 0?i(B):p.continue()}else i()},l.onerror=function(){n(l.error)}}catch(p){n(p)}})}).catch(n)});return w(o,t),o}function ar(e,t,r){var o=this;e=F(e);var i=new y(function(n,f){var s;o.ready().then(function(){return s=o._dbInfo,ue.call(t)==="[object Blob]"?N(s.db).then(function(c){return c?t:u(t)}):t}).then(function(c){R(o._dbInfo,h,function(l,d){if(l)return f(l);try{var p=d.objectStore(o._dbInfo.storeName);c===null&&(c=void 0);var S=p.put(c,e);d.oncomplete=function(){c===void 0&&(c=null),n(c)},d.onabort=d.onerror=function(){var B=S.error?S.error:S.transaction.error;f(B)}}catch(B){f(B)}})}).catch(f)});return w(i,r),i}function fr(e,t){var r=this;e=F(e);var o=new y(function(i,n){r.ready().then(function(){R(r._dbInfo,h,function(f,s){if(f)return n(f);try{var c=s.objectStore(r._dbInfo.storeName),l=c.delete(e);s.oncomplete=function(){i()},s.onerror=function(){n(l.error)},s.onabort=function(){var d=l.error?l.error:l.transaction.error;n(d)}}catch(d){n(d)}})}).catch(n)});return w(o,t),o}function sr(e){var t=this,r=new y(function(o,i){t.ready().then(function(){R(t._dbInfo,h,function(n,f){if(n)return i(n);try{var s=f.objectStore(t._dbInfo.storeName),c=s.clear();f.oncomplete=function(){o()},f.onabort=f.onerror=function(){var l=c.error?c.error:c.transaction.error;i(l)}}catch(l){i(l)}})}).catch(i)});return w(r,e),r}function ur(e){var t=this,r=new y(function(o,i){t.ready().then(function(){R(t._dbInfo,re,function(n,f){if(n)return i(n);try{var s=f.objectStore(t._dbInfo.storeName),c=s.count();c.onsuccess=function(){o(c.result)},c.onerror=function(){i(c.error)}}catch(l){i(l)}})}).catch(i)});return w(r,e),r}function cr(e,t){var r=this,o=new y(function(i,n){if(e<0){i(null);return}r.ready().then(function(){R(r._dbInfo,re,function(f,s){if(f)return n(f);try{var c=s.objectStore(r._dbInfo.storeName),l=!1,d=c.openKeyCursor();d.onsuccess=function(){var p=d.result;if(!p){i(null);return}e===0||l?i(p.key):(l=!0,p.advance(e))},d.onerror=function(){n(d.error)}}catch(p){n(p)}})}).catch(n)});return w(o,t),o}function lr(e){var t=this,r=new y(function(o,i){t.ready().then(function(){R(t._dbInfo,re,function(n,f){if(n)return i(n);try{var s=f.objectStore(t._dbInfo.storeName),c=s.openKeyCursor(),l=[];c.onsuccess=function(){var d=c.result;if(!d){o(l);return}l.push(d.key),d.continue()},c.onerror=function(){i(c.error)}}catch(d){i(d)}})}).catch(i)});return w(r,e),r}function dr(e,t){t=$.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,i;if(!e.name)i=y.reject("Invalid arguments");else{var n=e.name===r.name&&o._dbInfo.db,f=n?y.resolve(o._dbInfo.db):ee(e).then(function(s){var c=M[e.name],l=c.forages;c.db=s;for(var d=0;d<l.length;d++)l[d]._dbInfo.db=s;return s});e.storeName?i=f.then(function(s){if(s.objectStoreNames.contains(e.storeName)){var c=s.version+1;H(e);var l=M[e.name],d=l.forages;s.close();for(var p=0;p<d.length;p++){var S=d[p];S._dbInfo.db=null,S._dbInfo.version=c}var B=new y(function(x,Y){var U=z.open(e.name,c);U.onerror=function(q){var he=U.result;he.close(),Y(q)},U.onupgradeneeded=function(){var q=U.result;q.deleteObjectStore(e.storeName)},U.onsuccess=function(){var q=U.result;q.close(),x(q)}});return B.then(function(x){l.db=x;for(var Y=0;Y<d.length;Y++){var U=d[Y];U._dbInfo.db=x,j(U._dbInfo)}}).catch(function(x){throw(X(e,x)||y.resolve()).catch(function(){}),x})}}):i=f.then(function(s){H(e);var c=M[e.name],l=c.forages;s.close();for(var d=0;d<l.length;d++){var p=l[d];p._dbInfo.db=null}var S=new y(function(B,x){var Y=z.deleteDatabase(e.name);Y.onerror=function(){var U=Y.result;U&&U.close(),x(Y.error)},Y.onblocked=function(){console.warn('dropInstance blocked for database "'+e.name+'" until all open connections are closed')},Y.onsuccess=function(){var U=Y.result;U&&U.close(),B(U)}});return S.then(function(B){c.db=B;for(var x=0;x<l.length;x++){var Y=l[x];j(Y._dbInfo)}}).catch(function(B){throw(X(e,B)||y.resolve()).catch(function(){}),B})})}return w(i,t),i}var vr={_driver:"asyncStorage",_initStorage:ce,_support:K(),iterate:de,getItem:se,setItem:ar,removeItem:fr,clear:sr,length:ur,key:cr,keys:lr,dropInstance:dr};function hr(){return typeof openDatabase=="function"}var oe="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",mr="~~local_forage_type~",Le=/^~~local_forage_type~([^~]+)~/,me="__lfsc__:",Ee=me.length,Se="arbf",Ae="blob",Pe="si08",Me="ui08",Fe="uic8",Ue="si16",We="si32",ze="ur16",Ye="ui32",Ke="fl32",He="fl64",Ve=Ee+Se.length,Ge=Object.prototype.toString;function je(e){var t=e.length*.75,r=e.length,o,i=0,n,f,s,c;e[e.length-1]==="="&&(t--,e[e.length-2]==="="&&t--);var l=new ArrayBuffer(t),d=new Uint8Array(l);for(o=0;o<r;o+=4)n=oe.indexOf(e[o]),f=oe.indexOf(e[o+1]),s=oe.indexOf(e[o+2]),c=oe.indexOf(e[o+3]),d[i++]=n<<2|f>>4,d[i++]=(f&15)<<4|s>>2,d[i++]=(s&3)<<6|c&63;return l}function Re(e){var t=new Uint8Array(e),r="",o;for(o=0;o<t.length;o+=3)r+=oe[t[o]>>2],r+=oe[(t[o]&3)<<4|t[o+1]>>4],r+=oe[(t[o+1]&15)<<2|t[o+2]>>6],r+=oe[t[o+2]&63];return t.length%3===2?r=r.substring(0,r.length-1)+"=":t.length%3===1&&(r=r.substring(0,r.length-2)+"=="),r}function yr(e,t){var r="";if(e&&(r=Ge.call(e)),e&&(r==="[object ArrayBuffer]"||e.buffer&&Ge.call(e.buffer)==="[object ArrayBuffer]")){var o,i=me;e instanceof ArrayBuffer?(o=e,i+=Se):(o=e.buffer,r==="[object Int8Array]"?i+=Pe:r==="[object Uint8Array]"?i+=Me:r==="[object Uint8ClampedArray]"?i+=Fe:r==="[object Int16Array]"?i+=Ue:r==="[object Uint16Array]"?i+=ze:r==="[object Int32Array]"?i+=We:r==="[object Uint32Array]"?i+=Ye:r==="[object Float32Array]"?i+=Ke:r==="[object Float64Array]"?i+=He:t(new Error("Failed to get type for BinaryArray"))),t(i+Re(o))}else if(r==="[object Blob]"){var n=new FileReader;n.onload=function(){var f=mr+e.type+"~"+Re(this.result);t(me+Ae+f)},n.readAsArrayBuffer(e)}else try{t(JSON.stringify(e))}catch(f){console.error("Couldn't convert value into a JSON string: ",e),t(null,f)}}function pr(e){if(e.substring(0,Ee)!==me)return JSON.parse(e);var t=e.substring(Ve),r=e.substring(Ee,Ve),o;if(r===Ae&&Le.test(t)){var i=t.match(Le);o=i[1],t=t.substring(i[0].length)}var n=je(t);switch(r){case Se:return n;case Ae:return J([n],{type:o});case Pe:return new Int8Array(n);case Me:return new Uint8Array(n);case Fe:return new Uint8ClampedArray(n);case Ue:return new Int16Array(n);case ze:return new Uint16Array(n);case We:return new Int32Array(n);case Ye:return new Uint32Array(n);case Ke:return new Float32Array(n);case He:return new Float64Array(n);default:throw new Error("Unkown type: "+r)}}var De={serialize:yr,deserialize:pr,stringToBuffer:je,bufferToString:Re};function Xe(e,t,r,o){e.executeSql("CREATE TABLE IF NOT EXISTS "+t.storeName+" (id INTEGER PRIMARY KEY, key unique, value)",[],r,o)}function gr(e){var t=this,r={db:null};if(e)for(var o in e)r[o]=typeof e[o]!="string"?e[o].toString():e[o];var i=new y(function(n,f){try{r.db=openDatabase(r.name,String(r.version),r.description,r.size)}catch(s){return f(s)}r.db.transaction(function(s){Xe(s,r,function(){t._dbInfo=r,n()},function(c,l){f(l)})},f)});return r.serializer=De,i}function ie(e,t,r,o,i,n){e.executeSql(r,o,i,function(f,s){s.code===s.SYNTAX_ERR?f.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?",[t.storeName],function(c,l){l.rows.length?n(c,s):Xe(c,t,function(){c.executeSql(r,o,i,n)},n)},n):n(f,s)},n)}function br(e,t){var r=this;e=F(e);var o=new y(function(i,n){r.ready().then(function(){var f=r._dbInfo;f.db.transaction(function(s){ie(s,f,"SELECT * FROM "+f.storeName+" WHERE key = ? LIMIT 1",[e],function(c,l){var d=l.rows.length?l.rows.item(0).value:null;d&&(d=f.serializer.deserialize(d)),i(d)},function(c,l){n(l)})})}).catch(n)});return w(o,t),o}function _r(e,t){var r=this,o=new y(function(i,n){r.ready().then(function(){var f=r._dbInfo;f.db.transaction(function(s){ie(s,f,"SELECT * FROM "+f.storeName,[],function(c,l){for(var d=l.rows,p=d.length,S=0;S<p;S++){var B=d.item(S),x=B.value;if(x&&(x=f.serializer.deserialize(x)),x=e(x,B.key,S+1),x!==void 0){i(x);return}}i()},function(c,l){n(l)})})}).catch(n)});return w(o,t),o}function Qe(e,t,r,o){var i=this;e=F(e);var n=new y(function(f,s){i.ready().then(function(){t===void 0&&(t=null);var c=t,l=i._dbInfo;l.serializer.serialize(t,function(d,p){p?s(p):l.db.transaction(function(S){ie(S,l,"INSERT OR REPLACE INTO "+l.storeName+" (key, value) VALUES (?, ?)",[e,d],function(){f(c)},function(B,x){s(x)})},function(S){if(S.code===S.QUOTA_ERR){if(o>0){f(Qe.apply(i,[e,c,r,o-1]));return}s(S)}})})}).catch(s)});return w(n,r),n}function wr(e,t,r){return Qe.apply(this,[e,t,r,1])}function Ir(e,t){var r=this;e=F(e);var o=new y(function(i,n){r.ready().then(function(){var f=r._dbInfo;f.db.transaction(function(s){ie(s,f,"DELETE FROM "+f.storeName+" WHERE key = ?",[e],function(){i()},function(c,l){n(l)})})}).catch(n)});return w(o,t),o}function Er(e){var t=this,r=new y(function(o,i){t.ready().then(function(){var n=t._dbInfo;n.db.transaction(function(f){ie(f,n,"DELETE FROM "+n.storeName,[],function(){o()},function(s,c){i(c)})})}).catch(i)});return w(r,e),r}function Sr(e){var t=this,r=new y(function(o,i){t.ready().then(function(){var n=t._dbInfo;n.db.transaction(function(f){ie(f,n,"SELECT COUNT(key) as c FROM "+n.storeName,[],function(s,c){var l=c.rows.item(0).c;o(l)},function(s,c){i(c)})})}).catch(i)});return w(r,e),r}function Ar(e,t){var r=this,o=new y(function(i,n){r.ready().then(function(){var f=r._dbInfo;f.db.transaction(function(s){ie(s,f,"SELECT key FROM "+f.storeName+" WHERE id = ? LIMIT 1",[e+1],function(c,l){var d=l.rows.length?l.rows.item(0).key:null;i(d)},function(c,l){n(l)})})}).catch(n)});return w(o,t),o}function Rr(e){var t=this,r=new y(function(o,i){t.ready().then(function(){var n=t._dbInfo;n.db.transaction(function(f){ie(f,n,"SELECT key FROM "+n.storeName,[],function(s,c){for(var l=[],d=0;d<c.rows.length;d++)l.push(c.rows.item(d).key);o(l)},function(s,c){i(c)})})}).catch(i)});return w(r,e),r}function Dr(e){return new y(function(t,r){e.transaction(function(o){o.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'",[],function(i,n){for(var f=[],s=0;s<n.rows.length;s++)f.push(n.rows.item(s).name);t({db:e,storeNames:f})},function(i,n){r(n)})},function(o){r(o)})})}function Tr(e,t){t=$.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,i;return e.name?i=new y(function(n){var f;e.name===r.name?f=o._dbInfo.db:f=openDatabase(e.name,"","",0),e.storeName?n({db:f,storeNames:[e.storeName]}):n(Dr(f))}).then(function(n){return new y(function(f,s){n.db.transaction(function(c){function l(B){return new y(function(x,Y){c.executeSql("DROP TABLE IF EXISTS "+B,[],function(){x()},function(U,q){Y(q)})})}for(var d=[],p=0,S=n.storeNames.length;p<S;p++)d.push(l(n.storeNames[p]));y.all(d).then(function(){f()}).catch(function(B){s(B)})},function(c){s(c)})})}):i=y.reject("Invalid arguments"),w(i,t),i}var Br={_driver:"webSQLStorage",_initStorage:gr,_support:hr(),iterate:_r,getItem:br,setItem:wr,removeItem:Ir,clear:Er,length:Sr,key:Ar,keys:Rr,dropInstance:Tr};function Nr(){try{return typeof localStorage<"u"&&"setItem"in localStorage&&!!localStorage.setItem}catch{return!1}}function Je(e,t){var r=e.name+"/";return e.storeName!==t.storeName&&(r+=e.storeName+"/"),r}function xr(){var e="_localforage_support_test";try{return localStorage.setItem(e,!0),localStorage.removeItem(e),!1}catch{return!0}}function Or(){return!xr()||localStorage.length>0}function Cr(e){var t=this,r={};if(e)for(var o in e)r[o]=e[o];return r.keyPrefix=Je(e,t._defaultConfig),Or()?(t._dbInfo=r,r.serializer=De,y.resolve()):y.reject()}function Lr(e){var t=this,r=t.ready().then(function(){for(var o=t._dbInfo.keyPrefix,i=localStorage.length-1;i>=0;i--){var n=localStorage.key(i);n.indexOf(o)===0&&localStorage.removeItem(n)}});return w(r,e),r}function Pr(e,t){var r=this;e=F(e);var o=r.ready().then(function(){var i=r._dbInfo,n=localStorage.getItem(i.keyPrefix+e);return n&&(n=i.serializer.deserialize(n)),n});return w(o,t),o}function Mr(e,t){var r=this,o=r.ready().then(function(){for(var i=r._dbInfo,n=i.keyPrefix,f=n.length,s=localStorage.length,c=1,l=0;l<s;l++){var d=localStorage.key(l);if(d.indexOf(n)===0){var p=localStorage.getItem(d);if(p&&(p=i.serializer.deserialize(p)),p=e(p,d.substring(f),c++),p!==void 0)return p}}});return w(o,t),o}function Fr(e,t){var r=this,o=r.ready().then(function(){var i=r._dbInfo,n;try{n=localStorage.key(e)}catch{n=null}return n&&(n=n.substring(i.keyPrefix.length)),n});return w(o,t),o}function Ur(e){var t=this,r=t.ready().then(function(){for(var o=t._dbInfo,i=localStorage.length,n=[],f=0;f<i;f++){var s=localStorage.key(f);s.indexOf(o.keyPrefix)===0&&n.push(s.substring(o.keyPrefix.length))}return n});return w(r,e),r}function Wr(e){var t=this,r=t.keys().then(function(o){return o.length});return w(r,e),r}function zr(e,t){var r=this;e=F(e);var o=r.ready().then(function(){var i=r._dbInfo;localStorage.removeItem(i.keyPrefix+e)});return w(o,t),o}function Yr(e,t,r){var o=this;e=F(e);var i=o.ready().then(function(){t===void 0&&(t=null);var n=t;return new y(function(f,s){var c=o._dbInfo;c.serializer.serialize(t,function(l,d){if(d)s(d);else try{localStorage.setItem(c.keyPrefix+e,l),f(n)}catch(p){(p.name==="QuotaExceededError"||p.name==="NS_ERROR_DOM_QUOTA_REACHED")&&s(p),s(p)}})})});return w(i,r),i}function Kr(e,t){if(t=$.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,i;return e.name?i=new y(function(n){e.storeName?n(Je(e,o._defaultConfig)):n(e.name+"/")}).then(function(n){for(var f=localStorage.length-1;f>=0;f--){var s=localStorage.key(f);s.indexOf(n)===0&&localStorage.removeItem(s)}}):i=y.reject("Invalid arguments"),w(i,t),i}var Hr={_driver:"localStorageWrapper",_initStorage:Cr,_support:Nr(),iterate:Mr,getItem:Pr,setItem:Yr,removeItem:zr,clear:Lr,length:Wr,key:Fr,keys:Ur,dropInstance:Kr},Vr=function(t,r){return t===r||typeof t=="number"&&typeof r=="number"&&isNaN(t)&&isNaN(r)},Gr=function(t,r){for(var o=t.length,i=0;i<o;){if(Vr(t[i],r))return!0;i++}return!1},$e=Array.isArray||function(e){return Object.prototype.toString.call(e)==="[object Array]"},ve={},Ze={},le={INDEXEDDB:vr,WEBSQL:Br,LOCALSTORAGE:Hr},jr=[le.INDEXEDDB._driver,le.WEBSQL._driver,le.LOCALSTORAGE._driver],ye=["dropInstance"],Te=["clear","getItem","iterate","key","keys","length","removeItem","setItem"].concat(ye),Xr={description:"",driver:jr.slice(),name:"localforage",size:4980736,storeName:"keyvaluepairs",version:1};function Qr(e,t){e[t]=function(){var r=arguments;return e.ready().then(function(){return e[t].apply(e,r)})}}function Be(){for(var e=1;e<arguments.length;e++){var t=arguments[e];if(t)for(var r in t)t.hasOwnProperty(r)&&($e(t[r])?arguments[0][r]=t[r].slice():arguments[0][r]=t[r])}return arguments[0]}var Jr=function(){function e(t){V(this,e);for(var r in le)if(le.hasOwnProperty(r)){var o=le[r],i=o._driver;this[r]=i,ve[i]||this.defineDriver(o)}this._defaultConfig=Be({},Xr),this._config=Be({},this._defaultConfig,t),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":L(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,i){var n=new y(function(f,s){try{var c=r._driver,l=new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver");if(!r._driver){s(l);return}for(var d=Te.concat("_initStorage"),p=0,S=d.length;p<S;p++){var B=d[p],x=!Gr(ye,B);if((x||r[B])&&typeof r[B]!="function"){s(l);return}}var Y=function(){for(var he=function(qr){return function(){var kr=new Error("Method "+qr+" is not implemented by the current driver"),qe=y.reject(kr);return w(qe,arguments[arguments.length-1]),qe}},Ne=0,Zr=ye.length;Ne<Zr;Ne++){var xe=ye[Ne];r[xe]||(r[xe]=he(xe))}};Y();var U=function(he){ve[c]&&console.info("Redefining LocalForage driver: "+c),ve[c]=r,Ze[c]=he,f()};"_support"in r?r._support&&typeof r._support=="function"?r._support().then(U,s):U(!!r._support):U(!0)}catch(q){s(q)}});return T(n,o,i),n},e.prototype.driver=function(){return this._driver||null},e.prototype.getDriver=function(r,o,i){var n=ve[r]?y.resolve(ve[r]):y.reject(new Error("Driver not found."));return T(n,o,i),n},e.prototype.getSerializer=function(r){var o=y.resolve(De);return T(o,r),o},e.prototype.ready=function(r){var o=this,i=o._driverSet.then(function(){return o._ready===null&&(o._ready=o._initDriver()),o._ready});return T(i,r,r),i},e.prototype.setDriver=function(r,o,i){var n=this;$e(r)||(r=[r]);var f=this._getSupportedDrivers(r);function s(){n._config.driver=n.driver()}function c(p){return n._extend(p),s(),n._ready=n._initStorage(n._config),n._ready}function l(p){return function(){var S=0;function B(){for(;S<p.length;){var x=p[S];return S++,n._dbInfo=null,n._ready=null,n.getDriver(x).then(c).catch(B)}s();var Y=new Error("No available storage method found.");return n._driverSet=y.reject(Y),n._driverSet}return B()}}var d=this._driverSet!==null?this._driverSet.catch(function(){return y.resolve()}):y.resolve();return this._driverSet=d.then(function(){var p=f[0];return n._dbInfo=null,n._ready=null,n.getDriver(p).then(function(S){n._driver=S._driver,s(),n._wrapLibraryMethodsWithReady(),n._initDriver=l(f)})}).catch(function(){s();var p=new Error("No available storage method found.");return n._driverSet=y.reject(p),n._driverSet}),T(this._driverSet,o,i),this._driverSet},e.prototype.supports=function(r){return!!Ze[r]},e.prototype._extend=function(r){Be(this,r)},e.prototype._getSupportedDrivers=function(r){for(var o=[],i=0,n=r.length;i<n;i++){var f=r[i];this.supports(f)&&o.push(f)}return o},e.prototype._wrapLibraryMethodsWithReady=function(){for(var r=0,o=Te.length;r<o;r++)Qr(this,Te[r])},e.prototype.createInstance=function(r){return new e(r)},e}(),$r=new Jr;W.exports=$r},{3:3}]},{},[4])(4)})});var or=ke((be,nr)=>{"use strict";(function(_,m){typeof be=="object"&&typeof nr<"u"?m(be):typeof define=="function"&&define.amd?define("localforage-driver-memory",["exports"],m):m(_.LocalforageDriverMemory={})})(typeof self<"u"?self:be,function(_){"use strict";var m="localforage-driver-memory";function O(a){var u=typeof Symbol=="function"&&a[Symbol.iterator],v=0;return u?u.call(a):{next:function(){return a&&v>=a.length&&(a=void 0),{value:a&&a[v++],done:!a}}}}function C(a,u){a=a||[],u=u||{};try{return new Blob(a,u)}catch(I){if(I.name!=="TypeError")throw I;for(var v=typeof BlobBuilder<"u"?BlobBuilder:typeof MSBlobBuilder<"u"?MSBlobBuilder:typeof MozBlobBuilder<"u"?MozBlobBuilder:WebKitBlobBuilder,g=new v,b=0;b<a.length;b+=1)g.append(a[b]);return g.getBlob(u.type)}}var W=/^~~local_forage_type~([^~]+)~/,Z=9,L=Z+4,V=Object.prototype.toString;function D(a){var u=a.length*.75,v=a.length;a[a.length-1]==="="&&(u--,a[a.length-2]==="="&&u--);for(var g=new ArrayBuffer(u),b=new Uint8Array(g),I=0,R=0;I<v;I+=4){var G="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a[I]),ce="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a[I+1]),se="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a[I+2]),de="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a[I+3]);b[R++]=G<<2|ce>>4,b[R++]=(ce&15)<<4|se>>2,b[R++]=(se&3)<<6|de&63}return g}function z(a){for(var u=new Uint8Array(a),v="",g=0;g<u.length;g+=3)v+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[u[g]>>2],v+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(u[g]&3)<<4|u[g+1]>>4],v+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[(u[g+1]&15)<<2|u[g+2]>>6],v+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[u[g+2]&63];return u.length%3===2?v=v.substring(0,v.length-1)+"=":u.length%3===1&&(v=v.substring(0,v.length-2)+"=="),v}function K(a,u){var v="";if(a&&(v=V.call(a)),a&&(v==="[object ArrayBuffer]"||a.buffer&&V.call(a.buffer)==="[object ArrayBuffer]")){var g=void 0,b="__lfsc__:";a instanceof ArrayBuffer?(g=a,b+="arbf"):(g=a.buffer,v==="[object Int8Array]"?b+="si08":v==="[object Uint8Array]"?b+="ui08":v==="[object Uint8ClampedArray]"?b+="uic8":v==="[object Int16Array]"?b+="si16":v==="[object Uint16Array]"?b+="ur16":v==="[object Int32Array]"?b+="si32":v==="[object Uint32Array]"?b+="ui32":v==="[object Float32Array]"?b+="fl32":v==="[object Float64Array]"?b+="fl64":u(new Error("Failed to get type for BinaryArray"))),u(b+z(g))}else if(v==="[object Blob]"){var I=new FileReader;I.onload=function(){var R="~~local_forage_type~"+a.type+"~"+z(this.result);u("__lfsc__:blob"+R)},I.readAsArrayBuffer(a)}else try{u(JSON.stringify(a))}catch(R){console.error("Couldn't convert value into a JSON string: ",a),u(null,R)}}function J(a){if(a.substring(0,Z)!=="__lfsc__:")return JSON.parse(a);var u=a.substring(L),v=a.substring(Z,L),g;if(v==="blob"&&W.test(u)){var b=u.match(W);g=b[1],u=u.substring(b[0].length)}var I=D(u);switch(v){case"arbf":return I;case"blob":return C([I],{type:g});case"si08":return new Int8Array(I);case"ui08":return new Uint8Array(I);case"uic8":return new Uint8ClampedArray(I);case"si16":return new Int16Array(I);case"ur16":return new Uint16Array(I);case"si32":return new Int32Array(I);case"ui32":return new Uint32Array(I);case"fl32":return new Float32Array(I);case"fl64":return new Float64Array(I);default:throw new Error("Unkown type: "+v)}}function y(a){var u,v;if(a===null||typeof a!="object"||"isActiveClone"in a)return a;var g=a instanceof Date?new Date(a):a.constructor();try{for(var b=O(Object.keys(a)),I=b.next();!I.done;I=b.next()){var R=I.value;Object.prototype.hasOwnProperty.call(a,R)&&(a.isActiveClone=null,g[R]=y(a[R]),delete a.isActiveClone)}}catch(G){u={error:G}}finally{try{I&&!I.done&&(v=b.return)&&v.call(b)}finally{if(u)throw u.error}}return g}function w(a,u){return(a.name||u.name)+"/"+(a.storeName||u.storeName)+"/"}function T(a,u){u&&a.then(function(v){u(null,v)},function(v){u(v)})}function F(){for(var a=[],u=0;u<arguments.length;u++)a[u]=arguments[u];if(arguments.length&&typeof arguments[arguments.length-1]=="function")return arguments[arguments.length-1]}function $(a,u){var v=this;if(u=F.apply(this,arguments),a=typeof a!="function"&&a||{},!a.name){var g=this.config();a.name=a.name||g.name,a.storeName=a.storeName||g.storeName}var b;return a.name?b=new Promise(function(I){a.storeName?I(w(a,v._defaultConfig)):I(a.name+"/")}):b=Promise.reject("Invalid arguments"),{promise:b,callback:u}}function P(a){return typeof a!="string"&&(console.warn(a+" used as a key, but it is not a string."),a=String(a)),a}var k={bufferToString:z,deserialize:J,serialize:K,stringToBuffer:D},M={},ue=function(){function a(u){this.kp=u,this.data={}}return a.resolve=function(u){return M[u]||(M[u]=new a(u)),M[u]},a.prototype.clear=function(){this.data={}},a.prototype.drop=function(){this.clear(),delete M[this.kp]},a.prototype.get=function(u){return this.data[u]},a.prototype.key=function(u){return this.keys()[u]},a.prototype.keys=function(){return Object.keys(this.data)},a.prototype.rm=function(u){delete this.data[u]},a.prototype.set=function(u,v){this.data[u]=v},a}();function re(a){var u=a?y(a):{},v=w(u,this._defaultConfig),g=ue.resolve(v);return this._dbInfo=u,this._dbInfo.serializer=k,this._dbInfo.keyPrefix=v,this._dbInfo.mStore=g,Promise.resolve()}function h(a){var u=this,v=this.ready().then(function(){u._dbInfo.mStore.clear()});return T(v,a),v}function A(a,u){var v=$.apply(this,arguments),g=v.promise,b=v.callback,I=g.then(function(R){ue.resolve(R).drop()});return T(I,b),g}function E(a,u){var v=this;a=P(a);var g=this.ready().then(function(){var b=v._dbInfo.mStore.get(a);return b==null?null:v._dbInfo.serializer.deserialize(b)});return T(g,u),g}function N(a,u){var v=this,g=this.ready().then(function(){for(var b=v._dbInfo.mStore,I=b.keys(),R=0;R<I.length;R++){var G=b.get(I[R]);if(G&&(G=v._dbInfo.serializer.deserialize(G)),G=a(G,I[R],R+1),G!==void 0)return G}});return T(g,u),g}function H(a,u){var v=this,g=this.ready().then(function(){var b;try{b=v._dbInfo.mStore.key(a),b===void 0&&(b=null)}catch{b=null}return b});return T(g,u),g}function j(a){var u=this,v=this.ready().then(function(){return u._dbInfo.mStore.keys()});return T(v,a),v}function X(a){var u=this.keys().then(function(v){return v.length});return T(u,a),u}function Q(a,u){var v=this;a=P(a);var g=this.ready().then(function(){v._dbInfo.mStore.rm(a)});return T(g,u),g}function ee(a,u,v){var g=this;a=P(a);var b=this.ready().then(function(){u===void 0&&(u=null);var I=u;return new Promise(function(R,G){g._dbInfo.serializer.serialize(u,function(ce,se){if(se)G(se);else try{g._dbInfo.mStore.set(a,ce),R(I)}catch(de){G(de)}})})});return T(b,v),b}var fe=!0;_._support=fe,_._driver=m,_._initStorage=re,_.clear=h,_.dropInstance=A,_.getItem=E,_.iterate=N,_.key=H,_.keys=j,_.length=X,_.removeItem=Q,_.setItem=ee,Object.defineProperty(_,"__esModule",{value:!0})})});var ne={};it(ne,{Magic:()=>ct});module.exports=at(ne);var Ie=require("@magic-sdk/provider"),we=er(tr()),Ce=er(or());var te=require("@magic-sdk/provider"),ir=require("@magic-sdk/types"),ft={display:"none",position:"fixed",top:"0",right:"0",width:"100%",height:"100%",borderRadius:"0",border:"none",opacity:"0",zIndex:"-1"};function st(_){for(let[m,O]of Object.entries(ft))_.style[m]=O}function ut(_){return!![].slice.call(document.querySelectorAll(".magic-iframe")).find(O=>O.src.includes(_))}var _e=class extends te.ViewController{activeElement=null;iframe;relayerSrc=(0,te.createURL)(`/send?params=${encodeURIComponent(this.parameters)}`,this.endpoint).href;init(){this.test="hello",this.iframe=new Promise(m=>{let O=()=>{if(ut(encodeURIComponent(this.parameters)))(0,te.createDuplicateIframeWarning)().log();else{let C=document.createElement("iframe");C.classList.add("magic-iframe"),C.dataset.magicIframeLabel=(0,te.createURL)(this.endpoint).host,C.title="Secure Modal",C.src=this.relayerSrc,C.allow="clipboard-read; clipboard-write",st(C),document.body.appendChild(C),m(C)}};["loaded","interactive","complete"].includes(document.readyState)?O():window.addEventListener("load",O,!1)}),this.iframe.then(m=>{m instanceof HTMLIFrameElement&&m.addEventListener("load",async()=>{this.heartbeatDebounce()})}),window.addEventListener("message",m=>{if(m.origin===this.endpoint&&m.data.msgType&&(m.data.msgType.includes(ir.MagicIncomingWindowMessage.MAGIC_PONG)&&(this.lastPongTime=Date.now()),m.data&&this.messageHandlers.size)){m.data.response=m.data.response??{},this.stopHeartBeat();for(let O of this.messageHandlers.values())O(m)}}),window.addEventListener("beforeunload",()=>{this.stopHeartBeat()})}async showOverlay(){let m=await this.iframe;m.style.display="block",m.style.zIndex="2147483647",m.style.opacity="1",this.activeElement=document.activeElement,m.focus()}async hideOverlay(){let m=await this.iframe;m.style.display="none",m.style.zIndex="-1",m.style.opacity="0",this.activeElement?.focus&&this.activeElement.focus(),this.activeElement=null}async _post(m){let O=await this.iframe;if(O&&O.contentWindow)O.contentWindow.postMessage(m,this.endpoint);else throw(0,te.createModalNotReadyError)()}async checkRelayerExistsInDOM(){let m=await this.iframe;return!m||!m.contentWindow?!1:!![].slice.call(document.querySelectorAll(".magic-iframe")).find(C=>C.src.includes(encodeURIComponent(this.parameters)))}async reloadRelayer(){let m=await this.iframe;if(this.stopHeartBeat(),!m){this.init(),console.warn("Magic SDK: Modal lost, re-initiating");return}if(!m.contentWindow){document.body.appendChild(m),console.warn("Magic SDK: Modal did not append in the iframe, re-initiating");return}m&&(m.src=this.relayerSrc)}};ae(ne,require("@magic-sdk/commons"),module.exports);var ct=(0,Ie.createSDK)(Ie.SDKBase,{platform:"web",sdkName:"magic-sdk",version:"29.4.1",defaultEndpoint:"https://auth.magic.link/",ViewController:_e,configureStorage:async()=>{let _=we.default.createInstance({name:"MagicAuthLocalStorageDB",storeName:"MagicAuthLocalStorage"});return await _.defineDriver(Ce),await _.setDriver([we.default.INDEXEDDB,we.default.LOCALSTORAGE,Ce._driver]),_}});
|
2774
2
|
//# sourceMappingURL=index.js.map
|