yxuse 3.0.107 → 3.0.109

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.
@@ -9,2129 +9,2123 @@ var localforage$1 = { exports: {} };
9
9
  https://localforage.github.io/localForage
10
10
  (c) 2013-2017 Mozilla, Apache License 2.0
11
11
  */
12
- var hasRequiredLocalforage;
13
- function requireLocalforage() {
14
- if (hasRequiredLocalforage) return localforage$1.exports;
15
- hasRequiredLocalforage = 1;
16
- (function(module, exports) {
17
- (function(f) {
18
- {
19
- module.exports = f();
20
- }
21
- })(function() {
22
- return function e(t, n, r) {
23
- function s(o2, u) {
24
- if (!n[o2]) {
25
- if (!t[o2]) {
26
- var a = typeof commonjsRequire == "function" && commonjsRequire;
27
- if (!u && a) return a(o2, true);
28
- if (i) return i(o2, true);
29
- var f = new Error("Cannot find module '" + o2 + "'");
30
- throw f.code = "MODULE_NOT_FOUND", f;
31
- }
32
- var l = n[o2] = { exports: {} };
33
- t[o2][0].call(l.exports, function(e2) {
34
- var n2 = t[o2][1][e2];
35
- return s(n2 ? n2 : e2);
36
- }, l, l.exports, e, t, n, r);
37
- }
38
- return n[o2].exports;
39
- }
40
- var i = typeof commonjsRequire == "function" && commonjsRequire;
41
- for (var o = 0; o < r.length; o++) s(r[o]);
42
- return s;
43
- }({ 1: [function(_dereq_, module2, exports2) {
44
- (function(global) {
45
- var Mutation = global.MutationObserver || global.WebKitMutationObserver;
46
- var scheduleDrain;
47
- {
48
- if (Mutation) {
49
- var called = 0;
50
- var observer = new Mutation(nextTick);
51
- var element = global.document.createTextNode("");
52
- observer.observe(element, {
53
- characterData: true
54
- });
55
- scheduleDrain = function() {
56
- element.data = called = ++called % 2;
57
- };
58
- } else if (!global.setImmediate && typeof global.MessageChannel !== "undefined") {
59
- var channel = new global.MessageChannel();
60
- channel.port1.onmessage = nextTick;
61
- scheduleDrain = function() {
62
- channel.port2.postMessage(0);
63
- };
64
- } else if ("document" in global && "onreadystatechange" in global.document.createElement("script")) {
65
- scheduleDrain = function() {
66
- var scriptEl = global.document.createElement("script");
67
- scriptEl.onreadystatechange = function() {
68
- nextTick();
69
- scriptEl.onreadystatechange = null;
70
- scriptEl.parentNode.removeChild(scriptEl);
71
- scriptEl = null;
72
- };
73
- global.document.documentElement.appendChild(scriptEl);
74
- };
75
- } else {
76
- scheduleDrain = function() {
77
- setTimeout(nextTick, 0);
12
+ (function(module, exports) {
13
+ (function(f) {
14
+ {
15
+ module.exports = f();
16
+ }
17
+ })(function() {
18
+ return function e(t, n, r) {
19
+ function s(o2, u) {
20
+ if (!n[o2]) {
21
+ if (!t[o2]) {
22
+ var a = typeof commonjsRequire == "function" && commonjsRequire;
23
+ if (!u && a) return a(o2, true);
24
+ if (i) return i(o2, true);
25
+ var f = new Error("Cannot find module '" + o2 + "'");
26
+ throw f.code = "MODULE_NOT_FOUND", f;
27
+ }
28
+ var l = n[o2] = { exports: {} };
29
+ t[o2][0].call(l.exports, function(e2) {
30
+ var n2 = t[o2][1][e2];
31
+ return s(n2 ? n2 : e2);
32
+ }, l, l.exports, e, t, n, r);
33
+ }
34
+ return n[o2].exports;
35
+ }
36
+ var i = typeof commonjsRequire == "function" && commonjsRequire;
37
+ for (var o = 0; o < r.length; o++) s(r[o]);
38
+ return s;
39
+ }({ 1: [function(_dereq_, module2, exports2) {
40
+ (function(global) {
41
+ var Mutation = global.MutationObserver || global.WebKitMutationObserver;
42
+ var scheduleDrain;
43
+ {
44
+ if (Mutation) {
45
+ var called = 0;
46
+ var observer = new Mutation(nextTick);
47
+ var element = global.document.createTextNode("");
48
+ observer.observe(element, {
49
+ characterData: true
50
+ });
51
+ scheduleDrain = function() {
52
+ element.data = called = ++called % 2;
53
+ };
54
+ } else if (!global.setImmediate && typeof global.MessageChannel !== "undefined") {
55
+ var channel = new global.MessageChannel();
56
+ channel.port1.onmessage = nextTick;
57
+ scheduleDrain = function() {
58
+ channel.port2.postMessage(0);
59
+ };
60
+ } else if ("document" in global && "onreadystatechange" in global.document.createElement("script")) {
61
+ scheduleDrain = function() {
62
+ var scriptEl = global.document.createElement("script");
63
+ scriptEl.onreadystatechange = function() {
64
+ nextTick();
65
+ scriptEl.onreadystatechange = null;
66
+ scriptEl.parentNode.removeChild(scriptEl);
67
+ scriptEl = null;
78
68
  };
79
- }
80
- }
81
- var draining;
82
- var queue = [];
83
- function nextTick() {
84
- draining = true;
85
- var i, oldQueue;
86
- var len = queue.length;
87
- while (len) {
88
- oldQueue = queue;
89
- queue = [];
90
- i = -1;
91
- while (++i < len) {
92
- oldQueue[i]();
93
- }
94
- len = queue.length;
95
- }
96
- draining = false;
69
+ global.document.documentElement.appendChild(scriptEl);
70
+ };
71
+ } else {
72
+ scheduleDrain = function() {
73
+ setTimeout(nextTick, 0);
74
+ };
97
75
  }
98
- module2.exports = immediate;
99
- function immediate(task) {
100
- if (queue.push(task) === 1 && !draining) {
101
- scheduleDrain();
76
+ }
77
+ var draining;
78
+ var queue = [];
79
+ function nextTick() {
80
+ draining = true;
81
+ var i, oldQueue;
82
+ var len = queue.length;
83
+ while (len) {
84
+ oldQueue = queue;
85
+ queue = [];
86
+ i = -1;
87
+ while (++i < len) {
88
+ oldQueue[i]();
102
89
  }
90
+ len = queue.length;
103
91
  }
104
- }).call(this, typeof commonjsGlobal !== "undefined" ? commonjsGlobal : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {});
105
- }, {}], 2: [function(_dereq_, module2, exports2) {
106
- var immediate = _dereq_(1);
107
- function INTERNAL() {
108
- }
109
- var handlers = {};
110
- var REJECTED = ["REJECTED"];
111
- var FULFILLED = ["FULFILLED"];
112
- var PENDING = ["PENDING"];
113
- module2.exports = Promise2;
114
- function Promise2(resolver) {
115
- if (typeof resolver !== "function") {
116
- throw new TypeError("resolver must be a function");
117
- }
118
- this.state = PENDING;
119
- this.queue = [];
120
- this.outcome = void 0;
121
- if (resolver !== INTERNAL) {
122
- safelyResolveThenable(this, resolver);
123
- }
92
+ draining = false;
124
93
  }
125
- Promise2.prototype["catch"] = function(onRejected) {
126
- return this.then(null, onRejected);
127
- };
128
- Promise2.prototype.then = function(onFulfilled, onRejected) {
129
- if (typeof onFulfilled !== "function" && this.state === FULFILLED || typeof onRejected !== "function" && this.state === REJECTED) {
130
- return this;
131
- }
132
- var promise = new this.constructor(INTERNAL);
133
- if (this.state !== PENDING) {
134
- var resolver = this.state === FULFILLED ? onFulfilled : onRejected;
135
- unwrap(promise, resolver, this.outcome);
136
- } else {
137
- this.queue.push(new QueueItem(promise, onFulfilled, onRejected));
138
- }
139
- return promise;
140
- };
141
- function QueueItem(promise, onFulfilled, onRejected) {
142
- this.promise = promise;
143
- if (typeof onFulfilled === "function") {
144
- this.onFulfilled = onFulfilled;
145
- this.callFulfilled = this.otherCallFulfilled;
146
- }
147
- if (typeof onRejected === "function") {
148
- this.onRejected = onRejected;
149
- this.callRejected = this.otherCallRejected;
94
+ module2.exports = immediate;
95
+ function immediate(task) {
96
+ if (queue.push(task) === 1 && !draining) {
97
+ scheduleDrain();
150
98
  }
151
99
  }
152
- QueueItem.prototype.callFulfilled = function(value) {
153
- handlers.resolve(this.promise, value);
154
- };
155
- QueueItem.prototype.otherCallFulfilled = function(value) {
156
- unwrap(this.promise, this.onFulfilled, value);
157
- };
158
- QueueItem.prototype.callRejected = function(value) {
159
- handlers.reject(this.promise, value);
160
- };
161
- QueueItem.prototype.otherCallRejected = function(value) {
162
- unwrap(this.promise, this.onRejected, value);
163
- };
164
- function unwrap(promise, func, value) {
165
- immediate(function() {
166
- var returnValue;
167
- try {
168
- returnValue = func(value);
169
- } catch (e) {
170
- return handlers.reject(promise, e);
171
- }
172
- if (returnValue === promise) {
173
- handlers.reject(promise, new TypeError("Cannot resolve promise with itself"));
174
- } else {
175
- handlers.resolve(promise, returnValue);
176
- }
177
- });
100
+ }).call(this, typeof commonjsGlobal !== "undefined" ? commonjsGlobal : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {});
101
+ }, {}], 2: [function(_dereq_, module2, exports2) {
102
+ var immediate = _dereq_(1);
103
+ function INTERNAL() {
104
+ }
105
+ var handlers = {};
106
+ var REJECTED = ["REJECTED"];
107
+ var FULFILLED = ["FULFILLED"];
108
+ var PENDING = ["PENDING"];
109
+ module2.exports = Promise2;
110
+ function Promise2(resolver) {
111
+ if (typeof resolver !== "function") {
112
+ throw new TypeError("resolver must be a function");
113
+ }
114
+ this.state = PENDING;
115
+ this.queue = [];
116
+ this.outcome = void 0;
117
+ if (resolver !== INTERNAL) {
118
+ safelyResolveThenable(this, resolver);
119
+ }
120
+ }
121
+ Promise2.prototype["catch"] = function(onRejected) {
122
+ return this.then(null, onRejected);
123
+ };
124
+ Promise2.prototype.then = function(onFulfilled, onRejected) {
125
+ if (typeof onFulfilled !== "function" && this.state === FULFILLED || typeof onRejected !== "function" && this.state === REJECTED) {
126
+ return this;
127
+ }
128
+ var promise = new this.constructor(INTERNAL);
129
+ if (this.state !== PENDING) {
130
+ var resolver = this.state === FULFILLED ? onFulfilled : onRejected;
131
+ unwrap(promise, resolver, this.outcome);
132
+ } else {
133
+ this.queue.push(new QueueItem(promise, onFulfilled, onRejected));
134
+ }
135
+ return promise;
136
+ };
137
+ function QueueItem(promise, onFulfilled, onRejected) {
138
+ this.promise = promise;
139
+ if (typeof onFulfilled === "function") {
140
+ this.onFulfilled = onFulfilled;
141
+ this.callFulfilled = this.otherCallFulfilled;
142
+ }
143
+ if (typeof onRejected === "function") {
144
+ this.onRejected = onRejected;
145
+ this.callRejected = this.otherCallRejected;
178
146
  }
179
- handlers.resolve = function(self2, value) {
180
- var result = tryCatch(getThen, value);
181
- if (result.status === "error") {
182
- return handlers.reject(self2, result.value);
147
+ }
148
+ QueueItem.prototype.callFulfilled = function(value) {
149
+ handlers.resolve(this.promise, value);
150
+ };
151
+ QueueItem.prototype.otherCallFulfilled = function(value) {
152
+ unwrap(this.promise, this.onFulfilled, value);
153
+ };
154
+ QueueItem.prototype.callRejected = function(value) {
155
+ handlers.reject(this.promise, value);
156
+ };
157
+ QueueItem.prototype.otherCallRejected = function(value) {
158
+ unwrap(this.promise, this.onRejected, value);
159
+ };
160
+ function unwrap(promise, func, value) {
161
+ immediate(function() {
162
+ var returnValue;
163
+ try {
164
+ returnValue = func(value);
165
+ } catch (e) {
166
+ return handlers.reject(promise, e);
183
167
  }
184
- var thenable = result.value;
185
- if (thenable) {
186
- safelyResolveThenable(self2, thenable);
168
+ if (returnValue === promise) {
169
+ handlers.reject(promise, new TypeError("Cannot resolve promise with itself"));
187
170
  } else {
188
- self2.state = FULFILLED;
189
- self2.outcome = value;
190
- var i = -1;
191
- var len = self2.queue.length;
192
- while (++i < len) {
193
- self2.queue[i].callFulfilled(value);
194
- }
171
+ handlers.resolve(promise, returnValue);
195
172
  }
196
- return self2;
197
- };
198
- handlers.reject = function(self2, error) {
199
- self2.state = REJECTED;
200
- self2.outcome = error;
173
+ });
174
+ }
175
+ handlers.resolve = function(self2, value) {
176
+ var result = tryCatch(getThen, value);
177
+ if (result.status === "error") {
178
+ return handlers.reject(self2, result.value);
179
+ }
180
+ var thenable = result.value;
181
+ if (thenable) {
182
+ safelyResolveThenable(self2, thenable);
183
+ } else {
184
+ self2.state = FULFILLED;
185
+ self2.outcome = value;
201
186
  var i = -1;
202
187
  var len = self2.queue.length;
203
188
  while (++i < len) {
204
- self2.queue[i].callRejected(error);
205
- }
206
- return self2;
207
- };
208
- function getThen(obj) {
209
- var then = obj && obj.then;
210
- if (obj && (typeof obj === "object" || typeof obj === "function") && typeof then === "function") {
211
- return function appyThen() {
212
- then.apply(obj, arguments);
213
- };
214
- }
215
- }
216
- function safelyResolveThenable(self2, thenable) {
217
- var called = false;
218
- function onError(value) {
219
- if (called) {
220
- return;
221
- }
222
- called = true;
223
- handlers.reject(self2, value);
224
- }
225
- function onSuccess(value) {
226
- if (called) {
227
- return;
228
- }
229
- called = true;
230
- handlers.resolve(self2, value);
231
- }
232
- function tryToUnwrap() {
233
- thenable(onSuccess, onError);
234
- }
235
- var result = tryCatch(tryToUnwrap);
236
- if (result.status === "error") {
237
- onError(result.value);
238
- }
189
+ self2.queue[i].callFulfilled(value);
190
+ }
191
+ }
192
+ return self2;
193
+ };
194
+ handlers.reject = function(self2, error) {
195
+ self2.state = REJECTED;
196
+ self2.outcome = error;
197
+ var i = -1;
198
+ var len = self2.queue.length;
199
+ while (++i < len) {
200
+ self2.queue[i].callRejected(error);
201
+ }
202
+ return self2;
203
+ };
204
+ function getThen(obj) {
205
+ var then = obj && obj.then;
206
+ if (obj && (typeof obj === "object" || typeof obj === "function") && typeof then === "function") {
207
+ return function appyThen() {
208
+ then.apply(obj, arguments);
209
+ };
239
210
  }
240
- function tryCatch(func, value) {
241
- var out = {};
242
- try {
243
- out.value = func(value);
244
- out.status = "success";
245
- } catch (e) {
246
- out.status = "error";
247
- out.value = e;
211
+ }
212
+ function safelyResolveThenable(self2, thenable) {
213
+ var called = false;
214
+ function onError(value) {
215
+ if (called) {
216
+ return;
248
217
  }
249
- return out;
218
+ called = true;
219
+ handlers.reject(self2, value);
250
220
  }
251
- Promise2.resolve = resolve;
252
- function resolve(value) {
253
- if (value instanceof this) {
254
- return value;
221
+ function onSuccess(value) {
222
+ if (called) {
223
+ return;
255
224
  }
256
- return handlers.resolve(new this(INTERNAL), value);
225
+ called = true;
226
+ handlers.resolve(self2, value);
257
227
  }
258
- Promise2.reject = reject;
259
- function reject(reason) {
260
- var promise = new this(INTERNAL);
261
- return handlers.reject(promise, reason);
262
- }
263
- Promise2.all = all;
264
- function all(iterable) {
265
- var self2 = this;
266
- if (Object.prototype.toString.call(iterable) !== "[object Array]") {
267
- return this.reject(new TypeError("must be an array"));
268
- }
269
- var len = iterable.length;
270
- var called = false;
271
- if (!len) {
272
- return this.resolve([]);
273
- }
274
- var values = new Array(len);
275
- var resolved = 0;
276
- var i = -1;
277
- var promise = new this(INTERNAL);
278
- while (++i < len) {
279
- allResolver(iterable[i], i);
280
- }
281
- return promise;
282
- function allResolver(value, i2) {
283
- self2.resolve(value).then(resolveFromAll, function(error) {
284
- if (!called) {
285
- called = true;
286
- handlers.reject(promise, error);
287
- }
288
- });
289
- function resolveFromAll(outValue) {
290
- values[i2] = outValue;
291
- if (++resolved === len && !called) {
292
- called = true;
293
- handlers.resolve(promise, values);
294
- }
295
- }
296
- }
228
+ function tryToUnwrap() {
229
+ thenable(onSuccess, onError);
297
230
  }
298
- Promise2.race = race;
299
- function race(iterable) {
300
- var self2 = this;
301
- if (Object.prototype.toString.call(iterable) !== "[object Array]") {
302
- return this.reject(new TypeError("must be an array"));
303
- }
304
- var len = iterable.length;
305
- var called = false;
306
- if (!len) {
307
- return this.resolve([]);
308
- }
309
- var i = -1;
310
- var promise = new this(INTERNAL);
311
- while (++i < len) {
312
- resolver(iterable[i]);
313
- }
314
- return promise;
315
- function resolver(value) {
316
- self2.resolve(value).then(function(response) {
317
- if (!called) {
318
- called = true;
319
- handlers.resolve(promise, response);
320
- }
321
- }, function(error) {
322
- if (!called) {
323
- called = true;
324
- handlers.reject(promise, error);
325
- }
326
- });
327
- }
231
+ var result = tryCatch(tryToUnwrap);
232
+ if (result.status === "error") {
233
+ onError(result.value);
328
234
  }
329
- }, { "1": 1 }], 3: [function(_dereq_, module2, exports2) {
330
- (function(global) {
331
- if (typeof global.Promise !== "function") {
332
- global.Promise = _dereq_(2);
333
- }
334
- }).call(this, typeof commonjsGlobal !== "undefined" ? commonjsGlobal : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {});
335
- }, { "2": 2 }], 4: [function(_dereq_, module2, exports2) {
336
- var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) {
337
- return typeof obj;
338
- } : function(obj) {
339
- return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
340
- };
341
- function _classCallCheck(instance, Constructor) {
342
- if (!(instance instanceof Constructor)) {
343
- throw new TypeError("Cannot call a class as a function");
344
- }
235
+ }
236
+ function tryCatch(func, value) {
237
+ var out = {};
238
+ try {
239
+ out.value = func(value);
240
+ out.status = "success";
241
+ } catch (e) {
242
+ out.status = "error";
243
+ out.value = e;
244
+ }
245
+ return out;
246
+ }
247
+ Promise2.resolve = resolve;
248
+ function resolve(value) {
249
+ if (value instanceof this) {
250
+ return value;
345
251
  }
346
- function getIDB() {
347
- try {
348
- if (typeof indexedDB !== "undefined") {
349
- return indexedDB;
350
- }
351
- if (typeof webkitIndexedDB !== "undefined") {
352
- return webkitIndexedDB;
353
- }
354
- if (typeof mozIndexedDB !== "undefined") {
355
- return mozIndexedDB;
356
- }
357
- if (typeof OIndexedDB !== "undefined") {
358
- return OIndexedDB;
359
- }
360
- if (typeof msIndexedDB !== "undefined") {
361
- return msIndexedDB;
252
+ return handlers.resolve(new this(INTERNAL), value);
253
+ }
254
+ Promise2.reject = reject;
255
+ function reject(reason) {
256
+ var promise = new this(INTERNAL);
257
+ return handlers.reject(promise, reason);
258
+ }
259
+ Promise2.all = all;
260
+ function all(iterable) {
261
+ var self2 = this;
262
+ if (Object.prototype.toString.call(iterable) !== "[object Array]") {
263
+ return this.reject(new TypeError("must be an array"));
264
+ }
265
+ var len = iterable.length;
266
+ var called = false;
267
+ if (!len) {
268
+ return this.resolve([]);
269
+ }
270
+ var values = new Array(len);
271
+ var resolved = 0;
272
+ var i = -1;
273
+ var promise = new this(INTERNAL);
274
+ while (++i < len) {
275
+ allResolver(iterable[i], i);
276
+ }
277
+ return promise;
278
+ function allResolver(value, i2) {
279
+ self2.resolve(value).then(resolveFromAll, function(error) {
280
+ if (!called) {
281
+ called = true;
282
+ handlers.reject(promise, error);
362
283
  }
363
- } catch (e) {
364
- return;
365
- }
366
- }
367
- var idb = getIDB();
368
- function isIndexedDBValid() {
369
- try {
370
- if (!idb || !idb.open) {
371
- return false;
284
+ });
285
+ function resolveFromAll(outValue) {
286
+ values[i2] = outValue;
287
+ if (++resolved === len && !called) {
288
+ called = true;
289
+ handlers.resolve(promise, values);
372
290
  }
373
- var isSafari = typeof openDatabase !== "undefined" && /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(navigator.platform);
374
- var hasFetch = typeof fetch === "function" && fetch.toString().indexOf("[native code") !== -1;
375
- return (!isSafari || hasFetch) && typeof indexedDB !== "undefined" && // some outdated implementations of IDB that appear on Samsung
376
- // and HTC Android devices <4.4 are missing IDBKeyRange
377
- // See: https://github.com/mozilla/localForage/issues/128
378
- // See: https://github.com/mozilla/localForage/issues/272
379
- typeof IDBKeyRange !== "undefined";
380
- } catch (e) {
381
- return false;
382
291
  }
383
292
  }
384
- function createBlob(parts, properties) {
385
- parts = parts || [];
386
- properties = properties || {};
387
- try {
388
- return new Blob(parts, properties);
389
- } catch (e) {
390
- if (e.name !== "TypeError") {
391
- throw e;
293
+ }
294
+ Promise2.race = race;
295
+ function race(iterable) {
296
+ var self2 = this;
297
+ if (Object.prototype.toString.call(iterable) !== "[object Array]") {
298
+ return this.reject(new TypeError("must be an array"));
299
+ }
300
+ var len = iterable.length;
301
+ var called = false;
302
+ if (!len) {
303
+ return this.resolve([]);
304
+ }
305
+ var i = -1;
306
+ var promise = new this(INTERNAL);
307
+ while (++i < len) {
308
+ resolver(iterable[i]);
309
+ }
310
+ return promise;
311
+ function resolver(value) {
312
+ self2.resolve(value).then(function(response) {
313
+ if (!called) {
314
+ called = true;
315
+ handlers.resolve(promise, response);
392
316
  }
393
- var Builder = typeof BlobBuilder !== "undefined" ? BlobBuilder : typeof MSBlobBuilder !== "undefined" ? MSBlobBuilder : typeof MozBlobBuilder !== "undefined" ? MozBlobBuilder : WebKitBlobBuilder;
394
- var builder = new Builder();
395
- for (var i = 0; i < parts.length; i += 1) {
396
- builder.append(parts[i]);
317
+ }, function(error) {
318
+ if (!called) {
319
+ called = true;
320
+ handlers.reject(promise, error);
397
321
  }
398
- return builder.getBlob(properties.type);
399
- }
322
+ });
400
323
  }
401
- if (typeof Promise === "undefined") {
402
- _dereq_(3);
324
+ }
325
+ }, { "1": 1 }], 3: [function(_dereq_, module2, exports2) {
326
+ (function(global) {
327
+ if (typeof global.Promise !== "function") {
328
+ global.Promise = _dereq_(2);
329
+ }
330
+ }).call(this, typeof commonjsGlobal !== "undefined" ? commonjsGlobal : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {});
331
+ }, { "2": 2 }], 4: [function(_dereq_, module2, exports2) {
332
+ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) {
333
+ return typeof obj;
334
+ } : function(obj) {
335
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
336
+ };
337
+ function _classCallCheck(instance, Constructor) {
338
+ if (!(instance instanceof Constructor)) {
339
+ throw new TypeError("Cannot call a class as a function");
403
340
  }
404
- var Promise$1 = Promise;
405
- function executeCallback(promise, callback) {
406
- if (callback) {
407
- promise.then(function(result) {
408
- callback(null, result);
409
- }, function(error) {
410
- callback(error);
411
- });
341
+ }
342
+ function getIDB() {
343
+ try {
344
+ if (typeof indexedDB !== "undefined") {
345
+ return indexedDB;
412
346
  }
413
- }
414
- function executeTwoCallbacks(promise, callback, errorCallback) {
415
- if (typeof callback === "function") {
416
- promise.then(callback);
347
+ if (typeof webkitIndexedDB !== "undefined") {
348
+ return webkitIndexedDB;
417
349
  }
418
- if (typeof errorCallback === "function") {
419
- promise["catch"](errorCallback);
350
+ if (typeof mozIndexedDB !== "undefined") {
351
+ return mozIndexedDB;
420
352
  }
421
- }
422
- function normalizeKey(key2) {
423
- if (typeof key2 !== "string") {
424
- key2 = String(key2);
353
+ if (typeof OIndexedDB !== "undefined") {
354
+ return OIndexedDB;
425
355
  }
426
- return key2;
427
- }
428
- function getCallback() {
429
- if (arguments.length && typeof arguments[arguments.length - 1] === "function") {
430
- return arguments[arguments.length - 1];
356
+ if (typeof msIndexedDB !== "undefined") {
357
+ return msIndexedDB;
431
358
  }
359
+ } catch (e) {
360
+ return;
432
361
  }
433
- var DETECT_BLOB_SUPPORT_STORE = "local-forage-detect-blob-support";
434
- var supportsBlobs = void 0;
435
- var dbContexts = {};
436
- var toString = Object.prototype.toString;
437
- var READ_ONLY = "readonly";
438
- var READ_WRITE = "readwrite";
439
- function _binStringToArrayBuffer(bin) {
440
- var length2 = bin.length;
441
- var buf = new ArrayBuffer(length2);
442
- var arr = new Uint8Array(buf);
443
- for (var i = 0; i < length2; i++) {
444
- arr[i] = bin.charCodeAt(i);
445
- }
446
- return buf;
447
- }
448
- function _checkBlobSupportWithoutCaching(idb2) {
449
- return new Promise$1(function(resolve) {
450
- var txn = idb2.transaction(DETECT_BLOB_SUPPORT_STORE, READ_WRITE);
451
- var blob = createBlob([""]);
452
- txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob, "key");
453
- txn.onabort = function(e) {
454
- e.preventDefault();
455
- e.stopPropagation();
456
- resolve(false);
457
- };
458
- txn.oncomplete = function() {
459
- var matchedChrome = navigator.userAgent.match(/Chrome\/(\d+)/);
460
- var matchedEdge = navigator.userAgent.match(/Edge\//);
461
- resolve(matchedEdge || !matchedChrome || parseInt(matchedChrome[1], 10) >= 43);
462
- };
463
- })["catch"](function() {
362
+ }
363
+ var idb = getIDB();
364
+ function isIndexedDBValid() {
365
+ try {
366
+ if (!idb || !idb.open) {
464
367
  return false;
465
- });
466
- }
467
- function _checkBlobSupport(idb2) {
468
- if (typeof supportsBlobs === "boolean") {
469
- return Promise$1.resolve(supportsBlobs);
470
368
  }
471
- return _checkBlobSupportWithoutCaching(idb2).then(function(value) {
472
- supportsBlobs = value;
473
- return supportsBlobs;
474
- });
369
+ var isSafari = typeof openDatabase !== "undefined" && /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(navigator.platform);
370
+ var hasFetch = typeof fetch === "function" && fetch.toString().indexOf("[native code") !== -1;
371
+ return (!isSafari || hasFetch) && typeof indexedDB !== "undefined" && // some outdated implementations of IDB that appear on Samsung
372
+ // and HTC Android devices <4.4 are missing IDBKeyRange
373
+ // See: https://github.com/mozilla/localForage/issues/128
374
+ // See: https://github.com/mozilla/localForage/issues/272
375
+ typeof IDBKeyRange !== "undefined";
376
+ } catch (e) {
377
+ return false;
475
378
  }
476
- function _deferReadiness(dbInfo) {
477
- var dbContext = dbContexts[dbInfo.name];
478
- var deferredOperation = {};
479
- deferredOperation.promise = new Promise$1(function(resolve, reject) {
480
- deferredOperation.resolve = resolve;
481
- deferredOperation.reject = reject;
482
- });
483
- dbContext.deferredOperations.push(deferredOperation);
484
- if (!dbContext.dbReady) {
485
- dbContext.dbReady = deferredOperation.promise;
486
- } else {
487
- dbContext.dbReady = dbContext.dbReady.then(function() {
488
- return deferredOperation.promise;
489
- });
490
- }
379
+ }
380
+ function createBlob(parts, properties) {
381
+ parts = parts || [];
382
+ properties = properties || {};
383
+ try {
384
+ return new Blob(parts, properties);
385
+ } catch (e) {
386
+ if (e.name !== "TypeError") {
387
+ throw e;
388
+ }
389
+ var Builder = typeof BlobBuilder !== "undefined" ? BlobBuilder : typeof MSBlobBuilder !== "undefined" ? MSBlobBuilder : typeof MozBlobBuilder !== "undefined" ? MozBlobBuilder : WebKitBlobBuilder;
390
+ var builder = new Builder();
391
+ for (var i = 0; i < parts.length; i += 1) {
392
+ builder.append(parts[i]);
393
+ }
394
+ return builder.getBlob(properties.type);
491
395
  }
492
- function _advanceReadiness(dbInfo) {
493
- var dbContext = dbContexts[dbInfo.name];
494
- var deferredOperation = dbContext.deferredOperations.pop();
495
- if (deferredOperation) {
496
- deferredOperation.resolve();
497
- return deferredOperation.promise;
498
- }
396
+ }
397
+ if (typeof Promise === "undefined") {
398
+ _dereq_(3);
399
+ }
400
+ var Promise$1 = Promise;
401
+ function executeCallback(promise, callback) {
402
+ if (callback) {
403
+ promise.then(function(result) {
404
+ callback(null, result);
405
+ }, function(error) {
406
+ callback(error);
407
+ });
499
408
  }
500
- function _rejectReadiness(dbInfo, err) {
501
- var dbContext = dbContexts[dbInfo.name];
502
- var deferredOperation = dbContext.deferredOperations.pop();
503
- if (deferredOperation) {
504
- deferredOperation.reject(err);
505
- return deferredOperation.promise;
506
- }
409
+ }
410
+ function executeTwoCallbacks(promise, callback, errorCallback) {
411
+ if (typeof callback === "function") {
412
+ promise.then(callback);
507
413
  }
508
- function _getConnection(dbInfo, upgradeNeeded) {
509
- return new Promise$1(function(resolve, reject) {
510
- dbContexts[dbInfo.name] = dbContexts[dbInfo.name] || createDbContext();
511
- if (dbInfo.db) {
512
- if (upgradeNeeded) {
513
- _deferReadiness(dbInfo);
514
- dbInfo.db.close();
515
- } else {
516
- return resolve(dbInfo.db);
517
- }
518
- }
519
- var dbArgs = [dbInfo.name];
520
- if (upgradeNeeded) {
521
- dbArgs.push(dbInfo.version);
522
- }
523
- var openreq = idb.open.apply(idb, dbArgs);
524
- if (upgradeNeeded) {
525
- openreq.onupgradeneeded = function(e) {
526
- var db = openreq.result;
527
- try {
528
- db.createObjectStore(dbInfo.storeName);
529
- if (e.oldVersion <= 1) {
530
- db.createObjectStore(DETECT_BLOB_SUPPORT_STORE);
531
- }
532
- } catch (ex) {
533
- if (ex.name === "ConstraintError") {
534
- } else {
535
- throw ex;
536
- }
537
- }
538
- };
539
- }
540
- openreq.onerror = function(e) {
541
- e.preventDefault();
542
- reject(openreq.error);
543
- };
544
- openreq.onsuccess = function() {
545
- var db = openreq.result;
546
- db.onversionchange = function(e) {
547
- e.target.close();
548
- };
549
- resolve(db);
550
- _advanceReadiness(dbInfo);
551
- };
552
- });
414
+ if (typeof errorCallback === "function") {
415
+ promise["catch"](errorCallback);
553
416
  }
554
- function _getOriginalConnection(dbInfo) {
555
- return _getConnection(dbInfo, false);
417
+ }
418
+ function normalizeKey(key2) {
419
+ if (typeof key2 !== "string") {
420
+ key2 = String(key2);
556
421
  }
557
- function _getUpgradedConnection(dbInfo) {
558
- return _getConnection(dbInfo, true);
422
+ return key2;
423
+ }
424
+ function getCallback() {
425
+ if (arguments.length && typeof arguments[arguments.length - 1] === "function") {
426
+ return arguments[arguments.length - 1];
559
427
  }
560
- function _isUpgradeNeeded(dbInfo, defaultVersion) {
561
- if (!dbInfo.db) {
562
- return true;
563
- }
564
- var isNewStore = !dbInfo.db.objectStoreNames.contains(dbInfo.storeName);
565
- var isDowngrade = dbInfo.version < dbInfo.db.version;
566
- var isUpgrade = dbInfo.version > dbInfo.db.version;
567
- if (isDowngrade) {
568
- if (dbInfo.version !== defaultVersion) {
569
- }
570
- dbInfo.version = dbInfo.db.version;
571
- }
572
- if (isUpgrade || isNewStore) {
573
- if (isNewStore) {
574
- var incVersion = dbInfo.db.version + 1;
575
- if (incVersion > dbInfo.version) {
576
- dbInfo.version = incVersion;
577
- }
578
- }
579
- return true;
580
- }
428
+ }
429
+ var DETECT_BLOB_SUPPORT_STORE = "local-forage-detect-blob-support";
430
+ var supportsBlobs = void 0;
431
+ var dbContexts = {};
432
+ var toString = Object.prototype.toString;
433
+ var READ_ONLY = "readonly";
434
+ var READ_WRITE = "readwrite";
435
+ function _binStringToArrayBuffer(bin) {
436
+ var length2 = bin.length;
437
+ var buf = new ArrayBuffer(length2);
438
+ var arr = new Uint8Array(buf);
439
+ for (var i = 0; i < length2; i++) {
440
+ arr[i] = bin.charCodeAt(i);
441
+ }
442
+ return buf;
443
+ }
444
+ function _checkBlobSupportWithoutCaching(idb2) {
445
+ return new Promise$1(function(resolve) {
446
+ var txn = idb2.transaction(DETECT_BLOB_SUPPORT_STORE, READ_WRITE);
447
+ var blob = createBlob([""]);
448
+ txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob, "key");
449
+ txn.onabort = function(e) {
450
+ e.preventDefault();
451
+ e.stopPropagation();
452
+ resolve(false);
453
+ };
454
+ txn.oncomplete = function() {
455
+ var matchedChrome = navigator.userAgent.match(/Chrome\/(\d+)/);
456
+ var matchedEdge = navigator.userAgent.match(/Edge\//);
457
+ resolve(matchedEdge || !matchedChrome || parseInt(matchedChrome[1], 10) >= 43);
458
+ };
459
+ })["catch"](function() {
581
460
  return false;
582
- }
583
- function _encodeBlob(blob) {
584
- return new Promise$1(function(resolve, reject) {
585
- var reader = new FileReader();
586
- reader.onerror = reject;
587
- reader.onloadend = function(e) {
588
- var base64 = btoa(e.target.result || "");
589
- resolve({
590
- __local_forage_encoded_blob: true,
591
- data: base64,
592
- type: blob.type
593
- });
594
- };
595
- reader.readAsBinaryString(blob);
461
+ });
462
+ }
463
+ function _checkBlobSupport(idb2) {
464
+ if (typeof supportsBlobs === "boolean") {
465
+ return Promise$1.resolve(supportsBlobs);
466
+ }
467
+ return _checkBlobSupportWithoutCaching(idb2).then(function(value) {
468
+ supportsBlobs = value;
469
+ return supportsBlobs;
470
+ });
471
+ }
472
+ function _deferReadiness(dbInfo) {
473
+ var dbContext = dbContexts[dbInfo.name];
474
+ var deferredOperation = {};
475
+ deferredOperation.promise = new Promise$1(function(resolve, reject) {
476
+ deferredOperation.resolve = resolve;
477
+ deferredOperation.reject = reject;
478
+ });
479
+ dbContext.deferredOperations.push(deferredOperation);
480
+ if (!dbContext.dbReady) {
481
+ dbContext.dbReady = deferredOperation.promise;
482
+ } else {
483
+ dbContext.dbReady = dbContext.dbReady.then(function() {
484
+ return deferredOperation.promise;
596
485
  });
597
486
  }
598
- function _decodeBlob(encodedBlob) {
599
- var arrayBuff = _binStringToArrayBuffer(atob(encodedBlob.data));
600
- return createBlob([arrayBuff], { type: encodedBlob.type });
601
- }
602
- function _isEncodedBlob(value) {
603
- return value && value.__local_forage_encoded_blob;
487
+ }
488
+ function _advanceReadiness(dbInfo) {
489
+ var dbContext = dbContexts[dbInfo.name];
490
+ var deferredOperation = dbContext.deferredOperations.pop();
491
+ if (deferredOperation) {
492
+ deferredOperation.resolve();
493
+ return deferredOperation.promise;
604
494
  }
605
- function _fullyReady(callback) {
606
- var self2 = this;
607
- var promise = self2._initReady().then(function() {
608
- var dbContext = dbContexts[self2._dbInfo.name];
609
- if (dbContext && dbContext.dbReady) {
610
- return dbContext.dbReady;
611
- }
612
- });
613
- executeTwoCallbacks(promise, callback, callback);
614
- return promise;
495
+ }
496
+ function _rejectReadiness(dbInfo, err) {
497
+ var dbContext = dbContexts[dbInfo.name];
498
+ var deferredOperation = dbContext.deferredOperations.pop();
499
+ if (deferredOperation) {
500
+ deferredOperation.reject(err);
501
+ return deferredOperation.promise;
615
502
  }
616
- function _tryReconnect(dbInfo) {
617
- _deferReadiness(dbInfo);
618
- var dbContext = dbContexts[dbInfo.name];
619
- var forages = dbContext.forages;
620
- for (var i = 0; i < forages.length; i++) {
621
- var forage = forages[i];
622
- if (forage._dbInfo.db) {
623
- forage._dbInfo.db.close();
624
- forage._dbInfo.db = null;
503
+ }
504
+ function _getConnection(dbInfo, upgradeNeeded) {
505
+ return new Promise$1(function(resolve, reject) {
506
+ dbContexts[dbInfo.name] = dbContexts[dbInfo.name] || createDbContext();
507
+ if (dbInfo.db) {
508
+ if (upgradeNeeded) {
509
+ _deferReadiness(dbInfo);
510
+ dbInfo.db.close();
511
+ } else {
512
+ return resolve(dbInfo.db);
625
513
  }
626
514
  }
627
- dbInfo.db = null;
628
- return _getOriginalConnection(dbInfo).then(function(db) {
629
- dbInfo.db = db;
630
- if (_isUpgradeNeeded(dbInfo)) {
631
- return _getUpgradedConnection(dbInfo);
632
- }
633
- return db;
634
- }).then(function(db) {
635
- dbInfo.db = dbContext.db = db;
636
- for (var i2 = 0; i2 < forages.length; i2++) {
637
- forages[i2]._dbInfo.db = db;
638
- }
639
- })["catch"](function(err) {
640
- _rejectReadiness(dbInfo, err);
641
- throw err;
642
- });
643
- }
644
- function createTransaction(dbInfo, mode, callback, retries) {
645
- if (retries === void 0) {
646
- retries = 1;
515
+ var dbArgs = [dbInfo.name];
516
+ if (upgradeNeeded) {
517
+ dbArgs.push(dbInfo.version);
647
518
  }
648
- try {
649
- var tx = dbInfo.db.transaction(dbInfo.storeName, mode);
650
- callback(null, tx);
651
- } catch (err) {
652
- if (retries > 0 && (!dbInfo.db || err.name === "InvalidStateError" || err.name === "NotFoundError")) {
653
- return Promise$1.resolve().then(function() {
654
- if (!dbInfo.db || err.name === "NotFoundError" && !dbInfo.db.objectStoreNames.contains(dbInfo.storeName) && dbInfo.version <= dbInfo.db.version) {
655
- if (dbInfo.db) {
656
- dbInfo.version = dbInfo.db.version + 1;
657
- }
658
- return _getUpgradedConnection(dbInfo);
519
+ var openreq = idb.open.apply(idb, dbArgs);
520
+ if (upgradeNeeded) {
521
+ openreq.onupgradeneeded = function(e) {
522
+ var db = openreq.result;
523
+ try {
524
+ db.createObjectStore(dbInfo.storeName);
525
+ if (e.oldVersion <= 1) {
526
+ db.createObjectStore(DETECT_BLOB_SUPPORT_STORE);
659
527
  }
660
- }).then(function() {
661
- return _tryReconnect(dbInfo).then(function() {
662
- createTransaction(dbInfo, mode, callback, retries - 1);
663
- });
664
- })["catch"](callback);
665
- }
666
- callback(err);
528
+ } catch (ex) {
529
+ if (ex.name === "ConstraintError") {
530
+ } else {
531
+ throw ex;
532
+ }
533
+ }
534
+ };
667
535
  }
668
- }
669
- function createDbContext() {
670
- return {
671
- // Running localForages sharing a database.
672
- forages: [],
673
- // Shared database.
674
- db: null,
675
- // Database readiness (promise).
676
- dbReady: null,
677
- // Deferred operations on the database.
678
- deferredOperations: []
536
+ openreq.onerror = function(e) {
537
+ e.preventDefault();
538
+ reject(openreq.error);
679
539
  };
680
- }
681
- function _initStorage(options) {
682
- var self2 = this;
683
- var dbInfo = {
684
- db: null
540
+ openreq.onsuccess = function() {
541
+ var db = openreq.result;
542
+ db.onversionchange = function(e) {
543
+ e.target.close();
544
+ };
545
+ resolve(db);
546
+ _advanceReadiness(dbInfo);
685
547
  };
686
- if (options) {
687
- for (var i in options) {
688
- dbInfo[i] = options[i];
548
+ });
549
+ }
550
+ function _getOriginalConnection(dbInfo) {
551
+ return _getConnection(dbInfo, false);
552
+ }
553
+ function _getUpgradedConnection(dbInfo) {
554
+ return _getConnection(dbInfo, true);
555
+ }
556
+ function _isUpgradeNeeded(dbInfo, defaultVersion) {
557
+ if (!dbInfo.db) {
558
+ return true;
559
+ }
560
+ var isNewStore = !dbInfo.db.objectStoreNames.contains(dbInfo.storeName);
561
+ var isDowngrade = dbInfo.version < dbInfo.db.version;
562
+ var isUpgrade = dbInfo.version > dbInfo.db.version;
563
+ if (isDowngrade) {
564
+ if (dbInfo.version !== defaultVersion) {
565
+ }
566
+ dbInfo.version = dbInfo.db.version;
567
+ }
568
+ if (isUpgrade || isNewStore) {
569
+ if (isNewStore) {
570
+ var incVersion = dbInfo.db.version + 1;
571
+ if (incVersion > dbInfo.version) {
572
+ dbInfo.version = incVersion;
689
573
  }
690
574
  }
691
- var dbContext = dbContexts[dbInfo.name];
692
- if (!dbContext) {
693
- dbContext = createDbContext();
694
- dbContexts[dbInfo.name] = dbContext;
575
+ return true;
576
+ }
577
+ return false;
578
+ }
579
+ function _encodeBlob(blob) {
580
+ return new Promise$1(function(resolve, reject) {
581
+ var reader = new FileReader();
582
+ reader.onerror = reject;
583
+ reader.onloadend = function(e) {
584
+ var base64 = btoa(e.target.result || "");
585
+ resolve({
586
+ __local_forage_encoded_blob: true,
587
+ data: base64,
588
+ type: blob.type
589
+ });
590
+ };
591
+ reader.readAsBinaryString(blob);
592
+ });
593
+ }
594
+ function _decodeBlob(encodedBlob) {
595
+ var arrayBuff = _binStringToArrayBuffer(atob(encodedBlob.data));
596
+ return createBlob([arrayBuff], { type: encodedBlob.type });
597
+ }
598
+ function _isEncodedBlob(value) {
599
+ return value && value.__local_forage_encoded_blob;
600
+ }
601
+ function _fullyReady(callback) {
602
+ var self2 = this;
603
+ var promise = self2._initReady().then(function() {
604
+ var dbContext = dbContexts[self2._dbInfo.name];
605
+ if (dbContext && dbContext.dbReady) {
606
+ return dbContext.dbReady;
607
+ }
608
+ });
609
+ executeTwoCallbacks(promise, callback, callback);
610
+ return promise;
611
+ }
612
+ function _tryReconnect(dbInfo) {
613
+ _deferReadiness(dbInfo);
614
+ var dbContext = dbContexts[dbInfo.name];
615
+ var forages = dbContext.forages;
616
+ for (var i = 0; i < forages.length; i++) {
617
+ var forage = forages[i];
618
+ if (forage._dbInfo.db) {
619
+ forage._dbInfo.db.close();
620
+ forage._dbInfo.db = null;
621
+ }
622
+ }
623
+ dbInfo.db = null;
624
+ return _getOriginalConnection(dbInfo).then(function(db) {
625
+ dbInfo.db = db;
626
+ if (_isUpgradeNeeded(dbInfo)) {
627
+ return _getUpgradedConnection(dbInfo);
628
+ }
629
+ return db;
630
+ }).then(function(db) {
631
+ dbInfo.db = dbContext.db = db;
632
+ for (var i2 = 0; i2 < forages.length; i2++) {
633
+ forages[i2]._dbInfo.db = db;
634
+ }
635
+ })["catch"](function(err) {
636
+ _rejectReadiness(dbInfo, err);
637
+ throw err;
638
+ });
639
+ }
640
+ function createTransaction(dbInfo, mode, callback, retries) {
641
+ if (retries === void 0) {
642
+ retries = 1;
643
+ }
644
+ try {
645
+ var tx = dbInfo.db.transaction(dbInfo.storeName, mode);
646
+ callback(null, tx);
647
+ } catch (err) {
648
+ if (retries > 0 && (!dbInfo.db || err.name === "InvalidStateError" || err.name === "NotFoundError")) {
649
+ return Promise$1.resolve().then(function() {
650
+ if (!dbInfo.db || err.name === "NotFoundError" && !dbInfo.db.objectStoreNames.contains(dbInfo.storeName) && dbInfo.version <= dbInfo.db.version) {
651
+ if (dbInfo.db) {
652
+ dbInfo.version = dbInfo.db.version + 1;
653
+ }
654
+ return _getUpgradedConnection(dbInfo);
655
+ }
656
+ }).then(function() {
657
+ return _tryReconnect(dbInfo).then(function() {
658
+ createTransaction(dbInfo, mode, callback, retries - 1);
659
+ });
660
+ })["catch"](callback);
661
+ }
662
+ callback(err);
663
+ }
664
+ }
665
+ function createDbContext() {
666
+ return {
667
+ // Running localForages sharing a database.
668
+ forages: [],
669
+ // Shared database.
670
+ db: null,
671
+ // Database readiness (promise).
672
+ dbReady: null,
673
+ // Deferred operations on the database.
674
+ deferredOperations: []
675
+ };
676
+ }
677
+ function _initStorage(options) {
678
+ var self2 = this;
679
+ var dbInfo = {
680
+ db: null
681
+ };
682
+ if (options) {
683
+ for (var i in options) {
684
+ dbInfo[i] = options[i];
695
685
  }
696
- dbContext.forages.push(self2);
697
- if (!self2._initReady) {
698
- self2._initReady = self2.ready;
699
- self2.ready = _fullyReady;
686
+ }
687
+ var dbContext = dbContexts[dbInfo.name];
688
+ if (!dbContext) {
689
+ dbContext = createDbContext();
690
+ dbContexts[dbInfo.name] = dbContext;
691
+ }
692
+ dbContext.forages.push(self2);
693
+ if (!self2._initReady) {
694
+ self2._initReady = self2.ready;
695
+ self2.ready = _fullyReady;
696
+ }
697
+ var initPromises = [];
698
+ function ignoreErrors() {
699
+ return Promise$1.resolve();
700
+ }
701
+ for (var j = 0; j < dbContext.forages.length; j++) {
702
+ var forage = dbContext.forages[j];
703
+ if (forage !== self2) {
704
+ initPromises.push(forage._initReady()["catch"](ignoreErrors));
700
705
  }
701
- var initPromises = [];
702
- function ignoreErrors() {
703
- return Promise$1.resolve();
706
+ }
707
+ var forages = dbContext.forages.slice(0);
708
+ return Promise$1.all(initPromises).then(function() {
709
+ dbInfo.db = dbContext.db;
710
+ return _getOriginalConnection(dbInfo);
711
+ }).then(function(db) {
712
+ dbInfo.db = db;
713
+ if (_isUpgradeNeeded(dbInfo, self2._defaultConfig.version)) {
714
+ return _getUpgradedConnection(dbInfo);
704
715
  }
705
- for (var j = 0; j < dbContext.forages.length; j++) {
706
- var forage = dbContext.forages[j];
707
- if (forage !== self2) {
708
- initPromises.push(forage._initReady()["catch"](ignoreErrors));
716
+ return db;
717
+ }).then(function(db) {
718
+ dbInfo.db = dbContext.db = db;
719
+ self2._dbInfo = dbInfo;
720
+ for (var k = 0; k < forages.length; k++) {
721
+ var forage2 = forages[k];
722
+ if (forage2 !== self2) {
723
+ forage2._dbInfo.db = dbInfo.db;
724
+ forage2._dbInfo.version = dbInfo.version;
709
725
  }
710
726
  }
711
- var forages = dbContext.forages.slice(0);
712
- return Promise$1.all(initPromises).then(function() {
713
- dbInfo.db = dbContext.db;
714
- return _getOriginalConnection(dbInfo);
715
- }).then(function(db) {
716
- dbInfo.db = db;
717
- if (_isUpgradeNeeded(dbInfo, self2._defaultConfig.version)) {
718
- return _getUpgradedConnection(dbInfo);
719
- }
720
- return db;
721
- }).then(function(db) {
722
- dbInfo.db = dbContext.db = db;
723
- self2._dbInfo = dbInfo;
724
- for (var k = 0; k < forages.length; k++) {
725
- var forage2 = forages[k];
726
- if (forage2 !== self2) {
727
- forage2._dbInfo.db = dbInfo.db;
728
- forage2._dbInfo.version = dbInfo.version;
727
+ });
728
+ }
729
+ function getItem(key2, callback) {
730
+ var self2 = this;
731
+ key2 = normalizeKey(key2);
732
+ var promise = new Promise$1(function(resolve, reject) {
733
+ self2.ready().then(function() {
734
+ createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) {
735
+ if (err) {
736
+ return reject(err);
729
737
  }
730
- }
731
- });
732
- }
733
- function getItem(key2, callback) {
734
- var self2 = this;
735
- key2 = normalizeKey(key2);
736
- var promise = new Promise$1(function(resolve, reject) {
737
- self2.ready().then(function() {
738
- createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) {
739
- if (err) {
740
- return reject(err);
741
- }
742
- try {
743
- var store = transaction.objectStore(self2._dbInfo.storeName);
744
- var req = store.get(key2);
745
- req.onsuccess = function() {
746
- var value = req.result;
747
- if (value === void 0) {
748
- value = null;
749
- }
738
+ try {
739
+ var store = transaction.objectStore(self2._dbInfo.storeName);
740
+ var req = store.get(key2);
741
+ req.onsuccess = function() {
742
+ var value = req.result;
743
+ if (value === void 0) {
744
+ value = null;
745
+ }
746
+ if (_isEncodedBlob(value)) {
747
+ value = _decodeBlob(value);
748
+ }
749
+ resolve(value);
750
+ };
751
+ req.onerror = function() {
752
+ reject(req.error);
753
+ };
754
+ } catch (e) {
755
+ reject(e);
756
+ }
757
+ });
758
+ })["catch"](reject);
759
+ });
760
+ executeCallback(promise, callback);
761
+ return promise;
762
+ }
763
+ function iterate(iterator, callback) {
764
+ var self2 = this;
765
+ var promise = new Promise$1(function(resolve, reject) {
766
+ self2.ready().then(function() {
767
+ createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) {
768
+ if (err) {
769
+ return reject(err);
770
+ }
771
+ try {
772
+ var store = transaction.objectStore(self2._dbInfo.storeName);
773
+ var req = store.openCursor();
774
+ var iterationNumber = 1;
775
+ req.onsuccess = function() {
776
+ var cursor = req.result;
777
+ if (cursor) {
778
+ var value = cursor.value;
750
779
  if (_isEncodedBlob(value)) {
751
780
  value = _decodeBlob(value);
752
781
  }
753
- resolve(value);
754
- };
755
- req.onerror = function() {
756
- reject(req.error);
757
- };
758
- } catch (e) {
759
- reject(e);
760
- }
761
- });
762
- })["catch"](reject);
763
- });
764
- executeCallback(promise, callback);
765
- return promise;
766
- }
767
- function iterate(iterator, callback) {
768
- var self2 = this;
769
- var promise = new Promise$1(function(resolve, reject) {
770
- self2.ready().then(function() {
771
- createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) {
772
- if (err) {
773
- return reject(err);
774
- }
775
- try {
776
- var store = transaction.objectStore(self2._dbInfo.storeName);
777
- var req = store.openCursor();
778
- var iterationNumber = 1;
779
- req.onsuccess = function() {
780
- var cursor = req.result;
781
- if (cursor) {
782
- var value = cursor.value;
783
- if (_isEncodedBlob(value)) {
784
- value = _decodeBlob(value);
785
- }
786
- var result = iterator(value, cursor.key, iterationNumber++);
787
- if (result !== void 0) {
788
- resolve(result);
789
- } else {
790
- cursor["continue"]();
791
- }
782
+ var result = iterator(value, cursor.key, iterationNumber++);
783
+ if (result !== void 0) {
784
+ resolve(result);
792
785
  } else {
793
- resolve();
786
+ cursor["continue"]();
794
787
  }
795
- };
796
- req.onerror = function() {
797
- reject(req.error);
798
- };
799
- } catch (e) {
800
- reject(e);
801
- }
802
- });
803
- })["catch"](reject);
804
- });
805
- executeCallback(promise, callback);
806
- return promise;
807
- }
808
- function setItem(key2, value, callback) {
809
- var self2 = this;
810
- key2 = normalizeKey(key2);
811
- var promise = new Promise$1(function(resolve, reject) {
812
- var dbInfo;
813
- self2.ready().then(function() {
814
- dbInfo = self2._dbInfo;
815
- if (toString.call(value) === "[object Blob]") {
816
- return _checkBlobSupport(dbInfo.db).then(function(blobSupport) {
817
- if (blobSupport) {
818
- return value;
788
+ } else {
789
+ resolve();
819
790
  }
820
- return _encodeBlob(value);
821
- });
791
+ };
792
+ req.onerror = function() {
793
+ reject(req.error);
794
+ };
795
+ } catch (e) {
796
+ reject(e);
822
797
  }
823
- return value;
824
- }).then(function(value2) {
825
- createTransaction(self2._dbInfo, READ_WRITE, function(err, transaction) {
826
- if (err) {
827
- return reject(err);
828
- }
829
- try {
830
- var store = transaction.objectStore(self2._dbInfo.storeName);
831
- if (value2 === null) {
832
- value2 = void 0;
833
- }
834
- var req = store.put(value2, key2);
835
- transaction.oncomplete = function() {
836
- if (value2 === void 0) {
837
- value2 = null;
838
- }
839
- resolve(value2);
840
- };
841
- transaction.onabort = transaction.onerror = function() {
842
- var err2 = req.error ? req.error : req.transaction.error;
843
- reject(err2);
844
- };
845
- } catch (e) {
846
- reject(e);
847
- }
848
- });
849
- })["catch"](reject);
850
- });
851
- executeCallback(promise, callback);
852
- return promise;
853
- }
854
- function removeItem(key2, callback) {
855
- var self2 = this;
856
- key2 = normalizeKey(key2);
857
- var promise = new Promise$1(function(resolve, reject) {
858
- self2.ready().then(function() {
859
- createTransaction(self2._dbInfo, READ_WRITE, function(err, transaction) {
860
- if (err) {
861
- return reject(err);
862
- }
863
- try {
864
- var store = transaction.objectStore(self2._dbInfo.storeName);
865
- var req = store["delete"](key2);
866
- transaction.oncomplete = function() {
867
- resolve();
868
- };
869
- transaction.onerror = function() {
870
- reject(req.error);
871
- };
872
- transaction.onabort = function() {
873
- var err2 = req.error ? req.error : req.transaction.error;
874
- reject(err2);
875
- };
876
- } catch (e) {
877
- reject(e);
878
- }
879
- });
880
- })["catch"](reject);
881
- });
882
- executeCallback(promise, callback);
883
- return promise;
884
- }
885
- function clear(callback) {
886
- var self2 = this;
887
- var promise = new Promise$1(function(resolve, reject) {
888
- self2.ready().then(function() {
889
- createTransaction(self2._dbInfo, READ_WRITE, function(err, transaction) {
890
- if (err) {
891
- return reject(err);
892
- }
893
- try {
894
- var store = transaction.objectStore(self2._dbInfo.storeName);
895
- var req = store.clear();
896
- transaction.oncomplete = function() {
897
- resolve();
898
- };
899
- transaction.onabort = transaction.onerror = function() {
900
- var err2 = req.error ? req.error : req.transaction.error;
901
- reject(err2);
902
- };
903
- } catch (e) {
904
- reject(e);
905
- }
906
- });
907
- })["catch"](reject);
908
- });
909
- executeCallback(promise, callback);
910
- return promise;
911
- }
912
- function length(callback) {
913
- var self2 = this;
914
- var promise = new Promise$1(function(resolve, reject) {
915
- self2.ready().then(function() {
916
- createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) {
917
- if (err) {
918
- return reject(err);
919
- }
920
- try {
921
- var store = transaction.objectStore(self2._dbInfo.storeName);
922
- var req = store.count();
923
- req.onsuccess = function() {
924
- resolve(req.result);
925
- };
926
- req.onerror = function() {
927
- reject(req.error);
928
- };
929
- } catch (e) {
930
- reject(e);
798
+ });
799
+ })["catch"](reject);
800
+ });
801
+ executeCallback(promise, callback);
802
+ return promise;
803
+ }
804
+ function setItem(key2, value, callback) {
805
+ var self2 = this;
806
+ key2 = normalizeKey(key2);
807
+ var promise = new Promise$1(function(resolve, reject) {
808
+ var dbInfo;
809
+ self2.ready().then(function() {
810
+ dbInfo = self2._dbInfo;
811
+ if (toString.call(value) === "[object Blob]") {
812
+ return _checkBlobSupport(dbInfo.db).then(function(blobSupport) {
813
+ if (blobSupport) {
814
+ return value;
931
815
  }
816
+ return _encodeBlob(value);
932
817
  });
933
- })["catch"](reject);
934
- });
935
- executeCallback(promise, callback);
936
- return promise;
937
- }
938
- function key(n, callback) {
939
- var self2 = this;
940
- var promise = new Promise$1(function(resolve, reject) {
941
- if (n < 0) {
942
- resolve(null);
943
- return;
944
818
  }
945
- self2.ready().then(function() {
946
- createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) {
947
- if (err) {
948
- return reject(err);
819
+ return value;
820
+ }).then(function(value2) {
821
+ createTransaction(self2._dbInfo, READ_WRITE, function(err, transaction) {
822
+ if (err) {
823
+ return reject(err);
824
+ }
825
+ try {
826
+ var store = transaction.objectStore(self2._dbInfo.storeName);
827
+ if (value2 === null) {
828
+ value2 = void 0;
949
829
  }
950
- try {
951
- var store = transaction.objectStore(self2._dbInfo.storeName);
952
- var advanced = false;
953
- var req = store.openKeyCursor();
954
- req.onsuccess = function() {
955
- var cursor = req.result;
956
- if (!cursor) {
957
- resolve(null);
958
- return;
959
- }
960
- if (n === 0) {
961
- resolve(cursor.key);
830
+ var req = store.put(value2, key2);
831
+ transaction.oncomplete = function() {
832
+ if (value2 === void 0) {
833
+ value2 = null;
834
+ }
835
+ resolve(value2);
836
+ };
837
+ transaction.onabort = transaction.onerror = function() {
838
+ var err2 = req.error ? req.error : req.transaction.error;
839
+ reject(err2);
840
+ };
841
+ } catch (e) {
842
+ reject(e);
843
+ }
844
+ });
845
+ })["catch"](reject);
846
+ });
847
+ executeCallback(promise, callback);
848
+ return promise;
849
+ }
850
+ function removeItem(key2, callback) {
851
+ var self2 = this;
852
+ key2 = normalizeKey(key2);
853
+ var promise = new Promise$1(function(resolve, reject) {
854
+ self2.ready().then(function() {
855
+ createTransaction(self2._dbInfo, READ_WRITE, function(err, transaction) {
856
+ if (err) {
857
+ return reject(err);
858
+ }
859
+ try {
860
+ var store = transaction.objectStore(self2._dbInfo.storeName);
861
+ var req = store["delete"](key2);
862
+ transaction.oncomplete = function() {
863
+ resolve();
864
+ };
865
+ transaction.onerror = function() {
866
+ reject(req.error);
867
+ };
868
+ transaction.onabort = function() {
869
+ var err2 = req.error ? req.error : req.transaction.error;
870
+ reject(err2);
871
+ };
872
+ } catch (e) {
873
+ reject(e);
874
+ }
875
+ });
876
+ })["catch"](reject);
877
+ });
878
+ executeCallback(promise, callback);
879
+ return promise;
880
+ }
881
+ function clear(callback) {
882
+ var self2 = this;
883
+ var promise = new Promise$1(function(resolve, reject) {
884
+ self2.ready().then(function() {
885
+ createTransaction(self2._dbInfo, READ_WRITE, function(err, transaction) {
886
+ if (err) {
887
+ return reject(err);
888
+ }
889
+ try {
890
+ var store = transaction.objectStore(self2._dbInfo.storeName);
891
+ var req = store.clear();
892
+ transaction.oncomplete = function() {
893
+ resolve();
894
+ };
895
+ transaction.onabort = transaction.onerror = function() {
896
+ var err2 = req.error ? req.error : req.transaction.error;
897
+ reject(err2);
898
+ };
899
+ } catch (e) {
900
+ reject(e);
901
+ }
902
+ });
903
+ })["catch"](reject);
904
+ });
905
+ executeCallback(promise, callback);
906
+ return promise;
907
+ }
908
+ function length(callback) {
909
+ var self2 = this;
910
+ var promise = new Promise$1(function(resolve, reject) {
911
+ self2.ready().then(function() {
912
+ createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) {
913
+ if (err) {
914
+ return reject(err);
915
+ }
916
+ try {
917
+ var store = transaction.objectStore(self2._dbInfo.storeName);
918
+ var req = store.count();
919
+ req.onsuccess = function() {
920
+ resolve(req.result);
921
+ };
922
+ req.onerror = function() {
923
+ reject(req.error);
924
+ };
925
+ } catch (e) {
926
+ reject(e);
927
+ }
928
+ });
929
+ })["catch"](reject);
930
+ });
931
+ executeCallback(promise, callback);
932
+ return promise;
933
+ }
934
+ function key(n, callback) {
935
+ var self2 = this;
936
+ var promise = new Promise$1(function(resolve, reject) {
937
+ if (n < 0) {
938
+ resolve(null);
939
+ return;
940
+ }
941
+ self2.ready().then(function() {
942
+ createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) {
943
+ if (err) {
944
+ return reject(err);
945
+ }
946
+ try {
947
+ var store = transaction.objectStore(self2._dbInfo.storeName);
948
+ var advanced = false;
949
+ var req = store.openKeyCursor();
950
+ req.onsuccess = function() {
951
+ var cursor = req.result;
952
+ if (!cursor) {
953
+ resolve(null);
954
+ return;
955
+ }
956
+ if (n === 0) {
957
+ resolve(cursor.key);
958
+ } else {
959
+ if (!advanced) {
960
+ advanced = true;
961
+ cursor.advance(n);
962
962
  } else {
963
- if (!advanced) {
964
- advanced = true;
965
- cursor.advance(n);
966
- } else {
967
- resolve(cursor.key);
968
- }
963
+ resolve(cursor.key);
969
964
  }
970
- };
971
- req.onerror = function() {
972
- reject(req.error);
973
- };
974
- } catch (e) {
975
- reject(e);
976
- }
977
- });
978
- })["catch"](reject);
965
+ }
966
+ };
967
+ req.onerror = function() {
968
+ reject(req.error);
969
+ };
970
+ } catch (e) {
971
+ reject(e);
972
+ }
973
+ });
974
+ })["catch"](reject);
975
+ });
976
+ executeCallback(promise, callback);
977
+ return promise;
978
+ }
979
+ function keys(callback) {
980
+ var self2 = this;
981
+ var promise = new Promise$1(function(resolve, reject) {
982
+ self2.ready().then(function() {
983
+ createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) {
984
+ if (err) {
985
+ return reject(err);
986
+ }
987
+ try {
988
+ var store = transaction.objectStore(self2._dbInfo.storeName);
989
+ var req = store.openKeyCursor();
990
+ var keys2 = [];
991
+ req.onsuccess = function() {
992
+ var cursor = req.result;
993
+ if (!cursor) {
994
+ resolve(keys2);
995
+ return;
996
+ }
997
+ keys2.push(cursor.key);
998
+ cursor["continue"]();
999
+ };
1000
+ req.onerror = function() {
1001
+ reject(req.error);
1002
+ };
1003
+ } catch (e) {
1004
+ reject(e);
1005
+ }
1006
+ });
1007
+ })["catch"](reject);
1008
+ });
1009
+ executeCallback(promise, callback);
1010
+ return promise;
1011
+ }
1012
+ function dropInstance(options, callback) {
1013
+ callback = getCallback.apply(this, arguments);
1014
+ var currentConfig = this.config();
1015
+ options = typeof options !== "function" && options || {};
1016
+ if (!options.name) {
1017
+ options.name = options.name || currentConfig.name;
1018
+ options.storeName = options.storeName || currentConfig.storeName;
1019
+ }
1020
+ var self2 = this;
1021
+ var promise;
1022
+ if (!options.name) {
1023
+ promise = Promise$1.reject("Invalid arguments");
1024
+ } else {
1025
+ var isCurrentDb = options.name === currentConfig.name && self2._dbInfo.db;
1026
+ var dbPromise = isCurrentDb ? Promise$1.resolve(self2._dbInfo.db) : _getOriginalConnection(options).then(function(db) {
1027
+ var dbContext = dbContexts[options.name];
1028
+ var forages = dbContext.forages;
1029
+ dbContext.db = db;
1030
+ for (var i = 0; i < forages.length; i++) {
1031
+ forages[i]._dbInfo.db = db;
1032
+ }
1033
+ return db;
979
1034
  });
980
- executeCallback(promise, callback);
981
- return promise;
982
- }
983
- function keys(callback) {
984
- var self2 = this;
985
- var promise = new Promise$1(function(resolve, reject) {
986
- self2.ready().then(function() {
987
- createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) {
988
- if (err) {
989
- return reject(err);
990
- }
991
- try {
992
- var store = transaction.objectStore(self2._dbInfo.storeName);
993
- var req = store.openKeyCursor();
994
- var keys2 = [];
995
- req.onsuccess = function() {
996
- var cursor = req.result;
997
- if (!cursor) {
998
- resolve(keys2);
999
- return;
1000
- }
1001
- keys2.push(cursor.key);
1002
- cursor["continue"]();
1003
- };
1004
- req.onerror = function() {
1005
- reject(req.error);
1006
- };
1007
- } catch (e) {
1008
- reject(e);
1035
+ if (!options.storeName) {
1036
+ promise = dbPromise.then(function(db) {
1037
+ _deferReadiness(options);
1038
+ var dbContext = dbContexts[options.name];
1039
+ var forages = dbContext.forages;
1040
+ db.close();
1041
+ for (var i = 0; i < forages.length; i++) {
1042
+ var forage = forages[i];
1043
+ forage._dbInfo.db = null;
1044
+ }
1045
+ var dropDBPromise = new Promise$1(function(resolve, reject) {
1046
+ var req = idb.deleteDatabase(options.name);
1047
+ req.onerror = function() {
1048
+ var db2 = req.result;
1049
+ if (db2) {
1050
+ db2.close();
1051
+ }
1052
+ reject(req.error);
1053
+ };
1054
+ req.onblocked = function() {
1055
+ };
1056
+ req.onsuccess = function() {
1057
+ var db2 = req.result;
1058
+ if (db2) {
1059
+ db2.close();
1060
+ }
1061
+ resolve(db2);
1062
+ };
1063
+ });
1064
+ return dropDBPromise.then(function(db2) {
1065
+ dbContext.db = db2;
1066
+ for (var i2 = 0; i2 < forages.length; i2++) {
1067
+ var _forage = forages[i2];
1068
+ _advanceReadiness(_forage._dbInfo);
1009
1069
  }
1070
+ })["catch"](function(err) {
1071
+ (_rejectReadiness(options, err) || Promise$1.resolve())["catch"](function() {
1072
+ });
1073
+ throw err;
1010
1074
  });
1011
- })["catch"](reject);
1012
- });
1013
- executeCallback(promise, callback);
1014
- return promise;
1015
- }
1016
- function dropInstance(options, callback) {
1017
- callback = getCallback.apply(this, arguments);
1018
- var currentConfig = this.config();
1019
- options = typeof options !== "function" && options || {};
1020
- if (!options.name) {
1021
- options.name = options.name || currentConfig.name;
1022
- options.storeName = options.storeName || currentConfig.storeName;
1023
- }
1024
- var self2 = this;
1025
- var promise;
1026
- if (!options.name) {
1027
- promise = Promise$1.reject("Invalid arguments");
1075
+ });
1028
1076
  } else {
1029
- var isCurrentDb = options.name === currentConfig.name && self2._dbInfo.db;
1030
- var dbPromise = isCurrentDb ? Promise$1.resolve(self2._dbInfo.db) : _getOriginalConnection(options).then(function(db) {
1077
+ promise = dbPromise.then(function(db) {
1078
+ if (!db.objectStoreNames.contains(options.storeName)) {
1079
+ return;
1080
+ }
1081
+ var newVersion = db.version + 1;
1082
+ _deferReadiness(options);
1031
1083
  var dbContext = dbContexts[options.name];
1032
1084
  var forages = dbContext.forages;
1033
- dbContext.db = db;
1085
+ db.close();
1034
1086
  for (var i = 0; i < forages.length; i++) {
1035
- forages[i]._dbInfo.db = db;
1087
+ var forage = forages[i];
1088
+ forage._dbInfo.db = null;
1089
+ forage._dbInfo.version = newVersion;
1036
1090
  }
1037
- return db;
1038
- });
1039
- if (!options.storeName) {
1040
- promise = dbPromise.then(function(db) {
1041
- _deferReadiness(options);
1042
- var dbContext = dbContexts[options.name];
1043
- var forages = dbContext.forages;
1044
- db.close();
1045
- for (var i = 0; i < forages.length; i++) {
1046
- var forage = forages[i];
1047
- forage._dbInfo.db = null;
1048
- }
1049
- var dropDBPromise = new Promise$1(function(resolve, reject) {
1050
- var req = idb.deleteDatabase(options.name);
1051
- req.onerror = function() {
1052
- var db2 = req.result;
1053
- if (db2) {
1054
- db2.close();
1055
- }
1056
- reject(req.error);
1057
- };
1058
- req.onblocked = function() {
1059
- };
1060
- req.onsuccess = function() {
1061
- var db2 = req.result;
1062
- if (db2) {
1063
- db2.close();
1064
- }
1065
- resolve(db2);
1066
- };
1067
- });
1068
- return dropDBPromise.then(function(db2) {
1069
- dbContext.db = db2;
1070
- for (var i2 = 0; i2 < forages.length; i2++) {
1071
- var _forage = forages[i2];
1072
- _advanceReadiness(_forage._dbInfo);
1073
- }
1074
- })["catch"](function(err) {
1075
- (_rejectReadiness(options, err) || Promise$1.resolve())["catch"](function() {
1076
- });
1077
- throw err;
1078
- });
1091
+ var dropObjectPromise = new Promise$1(function(resolve, reject) {
1092
+ var req = idb.open(options.name, newVersion);
1093
+ req.onerror = function(err) {
1094
+ var db2 = req.result;
1095
+ db2.close();
1096
+ reject(err);
1097
+ };
1098
+ req.onupgradeneeded = function() {
1099
+ var db2 = req.result;
1100
+ db2.deleteObjectStore(options.storeName);
1101
+ };
1102
+ req.onsuccess = function() {
1103
+ var db2 = req.result;
1104
+ db2.close();
1105
+ resolve(db2);
1106
+ };
1079
1107
  });
1080
- } else {
1081
- promise = dbPromise.then(function(db) {
1082
- if (!db.objectStoreNames.contains(options.storeName)) {
1083
- return;
1084
- }
1085
- var newVersion = db.version + 1;
1086
- _deferReadiness(options);
1087
- var dbContext = dbContexts[options.name];
1088
- var forages = dbContext.forages;
1089
- db.close();
1090
- for (var i = 0; i < forages.length; i++) {
1091
- var forage = forages[i];
1092
- forage._dbInfo.db = null;
1093
- forage._dbInfo.version = newVersion;
1108
+ return dropObjectPromise.then(function(db2) {
1109
+ dbContext.db = db2;
1110
+ for (var j = 0; j < forages.length; j++) {
1111
+ var _forage2 = forages[j];
1112
+ _forage2._dbInfo.db = db2;
1113
+ _advanceReadiness(_forage2._dbInfo);
1094
1114
  }
1095
- var dropObjectPromise = new Promise$1(function(resolve, reject) {
1096
- var req = idb.open(options.name, newVersion);
1097
- req.onerror = function(err) {
1098
- var db2 = req.result;
1099
- db2.close();
1100
- reject(err);
1101
- };
1102
- req.onupgradeneeded = function() {
1103
- var db2 = req.result;
1104
- db2.deleteObjectStore(options.storeName);
1105
- };
1106
- req.onsuccess = function() {
1107
- var db2 = req.result;
1108
- db2.close();
1109
- resolve(db2);
1110
- };
1111
- });
1112
- return dropObjectPromise.then(function(db2) {
1113
- dbContext.db = db2;
1114
- for (var j = 0; j < forages.length; j++) {
1115
- var _forage2 = forages[j];
1116
- _forage2._dbInfo.db = db2;
1117
- _advanceReadiness(_forage2._dbInfo);
1118
- }
1119
- })["catch"](function(err) {
1120
- (_rejectReadiness(options, err) || Promise$1.resolve())["catch"](function() {
1121
- });
1122
- throw err;
1115
+ })["catch"](function(err) {
1116
+ (_rejectReadiness(options, err) || Promise$1.resolve())["catch"](function() {
1123
1117
  });
1118
+ throw err;
1124
1119
  });
1125
- }
1120
+ });
1126
1121
  }
1127
- executeCallback(promise, callback);
1128
- return promise;
1129
1122
  }
1130
- var asyncStorage = {
1131
- _driver: "asyncStorage",
1132
- _initStorage,
1133
- _support: isIndexedDBValid(),
1134
- iterate,
1135
- getItem,
1136
- setItem,
1137
- removeItem,
1138
- clear,
1139
- length,
1140
- key,
1141
- keys,
1142
- dropInstance
1143
- };
1144
- function isWebSQLValid() {
1145
- return typeof openDatabase === "function";
1146
- }
1147
- var BASE_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
1148
- var BLOB_TYPE_PREFIX = "~~local_forage_type~";
1149
- var BLOB_TYPE_PREFIX_REGEX = /^~~local_forage_type~([^~]+)~/;
1150
- var SERIALIZED_MARKER = "__lfsc__:";
1151
- var SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER.length;
1152
- var TYPE_ARRAYBUFFER = "arbf";
1153
- var TYPE_BLOB = "blob";
1154
- var TYPE_INT8ARRAY = "si08";
1155
- var TYPE_UINT8ARRAY = "ui08";
1156
- var TYPE_UINT8CLAMPEDARRAY = "uic8";
1157
- var TYPE_INT16ARRAY = "si16";
1158
- var TYPE_INT32ARRAY = "si32";
1159
- var TYPE_UINT16ARRAY = "ur16";
1160
- var TYPE_UINT32ARRAY = "ui32";
1161
- var TYPE_FLOAT32ARRAY = "fl32";
1162
- var TYPE_FLOAT64ARRAY = "fl64";
1163
- var TYPE_SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER_LENGTH + TYPE_ARRAYBUFFER.length;
1164
- var toString$1 = Object.prototype.toString;
1165
- function stringToBuffer(serializedString) {
1166
- var bufferLength = serializedString.length * 0.75;
1167
- var len = serializedString.length;
1168
- var i;
1169
- var p = 0;
1170
- var encoded1, encoded2, encoded3, encoded4;
1171
- if (serializedString[serializedString.length - 1] === "=") {
1123
+ executeCallback(promise, callback);
1124
+ return promise;
1125
+ }
1126
+ var asyncStorage = {
1127
+ _driver: "asyncStorage",
1128
+ _initStorage,
1129
+ _support: isIndexedDBValid(),
1130
+ iterate,
1131
+ getItem,
1132
+ setItem,
1133
+ removeItem,
1134
+ clear,
1135
+ length,
1136
+ key,
1137
+ keys,
1138
+ dropInstance
1139
+ };
1140
+ function isWebSQLValid() {
1141
+ return typeof openDatabase === "function";
1142
+ }
1143
+ var BASE_CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
1144
+ var BLOB_TYPE_PREFIX = "~~local_forage_type~";
1145
+ var BLOB_TYPE_PREFIX_REGEX = /^~~local_forage_type~([^~]+)~/;
1146
+ var SERIALIZED_MARKER = "__lfsc__:";
1147
+ var SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER.length;
1148
+ var TYPE_ARRAYBUFFER = "arbf";
1149
+ var TYPE_BLOB = "blob";
1150
+ var TYPE_INT8ARRAY = "si08";
1151
+ var TYPE_UINT8ARRAY = "ui08";
1152
+ var TYPE_UINT8CLAMPEDARRAY = "uic8";
1153
+ var TYPE_INT16ARRAY = "si16";
1154
+ var TYPE_INT32ARRAY = "si32";
1155
+ var TYPE_UINT16ARRAY = "ur16";
1156
+ var TYPE_UINT32ARRAY = "ui32";
1157
+ var TYPE_FLOAT32ARRAY = "fl32";
1158
+ var TYPE_FLOAT64ARRAY = "fl64";
1159
+ var TYPE_SERIALIZED_MARKER_LENGTH = SERIALIZED_MARKER_LENGTH + TYPE_ARRAYBUFFER.length;
1160
+ var toString$1 = Object.prototype.toString;
1161
+ function stringToBuffer(serializedString) {
1162
+ var bufferLength = serializedString.length * 0.75;
1163
+ var len = serializedString.length;
1164
+ var i;
1165
+ var p = 0;
1166
+ var encoded1, encoded2, encoded3, encoded4;
1167
+ if (serializedString[serializedString.length - 1] === "=") {
1168
+ bufferLength--;
1169
+ if (serializedString[serializedString.length - 2] === "=") {
1172
1170
  bufferLength--;
1173
- if (serializedString[serializedString.length - 2] === "=") {
1174
- bufferLength--;
1175
- }
1176
- }
1177
- var buffer = new ArrayBuffer(bufferLength);
1178
- var bytes = new Uint8Array(buffer);
1179
- for (i = 0; i < len; i += 4) {
1180
- encoded1 = BASE_CHARS.indexOf(serializedString[i]);
1181
- encoded2 = BASE_CHARS.indexOf(serializedString[i + 1]);
1182
- encoded3 = BASE_CHARS.indexOf(serializedString[i + 2]);
1183
- encoded4 = BASE_CHARS.indexOf(serializedString[i + 3]);
1184
- bytes[p++] = encoded1 << 2 | encoded2 >> 4;
1185
- bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;
1186
- bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;
1187
- }
1188
- return buffer;
1189
- }
1190
- function bufferToString(buffer) {
1191
- var bytes = new Uint8Array(buffer);
1192
- var base64String = "";
1193
- var i;
1194
- for (i = 0; i < bytes.length; i += 3) {
1195
- base64String += BASE_CHARS[bytes[i] >> 2];
1196
- base64String += BASE_CHARS[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4];
1197
- base64String += BASE_CHARS[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6];
1198
- base64String += BASE_CHARS[bytes[i + 2] & 63];
1199
1171
  }
1200
- if (bytes.length % 3 === 2) {
1201
- base64String = base64String.substring(0, base64String.length - 1) + "=";
1202
- } else if (bytes.length % 3 === 1) {
1203
- base64String = base64String.substring(0, base64String.length - 2) + "==";
1204
- }
1205
- return base64String;
1206
1172
  }
1207
- function serialize(value, callback) {
1208
- var valueType = "";
1209
- if (value) {
1210
- valueType = toString$1.call(value);
1211
- }
1212
- if (value && (valueType === "[object ArrayBuffer]" || value.buffer && toString$1.call(value.buffer) === "[object ArrayBuffer]")) {
1213
- var buffer;
1214
- var marker = SERIALIZED_MARKER;
1215
- if (value instanceof ArrayBuffer) {
1216
- buffer = value;
1217
- marker += TYPE_ARRAYBUFFER;
1218
- } else {
1219
- buffer = value.buffer;
1220
- if (valueType === "[object Int8Array]") {
1221
- marker += TYPE_INT8ARRAY;
1222
- } else if (valueType === "[object Uint8Array]") {
1223
- marker += TYPE_UINT8ARRAY;
1224
- } else if (valueType === "[object Uint8ClampedArray]") {
1225
- marker += TYPE_UINT8CLAMPEDARRAY;
1226
- } else if (valueType === "[object Int16Array]") {
1227
- marker += TYPE_INT16ARRAY;
1228
- } else if (valueType === "[object Uint16Array]") {
1229
- marker += TYPE_UINT16ARRAY;
1230
- } else if (valueType === "[object Int32Array]") {
1231
- marker += TYPE_INT32ARRAY;
1232
- } else if (valueType === "[object Uint32Array]") {
1233
- marker += TYPE_UINT32ARRAY;
1234
- } else if (valueType === "[object Float32Array]") {
1235
- marker += TYPE_FLOAT32ARRAY;
1236
- } else if (valueType === "[object Float64Array]") {
1237
- marker += TYPE_FLOAT64ARRAY;
1238
- } else {
1239
- callback(new Error("Failed to get type for BinaryArray"));
1240
- }
1241
- }
1242
- callback(marker + bufferToString(buffer));
1243
- } else if (valueType === "[object Blob]") {
1244
- var fileReader = new FileReader();
1245
- fileReader.onload = function() {
1246
- var str = BLOB_TYPE_PREFIX + value.type + "~" + bufferToString(this.result);
1247
- callback(SERIALIZED_MARKER + TYPE_BLOB + str);
1248
- };
1249
- fileReader.readAsArrayBuffer(value);
1173
+ var buffer = new ArrayBuffer(bufferLength);
1174
+ var bytes = new Uint8Array(buffer);
1175
+ for (i = 0; i < len; i += 4) {
1176
+ encoded1 = BASE_CHARS.indexOf(serializedString[i]);
1177
+ encoded2 = BASE_CHARS.indexOf(serializedString[i + 1]);
1178
+ encoded3 = BASE_CHARS.indexOf(serializedString[i + 2]);
1179
+ encoded4 = BASE_CHARS.indexOf(serializedString[i + 3]);
1180
+ bytes[p++] = encoded1 << 2 | encoded2 >> 4;
1181
+ bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;
1182
+ bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;
1183
+ }
1184
+ return buffer;
1185
+ }
1186
+ function bufferToString(buffer) {
1187
+ var bytes = new Uint8Array(buffer);
1188
+ var base64String = "";
1189
+ var i;
1190
+ for (i = 0; i < bytes.length; i += 3) {
1191
+ base64String += BASE_CHARS[bytes[i] >> 2];
1192
+ base64String += BASE_CHARS[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4];
1193
+ base64String += BASE_CHARS[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6];
1194
+ base64String += BASE_CHARS[bytes[i + 2] & 63];
1195
+ }
1196
+ if (bytes.length % 3 === 2) {
1197
+ base64String = base64String.substring(0, base64String.length - 1) + "=";
1198
+ } else if (bytes.length % 3 === 1) {
1199
+ base64String = base64String.substring(0, base64String.length - 2) + "==";
1200
+ }
1201
+ return base64String;
1202
+ }
1203
+ function serialize(value, callback) {
1204
+ var valueType = "";
1205
+ if (value) {
1206
+ valueType = toString$1.call(value);
1207
+ }
1208
+ if (value && (valueType === "[object ArrayBuffer]" || value.buffer && toString$1.call(value.buffer) === "[object ArrayBuffer]")) {
1209
+ var buffer;
1210
+ var marker = SERIALIZED_MARKER;
1211
+ if (value instanceof ArrayBuffer) {
1212
+ buffer = value;
1213
+ marker += TYPE_ARRAYBUFFER;
1250
1214
  } else {
1251
- try {
1252
- callback(JSON.stringify(value));
1253
- } catch (e) {
1254
- callback(null, e);
1215
+ buffer = value.buffer;
1216
+ if (valueType === "[object Int8Array]") {
1217
+ marker += TYPE_INT8ARRAY;
1218
+ } else if (valueType === "[object Uint8Array]") {
1219
+ marker += TYPE_UINT8ARRAY;
1220
+ } else if (valueType === "[object Uint8ClampedArray]") {
1221
+ marker += TYPE_UINT8CLAMPEDARRAY;
1222
+ } else if (valueType === "[object Int16Array]") {
1223
+ marker += TYPE_INT16ARRAY;
1224
+ } else if (valueType === "[object Uint16Array]") {
1225
+ marker += TYPE_UINT16ARRAY;
1226
+ } else if (valueType === "[object Int32Array]") {
1227
+ marker += TYPE_INT32ARRAY;
1228
+ } else if (valueType === "[object Uint32Array]") {
1229
+ marker += TYPE_UINT32ARRAY;
1230
+ } else if (valueType === "[object Float32Array]") {
1231
+ marker += TYPE_FLOAT32ARRAY;
1232
+ } else if (valueType === "[object Float64Array]") {
1233
+ marker += TYPE_FLOAT64ARRAY;
1234
+ } else {
1235
+ callback(new Error("Failed to get type for BinaryArray"));
1255
1236
  }
1256
1237
  }
1257
- }
1258
- function deserialize(value) {
1259
- if (value.substring(0, SERIALIZED_MARKER_LENGTH) !== SERIALIZED_MARKER) {
1260
- return JSON.parse(value);
1261
- }
1262
- var serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH);
1263
- var type = value.substring(SERIALIZED_MARKER_LENGTH, TYPE_SERIALIZED_MARKER_LENGTH);
1264
- var blobType;
1265
- if (type === TYPE_BLOB && BLOB_TYPE_PREFIX_REGEX.test(serializedString)) {
1266
- var matcher = serializedString.match(BLOB_TYPE_PREFIX_REGEX);
1267
- blobType = matcher[1];
1268
- serializedString = serializedString.substring(matcher[0].length);
1269
- }
1270
- var buffer = stringToBuffer(serializedString);
1271
- switch (type) {
1272
- case TYPE_ARRAYBUFFER:
1273
- return buffer;
1274
- case TYPE_BLOB:
1275
- return createBlob([buffer], { type: blobType });
1276
- case TYPE_INT8ARRAY:
1277
- return new Int8Array(buffer);
1278
- case TYPE_UINT8ARRAY:
1279
- return new Uint8Array(buffer);
1280
- case TYPE_UINT8CLAMPEDARRAY:
1281
- return new Uint8ClampedArray(buffer);
1282
- case TYPE_INT16ARRAY:
1283
- return new Int16Array(buffer);
1284
- case TYPE_UINT16ARRAY:
1285
- return new Uint16Array(buffer);
1286
- case TYPE_INT32ARRAY:
1287
- return new Int32Array(buffer);
1288
- case TYPE_UINT32ARRAY:
1289
- return new Uint32Array(buffer);
1290
- case TYPE_FLOAT32ARRAY:
1291
- return new Float32Array(buffer);
1292
- case TYPE_FLOAT64ARRAY:
1293
- return new Float64Array(buffer);
1294
- default:
1295
- throw new Error("Unkown type: " + type);
1238
+ callback(marker + bufferToString(buffer));
1239
+ } else if (valueType === "[object Blob]") {
1240
+ var fileReader = new FileReader();
1241
+ fileReader.onload = function() {
1242
+ var str = BLOB_TYPE_PREFIX + value.type + "~" + bufferToString(this.result);
1243
+ callback(SERIALIZED_MARKER + TYPE_BLOB + str);
1244
+ };
1245
+ fileReader.readAsArrayBuffer(value);
1246
+ } else {
1247
+ try {
1248
+ callback(JSON.stringify(value));
1249
+ } catch (e) {
1250
+ callback(null, e);
1296
1251
  }
1297
1252
  }
1298
- var localforageSerializer = {
1299
- serialize,
1300
- deserialize,
1301
- stringToBuffer,
1302
- bufferToString
1253
+ }
1254
+ function deserialize(value) {
1255
+ if (value.substring(0, SERIALIZED_MARKER_LENGTH) !== SERIALIZED_MARKER) {
1256
+ return JSON.parse(value);
1257
+ }
1258
+ var serializedString = value.substring(TYPE_SERIALIZED_MARKER_LENGTH);
1259
+ var type = value.substring(SERIALIZED_MARKER_LENGTH, TYPE_SERIALIZED_MARKER_LENGTH);
1260
+ var blobType;
1261
+ if (type === TYPE_BLOB && BLOB_TYPE_PREFIX_REGEX.test(serializedString)) {
1262
+ var matcher = serializedString.match(BLOB_TYPE_PREFIX_REGEX);
1263
+ blobType = matcher[1];
1264
+ serializedString = serializedString.substring(matcher[0].length);
1265
+ }
1266
+ var buffer = stringToBuffer(serializedString);
1267
+ switch (type) {
1268
+ case TYPE_ARRAYBUFFER:
1269
+ return buffer;
1270
+ case TYPE_BLOB:
1271
+ return createBlob([buffer], { type: blobType });
1272
+ case TYPE_INT8ARRAY:
1273
+ return new Int8Array(buffer);
1274
+ case TYPE_UINT8ARRAY:
1275
+ return new Uint8Array(buffer);
1276
+ case TYPE_UINT8CLAMPEDARRAY:
1277
+ return new Uint8ClampedArray(buffer);
1278
+ case TYPE_INT16ARRAY:
1279
+ return new Int16Array(buffer);
1280
+ case TYPE_UINT16ARRAY:
1281
+ return new Uint16Array(buffer);
1282
+ case TYPE_INT32ARRAY:
1283
+ return new Int32Array(buffer);
1284
+ case TYPE_UINT32ARRAY:
1285
+ return new Uint32Array(buffer);
1286
+ case TYPE_FLOAT32ARRAY:
1287
+ return new Float32Array(buffer);
1288
+ case TYPE_FLOAT64ARRAY:
1289
+ return new Float64Array(buffer);
1290
+ default:
1291
+ throw new Error("Unkown type: " + type);
1292
+ }
1293
+ }
1294
+ var localforageSerializer = {
1295
+ serialize,
1296
+ deserialize,
1297
+ stringToBuffer,
1298
+ bufferToString
1299
+ };
1300
+ function createDbTable(t, dbInfo, callback, errorCallback) {
1301
+ t.executeSql("CREATE TABLE IF NOT EXISTS " + dbInfo.storeName + " (id INTEGER PRIMARY KEY, key unique, value)", [], callback, errorCallback);
1302
+ }
1303
+ function _initStorage$1(options) {
1304
+ var self2 = this;
1305
+ var dbInfo = {
1306
+ db: null
1303
1307
  };
1304
- function createDbTable(t, dbInfo, callback, errorCallback) {
1305
- t.executeSql("CREATE TABLE IF NOT EXISTS " + dbInfo.storeName + " (id INTEGER PRIMARY KEY, key unique, value)", [], callback, errorCallback);
1308
+ if (options) {
1309
+ for (var i in options) {
1310
+ dbInfo[i] = typeof options[i] !== "string" ? options[i].toString() : options[i];
1311
+ }
1306
1312
  }
1307
- function _initStorage$1(options) {
1308
- var self2 = this;
1309
- var dbInfo = {
1310
- db: null
1311
- };
1312
- if (options) {
1313
- for (var i in options) {
1314
- dbInfo[i] = typeof options[i] !== "string" ? options[i].toString() : options[i];
1315
- }
1313
+ var dbInfoPromise = new Promise$1(function(resolve, reject) {
1314
+ try {
1315
+ dbInfo.db = openDatabase(dbInfo.name, String(dbInfo.version), dbInfo.description, dbInfo.size);
1316
+ } catch (e) {
1317
+ return reject(e);
1318
+ }
1319
+ dbInfo.db.transaction(function(t) {
1320
+ createDbTable(t, dbInfo, function() {
1321
+ self2._dbInfo = dbInfo;
1322
+ resolve();
1323
+ }, function(t2, error) {
1324
+ reject(error);
1325
+ });
1326
+ }, reject);
1327
+ });
1328
+ dbInfo.serializer = localforageSerializer;
1329
+ return dbInfoPromise;
1330
+ }
1331
+ function tryExecuteSql(t, dbInfo, sqlStatement, args, callback, errorCallback) {
1332
+ t.executeSql(sqlStatement, args, callback, function(t2, error) {
1333
+ if (error.code === error.SYNTAX_ERR) {
1334
+ t2.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?", [dbInfo.storeName], function(t3, results) {
1335
+ if (!results.rows.length) {
1336
+ createDbTable(t3, dbInfo, function() {
1337
+ t3.executeSql(sqlStatement, args, callback, errorCallback);
1338
+ }, errorCallback);
1339
+ } else {
1340
+ errorCallback(t3, error);
1341
+ }
1342
+ }, errorCallback);
1343
+ } else {
1344
+ errorCallback(t2, error);
1316
1345
  }
1317
- var dbInfoPromise = new Promise$1(function(resolve, reject) {
1318
- try {
1319
- dbInfo.db = openDatabase(dbInfo.name, String(dbInfo.version), dbInfo.description, dbInfo.size);
1320
- } catch (e) {
1321
- return reject(e);
1322
- }
1346
+ }, errorCallback);
1347
+ }
1348
+ function getItem$1(key2, callback) {
1349
+ var self2 = this;
1350
+ key2 = normalizeKey(key2);
1351
+ var promise = new Promise$1(function(resolve, reject) {
1352
+ self2.ready().then(function() {
1353
+ var dbInfo = self2._dbInfo;
1323
1354
  dbInfo.db.transaction(function(t) {
1324
- createDbTable(t, dbInfo, function() {
1325
- self2._dbInfo = dbInfo;
1326
- resolve();
1355
+ tryExecuteSql(t, dbInfo, "SELECT * FROM " + dbInfo.storeName + " WHERE key = ? LIMIT 1", [key2], function(t2, results) {
1356
+ var result = results.rows.length ? results.rows.item(0).value : null;
1357
+ if (result) {
1358
+ result = dbInfo.serializer.deserialize(result);
1359
+ }
1360
+ resolve(result);
1327
1361
  }, function(t2, error) {
1328
1362
  reject(error);
1329
1363
  });
1330
- }, reject);
1331
- });
1332
- dbInfo.serializer = localforageSerializer;
1333
- return dbInfoPromise;
1334
- }
1335
- function tryExecuteSql(t, dbInfo, sqlStatement, args, callback, errorCallback) {
1336
- t.executeSql(sqlStatement, args, callback, function(t2, error) {
1337
- if (error.code === error.SYNTAX_ERR) {
1338
- t2.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?", [dbInfo.storeName], function(t3, results) {
1339
- if (!results.rows.length) {
1340
- createDbTable(t3, dbInfo, function() {
1341
- t3.executeSql(sqlStatement, args, callback, errorCallback);
1342
- }, errorCallback);
1343
- } else {
1344
- errorCallback(t3, error);
1345
- }
1346
- }, errorCallback);
1347
- } else {
1348
- errorCallback(t2, error);
1349
- }
1350
- }, errorCallback);
1351
- }
1352
- function getItem$1(key2, callback) {
1353
- var self2 = this;
1354
- key2 = normalizeKey(key2);
1355
- var promise = new Promise$1(function(resolve, reject) {
1356
- self2.ready().then(function() {
1357
- var dbInfo = self2._dbInfo;
1358
- dbInfo.db.transaction(function(t) {
1359
- tryExecuteSql(t, dbInfo, "SELECT * FROM " + dbInfo.storeName + " WHERE key = ? LIMIT 1", [key2], function(t2, results) {
1360
- var result = results.rows.length ? results.rows.item(0).value : null;
1364
+ });
1365
+ })["catch"](reject);
1366
+ });
1367
+ executeCallback(promise, callback);
1368
+ return promise;
1369
+ }
1370
+ function iterate$1(iterator, callback) {
1371
+ var self2 = this;
1372
+ var promise = new Promise$1(function(resolve, reject) {
1373
+ self2.ready().then(function() {
1374
+ var dbInfo = self2._dbInfo;
1375
+ dbInfo.db.transaction(function(t) {
1376
+ tryExecuteSql(t, dbInfo, "SELECT * FROM " + dbInfo.storeName, [], function(t2, results) {
1377
+ var rows = results.rows;
1378
+ var length2 = rows.length;
1379
+ for (var i = 0; i < length2; i++) {
1380
+ var item = rows.item(i);
1381
+ var result = item.value;
1361
1382
  if (result) {
1362
1383
  result = dbInfo.serializer.deserialize(result);
1363
1384
  }
1364
- resolve(result);
1365
- }, function(t2, error) {
1366
- reject(error);
1367
- });
1385
+ result = iterator(result, item.key, i + 1);
1386
+ if (result !== void 0) {
1387
+ resolve(result);
1388
+ return;
1389
+ }
1390
+ }
1391
+ resolve();
1392
+ }, function(t2, error) {
1393
+ reject(error);
1368
1394
  });
1369
- })["catch"](reject);
1370
- });
1371
- executeCallback(promise, callback);
1372
- return promise;
1373
- }
1374
- function iterate$1(iterator, callback) {
1375
- var self2 = this;
1376
- var promise = new Promise$1(function(resolve, reject) {
1377
- self2.ready().then(function() {
1378
- var dbInfo = self2._dbInfo;
1379
- dbInfo.db.transaction(function(t) {
1380
- tryExecuteSql(t, dbInfo, "SELECT * FROM " + dbInfo.storeName, [], function(t2, results) {
1381
- var rows = results.rows;
1382
- var length2 = rows.length;
1383
- for (var i = 0; i < length2; i++) {
1384
- var item = rows.item(i);
1385
- var result = item.value;
1386
- if (result) {
1387
- result = dbInfo.serializer.deserialize(result);
1388
- }
1389
- result = iterator(result, item.key, i + 1);
1390
- if (result !== void 0) {
1391
- resolve(result);
1395
+ });
1396
+ })["catch"](reject);
1397
+ });
1398
+ executeCallback(promise, callback);
1399
+ return promise;
1400
+ }
1401
+ function _setItem(key2, value, callback, retriesLeft) {
1402
+ var self2 = this;
1403
+ key2 = normalizeKey(key2);
1404
+ var promise = new Promise$1(function(resolve, reject) {
1405
+ self2.ready().then(function() {
1406
+ if (value === void 0) {
1407
+ value = null;
1408
+ }
1409
+ var originalValue = value;
1410
+ var dbInfo = self2._dbInfo;
1411
+ dbInfo.serializer.serialize(value, function(value2, error) {
1412
+ if (error) {
1413
+ reject(error);
1414
+ } else {
1415
+ dbInfo.db.transaction(function(t) {
1416
+ tryExecuteSql(t, dbInfo, "INSERT OR REPLACE INTO " + dbInfo.storeName + " (key, value) VALUES (?, ?)", [key2, value2], function() {
1417
+ resolve(originalValue);
1418
+ }, function(t2, error2) {
1419
+ reject(error2);
1420
+ });
1421
+ }, function(sqlError) {
1422
+ if (sqlError.code === sqlError.QUOTA_ERR) {
1423
+ if (retriesLeft > 0) {
1424
+ resolve(_setItem.apply(self2, [key2, originalValue, callback, retriesLeft - 1]));
1392
1425
  return;
1393
1426
  }
1427
+ reject(sqlError);
1394
1428
  }
1395
- resolve();
1396
- }, function(t2, error) {
1397
- reject(error);
1398
1429
  });
1399
- });
1400
- })["catch"](reject);
1401
- });
1402
- executeCallback(promise, callback);
1403
- return promise;
1404
- }
1405
- function _setItem(key2, value, callback, retriesLeft) {
1406
- var self2 = this;
1407
- key2 = normalizeKey(key2);
1408
- var promise = new Promise$1(function(resolve, reject) {
1409
- self2.ready().then(function() {
1410
- if (value === void 0) {
1411
- value = null;
1412
1430
  }
1413
- var originalValue = value;
1414
- var dbInfo = self2._dbInfo;
1415
- dbInfo.serializer.serialize(value, function(value2, error) {
1416
- if (error) {
1417
- reject(error);
1418
- } else {
1419
- dbInfo.db.transaction(function(t) {
1420
- tryExecuteSql(t, dbInfo, "INSERT OR REPLACE INTO " + dbInfo.storeName + " (key, value) VALUES (?, ?)", [key2, value2], function() {
1421
- resolve(originalValue);
1422
- }, function(t2, error2) {
1423
- reject(error2);
1424
- });
1425
- }, function(sqlError) {
1426
- if (sqlError.code === sqlError.QUOTA_ERR) {
1427
- if (retriesLeft > 0) {
1428
- resolve(_setItem.apply(self2, [key2, originalValue, callback, retriesLeft - 1]));
1429
- return;
1430
- }
1431
- reject(sqlError);
1432
- }
1433
- });
1434
- }
1435
- });
1436
- })["catch"](reject);
1437
- });
1438
- executeCallback(promise, callback);
1439
- return promise;
1440
- }
1441
- function setItem$1(key2, value, callback) {
1442
- return _setItem.apply(this, [key2, value, callback, 1]);
1443
- }
1444
- function removeItem$1(key2, callback) {
1445
- var self2 = this;
1446
- key2 = normalizeKey(key2);
1447
- var promise = new Promise$1(function(resolve, reject) {
1448
- self2.ready().then(function() {
1449
- var dbInfo = self2._dbInfo;
1450
- dbInfo.db.transaction(function(t) {
1451
- tryExecuteSql(t, dbInfo, "DELETE FROM " + dbInfo.storeName + " WHERE key = ?", [key2], function() {
1452
- resolve();
1453
- }, function(t2, error) {
1454
- reject(error);
1455
- });
1456
- });
1457
- })["catch"](reject);
1458
- });
1459
- executeCallback(promise, callback);
1460
- return promise;
1461
- }
1462
- function clear$1(callback) {
1463
- var self2 = this;
1464
- var promise = new Promise$1(function(resolve, reject) {
1465
- self2.ready().then(function() {
1466
- var dbInfo = self2._dbInfo;
1467
- dbInfo.db.transaction(function(t) {
1468
- tryExecuteSql(t, dbInfo, "DELETE FROM " + dbInfo.storeName, [], function() {
1469
- resolve();
1470
- }, function(t2, error) {
1471
- reject(error);
1472
- });
1431
+ });
1432
+ })["catch"](reject);
1433
+ });
1434
+ executeCallback(promise, callback);
1435
+ return promise;
1436
+ }
1437
+ function setItem$1(key2, value, callback) {
1438
+ return _setItem.apply(this, [key2, value, callback, 1]);
1439
+ }
1440
+ function removeItem$1(key2, callback) {
1441
+ var self2 = this;
1442
+ key2 = normalizeKey(key2);
1443
+ var promise = new Promise$1(function(resolve, reject) {
1444
+ self2.ready().then(function() {
1445
+ var dbInfo = self2._dbInfo;
1446
+ dbInfo.db.transaction(function(t) {
1447
+ tryExecuteSql(t, dbInfo, "DELETE FROM " + dbInfo.storeName + " WHERE key = ?", [key2], function() {
1448
+ resolve();
1449
+ }, function(t2, error) {
1450
+ reject(error);
1473
1451
  });
1474
- })["catch"](reject);
1475
- });
1476
- executeCallback(promise, callback);
1477
- return promise;
1478
- }
1479
- function length$1(callback) {
1480
- var self2 = this;
1481
- var promise = new Promise$1(function(resolve, reject) {
1482
- self2.ready().then(function() {
1483
- var dbInfo = self2._dbInfo;
1484
- dbInfo.db.transaction(function(t) {
1485
- tryExecuteSql(t, dbInfo, "SELECT COUNT(key) as c FROM " + dbInfo.storeName, [], function(t2, results) {
1486
- var result = results.rows.item(0).c;
1487
- resolve(result);
1488
- }, function(t2, error) {
1489
- reject(error);
1490
- });
1452
+ });
1453
+ })["catch"](reject);
1454
+ });
1455
+ executeCallback(promise, callback);
1456
+ return promise;
1457
+ }
1458
+ function clear$1(callback) {
1459
+ var self2 = this;
1460
+ var promise = new Promise$1(function(resolve, reject) {
1461
+ self2.ready().then(function() {
1462
+ var dbInfo = self2._dbInfo;
1463
+ dbInfo.db.transaction(function(t) {
1464
+ tryExecuteSql(t, dbInfo, "DELETE FROM " + dbInfo.storeName, [], function() {
1465
+ resolve();
1466
+ }, function(t2, error) {
1467
+ reject(error);
1491
1468
  });
1492
- })["catch"](reject);
1493
- });
1494
- executeCallback(promise, callback);
1495
- return promise;
1496
- }
1497
- function key$1(n, callback) {
1498
- var self2 = this;
1499
- var promise = new Promise$1(function(resolve, reject) {
1500
- self2.ready().then(function() {
1501
- var dbInfo = self2._dbInfo;
1502
- dbInfo.db.transaction(function(t) {
1503
- tryExecuteSql(t, dbInfo, "SELECT key FROM " + dbInfo.storeName + " WHERE id = ? LIMIT 1", [n + 1], function(t2, results) {
1504
- var result = results.rows.length ? results.rows.item(0).key : null;
1505
- resolve(result);
1506
- }, function(t2, error) {
1507
- reject(error);
1508
- });
1469
+ });
1470
+ })["catch"](reject);
1471
+ });
1472
+ executeCallback(promise, callback);
1473
+ return promise;
1474
+ }
1475
+ function length$1(callback) {
1476
+ var self2 = this;
1477
+ var promise = new Promise$1(function(resolve, reject) {
1478
+ self2.ready().then(function() {
1479
+ var dbInfo = self2._dbInfo;
1480
+ dbInfo.db.transaction(function(t) {
1481
+ tryExecuteSql(t, dbInfo, "SELECT COUNT(key) as c FROM " + dbInfo.storeName, [], function(t2, results) {
1482
+ var result = results.rows.item(0).c;
1483
+ resolve(result);
1484
+ }, function(t2, error) {
1485
+ reject(error);
1509
1486
  });
1510
- })["catch"](reject);
1511
- });
1512
- executeCallback(promise, callback);
1513
- return promise;
1514
- }
1515
- function keys$1(callback) {
1516
- var self2 = this;
1517
- var promise = new Promise$1(function(resolve, reject) {
1518
- self2.ready().then(function() {
1519
- var dbInfo = self2._dbInfo;
1520
- dbInfo.db.transaction(function(t) {
1521
- tryExecuteSql(t, dbInfo, "SELECT key FROM " + dbInfo.storeName, [], function(t2, results) {
1522
- var keys2 = [];
1523
- for (var i = 0; i < results.rows.length; i++) {
1524
- keys2.push(results.rows.item(i).key);
1525
- }
1526
- resolve(keys2);
1527
- }, function(t2, error) {
1528
- reject(error);
1529
- });
1487
+ });
1488
+ })["catch"](reject);
1489
+ });
1490
+ executeCallback(promise, callback);
1491
+ return promise;
1492
+ }
1493
+ function key$1(n, callback) {
1494
+ var self2 = this;
1495
+ var promise = new Promise$1(function(resolve, reject) {
1496
+ self2.ready().then(function() {
1497
+ var dbInfo = self2._dbInfo;
1498
+ dbInfo.db.transaction(function(t) {
1499
+ tryExecuteSql(t, dbInfo, "SELECT key FROM " + dbInfo.storeName + " WHERE id = ? LIMIT 1", [n + 1], function(t2, results) {
1500
+ var result = results.rows.length ? results.rows.item(0).key : null;
1501
+ resolve(result);
1502
+ }, function(t2, error) {
1503
+ reject(error);
1530
1504
  });
1531
- })["catch"](reject);
1532
- });
1533
- executeCallback(promise, callback);
1534
- return promise;
1535
- }
1536
- function getAllStoreNames(db) {
1537
- return new Promise$1(function(resolve, reject) {
1538
- db.transaction(function(t) {
1539
- t.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'", [], function(t2, results) {
1540
- var storeNames = [];
1505
+ });
1506
+ })["catch"](reject);
1507
+ });
1508
+ executeCallback(promise, callback);
1509
+ return promise;
1510
+ }
1511
+ function keys$1(callback) {
1512
+ var self2 = this;
1513
+ var promise = new Promise$1(function(resolve, reject) {
1514
+ self2.ready().then(function() {
1515
+ var dbInfo = self2._dbInfo;
1516
+ dbInfo.db.transaction(function(t) {
1517
+ tryExecuteSql(t, dbInfo, "SELECT key FROM " + dbInfo.storeName, [], function(t2, results) {
1518
+ var keys2 = [];
1541
1519
  for (var i = 0; i < results.rows.length; i++) {
1542
- storeNames.push(results.rows.item(i).name);
1520
+ keys2.push(results.rows.item(i).key);
1543
1521
  }
1544
- resolve({
1545
- db,
1546
- storeNames
1547
- });
1522
+ resolve(keys2);
1548
1523
  }, function(t2, error) {
1549
1524
  reject(error);
1550
1525
  });
1551
- }, function(sqlError) {
1552
- reject(sqlError);
1553
1526
  });
1554
- });
1555
- }
1556
- function dropInstance$1(options, callback) {
1557
- callback = getCallback.apply(this, arguments);
1558
- var currentConfig = this.config();
1559
- options = typeof options !== "function" && options || {};
1560
- if (!options.name) {
1561
- options.name = options.name || currentConfig.name;
1562
- options.storeName = options.storeName || currentConfig.storeName;
1563
- }
1564
- var self2 = this;
1565
- var promise;
1566
- if (!options.name) {
1567
- promise = Promise$1.reject("Invalid arguments");
1568
- } else {
1569
- promise = new Promise$1(function(resolve) {
1570
- var db;
1571
- if (options.name === currentConfig.name) {
1572
- db = self2._dbInfo.db;
1573
- } else {
1574
- db = openDatabase(options.name, "", "", 0);
1575
- }
1576
- if (!options.storeName) {
1577
- resolve(getAllStoreNames(db));
1578
- } else {
1579
- resolve({
1580
- db,
1581
- storeNames: [options.storeName]
1582
- });
1527
+ })["catch"](reject);
1528
+ });
1529
+ executeCallback(promise, callback);
1530
+ return promise;
1531
+ }
1532
+ function getAllStoreNames(db) {
1533
+ return new Promise$1(function(resolve, reject) {
1534
+ db.transaction(function(t) {
1535
+ t.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'", [], function(t2, results) {
1536
+ var storeNames = [];
1537
+ for (var i = 0; i < results.rows.length; i++) {
1538
+ storeNames.push(results.rows.item(i).name);
1583
1539
  }
1584
- }).then(function(operationInfo) {
1585
- return new Promise$1(function(resolve, reject) {
1586
- operationInfo.db.transaction(function(t) {
1587
- function dropTable(storeName) {
1588
- return new Promise$1(function(resolve2, reject2) {
1589
- t.executeSql("DROP TABLE IF EXISTS " + storeName, [], function() {
1590
- resolve2();
1591
- }, function(t2, error) {
1592
- reject2(error);
1593
- });
1540
+ resolve({
1541
+ db,
1542
+ storeNames
1543
+ });
1544
+ }, function(t2, error) {
1545
+ reject(error);
1546
+ });
1547
+ }, function(sqlError) {
1548
+ reject(sqlError);
1549
+ });
1550
+ });
1551
+ }
1552
+ function dropInstance$1(options, callback) {
1553
+ callback = getCallback.apply(this, arguments);
1554
+ var currentConfig = this.config();
1555
+ options = typeof options !== "function" && options || {};
1556
+ if (!options.name) {
1557
+ options.name = options.name || currentConfig.name;
1558
+ options.storeName = options.storeName || currentConfig.storeName;
1559
+ }
1560
+ var self2 = this;
1561
+ var promise;
1562
+ if (!options.name) {
1563
+ promise = Promise$1.reject("Invalid arguments");
1564
+ } else {
1565
+ promise = new Promise$1(function(resolve) {
1566
+ var db;
1567
+ if (options.name === currentConfig.name) {
1568
+ db = self2._dbInfo.db;
1569
+ } else {
1570
+ db = openDatabase(options.name, "", "", 0);
1571
+ }
1572
+ if (!options.storeName) {
1573
+ resolve(getAllStoreNames(db));
1574
+ } else {
1575
+ resolve({
1576
+ db,
1577
+ storeNames: [options.storeName]
1578
+ });
1579
+ }
1580
+ }).then(function(operationInfo) {
1581
+ return new Promise$1(function(resolve, reject) {
1582
+ operationInfo.db.transaction(function(t) {
1583
+ function dropTable(storeName) {
1584
+ return new Promise$1(function(resolve2, reject2) {
1585
+ t.executeSql("DROP TABLE IF EXISTS " + storeName, [], function() {
1586
+ resolve2();
1587
+ }, function(t2, error) {
1588
+ reject2(error);
1594
1589
  });
1595
- }
1596
- var operations = [];
1597
- for (var i = 0, len = operationInfo.storeNames.length; i < len; i++) {
1598
- operations.push(dropTable(operationInfo.storeNames[i]));
1599
- }
1600
- Promise$1.all(operations).then(function() {
1601
- resolve();
1602
- })["catch"](function(e) {
1603
- reject(e);
1604
1590
  });
1605
- }, function(sqlError) {
1606
- reject(sqlError);
1591
+ }
1592
+ var operations = [];
1593
+ for (var i = 0, len = operationInfo.storeNames.length; i < len; i++) {
1594
+ operations.push(dropTable(operationInfo.storeNames[i]));
1595
+ }
1596
+ Promise$1.all(operations).then(function() {
1597
+ resolve();
1598
+ })["catch"](function(e) {
1599
+ reject(e);
1607
1600
  });
1601
+ }, function(sqlError) {
1602
+ reject(sqlError);
1608
1603
  });
1609
1604
  });
1610
- }
1611
- executeCallback(promise, callback);
1612
- return promise;
1613
- }
1614
- var webSQLStorage = {
1615
- _driver: "webSQLStorage",
1616
- _initStorage: _initStorage$1,
1617
- _support: isWebSQLValid(),
1618
- iterate: iterate$1,
1619
- getItem: getItem$1,
1620
- setItem: setItem$1,
1621
- removeItem: removeItem$1,
1622
- clear: clear$1,
1623
- length: length$1,
1624
- key: key$1,
1625
- keys: keys$1,
1626
- dropInstance: dropInstance$1
1627
- };
1628
- function isLocalStorageValid() {
1629
- try {
1630
- return typeof localStorage !== "undefined" && "setItem" in localStorage && // in IE8 typeof localStorage.setItem === 'object'
1631
- !!localStorage.setItem;
1632
- } catch (e) {
1633
- return false;
1634
- }
1605
+ });
1635
1606
  }
1636
- function _getKeyPrefix(options, defaultConfig) {
1637
- var keyPrefix = options.name + "/";
1638
- if (options.storeName !== defaultConfig.storeName) {
1639
- keyPrefix += options.storeName + "/";
1640
- }
1641
- return keyPrefix;
1607
+ executeCallback(promise, callback);
1608
+ return promise;
1609
+ }
1610
+ var webSQLStorage = {
1611
+ _driver: "webSQLStorage",
1612
+ _initStorage: _initStorage$1,
1613
+ _support: isWebSQLValid(),
1614
+ iterate: iterate$1,
1615
+ getItem: getItem$1,
1616
+ setItem: setItem$1,
1617
+ removeItem: removeItem$1,
1618
+ clear: clear$1,
1619
+ length: length$1,
1620
+ key: key$1,
1621
+ keys: keys$1,
1622
+ dropInstance: dropInstance$1
1623
+ };
1624
+ function isLocalStorageValid() {
1625
+ try {
1626
+ return typeof localStorage !== "undefined" && "setItem" in localStorage && // in IE8 typeof localStorage.setItem === 'object'
1627
+ !!localStorage.setItem;
1628
+ } catch (e) {
1629
+ return false;
1642
1630
  }
1643
- function checkIfLocalStorageThrows() {
1644
- var localStorageTestKey = "_localforage_support_test";
1645
- try {
1646
- localStorage.setItem(localStorageTestKey, true);
1647
- localStorage.removeItem(localStorageTestKey);
1648
- return false;
1649
- } catch (e) {
1650
- return true;
1651
- }
1631
+ }
1632
+ function _getKeyPrefix(options, defaultConfig) {
1633
+ var keyPrefix = options.name + "/";
1634
+ if (options.storeName !== defaultConfig.storeName) {
1635
+ keyPrefix += options.storeName + "/";
1652
1636
  }
1653
- function _isLocalStorageUsable() {
1654
- return !checkIfLocalStorageThrows() || localStorage.length > 0;
1637
+ return keyPrefix;
1638
+ }
1639
+ function checkIfLocalStorageThrows() {
1640
+ var localStorageTestKey = "_localforage_support_test";
1641
+ try {
1642
+ localStorage.setItem(localStorageTestKey, true);
1643
+ localStorage.removeItem(localStorageTestKey);
1644
+ return false;
1645
+ } catch (e) {
1646
+ return true;
1655
1647
  }
1656
- function _initStorage$2(options) {
1657
- var self2 = this;
1658
- var dbInfo = {};
1659
- if (options) {
1660
- for (var i in options) {
1661
- dbInfo[i] = options[i];
1662
- }
1663
- }
1664
- dbInfo.keyPrefix = _getKeyPrefix(options, self2._defaultConfig);
1665
- if (!_isLocalStorageUsable()) {
1666
- return Promise$1.reject();
1648
+ }
1649
+ function _isLocalStorageUsable() {
1650
+ return !checkIfLocalStorageThrows() || localStorage.length > 0;
1651
+ }
1652
+ function _initStorage$2(options) {
1653
+ var self2 = this;
1654
+ var dbInfo = {};
1655
+ if (options) {
1656
+ for (var i in options) {
1657
+ dbInfo[i] = options[i];
1667
1658
  }
1668
- self2._dbInfo = dbInfo;
1669
- dbInfo.serializer = localforageSerializer;
1670
- return Promise$1.resolve();
1671
1659
  }
1672
- function clear$2(callback) {
1673
- var self2 = this;
1674
- var promise = self2.ready().then(function() {
1675
- var keyPrefix = self2._dbInfo.keyPrefix;
1676
- for (var i = localStorage.length - 1; i >= 0; i--) {
1677
- var key2 = localStorage.key(i);
1678
- if (key2.indexOf(keyPrefix) === 0) {
1679
- localStorage.removeItem(key2);
1680
- }
1681
- }
1682
- });
1683
- executeCallback(promise, callback);
1684
- return promise;
1660
+ dbInfo.keyPrefix = _getKeyPrefix(options, self2._defaultConfig);
1661
+ if (!_isLocalStorageUsable()) {
1662
+ return Promise$1.reject();
1685
1663
  }
1686
- function getItem$2(key2, callback) {
1687
- var self2 = this;
1688
- key2 = normalizeKey(key2);
1689
- var promise = self2.ready().then(function() {
1690
- var dbInfo = self2._dbInfo;
1691
- var result = localStorage.getItem(dbInfo.keyPrefix + key2);
1692
- if (result) {
1693
- result = dbInfo.serializer.deserialize(result);
1664
+ self2._dbInfo = dbInfo;
1665
+ dbInfo.serializer = localforageSerializer;
1666
+ return Promise$1.resolve();
1667
+ }
1668
+ function clear$2(callback) {
1669
+ var self2 = this;
1670
+ var promise = self2.ready().then(function() {
1671
+ var keyPrefix = self2._dbInfo.keyPrefix;
1672
+ for (var i = localStorage.length - 1; i >= 0; i--) {
1673
+ var key2 = localStorage.key(i);
1674
+ if (key2.indexOf(keyPrefix) === 0) {
1675
+ localStorage.removeItem(key2);
1694
1676
  }
1695
- return result;
1696
- });
1697
- executeCallback(promise, callback);
1698
- return promise;
1699
- }
1700
- function iterate$2(iterator, callback) {
1701
- var self2 = this;
1702
- var promise = self2.ready().then(function() {
1703
- var dbInfo = self2._dbInfo;
1704
- var keyPrefix = dbInfo.keyPrefix;
1705
- var keyPrefixLength = keyPrefix.length;
1706
- var length2 = localStorage.length;
1707
- var iterationNumber = 1;
1708
- for (var i = 0; i < length2; i++) {
1709
- var key2 = localStorage.key(i);
1710
- if (key2.indexOf(keyPrefix) !== 0) {
1711
- continue;
1712
- }
1713
- var value = localStorage.getItem(key2);
1714
- if (value) {
1715
- value = dbInfo.serializer.deserialize(value);
1716
- }
1717
- value = iterator(value, key2.substring(keyPrefixLength), iterationNumber++);
1718
- if (value !== void 0) {
1719
- return value;
1720
- }
1677
+ }
1678
+ });
1679
+ executeCallback(promise, callback);
1680
+ return promise;
1681
+ }
1682
+ function getItem$2(key2, callback) {
1683
+ var self2 = this;
1684
+ key2 = normalizeKey(key2);
1685
+ var promise = self2.ready().then(function() {
1686
+ var dbInfo = self2._dbInfo;
1687
+ var result = localStorage.getItem(dbInfo.keyPrefix + key2);
1688
+ if (result) {
1689
+ result = dbInfo.serializer.deserialize(result);
1690
+ }
1691
+ return result;
1692
+ });
1693
+ executeCallback(promise, callback);
1694
+ return promise;
1695
+ }
1696
+ function iterate$2(iterator, callback) {
1697
+ var self2 = this;
1698
+ var promise = self2.ready().then(function() {
1699
+ var dbInfo = self2._dbInfo;
1700
+ var keyPrefix = dbInfo.keyPrefix;
1701
+ var keyPrefixLength = keyPrefix.length;
1702
+ var length2 = localStorage.length;
1703
+ var iterationNumber = 1;
1704
+ for (var i = 0; i < length2; i++) {
1705
+ var key2 = localStorage.key(i);
1706
+ if (key2.indexOf(keyPrefix) !== 0) {
1707
+ continue;
1721
1708
  }
1722
- });
1723
- executeCallback(promise, callback);
1724
- return promise;
1725
- }
1726
- function key$2(n, callback) {
1727
- var self2 = this;
1728
- var promise = self2.ready().then(function() {
1729
- var dbInfo = self2._dbInfo;
1730
- var result;
1731
- try {
1732
- result = localStorage.key(n);
1733
- } catch (error) {
1734
- result = null;
1709
+ var value = localStorage.getItem(key2);
1710
+ if (value) {
1711
+ value = dbInfo.serializer.deserialize(value);
1735
1712
  }
1736
- if (result) {
1737
- result = result.substring(dbInfo.keyPrefix.length);
1713
+ value = iterator(value, key2.substring(keyPrefixLength), iterationNumber++);
1714
+ if (value !== void 0) {
1715
+ return value;
1738
1716
  }
1739
- return result;
1740
- });
1741
- executeCallback(promise, callback);
1742
- return promise;
1743
- }
1744
- function keys$2(callback) {
1745
- var self2 = this;
1746
- var promise = self2.ready().then(function() {
1747
- var dbInfo = self2._dbInfo;
1748
- var length2 = localStorage.length;
1749
- var keys2 = [];
1750
- for (var i = 0; i < length2; i++) {
1751
- var itemKey = localStorage.key(i);
1752
- if (itemKey.indexOf(dbInfo.keyPrefix) === 0) {
1753
- keys2.push(itemKey.substring(dbInfo.keyPrefix.length));
1754
- }
1717
+ }
1718
+ });
1719
+ executeCallback(promise, callback);
1720
+ return promise;
1721
+ }
1722
+ function key$2(n, callback) {
1723
+ var self2 = this;
1724
+ var promise = self2.ready().then(function() {
1725
+ var dbInfo = self2._dbInfo;
1726
+ var result;
1727
+ try {
1728
+ result = localStorage.key(n);
1729
+ } catch (error) {
1730
+ result = null;
1731
+ }
1732
+ if (result) {
1733
+ result = result.substring(dbInfo.keyPrefix.length);
1734
+ }
1735
+ return result;
1736
+ });
1737
+ executeCallback(promise, callback);
1738
+ return promise;
1739
+ }
1740
+ function keys$2(callback) {
1741
+ var self2 = this;
1742
+ var promise = self2.ready().then(function() {
1743
+ var dbInfo = self2._dbInfo;
1744
+ var length2 = localStorage.length;
1745
+ var keys2 = [];
1746
+ for (var i = 0; i < length2; i++) {
1747
+ var itemKey = localStorage.key(i);
1748
+ if (itemKey.indexOf(dbInfo.keyPrefix) === 0) {
1749
+ keys2.push(itemKey.substring(dbInfo.keyPrefix.length));
1755
1750
  }
1756
- return keys2;
1757
- });
1758
- executeCallback(promise, callback);
1759
- return promise;
1760
- }
1761
- function length$2(callback) {
1762
- var self2 = this;
1763
- var promise = self2.keys().then(function(keys2) {
1764
- return keys2.length;
1765
- });
1766
- executeCallback(promise, callback);
1767
- return promise;
1768
- }
1769
- function removeItem$2(key2, callback) {
1770
- var self2 = this;
1771
- key2 = normalizeKey(key2);
1772
- var promise = self2.ready().then(function() {
1751
+ }
1752
+ return keys2;
1753
+ });
1754
+ executeCallback(promise, callback);
1755
+ return promise;
1756
+ }
1757
+ function length$2(callback) {
1758
+ var self2 = this;
1759
+ var promise = self2.keys().then(function(keys2) {
1760
+ return keys2.length;
1761
+ });
1762
+ executeCallback(promise, callback);
1763
+ return promise;
1764
+ }
1765
+ function removeItem$2(key2, callback) {
1766
+ var self2 = this;
1767
+ key2 = normalizeKey(key2);
1768
+ var promise = self2.ready().then(function() {
1769
+ var dbInfo = self2._dbInfo;
1770
+ localStorage.removeItem(dbInfo.keyPrefix + key2);
1771
+ });
1772
+ executeCallback(promise, callback);
1773
+ return promise;
1774
+ }
1775
+ function setItem$2(key2, value, callback) {
1776
+ var self2 = this;
1777
+ key2 = normalizeKey(key2);
1778
+ var promise = self2.ready().then(function() {
1779
+ if (value === void 0) {
1780
+ value = null;
1781
+ }
1782
+ var originalValue = value;
1783
+ return new Promise$1(function(resolve, reject) {
1773
1784
  var dbInfo = self2._dbInfo;
1774
- localStorage.removeItem(dbInfo.keyPrefix + key2);
1775
- });
1776
- executeCallback(promise, callback);
1777
- return promise;
1778
- }
1779
- function setItem$2(key2, value, callback) {
1780
- var self2 = this;
1781
- key2 = normalizeKey(key2);
1782
- var promise = self2.ready().then(function() {
1783
- if (value === void 0) {
1784
- value = null;
1785
- }
1786
- var originalValue = value;
1787
- return new Promise$1(function(resolve, reject) {
1788
- var dbInfo = self2._dbInfo;
1789
- dbInfo.serializer.serialize(value, function(value2, error) {
1790
- if (error) {
1791
- reject(error);
1792
- } else {
1793
- try {
1794
- localStorage.setItem(dbInfo.keyPrefix + key2, value2);
1795
- resolve(originalValue);
1796
- } catch (e) {
1797
- if (e.name === "QuotaExceededError" || e.name === "NS_ERROR_DOM_QUOTA_REACHED") {
1798
- reject(e);
1799
- }
1785
+ dbInfo.serializer.serialize(value, function(value2, error) {
1786
+ if (error) {
1787
+ reject(error);
1788
+ } else {
1789
+ try {
1790
+ localStorage.setItem(dbInfo.keyPrefix + key2, value2);
1791
+ resolve(originalValue);
1792
+ } catch (e) {
1793
+ if (e.name === "QuotaExceededError" || e.name === "NS_ERROR_DOM_QUOTA_REACHED") {
1800
1794
  reject(e);
1801
1795
  }
1796
+ reject(e);
1802
1797
  }
1803
- });
1798
+ }
1804
1799
  });
1805
1800
  });
1806
- executeCallback(promise, callback);
1807
- return promise;
1808
- }
1809
- function dropInstance$2(options, callback) {
1810
- callback = getCallback.apply(this, arguments);
1811
- options = typeof options !== "function" && options || {};
1812
- if (!options.name) {
1813
- var currentConfig = this.config();
1814
- options.name = options.name || currentConfig.name;
1815
- options.storeName = options.storeName || currentConfig.storeName;
1816
- }
1817
- var self2 = this;
1818
- var promise;
1819
- if (!options.name) {
1820
- promise = Promise$1.reject("Invalid arguments");
1821
- } else {
1822
- promise = new Promise$1(function(resolve) {
1823
- if (!options.storeName) {
1824
- resolve(options.name + "/");
1825
- } else {
1826
- resolve(_getKeyPrefix(options, self2._defaultConfig));
1827
- }
1828
- }).then(function(keyPrefix) {
1829
- for (var i = localStorage.length - 1; i >= 0; i--) {
1830
- var key2 = localStorage.key(i);
1831
- if (key2.indexOf(keyPrefix) === 0) {
1832
- localStorage.removeItem(key2);
1833
- }
1801
+ });
1802
+ executeCallback(promise, callback);
1803
+ return promise;
1804
+ }
1805
+ function dropInstance$2(options, callback) {
1806
+ callback = getCallback.apply(this, arguments);
1807
+ options = typeof options !== "function" && options || {};
1808
+ if (!options.name) {
1809
+ var currentConfig = this.config();
1810
+ options.name = options.name || currentConfig.name;
1811
+ options.storeName = options.storeName || currentConfig.storeName;
1812
+ }
1813
+ var self2 = this;
1814
+ var promise;
1815
+ if (!options.name) {
1816
+ promise = Promise$1.reject("Invalid arguments");
1817
+ } else {
1818
+ promise = new Promise$1(function(resolve) {
1819
+ if (!options.storeName) {
1820
+ resolve(options.name + "/");
1821
+ } else {
1822
+ resolve(_getKeyPrefix(options, self2._defaultConfig));
1823
+ }
1824
+ }).then(function(keyPrefix) {
1825
+ for (var i = localStorage.length - 1; i >= 0; i--) {
1826
+ var key2 = localStorage.key(i);
1827
+ if (key2.indexOf(keyPrefix) === 0) {
1828
+ localStorage.removeItem(key2);
1834
1829
  }
1835
- });
1836
- }
1837
- executeCallback(promise, callback);
1838
- return promise;
1839
- }
1840
- var localStorageWrapper = {
1841
- _driver: "localStorageWrapper",
1842
- _initStorage: _initStorage$2,
1843
- _support: isLocalStorageValid(),
1844
- iterate: iterate$2,
1845
- getItem: getItem$2,
1846
- setItem: setItem$2,
1847
- removeItem: removeItem$2,
1848
- clear: clear$2,
1849
- length: length$2,
1850
- key: key$2,
1851
- keys: keys$2,
1852
- dropInstance: dropInstance$2
1853
- };
1854
- var sameValue = function sameValue2(x, y) {
1855
- return x === y || typeof x === "number" && typeof y === "number" && isNaN(x) && isNaN(y);
1856
- };
1857
- var includes = function includes2(array, searchElement) {
1858
- var len = array.length;
1859
- var i = 0;
1860
- while (i < len) {
1861
- if (sameValue(array[i], searchElement)) {
1862
- return true;
1863
1830
  }
1864
- i++;
1831
+ });
1832
+ }
1833
+ executeCallback(promise, callback);
1834
+ return promise;
1835
+ }
1836
+ var localStorageWrapper = {
1837
+ _driver: "localStorageWrapper",
1838
+ _initStorage: _initStorage$2,
1839
+ _support: isLocalStorageValid(),
1840
+ iterate: iterate$2,
1841
+ getItem: getItem$2,
1842
+ setItem: setItem$2,
1843
+ removeItem: removeItem$2,
1844
+ clear: clear$2,
1845
+ length: length$2,
1846
+ key: key$2,
1847
+ keys: keys$2,
1848
+ dropInstance: dropInstance$2
1849
+ };
1850
+ var sameValue = function sameValue2(x, y) {
1851
+ return x === y || typeof x === "number" && typeof y === "number" && isNaN(x) && isNaN(y);
1852
+ };
1853
+ var includes = function includes2(array, searchElement) {
1854
+ var len = array.length;
1855
+ var i = 0;
1856
+ while (i < len) {
1857
+ if (sameValue(array[i], searchElement)) {
1858
+ return true;
1865
1859
  }
1866
- return false;
1867
- };
1868
- var isArray = Array.isArray || function(arg) {
1869
- return Object.prototype.toString.call(arg) === "[object Array]";
1870
- };
1871
- var DefinedDrivers = {};
1872
- var DriverSupport = {};
1873
- var DefaultDrivers = {
1874
- INDEXEDDB: asyncStorage,
1875
- WEBSQL: webSQLStorage,
1876
- LOCALSTORAGE: localStorageWrapper
1877
- };
1878
- var DefaultDriverOrder = [DefaultDrivers.INDEXEDDB._driver, DefaultDrivers.WEBSQL._driver, DefaultDrivers.LOCALSTORAGE._driver];
1879
- var OptionalDriverMethods = ["dropInstance"];
1880
- var LibraryMethods = ["clear", "getItem", "iterate", "key", "keys", "length", "removeItem", "setItem"].concat(OptionalDriverMethods);
1881
- var DefaultConfig = {
1882
- description: "",
1883
- driver: DefaultDriverOrder.slice(),
1884
- name: "localforage",
1885
- // Default DB size is _JUST UNDER_ 5MB, as it's the highest size
1886
- // we can use without a prompt.
1887
- size: 4980736,
1888
- storeName: "keyvaluepairs",
1889
- version: 1
1860
+ i++;
1861
+ }
1862
+ return false;
1863
+ };
1864
+ var isArray = Array.isArray || function(arg) {
1865
+ return Object.prototype.toString.call(arg) === "[object Array]";
1866
+ };
1867
+ var DefinedDrivers = {};
1868
+ var DriverSupport = {};
1869
+ var DefaultDrivers = {
1870
+ INDEXEDDB: asyncStorage,
1871
+ WEBSQL: webSQLStorage,
1872
+ LOCALSTORAGE: localStorageWrapper
1873
+ };
1874
+ var DefaultDriverOrder = [DefaultDrivers.INDEXEDDB._driver, DefaultDrivers.WEBSQL._driver, DefaultDrivers.LOCALSTORAGE._driver];
1875
+ var OptionalDriverMethods = ["dropInstance"];
1876
+ var LibraryMethods = ["clear", "getItem", "iterate", "key", "keys", "length", "removeItem", "setItem"].concat(OptionalDriverMethods);
1877
+ var DefaultConfig = {
1878
+ description: "",
1879
+ driver: DefaultDriverOrder.slice(),
1880
+ name: "localforage",
1881
+ // Default DB size is _JUST UNDER_ 5MB, as it's the highest size
1882
+ // we can use without a prompt.
1883
+ size: 4980736,
1884
+ storeName: "keyvaluepairs",
1885
+ version: 1
1886
+ };
1887
+ function callWhenReady(localForageInstance, libraryMethod) {
1888
+ localForageInstance[libraryMethod] = function() {
1889
+ var _args = arguments;
1890
+ return localForageInstance.ready().then(function() {
1891
+ return localForageInstance[libraryMethod].apply(localForageInstance, _args);
1892
+ });
1890
1893
  };
1891
- function callWhenReady(localForageInstance, libraryMethod) {
1892
- localForageInstance[libraryMethod] = function() {
1893
- var _args = arguments;
1894
- return localForageInstance.ready().then(function() {
1895
- return localForageInstance[libraryMethod].apply(localForageInstance, _args);
1896
- });
1897
- };
1898
- }
1899
- function extend() {
1900
- for (var i = 1; i < arguments.length; i++) {
1901
- var arg = arguments[i];
1902
- if (arg) {
1903
- for (var _key in arg) {
1904
- if (arg.hasOwnProperty(_key)) {
1905
- if (isArray(arg[_key])) {
1906
- arguments[0][_key] = arg[_key].slice();
1907
- } else {
1908
- arguments[0][_key] = arg[_key];
1909
- }
1894
+ }
1895
+ function extend() {
1896
+ for (var i = 1; i < arguments.length; i++) {
1897
+ var arg = arguments[i];
1898
+ if (arg) {
1899
+ for (var _key in arg) {
1900
+ if (arg.hasOwnProperty(_key)) {
1901
+ if (isArray(arg[_key])) {
1902
+ arguments[0][_key] = arg[_key].slice();
1903
+ } else {
1904
+ arguments[0][_key] = arg[_key];
1910
1905
  }
1911
1906
  }
1912
1907
  }
1913
1908
  }
1914
- return arguments[0];
1915
- }
1916
- var LocalForage = function() {
1917
- function LocalForage2(options) {
1918
- _classCallCheck(this, LocalForage2);
1919
- for (var driverTypeKey in DefaultDrivers) {
1920
- if (DefaultDrivers.hasOwnProperty(driverTypeKey)) {
1921
- var driver = DefaultDrivers[driverTypeKey];
1922
- var driverName = driver._driver;
1923
- this[driverTypeKey] = driverName;
1924
- if (!DefinedDrivers[driverName]) {
1925
- this.defineDriver(driver);
1926
- }
1909
+ }
1910
+ return arguments[0];
1911
+ }
1912
+ var LocalForage = function() {
1913
+ function LocalForage2(options) {
1914
+ _classCallCheck(this, LocalForage2);
1915
+ for (var driverTypeKey in DefaultDrivers) {
1916
+ if (DefaultDrivers.hasOwnProperty(driverTypeKey)) {
1917
+ var driver = DefaultDrivers[driverTypeKey];
1918
+ var driverName = driver._driver;
1919
+ this[driverTypeKey] = driverName;
1920
+ if (!DefinedDrivers[driverName]) {
1921
+ this.defineDriver(driver);
1927
1922
  }
1928
1923
  }
1929
- this._defaultConfig = extend({}, DefaultConfig);
1930
- this._config = extend({}, this._defaultConfig, options);
1931
- this._driverSet = null;
1932
- this._initDriver = null;
1933
- this._ready = false;
1934
- this._dbInfo = null;
1935
- this._wrapLibraryMethodsWithReady();
1936
- this.setDriver(this._config.driver)["catch"](function() {
1937
- });
1938
1924
  }
1939
- LocalForage2.prototype.config = function config(options) {
1940
- if ((typeof options === "undefined" ? "undefined" : _typeof(options)) === "object") {
1941
- if (this._ready) {
1942
- return new Error("Can't call config() after localforage has been used.");
1943
- }
1944
- for (var i in options) {
1945
- if (i === "storeName") {
1946
- options[i] = options[i].replace(/\W/g, "_");
1947
- }
1948
- if (i === "version" && typeof options[i] !== "number") {
1949
- return new Error("Database version must be a number.");
1950
- }
1951
- this._config[i] = options[i];
1925
+ this._defaultConfig = extend({}, DefaultConfig);
1926
+ this._config = extend({}, this._defaultConfig, options);
1927
+ this._driverSet = null;
1928
+ this._initDriver = null;
1929
+ this._ready = false;
1930
+ this._dbInfo = null;
1931
+ this._wrapLibraryMethodsWithReady();
1932
+ this.setDriver(this._config.driver)["catch"](function() {
1933
+ });
1934
+ }
1935
+ LocalForage2.prototype.config = function config(options) {
1936
+ if ((typeof options === "undefined" ? "undefined" : _typeof(options)) === "object") {
1937
+ if (this._ready) {
1938
+ return new Error("Can't call config() after localforage has been used.");
1939
+ }
1940
+ for (var i in options) {
1941
+ if (i === "storeName") {
1942
+ options[i] = options[i].replace(/\W/g, "_");
1952
1943
  }
1953
- if ("driver" in options && options.driver) {
1954
- return this.setDriver(this._config.driver);
1944
+ if (i === "version" && typeof options[i] !== "number") {
1945
+ return new Error("Database version must be a number.");
1955
1946
  }
1956
- return true;
1957
- } else if (typeof options === "string") {
1958
- return this._config[options];
1959
- } else {
1960
- return this._config;
1947
+ this._config[i] = options[i];
1961
1948
  }
1962
- };
1963
- LocalForage2.prototype.defineDriver = function defineDriver(driverObject, callback, errorCallback) {
1964
- var promise = new Promise$1(function(resolve, reject) {
1965
- try {
1966
- var driverName = driverObject._driver;
1967
- var complianceError = new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver");
1968
- if (!driverObject._driver) {
1949
+ if ("driver" in options && options.driver) {
1950
+ return this.setDriver(this._config.driver);
1951
+ }
1952
+ return true;
1953
+ } else if (typeof options === "string") {
1954
+ return this._config[options];
1955
+ } else {
1956
+ return this._config;
1957
+ }
1958
+ };
1959
+ LocalForage2.prototype.defineDriver = function defineDriver(driverObject, callback, errorCallback) {
1960
+ var promise = new Promise$1(function(resolve, reject) {
1961
+ try {
1962
+ var driverName = driverObject._driver;
1963
+ var complianceError = new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver");
1964
+ if (!driverObject._driver) {
1965
+ reject(complianceError);
1966
+ return;
1967
+ }
1968
+ var driverMethods = LibraryMethods.concat("_initStorage");
1969
+ for (var i = 0, len = driverMethods.length; i < len; i++) {
1970
+ var driverMethodName = driverMethods[i];
1971
+ var isRequired = !includes(OptionalDriverMethods, driverMethodName);
1972
+ if ((isRequired || driverObject[driverMethodName]) && typeof driverObject[driverMethodName] !== "function") {
1969
1973
  reject(complianceError);
1970
1974
  return;
1971
1975
  }
1972
- var driverMethods = LibraryMethods.concat("_initStorage");
1973
- for (var i = 0, len = driverMethods.length; i < len; i++) {
1974
- var driverMethodName = driverMethods[i];
1975
- var isRequired = !includes(OptionalDriverMethods, driverMethodName);
1976
- if ((isRequired || driverObject[driverMethodName]) && typeof driverObject[driverMethodName] !== "function") {
1977
- reject(complianceError);
1978
- return;
1979
- }
1980
- }
1981
- var configureMissingMethods = function configureMissingMethods2() {
1982
- var methodNotImplementedFactory = function methodNotImplementedFactory2(methodName) {
1983
- return function() {
1984
- var error = new Error("Method " + methodName + " is not implemented by the current driver");
1985
- var promise2 = Promise$1.reject(error);
1986
- executeCallback(promise2, arguments[arguments.length - 1]);
1987
- return promise2;
1988
- };
1976
+ }
1977
+ var configureMissingMethods = function configureMissingMethods2() {
1978
+ var methodNotImplementedFactory = function methodNotImplementedFactory2(methodName) {
1979
+ return function() {
1980
+ var error = new Error("Method " + methodName + " is not implemented by the current driver");
1981
+ var promise2 = Promise$1.reject(error);
1982
+ executeCallback(promise2, arguments[arguments.length - 1]);
1983
+ return promise2;
1989
1984
  };
1990
- for (var _i = 0, _len = OptionalDriverMethods.length; _i < _len; _i++) {
1991
- var optionalDriverMethod = OptionalDriverMethods[_i];
1992
- if (!driverObject[optionalDriverMethod]) {
1993
- driverObject[optionalDriverMethod] = methodNotImplementedFactory(optionalDriverMethod);
1994
- }
1995
- }
1996
- };
1997
- configureMissingMethods();
1998
- var setDriverSupport = function setDriverSupport2(support) {
1999
- if (DefinedDrivers[driverName]) {
2000
- }
2001
- DefinedDrivers[driverName] = driverObject;
2002
- DriverSupport[driverName] = support;
2003
- resolve();
2004
1985
  };
2005
- if ("_support" in driverObject) {
2006
- if (driverObject._support && typeof driverObject._support === "function") {
2007
- driverObject._support().then(setDriverSupport, reject);
2008
- } else {
2009
- setDriverSupport(!!driverObject._support);
1986
+ for (var _i = 0, _len = OptionalDriverMethods.length; _i < _len; _i++) {
1987
+ var optionalDriverMethod = OptionalDriverMethods[_i];
1988
+ if (!driverObject[optionalDriverMethod]) {
1989
+ driverObject[optionalDriverMethod] = methodNotImplementedFactory(optionalDriverMethod);
2010
1990
  }
1991
+ }
1992
+ };
1993
+ configureMissingMethods();
1994
+ var setDriverSupport = function setDriverSupport2(support) {
1995
+ if (DefinedDrivers[driverName]) {
1996
+ }
1997
+ DefinedDrivers[driverName] = driverObject;
1998
+ DriverSupport[driverName] = support;
1999
+ resolve();
2000
+ };
2001
+ if ("_support" in driverObject) {
2002
+ if (driverObject._support && typeof driverObject._support === "function") {
2003
+ driverObject._support().then(setDriverSupport, reject);
2011
2004
  } else {
2012
- setDriverSupport(true);
2005
+ setDriverSupport(!!driverObject._support);
2013
2006
  }
2014
- } catch (e) {
2015
- reject(e);
2016
- }
2017
- });
2018
- executeTwoCallbacks(promise, callback, errorCallback);
2019
- return promise;
2020
- };
2021
- LocalForage2.prototype.driver = function driver() {
2022
- return this._driver || null;
2023
- };
2024
- LocalForage2.prototype.getDriver = function getDriver(driverName, callback, errorCallback) {
2025
- var getDriverPromise = DefinedDrivers[driverName] ? Promise$1.resolve(DefinedDrivers[driverName]) : Promise$1.reject(new Error("Driver not found."));
2026
- executeTwoCallbacks(getDriverPromise, callback, errorCallback);
2027
- return getDriverPromise;
2028
- };
2029
- LocalForage2.prototype.getSerializer = function getSerializer(callback) {
2030
- var serializerPromise = Promise$1.resolve(localforageSerializer);
2031
- executeTwoCallbacks(serializerPromise, callback);
2032
- return serializerPromise;
2033
- };
2034
- LocalForage2.prototype.ready = function ready(callback) {
2035
- var self2 = this;
2036
- var promise = self2._driverSet.then(function() {
2037
- if (self2._ready === null) {
2038
- self2._ready = self2._initDriver();
2007
+ } else {
2008
+ setDriverSupport(true);
2039
2009
  }
2040
- return self2._ready;
2041
- });
2042
- executeTwoCallbacks(promise, callback, callback);
2043
- return promise;
2044
- };
2045
- LocalForage2.prototype.setDriver = function setDriver(drivers, callback, errorCallback) {
2046
- var self2 = this;
2047
- if (!isArray(drivers)) {
2048
- drivers = [drivers];
2049
- }
2050
- var supportedDrivers = this._getSupportedDrivers(drivers);
2051
- function setDriverToConfig() {
2052
- self2._config.driver = self2.driver();
2010
+ } catch (e) {
2011
+ reject(e);
2053
2012
  }
2054
- function extendSelfWithDriver(driver) {
2055
- self2._extend(driver);
2056
- setDriverToConfig();
2057
- self2._ready = self2._initStorage(self2._config);
2058
- return self2._ready;
2013
+ });
2014
+ executeTwoCallbacks(promise, callback, errorCallback);
2015
+ return promise;
2016
+ };
2017
+ LocalForage2.prototype.driver = function driver() {
2018
+ return this._driver || null;
2019
+ };
2020
+ LocalForage2.prototype.getDriver = function getDriver(driverName, callback, errorCallback) {
2021
+ var getDriverPromise = DefinedDrivers[driverName] ? Promise$1.resolve(DefinedDrivers[driverName]) : Promise$1.reject(new Error("Driver not found."));
2022
+ executeTwoCallbacks(getDriverPromise, callback, errorCallback);
2023
+ return getDriverPromise;
2024
+ };
2025
+ LocalForage2.prototype.getSerializer = function getSerializer(callback) {
2026
+ var serializerPromise = Promise$1.resolve(localforageSerializer);
2027
+ executeTwoCallbacks(serializerPromise, callback);
2028
+ return serializerPromise;
2029
+ };
2030
+ LocalForage2.prototype.ready = function ready(callback) {
2031
+ var self2 = this;
2032
+ var promise = self2._driverSet.then(function() {
2033
+ if (self2._ready === null) {
2034
+ self2._ready = self2._initDriver();
2059
2035
  }
2060
- function initDriver(supportedDrivers2) {
2061
- return function() {
2062
- var currentDriverIndex = 0;
2063
- function driverPromiseLoop() {
2064
- while (currentDriverIndex < supportedDrivers2.length) {
2065
- var driverName = supportedDrivers2[currentDriverIndex];
2066
- currentDriverIndex++;
2067
- self2._dbInfo = null;
2068
- self2._ready = null;
2069
- return self2.getDriver(driverName).then(extendSelfWithDriver)["catch"](driverPromiseLoop);
2070
- }
2071
- setDriverToConfig();
2072
- var error = new Error("No available storage method found.");
2073
- self2._driverSet = Promise$1.reject(error);
2074
- return self2._driverSet;
2036
+ return self2._ready;
2037
+ });
2038
+ executeTwoCallbacks(promise, callback, callback);
2039
+ return promise;
2040
+ };
2041
+ LocalForage2.prototype.setDriver = function setDriver(drivers, callback, errorCallback) {
2042
+ var self2 = this;
2043
+ if (!isArray(drivers)) {
2044
+ drivers = [drivers];
2045
+ }
2046
+ var supportedDrivers = this._getSupportedDrivers(drivers);
2047
+ function setDriverToConfig() {
2048
+ self2._config.driver = self2.driver();
2049
+ }
2050
+ function extendSelfWithDriver(driver) {
2051
+ self2._extend(driver);
2052
+ setDriverToConfig();
2053
+ self2._ready = self2._initStorage(self2._config);
2054
+ return self2._ready;
2055
+ }
2056
+ function initDriver(supportedDrivers2) {
2057
+ return function() {
2058
+ var currentDriverIndex = 0;
2059
+ function driverPromiseLoop() {
2060
+ while (currentDriverIndex < supportedDrivers2.length) {
2061
+ var driverName = supportedDrivers2[currentDriverIndex];
2062
+ currentDriverIndex++;
2063
+ self2._dbInfo = null;
2064
+ self2._ready = null;
2065
+ return self2.getDriver(driverName).then(extendSelfWithDriver)["catch"](driverPromiseLoop);
2075
2066
  }
2076
- return driverPromiseLoop();
2077
- };
2078
- }
2079
- var oldDriverSetDone = this._driverSet !== null ? this._driverSet["catch"](function() {
2080
- return Promise$1.resolve();
2081
- }) : Promise$1.resolve();
2082
- this._driverSet = oldDriverSetDone.then(function() {
2083
- var driverName = supportedDrivers[0];
2084
- self2._dbInfo = null;
2085
- self2._ready = null;
2086
- return self2.getDriver(driverName).then(function(driver) {
2087
- self2._driver = driver._driver;
2088
2067
  setDriverToConfig();
2089
- self2._wrapLibraryMethodsWithReady();
2090
- self2._initDriver = initDriver(supportedDrivers);
2091
- });
2092
- })["catch"](function() {
2068
+ var error = new Error("No available storage method found.");
2069
+ self2._driverSet = Promise$1.reject(error);
2070
+ return self2._driverSet;
2071
+ }
2072
+ return driverPromiseLoop();
2073
+ };
2074
+ }
2075
+ var oldDriverSetDone = this._driverSet !== null ? this._driverSet["catch"](function() {
2076
+ return Promise$1.resolve();
2077
+ }) : Promise$1.resolve();
2078
+ this._driverSet = oldDriverSetDone.then(function() {
2079
+ var driverName = supportedDrivers[0];
2080
+ self2._dbInfo = null;
2081
+ self2._ready = null;
2082
+ return self2.getDriver(driverName).then(function(driver) {
2083
+ self2._driver = driver._driver;
2093
2084
  setDriverToConfig();
2094
- var error = new Error("No available storage method found.");
2095
- self2._driverSet = Promise$1.reject(error);
2096
- return self2._driverSet;
2085
+ self2._wrapLibraryMethodsWithReady();
2086
+ self2._initDriver = initDriver(supportedDrivers);
2097
2087
  });
2098
- executeTwoCallbacks(this._driverSet, callback, errorCallback);
2099
- return this._driverSet;
2100
- };
2101
- LocalForage2.prototype.supports = function supports(driverName) {
2102
- return !!DriverSupport[driverName];
2103
- };
2104
- LocalForage2.prototype._extend = function _extend(libraryMethodsAndProperties) {
2105
- extend(this, libraryMethodsAndProperties);
2106
- };
2107
- LocalForage2.prototype._getSupportedDrivers = function _getSupportedDrivers(drivers) {
2108
- var supportedDrivers = [];
2109
- for (var i = 0, len = drivers.length; i < len; i++) {
2110
- var driverName = drivers[i];
2111
- if (this.supports(driverName)) {
2112
- supportedDrivers.push(driverName);
2113
- }
2114
- }
2115
- return supportedDrivers;
2116
- };
2117
- LocalForage2.prototype._wrapLibraryMethodsWithReady = function _wrapLibraryMethodsWithReady() {
2118
- for (var i = 0, len = LibraryMethods.length; i < len; i++) {
2119
- callWhenReady(this, LibraryMethods[i]);
2088
+ })["catch"](function() {
2089
+ setDriverToConfig();
2090
+ var error = new Error("No available storage method found.");
2091
+ self2._driverSet = Promise$1.reject(error);
2092
+ return self2._driverSet;
2093
+ });
2094
+ executeTwoCallbacks(this._driverSet, callback, errorCallback);
2095
+ return this._driverSet;
2096
+ };
2097
+ LocalForage2.prototype.supports = function supports(driverName) {
2098
+ return !!DriverSupport[driverName];
2099
+ };
2100
+ LocalForage2.prototype._extend = function _extend(libraryMethodsAndProperties) {
2101
+ extend(this, libraryMethodsAndProperties);
2102
+ };
2103
+ LocalForage2.prototype._getSupportedDrivers = function _getSupportedDrivers(drivers) {
2104
+ var supportedDrivers = [];
2105
+ for (var i = 0, len = drivers.length; i < len; i++) {
2106
+ var driverName = drivers[i];
2107
+ if (this.supports(driverName)) {
2108
+ supportedDrivers.push(driverName);
2120
2109
  }
2121
- };
2122
- LocalForage2.prototype.createInstance = function createInstance(options) {
2123
- return new LocalForage2(options);
2124
- };
2125
- return LocalForage2;
2126
- }();
2127
- var localforage_js = new LocalForage();
2128
- module2.exports = localforage_js;
2129
- }, { "3": 3 }] }, {}, [4])(4);
2130
- });
2131
- })(localforage$1);
2132
- return localforage$1.exports;
2133
- }
2134
- var localforageExports = requireLocalforage();
2110
+ }
2111
+ return supportedDrivers;
2112
+ };
2113
+ LocalForage2.prototype._wrapLibraryMethodsWithReady = function _wrapLibraryMethodsWithReady() {
2114
+ for (var i = 0, len = LibraryMethods.length; i < len; i++) {
2115
+ callWhenReady(this, LibraryMethods[i]);
2116
+ }
2117
+ };
2118
+ LocalForage2.prototype.createInstance = function createInstance(options) {
2119
+ return new LocalForage2(options);
2120
+ };
2121
+ return LocalForage2;
2122
+ }();
2123
+ var localforage_js = new LocalForage();
2124
+ module2.exports = localforage_js;
2125
+ }, { "3": 3 }] }, {}, [4])(4);
2126
+ });
2127
+ })(localforage$1);
2128
+ var localforageExports = localforage$1.exports;
2135
2129
  const localforage = /* @__PURE__ */ getDefaultExportFromCjs(localforageExports);
2136
2130
  export {
2137
2131
  commonjsRequire as c,