yxuse 3.0.108 → 3.0.110

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,1819 +9,1670 @@ var localforage$1 = { exports: {} };
9
9
  https://localforage.github.io/localForage
10
10
  (c) 2013-2017 Mozilla, Apache License 2.0
11
11
  */
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;
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;
68
57
  };
69
- global.document.documentElement.appendChild(scriptEl);
70
- };
71
- } else {
72
- scheduleDrain = function() {
73
- setTimeout(nextTick, 0);
74
- };
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);
78
+ };
79
+ }
75
80
  }
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]();
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;
89
95
  }
90
- len = queue.length;
96
+ draining = false;
91
97
  }
92
- draining = false;
93
- }
94
- module2.exports = immediate;
95
- function immediate(task) {
96
- if (queue.push(task) === 1 && !draining) {
97
- scheduleDrain();
98
+ module2.exports = immediate;
99
+ function immediate(task) {
100
+ if (queue.push(task) === 1 && !draining) {
101
+ scheduleDrain();
102
+ }
103
+ }
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);
98
123
  }
99
124
  }
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);
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;
150
+ }
119
151
  }
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;
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
+ });
146
178
  }
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);
179
+ handlers.resolve = function(self2, value) {
180
+ var result = tryCatch(getThen, value);
181
+ if (result.status === "error") {
182
+ return handlers.reject(self2, result.value);
167
183
  }
168
- if (returnValue === promise) {
169
- handlers.reject(promise, new TypeError("Cannot resolve promise with itself"));
184
+ var thenable = result.value;
185
+ if (thenable) {
186
+ safelyResolveThenable(self2, thenable);
170
187
  } else {
171
- handlers.resolve(promise, returnValue);
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
+ }
172
195
  }
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;
196
+ return self2;
197
+ };
198
+ handlers.reject = function(self2, error) {
199
+ self2.state = REJECTED;
200
+ self2.outcome = error;
186
201
  var i = -1;
187
202
  var len = self2.queue.length;
188
203
  while (++i < len) {
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
- };
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
+ }
210
215
  }
211
- }
212
- function safelyResolveThenable(self2, thenable) {
213
- var called = false;
214
- function onError(value) {
215
- if (called) {
216
- return;
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);
217
238
  }
218
- called = true;
219
- handlers.reject(self2, value);
220
239
  }
221
- function onSuccess(value) {
222
- if (called) {
223
- return;
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;
224
248
  }
225
- called = true;
226
- handlers.resolve(self2, value);
249
+ return out;
227
250
  }
228
- function tryToUnwrap() {
229
- thenable(onSuccess, onError);
251
+ Promise2.resolve = resolve;
252
+ function resolve(value) {
253
+ if (value instanceof this) {
254
+ return value;
255
+ }
256
+ return handlers.resolve(new this(INTERNAL), value);
230
257
  }
231
- var result = tryCatch(tryToUnwrap);
232
- if (result.status === "error") {
233
- onError(result.value);
258
+ Promise2.reject = reject;
259
+ function reject(reason) {
260
+ var promise = new this(INTERNAL);
261
+ return handlers.reject(promise, reason);
234
262
  }
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;
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
+ }
251
297
  }
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);
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
+ }
328
+ }
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
+ }
345
+ }
346
+ function getIDB() {
347
+ try {
348
+ if (typeof indexedDB !== "undefined") {
349
+ return indexedDB;
283
350
  }
284
- });
285
- function resolveFromAll(outValue) {
286
- values[i2] = outValue;
287
- if (++resolved === len && !called) {
288
- called = true;
289
- handlers.resolve(promise, values);
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;
290
362
  }
363
+ } catch (e) {
364
+ return;
291
365
  }
292
366
  }
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);
367
+ var idb = getIDB();
368
+ function isIndexedDBValid() {
369
+ try {
370
+ if (!idb || !idb.open) {
371
+ return false;
372
+ }
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
+ }
383
+ }
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;
316
392
  }
317
- }, function(error) {
318
- if (!called) {
319
- called = true;
320
- handlers.reject(promise, error);
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]);
321
397
  }
322
- });
398
+ return builder.getBlob(properties.type);
399
+ }
323
400
  }
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");
401
+ if (typeof Promise === "undefined") {
402
+ _dereq_(3);
340
403
  }
