@charliehess/redux-persist
Version:
persist and rehydrate redux stores
46 lines (40 loc) • 1.61 kB
JavaScript
;
exports.__esModule = true;
exports.default = purgeStoredState;
var _constants = require('./constants');
function purgeStoredState(config, keys) {
var storage = config.storage;
var keyPrefix = config.keyPrefix !== undefined ? config.keyPrefix : _constants.KEY_PREFIX;
// basic validation
if (Array.isArray(config)) throw new Error('redux-persist: purgeStoredState requires config as a first argument (found array). An array of keys is the optional second argument.');
if (!storage) throw new Error('redux-persist: config.storage required in purgeStoredState');
if (typeof keys === 'undefined') {
// if keys is not defined, purge all keys
return new Promise(function (resolve, reject) {
storage.getAllKeys(function (err, allKeys) {
if (err) {
if (process.env.NODE_ENV !== 'production') console.warn('redux-persist: error during purgeStoredState in storage.getAllKeys');
reject(err);
} else {
resolve(purgeStoredState(config, allKeys.filter(function (key) {
return key.indexOf(keyPrefix) === 0;
}).map(function (key) {
return key.slice(keyPrefix.length);
})));
}
});
});
} else {
// otherwise purge specified keys
return Promise.all(keys.map(function (key) {
return storage.removeItem('' + keyPrefix + key, warnIfRemoveError(key));
}));
}
}
function warnIfRemoveError(key) {
return function removeError(err) {
if (err && process.env.NODE_ENV !== 'production') {
console.warn('Error storing data for key:', key, err);
}
};
}