pinia-persist
Version:
Persist and rehydrate your Pinia state between page reloads
2 lines (1 loc) • 1.24 kB
JavaScript
;function t(t,r,e,i){return!/^(__proto__|constructor|prototype)$/.test(r)&&((r=r.split?r.split("."):r.slice(0)).slice(0,-1).reduce((function(t,r){return t[r]=t[r]||{}}),t)[r.pop()]=e),t}function r(t,r,e,i){var n,o;return null!==(o=null!==(n=r[e])&&void 0!==n?n:t[e])&&void 0!==o?o:i}Object.defineProperty(exports,"__esModule",{value:!0});exports.createPersistPlugin=function(e){var i=window&&window.localStorage,n=null!=e?e:{};return function(e){var o,u,s,l=null!==(u=null===(o=e.options)||void 0===o?void 0:o.persist)&&void 0!==u?u:{},c=null!==(s=l.key)&&void 0!==s?s:e.store.$id,a=r(n,l,"overwrite",!1),d=r(n,l,"storage",i),f=r(n,l,"filter",(function(){return!0})),p=r(n,l,"serialization",JSON.stringify),v=r(n,l,"deserialization",JSON.parse);try{var y=d.getItem(c);if(null!==y){var h=v(y);a?e.store.$state=h:e.store.$patch(h)}}catch(t){}e.store.$subscribe((function(r,e){if(!1!==f(r,e)){Array.isArray(l.includePaths)?e=l.includePaths.reduce((function(r,i){return t(r,i,function(t,r,e){return void 0===(t=(r.split?r.split("."):r).reduce((function(t,r){return t&&t[r]}),t))?e:t}(e,i))}),{}):Array.isArray(l.excludePaths)&&(e=v(p(e)),l.excludePaths.forEach((function(r){return t(e,r,void 0)}),{}));var i=p(e);d.setItem(c,i)}}))}};