tilia
Version:
🍃 State management library, domain-driven.
3 lines (2 loc) • 7.27 kB
JavaScript
var te=function(e){throw new Error(e)},N=function(e){return Symbol.for("tilia:"+e)},I=N("indexKey"),J=N("metaKey"),A=N("dynamicKey"),ue=N("ctx"),G=function(e){if(typeof e=="object"&&e!==null){let n=Object.getPrototypeOf(e);return n===Object.prototype||n===Array.prototype||n===null}return!1},x=function(e){return typeof e=="object"&&e!==null&&e[A]?e:void 0};function oe(e,n){var r=Object.getOwnPropertyDescriptor(e,n);return r==null?!1:r.writable===!1}function H(e,n){var r=e.get(n);if(r!=null)return r;var t={state:"Pristine",key:n,observed:e,observers:new Set};return e.set(n,t),t}function Q(e){if(e.expired.size>0)for(;e.expired.size>0;){var n=e.expired;e.expired=new Set,n.forEach(function(t){t.notify()})}var r=e.gc;if(r.active.size>=r.threshold){r.quarantine.forEach(function(t){if(t.state==="Pristine"&&t.observers.size===0){t.state="Cleared",t.observed.delete(t.key);return}}),r.quarantine=r.active,r.active=new Set;return}}function M(e){var n=e.root;e.observing.forEach(function(t){if(t.state==="Pristine"&&t.observers.delete(e)&&t.observers.size===0){n.gc.active.add(t);return}});var r=n.observer;if(!(r==null||r!==e))return n.observer=void 0,n.lock?void 0:Q(n)}function B(e,n){e.observing.find(function(i,f){var u=i.state;switch(u){case"Pristine":return i.observers.add(e),!1;case"Changed":case"Cleared":break}if(n)return M(e),e.notify(),!0;var s=H(i.observed,i.key);return s.observers.add(e),e.observing[f]=s,!1});var r=e.root,t=r.observer;if(!(t==null||t!==e))return r.observer=void 0,r.lock?void 0:Q(r)}function $(e,n,r){var t=n.get(r);if(t!=null){n.delete(r),t.state="Changed";var i=e.expired;t.observers.forEach(function(u){M(u),i.add(u)});var f=e.observer;if(f==null&&!e.lock)return Q(e)}}function L(e,n,r,t,i,f,u,s,p){for(;;){var R=p,v=s,d=f,h=Reflect.has(u,v),o=Reflect.get(u,v),c=G(R),a;if(c){var l=Reflect.get(R,J);a=l==null?o===R:l.target===o}else a=o===R;if(a)return!0;if(!Reflect.set(u,v,R))return!1;var g=i&&v==="length"?I:v;if(c&&r.delete(g),!d){var w=t.get(g);w==null||(t.delete(g),w())}var T=x(R);if(T!=null){var E=n.get(g);if(E==null||!(E.state==="Pristine"&&E.observers.size>0))return!0;Reflect.set(u,g,o);var j=function(_){return function(b){return ie(e,n,r,t,i,u,_,b)}}(g),k=function(_){return function(b){L(e,n,r,t,i,!0,u,_,b)}}(g),V=function(_){for(;;){var O=_,b=x(O);if(b==null)return O;var C;switch(b.TAG){case"Computed":C=j(b._0);break;case"Source":var y=b._0,P=y.value,q={contents:P},D=function(z){return function(K){z.contents=K,k(K)}}(q),W=y.source;C=j((D(P),function(z,F){return function(){return F(D),z.contents}}(q,W)));break;case"Store":var m=b._0;C=j(function(z){return function(){return z(k)}}(m));break;case"Compiled":var X=b._0.rebuild;C=X();break}if(!G(C))return C;_=C}},U=V(R);p=U,s=g,f=!0;continue}return $(e,n,g),h||$(e,n,I),!0}}function ie(e,n,r,t,i,f,u,s){var p={v:void 0},R={o:void 0},v={rebuild:void 0},d={TAG:"Compiled",_0:v};Reflect.set(d,A,!0);var h=function(){var a=Reflect.get(f,u);a!==d&&(p.v=a);var l=n.get(u);if(l!=null){l.observers.size>0?L(e,n,r,t,i,!0,f,u,o()):(l.state="Changed",n.delete(u),r.delete(u),Reflect.set(f,u,d));return}r.delete(u),Reflect.set(f,u,d)},o=function(){var a=Reflect.get(f,u);a===d?Reflect.set(f,u,p.v):p.v=a;var l=[],g={root:e,notify:h,observing:l};R.o=g;var w=e.observer;e.observer=g;var T=s();return e.observer=w,l.length===0?(M(g),t.delete(u)):B(g,!1),T};v.rebuild=o;var c=function(){var a=R.o;a!=null&&(M(a),a.observing.length=0)};return t.set(u,c),o()}function ee(e,n){for(;;){var r=n,t=new Map,i=new Map,f=new Map,u=Reflect.get(r,J);if(u!=null){if(u.root===e)return u;n=u.target;continue}var s={root:e,target:r,observed:i,proxied:t,computes:f},p=Array.isArray(r),R=new Proxy(r,{set:function(v,d,h,o){return function(c,a,l){return L(e,d,v,h,o,!1,c,a,l)}}(t,i,f,p),deleteProperty:function(v,d,h){return function(o,c){var a=Reflect.deleteProperty(o,c);v.delete(c);var l=h.get(c);return l==null||(h.delete(c),l()),$(e,d,c),a}}(t,i,f),get:function(v,d,h,o){return function(c,a){if(a===J)return s;if(a!==A){var l=Reflect.get(c,a),g=Object.hasOwn(c,a);if(!(l===void 0||g))return l;var w=e.observer;if(w!=null)if(o&&a==="length"){var T=H(d,I);w.observing.push(T)}else{var E=H(d,a);w.observing.push(E)}if(!(G(l)&&!oe(c,a)))return l;var j=v.get(a);if(j!=null)return j.proxy;var k=function(b){return ie(e,d,v,h,o,c,a,b)},V=function(b){L(e,d,v,h,o,!0,c,a,b)},U=function(b){for(;;){var C=b,y=x(C);if(y==null)return C;var P;switch(y.TAG){case"Computed":P=k(y._0);break;case"Source":var q=y._0,D=q.value,W={contents:D},m=function(K){return function(re){K.contents=re,V(re)}}(W),X=q.source;P=k((m(D),function(K,ne){return function(){return ne(m),K.contents}}(W,X)));break;case"Store":var z=y._0;P=k(function(K){return function(){return K(V)}}(z));break;case"Compiled":var F=y._0.rebuild;P=F();break}if(!G(P))return P;b=P}},_=U(l);if(Reflect.set(c,a,_),!G(_))return _;var O=ee(e,_);return v.set(a,O),O.proxy}}}(t,i,f,p),ownKeys:function(v){return function(d){var h=Reflect.ownKeys(d),o=e.observer;if(o!=null){var c=H(v,I);o.observing.push(c)}return h}}(i)});return s.proxy=R,s}}function ce(e){return function(n){return G(n)||te("tilia: value is not an object or array"),ee(e,n).proxy}}function ve(e){return function(n){var r={TAG:"Computed",_0:function(){return n(e.contents)}};return Reflect.set(r,A,!0),r}}function se(e){return{derived:e}}function de(e){return function(n){var r={contents:{}},t=se(ve(r)),i=n(t);G(i)||te("tilia: value is not an object or array");var f=ee(e,i).proxy;return r.contents=f,f}}function be(e){return function(n){var r=function(){var t=[],i={root:e,notify:r,observing:t};e.observer=i;var f=i;n(),B(f,!0)};r()}}function ge(e,n){return function(r,t){var i=function(){var u=n(i),s=r();u.root.observer=void 0,e.lock?t(s):(e.lock=!0,t(s),e.lock=!1),B(u,!1)},f=n(i);r(),B(f,!1)}}function he(e){return function(n){return e.lock?n():(e.lock=!0,n(),e.lock=!1,Q(e))}}function fe(e){var n={TAG:"Computed",_0:e};return Reflect.set(n,A,!0),n}function pe(e,n){var r={TAG:"Source",_0:{source:e,value:n}};return Reflect.set(r,A,!0),r}function Re(e){var n={TAG:"Store",_0:e};return Reflect.set(n,A,!0),n}function we(e){return function(n){return e({value:fe(function(){return n()})})}}function _e(e){e.root.observer=void 0}function Se(e,n,r,t,i,f,u,s){return{tilia:e,carve:n,observe:r,watch:t,batch:i,signal:f,derived:u,_observe:s}}function ae(e){var n=e!==void 0?e:50,r={active:new Set,quarantine:new Set,threshold:n},t={observer:void 0,expired:new Set,lock:!1,gc:r},i=ce(t),f=function(u){var s=[],p={root:t,notify:u,observing:s};return t.observer=p,p};return Se(i,de(t),be(t),ge(t,f),he(t),function(u){return i({value:u})},we(i),f)}var Y=Reflect.get(globalThis,ue),S,le=0;Y==null?le=1:S=Y;le===1&&(Z=ae(void 0),Reflect.set(globalThis,ue,Z),S=Z);var Z;function Ce(e){var n={};return Object.defineProperty(n,"data",{writable:!1,enumerable:!0,configurable:!1,value:e}),n}var ye=S.tilia,Pe=S.carve,je=S.observe,Ke=S.watch,Te=S.batch,Oe=S.signal,ze=S.derived,Ge=S._observe;function Ae(e){return Reflect.get(e,J)}export{M as _clear,S as _ctx,_e as _done,Ae as _meta,Ge as _observe,B as _ready,Te as batch,Pe as carve,fe as computed,ze as derived,ae as make,je as observe,Ce as readonly,Oe as signal,pe as source,Re as store,ye as tilia,Ke as watch};
//# sourceMappingURL=index.mjs.map