effector
Version:
Business logic with ease
3 lines (2 loc) • 30.1 kB
JavaScript
function e(e,t){for(const r in e)t(e[r],r)}function t(e,t){e.forEach(t)}function r(e,t,r){if(!e)throw Error(`${r?r+': ':''}${t}`)}function n(e,t){const r=M(e),n=r.meta||{};V(e)||(n.isRegion=1),te={id:r.id,parent:te,value:e,template:n.template||ne(),sidRoot:n.sidRoot||te&&te.sidRoot,meta:n};try{return t()}finally{re('region'),te=O(te)}}function a({node:e=[],from:r,source:n,parent:a=r||n,to:o,target:s,child:i=o||s,scope:c={},meta:l={},family:d={type:'regular'},regional:u}={}){const f=se(a),p=se(d.links),m=se(d.owners),g=[];t(e,(e=>e&&H(g,e)));const h={id:Y(),seq:g,next:se(i),meta:l,scope:c,family:{triggers:f.length,type:d.type||"crosslink",links:p,owners:m}};return t(p,(e=>H(z(e),h))),t(m,(e=>H(N(e),h))),t(f,(e=>H(e.next,h))),u&&te&&oe(A(te),[h]),h}function o(e,r,n){let a,o=Be,s=null,i=qe;if(e.target&&(r=e.params,n=e.defer,a=e.meta,o='page'in e?e.page:o,e.stack&&(s=e.stack),i=C(e)||i,e=e.target),i&&qe&&i!==qe&&(qe=null),Array.isArray(e))for(let t=0;t<e.length;t++)_e('pure',o,M(e[t]),s,r[t],i,a);else _e('pure',o,M(e),s,r,i,a);if(n&&!Pe)return;const c={isRoot:Pe,currentPage:Be,scope:qe,isWatch:Te,isPure:Ve};let l,d,u,f,p,m;Pe=0;e:for(;f=Ie();){const{idx:e,stack:r,type:n}=f;u=r.node,Be=p=r.page,qe=C(r),p?m=p.reg:qe&&(m=qe.reg);const a=!!p,o=!!qe,s={fail:0,scope:u.scope};l=d=0;for(let t=e;t<u.seq.length&&!l;t++){const i=u.seq[t];if(i.order){const{priority:a,barrierID:o}=i.order,s=o?p?`${p.fullID}_${o}`:o:0;if(t!==e||n!==a){o?Ee.has(s)||(Ee.add(s),De(t,r,a,o)):De(t,r,a,0);continue e}o&&Ee.delete(s)}switch(i.type){case'mov':{const e=i.data;let t;switch(e.from){case'stack':t=A(r);break;case'a':case'b':t=r[e.from];break;case'value':t=e.store;break;case'store':if(m&&!m[e.store.id])if(a){const t=Ue(p,e.store.id);r.page=p=t,t?m=t.reg:o?(Ke(qe,e.store,0,1,e.softRead),m=qe.reg):m=void 0}else o&&Ke(qe,e.store,0,1,e.softRead);t=Ne(m&&m[e.store.id]||e.store)}switch(e.to){case'stack':r.value=t;break;case'a':case'b':r[e.to]=t;break;case'store':He(p,qe,e.target,0).current=t}break}case'compute':const e=i.data;if(e.fn){Te='watch'===u.meta.op,Ve=e.pure;const t=e.safe?(0,e.fn)(A(r),s.scope,r):Qe(s,e.fn,r);e.filter?d=!t:r.value=t,Te=c.isWatch,Ve=c.isPure}}l=s.fail||d}if(Ge&&Ge(r,s),!l){const e=A(r),n=C(r);if(t(u.next,(t=>{_e('child',p,t,r,e,n)})),n){u.meta.needFxCounter&&_e('child',p,n.fxCount,r,e,n),u.meta.storeChange&&_e('child',p,n.storeChange,r,e,n),u.meta.warnSerialize&&_e('child',p,n.warnSerializeNode,r,e,n);const a=n.additionalLinks[u.id];a&&t(a,(t=>{_e('child',p,t,r,e,n)}))}}}Pe=c.isRoot,Be=c.currentPage,qe=C(c)}function s(t,r="combine"){let n=r+'(',a='',o=0;return e(t,(e=>{o<25&&(null!=e&&(n+=a,n+=D(e)?_(e).fullName:e.toString()),o+=1,a=', ')})),n+')'}function i(e,t){let r,n;const a=e;if(t){const a=_(t);0===e.length?(r=a.path,n=a.fullName):(r=a.path.concat([e]),n=0===a.fullName.length?e:a.fullName+'/'+e)}else r=0===e.length?[]:[e],n=e;return{shortName:a,fullName:n,path:r}}function c(e,t){if(!t)return e;if(!t.name&&!t.named&&!t.loc)return e;let r=`[${e}]`;const n=t.named||t.name;n&&(r+=` unit '${n}'`);const a=t.loc;return!n&&a&&(r+=` (${a.file}:${a.line}:${a.column})`),r}function l(e,t){const r=t?e:e[0];de(r);let n=r.or;const a=r.and;if(a){const r=t?a:a[0];if(ie(r)&&'and'in r){const r=l(a,t);e=r[0],n={...n,...r[1]}}else e=a}return[e,n]}function d(e){const t=()=>e();return t.unsubscribe=()=>e(),t}function u(e,...t){const r=ne();if(r){const n=r.handlers[e];if(n)return n(r,...t)}}function f(e,t){const n=Xe({or:t,and:'string'==typeof e?{name:e}:e}),s=c('event',n),i=(e,...t)=>(r(!j(i,'derived'),'call of derived event is not supported, use createEvent instead',s),r(!Ve,'unit call from pure function is not supported, use operators like sample instead',s),Be?((e,t,r,n)=>{const a=Be;let o=null;if(t)for(o=Be;o&&o.template!==t;)o=O(o);We(o);const s=e.create(r,n);return We(a),s})(i,l,e,t):i.create(e,t)),l=ne(),d=Object.assign(i,{graphite:a({meta:ut(n.actualOp||"event",i,n,dt(f)),regional:1}),create:e=>(o({target:i,params:e,scope:qe}),e),watch:e=>ot(i,e),map:e=>ft(i,$,e,[$e()]),filter:e=>ft(i,'filter',e.fn?e:e.fn,[$e(he,1)]),filterMap:e=>ft(i,'filterMap',e,[$e(),Se((e=>!le(e)),1)]),prepend(e){r(i.targetable,'.prepend of derived event is not supported, call source event instead',s);const t=f('* \u2192 '+i.shortName,{parent:O(i)});return u('eventPrepend',M(t)),at(t,i,[$e()],'prepend',e),ct(i,t),t}});return null!=n&&n.domain&&n.domain.hooks.event(d),I(d,'id',d.graphite.id),re(d.graphite),d}function p(e,n,a,o,s){return fe(a,`${s} ${n}`,'first argument'),r(ce(o),'second argument should be a function',s),G(!j(e,'derived'),`${n} in derived store`,`${n} in store created via createStore`,s),t(Array.isArray(a)?a:[a],(t=>{e.off(t),mt(t,e,'on',ge,o)})),e}function m(e,n){const s=Xe(n),i=ze(e),l=c('store',s),d=f({named:'updates',derived:1});u('storeBase',i);const g=i.id,h='skipVoid'in s,y=h&&!s.skipVoid;G(!(h&&s.skipVoid),'{skipVoid: true}','updateFilter',l);const b={updates:d,defaultState:e,stateRef:i,getState(){let e,t=i;if(Be){let t=Be;for(;t&&!t.reg[g];)t=O(t);t&&(e=t)}return!e&&qe&&(Ke(qe,i,1),e=qe),e&&(t=e.reg[g]),Ne(t)},setState:e=>o({target:b,params:e,defer:1,scope:qe}),reset:(...e)=>(r(b.targetable,'.reset of derived store is not supported',l),t(e,(e=>p(b,'.reset',e,(()=>b.defaultState),l))),b),on:(e,t)=>(r(b.targetable,'.on of derived store is not supported',l),p(b,'.on',e,t,l)),off(e){const t=M(e).id,r=M(b).family.links.find((e=>e.meta.onTrigger===t));return r&&rt(r),b},map(e,t){let r,n;ie(e)&&(r=e,e=e.fn);const a=b.getState(),o=le(a);ne()?n=null:(!o||o&&y)&&(n=e(a));const s=m(n,{name:`${b.shortName} \u2192 *`,derived:1,...t,and:r}),c=mt(b,s,$,he,e);return Re(R(s),{type:$,fn:e,from:i}),R(s).noInit=1,u('storeMap',i,c),s},watch(e,t){if(G(!t,'watch second argument','sample',l),!t||!D(e)){const t=ot(b,e);return u('storeWatch',i,e)||e(b.getState()),t}return r(ce(t),'second argument should be a function',l),e.watch((e=>t(b.getState(),e)))}},v=ut("store",b,s,dt(m)),k=b.defaultConfig.updateFilter;b.graphite=a({scope:{state:i,fn:k},node:[Se(((e,t,r)=>(r.scope&&!r.scope.reg[i.id]&&(r.b=1),e))),we(i),Se(((e,t,{a:r,b:n})=>{const a=le(e);return a&&!h&&J(`${pt}`,b.graphite),(a&&y||!a)&&(e!==r||n)}),1),k&&$e(me,1),ve({from:"stack",target:i})],child:d,meta:{...v,defaultState:e,stateRef:i},regional:1}),I(b,'id',b.graphite.id),I(b,'rootStateRefId',g);const x=j(b,'serialize'),S=j(b,'derived'),w='ignore'===x,z=j(b,'sid');z&&(I(b,'storeChange',1),i.sid=z),z||w||S||I(b,'warnSerialize',1);const N=le(e);return r(S||!N||N&&y,pt,l),S&&N&&!h&&console.error(`${l}: ${pt}`),oe(b,[d]),null!=s&&s.domain&&s.domain.hooks.store(b),S||(b.reinit=f({named:'reinit'}),b.reset(b.reinit)),i.meta=b.graphite.meta,re(b.graphite),b}function g(...e){let t,n,a;[e,a]=l(e);const o=c('combine',a),s=e[e.length-1],i=e.length>1&&!E(s)&&ie(s),d=i&&s,u=i?e[e.length-2]:s;let f,p,m;if(ce(u)?(n=e.slice(0,i?-2:-1),t=u):n=e,1===n.length){const e=n[0];E(e)||(f=e,p=1)}if(!p&&(f=n,t)){m=1;const e=t;t=t=>e(...t)}return r(ie(f),`${o}: shape should be an object`),gt(Array.isArray(f),!m,f,dt(g),a,t,d)}function h(){const e={};return e.req=new Promise(((t,r)=>{e.rs=t,e.rj=r})),e.req.catch((()=>{})),e}function y(e,t={}){const n=Xe(ce(e)?{handler:e}:e,t),s=c('effect',n),i=f(ce(e)?{handler:e}:e,{...t,actualOp:"effect"});lt(i,dt(y));const l=M(i);I(l,'op',i.kind="effect"),i.use=e=>(r(ce(e),'.use argument should be a function',s),v.scope.handler=e,i),i.use.getCurrent=()=>v.scope.handler;const d=i.finally=f({named:'finally',derived:1}),u=i.done=d.filterMap({named:'done',fn({status:e,params:t,result:r}){if('done'===e)return{params:t,result:r}}}),p=i.fail=d.filterMap({named:'fail',fn({status:e,params:t,error:r}){if('fail'===e)return{params:t,error:r}}}),g=i.doneData=u.map({named:'doneData',fn:({result:e})=>e}),b=i.failData=p.map({named:'failData',fn:({error:e})=>e}),v=a({scope:{handler:i.defaultConfig.handler||(()=>r(0,`no handler used in ${i.compositeName.fullName}`))},node:[Se(((e,t,r)=>{let n=t.handler;const a=C(r);if(a){const e=a.handlers.unitMap.get(i)||a.handlers.sidMap[i.sid];e&&(n=e)}return e.handler=n,e}),0,1),Se(((e,t,r)=>{if(t.runnerFn&&!t.runnerFn(e,null,r))return;const{params:n,req:a,handler:o,args:s=[n]}=e,i=yt(n,a,1,d,r),c=yt(n,a,0,d,r),[l,u]=ht(o,c,s);l&&(ie(u)&&ce(u.then)?u.then(i,c):i(u))}),0,1)],meta:{op:'fx',fx:'runner'},regional:1});l.scope.runner=v,H(l.seq,Se(((e,{runner:t},r)=>{const n=O(r)?{params:e,req:{rs(e){},rj(e){}}}:e;return r.meta||(r.meta={fxID:Z()}),o({target:t,params:n,defer:1,scope:C(r),meta:r.meta}),n.params}))),i.create=e=>{const t=h(),r={params:e,req:t};if(qe&&!Te){const e=qe;t.req.finally((()=>{Le(e)})).catch((()=>{}))}return o({target:i,params:r,scope:qe}),t.req};const k=i.inFlight=m(0,{serialize:'ignore',named:(j(i,'name')||i.graphite.id)+'.inFlight'}).on(i,(e=>e+1)).on(d,(e=>e-1)).map({fn:e=>e,named:'inFlight'});I(d,'needFxCounter','dec'),I(i,'needFxCounter',1);const x=i.pending=k.map({fn:e=>e>0,named:'pending'});return oe(i,[d,u,p,g,b,x,k]),null!=n&&n.domain&&n.domain.hooks.effect(i),i}function b(e,n){let a=0;return t(vt,(t=>{t in e&&(r(null!=e[t],kt(n,t)),a=1)})),a}function v(...e){let t,r,n,a,[[o,s,i],d]=l(e),u=1;const f=c('sample',d);return le(s)&&ie(o)&&b(o,f)&&(s=o.clock,i=o.fn,'batch'in o?u=o.batch:(G(!('greedy'in o),'greedy in sample','batch',f),u=!o.greedy),a=o.filter,t=o.target,r=o.name,n=o.sid,o=o.source),xt('sample',s,o,a,t,i,r,d,u,1,0,n)}function k(e,r,n){const a=[];(function e(o){W(a,o)||(H(a,o),"store"===j(o,'op')&&(n||j(o,'sid'))&&r(o,j(o,'sid')),t(o.next,e),t(z(o),e),t(N(o),e))})(e)}function x(e,n){const a=Array.isArray(e)?new Map(e):e,o=new Map;let s=0;if(a instanceof Map){const e={};return t(a,((t,a)=>{r(D(a),'Map key should be a unit'),n&&n(a,t),a.sid&&(a.sid in e&&(s=1),e[a.sid]=t),o.set(a,t)})),{sidMap:e,unitMap:o,hasSidDoubles:s}}return{sidMap:a,unitMap:o}}function S(e,t){return E(t)?[Me.mov({store:t.stateRef,to:'stack'}),...e]:e}Object.defineProperty(exports,'__esModule',{value:1});const w='undefined'!=typeof Symbol&&Symbol.observable||'@@observable',$='map',M=e=>e.graphite||e,z=e=>e.family.owners,N=e=>e.family.links,R=e=>e.stateRef,A=e=>e.value,O=e=>e.parent,C=e=>e.scope,j=(e,t)=>M(e).meta[t],I=(e,t,r)=>M(e).meta[t]=r,_=e=>e.compositeName,D=e=>(ce(e)||ie(e))&&'kind'in e,F=e=>t=>D(t)&&t.kind===e,E=F("store"),q=F("event"),P=F("effect"),T=e=>D(e)&&!!e.targetable,V=F("domain"),B=F("scope");var L={__proto__:null,unit:D,store:E,event:q,effect:P,targetable:T,domain:V,scope:B,attached:e=>P(e)&&1==j(e,'attached')};const W=(e,t)=>e.includes(t),U=(e,t)=>{const r=e.indexOf(t);-1!==r&&e.splice(r,1)},H=(e,t)=>e.push(t),G=(e,t,r,n)=>!e&&console.error(`${n?n+': ':''}${t} is deprecated${r?`, use ${r} instead`:''}`),J=(e,t)=>{const r=j(t,'unitTrace'),n=j(t,'config'),a=null!=n&&n.loc?` at ${n.loc.file}`:null,o=null==n?void 0:n.name;let s=e;o&&(s=`${o}: ${e}`),a&&(s=`${o}${a}: ${e}`);const i=Error(s);r&&(i.stack=r),r||o||a||console.log("Add effector's Babel or SWC plugin to your config for more detailed debug information or \"import \"effector/enable_debug_traces\" to your code entry module to see full stack traces"),console.error(i)},K=()=>{let e=0;return()=>""+ ++e},Q=K(),X=K(),Y=K(),Z=K();let ee,te=null;const re=e=>{ee&&ee(e,te)},ne=()=>te&&te.template,ae=e=>(e&&te&&te.sidRoot&&(e=`${te.sidRoot}|${e}`),e),oe=(e,r)=>{const n=M(e);t(r,(e=>{const t=M(e);"domain"!==n.family.type&&(t.family.type="crosslink"),H(z(t),n),H(N(n),t)}))},se=(e=[])=>(Array.isArray(e)?e:[e]).flat().map(M),ie=e=>'object'==typeof e&&null!==e,ce=e=>'function'==typeof e,le=e=>void 0===e,de=e=>r(ie(e)||ce(e),'expect first argument be an object'),ue=(e,t,n,a)=>r(!(!ie(e)&&!ce(e)||!('family'in e)&&!('graphite'in e)),`${t}: expect ${n} to be a unit (store, event or effect)${a}`),fe=(e,r,n)=>{Array.isArray(e)?t(e,((e,t)=>ue(e,r,`${t} item of ${n}`,''))):ue(e,r,n,' or array of units')},pe=(e,n,a="target")=>t(se(n),(t=>r(!j(t,'derived'),`${e}: derived unit in "${a}" is not supported, use createStore/createEvent instead"`))),me=(e,{fn:t},{a:r})=>t(e,r),ge=(e,{fn:t},{a:r})=>t(r,e),he=(e,{fn:t})=>t(e),ye=(e,t,r,n)=>{const a={id:X(),type:e,data:t};return r&&(a.order={priority:r},n&&(a.order.barrierID=++be)),a};let be=0;const ve=({from:e="store",store:t,target:r,to:n=(r?"store":"stack"),batch:a,priority:o})=>ye('mov',{from:e,store:t,to:n,target:r},o,a),ke=({fn:e,batch:t,priority:r,safe:n=0,filter:a=0,pure:o=0})=>ye('compute',{fn:e,safe:n,filter:a,pure:o},r,t),xe=({fn:e})=>ke({fn:e,priority:"effect"}),Se=(e,t,r)=>ke({fn:e,safe:1,filter:t,priority:r&&"effect"}),we=(e,t,r)=>ve({store:e,to:t?"stack":"a",priority:r&&"sampler",batch:1}),$e=(e=he,t)=>ke({fn:e,pure:1,filter:t}),Me={mov:ve,compute:ke,filter:({fn:e,pure:t})=>ke({fn:e,filter:1,pure:t}),run:xe},ze=e=>({id:X(),current:e,initial:e}),Ne=({current:e})=>e,Re=(e,t)=>{e.before||(e.before=[]),H(e.before,t)};let Ae=null;const Oe=(e,t)=>{if(!e)return t;if(!t)return e;let r;return(e.v.type===t.v.type&&e.v.id>t.v.id||Fe(e.v.type)>Fe(t.v.type))&&(r=e,e=t,t=r),r=Oe(e.r,t),e.r=e.l,e.l=r,e},Ce=[];let je=0;for(;je<6;)H(Ce,{first:null,last:null,size:0}),je+=1;const Ie=()=>{for(let e=0;e<6;e++){const t=Ce[e];if(t.size>0){if(3===e||4===e){t.size-=1;const e=Ae.v;return Ae=Oe(Ae.l,Ae.r),e}1===t.size&&(t.last=null);const r=t.first;return t.first=r.r,t.size-=1,r.v}}},_e=(e,t,r,n,a,o,s)=>De(0,{a:null,b:null,node:r,parent:n,value:a,page:t,scope:o,meta:s},e,0),De=(e,t,r,n)=>{const a=Fe(r),o=Ce[a],s={v:{idx:e,stack:t,type:r,id:n},l:null,r:null};3===a||4===a?Ae=Oe(Ae,s):(0===o.size?o.first=s:o.last.r=s,o.last=s),o.size+=1},Fe=e=>{switch(e){case'child':return 0;case'pure':return 1;case'read':return 2;case'barrier':return 3;case'sampler':return 4;case'effect':return 5;default:return-1}},Ee=new Set;let qe,Pe=1,Te=0,Ve=0,Be=null;const Le=e=>{qe=e},We=e=>{Be=e},Ue=(e,t)=>{if(e){for(;e&&!e.reg[t];)e=e.parent;if(e)return e}return null},He=(e,t,r,n)=>{const a=Ue(e,r.id);return a?a.reg[r.id]:t?(Ke(t,r,n),t.reg[r.id]):r};let Ge;const Je=e=>e,Ke=(e,r,n,a,o)=>{const s=e.reg;if(s[r.id])return;const i=r.sid,c={id:r.id,current:r.initial,meta:r.meta};if(c.id in e.values.idMap)c.current=e.values.idMap[c.id];else if(i&&i in e.values.sidMap&&!(i in e.sidIdMap)){var l;const t=null==r||null===(l=r.meta)||void 0===l?void 0:l.serialize;c.current=(e.fromSerialize&&'ignore'!==t&&(null==t?void 0:t.read)||Je)(e.values.sidMap[i])}else if(r.before&&!o){let o=0;const i=n||!r.noInit||a;t(r.before,(t=>{switch(t.type){case'map':{const r=t.from;if((r||t.fn)&&(r&&Ke(e,r,n,a),i)){const e=r&&s[r.id].current;c.current=t.fn?t.fn(e):e}break}case'field':Ke(e,t.from,n,a),o||(o=1,c.current=Array.isArray(c.current)?[...c.current]:{...c.current}),i&&(c.current[t.field]=s[s[t.from.id].id].current)}}))}i&&(e.sidIdMap[i]=r.id),s[r.id]=c},Qe=(e,t,r)=>{try{return t(A(r),e.scope,r)}catch(t){console.error(t),e.fail=1,e.failReason=t}},Xe=(t,r={})=>(ie(t)&&(Xe(t.or,r),e(t,((e,t)=>{le(e)||'or'===t||'and'===t||(r[t]=e)})),Xe(t.and,r)),r),Ye=(e,t)=>{U(e.next,t),U(z(e),t),U(N(e),t)},Ze=['on','reset','sample','split','merge','guard','forward'],et=(e,t,r,n,a)=>{let o;e.next.length=0,e.seq.length=0,e.scope=null;let s=N(e);const{stateRef:i,defaultShape:c,isRegion:l,op:d}=e.meta;if(i&&(i.before=[],e.meta.stateRef=null),c)for(const e in c)c[e]=null;const u=l?e:n;if(s.length>0){const n=W(Ze,d),i=!l&&!a,c=i&&r&&!n;for(;o=s.pop();){const s=W(o.next,e);Ye(o,e),l&&et(o,0,0,e,1),s||(o.family.triggers-=1),(t||c||i&&"crosslink"===o.family.type&&!n||a&&W(Ze,o.meta.op)&&(s&&0===o.next.length||!s&&o.family.triggers<=0))&&et(o,t,r&&'on'!==o.meta.op,u,a)}}for(s=z(e);o=s.pop();)Ye(o,e),r&&"crosslink"===o.family.type&&et(o,t,'on'!==o.meta.op,u,a)},tt=e=>e.clear(),rt=(e,{deep:t}={})=>{let r=0;if(e.ownerSet&&e.ownerSet.delete(e),V(e)){r=1;const t=e.history;tt(t.events),tt(t.effects),tt(t.stores),tt(t.domains)}et(M(e),!!t,r,null,0)},nt=e=>d((()=>rt(e))),at=(e,t,r,n,o)=>a({node:r,parent:e,child:t,scope:{fn:o},meta:{op:n},family:{owners:[e,t],links:t},regional:1}),ot=(e,t)=>(r(ce(t),'.watch argument should be a function'),nt(a({scope:{fn:t},node:[xe({fn:he})],parent:e,meta:{op:'watch'},family:{owners:e},regional:1})));let st=0;const ct=(e,t,r="event")=>{O(e)&&O(e).hooks[r](t)},lt=(e,t)=>I(e,'unitTrace',t),dt=e=>{if(!st)return'';const t=Error('unit trace');return Error.captureStackTrace&&Error.captureStackTrace(t,e),t.stack},ut=(e,t,r,n)=>{const a=Xe(r),o="domain"===e,s=Q(),{sid:c=null,named:l=null,domain:d=null,parent:u=d}=a,f=l||a.name||(o?'':s),p=i(f,u),m={op:t.kind=e,name:t.shortName=f,sid:t.sid=ae(c),named:l,unitId:t.id=s,serialize:a.serialize,derived:a.derived,config:a,unitTrace:n};if(t.targetable=!a.derived,t.parent=u,t.compositeName=p,t.defaultConfig=a,t.getType=()=>(G(0,'getType','compositeName.fullName'),p.fullName),!o){t.subscribe=e=>(de(e),t.watch(ce(e)?e:t=>e.next&&e.next(t))),t[w]=()=>t;const e=ne();e&&(m.nativeTemplate=e)}return m},ft=(e,t,r,n)=>{let a;ie(r)&&(a=r,r=r.fn);const o=f({name:`${e.shortName} \u2192 *`,derived:1,and:a});return at(e,o,n,t,r),o},pt='undefined is used to skip updates. To allow undefined as a value provide explicit { skipVoid: false } option',mt=(e,t,r,n,a)=>{const o=R(t),s=ve({store:o,to:"a",priority:'read'});r===$&&(s.data.softRead=1);const i=[s,$e(n)];u('storeOnMap',o,i,E(e)&&R(e));const c=at(e,t,i,r,a);return r!==$&&I(c,'onTrigger',M(e).id),c},gt=(t,n,o,i,l,d,f)=>{const p=c('combine',l),g=t?e=>[...e]:e=>({...e}),h=t?[]:{},y=g(h),b=ze(y),v=ze(1);b.type=t?'list':'shape',b.noInit=1,u('combineBase',b,v);const k=m(y,{name:s(o),derived:1,...f,and:l});lt(k,i);const x=R(k);x.noInit=1,I(k,'isCombine',1),oe(k,[a({meta:{stateRef:b}})]);const S=we(b);S.order={priority:'barrier'};const w=ve({store:x,to:'b',priority:'read'});w.data.softRead=1;const M=[Se(((e,t,r)=>(r.scope&&!r.scope.reg[b.id]&&(r.c=1),e))),S,ve({store:v,to:'b'}),Se(((e,{key:t},r)=>{if(r.c||e!==r.a[t])return n&&r.b&&(r.a=g(r.a)),r.a[t]=e,1}),1),ve({from:"a",target:b}),ve({from:"value",store:0,target:v}),ve({from:"value",store:1,target:v,priority:'barrier',batch:1}),we(b,1,1),d&&$e(),w];if(e(o,((e,t)=>{if(!E(e))return r(!D(e)&&!le(e),`combine expects a store in a field ${t}`,p),void(y[t]=h[t]=e);h[t]=e.defaultState,y[t]=e.getState();const n=at(e,k,M,'combine',d);n.scope.key=t;const a=R(e);Re(b,{type:'field',field:t,from:a}),u('combineField',a,n)})),k.defaultShape=o,I(k,'defaultShape',o),Re(x,{type:$,from:b,fn:d}),!ne())if(d){const e=d(y);!le(e)||f&&'skipVoid'in f||console.error(`${p}: ${pt}`),x.current=e,x.initial=e,k.defaultState=e}else k.defaultState=h;return k},ht=(e,t,r)=>{try{return[1,e(...r)]}catch(e){return t(e),[0,null]}},yt=(e,t,r,n,a)=>s=>{o({target:[n,bt],params:[r?{status:'done',params:e,result:s}:{status:'fail',params:e,error:s},{value:s,fn:r?t.rs:t.rj}],defer:1,page:a.page,scope:a.scope,meta:a.meta})},bt=a({node:[xe({fn:({fn:e,value:t})=>e(t)})],meta:{op:'fx',fx:'sidechain'}}),vt=['source','clock','target'],kt=(e,t)=>e+`: ${t} should be defined`,xt=(e,t,n,a,o,s,i,l,d,p,h,y)=>{const b=c(e,l),k=!!o;r(!le(n)||!le(t),kt(b,'either source or clock'));let x=0;le(n)?x=1:D(n)||(n=g(n)),le(t)?t=n:(fe(t,b,'clock'),Array.isArray(t)&&(t=at(t,[],[],e))),x&&(n=t),l||i?l&&i?l.name=i:!l&&i&&(l={name:i}):i=n.shortName;let S='none';(h||a)&&(D(a)?S='unit':(r(ce(a),'`filter` should be function or unit'),S='fn')),o?(fe(o,b,'target'),pe(b,o)):'none'===S&&p&&E(n)&&E(t)?o=m(s?s(Ne(R(n)),Ne(R(t))):Ne(R(n)),{name:i,sid:y,or:l}):(o=f({name:i,derived:1,or:l}),u('sampleTarget',M(o)));const w=ze();let $=[];const z=[];if('unit'===S){const[r,n,s,i]=wt(a,o,t,w,e);i&&H(z,i),s||$.push(...St(n)),$.push(...St(r))}const N=[];if(x)d&&H(N,we(w,1,1));else{const[r,a,s,i]=wt(n,o,t,w,e);i&&H(z,i),s||N.push(...St(a)),H(N,we(r,1,d))}const A=at(t,o,[u('sampleSourceLoader'),ve({from:"stack",target:w}),...N,...$,we(w),'fn'===S&&$e(((e,t,{a:r})=>a(e,r)),1),s&&$e(me),u('sampleSourceUpward',k)],e,s);return oe(n,[A]),oe(A,z),Object.assign(A.meta,l,{joint:1,stateRef:w}),lt(A,dt(v)),o},St=e=>[we(e),Se(((e,t,{a:r})=>r),1)],wt=(e,t,r,n,o)=>{const s=E(e),i=s?R(e):ze(),c=ze(s);let l;return s||(l=a({parent:e,node:[ve({from:"stack",target:i}),ve({from:"value",store:1,target:c})],family:{owners:[...new Set([e,t,r].flat())],links:t},meta:{op:o},regional:1})),u('sampleSource',c,i,n),[i,c,s,l]},$t=(e,t,r,n)=>{const a=e[t];a&&o({target:a,params:Array.isArray(a)?a.map((()=>r)):r,defer:1,stack:n})},Mt=e=>!e.node.meta.isCombine||e.parent&&'combine'!==e.parent.node.meta.op,zt=e=>e;exports.PRIVATE_API_DO_NOT_TOUCH_NO_SEMVER_SUPPORT={setDebugTraces:e=>{st=e,e&&console.log("[effector/debug_traces] Debug traces enabled")}},exports.allSettled=(e,{scope:t,params:r}={})=>{if(!D(e))return Promise.reject(new Error('first argument should be unit'));if(!(P(e)||q(e)||E(e)||B(e)))return Promise.reject(new Error('first argument accepts only effects, events, stores or scopes'));if(B(e))t=e;else if(!T(e)){const t=c('allSettled',M(e).meta);return Promise.reject(Error(`${t}: unit should be targetable`))}const n=h();n.parentFork=qe;const{fxCount:a}=t;H(a.scope.defers,n);const s=[],i=[];return B(e)||(H(s,e),H(i,P(e)?{params:r,req:{rs(e){n.value={status:'done',value:e}},rj(e){n.value={status:'fail',value:e}}}}:r)),H(s,a),H(i,null),o({target:s,params:i,scope:t}),n.req},exports.attach=function e(t){let n;[t,n]=l(t,1);const a=c('attach',n);let{source:s,effect:d,mapParams:u,domain:f}=t;P(d)&&r(le(f),'`domain` can only be used with a plain function',a);const p=y(t,n);I(p,'attached',1),lt(p,dt(e));const{runner:m}=M(p).scope;let h;const b=(e,t,r)=>{const{params:n,req:a,handler:i}=e,c=p.finally,l=yt(n,a,0,c,r),d=r.a,f=P(i);let m,g=1;if(u?[g,m]=ht(u,l,[n,d]):m=s&&f?d:n,g){if(!f)return e.args=[d,m],1;o({target:i,params:{params:m,req:{rs:yt(n,a,1,c,r),rj:l}},page:r.page,defer:1,meta:r.meta})}};if(s){let e;m.scope.runnerFn=b,E(s)?(e=s,oe(e,[p])):(e=g(s),oe(p,[e])),h=[Se((e=>e),0,1),we(R(e))],delete m.seq[1].order}else h=[Se(b,1,1)];m.seq.splice(1,0,...h),p.use(d);const v=O(d);return v&&(Object.assign(_(p),i(p.shortName,v)),p.defaultConfig.parent=v),ct(d,p,"effect"),p},exports.clearNode=rt,exports.combine=g,exports.createApi=(...t)=>{let[[r,n],a]=l(t);const o={};return e(n,((e,t)=>{const n=o[t]=f(t,{parent:O(r),config:a});r.on(n,e),ct(r,n)})),o},exports.createDomain=function r(n,s){const i=Xe({or:s,and:'string'==typeof n?{name:n}:n}),c=a({family:{type:"domain"},regional:1,parent:(null==i?void 0:i.domain)||(null==i?void 0:i.parent)}),l={history:{},graphite:c,hooks:{}};c.meta=ut("domain",l,{parent:(null==i?void 0:i.domain)||(null==i?void 0:i.parent),or:{...i,derived:1}},dt(r)),e({Event:f,Effect:y,Store:m,Domain:r},((e,r)=>{const n=r.toLowerCase(),a=f({named:`on${r}`});l.hooks[n]=a;const s=new Set;l.history[`${n}s`]=s,a.create=e=>(o(a,e),e),H(M(a).seq,Se(((e,t,r)=>(r.scope=null,e)))),a.watch((e=>{oe(l,[e]),s.add(e),e.ownerSet||(e.ownerSet=s),O(e)||(e.parent=l)})),oe(l,[a]),l[`onCreate${r}`]=e=>(t(s,e),a.watch(e)),l[`create${r}`]=l[n]=(t,r)=>{const n=Xe({and:r,or:t});return null!=n&&n.domain?e(t,r):a(e(t,{parent:l,or:n}))}}));const d=O(l);return d&&e(l.hooks,((e,t)=>at(e,d.hooks[t]))),null!=i&&i.domain&&i.domain.hooks.domain(l),l},exports.createEffect=y,exports.createEvent=f,exports.createNode=a,exports.createStore=m,exports.createWatch=({unit:e,fn:t,scope:r,batch:n})=>{const o=[Me.run({fn:e=>t(e)})];n&&o.unshift(Me.compute({priority:'sampler',batch:1})),E(e)&&o.unshift(Me.mov({store:e.stateRef,to:'stack'}));const s=Array.isArray(e)?e:[e];if(r){const e=[],t=r.additionalLinks;return s.forEach((r=>{const n=t[r.graphite.id]||[];t[r.graphite.id]=n;const s=a({node:S(o,r),meta:{watchOp:r.kind}});n.push(s),e.push((()=>{const e=n.indexOf(s);-1!==e&&n.splice(e,1),rt(s)}))})),d((()=>{e.forEach((e=>e()))}))}{const e=a({node:o,parent:s,family:{owners:s}});return d((()=>{rt(e)}))}},exports.fork=(e,n)=>{let o,s=e;V(e)&&(G(0,'fork(domain)','fork()'),o=e,s=n);const i=(e=>{const r=a({scope:{defers:[],inFlight:0,fxID:0},node:[Se(((e,t,r)=>{r.parent?'dec'===r.parent.node.meta.needFxCounter?t.inFlight-=1:(t.inFlight+=1,t.fxID+=1):t.fxID+=1})),ke({priority:"sampler",batch:1}),Se(((e,r)=>{const{defers:n,fxID:a}=r;r.inFlight>0||0===n.length||Promise.resolve().then((()=>{r.fxID===a&&t(n.splice(0,n.length),(e=>{Le(e.parentFork),e.rs(e.value)}))}))}),0,1)]}),n=a({node:[Se(((e,t,r)=>{const n=r.parent;if(n){const t=n.node;if(Mt(n)){const n=C(r),a=t.meta.sid;n.sidIdMap[a]=t.scope.state.id,n.values.sidMap[a]=e;const o=t.meta.serialize;o&&n.sidSerializeSettings.set(a,'ignore'===o?{ignore:1}:{ignore:0,write:o.write})}}}))]}),o=a({node:[Se(((e,t,r)=>{const n=C(r),a=r.parent;n&&a&&Mt(a)&&n.warnSerializeNodes.add(a.node)}))]}),s={cloneOf:e,reg:{},values:{sidMap:{},idMap:{}},sidIdMap:{},sidSerializeSettings:new Map,getState(e){if('current'in e)return He(Be,s,e,0).current;const t=M(e);return He(Be,s,t.scope.state,1).current},kind:"scope",graphite:a({family:{type:"domain",links:[r,n,o]},meta:{unit:'fork'},scope:{forkInFlightCounter:r}}),additionalLinks:{},handlers:{sidMap:{},unitMap:new Map},fxCount:r,storeChange:n,warnSerializeNodes:new Set,warnSerializeNode:o};return s})(o);if(s){if(s.values){const{sidMap:e,unitMap:n,hasSidDoubles:a}=x(s.values,(e=>r(E(e)&&T(e),'Values map can contain only writable stores as keys')));Object.assign(i.values.sidMap,e),t(n,((e,t)=>{if(i.values.idMap[t.stateRef.id]=e,i.sidIdMap[j(t,'sid')]=t.stateRef.id,'ignore'===j(t,'serialize')){const e=j(t,'sid');i.sidSerializeSettings.set(e,{ignore:1})}})),i.fromSerialize=!(Array.isArray(s.values)||s.values instanceof Map),i.hasSidDoubles=a}s.handlers&&(G(s.handlers instanceof Map||Array.isArray(s.handlers),'object with handlers','array'),i.handlers=x(s.handlers,(e=>r(P(e),"Handlers map can contain only effects as keys"))))}return i},exports.forward=e=>{const t='forward',[{from:r,to:n},o]=l(e,1),s=c(t,o);return G(0,t,'sample',s),fe(r,s,'"from"'),fe(n,s,'"to"'),pe(s,n,'to'),nt(a({parent:r,child:n,meta:{op:t,config:o},family:{},regional:1}))},exports.fromObservable=e=>{de(e);const t=w in e?e[w]():e;r(t.subscribe,'expect observable to have .subscribe');const n=f(),a=nt(n);return t.subscribe({next:n,error:a,complete:a}),n},exports.guard=(...e)=>{let[[t,r],n]=l(e);const a=c('guard',n);return G(0,'guard','sample',a),r||(r=t,t=r.source),b(r,a),xt('guard',r.clock,t,r.filter,r.target,null,r.name,n,!r.greedy,0,1)},exports.hydrate=(e,{values:n})=>{r(ie(n),'values property should be an object');const{sidMap:a,unitMap:s}=x(n),i=Object.getOwnPropertyNames(a),c={};t(s,((e,t)=>{c[t.stateRef.id]=t}));const l=[],d=[];let u,f,p;B(e)?(u=e,p=1,r(u.cloneOf,'scope should be created from domain'),G(0,'hydrate(fork(domain), { values })','fork({ values })'),f=M(u.cloneOf)):V(e)?(G(0,'hydrate(domain, { values })','fork({ values })'),f=M(e)):r(0,'first argument of hydrate should be domain or scope'),k(f,((e,t)=>{if(t&&W(i,t)){H(l,e);const r=j(e,'serialize');r&&'ignore'!==r&&(a[t]=r.read(a[t])),H(d,a[t])}else e.scope.state.id in c&&(H(l,e),H(d,s.get(c[e.scope.state.id])))}),1),o({target:l,params:d,scope:u}),p&&Object.assign(u.values.sidMap,a)},exports.is=L,exports.launch=o,exports.merge=(e,t)=>{const r=c('merge',t);fe(e,r,'first argument');const n=f({name:s(e,'merge'),derived:1,and:t});return at(e,n,[],'merge'),n},exports.restore=(t,n,a)=>{const o=c('restore',a);if(r(!E(t),'restore($store) is not supported',o),q(t)||P(t)){const e=O(t),r=m(n,{parent:e,name:t.shortName,and:a});return at(P(t)?t.doneData:t,r),e&&e.hooks.store(r),r}const s=Array.isArray(t)?[]:{};return e(t,((e,t)=>s[t]=E(e)?e:m(e,{name:t}))),s},exports.sample=v,exports.scopeBind=(e,{scope:t,safe:n}={})=>{r(t||qe||n,'scopeBind: scope not found');const a=t||qe;return(...t)=>{function r(){Le(s)}let n,o=0;const s=qe;Le(a);try{n=e(...t)}catch(e){n=e,o=1}if(r(),o)throw n;return n instanceof Promise&&n.then(r,r),n}},exports.serialize=(n,a={})=>{n.warnSerializeNodes.size&&(console.error('serialize: One or more stores dont have sids, their values are omitted'),t(n.warnSerializeNodes,(e=>{J('store should have sid or `serialize: ignore`',e)}))),r(!n.hasSidDoubles,'duplicate sid found in this scope');const o=a.ignore?a.ignore.map((({sid:e})=>e)):[],s={};return e(n.values.sidMap,((e,t)=>{var r;if(W(o,t))return;const a=n.sidIdMap[t],i=null!==(r=n.sidSerializeSettings.get(t))&&void 0!==r?r:{ignore:0,write:zt};i.ignore||(s[t]=(0,i.write)(a&&a in n.reg?n.reg[a].current:e))})),'onlyChanges'in a&&(G(0,'onlyChanges'),a.onlyChanges||(r(n.cloneOf,'scope should be created from domain'),k(M(n.cloneOf),((e,t)=>{t in s||W(o,t)||j(e,'isCombine')||'ignore'===j(e,'serialize')||(s[t]=n.getState(e))})))),s},exports.setGraphInspector=e=>{ee=e},exports.setInspector=e=>{Ge=e},exports.setStoreName=(e,t)=>{e.shortName=t,Object.assign(_(e),i(t,O(e)))},exports.split=function t(...n){const o='split';let s,i,[[d,p],m]=l(n);const g=c(o,m),h=!p;h&&(s=d.cases,p=d.match,i=d.clock,d=d.source);const y=E(p),b=!D(p)&&ce(p),v=!y&&!b&&ie(p);r(D(d),'source must be a unit',g),s||(s={}),h?e(s,((e,t)=>pe(g,e,`cases.${t}`))):(r(v,'match should be an object',g),e(p,((e,t)=>s[t]=f({derived:1,named:`cases.${t}`,and:m}))),s.__=f({derived:1,named:'cases.__',and:m}));const k=new Set([].concat(d,i||[],Object.values(s))),x=Object.keys(y||b?s:p);let S,w;if(y||b)y&&k.add(p),S=[y&&we(R(p),0,1),ke({safe:y,filter:1,pure:!y,fn(e,t,r){const n=String(y?r.a:p(e));$t(t,W(x,n)?n:'__',e,r)}})];else if(v){const t=w=ze({});t.type='shape';const r=[];let n;e(p,((e,a)=>{if(D(e)){n=1,H(r,a),k.add(e);const o=at(e,[],[we(t),Se(((e,t,{a:r})=>r[a]=e))]);if(E(e)){t.current[a]=e.getState();const r=R(e);Re(t,{from:r,field:a,type:'field'}),u('splitMatchStore',r,o)}}})),n&&u('splitBase',t),S=[n&&we(t,0,1),$e(((e,t,n)=>{for(let a=0;a<x.length;a++){const o=x[a];if(W(r,o)?n.a[o]:p[o](e))return void $t(t,o,e,n)}$t(t,'__',e,n)}),1)]}else r(0,'expect match to be unit, function or object');const $=a({meta:{op:o,stateRef:w},parent:i?[]:d,scope:s,node:S,family:{owners:Array.from(k)},regional:1});if(i&&xt(o,i,d,null,$,null,o,m,0,0,0),lt($,dt(t)),!h)return s},exports.step=Me,exports.version="23.4.2",exports.withFactory=({sid:e,name:t,loc:r,method:o,fn:s})=>n(a({meta:{sidRoot:ae(e),sid:e,name:t,loc:r,method:o,type:'factory'},regional:1}),s),exports.withRegion=n;
//# sourceMappingURL=effector.cjs.js.map