@sandstack/neuron
Version:
Neuron is a lightweight framework agnostic global state manager for Javascript apps, with React support
3 lines (2 loc) • 1.7 kB
JavaScript
(function(l,u){typeof exports=="object"&&typeof module<"u"?u(exports,require("../core")):typeof define=="function"&&define.amd?define(["exports","../core"],u):(l=typeof globalThis<"u"?globalThis:l||self,u(l.persist={},l.core))})(this,function(l,u){"use strict";const S="@sandstack/neuron-persist",d=(e,r,s)=>{const a=`${S}/${r??e.key}`,c=s==="session"?"session":"local",t=JSON.stringify(e.state);c==="local"?localStorage&&localStorage.setItem(a,t):c==="session"&&sessionStorage&&sessionStorage.setItem(a,t)},h=(e,r,s)=>{const a=`${S}/${r??e.key}`,c=s==="session"?"session":"local";if(c==="local"){if(localStorage){const t=localStorage==null?void 0:localStorage.getItem(a);return t!==null?JSON.parse(t):null}}else if(c==="session"&&sessionStorage){const t=sessionStorage.getItem(a);return t!==null?JSON.parse(t):null}return null},m=e=>new u.Module({name:S,onInit:r=>{var s,a,c,t,f;if((s=e==null?void 0:e.storage)!=null&&s.getItem){const g=(c=(a=e==null?void 0:e.storage)==null?void 0:a.getItem)==null?void 0:c.call(a,r.key);g!=null&&g!=null?r.state=g:e.storage.setItem?(f=(t=e==null?void 0:e.storage)==null?void 0:t.setItem)==null||f.call(t,r.key,r.state):d(r,e==null?void 0:e.storageKey,e.storageType)}else{const g=h(r,e==null?void 0:e.storageKey,e==null?void 0:e.storageType);g!=null&&g!=null?r.state=g:d(r,e==null?void 0:e.storageKey,e==null?void 0:e.storageType)}},onCallback:r=>{var s,a;((a=(s=e==null?void 0:e.storage)==null?void 0:s.setItem)==null?void 0:a.call(s,r.key,r.state))??d(r,e==null?void 0:e.storageKey,e==null?void 0:e.storageType)}});globalThis.NeuronPersist={Persist:m},l.Persist=m,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})});
//# sourceMappingURL=persist.js.map