UNPKG

mute8

Version:
8 lines (6 loc) 1.58 kB
'use strict'; var u=Object,h=JSON,p=h.stringify,S=o=>h.parse(p(o)),A=u.freeze,d=u.assign,g=u.entries,x=u.defineProperty,T="mut",P=()=>({BI:o=>o,BU:o=>o,AC:()=>{}}),y=class o{id=0;c={};s;p;ps;constructor(t,e){this.p=e??P(),this.s=A(this.p.BI(t));}destroy(){this.ps?.destroy(),this.ps=null;}sanp(){return this.s}sub(t){let e=this.id++;return this.c[e]=t,{destroy:()=>delete this.c[e]}}mut(t,e,n){let s=t;this.ps||(s=this.p.BU(d(S(this.s),t))),p(this.s)!==p(s)&&(this.p.AC(this.s,s,e,n),this.s=A(s),u.keys(this.c).forEach(a=>this.c[a](this.s)));}set(t,e){let n="set."+t,s=t===T?e:{[t]:e};this.mut(s,n,[e]);}select(t){let e=new o(t(this.sanp()));return e.ps=this.sub(n=>e.mut(t(n))),e}},b=class o{p;s;constructor(t){this.s=new y(t.value);let e=v(t.async??{},(r,i)=>async(...c)=>await i.bind(this.p)(...c)),n=v(t.actions??{},(r,i)=>(...c)=>this.mut(l=>i.bind(l)(...c),r,c)),s=this;this.p={snap:()=>s.s.sanp(),sub:r=>s.s.sub(r),select:r=>s.s.select(r),actions:n,async:e,set mut(r){s.s.set(T,r);},get mut(){return s.mut.bind(s)}};let a=t.plugin?.(this.p)??P();this.s=new y(t.value,a);}mut(t,e,n){let s=S(this.s.sanp());t(s),this.s.mut(s,e,n??t);}static build(t,e){let n=new o(t),s=e?{[e.name]:e.init(n)}:{},a=d(s,n.p),r={};for(let[i,c]of g(t.value))x(r,i,{get(){return n.s.sanp()[i]},set(l){n.s.set(i,l);}});return x(r,T,{get(){return n.mut.bind(n)},set(i){n.s.set(T,i);}}),A(d(r,a))}},v=(o,t)=>{let e={};return g(o).forEach(([n,s])=>e[n]=t(n,s)),A(e)},f=b.build,m=o=>f(o); exports.buildProxy = f; exports.newStore = m; //# sourceMappingURL=out.js.map //# sourceMappingURL=mute8.cjs.map