341
- }
342
- function getIDB() {
343
- try {
344
- if (typeof indexedDB !== "undefined") {
345
- return indexedDB;
346
- }
347
- if (typeof webkitIndexedDB !== "undefined") {
348
- return webkitIndexedDB;
349
- }
350
- if (typeof mozIndexedDB !== "undefined") {
351
- return mozIndexedDB;
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
+ });
352
412
  }
353
- if (typeof OIndexedDB !== "undefined") {
354
- return OIndexedDB;
413
+ }
414
+ function executeTwoCallbacks(promise, callback, errorCallback) {
415
+ if (typeof callback === "function") {
416
+ promise.then(callback);
355
417
  }
356
- if (typeof msIndexedDB !== "undefined") {
357
- return msIndexedDB;
418
+ if (typeof errorCallback === "function") {
419
+ promise["catch"](errorCallback);
358
420
  }
359
- } catch (e) {
360
- return;
361
421
  }
362
- }
363
- var idb = getIDB();
364
- function isIndexedDBValid() {
365
- try {
366
- if (!idb || !idb.open) {
367
- return false;
422
+ function normalizeKey(key2) {
423
+ if (typeof key2 !== "string") {
424
+ key2 = String(key2);
368
425
  }
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;
426
+ return key2;
378
427
  }
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);
428
+ function getCallback() {
429
+ if (arguments.length && typeof arguments[arguments.length - 1] === "function") {
430
+ return arguments[arguments.length - 1];
431
+ }
395
432
  }
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);
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() {
464
+ return false;
407
465
  });
408
466
  }
409
- }
410
- function executeTwoCallbacks(promise, callback, errorCallback) {
411
- if (typeof callback === "function") {
412
- promise.then(callback);
413
- }
414
- if (typeof errorCallback === "function") {
415
- promise["catch"](errorCallback);
467
+ function _checkBlobSupport(idb2) {
468
+ if (typeof supportsBlobs === "boolean") {
469
+ return Promise$1.resolve(supportsBlobs);
470
+ }
471
+ return _checkBlobSupportWithoutCaching(idb2).then(function(value) {
472
+ supportsBlobs = value;
473
+ return supportsBlobs;
474
+ });
416
475
  }
417
- }
418
- function normalizeKey(key2) {
419
- if (typeof key2 !== "string") {
420
- key2 = String(key2);
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
+ }
421
491
  }
422
- return key2;
423
- }
424
- function getCallback() {
425
- if (arguments.length && typeof arguments[arguments.length - 1] === "function") {
426
- return arguments[arguments.length - 1];
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
+ }
427
499
  }
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() {
460
- return false;
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() {
500
+ function _rejectReadiness(dbInfo, err) {
501
+ var dbContext = dbContexts[dbInfo.name];
502
+ var deferredOperation = dbContext.deferredOperations.pop();
503
+ if (deferredOperation) {
504
+ deferredOperation.reject(err);
484
505
  return deferredOperation.promise;
506
+ }
507
+ }
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
+ };
485
552
  });
486
553
  }
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;
554
+ function _getOriginalConnection(dbInfo) {
555
+ return _getConnection(dbInfo, false);
494
556
  }
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;
557
+ function _getUpgradedConnection(dbInfo) {
558
+ return _getConnection(dbInfo, true);
502
559
  }
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);
513
- }
560
+ function _isUpgradeNeeded(dbInfo, defaultVersion) {
561
+ if (!dbInfo.db) {
562
+ return true;
514
563
  }
515
- var dbArgs = [dbInfo.name];
516
- if (upgradeNeeded) {
517
- dbArgs.push(dbInfo.version);
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;
518
571
  }
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);
527
- }
528
- } catch (ex) {
529
- if (ex.name === "ConstraintError") {
530
- } else {
531
- throw ex;
532
- }
572
+ if (isUpgrade || isNewStore) {
573
+ if (isNewStore) {
574
+ var incVersion = dbInfo.db.version + 1;
575
+ if (incVersion > dbInfo.version) {
576
+ dbInfo.version = incVersion;
533
577
  }
534
- };
535
- }
536
- openreq.onerror = function(e) {
537
- e.preventDefault();
538
- reject(openreq.error);
539
- };
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);
547
- };
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;
573
578
  }
