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