UNPKG

vuex-state-storage-sync

Version:
2 lines (1 loc) 1.27 kB
import v from"deepmerge";import*as s from"shvl";function b(e){try{e.setItem&&e.setItem("__test__","1"),e.removeItem&&e.removeItem("__test__")}catch(t){throw console.warn("[vuex-state-storage-sync] Storage is not usable:",t),new Error("Invalid storage engine")}}function h(e,t){try{let r=t.getItem(e);return r?JSON.parse(r):void 0}catch(r){return}}function I(e,t,r){try{r.setItem(e,JSON.stringify(t))}catch(n){}}function M(e,t){if(t.removeItem)try{t.removeItem(e)}catch(r){console.warn("[vuex-state-storage-sync] Failed to remove state:",r)}else t.setItem(e,void 0)}function j(e,t){return Array.isArray(t)?t.reduce((r,n)=>s.set(r,n,s.get(e,n)),{}):e}function P(e){return!0}function w(e){return function(t){return e.subscribe(t)}}function k(e){e=e||{};let t=e.storage||window&&window.localStorage,r=e.key||"store";(e.assertStorage||b)(t);let n=e.merge||v,c=e.arrayMerge||e.arrayMerger||((o,i)=>i),g=e.getState||h,u=e.setState||I,A=e.removeState||M,d=e.reducer||j,l=e.filter||P,y=e.subscriber||w,f=e.rehydrated||(()=>{}),S=()=>g(r,t),a;return e.fetchBeforeUse&&(a=S()),function(o){e.fetchBeforeUse||(a=S()),typeof a=="object"&&a!==null&&(o.replaceState(e.overwrite?a:n(o.state,a,{arrayMerge:c,clone:!1})),f(o)),y(o)((i,m)=>{l(i)&&u(r,d(m,e.paths),t)})}}export{k as default};