@fmal/cerebral-storage
Version:
Storage provider for Cerebral
60 lines (48 loc) • 1.75 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = StorageProvider;
var _StorageProviderError = _interopRequireDefault(require("./StorageProviderError"));
function StorageProvider(_temp) {
var _ref = _temp === void 0 ? {} : _temp,
_ref$target = _ref.target,
target = _ref$target === void 0 ? localStorage : _ref$target,
_ref$json = _ref.json,
json = _ref$json === void 0 ? true : _ref$json,
prefix = _ref.prefix;
var finalPrefix = prefix ? prefix + '.' : '';
return {
get: function get(key) {
var value = target.getItem(finalPrefix + key);
function resolveValue(value) {
if (json && value) {
return JSON.parse(value);
}
return value;
}
if (value instanceof Promise) {
return value.then(resolveValue).catch(function (error) {
throw new _StorageProviderError.default(error);
});
}
return resolveValue(value);
},
set: function set(key, value) {
var maybePromise = value === undefined ? target.removeItem(finalPrefix + key) : target.setItem(finalPrefix + key, json ? JSON.stringify(value) : value);
if (maybePromise instanceof Promise) {
return maybePromise.catch(function (error) {
throw new _StorageProviderError.default(error);
});
}
},
remove: function remove(key) {
var maybePromise = target.removeItem(finalPrefix + key);
if (maybePromise instanceof Promise) {
return maybePromise.catch(function (error) {
throw new _StorageProviderError.default(error);
});
}
}
};
}
module.exports = exports.default;