579
+ return true;
574
580
  }
575
- return true;
581
+ return false;
576
582
  }
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);
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
659
593
  });
660
- })["catch"](callback);
661
- }
662
- callback(err);
594
+ };
595
+ reader.readAsBinaryString(blob);
596
+ });
663
597
  }
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];
685
- }
598
+ function _decodeBlob(encodedBlob) {
599
+ var arrayBuff = _binStringToArrayBuffer(atob(encodedBlob.data));
600
+ return createBlob([arrayBuff], { type: encodedBlob.type });
686
601
  }
687
- var dbContext = dbContexts[dbInfo.name];
688
- if (!dbContext) {
689
- dbContext = createDbContext();
690
- dbContexts[dbInfo.name] = dbContext;
602
+ function _isEncodedBlob(value) {
603
+ return value && value.__local_forage_encoded_blob;
691
604
  }
692
- dbContext.forages.push(self2);
693
- if (!self2._initReady) {
694
- self2._initReady = self2.ready;
695
- self2.ready = _fullyReady;
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;
696
615
  }
697
- var initPromises = [];
698
- function ignoreErrors() {
699
- return Promise$1.resolve();
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;
625
+ }
626
+ }
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
+ });
700
643
  }
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));
644
+ function createTransaction(dbInfo, mode, callback, retries) {
645
+ if (retries === void 0) {
646
+ retries = 1;
647
+ }
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);
659
+ }
660
+ }).then(function() {
661
+ return _tryReconnect(dbInfo).then(function() {
662
+ createTransaction(dbInfo, mode, callback, retries - 1);
663
+ });
664
+ })["catch"](callback);
665
+ }
666
+ callback(err);
705
667
  }
706
668
  }
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);
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: []
679
+ };
680
+ }
681
+ function _initStorage(options) {
682
+ var self2 = this;
683
+ var dbInfo = {
684
+ db: null
685
+ };
686
+ if (options) {
687
+ for (var i in options) {
688
+ dbInfo[i] = options[i];
689
+ }
715
690
  }
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;
691
+ var dbContext = dbContexts[dbInfo.name];
692
+ if (!dbContext) {
693
+ dbContext = createDbContext();
694
+ dbContexts[dbInfo.name] = dbContext;
695
+ }
696
+ dbContext.forages.push(self2);
697
+ if (!self2._initReady) {
698
+ self2._initReady = self2.ready;
699
+ self2.ready = _fullyReady;
700
+ }
701
+ var initPromises = [];
702
+ function ignoreErrors() {
703
+ return Promise$1.resolve();
704
+ }
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));
725
709
  }
726
710
  }
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);
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;
737
729
  }
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;
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
+ }
779
750
  if (_isEncodedBlob(value)) {
780
751
  value = _decodeBlob(value);
781
752
  }
782
- var result = iterator(value, cursor.key, iterationNumber++);
783
- if (result !== void 0) {
784
- resolve(result);
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
+ }
785
792
  } else {
786
- cursor["continue"]();
793
+ resolve();
787
794
  }
788
- } else {
789
- resolve();
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;
790
819
  }
791
- };
792
- req.onerror = function() {
793
- reject(req.error);
794
- };
795
- } catch (e) {
796
- reject(e);
820
+ return _encodeBlob(value);
821
+ });
797
822
  }
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;
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);
815
905
  }
816
- return _encodeBlob(value);
817
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);
931
+ }
932
+ });
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;
818
944
  }
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;
945
+ self2.ready().then(function() {
946
+ createTransaction(self2._dbInfo, READ_ONLY, function(err, transaction) {
947
+ if (err) {
948
+ return reject(err);
829
949
  }
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
- } else {
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) {
963
961
  resolve(cursor.key);
962
+ } else {
963
+ if (!advanced) {
964
+ advanced = true;
965
+ cursor.advance(n);
966
+ } else {
967
+ resolve(cursor.key);
968
+ }
964
969
  }
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;
1034
- });
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
- };
970
+ };
971
+ req.onerror = function() {
972
+ reject(req.error);
973
+ };
974
+ } catch (e) {
975
+ reject(e);
976
+ }
1063
977
  });
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);
978
+ })["catch"](reject);
979
+ });
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);
1069
1009
  }
