"use strict";

var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
/**
 * @flow
 * @private
 */

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