UNPKG

@piotr-cz/redux-persist-idb-storage

Version:
124 lines (106 loc) 3.11 kB
var idb = require('idb'); function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function createIdbStorage(definedOptions) { if (definedOptions === void 0) { definedOptions = {}; } /** @var {Object} */ var options = _extends({ /** Database name */ name: 'keyval-store', /** Store name */ storeName: 'keyval', /** Database version */ version: 1, /** Upgrade callback. Useful when for example switching storeName */ upgradeCallback: function upgradeCallback(upgradeDb) { return upgradeDb.createObjectStore(options.storeName); } }, definedOptions); /** @var {Promise} */ var dbPromise = idb.openDb(options.name, options.version, options.upgradeCallback); return { /** * Get * @param {string} key * @return {Promise} */ getItem: function getItem(key) { return Promise.resolve(dbPromise).then(function (db) { var tx = db.transaction(options.storeName); return tx.objectStore(options.storeName).get(key); }); }, /** * Set * @param {string} key * @param {any} item * @return {Promise} */ setItem: function setItem(key, item) { return Promise.resolve(dbPromise).then(function (db) { var tx = db.transaction(options.storeName, 'readwrite'); tx.objectStore(options.storeName).put(item, key); return tx.complete; }); }, /** * Remove * @param {string} key * @return {Promise} */ removeItem: function removeItem(key) { return Promise.resolve(dbPromise).then(function (db) { var tx = db.transaction(options.storeName, 'readwrite'); tx.objectStore(options.storeName)["delete"](key); return tx.complete; }); }, /** * Get all keys * @return {Promise} */ getAllKeys: function getAllKeys() { return Promise.resolve(dbPromise).then(function (db) { var tx = db.transaction(options.storeName); return tx.objectStore(options.storeName).getAllKeys(); }); }, /** * Get all data * @return {Promise} */ getAll: function getAll() { return Promise.resolve(dbPromise).then(function (db) { var tx = db.transaction(options.storeName); return tx.objectStore(options.storeName).getAll(); }); }, /** * Clear storage * @return {Promise} */ clear: function clear() { return Promise.resolve(dbPromise).then(function (db) { var tx = db.transaction(options.storeName, 'readwrite'); tx.objectStore(options.storeName).clear(); return tx.complete; }); } }; } module.exports = createIdbStorage; //# sourceMappingURL=redux-persist-idb-storage.js.map