mirror of
https://github.com/GMWalletApp/epusdt.git
synced 2026-07-07 18:26:16 +00:00
1 line
4.0 KiB
JavaScript
1 line
4.0 KiB
JavaScript
var e=(e=>(e[e.None=0]=`None`,e[e.Mutable=1]=`Mutable`,e[e.Watching=2]=`Watching`,e[e.RecursedCheck=4]=`RecursedCheck`,e[e.Recursed=8]=`Recursed`,e[e.Dirty=16]=`Dirty`,e[e.Pending=32]=`Pending`,e))(e||{});function t({update:e,notify:t,unwatched:n}){return{link:r,unlink:i,propagate:a,checkDirty:o,shallowPropagate:s};function r(e,t,n){let r=t.depsTail;if(r!==void 0&&r.dep===e)return;let i=r===void 0?t.deps:r.nextDep;if(i!==void 0&&i.dep===e){i.version=n,t.depsTail=i;return}let a=e.subsTail;if(a!==void 0&&a.version===n&&a.sub===t)return;let o=t.depsTail=e.subsTail={version:n,dep:e,sub:t,prevDep:r,nextDep:i,prevSub:a,nextSub:void 0};i!==void 0&&(i.prevDep=o),r===void 0?t.deps=o:r.nextDep=o,a===void 0?e.subs=o:a.nextSub=o}function i(e,t=e.sub){let r=e.dep,i=e.prevDep,a=e.nextDep,o=e.nextSub,s=e.prevSub;return a===void 0?t.depsTail=i:a.prevDep=i,i===void 0?t.deps=a:i.nextDep=a,o===void 0?r.subsTail=s:o.prevSub=s,s===void 0?(r.subs=o)===void 0&&n(r):s.nextSub=o,a}function a(e){let n=e.nextSub,r;top:do{let i=e.sub,a=i.flags;if(a&60?a&12?a&4?!(a&48)&&c(e,i)?(i.flags=a|40,a&=1):a=0:i.flags=a&-9|32:a=0:i.flags=a|32,a&2&&t(i),a&1){let t=i.subs;if(t!==void 0){let i=(e=t).nextSub;i!==void 0&&(r={value:n,prev:r},n=i);continue}}if((e=n)!==void 0){n=e.nextSub;continue}for(;r!==void 0;)if(e=r.value,r=r.prev,e!==void 0){n=e.nextSub;continue top}break}while(!0)}function o(t,n){let r,i=0,a=!1;top:do{let o=t.dep,c=o.flags;if(n.flags&16)a=!0;else if((c&17)==17){if(e(o)){let e=o.subs;e.nextSub!==void 0&&s(e),a=!0}}else if((c&33)==33){(t.nextSub!==void 0||t.prevSub!==void 0)&&(r={value:t,prev:r}),t=o.deps,n=o,++i;continue}if(!a){let e=t.nextDep;if(e!==void 0){t=e;continue}}for(;i--;){let i=n.subs,o=i.nextSub!==void 0;if(o?(t=r.value,r=r.prev):t=i,a){if(e(n)){o&&s(i),n=t.sub;continue}a=!1}else n.flags&=-33;n=t.sub;let c=t.nextDep;if(c!==void 0){t=c;continue top}}return a}while(!0)}function s(e){do{let n=e.sub,r=n.flags;(r&48)==32&&(n.flags=r|16,(r&6)==2&&t(n))}while((e=e.nextSub)!==void 0)}function c(e,t){let n=t.depsTail;for(;n!==void 0;){if(n===e)return!0;n=n.prevDep}return!1}}function n(e,t,n){let r=typeof e==`object`,i=r?e:void 0;return{next:(r?e.next:e)?.bind(i),error:(r?e.error:t)?.bind(i),complete:(r?e.complete:n)?.bind(i)}}var r=[],i=0,{link:a,unlink:o,propagate:s,checkDirty:c,shallowPropagate:l}=t({update(e){return e._update()},notify(t){r[d++]=t,t.flags&=~e.Watching},unwatched(t){t.depsTail!==void 0&&(t.depsTail=void 0,t.flags=e.Mutable|e.Dirty,h(t))}}),u=0,d=0,f,p=0;function m(e){try{++p,e()}finally{--p||g()}}function h(e){let t=e.depsTail,n=t===void 0?e.deps:t.nextDep;for(;n!==void 0;)n=o(n,e)}function g(){if(!(p>0)){for(;u<d;){let e=r[u];r[u++]=void 0,e.notify()}u=0,d=0}}function _(t,r){let o=typeof t==`function`,u=t,d={_snapshot:o?void 0:t,subs:void 0,subsTail:void 0,deps:void 0,depsTail:void 0,flags:o?e.None:e.Mutable,get(){return f!==void 0&&a(d,f,i),d._snapshot},subscribe(e){let t=n(e),r={current:!1},i=v(()=>{d.get(),r.current?t.next?.(d._snapshot):r.current=!0});return{unsubscribe:()=>{i.stop()}}},_update(t){let n=f,a=r?.compare??Object.is;if(o)f=d,++i,d.depsTail=void 0;else if(t===void 0)return!1;o&&(d.flags=e.Mutable|e.RecursedCheck);try{let e=d._snapshot,n=typeof t==`function`?t(e):t===void 0&&o?u(e):t;return e===void 0||!a(e,n)?(d._snapshot=n,!0):!1}finally{f=n,o&&(d.flags&=~e.RecursedCheck),h(d)}}};return o?(d.flags=e.Mutable|e.Dirty,d.get=function(){let t=d.flags;if(t&e.Dirty||t&e.Pending&&c(d.deps,d)){if(d._update()){let e=d.subs;e!==void 0&&l(e)}}else t&e.Pending&&(d.flags=t&~e.Pending);return f!==void 0&&a(d,f,i),d._snapshot}):d.set=function(e){if(d._update(e)){let e=d.subs;e!==void 0&&(s(e),l(e),g())}},d}function v(t){let n=()=>{let n=f;f=r,++i,r.depsTail=void 0,r.flags=e.Watching|e.RecursedCheck;try{return t()}finally{f=n,r.flags&=~e.RecursedCheck,h(r)}},r={deps:void 0,depsTail:void 0,subs:void 0,subsTail:void 0,flags:e.Watching|e.RecursedCheck,notify(){let t=this.flags;t&e.Dirty||t&e.Pending&&c(this.deps,this)?n():this.flags=e.Watching},stop(){this.flags=e.None,this.depsTail=void 0,h(this)}};return n(),r}export{_ as n,m as t}; |