UNPKG

@fmal/cerebral-storage

Version:

Storage provider for Cerebral

60 lines (48 loc) 1.75 kB
"use strict"; 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;