1070
- })["catch"](function(err) {
1071
- (_rejectReadiness(options, err) || Promise$1.resolve())["catch"](function() {
1072
- });
1073
- throw err;
1074
1010
  });
1075
- });
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");
1076
1028
  } else {
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);
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) {
1083
1031
  var dbContext = dbContexts[options.name];
1084
1032
  var forages = dbContext.forages;
1085
- db.close();
1033
+ dbContext.db = db;
1086
1034
  for (var i = 0; i < forages.length; i++) {
1087
- var forage = forages[i];
1088
- forage._dbInfo.db = null;
1089
- forage._dbInfo.version = newVersion;
1035
+ forages[i]._dbInfo.db = db;
1090
1036
  }
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
- };
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
+ });
1107
1079
  });
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);
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;
1114
1094
  }
1115
- })["catch"](function(err) {
1116
- (_rejectReadiness(options, err) || Promise$1.resolve())["catch"](function() {
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;
1117
1123
  });
1118
- throw err;
1119
1124
  });
1120
- });
1125
+ }
1121
1126
  }
1127
+ executeCallback(promise, callback);
1128
+ return promise;
1122
1129
  }
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] === "=") {
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] === "=") {
1170
1172
  bufferLength--;
1173
+ if (serializedString[serializedString.length - 2] === "=") {
1174
+ bufferLength--;
1175
+ }
1171
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
+ }
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;
1172
1206
  }
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;
1214
- } else {
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;
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;
1234
1218
  } else {
1235
- callback(new Error("Failed to get type for BinaryArray"));
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);
1250
+ } else {
1251
+ try {
1252
+ callback(JSON.stringify(value));
1253
+ } catch (e) {
1254
+ callback(null, e);
1236
1255
  }
1237
- }
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);
1251
1256
  }
1252
1257
  }
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);
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);
1296
+ }
1292
1297
  }
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
1298
+ var localforageSerializer = {
1299
+ serialize,
1300
+ deserialize,
1301
+ stringToBuffer,
1302
+ bufferToString
1307
1303
  };
1308
- if (options) {
1309
- for (var i in options) {
1310
- dbInfo[i] = typeof options[i] !== "string" ? options[i].toString() : options[i];
1311
- }
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);
1312
1306
  }
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);
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
+ }
1345
1316
  }
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;
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
+ }
1354
1323
  dbInfo.db.transaction(function(t) {
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);
1324
+ createDbTable(t, dbInfo, function() {
1325
+ self2._dbInfo = dbInfo;
1326
+ resolve();
1361
1327
  }, function(t2, error) {
1362
1328
  reject(error);
1363
1329
  });
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;
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;
1382
1361
  if (result) {
1383
1362
  result = dbInfo.serializer.deserialize(result);
1384
1363
  }
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);
1364
+ resolve(result);
1365
+ }, function(t2, error) {
1366
+ reject(error);
1367
+ });
1394
1368
  });
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]));
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);
1425
1392
  return;
1426
1393
  }
1427
- reject(sqlError);
1428
1394
  }
1395
+ resolve();
1396
+ }, function(t2, error) {
1397
+ reject(error);
1429
1398
  });
1430
- }
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);
1451
1399
  });
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);
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
+ }
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
+ }
1468
1435
  });
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);
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
+ });
1486
1456
  });
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);
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
+ });
1504
1473
  });
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 = [];
1519
- for (var i = 0; i < results.rows.length; i++) {
1520
- keys2.push(results.rows.item(i).key);
1521
- }
1522
- resolve(keys2);
1523
- }, function(t2, error) {
1524
- reject(error);
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
+ });
1525
1491
  });
1526
- });
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);
1539
- }
1540
- resolve({
1541
- db,
1542
- storeNames
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
+ });
1543
1509
  });
