almy
Version:
Store for a simple state management
1 lines • 883 B
JavaScript
var t={},e={},r={create:function(){t={},e={}},state:function(e){return e?t[e]:t},dispatch:function r(o,n,i,f,p){if(o&&"string"==typeof o){for(var c=o.split("->"),l=0;l<c.length;++l){var a=c[l];if("__proto__"===a||"constructor"===a||"prototype"===a)return}if(!Object.prototype.hasOwnProperty.call(t,o)||t[o]!==n||i){if(t[o]=n,e[o])for(var s=0;s<e[o].length;++s)e[o][s](n);if("object"==typeof n&&null!==n&&!f)for(var u in n)Object.prototype.hasOwnProperty.call(n,u)&&r(o+"->"+u,n[u],i,!1,!0);if(!p&&c.length>1){var y=c[c.length-1],h=c.slice(0,-1).join("->");t[h]&&"object"==typeof t[h]||(t[h]={}),t[h][y]=n,r(h,t[h],!0,!0,!1)}}}},subscribe:function(r,o){if(r&&"string"==typeof r)return e[r]||(e[r]=[]),e[r].push(o),Object.prototype.hasOwnProperty.call(t,r)&&o(t[r]),function(){if(e[r]){var t=e[r].indexOf(o);-1!==t&&(e[r].splice(t,1),0===e[r].length&&delete e[r])}}}};module.exports=r;