loadax
Version:
Universal powerful solution for creating web app
1 lines • 874 B
JavaScript
(()=>{const r="LOADAX_RESTORE_ACTION",c={state:{},resetStore(e){c.state=e},updateState(e,t,s){e=e.split(".").reverse();c.storeAction(c.state,e,e.length-1,t,s)},storeAction(e={},t,s,a,o){try{e[t[s]]=0<s?Object.defineProperties(e[t[s]],{}):a,0<s&&c.storeAction(e[t[s]],t,s-1,a)}catch(e){o.postMessage(r)}}};addEventListener("message",e=>{var{namespace:t,payload:s}=e.data;if("LOADAX_UST_REGISTER"!==t)if(t!==r){if("sync"!==t)if(Array.isArray(e.data))for(var a of e.data)c.updateState(a.namespace,a.payload,e.source);else void 0===t&&void 0===s?console.error("message body must contain { namespace, payload } signature"):"string"!=typeof t?console.error('namespace must be string with root: "object" or "object.props"'):c.updateState(t,s,e.source);e.source.postMessage(c.state)}else console.warn("LOADAX: Store rescue emit"),c.resetStore(s),e.source.postMessage(c.state)})})();