UNPKG

@vegajs/vortex

Version:

🌀 A next-gen, lightweight state management library for JavaScript and TypeScript.

1 lines • 2.95 kB
"use strict";let __rslib_import_meta_url__="undefined"==typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,t)=>{for(var _ in t)__webpack_require__.o(t,_)&&!__webpack_require__.o(e,_)&&Object.defineProperty(e,_,{enumerable:!0,get:t[_]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{configurePersistPlugin:()=>configurePersistPlugin,persistPlugin:()=>persistPlugin});let external_constants_js_namespaceObject=require("../../constants.js"),index_js_namespaceObject=require("../../utils/index.js"),external_adapters_index_js_namespaceObject=require("./adapters/index.js"),persistPluginGlobalSetting={isReady:!1,globalStorage:null},configurePersistPlugin=({globalStorage:e=new external_adapters_index_js_namespaceObject.MemoryStorage})=>{if(persistPluginGlobalSetting.isReady)throw Error("Persist plugin is already configured");persistPluginGlobalSetting.globalStorage=e,persistPluginGlobalSetting.isReady=!0},persistPlugin=e=>{let{key:t,properties:_,onBeforeHydration:r,onHydrated:a,onHydrationError:s,migrations:i,version:n=0,storage:c=new external_adapters_index_js_namespaceObject.StorageAdapter(persistPluginGlobalSetting.globalStorage)}=e,o=e=>{let o=e.getSnapshot(),l=_?Array.from(new Set(_)):(0,index_js_namespaceObject.toObjectKeys)(o).filter(e=>!["function","undefined"].includes(typeof o[e])),p=t=>l.reduce((_,r)=>{let a=t[r];return void 0!==a&&(_[r]=(0,index_js_namespaceObject.isQuery)(e.state[r])?e.state[r].value.data:a),_},{});(async()=>{try{let _;r?.();let s=await c.getItem(t);if(s){let r=s.version;if(_=s.data,i&&r<n){for(let e=r;e<n;e++){let t=i[e];t&&(_=t(_))}c.setItem(t,{version:n,data:_})}e.action(e=>{(0,index_js_namespaceObject.toObjectKeys)(_).forEach(t=>{let r=_[t];(0,index_js_namespaceObject.isReactive)(e[t])&&(e[t].value=r),console.log((0,index_js_namespaceObject.isQuery)(e[t]));let a=e[t];(0,index_js_namespaceObject.isQuery)(a)&&a.update(r)})}),a?.(_)}else c.setItem(t,{version:n,data:p(o)})}catch(e){s?.(e),c.removeItem(t)}})();let u=!1;return e.subscribe(e=>{u||(u=!0,Promise.resolve().then(()=>{c.setItem(t,{version:n,data:p(e)}),u=!1}))})};return o.pluginName=external_constants_js_namespaceObject.PERSIST_NAME,{remove:()=>c.removeItem(t),apply:o}};var __webpack_export_target__=exports;for(var __webpack_i__ in __webpack_exports__)__webpack_export_target__[__webpack_i__]=__webpack_exports__[__webpack_i__];__webpack_exports__.__esModule&&Object.defineProperty(__webpack_export_target__,"__esModule",{value:!0});