vuex-state-storage-sync
Version:
Synchronization of vuex state and storage
2 lines (1 loc) • 1.88 kB
JavaScript
var M=Object.create;var i=Object.defineProperty;var j=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var w=Object.getPrototypeOf,A=Object.prototype.hasOwnProperty;var _=(e,t)=>{for(var r in t)i(e,r,{get:t[r],enumerable:!0})},u=(e,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of P(t))!A.call(e,n)&&n!==r&&i(e,n,{get:()=>t[n],enumerable:!(a=j(t,n))||a.enumerable});return e};var d=(e,t,r)=>(r=e!=null?M(w(e)):{},u(t||!e||!e.__esModule?i(r,"default",{value:e,enumerable:!0}):r,e)),k=e=>u(i({},"__esModule",{value:!0}),e);var R={};_(R,{default:()=>N});module.exports=k(R);var l=d(require("deepmerge")),S=d(require("shvl"));function F(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 x(e,t){try{let r=t.getItem(e);return r?JSON.parse(r):void 0}catch(r){return}}function O(e,t,r){try{r.setItem(e,JSON.stringify(t))}catch(a){}}function B(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 U(e,t){return Array.isArray(t)?t.reduce((r,a)=>S.set(r,a,S.get(e,a)),{}):e}function E(e){return!0}function J(e){return function(t){return e.subscribe(t)}}function N(e){e=e||{};let t=e.storage||window&&window.localStorage,r=e.key||"store";(e.assertStorage||F)(t);let a=e.merge||l.default,n=e.arrayMerge||e.arrayMerger||((s,c)=>c),y=e.getState||x,f=e.setState||O,G=e.removeState||B,m=e.reducer||U,v=e.filter||E,b=e.subscriber||J,h=e.rehydrated||(()=>{}),g=()=>y(r,t),o;return e.fetchBeforeUse&&(o=g()),function(s){e.fetchBeforeUse||(o=g()),typeof o=="object"&&o!==null&&(s.replaceState(e.overwrite?o:a(s.state,o,{arrayMerge:n,clone:!1})),h(s)),b(s)((c,I)=>{v(c)&&f(r,m(I,e.paths),t)})}}
;