evx
Version:
Handy dandy persistent-state pub/sub with multi & wildcard subscriptions.
3 lines (2 loc) • 978 B
JavaScript
var t=function(t){if("object"!=typeof(n=t)||Array.isArray(n))throw"state should be an object";var n},n=function(t,n,e,r){return(c=t,c.reduce(function(t,n,e){return t.indexOf(n)>-1?t:t.concat(n)},[])).reduce(function(t,e){return t.concat(n[e]||[])},[]).map(function(t){return t(e,r)});var c},e=a(),r=e.emit,c=e.hydrate,o=e.getState;function a(e){void 0===e&&(e={});var r={};return{getState:function(){return Object.assign({},e)},hydrate:function(c){return t(c),Object.assign(e,c),function(){var t=["*"].concat(Object.keys(c));n(t,r,e)}},on:function(t,n){return(t=[].concat(t)).map(function(t){return r[t]=(r[t]||[]).concat(n)}),function(){return t.map(function(t){return r[t].splice(r[t].indexOf(n),1)})}},emit:function(c,o,a){var u=("*"===c?[]:["*"]).concat(c);(o="function"==typeof o?o(e):o)&&(t(o),Object.assign(e,o),u=u.concat(Object.keys(o))),n(u,r,e,a)}}}exports.on=e.on,exports.emit=r,exports.hydrate=c,exports.getState=o,exports.create=a;
//# sourceMappingURL=evx.js.map