@sandstack/neuron
Version:
Neuron is a lightweight framework agnostic global state manager for Javascript apps, with React support
53 lines (52 loc) • 1.95 kB
JavaScript
import { Module as f } from "../core";
const S = "@sandstack/neuron-persist", u = (e, a, c) => {
const r = `${S}/${a ?? e.key}`, l = c === "session" ? "session" : "local", s = JSON.stringify(e.state);
l === "local" ? localStorage && localStorage.setItem(r, s) : l === "session" && sessionStorage && sessionStorage.setItem(r, s);
}, m = (e, a, c) => {
const r = `${S}/${a ?? e.key}`, l = c === "session" ? "session" : "local";
if (l === "local") {
if (localStorage) {
const s = localStorage == null ? void 0 : localStorage.getItem(r);
return s !== null ? JSON.parse(s) : null;
}
} else if (l === "session" && sessionStorage) {
const s = sessionStorage.getItem(r);
return s !== null ? JSON.parse(s) : null;
}
return null;
}, h = (e) => new f({
name: S,
onInit: (a) => {
var c, r, l, s, g;
if ((c = e == null ? void 0 : e.storage) != null && c.getItem) {
const t = (l = (r = e == null ? void 0 : e.storage) == null ? void 0 : r.getItem) == null ? void 0 : l.call(r, a.key);
t != null && t != null ? a.state = t : e.storage.setItem ? (g = (s = e == null ? void 0 : e.storage) == null ? void 0 : s.setItem) == null || g.call(s, a.key, a.state) : u(
a,
e == null ? void 0 : e.storageKey,
e.storageType
);
} else {
const t = m(
a,
e == null ? void 0 : e.storageKey,
e == null ? void 0 : e.storageType
);
t != null && t != null ? a.state = t : u(
a,
e == null ? void 0 : e.storageKey,
e == null ? void 0 : e.storageType
);
}
},
onCallback: (a) => {
var c, r;
((r = (c = e == null ? void 0 : e.storage) == null ? void 0 : c.setItem) == null ? void 0 : r.call(c, a.key, a.state)) ?? u(a, e == null ? void 0 : e.storageKey, e == null ? void 0 : e.storageType);
}
});
globalThis.NeuronPersist = {
Persist: h
};
export {
h as Persist
};
//# sourceMappingURL=persist.js.map