tinybase
Version:
A reactive data store and sync engine.
2 lines (1 loc) • 17.9 kB
JavaScript
const e=e=>typeof e,t="",s=e(t),l=e(!0),a=e(0),n=e(e),r="type",o="default",c="allowNull",i="Listener",d="Has",u="Ids",g="Table",h=g+"s",b=g+u,f="Row",C=f+"Count",T=f+u,v="Cell",w=v+u,V="Value",I=V+"s",p=V+u,R=e=>t+e,y=(e,t)=>e.startsWith(t),m=(e,t)=>e.endsWith(t),M=(e,s=t,l)=>e.split(s,l),S=e=>(t,s,l)=>e(t)?l?.():s(t),L=globalThis,H=Math,J=H.max,E=H.floor,D=isFinite,F=e=>null==e,O=e=>void 0===e,x=e=>null===e,z=S(F),A=S(O),N=e=>e==s||e==l,P=t=>e(t)==n,W=e=>Array.isArray(e),k=(e,t,s)=>e.slice(t,s),j=e=>e.length,U=()=>{},q=async(e,t,s)=>{try{return await e()}catch(e){t?.(e)}},B=t=>{if(x(t))return"null";const s=e(t);return N(s)||s==a&&D(t)?s:void 0},G=e=>O(e)||!O(B(e)),K=(e,t,s,l,a)=>O(a)?e.delCell(t,s,l,!0):e.setCell(t,s,l,a),Q=(e,t,s)=>O(s)?e.delValue(t):e.setValue(t,s),X=(e,t)=>e.forEach(t),Y=(e,t)=>e.map(t),Z=(e,t,s)=>e.reduce(t,s),$=(e,...t)=>e.push(...t),_=e=>t=>Z(re(t),(t,s)=>t+e(s),0),ee=e=>e?.size??0,te=_(ee),se=_(te),le=_(se),ae=(e,t)=>e?.has(t)??!1,ne=e=>O(e)||0==ee(e),re=e=>[...e?.values()??[]],oe=e=>e.clear(),ce=(e,t)=>e?.forEach(t),ie=(e,t)=>e?.delete(t),de=Object,ue=e=>de.getPrototypeOf(e),ge=de.isFrozen,he=de.entries,be=e=>!F(e)&&z(ue(e),e=>e==de.prototype||F(ue(e)),()=>!0),fe=de.keys,Ce=de.freeze,Te=(e=[])=>de.fromEntries(e),ve=(e,t)=>t in e,we=(e,t)=>(delete e[t],e),Ve=(e,t)=>X(he(e),([e,s])=>t(s,e)),Ie=(e,t)=>Te(((e,t)=>Y(he(e),([e,s])=>t(s,e)))(e,(e,s)=>[s,t(e,s)])),pe=e=>be(e)&&0==(e=>j(fe(e)))(e),Re=(e,t,s)=>(ve(e,t)||(e[t]=s()),e[t]),ye=(e,t,s,l=0)=>F(e)||!be(e)||!l&&pe(e)||ge(e)?(s?.(),!1):(Ve(e,(s,l)=>{t(s,l)||we(e,l)}),!!l||!pe(e)),me=JSON.stringify,Me=JSON.parse,Se=e=>me(e,(e,t)=>t instanceof Map?de.fromEntries([...t]):t),Le=new L.TextEncoder,He=e=>{let t=2166136261;return X(Le.encode(e),e=>{t^=e,t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24)}),t>>>0},Je=(e,t)=>(e^t)>>>0,Ee=(e,t)=>He(e+":"+t),De=e=>new Map(e),Fe=e=>[...e?.keys()??[]],Oe=(e,t)=>e?.get(t),xe=(e,t)=>ce(e,(e,s)=>t(s,e)),ze=(e,t,s)=>O(s)?(ie(e,t),e):e?.set(t,s),Ae=(e,t,s,l)=>(ae(e,t)?l?.(Oe(e,t)):ze(e,t,s()),Oe(e,t)),Ne=(e,t,s,l=ze)=>(Ie(t,(t,l)=>s(e,l,t)),xe(e,s=>ve(t,s)?0:l(e,s)),e),Pe=(e,t,s,l)=>{const a={};return ce(e,(e,n)=>{if(!s?.(e,n)){const s=t?t(e,n):e;l?.(s)||(a[n]=s)}}),a},We=(e,t,s)=>Pe(e,e=>Pe(e,t,s),ne,pe),ke=(e,t,s)=>Pe(e,e=>We(e,t,s),ne,pe),je=(e,t)=>{const s=De();return ce(e,(e,l)=>s.set(l,t?.(e)??e)),s},Ue=e=>je(e,je),qe=e=>je(e,Ue),Be=(e,t,s,l,a=0)=>A((s?Ae:Oe)(e,t[a],a>j(t)-2?s:De),n=>{if(a>j(t)-2)return l?.(n)&&ze(e,t[a]),n;const r=Be(n,t,s,l,a+1);return ne(n)&&ze(e,t[a]),r}),Ge=M("-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"),Ke=De(Y(Ge,(e,t)=>[e,t])),Qe=e=>Ge[63&e],Xe=(e,t)=>Oe(Ke,e[t])??0,Ye=L.crypto?e=>L.crypto.getRandomValues(e):e=>Y(e,()=>E(256*H.random())),Ze=2**36,$e=2**30,_e=2**24,et=2**18,tt=4096,st=e=>{const t=He(e);return Qe(t/_e)+Qe(t/et)+Qe(t/tt)+Qe(t/64)+Qe(t)},lt=e=>new Set(W(e)||O(e)?e:[e]),at=(e,t)=>e?.add(t),nt=([e,t])=>ot(e,t),rt=([e,t,s])=>[e,t,s],ot=(e,t)=>t?[e,t]:[e],ct=(e,t,s)=>[e,t,s],it=e=>e[2],dt=(e,t)=>t>e?(e?He(e):0)^He(t):0,ut=(e,t)=>((e??"")>(t??"")?e:t)??"",gt=(e,t,s)=>{t>e[1]&&(e[1]=t),e[2]=s>>>0},ht=(e=t)=>ot(Te(),e),bt=(e=t)=>[De(),e,0],ft=([e,t,s],l=rt)=>[Pe(e,l),t,s],Ct=([e,t],s=nt)=>ot(Pe(e,s),t),Tt=(t,l)=>{return W(t)&&3==j(t)&&(n=t[1],e(n)==s)&&e(t[2])==a&&D(t[2])&&l(t[0]);var n},vt=/^\d+$/,wt=()=>{const e=[];let s=0;return[l=>(l?e.shift():null)??t+s++,t=>{vt.test(t)&&j(e)<1e3&&$(e,t)}]},Vt=e=>[e,e],It=(e,t=te)=>t(e[0])+t(e[1]),pt=()=>[De(),De()],Rt=e=>[...e],yt=([e,t])=>e===t,mt=(e,t,s)=>ze(e,t,Oe(e,t)==-s?void 0:s),Mt=()=>{let e,s,l=!1,n=!1,u=0,y=[];const m=De(),M=De(),S=De(),L=De(),H=De(),J=De(),E=De(),D=De(),F=De(),z=De(),U=De(),G=De(),Z=De(),_=De(),re=lt(),de=De(),ue=De(),ge=De(),he=De(),fe=pt(),Te=pt(),Ve=pt(),Re=pt(),me=pt(),Le=pt(),He=pt(),Je=pt(),Ee=pt(),Ge=pt(),Ke=pt(),Qe=pt(),Xe=pt(),Ye=pt(),Ze=pt(),$e=pt(),_e=pt(),et=pt(),tt=pt(),st=pt(),nt=pt(),rt=pt(),ot=De(),ct=pt(),[it,dt,ut,gt]=(()=>{let e;const[s,l]=wt(),a=De();return[(l,n,r,o=[],c=()=>[])=>{e??=ks;const i=s(1);return ze(a,i,[l,n,r,o,c]),at(Be(n,r??[t],lt),i),i},(s,l,...n)=>X(((e,s=[t])=>{const l=[],a=(e,t)=>t==j(s)?$(l,e):x(s[t])?ce(e,e=>a(e,t+1)):X([s[t],null],s=>a(Oe(e,s),t+1));return a(e,0),l})(s,l),t=>ce(t,t=>Oe(a,t)[0](e,...l??[],...n))),e=>A(Oe(a,e),([,s,n])=>(Be(s,n??[t],void 0,t=>(ie(t,e),ne(t)?1:0)),ze(a,e),l(e),n)),t=>A(Oe(a,t),([t,,s=[],l,a])=>{const n=(...r)=>{const o=j(r);o==j(s)?t(e,...r,...a(r)):x(s[o])?X(l[o]?.(...r)??[],e=>n(...r,e)):n(...r,s[o])};n()})]})(),ht=e=>{if(!ye(e,(e,t)=>[r,o,c].includes(t)))return!1;const t=e[r];if(!N(t)&&t!=a)return!1;const s=e[o];return!(x(s)&&!e[c]||(x(s)||B(s)==t||we(e,o),0))},bt=W,ft=(t,s)=>(!e||ae(U,s)||$t(s))&&ye(t,(e,t)=>Ct(s,t,e),()=>$t(s)),Ct=(e,t,s,l)=>ye(l?s:Lt(s,e,t),(l,a)=>A(Tt(e,t,a,l),e=>(s[a]=e,!0),()=>!1),()=>$t(e,t)),Tt=(t,s,l,a)=>e?A(Oe(Oe(U,t),l),e=>x(a)?e[c]?a:$t(t,s,l,a,e[o]):B(a)==e[r]?a:$t(t,s,l,a,e[o]),()=>$t(t,s,l,a)):O(B(a))?$t(t,s,l,a):a,vt=(e,t)=>ye(t?e:Ht(e),(t,s)=>A(St(s,t),t=>(e[s]=t,!0),()=>!1),()=>_t()),St=(e,t)=>s?A(Oe(Z,e),s=>x(t)?s[c]?t:_t(e,t,s[o]):B(t)==s[r]?t:_t(e,t,s[o]),()=>_t(e,t)):O(B(t))?_t(e,t):t,Lt=(e,t,s)=>(A(Oe(G,t),([l,a])=>{ce(l,(t,s)=>{ve(e,s)||(e[s]=t)}),ce(a,l=>{ve(e,l)||$t(t,s,l)})}),e),Ht=e=>(s&&(ce(_,(t,s)=>{ve(e,s)||(e[s]=t)}),ce(re,t=>{ve(e,t)||_t(t)})),e),Jt=e=>Ne(U,e,(e,t,s)=>{const l=De(),a=lt();Ne(Ae(U,t,De),s,(e,t,s)=>{ze(e,t,s),A(s[o],e=>ze(l,t,e),()=>at(a,t))}),ze(G,t,[l,a])},(e,t)=>{ze(U,t),ze(G,t)}),Et=e=>Ne(Z,e,(e,t,s)=>{ze(Z,t,s),A(s[o],e=>ze(_,t,e),()=>at(re,t))},(e,t)=>{ze(Z,t),ze(_,t),ie(re,t)}),Dt=e=>pe(e)?Ds():Ss(e),Ft=e=>Ne(ge,e,(e,t,s)=>Ot(t,s),(e,t)=>jt(t)),Ot=(e,t)=>Ne(Ae(ge,e,()=>(Gt(e,1),ze(de,e,wt()),ze(ue,e,De()),De())),t,(t,s,l)=>xt(e,t,s,l),(t,s)=>Ut(e,t,s)),xt=(e,t,s,l,a)=>Ne(Ae(t,s,()=>(Kt(e,s,1),De())),l,(t,l,a)=>zt(e,s,t,l,a),(l,n)=>qt(e,t,s,l,n,a)),zt=(e,t,s,l,a)=>{ae(s,l)||Qt(e,t,l,1);const n=Oe(s,l);a!==n&&(Xt(e,t,l,n,a),ze(s,l,a))},At=(e,t,s,l,a)=>A(Oe(t,s),t=>zt(e,s,t,l,a),()=>xt(e,t,s,Lt({[l]:a},e,s))),Nt=e=>pe(e)?xs():Ls(e),Pt=e=>Ne(he,e,(e,t,s)=>Wt(t,s),(e,t)=>Bt(t)),Wt=(e,t)=>{ae(he,e)||Yt(e,1);const s=Oe(he,e);t!==s&&(Zt(e,s,t),ze(he,e,t))},kt=e=>Oe(ge,e)??Ot(e,{}),jt=e=>Ot(e,{}),Ut=(e,t,s)=>{const[,l]=Oe(de,e);l(s),xt(e,t,s,{},!0)},qt=(e,t,s,l,a,n)=>{const r=Oe(Oe(G,e)?.[0],a);if(!O(r)&&!n)return zt(e,s,l,a,r);const o=t=>{Xt(e,s,t,Oe(l,t)),Qt(e,s,t,-1),ze(l,t)};O(r)?o(a):xe(l,o),ne(l)&&(Kt(e,s,-1),ne(ze(t,s))&&(Gt(e,-1),ze(ge,e),ze(de,e),ze(ue,e)))},Bt=e=>{const t=Oe(_,e);if(!O(t))return Wt(e,t);Zt(e,Oe(he,e)),Yt(e,-1),ze(he,e)},Gt=(e,t)=>mt(m,e,t),Kt=(e,t,s)=>mt(Ae(L,e,De),t,s)&&ze(S,e,Ae(S,e,()=>0)+s),Qt=(e,t,s,l)=>{const a=Oe(ue,e),n=Oe(a,s)??0;(0==n&&1==l||1==n&&-1==l)&&mt(Ae(M,e,De),s,l),ze(a,s,n!=-l?n+l:void 0),mt(Ae(Ae(H,e,De),t,De),s,l)},Xt=(e,t,s,l,a)=>{Ae(Ae(Ae(J,e,De),t,De),s,()=>[l,0])[1]=a,y[3]?.(e,t,s,a)},Yt=(e,t)=>mt(E,e,t),Zt=(e,t,s)=>{Ae(D,e,()=>[t,0])[1]=s,y[4]?.(e,s)},$t=(e,t,s,l,a)=>($(Ae(Ae(Ae(F,e,De),t,De),s,()=>[]),l),a),_t=(e,t,s)=>($(Ae(z,e,()=>[]),t),s),es=(e,t,s)=>A(Oe(Oe(Oe(J,e),t),s),([e,t])=>[!0,e,t],()=>[!1,...Vt(Cs(e,t,s))]),ts=e=>A(Oe(D,e),([e,t])=>[!0,e,t],()=>[!1,...Vt(ws(e))]),ss=e=>ne(F)||ne($e[e])?0:ce(e?qe(F):F,(t,s)=>ce(t,(t,l)=>ce(t,(t,a)=>dt($e[e],[s,l,a],t)))),ls=e=>ne(z)||ne(_e[e])?0:ce(e?je(z):z,(t,s)=>dt(_e[e],[s],t)),as=(e,t,s,l)=>{if(!ne(e))return dt(t,l,()=>Pe(e)),xe(e,(e,t)=>dt(s,[...l??[],e],1==t)),1},ns=e=>{const t=Vs();t!=l&&dt(fe[e],void 0,t);const s=ne(Ge[e]),a=ne(Xe[e])&&ne(Ye[e])&&ne(Ee[e])&&ne(Ke[e])&&ne(Le[e])&&ne(He[e])&&ne(Je[e])&&s&&ne(Ve[e])&&ne(Re[e]),n=ne(Ze[e])&&ne(Qe[e])&&ne(me[e])&&ne(Te[e]);if(!a||!n){const t=e?[je(m),Ue(M),je(S),Ue(L),qe(H),qe(J)]:[m,M,S,L,H,J];if(!a){as(t[0],Ve[e],Re[e]),ce(t[1],(t,s)=>as(t,Le[e],He[e],[s])),ce(t[2],(t,s)=>{0!=t&&dt(Je[e],[s],gs(s))});const l=lt();ce(t[3],(t,a)=>{as(t,Ee[e],Ke[e],[a])&&!s&&(dt(Ge[e],[a,null]),at(l,a))}),s||ce(t[5],(t,s)=>{if(!ae(l,s)){const l=lt();ce(t,e=>ce(e,([t,s],a)=>s!==t?at(l,a):ie(e,a))),ce(l,t=>dt(Ge[e],[s,t]))}}),ce(t[4],(t,s)=>ce(t,(t,l)=>as(t,Xe[e],Ye[e],[s,l])))}if(!n){let s;ce(t[5],(t,l)=>{let a;ce(t,(t,n)=>{let r;ce(t,([t,o],c)=>{o!==t&&(dt(Ze[e],[l,n,c],o,t,es),s=a=r=1)}),r&&dt(Qe[e],[l,n],es)}),a&&dt(me[e],[l],es)}),s&&dt(Te[e],void 0,es)}}},rs=e=>{const t=ms();t!=n&&dt(et[e],void 0,t);const s=ne(st[e])&&ne(nt[e]),l=ne(rt[e])&&ne(tt[e]);if(!s||!l){const t=e?[je(E),je(D)]:[E,D];if(s||as(t[0],st[e],nt[e]),!l){let s;ce(t[1],([t,l],a)=>{l!==t&&(dt(rt[e],[a],l,t,ts),s=1)}),s&&dt(tt[e],void 0,ts)}}},os=(e,...t)=>(Ns(()=>e(...Y(t,R))),ks),cs=(e,t,s,l,a)=>{let n=bs(e,t,...s);return it(()=>{const a=bs(e,t,...s);var r,o,c;o=n,j(r=a)===j(o)&&(c=(e,t)=>o[t]===e,r.every(c))||(n=a,l(ks,e,t,...s,n))},Ge[a?1:0],[e,t],[ds])},is=()=>ke(ge),ds=()=>Fe(ge),us=e=>Fe(Oe(ue,R(e))),gs=e=>ee(Oe(ge,R(e))),hs=e=>Fe(Oe(ge,R(e))),bs=(e,t,s,l=0,a)=>{return be(e)?bs(e.tableId,e.cellId,e.descending,e.offset,e.limit):Y(k((r=Oe(ge,R(e)),o=(e,s)=>[O(t)?s:Oe(e,R(t)),s],n=([e],[t])=>((e??0)<(t??0)?-1:1)*(s?-1:1),Y([...r?.entries()??[]],([e,t])=>o(t,e)).sort(n)),l,O(a)?a:l+a),([,e])=>e);var n,r,o},fs=(e,t)=>Fe(Oe(Oe(ge,R(e)),R(t))),Cs=(e,t,s)=>Oe(Oe(Oe(ge,R(e)),R(t)),R(s)),Ts=()=>Pe(he),vs=()=>Fe(he),ws=e=>Oe(he,R(e)),Vs=()=>!ne(ge),Is=e=>ae(ge,R(e)),ps=(e,t)=>ae(Oe(ue,R(e)),R(t)),Rs=(e,t)=>ae(Oe(ge,R(e)),R(t)),ys=(e,t,s)=>ae(Oe(Oe(ge,R(e)),R(t)),R(s)),ms=()=>!ne(he),Ms=e=>ae(he,R(e)),Ss=e=>os(()=>(e=>ye(e,ft,$t))(e)?Ft(e):0),Ls=e=>os(()=>vt(e)?Pt(e):0),Hs=e=>(q(()=>Dt(Me(e))),ks),Js=t=>os(()=>{if((e=ye(t,e=>ye(e,ht)))&&(Jt(t),!ne(ge))){const e=is();Ds(),Ss(e)}}),Es=e=>os(()=>{if(s=(e=>ye(e,ht))(e)){const t=Ts();As(),xs(),s=!0,Et(e),Ls(t)}}),Ds=()=>os(()=>Ft({})),Fs=e=>os(e=>ae(ge,e)?jt(e):0,e),Os=(e,t)=>os((e,t)=>A(Oe(ge,e),s=>ae(s,t)?Ut(e,s,t):0),e,t),xs=()=>os(()=>Pt({})),zs=()=>os(()=>{Jt({}),e=!1}),As=()=>os(()=>{Et({}),s=!1}),Ns=(e,t)=>{if(-1!=u){Ps();const s=e();return Ws(t),s}},Ps=()=>(-1!=u&&u++,1==u&&(y[0]?.(),dt(ot)),ks),Ws=e=>(u>0&&(u--,0==u&&(u=1,ss(1),ne(J)||ns(1),ls(1),ne(D)||rs(1),e?.(ks)&&(ce(J,(e,t)=>ce(e,(e,s)=>ce(e,([e],l)=>K(ks,t,s,l,e)))),oe(J),ce(D,([e],t)=>Q(ks,t,e)),oe(D)),dt(ct[0],void 0),u=-1,ss(0),ne(J)||ns(0),ls(0),ne(D)||rs(0),y[1]?.(),dt(ct[1],void 0),y[2]?.(),u=0,l=Vs(),n=ms(),X([m,M,S,L,H,J,F,E,D,z],oe))),ks),ks={getContent:()=>[is(),Ts()],getTables:is,getTableIds:ds,getTable:e=>We(Oe(ge,R(e))),getTableCellIds:us,getRowCount:gs,getRowIds:hs,getSortedRowIds:bs,getRow:(e,t)=>Pe(Oe(Oe(ge,R(e)),R(t))),getCellIds:fs,getCell:Cs,getValues:Ts,getValueIds:vs,getValue:ws,hasTables:Vs,hasTable:Is,hasTableCell:ps,hasRow:Rs,hasCell:ys,hasValues:ms,hasValue:Ms,getTablesJson:()=>Se(ge),getValuesJson:()=>Se(he),getJson:()=>Se([ge,he]),getTablesSchemaJson:()=>Se(U),getValuesSchemaJson:()=>Se(Z),getSchemaJson:()=>Se([U,Z]),hasTablesSchema:()=>e,hasValuesSchema:()=>s,setContent:e=>os(()=>{const t=P(e)?e():e;bt(t)&&(([e,t])=>{(pe(e)?Ds:Ss)(e),(pe(t)?xs:Ls)(t)})(t)}),setTables:Ss,setTable:(e,t)=>os(e=>ft(t,e)?Ot(e,t):0,e),setRow:(e,t,s)=>os((e,t)=>Ct(e,t,s)?xt(e,kt(e),t,s):0,e,t),addRow:(e,t,s=!0)=>Ns(()=>{let l;return Ct(e,l,t)&&(e=R(e),xt(e,kt(e),l=((e,t)=>{const[s]=Oe(de,e);let l;do{l=s(t)}while(ae(Oe(ge,e),l));return l})(e,s?1:0),t)),l}),setPartialRow:(e,t,s)=>os((e,t)=>{if(Ct(e,t,s,1)){const l=kt(e);Ie(s,(s,a)=>At(e,l,t,a,s))}},e,t),setCell:(e,t,s,l)=>os((e,t,s)=>A(Tt(e,t,s,P(l)?l(Cs(e,t,s)):l),l=>At(e,kt(e),t,s,l)),e,t,s),setValues:Ls,setPartialValues:e=>os(()=>vt(e,1)?Ie(e,(e,t)=>Wt(t,e)):0),setValue:(e,t)=>os(e=>A(St(e,P(t)?t(ws(e)):t),t=>Wt(e,t)),e),applyChanges:e=>os(()=>{Ie(e[0],(e,t)=>O(e)?Fs(t):Ie(e,(e,s)=>O(e)?Os(t,s):Ie(e,(e,l)=>K(ks,t,s,l,e)))),Ie(e[1],(e,t)=>Q(ks,t,e))}),setTablesJson:Hs,setValuesJson:e=>(q(()=>Nt(Me(e))),ks),setJson:e=>os(()=>q(()=>{const[t,s]=Me(e);Dt(t),Nt(s)},()=>Hs(e))),setTablesSchema:Js,setValuesSchema:Es,setSchema:(e,t)=>os(()=>{Js(e),Es(t)}),delTables:Ds,delTable:Fs,delRow:Os,delCell:(e,t,s,l)=>os((e,t,s)=>A(Oe(ge,e),a=>A(Oe(a,t),n=>ae(n,s)?qt(e,a,t,n,s,l):0)),e,t,s),delValues:xs,delValue:e=>os(e=>ae(he,e)?Bt(e):0,e),delTablesSchema:zs,delValuesSchema:As,delSchema:()=>os(()=>{zs(),As()}),transaction:Ns,startTransaction:Ps,getTransactionChanges:()=>[Pe(J,(e,t)=>-1===Oe(m,t)?void 0:Pe(e,(e,s)=>-1===Oe(Oe(L,t),s)?void 0:Pe(e,([,e])=>e,e=>yt(e)),ne,pe),ne,pe),Pe(D,([,e])=>e,e=>yt(e)),1],getTransactionLog:()=>[!ne(J),!ne(D),ke(J,Rt,yt),ke(F),Pe(D,Rt,yt),Pe(z),Pe(m),We(L),ke(H),Pe(E)],finishTransaction:Ws,forEachTable:e=>ce(ge,(t,s)=>e(s,e=>ce(t,(t,s)=>e(s,e=>xe(t,e))))),forEachTableCell:(e,t)=>xe(Oe(ue,R(e)),t),forEachRow:(e,t)=>ce(Oe(ge,R(e)),(e,s)=>t(s,t=>xe(e,t))),forEachCell:(e,t,s)=>xe(Oe(Oe(ge,R(e)),R(t)),s),forEachValue:e=>xe(he,e),addSortedRowIdsListener:(e,t,s,l,a,n,r)=>be(e)?cs(e.tableId,e.cellId,[e.descending??!1,e.offset??0,e.limit],t,s):cs(e,t,[s,l,a],n,r),addStartTransactionListener:e=>it(e,ot),addWillFinishTransactionListener:e=>it(e,ct[0]),addDidFinishTransactionListener:e=>it(e,ct[1]),callListener:e=>(gt(e),ks),delListener:e=>(ut(e),ks),getListenerStats:()=>({hasTables:It(fe),tables:It(Te),tableIds:It(Ve),hasTable:It(Re),table:It(me),tableCellIds:It(Le),hasTableCell:It(He,se),rowCount:It(Je),rowIds:It(Ee),sortedRowIds:It(Ge),hasRow:It(Ke,se),row:It(Qe,se),cellIds:It(Xe,se),hasCell:It(Ye,le),cell:It(Ze,le),invalidCell:It($e,le),hasValues:It(et),values:It(tt),valueIds:It(st),hasValue:It(nt),value:It(rt),invalidValue:It(_e),transaction:te(ot)+It(ct)}),isMergeable:()=>!1,createStore:Mt,addListener:it,callListeners:dt,setInternalListeners:(e,t,s,l,a)=>y=[e,t,s,l,a]};return Ie({[d+h]:[0,fe,[],()=>[Vs()]],[h]:[0,Te],[b]:[0,Ve],[d+g]:[1,Re,[ds],e=>[Is(...e)]],[g]:[1,me,[ds]],[g+w]:[1,Le,[ds]],[d+g+v]:[2,He,[ds,us],e=>[ps(...e)]],[C]:[1,Je,[ds]],[T]:[1,Ee,[ds]],[d+f]:[2,Ke,[ds,hs],e=>[Rs(...e)]],[f]:[2,Qe,[ds,hs]],[w]:[2,Xe,[ds,hs]],[d+v]:[3,Ye,[ds,hs,fs],e=>[ys(...e)]],[v]:[3,Ze,[ds,hs,fs],e=>Vt(Cs(...e))],InvalidCell:[3,$e],[d+I]:[0,et,[],()=>[ms()]],[I]:[0,tt],[p]:[0,st],[d+V]:[1,nt,[vs],e=>[Ms(...e)]],[V]:[1,rt,[vs],e=>Vt(ws(e[0]))],InvalidValue:[1,_e]},([e,t,s,l],a)=>{ks["add"+a+i]=(...a)=>it(a[e],t[a[e+1]?1:0],e>0?k(a,0,e):void 0,s,l)}),Ce(ks)},St={HasTable:1,Table:1,TableCellIds:1,HasTableCell:2,RowCount:1,RowIds:1,SortedRowIds:5,HasRow:2,Row:2,CellIds:2,HasCell:3,Cell:3,HasValue:1,Value:1,InvalidCell:3,InvalidValue:1},Lt=(e=t)=>[bt(e),bt(e)],Ht=(e,s)=>{let l=1,a=Lt(),n=0;const r=De(),o=lt(),[c,d]=((e,s=Date.now)=>{let l=0,a=-1;const n=A(e,st,()=>((e=16)=>Z(Ye(new Uint8Array(e)),(e,t)=>e+Qe(t),t))(5)),r=e=>{const t=l,[n,r]=O(e)||""==e?[0,0]:c(e);l=J(t,n,s()),a=l==t?l==n?J(a,r):a:l==n?r:-1},o=(e,t,s)=>Qe(e/Ze)+Qe(e/$e)+Qe(e/_e)+Qe(e/et)+Qe(e/tt)+Qe(e/64)+Qe(e)+Qe(t/et)+Qe(t/tt)+Qe(t/64)+Qe(t)+(O(s)?n:st(s)),c=e=>[Xe(e,0)*Ze+Xe(e,1)*$e+Xe(e,2)*_e+Xe(e,3)*et+Xe(e,4)*tt+64*Xe(e,5)+Xe(e,6),Xe(e,7)*et+Xe(e,8)*tt+64*Xe(e,9)+Xe(e,10),e.slice(11)];return[()=>(r(),o(l,++a)),r,o,c,()=>l,()=>a,()=>n]})(e,s),u=Mt(),g=e=>{const t=l;return l=0,e(),l=t,w},h=(e,s=0)=>{const l={},n={},[[r,o=t,c=0],i]=e,[u,g]=a,[h,f,C]=u;let T=s?c:C,v=o;Ve(r,([e,a=t,n=0],r)=>{const o=Ae(h,r,bt),[c,i,d]=o;let u=s?n:d,g=a;Ve(e,(e,t)=>{const[a,n,o]=b(e,Ae(c,t,bt),Re(Re(l,r,Te),t,Te),s);u^=s?0:Je(n?Ee(t,n):0,Ee(t,o)),g=ut(g,a)}),u^=s?0:dt(i,a),gt(o,a,u),T^=s?0:Je(d?Ee(r,d):0,Ee(r,o[2])),v=ut(v,g)}),T^=s?0:dt(f,o),gt(u,o,T);const[w]=b(i,g,n,s);return d(ut(v,w)),[l,n,1]},b=(e,s,l,a)=>{const[n,r=t,o=0]=e,[c,i,d]=s;let u=r,g=a?o:d;return Ve(n,([e,s=t,n=0],r)=>{const o=Ae(c,r,()=>[void 0,t,0]),[,i,d]=o;var h;(!i||s>i)&&(gt(o,s,a?n:(h=s,He(Se(e??null)+":"+h))),o[0]=e,l[r]=e,g^=a?0:Je(Ee(r,d),Ee(r,o[2])),u=ut(u,s))}),g^=a?0:dt(i,r),gt(s,r,g),[u,d,s[2]]},f=U,C=U,T=()=>[ft(a[0],e=>ft(e,e=>ft(e))),ft(a[1])],v=e=>g(()=>u.applyChanges(h(e))),w={getMergeableContent:T,getMergeableContentHashes:()=>[a[0][2],a[1][2]],getMergeableTableHashes:()=>Pe(a[0][0],it),getMergeableTableDiff:e=>{const t=ht(a[0][1]),s={};return xe(a[0][0],(l,[a,n,r])=>ve(e,l)?r!=e[l]?s[l]=r:0:t[0][l]=Ct([a,n],e=>Ct(e))),[t,s]},getMergeableRowHashes:e=>{const t={};return Ve(e,(e,s)=>A(Oe(a[0][0],s),([l,,a])=>a!=e?xe(l,(e,[,,l])=>Re(t,s,Te)[e]=l):0)),t},getMergeableRowDiff:e=>{const t=ht(a[0][1]),s={};return Ve(e,(e,l)=>xe(Oe(a[0][0],l)?.[0],(a,[n,r,o])=>ve(e,a)?o!==e[a]?Re(s,l,Te)[a]=o:0:Re(t[0],l,ht)[0][a]=Ct([n,r]))),[t,s]},getMergeableCellHashes:e=>{const t={};return Ve(e,(e,s)=>A(Oe(a[0][0],s),([l])=>Ve(e,(e,a)=>A(Oe(l,a),([l,,n])=>n!==e?xe(l,(e,[,,l])=>Re(Re(t,s,Te),a,Te)[e]=l):0)))),t},getMergeableCellDiff:e=>{const[[t,s]]=a,l={};return Ve(e,(e,s)=>Ve(e,(e,a)=>A(Oe(t,s),([t,n])=>A(Oe(t,a),([t,r])=>xe(t,(t,[o,c,i])=>i!==e[t]?Re(Re(l,s,()=>ht(n))[0],a,()=>ht(r))[0][t]=[o,c]:0))))),ot(l,s)},getMergeableValueHashes:()=>Pe(a[1][0],it),getMergeableValueDiff:e=>{const[,[t,s]]=a,l=Pe(t,nt,([,,t],s)=>t==e?.[s]);return ot(l,s)},setMergeableContent:e=>g(()=>(e=>W(e)&&2==j(e)&&Tt(e[0],e=>ye(e,e=>Tt(e,e=>ye(e,e=>Tt(e,e=>ye(e,e=>Tt(e,G),void 0,1)),void 0,1)),void 0,1))&&Tt(e[1],e=>ye(e,e=>Tt(e,G),void 0,1)))(e)?u.transaction(()=>{u.delTables().delValues(),a=Lt(),u.applyChanges(h(e,1))}):0),setDefaultContent:e=>(u.transaction(()=>{n=1,u.setContent(e),n=0}),w),getTransactionMergeableChanges:(e=!1)=>{const[[t,s,l],[n,c,i]]=a,d=e?ct:ot,u={};ce(r,(e,s)=>A(Oe(t,s),([t,l,a])=>{const n={};ce(e,(e,s)=>A(Oe(t,s),([t,l,a])=>{const r={};ce(e,e=>{A(Oe(t,e),([t,s,l])=>r[e]=d(t,s,l))}),n[s]=d(r,l,a)})),u[s]=d(n,l,a)}));const g={};return ce(o,e=>A(Oe(n,e),([t,s,l])=>g[e]=d(t,s,l))),[d(u,s,l),d(g,c,i),1]},applyMergeableChanges:v,merge:e=>{const t=T(),s=e.getMergeableContent();return e.applyMergeableChanges(t),v(s)}};return u.setInternalListeners(f,C,()=>{oe(r),oe(o)},(e,s,a,o)=>{at(Ae(Ae(r,e,De),s,lt),a),l&&h([[{[e]:[{[s]:[{[a]:[o,n?t:c()]}]}]}],[{}],1])},(e,s)=>{at(o,e),l&&h([[{}],[{[e]:[s,n?t:c()]}],1])}),Ie(u,(e,t)=>w[t]=y(t,"set")||y(t,"del")||y(t,"apply")||m(t,"Transaction")||t=="call"+i?(...t)=>(e(...t),w):y(t,"add")&&m(t,i)?(...s)=>{const l=St[k(t,3,-8)]??0,a=s[l];return s[l]=(e,...t)=>a(w,...t),e(...s)}:"isMergeable"==t?()=>!0:e),Ce(w)};export{Ht as createMergeableStore};