export default class LocalStorage { constructor(types) { this._types = types; this._state = {}; Object.keys(types).forEach((k) => { this._state[k] = null; }); } state() { Object.keys(this._types).forEach((k) => { const v = localStorage.getItem(k); this._state[k] = v; if (v !== null) { try { const p = new this._types[k](JSON.parse(v)); this._state[k] = p; } catch (e) { localStorage.removeItem(k); } } }); return this._state; } sync(state) { Object.keys(this._types).forEach((k) => { const v = state[k]; if (v === null) { localStorage.removeItem(k); return; } if (this._state[k] !== v) { this._state[k] = v; localStorage.setItem(k, JSON.stringify(v)); } }); } }