{"version":3,"names":["System","register","_export","_context","__SystemJSRewritingHack","db","focalStorage","DEFAULT_SETTINGS","openDatabase","Promise","resolve","reject","openreq","indexedDB","open","settings","name","version","onsuccess","_recorder_","_src_external_focalStorage_js","result","onupgradeneeded","createObjectStore","storeName","onerror","error","openStore","type","then","transaction","objectStore","openTransaction","getItem","key","store","req","get","value","undefined","catch","getItems","getAll","setItem","console","warn","String","put","oncomplete","onabort","removeItem","delete","clear","length","callback","count","n","advanced","openCursor","cursor","advance","keys","push","continue","config","Object","assign","setters","execute","defineProperty","set","thisIsVererySecretVariableName","enumerable","configurable","INDEXEDDB","LOCALSTORAGE","driver"],"sources":["focalStorage.js"],"sourcesContent":["/* globals indexedDB */\n/**\n * focalStorage\n *\n * A Promise-based, localStorage-like wrapper around IndexedDB.\n *\n * -\n *\n * Borrowed lots of code from\n *\n * https://github.com/mozilla/localForage/blob/080f665/src/drivers/indexeddb.js and\n * https://github.com/mozilla-b2g/gaia/blob/12d71f3/shared/js/async_storage.js\n *\n * -\n *\n * This file defines an asynchronous version of the localStorage API, backed by\n * an IndexedDB database. It creates a focalStorage object that has methods\n * like the localStorage object's.\n *\n * To store a value use setItem:\n *\n *   focalStorage.setItem('key', 'value');\n *\n * If you want confirmation that the value has been stored, pass a callback\n * function as the third argument:\n *\n *  focalStorage.setItem('key', 'newvalue').then(function () {\n *    console.log('new value stored');\n *  });\n *\n * To read a value, call getItem(), but note that you must supply a callback\n * function that the value will be passed to asynchronously:\n *\n *  focalStorage.getItem('key').then(function (value) {\n *    console.log('The value of key is:', value);\n *  });\n *\n * Note that unlike localStorage, focalStorage does not allow you to store and\n * retrieve values by setting and querying properties directly. You cannot just\n * write focalStorage.key; you have to explicitly call setItem() or getItem().\n *\n * removeItem(), clear(), length(), and key() are like the same-named methods of\n * localStorage, but, like getItem() and setItem() they take a callback\n * argument.\n *\n * The asynchronous nature of getItem() makes it tricky to retrieve multiple\n * values. But unlike localStorage, focalStorage does not require the values you\n * store to be strings. So if you need to save multiple values and want to\n * retrieve them together, in a single asynchronous operation, just group the\n * values into a single object. The properties of this object may not include\n * DOM elements, but they may include things like Blobs and typed arrays.\n */\n\n'use strict';\n\nvar db = null;\n\nfunction openDatabase() {\n  return new Promise(function (resolve, reject) {\n    if (db) {\n      resolve(db);\n      return;\n    }\n\n    var openreq = indexedDB.open(focalStorage.settings.name,\n                                 focalStorage.settings.version);\n\n    openreq.onsuccess = function () {\n      db = openreq.result;\n      resolve(db);\n    };\n\n    openreq.onupgradeneeded = function () {\n      // First time setup: create an empty object store.\n      openreq.result.createObjectStore(focalStorage.settings.storeName);\n    };\n\n    openreq.onerror = function () {\n      reject(openreq.error);\n    };\n  });\n}\n\nfunction openStore(type) {\n  return openDatabase().then(function () {\n    var transaction = db.transaction(focalStorage.settings.storeName, type);\n\n    return transaction.objectStore(focalStorage.settings.storeName);\n  });\n}\n\nfunction openTransaction(type) {\n  return openDatabase().then(function () {\n    return db.transaction(focalStorage.settings.storeName, type);\n  });\n}\n\nfunction getItem(key) {\n  return new Promise(function (resolve, reject) {\n    return openStore('readonly').then(function (store) {\n      var req = store.get(key);\n\n      req.onsuccess = function () {\n        var value = req.result;\n        if (value === undefined) {\n          value = null;\n        }\n\n        resolve(value);\n      };\n\n      req.onerror = function () {\n        reject(req.error);\n      };\n    }).catch(reject);\n  });\n}\n\nfunction getItems() {\n  return new Promise(function (resolve, reject) {\n    return openStore('readonly').then(function (store) {\n      var req = store.getAll();\n\n      req.onsuccess = function () {\n        var value = req.result;\n        if (value === undefined) {\n          value = null;\n        }\n\n        resolve(value);\n      };\n\n      req.onerror = function () {\n        reject(req.error);\n      };\n    }).catch(reject);\n  });\n}\n\nfunction setItem(key, value) {\n  return new Promise(function (resolve, reject) {\n    return openTransaction('readwrite').then(function (transaction) {\n\n      var store = transaction.objectStore(focalStorage.settings.storeName);\n\n      // Cast the key to a string, as that's all we can set as a key.\n      if (typeof key !== 'string') {\n        console.warn(key + ' used as a key, but it is not a string');\n        key = String(key);\n      }\n\n      // The reason we don't _save_ null is because IE 10 does\n      // not support saving the `null` type in IndexedDB.\n      if (value === null) {\n        value = undefined;\n      }\n\n      var req = store.put(value, key);\n\n      transaction.oncomplete = function () {\n        // Cast to undefined so the value passed to\n        // callback/promise is the same as what one would get out\n        // of `getItem()` later. This leads to some weirdness\n        // (setItem('foo', undefined) will return `null`), but\n        // it's not my fault localStorage is our baseline and that\n        // it's weird.\n        if (value === undefined) {\n          value = null;\n        }\n\n        resolve(value);\n      };\n\n      transaction.onabort = transaction.onerror = function () {\n        reject(req.error ? req.error : req.transaction.error);\n      };\n    }).catch(reject);\n  });\n}\n\nfunction removeItem(key) {\n  return new Promise(function (resolve, reject) {\n    return openTransaction('readwrite').then(function (transaction) {\n      var store = transaction.objectStore(focalStorage.settings.storeName);\n\n      // Cast the key to a string, as that's all we can set as a key.\n      if (typeof key !== 'string') {\n        console.warn(key + ' used as a key, but it is not a string');\n        key = String(key);\n      }\n\n      var req = store.delete(key);\n\n      transaction.oncomplete = function () {\n        resolve();\n      };\n\n      transaction.onerror = function () {\n        reject(req.error);\n      };\n\n      // The request will also be aborted if storage space is exceeded.\n      transaction.onabort = function () {\n        reject(req.error ? req.error : req.transaction.error);\n      };\n    }).catch(reject);\n  });\n}\n\nfunction clear() {\n  return new Promise(function (resolve, reject) {\n    return openTransaction('readwrite').then(function (transaction) {\n      var store = transaction.objectStore(focalStorage.settings.storeName);\n\n      var req = store.clear();\n\n      transaction.oncomplete = function () {\n        resolve();\n      };\n\n      transaction.onabort = transaction.onerror = function () {\n        reject(req.error ? req.error : req.transaction.error);\n      };\n    }).catch(reject);\n  });\n}\n\nfunction length(callback) {\n  return new Promise(function (resolve, reject) {\n    openStore('readonly').then(function (store) {\n      var req = store.count();\n\n      req.onsuccess = function () {\n        resolve(req.result);\n      };\n\n      req.onerror = function () {\n        reject(req.error);\n      };\n    }).catch(reject);\n  });\n}\n\nfunction key(n) {\n  return new Promise(function (resolve, reject) {\n    if (n < 0) {\n      resolve(null);\n      return;\n    }\n\n    return openStore('readonly').then(function (store) {\n      var advanced = false;\n      var req = store.openCursor();\n\n      req.onsuccess = function () {\n        var cursor = req.result;\n\n        if (!cursor) {\n          // This means there weren't enough keys.\n          resolve(null);\n          return;\n        }\n\n        if (n === 0) {\n          // We have the first key; return it if that's what they wanted.\n          resolve(cursor.key);\n        } else {\n          if (!advanced) {\n            // Otherwise, ask the cursor to skip ahead `n` records.\n            advanced = true;\n            cursor.advance(n);\n          } else {\n            // When we get here, we've got the nth key.\n            resolve(cursor.key);\n          }\n        }\n      };\n\n      req.onerror = function () {\n        reject(req.error);\n      };\n    }).catch(reject);\n  });\n}\n\nfunction keys() {\n  return new Promise(function (resolve, reject) {\n    return openStore('readonly').then(function (store) {\n      var req = store.openCursor();\n      var keys = [];\n\n      req.onsuccess = function () {\n        var cursor = req.result;\n\n        if (!cursor) {\n          resolve(keys);\n          return;\n        }\n\n        keys.push(cursor.key);\n        cursor.continue();\n      };\n\n      req.onerror = function () {\n        reject(req.error);\n      };\n\n    }).catch(reject);\n  });\n}\n\n/**\n * Assigns configurations.\n * @param {Object} settings Options object to use for `focalStorage` instance.\n */\nfunction config(settings) {\n  focalStorage.settings = Object.assign({}, DEFAULT_SETTINGS, settings || {});\n}\n\nvar focalStorage = {\n  INDEXEDDB: 0,\n  LOCALSTORAGE: 1,\n  getItem: getItem,\n  getItems: getItems,\n  setItem: setItem,\n  removeItem: removeItem,\n  clear: clear,\n  length: length,\n  key: key,\n  keys: keys\n};\n\nvar DEFAULT_SETTINGS = {\n  driver: focalStorage.indexedDB,\n  name: 'focalStorage',\n  version: 1,\n  storeName: 'keyvaluepairs',\n};\n\nfocalStorage.settings = DEFAULT_SETTINGS;\n\nexport default focalStorage;"],"mappings":"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"}