UNPKG

ng2-webstorage

Version:
102 lines 3.94 kB
import { STORAGE } from '../enums/storage'; import { StorageObserverHelper } from './storageObserver'; import { KeyStorageHelper } from './keyStorage'; import { MockStorageHelper } from './mockStorage'; import { STORAGE_NAMES } from '../constants/lib'; var CACHED = (_a = {}, _a[STORAGE.local] = {}, _a[STORAGE.session] = {}, _a); var STORAGEAVAILABILITY = (_b = {}, _b[STORAGE.local] = null, _b[STORAGE.session] = null, _b); var WebStorageHelper = (function () { function WebStorageHelper() { } WebStorageHelper.store = function (sType, sKey, value) { this.getStorage(sType).setItem(sKey, JSON.stringify(value)); CACHED[sType][sKey] = value; StorageObserverHelper.emit(sType, sKey, value); }; WebStorageHelper.retrieve = function (sType, sKey) { if (CACHED[sType][sKey]) return CACHED[sType][sKey]; return CACHED[sType][sKey] = WebStorageHelper.retrieveFromStorage(sType, sKey); }; WebStorageHelper.retrieveFromStorage = function (sType, sKey) { var data = null; try { data = JSON.parse(this.getStorage(sType).getItem(sKey)); } catch (err) { console.warn("invalid value for " + sKey); } return data; }; WebStorageHelper.refresh = function (sType, sKey) { if (!KeyStorageHelper.isManagedKey(sKey)) return; var value = WebStorageHelper.retrieveFromStorage(sType, sKey); if (value === null) { delete CACHED[sType][sKey]; StorageObserverHelper.emit(sType, sKey, null); } else if (value !== CACHED[sType][sKey]) { CACHED[sType][sKey] = value; StorageObserverHelper.emit(sType, sKey, value); } }; WebStorageHelper.clearAll = function (sType) { var storage = this.getStorage(sType); KeyStorageHelper.retrieveKeysFromStorage(storage) .forEach(function (sKey) { storage.removeItem(sKey); delete CACHED[sType][sKey]; StorageObserverHelper.emit(sType, sKey, null); }); }; WebStorageHelper.clear = function (sType, sKey) { this.getStorage(sType).removeItem(sKey); delete CACHED[sType][sKey]; StorageObserverHelper.emit(sType, sKey, null); }; WebStorageHelper.getStorage = function (sType) { if (this.isStorageAvailable(sType)) return this.getWStorage(sType); else return MockStorageHelper.getStorage(sType); }; WebStorageHelper.getWStorage = function (sType) { var storage; switch (sType) { case STORAGE.local: storage = localStorage; break; case STORAGE.session: storage = sessionStorage; break; default: throw Error('invalid storage type'); } return storage; }; WebStorageHelper.isStorageAvailable = function (sType) { if (typeof STORAGEAVAILABILITY[sType] === 'boolean') return STORAGEAVAILABILITY[sType]; var isAvailable = true, storage; try { storage = this.getWStorage(sType); if (typeof storage === 'object') { storage.setItem('test-storage', 'foobar'); storage.removeItem('test-storage'); } else isAvailable = false; } catch (e) { isAvailable = false; } if (!isAvailable) console.warn(STORAGE_NAMES[sType] + " storage unavailable, Ng2Webstorage will use a fallback strategy instead"); return STORAGEAVAILABILITY[sType] = isAvailable; }; return WebStorageHelper; }()); export { WebStorageHelper }; var _a, _b; //# sourceMappingURL=webStorage.js.map