killa
Version:
State management for Vanilla and React
2 lines (1 loc) • 2.67 kB
JavaScript
;var globalThis=globalThis||{};globalThis.killaMiddlewares=(()=>{var c=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames,T=Object.getOwnPropertySymbols;var f=Object.prototype.hasOwnProperty,W=Object.prototype.propertyIsEnumerable;var g=(e,t,o)=>t in e?c(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,a=(e,t)=>{for(var o in t||(t={}))f.call(t,o)&&g(e,o,t[o]);if(T)for(var o of T(t))W.call(t,o)&&g(e,o,t[o]);return e};var R=(e,t)=>{for(var o in t)c(e,o,{get:t[o],enumerable:!0})},U=(e,t,o,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of P(t))!f.call(e,r)&&r!==o&&c(e,r,{get:()=>t[r],enumerable:!(n=h(t,r))||n.enumerable});return e};var F=e=>U(c({},"__esModule",{value:!0}),e);var M={};R(M,{normalizeStorage:()=>p,persist:()=>L});var z=Symbol.for("@@killa-subscriber"),E=Symbol.for("@@killa-store"),I=Symbol.for("@@killa-persist"),w=typeof window<"u",y=typeof document<"u";var l=()=>{},[b,x]=y&&document.addEventListener?[document.addEventListener.bind(window),document.removeEventListener.bind(window)]:[l,l],[D,O]=w&&window.addEventListener?[window.addEventListener.bind(window),window.removeEventListener.bind(window)]:[l,l],v=e=>JSON.stringify(e),_=e=>e===null?null:JSON.parse(e),S=(e,t)=>a(a({},e),t);var d=e=>btoa(encodeURIComponent(e)),C=e=>decodeURIComponent(atob(e));var p=(e,{encrypted:t=!1}={})=>{try{let o=e();return o?{getItem:n=>{let r=t?d(n):n,s=o.getItem(r),i=t&&s?C(s):s;return _(i)},setItem:(n,r)=>{let s=t?d(n):n,i=t?d(v(r)):v(r);return o.setItem(s,i)},removeItem:n=>{let r=t?d(n):n;o.removeItem(r)}}:null}catch(o){return null}},k=e=>{if(typeof e=="function")try{return e()}catch(t){return null}return e},B=e=>(D("focus",e),b("visibilitychange",e),()=>{O("focus",e),x("visibilitychange",e)}),L=e=>t=>{let o=a({name:"",storage:p(()=>window.localStorage,{encrypted:(e==null?void 0:e.encrypted)||!1}),merge:S,revalidate:!0,revalidateTimeout:200},e),n=o.name,r=k(o.storage);if((t==null?void 0:t.$$store)!==E){console.error("[Killa Persist] Provide a valid killa store to persist your store.");return}if(!n){console.error("[Killa Persist] Provide a name to persist your store.");return}if(!r){console.error("[Killa Persist] Provide a storage to persist your store.");return}let s=t.setState,i=!1;t.setState=(m,N)=>{s(m,N),r==null||r.setItem(n,t.getState())};let u=()=>{let m=r==null?void 0:r.getItem(n);t.setState(()=>a({},S(t.getState(),m))),i=!0};o.revalidate&&B(()=>{document.visibilityState==="visible"&&setTimeout(u,o.revalidateTimeout)}),u(),t.persist=Object.freeze({$$persist:I,name:n,destroy:()=>r.removeItem(n),rehydrate:()=>u(),hydrated:()=>i})};return F(M);})();