1544
- }, function(t2, error) {
1545
- reject(error);
1546
- });
1547
- }, function(sqlError) {
1548
- reject(sqlError);
1510
+ })["catch"](reject);
1549
1511
  });
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]
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
+ });
1578
1530
  });
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);
1589
- });
1590
- });
1591
- }
1592
- var operations = [];
1593
- for (var i = 0, len = operationInfo.storeNames.length; i < len; i++) {
1594
- operations.push(dropTable(operationInfo.storeNames[i]));
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 = [];
1541
+ for (var i = 0; i < results.rows.length; i++) {
1542
+ storeNames.push(results.rows.item(i).name);
1595
1543
  }
1596
- Promise$1.all(operations).then(function() {
1597
- resolve();
1598
- })["catch"](function(e) {
1599
- reject(e);
1544
+ resolve({
1545
+ db,
1546
+ storeNames
1600
1547
  });
1601
- }, function(sqlError) {
1602
- reject(sqlError);
1548
+ }, function(t2, error) {
1549
+ reject(error);
1603
1550
  });
1551
+ }, function(sqlError) {
1552
+ reject(sqlError);
1604
1553
  });
1605
1554
  });
1606
1555
  }
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;
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
+ });
1583
+ }
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
+ });
1594
+ });
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
+ });
1605
+ }, function(sqlError) {
1606
+ reject(sqlError);
1607
+ });
1608
+ });
1609
+ });
1610
+ }
1611
+ executeCallback(promise, callback);
1612
+ return promise;
1630
1613
  }
1631
- }
1632
- function _getKeyPrefix(options, defaultConfig) {
1633
- var keyPrefix = options.name + "/";
1634
- if (options.storeName !== defaultConfig.storeName) {
1635
- keyPrefix += options.storeName + "/";
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
+ }
1636
1635
  }
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;
1636
+ function _getKeyPrefix(options, defaultConfig) {
1637
+ var keyPrefix = options.name + "/";
1638
+ if (options.storeName !== defaultConfig.storeName) {
1639
+ keyPrefix += options.storeName + "/";
1640
+ }
1641
+ return keyPrefix;
1647
1642
  }
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];
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;
1658
1651
  }
1659
1652
  }
1660
- dbInfo.keyPrefix = _getKeyPrefix(options, self2._defaultConfig);
1661
- if (!_isLocalStorageUsable()) {
1662
- return Promise$1.reject();
1653
+ function _isLocalStorageUsable() {
1654
+ return !checkIfLocalStorageThrows() || localStorage.length > 0;
1663
1655
  }
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);
1676
- }
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;
1708
- }
1709
- var value = localStorage.getItem(key2);
1710
- if (value) {
1711
- value = dbInfo.serializer.deserialize(value);
1712
- }
1713
- value = iterator(value, key2.substring(keyPrefixLength), iterationNumber++);
1714
- if (value !== void 0) {
1715
- return value;
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];
1716
1662
  }
1717
1663
  }
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));
1750
- }
1664
+ dbInfo.keyPrefix = _getKeyPrefix(options, self2._defaultConfig);
1665
+ if (!_isLocalStorageUsable()) {
1666
+ return Promise$1.reject();
1751
1667
  }
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) {
1784
- var dbInfo = self2._dbInfo;
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") {
1794
- reject(e);
1795
- }
1796
- reject(e);
1797
- }
1798
- }
1799
- });
1800
- });
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) {
1668
+ self2._dbInfo = dbInfo;
1669
+ dbInfo.serializer = localforageSerializer;
1670
+ return Promise$1.resolve();
1671
+ }
1672
+ function clear$2(callback) {
1673
+ var self2 = this;
1674
+ var promise = self2.ready().then(function() {
1675
+ var keyPrefix = self2._dbInfo.keyPrefix;
1825
1676
  for (var i = localStorage.length - 1; i >= 0; i--) {
1826
1677
  var key2 = localStorage.key(i);
1827
1678
  if (key2.indexOf(keyPrefix) === 0) {
@@ -1829,303 +1680,458 @@ var localforage$1 = { exports: {} };
1829
1680
  }
1830
1681
  }
1831
1682
  });
1683
+ executeCallback(promise, callback);
1684
+ return promise;
1832
1685
  }
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;
1859
- }
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);
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);
1694
+ }
1695
+ return result;
1892
1696
  });
1893
- };
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];
1905
- }
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;
1906
1720
  }
1907
1721
  }
