UNPKG

@renewx/core

Version:

Lightweight state management library with validation support

2 lines (1 loc) 5.51 kB
var mt=Object.defineProperty,St=Object.defineProperties;var lt=Object.getOwnPropertyDescriptors;var V=Object.getOwnPropertySymbols;var ut=Object.prototype.hasOwnProperty,dt=Object.prototype.propertyIsEnumerable;var $=(t,o,e)=>o in t?mt(t,o,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[o]=e,q=(t,o)=>{for(var e in o||(o={}))ut.call(o,e)&&$(t,e,o[e]);if(V)for(var e of V(o))dt.call(o,e)&&$(t,e,o[e]);return t},_=(t,o)=>St(t,lt(o));var J=(t,o,e)=>new Promise((r,s)=>{var a=p=>{try{i(e.next(p))}catch(f){s(f)}},n=p=>{try{i(e.throw(p))}catch(f){s(f)}},i=p=>p.done?r(p.value):Promise.resolve(p.value).then(a,n);i((e=e.apply(t,o)).next())});var C=[],w=[],O=t=>{let o=t.id;return w[o]=t,C.forEach(e=>e(o)),t},gt={storeById:t=>w[t],storeList:()=>w.slice(0),watch:t=>(C.push(t),()=>{C.splice(C.indexOf(t),1)})};var R={},W=!1,K=()=>W=!0,G=()=>{W=!1,T()},At=()=>{},L=t=>typeof t=="function"?t:At,b,X=t=>b!==t||!(b=0),l=[],u=0,j=0,Q=!1,P,T=()=>{if(!(Q||W)){for(Q=!0;u<j;u+=3){let t=l[u+1];for(let[o,e]of t){b=o;try{e(),P=L(o(l[u],l[u+2])),b===o?t.set(o,P):P()}catch(r){console.error(r)}}}l=[],u=0,j=0,b=0,Q=!1}},I=(t,o,e)=>{if(o.size!==0){let r;W&&~(r=l.indexOf(o,u))?(l[r-1]=t,l[r+1]=e):j=l.push(t,o,e)}},S=t=>{var o;return(o=R[t])!=null?o:R[t]=new Map};var D=[],k=new Array(50),N=!0,Y=()=>N=!1,Z=()=>{N=!0,E(D.length-1,[])},tt=t=>D[t]=k[t]=[],E=(t,o)=>{for(let e of o)D[e].push(t);if(N){let e=t+1;for(let r=D.length-1;r>=0;r--){let s=new Array(e),a=n=>{if(!(n in s)){s[n]=n;for(let i of D[n])a(i)}};a(r),s[r]=void 0,k[r]=s.filter(n=>n!==void 0)}}},F=t=>k[t];var et="object",d=(t,o)=>{if(t===o)return!1;if(t==null||o==null||typeof o!==et)return!0;for(let e in o){if(!(e in t))return!0;let r=o[e],s=t[e];if(r!=null&&s!=null&&typeof r===et){for(let a in r)if(r[a]!==s[a])return!0}else if(r!==s)return!0}for(let e in t)if(!(e in o))return!0;return!1},xt=t=>"id"in t&&"tag"in t&&"off"in t&&typeof t.off=="function",B=t=>t.tag[0]==="w";var M=[],m=[],ot=(t,o,e)=>{I(m[t]=o,S(t),e&&(e={id:e.id,path:e.path.concat(t)}));for(let r of F(t))M[r](m)&&I(m[r],S(r),e&&{id:e.id,path:e.path.concat(r)});T()},rt=t=>M[t],nt=(t,o,e,r)=>{let s=r.stateCheck,a=t.id,n=0,i=new Array(o.length);M[a]=p=>{if(!t.isOff()){n=0;for(let c of o)i[n++]=p[c];let f=e(i);if(!s||d(p[a],f))return p[a]=f,1}}};var ht=0,U=(t,o,e,r)=>{let s=ht++;m[s]=t;let a=S(s);tt(s);let n=()=>m[s],i=!1;return{id:s,tag:r,get:n,unsafe:n,name:()=>o||(o=e(s)),isOff:()=>i,off:()=>{i=!0,a.forEach(p=>p()),a.clear()}}};var v=!1,st=()=>v,bt=1,at=["#set"],it=(t="")=>{if(v){let o=bt++;return at[o]=t||`${o}`,{id:o,path:[]}}},z=()=>v?{id:0,path:[]}:void 0,Tt={nameById:t=>at[t],setAddInfo:t=>v=t};var pt=(t,o)=>{let e=[],r=(p,f)=>e.every(c=>c(p,f)),s=o.stateCheck,a=t.id,n=p=>{let f=m[a];return!t.isOff()&&(!s||d(f,p))&&r(f,p)},i=(p,f=z())=>{let c=m[a];!t.isOff()&&(!s||d(c,p))&&r(c,p)&&ot(a,p,f)};return _(q({},t),{tag:"w"+t.tag.slice(1),set:i,canSet:n,isValid:r,readOnly:t,validator:p=>(e.push(p),()=>{e.splice(e.indexOf(p),1)})})};var ct={stateCheck:!0},x=(t={})=>Object.assign({},ct,t);var It=(t,o="",e={})=>O(pt(U(t,o,r=>`${r}`,"rs"),x(e)));var Dt=(t,o,e="",r={})=>{let s=!Array.isArray(t),a=s?[t.id]:t.map(i=>i.id),n=U(o(s?t.get():t.map(i=>i.get()),!0),e,i=>`${i}:[${a.join(",")}]`,"ra");return E(n.id,a),nt(n,a,s?i=>o(i[0],!1):i=>o(i,!1),x(r)),O(n)};var Ct=(t,o,e={})=>{let r=x(e).stateCheck,s=!Array.isArray(t),a=s?[t]:t,n=a.map(c=>c.get()),i,p=()=>{let c=L(i);i=0,c()},f=a.map((c,y)=>{let h=(A,H)=>(r?d(n[y],A)&&(i=o(s?n[y]=A:n=a.map(yt=>yt.get()),!1,H)):(n[y]=A,i=o(s?A:n,!1,H)),p);return[h,S(c.id).set(h,p)]});try{i=o(s?n[0]:n,!0,st()?{id:-1,path:s?[t.id]:[]}:void 0)}catch(c){console.error(c)}return()=>f.splice(0,f.length).map(([c,y])=>X(c)&&y.delete(c)).some(c=>c)&&p()};var ft=(t,o,e)=>{let r=it(e),{id:s,set:a}=t;return(...n)=>a(o(m[s],...n),r)},Ot=(t,o)=>Object.keys(o).reduce((e,r)=>(e[r]=ft(t,o[r],r),e),{store:t,set:t.set,off:t.off});var g=(...t)=>({off:()=>t.splice(0).forEach(o=>o&&("off"in o?o.off:o)()),add:(...o)=>o.forEach(e=>~t.indexOf(e)||t.push(e)),remove:o=>delete t[t.indexOf(o)]});var Wt=t=>(...o)=>{let e=g(),r=t(e,...o);return e.add(r.store),Object.assign(r,{off:e.off})};var Ft=t=>(...o)=>{let e=g();return t(e,...o),e};var Ut=(t,o=100)=>{let e=Date.now(),r=!1,s=()=>{if(e!==0){r=!0;let n=Date.now();try{t(n-e),e=r?n:0}catch(i){console.error("Diff interval tick error:",i)}r=!1}},a=setInterval(s,o);return()=>{e!==0&&(clearInterval(a),r?r=!1:(s(),e=0))}};var vt=(t,o=0)=>{let e=()=>{~r&&(clearTimeout(r),r=-1,t())},r=setTimeout(e,o);return e};var zt=(...t)=>g(...t).off;var wt=(t,o)=>{let e=[],r=[];for(let s of t){let a=s.id,n=F(a);e=e.concat(a,n),r[a]=n.map(rt)}return e=[...new Set(e)].sort(),(...s)=>J(null,null,function*(){let a,n=[],i=m.slice(0);for(let f of e)n[f]=i[f];let p=t.map(f=>{let c=f.id,y=()=>n[c];return B(f)?{get:y,unsafe:y,set:h=>{if(f.canSet(h)){n[c]=h;for(let A of r[c])A(n)}}}:{get:y,unsafe:y}});try{let f=yield o(p,...s);if(e.every(c=>{let y=i[c];return Object.is(y,m[c])||Object.is(y,n[c])})){Object.assign(m,n),n=[];let c=z();for(let y of e)I(m[y],S(y),c&&{id:c.id,path:c.path.concat(y)});return T(),f}else a=Error("Commit failed due to state changes")}catch(f){a=f}throw n=[],a})};var Rt={stores:{start:Y,end:Z},notify:{start:K,end:G}};export{Tt as ActionAPI,gt as StoreAPI,ft as action,Ot as actions,Dt as adapter,Rt as batch,g as cleaner,Wt as creator,B as isActionStore,xt as isAnyStore,ct as mainConfig,Ut as setDiffUnInterval,vt as setUnTimeout,Ft as setup,It as store,wt as tx,zt as unsubscribe,Ct as watch};