text: // A simple key value store that uses LocalStorage
  let safeLocalStorage;
  
  try {
    safeLocalStorage = localStorage;
    if (localStorage["disableLocalStorage"] === "true") {
      safeLocalStorage = null;
    } else {
      // makes sure we can write to the local storage
      safeLocalStorage["safeLocalStorage"] = true;
    }
  } catch (e) {
    // cookies disabled, we don't care
    safeLocalStorage = null;
  }
  
  const KeyValueStore = function(ctx) {
    this.context = ctx;
  };
  
  KeyValueStore.prototype = {
    abandonLocal() {
      if (!safeLocalStorage) { return; }
  
      let i = safeLocalStorage.length - 1;
      while (i >= 0) {
        let k = safeLocalStorage.key(i);
        if (k.substring(0, this.context.length) === this.context) {
          safeLocalStorage.removeItem(k);
        }
        i--;
      }
      return true;
    },
  
    remove(key) {
      if (!safeLocalStorage) { return; }
      return safeLocalStorage.removeItem(this.context + key);
    },
  
    set(opts) {
      if (!safeLocalStorage) { return false; }
      safeLocalStorage[this.context + opts.key] = opts.value;
    },
  
    setObject(opts) {
      this.set({ key: opts.key, value: JSON.stringify(opts.value) });
    },
  
    get(key) {
      if (!safeLocalStorage) { return null; }
      return safeLocalStorage[this.context + key];
    },
  
    getInt(key, def) {
      if (!def) { def = 0; }
      if (!safeLocalStorage) { return def; }
      const result = parseInt(this.get(key));
      if (!isFinite(result)) { return def; }
      return result;
    },
  
    getObject(key) {
      if (!safeLocalStorage) { return null; }
      try { return JSON.parse(safeLocalStorage[this.context + key]); }
      catch (e) { }
    }
  };
  
  // API compatibility with `localStorage`
  KeyValueStore.prototype.getItem = KeyValueStore.prototype.get;
  KeyValueStore.prototype.removeItem = KeyValueStore.prototype.remove;
  KeyValueStore.prototype.setItem = function(key, value) {
    this.set({ key, value });
  };
  
  export default KeyValueStore;
  