"use strict";

/**
 * @flow
 * @private
 */

// When there is no native storage interface, we default to an in-memory map
const memMap = {};
const StorageController = {
  async: 0,
  getItem(path /*: string*/) /*: ?string*/{
    if (memMap.hasOwnProperty(path)) {
      return memMap[path];
    }
    return null;
  },
  setItem(path /*: string*/, value /*: string*/) {
    memMap[path] = String(value);
  },
  removeItem(path /*: string*/) {
    delete memMap[path];
  },
  getAllKeys() {
    return Object.keys(memMap);
  },
  clear() {
    for (const key in memMap) {
      if (memMap.hasOwnProperty(key)) {
        delete memMap[key];
      }
    }
  }
};
module.exports = StorageController;