1908
- }
1722
+ });
1723
+ executeCallback(promise, callback);
1724
+ return promise;
1909
1725
  }
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);
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;
1735
+ }
1736
+ if (result) {
1737
+ result = result.substring(dbInfo.keyPrefix.length);
1738
+ }
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));
1922
1754
  }
1923
1755
  }
1924
- }
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() {
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() {
1773
+ var dbInfo = self2._dbInfo;
1774
+ localStorage.removeItem(dbInfo.keyPrefix + key2);
1933
1775
  });
1776
+ executeCallback(promise, callback);
1777
+ return promise;
1934
1778
  }
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.");
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;
1939
1785
  }
1940
- for (var i in options) {
1941
- if (i === "storeName") {
1942
- options[i] = options[i].replace(/\W/g, "_");
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
+ }
1800
+ reject(e);
1801
+ }
1802
+ }
1803
+ });
1804
+ });
1805
+ });
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));
1943
1827
  }
1944
- if (i === "version" && typeof options[i] !== "number") {
1945
- return new Error("Database version must be a number.");
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
+ }
1946
1834
  }
1947
- this._config[i] = options[i];
1948
- }
1949
- if ("driver" in options && options.driver) {
1950
- return this.setDriver(this._config.driver);
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;
1951
1863
  }
1952
- return true;
1953
- } else if (typeof options === "string") {
1954
- return this._config[options];
1955
- } else {
1956
- return this._config;
1864
+ i++;
1957
1865
  }
1866
+ return false;
1958
1867
  };
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;
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
1890
+ };
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
+ }
1910
+ }
1911
+ }
1912
+ }
1913
+ }
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
+ }
1967
1927
  }
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") {
1928
+ }
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
+ }
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];
1952
+ }
1953
+ if ("driver" in options && options.driver) {
1954
+ return this.setDriver(this._config.driver);
1955
+ }
1956
+ return true;
1957
+ } else if (typeof options === "string") {
1958
+ return this._config[options];
1959
+ } else {
1960
+ return this._config;
1961
+ }
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) {
1973
1969
  reject(complianceError);
1974
1970
  return;
1975
1971
  }
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;
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
+ };
1984
1989
  };
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
+ }
1985
1996
  };
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);
1997
+ configureMissingMethods();
1998
+ var setDriverSupport = function setDriverSupport2(support) {
1999
+ if (DefinedDrivers[driverName]) {
2000
+ }
2001
+ DefinedDrivers[driverName] = driverObject;
2002
+ DriverSupport[driverName] = support;
2003
+ resolve();
2004
+ };
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);
1990
2010
  }
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);
2004
2011
  } else {
2005
- setDriverSupport(!!driverObject._support);
2012
+ setDriverSupport(true);
2006
2013
  }
2007
- } else {
2008
- setDriverSupport(true);
2014
+ } catch (e) {
2015
+ reject(e);
2009
2016
  }
2010
- } catch (e) {
2011
- reject(e);
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();
2039
+ }
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];
2012
2049
  }
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();
2050
+ var supportedDrivers = this._getSupportedDrivers(drivers);
2051
+ function setDriverToConfig() {
2052
+ self2._config.driver = self2.driver();
2035
2053
  }
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);
2054
+ function extendSelfWithDriver(driver) {
2055
+ self2._extend(driver);
2056
+ setDriverToConfig();
2057
+ self2._ready = self2._initStorage(self2._config);
2058
+ return self2._ready;
2059
+ }
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;
2066
2075
  }
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;
2067
2088
  setDriverToConfig();
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;
2089
+ self2._wrapLibraryMethodsWithReady();
2090
+ self2._initDriver = initDriver(supportedDrivers);
2091
+ });
2092
+ })["catch"](function() {
2084
2093
  setDriverToConfig();
2085
- self2._wrapLibraryMethodsWithReady();
2086
- self2._initDriver = initDriver(supportedDrivers);
2094
+ var error = new Error("No available storage method found.");
2095
+ self2._driverSet = Promise$1.reject(error);
2096
+ return self2._driverSet;
2087
2097
  });
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);
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
+ }
2109
2114
  }
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;
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]);
2120
+ }
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();
2129
2135
  const localforage = /* @__PURE__ */ getDefaultExportFromCjs(localforageExports);
2130
2136
  export {
2131
2137
  commonjsRequire as c,