effector-persist
Version:
Higher-order function for persist effector store in local storage
28 lines • 925 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.withPersist = void 0;
const effector_1 = require("effector");
const defaultConfig = {
key: 'persist'
};
const withPersist = (store, config = defaultConfig) => {
const name = store.shortName;
const { key, expire } = config;
const persistKey = `${key}:${name}`;
const rehydrate = (0, effector_1.createEvent)('@PERSIST/REHYDRATE');
if (expire && isExpired(expire)) {
localStorage.removeItem(persistKey);
}
const snapshot = localStorage.getItem(persistKey);
if (snapshot) {
store.on(rehydrate, () => JSON.parse(snapshot));
rehydrate();
}
store.watch((state) => {
localStorage.setItem(persistKey, JSON.stringify(state));
});
return store;
};
exports.withPersist = withPersist;
const isExpired = (expire) => expire < Date.now();
//# sourceMappingURL=index.js.map