tinybase 2.0.1 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/lib/checkpoints.js +1 -1
  2. package/lib/checkpoints.js.gz +0 -0
  3. package/lib/debug/checkpoints.js +7 -1
  4. package/lib/debug/indexes.d.ts +37 -10
  5. package/lib/debug/indexes.js +57 -25
  6. package/lib/debug/metrics.js +19 -2
  7. package/lib/debug/queries.js +18 -2
  8. package/lib/debug/relationships.js +19 -2
  9. package/lib/debug/store.js +7 -1
  10. package/lib/debug/tinybase.js +52 -25
  11. package/lib/debug/ui-react.js +2 -1
  12. package/lib/es6/checkpoints.js +1 -1
  13. package/lib/es6/checkpoints.js.gz +0 -0
  14. package/lib/es6/indexes.d.ts +37 -10
  15. package/lib/es6/indexes.js +1 -1
  16. package/lib/es6/indexes.js.gz +0 -0
  17. package/lib/es6/metrics.js +1 -1
  18. package/lib/es6/metrics.js.gz +0 -0
  19. package/lib/es6/queries.js +1 -1
  20. package/lib/es6/queries.js.gz +0 -0
  21. package/lib/es6/relationships.js +1 -1
  22. package/lib/es6/relationships.js.gz +0 -0
  23. package/lib/es6/store.js +1 -1
  24. package/lib/es6/store.js.gz +0 -0
  25. package/lib/es6/tinybase.js +1 -1
  26. package/lib/es6/tinybase.js.gz +0 -0
  27. package/lib/indexes.d.ts +37 -10
  28. package/lib/indexes.js +1 -1
  29. package/lib/indexes.js.gz +0 -0
  30. package/lib/metrics.js +1 -1
  31. package/lib/metrics.js.gz +0 -0
  32. package/lib/queries.js +1 -1
  33. package/lib/queries.js.gz +0 -0
  34. package/lib/relationships.js +1 -1
  35. package/lib/relationships.js.gz +0 -0
  36. package/lib/store.js +1 -1
  37. package/lib/store.js.gz +0 -0
  38. package/lib/tinybase.js +1 -1
  39. package/lib/tinybase.js.gz +0 -0
  40. package/lib/umd/checkpoints.js +1 -1
  41. package/lib/umd/checkpoints.js.gz +0 -0
  42. package/lib/umd/indexes.d.ts +37 -10
  43. package/lib/umd/indexes.js +1 -1
  44. package/lib/umd/indexes.js.gz +0 -0
  45. package/lib/umd/metrics.js +1 -1
  46. package/lib/umd/metrics.js.gz +0 -0
  47. package/lib/umd/queries.js +1 -1
  48. package/lib/umd/queries.js.gz +0 -0
  49. package/lib/umd/relationships.js +1 -1
  50. package/lib/umd/relationships.js.gz +0 -0
  51. package/lib/umd/store.js +1 -1
  52. package/lib/umd/store.js.gz +0 -0
  53. package/lib/umd/tinybase.js +1 -1
  54. package/lib/umd/tinybase.js.gz +0 -0
  55. package/lib/umd-es6/checkpoints.js +1 -1
  56. package/lib/umd-es6/checkpoints.js.gz +0 -0
  57. package/lib/umd-es6/indexes.d.ts +37 -10
  58. package/lib/umd-es6/indexes.js +1 -1
  59. package/lib/umd-es6/indexes.js.gz +0 -0
  60. package/lib/umd-es6/metrics.js +1 -1
  61. package/lib/umd-es6/metrics.js.gz +0 -0
  62. package/lib/umd-es6/queries.js +1 -1
  63. package/lib/umd-es6/queries.js.gz +0 -0
  64. package/lib/umd-es6/relationships.js +1 -1
  65. package/lib/umd-es6/relationships.js.gz +0 -0
  66. package/lib/umd-es6/store.js +1 -1
  67. package/lib/umd-es6/store.js.gz +0 -0
  68. package/lib/umd-es6/tinybase.js +1 -1
  69. package/lib/umd-es6/tinybase.js.gz +0 -0
  70. package/package.json +17 -16
  71. package/readme.md +2 -2
package/lib/queries.js CHANGED
@@ -1 +1 @@
1
- const e=e=>typeof e,t=e(""),n=e(!0),s=e(0),r=e(e),o=(e,t)=>e.every(t),l=(e,t)=>e.forEach(t),a=e=>c(e,((e,t)=>e+t),0),i=e=>e.length,d=e=>0==i(e),c=(e,t,n)=>e.reduce(t,n),u=(e,...t)=>e.push(...t),h=Math.max,w=Math.min,g=isFinite,R=e=>null==e,v=(e,t,n)=>R(e)?n?.():t(e),L=t=>e(t)==r,f=()=>{},y=e=>e.size,T=(e,t)=>e?.has(t)??!1,b=e=>R(e)||0==y(e),C=e=>[...e?.values()??[]],I=e=>e.clear(),p=(e,t)=>e?.forEach(t),S=(e,t)=>e?.delete(t),m=e=>new Map(e),Q=(e,t)=>e?.get(t),E=(e,t)=>p(e,((e,n)=>t(n,e))),M=(e,t,n)=>R(n)?(S(e,t),e):e?.set(t,n),x=(e,t,n)=>(T(e,t)||M(e,t,n()),Q(e,t)),D=(e,t,n,s,r=0)=>v((n?x:Q)(e,t[r],r>i(t)-2?n:m),(o=>{if(r>i(t)-2)return s?.(o)&&M(e,t[r]),o;const l=D(o,t,n,s,r+1);return b(o)&&M(e,t[r]),l})),F=e=>new Set(e),j=(e,t)=>e?.add(t),k=m([["avg",[(e,t)=>a(e)/t,(e,t,n)=>e+(t-e)/(n+1),(e,t,n)=>e+(e-t)/(n-1),(e,t,n,s)=>e+(t-n)/s]],["max",[e=>h(...e),(e,t)=>h(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:h(t,e)]],["min",[e=>w(...e),(e,t)=>w(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:w(t,e)]],["sum",[e=>a(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,n)=>e-n+t]]]),z=r=>{const o=e(r);return(e=>e==t||e==n)(o)||o==s&&g(r)?o:void 0},W=Object,O=W.freeze,q=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{const t=e.createStore,[n,s,r,a,c,,,h,,w,g,q,A]=((e,t,n)=>{const s=e.hasRow,r=m(),o=m(),a=m(),i=m(),c=m(),u=(t,n,...s)=>{const r=x(c,t,F);return l(s,(t=>j(r,t)&&n&&e.callListener(t))),s},h=(t,...n)=>v(Q(c,t),(s=>{l(d(n)?C(s):n,(t=>{e.delListener(t),S(s,t)})),b(s)&&M(c,t)})),w=(e,n)=>{M(r,e,n),T(o,e)||(M(o,e,t()),M(a,e,m()),M(i,e,m()))},g=e=>{M(r,e),M(o,e),M(a,e),M(i,e),h(e)};return[()=>e,()=>[...r?.keys()??[]],e=>E(o,e),e=>T(o,e),e=>Q(r,e),e=>Q(o,e),(e,t)=>M(o,e,t),w,(t,r,o,d,c)=>{w(t,r);const g=m(),v=m(),L=Q(a,t),f=Q(i,t),y=t=>{const o=n=>e.getCell(r,t,n),l=Q(L,t),a=s(r,t)?n(d(o,t)):void 0;if(l!=a&&M(g,t,[l,a]),!R(c)){const e=Q(f,t),n=s(r,t)?c(o,t):void 0;e!=n&&M(v,t,n)}},b=e=>{o((()=>{p(g,(([,e],t)=>M(L,t,e))),p(v,((e,t)=>M(f,t,e)))}),g,v,L,f,e),I(g),I(v)};E(L,y),e.hasTable(r)&&l(e.getRowIds(r),(e=>{T(L,e)||y(e)})),b(!0),h(t),u(t,0,e.addRowListener(r,null,((e,t,n)=>y(n))),e.addTableListener(r,(()=>b())))},g,()=>E(c,g),u,h]})(e,(()=>!0),f),B=t(),G=t(),H=m(),J=(e,t,...n)=>l(n,(n=>j(x(x(H,t,m),e,F),n))),K=e=>{v(Q(H,e),(e=>{E(e,((e,t)=>p(t,(t=>e.delListener(t))))),I(e)})),l([G,B],(t=>t.delTable(e)))},N=(e,t,n)=>J(t,e,t.addWillFinishTransactionListener(n.startTransaction),t.addDidFinishTransactionListener((()=>n.finishTransaction()))),P={setQueryDefinition:(t,n,s)=>{h(t,n),K(t);const r=[],a=[[null,[n,null,null,[],m()]]],c=[],w=[],g=[];s({select:(e,t)=>{const n=L(e)?[i(r)+"",e]:[R(t)?e:t,n=>n(e,t)];return u(r,n),{as:e=>n[0]=e}},join:(e,t,n)=>{const s=R(n)||L(t)?null:t,r=R(s)?t:n,o=[e,[e,s,L(r)?r:e=>e(r),[],m()]];return u(a,o),{as:e=>o[0]=e}},where:(e,t,n)=>u(c,L(e)?e:R(n)?n=>n(e)===t:s=>s(e,t)===n),group:(e,t,n,s,r)=>{const o=[e,[e,L(t)?[t,n,s,r]:Q(k,t)??[(e,t)=>t]]];return u(w,o),{as:e=>o[0]=e}},having:(e,t)=>u(g,L(e)?e:n=>n(e)===t)});const f=m(r);if(b(f))return P;const I=m(a);E(I,((e,[,t])=>v(Q(I,t),(({3:t})=>R(e)?0:u(t,e)))));const W=m(w);let O=B;if(b(W)&&d(g))O=G;else{N(t,O,G);const e=m();E(W,((t,[n,s])=>j(x(e,n,F),[t,s])));const n=F();E(f,(t=>T(e,t)?0:j(n,t)));const s=m(),r=(n,s,r,l)=>v(n,(([a,i,d,c])=>{E(s,((t,[n])=>{const s=x(a,t,m),o=Q(s,r),i=l?void 0:n;if(o!==i){const n=F([[o,i]]),l=y(s);M(s,r,i),p(Q(e,t),(([e,t])=>{const r=((e,t,n,s,r,o=!1)=>{if(b(n))return;const[l,a,i,d]=r;return o||=R(e),p(s,(([n,s])=>{o||(e=R(n)?a?.(e,s,t++):R(s)?i?.(e,n,t--):d?.(e,s,n,t),o||=R(e))})),o?l(C(n),y(n)):e})(c[e],l,s,n,t);c[e]=R(z(r))?null:r}))}})),b(i)||!o(g,(e=>e((e=>c[e]))))?G.delRow(t,d):R(d)?n[2]=G.addRow(t,c):G.setRow(t,d,c)}));J(O,t,O.addRowListener(t,null,((o,l,a,i)=>{const d=[],c=[],h=m(),w=O.hasRow(t,a);let g=!w;p(n,(e=>{const[n,s,r]=i(t,a,e);u(d,s),u(c,r),g||=n})),E(e,(e=>{const[n,,s]=i(t,a,e);(g||n)&&M(h,e,[s])})),g&&r(D(s,d,void 0,(([,e])=>(S(e,a),b(e)))),h,a,1),w&&r(D(s,c,(()=>{const e={};return p(n,(n=>e[n]=O.getCell(t,a,n))),[m(),F(),void 0,e]}),(([,e])=>{j(e,a)})),h,a)})))}N(t,e,O);const H=s=>{const r=(t,r)=>e.getCell(...R(r)?[n,s,t]:t===n?[n,s,r]:[Q(I,t)?.[0],Q(Q(I,t)?.[4],s)?.[0],r]);O.transaction((()=>o(c,(e=>e(r)))?E(f,((e,n)=>((e,t,n,s,r)=>R(r)?e.delCell(t,n,s,!0):e.setCell(t,n,s,r))(O,t,s,e,n(r,s)))):O.delRow(t,s)))},U=(n,s,r,o)=>{const a=t=>e.getCell(s,r,t);l(o,(s=>{const[r,,o,l,i]=Q(I,s),d=o?.(a,n),[c,u]=Q(i,n)??[];d!=c&&(R(u)||A(t,u),M(i,n,R(d)?null:[d,...q(t,1,e.addRowListener(r,d,(()=>U(n,r,d,l))))]))})),H(n)},{3:V}=Q(I,null);return O.transaction((()=>q(t,1,e.addRowListener(n,null,((s,r,o)=>{e.hasRow(n,o)?U(o,n,o,V):(O.delRow(t,o),p(I,(({4:e})=>v(Q(e,o),(([,n])=>{A(t,n),M(e,o)})))))}))))),P},delQueryDefinition:e=>(K(e),w(e),P),getStore:n,getQueryIds:s,forEachQuery:r,hasQuery:a,getTableId:c,delListener:e=>(G.delListener(e),P),destroy:g,getListenerStats:()=>{const{tables:e,tableIds:t,transaction:n,...s}=G.getListenerStats();return s}};var U,V;return U={Table:[1,1],RowIds:[0,1],SortedRowIds:[0,5],Row:[1,2],CellIds:[0,2],Cell:[1,3]},V=([e,t],n)=>{l(e?["get","has","forEach"]:["get"],(e=>P[e+"Result"+n]=(...t)=>G[e+n](...t))),P["addResult"+n+"Listener"]=(...e)=>{return G["add"+n+"Listener"](...(s=e,r=0,o=t,s.slice(r,o)),((n,...s)=>e[t](P,...s)));var s,r,o}},l(W.entries(U),(([e,t])=>V(t,e))),O(P)}));export{q as createQueries};
1
+ const e=e=>typeof e,t=e(""),n=e(!0),s=e(0),r=e(e),o=(e,t)=>e.every(t),l=(e,t)=>e.forEach(t),a=e=>c(e,((e,t)=>e+t),0),i=e=>e.length,d=e=>0==i(e),c=(e,t,n)=>e.reduce(t,n),u=(e,...t)=>e.push(...t),h=Math.max,w=Math.min,g=isFinite,R=e=>null==e,v=(e,t,n)=>R(e)?n?.():t(e),L=t=>e(t)==r,f=e=>Array.isArray(e),y=()=>{},T=e=>e.size,b=(e,t)=>e?.has(t)??!1,C=e=>R(e)||0==T(e),I=e=>[...e?.values()??[]],p=e=>e.clear(),S=(e,t)=>e?.forEach(t),m=(e,t)=>e?.delete(t),Q=e=>new Map(e),E=(e,t)=>e?.get(t),M=(e,t)=>S(e,((e,n)=>t(n,e))),x=(e,t,n)=>R(n)?(m(e,t),e):e?.set(t,n),D=(e,t,n)=>(b(e,t)||x(e,t,n()),E(e,t)),F=(e,t,n,s,r=0)=>v((n?D:E)(e,t[r],r>i(t)-2?n:Q),(o=>{if(r>i(t)-2)return s?.(o)&&x(e,t[r]),o;const l=F(o,t,n,s,r+1);return C(o)&&x(e,t[r]),l})),j=e=>new Set(f(e)||R(e)?e:[e]),k=(e,t)=>e?.add(t),z=Q([["avg",[(e,t)=>a(e)/t,(e,t,n)=>e+(t-e)/(n+1),(e,t,n)=>e+(e-t)/(n-1),(e,t,n,s)=>e+(t-n)/s]],["max",[e=>h(...e),(e,t)=>h(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:h(t,e)]],["min",[e=>w(...e),(e,t)=>w(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:w(t,e)]],["sum",[e=>a(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,n)=>e-n+t]]]),A=r=>{const o=e(r);return(e=>e==t||e==n)(o)||o==s&&g(r)?o:void 0},W=(e,t,n)=>{const s=e.hasRow,r=Q(),a=Q(),c=Q(),u=Q(),h=Q(),w=(t,n,...s)=>{const r=D(h,t,j);return l(s,(t=>k(r,t)&&n&&e.callListener(t))),s},g=(t,...n)=>v(E(h,t),(s=>{l(d(n)?I(s):n,(t=>{e.delListener(t),m(s,t)})),C(s)&&x(h,t)})),L=(e,n)=>{x(r,e,n),b(a,e)||(x(a,e,t()),x(c,e,Q()),x(u,e,Q()))},y=e=>{x(r,e),x(a,e),x(c,e),x(u,e),g(e)};return[()=>e,()=>[...r?.keys()??[]],e=>M(a,e),e=>b(a,e),e=>E(r,e),e=>E(a,e),(e,t)=>x(a,e,t),L,(t,r,a,d,h)=>{L(t,r);const v=Q(),y=Q(),T=E(c,t),C=E(u,t),I=t=>{const l=n=>e.getCell(r,t,n),a=E(T,t),c=s(r,t)?n(d(l,t)):void 0;var u,w;if(a===c||f(a)&&f(c)&&(w=c,i(u=a)===i(w)&&o(u,((e,t)=>w[t]===e)))||x(v,t,[a,c]),!R(h)){const e=E(C,t),n=s(r,t)?h(l,t):void 0;e!=n&&x(y,t,n)}},m=e=>{a((()=>{S(v,(([,e],t)=>x(T,t,e))),S(y,((e,t)=>x(C,t,e)))}),v,y,T,C,e),p(v),p(y)};M(T,I),e.hasTable(r)&&l(e.getRowIds(r),(e=>{b(T,e)||I(e)})),m(!0),g(t),w(t,0,e.addRowListener(r,null,((e,t,n)=>I(n))),e.addTableListener(r,(()=>m())))},y,()=>M(h,y),w,g]},O=Object,q=O.freeze,B=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{const t=e.createStore,[n,s,r,a,c,,,h,,w,g,f,B]=W(e,(()=>!0),y),G=t(),H=t(),J=Q(),K=(e,t,...n)=>l(n,(n=>k(D(D(J,t,Q),e,j),n))),N=e=>{v(E(J,e),(e=>{M(e,((e,t)=>S(t,(t=>e.delListener(t))))),p(e)})),l([H,G],(t=>t.delTable(e)))},P=(e,t,n)=>K(t,e,t.addWillFinishTransactionListener(n.startTransaction),t.addDidFinishTransactionListener((()=>n.finishTransaction()))),U={setQueryDefinition:(t,n,s)=>{h(t,n),N(t);const r=[],a=[[null,[n,null,null,[],Q()]]],c=[],w=[],g=[];s({select:(e,t)=>{const n=L(e)?[i(r)+"",e]:[R(t)?e:t,n=>n(e,t)];return u(r,n),{as:e=>n[0]=e}},join:(e,t,n)=>{const s=R(n)||L(t)?null:t,r=R(s)?t:n,o=[e,[e,s,L(r)?r:e=>e(r),[],Q()]];return u(a,o),{as:e=>o[0]=e}},where:(e,t,n)=>u(c,L(e)?e:R(n)?n=>n(e)===t:s=>s(e,t)===n),group:(e,t,n,s,r)=>{const o=[e,[e,L(t)?[t,n,s,r]:E(z,t)??[(e,t)=>t]]];return u(w,o),{as:e=>o[0]=e}},having:(e,t)=>u(g,L(e)?e:n=>n(e)===t)});const y=Q(r);if(C(y))return U;const p=Q(a);M(p,((e,[,t])=>v(E(p,t),(({3:t})=>R(e)?0:u(t,e)))));const W=Q(w);let O=G;if(C(W)&&d(g))O=H;else{P(t,O,H);const e=Q();M(W,((t,[n,s])=>k(D(e,n,j),[t,s])));const n=j();M(y,(t=>b(e,t)?0:k(n,t)));const s=Q(),r=(n,s,r,l)=>v(n,(([a,i,d,c])=>{M(s,((t,[n])=>{const s=D(a,t,Q),o=E(s,r),i=l?void 0:n;if(o!==i){const n=j([[o,i]]),l=T(s);x(s,r,i),S(E(e,t),(([e,t])=>{const r=((e,t,n,s,r,o=!1)=>{if(C(n))return;const[l,a,i,d]=r;return o||=R(e),S(s,(([n,s])=>{o||(e=R(n)?a?.(e,s,t++):R(s)?i?.(e,n,t--):d?.(e,s,n,t),o||=R(e))})),o?l(I(n),T(n)):e})(c[e],l,s,n,t);c[e]=R(A(r))?null:r}))}})),C(i)||!o(g,(e=>e((e=>c[e]))))?H.delRow(t,d):R(d)?n[2]=H.addRow(t,c):H.setRow(t,d,c)}));K(O,t,O.addRowListener(t,null,((o,l,a,i)=>{const d=[],c=[],h=Q(),w=O.hasRow(t,a);let g=!w;S(n,(e=>{const[n,s,r]=i(t,a,e);u(d,s),u(c,r),g||=n})),M(e,(e=>{const[n,,s]=i(t,a,e);(g||n)&&x(h,e,[s])})),g&&r(F(s,d,void 0,(([,e])=>(m(e,a),C(e)))),h,a,1),w&&r(F(s,c,(()=>{const e={};return S(n,(n=>e[n]=O.getCell(t,a,n))),[Q(),j(),void 0,e]}),(([,e])=>{k(e,a)})),h,a)})))}P(t,e,O);const q=s=>{const r=(t,r)=>e.getCell(...R(r)?[n,s,t]:t===n?[n,s,r]:[E(p,t)?.[0],E(E(p,t)?.[4],s)?.[0],r]);O.transaction((()=>o(c,(e=>e(r)))?M(y,((e,n)=>((e,t,n,s,r)=>R(r)?e.delCell(t,n,s,!0):e.setCell(t,n,s,r))(O,t,s,e,n(r,s)))):O.delRow(t,s)))},J=(n,s,r,o)=>{const a=t=>e.getCell(s,r,t);l(o,(s=>{const[r,,o,l,i]=E(p,s),d=o?.(a,n),[c,u]=E(i,n)??[];d!=c&&(R(u)||B(t,u),x(i,n,R(d)?null:[d,...f(t,1,e.addRowListener(r,d,(()=>J(n,r,d,l))))]))})),q(n)},{3:V}=E(p,null);return O.transaction((()=>f(t,1,e.addRowListener(n,null,((s,r,o)=>{e.hasRow(n,o)?J(o,n,o,V):(O.delRow(t,o),S(p,(({4:e})=>v(E(e,o),(([,n])=>{B(t,n),x(e,o)})))))}))))),U},delQueryDefinition:e=>(N(e),w(e),U),getStore:n,getQueryIds:s,forEachQuery:r,hasQuery:a,getTableId:c,delListener:e=>(H.delListener(e),U),destroy:g,getListenerStats:()=>{const{tables:e,tableIds:t,transaction:n,...s}=H.getListenerStats();return s}};var V,X;return V={Table:[1,1],RowIds:[0,1],SortedRowIds:[0,5],Row:[1,2],CellIds:[0,2],Cell:[1,3]},X=([e,t],n)=>{l(e?["get","has","forEach"]:["get"],(e=>U[e+"Result"+n]=(...t)=>H[e+n](...t))),U["addResult"+n+"Listener"]=(...e)=>{return H["add"+n+"Listener"](...(s=e,r=0,o=t,s.slice(r,o)),((n,...s)=>e[t](U,...s)));var s,r,o}},l(O.entries(V),(([e,t])=>X(t,e))),q(U)}));export{B as createQueries};
package/lib/queries.js.gz CHANGED
Binary file
@@ -1 +1 @@
1
- const e=e=>typeof e,t=e(""),n=(e,t)=>e.forEach(t),s=e=>e.length,o=(e,...t)=>e.push(...t),r=e=>null==e,i=(e,t,n)=>r(e)?n?.():t(e),l=(e,t)=>e?.has(t)??!1,a=e=>r(e)||0==(e=>e.size)(e),d=e=>[...e?.values()??[]],c=e=>e.clear(),u=(e,t)=>e?.forEach(t),R=(e,t)=>e?.delete(t),h=e=>new Map(e),f=(e,t)=>e?.get(t),L=(e,t)=>u(e,((e,n)=>t(n,e))),g=(e,t,n)=>r(n)?(R(e,t),e):e?.set(t,n),w=(e,t,n)=>(l(e,t)||g(e,t,n()),f(e,t)),p=(e,t,n,o,r=0)=>i((n?w:f)(e,t[r],r>s(t)-2?n:h),(i=>{if(r>s(t)-2)return o?.(i)&&g(e,t[r]),i;const l=p(i,t,n,o,r+1);return a(i)&&g(e,t[r]),l})),I=e=>new Set(e),b=(e,t)=>e?.add(t),v=(e,t,o)=>{const p=e.hasRow,v=h(),k=h(),E=h(),T=h(),m=h(),y=(t,s,...o)=>{const r=w(m,t,I);return n(o,(t=>b(r,t)&&s&&e.callListener(t))),o},S=(t,...o)=>i(f(m,t),(r=>{n(0==s(o)?d(r):o,(t=>{e.delListener(t),R(r,t)})),a(r)&&g(m,t)})),z=(e,n)=>{g(v,e,n),l(k,e)||(g(k,e,t()),g(E,e,h()),g(T,e,h()))},D=e=>{g(v,e),g(k,e),g(E,e),g(T,e),S(e)};return[()=>e,()=>[...v?.keys()??[]],e=>L(k,e),e=>l(k,e),e=>f(v,e),e=>f(k,e),(e,t)=>g(k,e,t),z,(t,s,i,a,d)=>{z(t,s);const R=h(),w=h(),I=f(E,t),b=f(T,t),v=t=>{const n=n=>e.getCell(s,t,n),i=f(I,t),l=p(s,t)?o(a(n,t)):void 0;if(i!=l&&g(R,t,[i,l]),!r(d)){const e=f(b,t),o=p(s,t)?d(n,t):void 0;e!=o&&g(w,t,o)}},k=e=>{i((()=>{u(R,(([,e],t)=>g(I,t,e))),u(w,((e,t)=>g(b,t,e)))}),R,w,I,b,e),c(R),c(w)};L(I,v),e.hasTable(s)&&n(e.getRowIds(s),(e=>{l(I,e)||v(e)})),k(!0),S(t),y(t,0,e.addRowListener(s,null,((e,t,n)=>v(n))),e.addTableListener(s,(()=>k())))},D,()=>L(m,D),y,S]},k=(n,s)=>e(n)==t?e=>e(n):n??(()=>s??""),E=/^\d+$/,T=e=>{let t;const[l,d]=(()=>{const e=[];let t=0;return[()=>e.shift()??""+t++,t=>{E.test(t)&&s(e)<1e3&&o(e,t)}]})(),c=h();return[(n,s,o)=>{t??=e();const r=l();return g(c,r,[n,s,o]),b(p(s,o??[""],I),r),r},(e,r,...i)=>n(((e,t=[""])=>{const r=[],i=(e,l)=>l==s(t)?o(r,e):null===t[l]?u(e,(e=>i(e,l+1))):n([t[l],null],(t=>i(f(e,t),l+1)));return i(e,0),r})(e,r),(e=>u(e,(e=>f(c,e)[0](t,...r??[],...i))))),e=>i(f(c,e),(([,t,n])=>(p(t,n??[""],void 0,(t=>(R(t,e),a(t)?1:0))),g(c,e),d(e),n))),(e,o,l)=>i(f(c,e),(([e,,i=[]])=>{const a=(...d)=>{const c=s(d);c==s(i)?e(t,...d,...l(d)):r(i[c])?n(o[c](...d),(e=>a(...d,e))):a(...d,i[c])};a()}))]},m=Object.freeze,y=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{const t=h(),n=h(),s=h(),o=h(),[c,w,p,E,y,S,,,z,D,M]=v(e,(()=>[h(),h(),h(),h()]),(e=>r(e)?void 0:e+"")),[j,x,C]=T((()=>q)),O=(e,t,n)=>i(S(e),(([s,,o])=>{if(!l(o,t)){const i=I();if(y(e)!=$(e))b(i,t);else{let e=t;for(;!r(e)&&!l(i,e);)b(i,e),e=f(s,e)}if(n)return i;g(o,t,i)}return f(o,t)})),W=(e,t)=>i(S(e),(([,,e])=>g(e,t))),$=e=>f(t,e),q={setRelationshipDefinition:(e,d,c,h)=>(g(t,e,c),z(e,d,((t,d)=>{const c=I(),h=I(),w=I(),[p,v]=S(e);u(d,(([t,n],s)=>{r(t)||(b(h,t),i(f(v,t),(e=>{R(e,s),a(e)&&g(v,t)}))),r(n)||(b(h,n),l(v,n)||g(v,n,I()),b(f(v,n),s)),b(c,s),g(p,s,n),L(f(o,e),(t=>{l(O(e,t),s)&&b(w,t)}))})),t(),u(c,(t=>x(n,[e,t]))),u(h,(t=>x(s,[e,t]))),u(w,(t=>{W(e,t),x(o,[e,t])}))}),k(h)),q),delRelationshipDefinition:e=>(g(t,e),D(e),q),getStore:c,getRelationshipIds:w,forEachRelationship:t=>p((n=>t(n,(t=>e.forEachRow(y(n),t))))),hasRelationship:E,getLocalTableId:y,getRemoteTableId:$,getRemoteRowId:(e,t)=>f(S(e)?.[0],t),getLocalRowIds:(e,t)=>d(f(S(e)?.[1],t)),getLinkedRowIds:(e,t)=>r(S(e))?[t]:d(O(e,t,!0)),addRemoteRowIdListener:(e,t,s)=>j(s,n,[e,t]),addLocalRowIdsListener:(e,t,n)=>j(n,s,[e,t]),addLinkedRowIdsListener:(e,t,n)=>(O(e,t),j(n,o,[e,t])),delListener:e=>(W(...C(e)),q),destroy:M,getListenerStats:()=>({})};return m(q)}));export{y as createRelationships};
1
+ const e=e=>typeof e,t=e(""),n=(e,t)=>e.forEach(t),s=e=>e.length,o=(e,...t)=>e.push(...t),r=e=>null==e,i=(e,t,n)=>r(e)?n?.():t(e),a=e=>Array.isArray(e),l=(e,t)=>e?.has(t)??!1,d=e=>r(e)||0==(e=>e.size)(e),c=e=>[...e?.values()??[]],u=e=>e.clear(),R=(e,t)=>e?.forEach(t),h=(e,t)=>e?.delete(t),f=e=>new Map(e),L=(e,t)=>e?.get(t),g=(e,t)=>R(e,((e,n)=>t(n,e))),w=(e,t,n)=>r(n)?(h(e,t),e):e?.set(t,n),p=(e,t,n)=>(l(e,t)||w(e,t,n()),L(e,t)),I=(e,t,n,o,r=0)=>i((n?p:L)(e,t[r],r>s(t)-2?n:f),(i=>{if(r>s(t)-2)return o?.(i)&&w(e,t[r]),i;const a=I(i,t,n,o,r+1);return d(i)&&w(e,t[r]),a})),v=e=>new Set(a(e)||r(e)?e:[e]),y=(e,t)=>e?.add(t),b=(e,t,o)=>{const I=e.hasRow,b=f(),k=f(),E=f(),T=f(),m=f(),S=(t,s,...o)=>{const r=p(m,t,v);return n(o,(t=>y(r,t)&&s&&e.callListener(t))),o},z=(t,...o)=>i(L(m,t),(r=>{n(0==s(o)?c(r):o,(t=>{e.delListener(t),h(r,t)})),d(r)&&w(m,t)})),A=(e,n)=>{w(b,e,n),l(k,e)||(w(k,e,t()),w(E,e,f()),w(T,e,f()))},D=e=>{w(b,e),w(k,e),w(E,e),w(T,e),z(e)};return[()=>e,()=>[...b?.keys()??[]],e=>g(k,e),e=>l(k,e),e=>L(b,e),e=>L(k,e),(e,t)=>w(k,e,t),A,(t,i,d,c,h)=>{A(t,i);const p=f(),v=f(),y=L(E,t),b=L(T,t),k=t=>{const n=n=>e.getCell(i,t,n),l=L(y,t),d=I(i,t)?o(c(n,t)):void 0;var u,R,f;if(l===d||a(l)&&a(d)&&(R=d,s(u=l)===s(R)&&(f=(e,t)=>R[t]===e,u.every(f)))||w(p,t,[l,d]),!r(h)){const e=L(b,t),s=I(i,t)?h(n,t):void 0;e!=s&&w(v,t,s)}},m=e=>{d((()=>{R(p,(([,e],t)=>w(y,t,e))),R(v,((e,t)=>w(b,t,e)))}),p,v,y,b,e),u(p),u(v)};g(y,k),e.hasTable(i)&&n(e.getRowIds(i),(e=>{l(y,e)||k(e)})),m(!0),z(t),S(t,0,e.addRowListener(i,null,((e,t,n)=>k(n))),e.addTableListener(i,(()=>m())))},D,()=>g(m,D),S,z]},k=(n,s)=>e(n)==t?e=>e(n):n??(()=>s??""),E=/^\d+$/,T=e=>{let t;const[a,l]=(()=>{const e=[];let t=0;return[()=>e.shift()??""+t++,t=>{E.test(t)&&s(e)<1e3&&o(e,t)}]})(),c=f();return[(n,s,o)=>{t??=e();const r=a();return w(c,r,[n,s,o]),y(I(s,o??[""],v),r),r},(e,r,...i)=>n(((e,t=[""])=>{const r=[],i=(e,a)=>a==s(t)?o(r,e):null===t[a]?R(e,(e=>i(e,a+1))):n([t[a],null],(t=>i(L(e,t),a+1)));return i(e,0),r})(e,r),(e=>R(e,(e=>L(c,e)[0](t,...r??[],...i))))),e=>i(L(c,e),(([,t,n])=>(I(t,n??[""],void 0,(t=>(h(t,e),d(t)?1:0))),w(c,e),l(e),n))),(e,o,a)=>i(L(c,e),(([e,,i=[]])=>{const l=(...d)=>{const c=s(d);c==s(i)?e(t,...d,...a(d)):r(i[c])?n(o[c](...d),(e=>l(...d,e))):l(...d,i[c])};l()}))]},m=Object.freeze,S=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{const t=f(),n=f(),s=f(),o=f(),[a,u,p,I,E,S,,,z,A,D]=b(e,(()=>[f(),f(),f(),f()]),(e=>r(e)?void 0:e+"")),[M,j,x]=T((()=>$)),C=(e,t,n)=>i(S(e),(([s,,o])=>{if(!l(o,t)){const i=v();if(E(e)!=W(e))y(i,t);else{let e=t;for(;!r(e)&&!l(i,e);)y(i,e),e=L(s,e)}if(n)return i;w(o,t,i)}return L(o,t)})),O=(e,t)=>i(S(e),(([,,e])=>w(e,t))),W=e=>L(t,e),$={setRelationshipDefinition:(e,a,c,u)=>(w(t,e,c),z(e,a,((t,a)=>{const c=v(),u=v(),f=v(),[p,I]=S(e);R(a,(([t,n],s)=>{r(t)||(y(u,t),i(L(I,t),(e=>{h(e,s),d(e)&&w(I,t)}))),r(n)||(y(u,n),l(I,n)||w(I,n,v()),y(L(I,n),s)),y(c,s),w(p,s,n),g(L(o,e),(t=>{l(C(e,t),s)&&y(f,t)}))})),t(),R(c,(t=>j(n,[e,t]))),R(u,(t=>j(s,[e,t]))),R(f,(t=>{O(e,t),j(o,[e,t])}))}),k(u)),$),delRelationshipDefinition:e=>(w(t,e),A(e),$),getStore:a,getRelationshipIds:u,forEachRelationship:t=>p((n=>t(n,(t=>e.forEachRow(E(n),t))))),hasRelationship:I,getLocalTableId:E,getRemoteTableId:W,getRemoteRowId:(e,t)=>L(S(e)?.[0],t),getLocalRowIds:(e,t)=>c(L(S(e)?.[1],t)),getLinkedRowIds:(e,t)=>r(S(e))?[t]:c(C(e,t,!0)),addRemoteRowIdListener:(e,t,s)=>M(s,n,[e,t]),addLocalRowIdsListener:(e,t,n)=>M(n,s,[e,t]),addLinkedRowIdsListener:(e,t,n)=>(C(e,t),M(n,o,[e,t])),delListener:e=>(O(...x(e)),$),destroy:D,getListenerStats:()=>({})};return m($)}));export{S as createRelationships};
Binary file
package/lib/store.js CHANGED
@@ -1 +1 @@
1
- const e=e=>typeof e,t=e(""),s=e(!0),n=e(0),r=e(e),l=e=>""+e,o=(e,t)=>e.forEach(t),a=(e,t)=>e.map(t),c=e=>e.length,i=(e,t,s)=>e.slice(t,s),d=(e,...t)=>e.push(...t),u=e=>JSON.stringify(e,((e,t)=>{return T(t,Map)?(s=[...t],n=(e,[t,s])=>(e[t]=s,e),r={},s.reduce(n,r)):t;var s,n,r})),f=JSON.parse,h=isFinite,T=(e,t)=>e instanceof t,b=e=>null==e,g=(e,t,s)=>b(e)?s?.():t(e),w=e=>e==t||e==s,v=(e,t)=>e?.has(t)??!1,R=e=>b(e)||0==(e=>e.size)(e),C=e=>e.clear(),p=(e,t)=>e?.forEach(t),S=(e,t)=>e?.delete(t),y=e=>new Map(e),I=e=>[...e?.keys()??[]],L=(e,t)=>e?.get(t),E=(e,t)=>p(e,((e,s)=>t(s,e))),J=(e,t,s)=>b(s)?(S(e,t),e):e?.set(t,s),m=(e,t,s)=>(v(e,t)||J(e,t,s()),L(e,t)),F=(e,t,s)=>{const n={},r=t??(e=>e);return p(e,((e,t)=>g(r(e),(e=>s?.(e)?0:n[t]=e)))),n},z=(e,t)=>{const s=y(),n=t??(e=>e);return p(e,((e,t)=>s.set(t,n(e)))),s},O=e=>z(e,z),k=(e,t,s,n,r=0)=>g((s?m:L)(e,t[r],r>c(t)-2?s:y),(l=>{if(r>c(t)-2)return n?.(l)&&J(e,t[r]),l;const o=k(l,t,s,n,r+1);return R(l)&&J(e,t[r]),o})),M=Object,N=M.keys,j=M.isFrozen,x=M.freeze,D=(e,t)=>!b(((e,t)=>g(e,(e=>e[t])))(e,t)),P=(e,t)=>delete e[t],W=(e,t)=>o(M.entries(e),(([e,s])=>t(s,e))),$=e=>{return t=N(e),0==c(t);var t},q=e=>new Set(e),A=(e,t)=>e?.add(t),B=/^\d+$/,G=()=>{const e=[];let t=0;return[()=>e.shift()??""+t++,t=>{B.test(t)&&c(e)<1e3&&d(e,t)}]},H=e=>{let t;const[s,n]=G(),r=y();return[(n,l,o)=>{t??=e();const a=s();return J(r,a,[n,l,o]),A(k(l,o??[""],q),a),a},(e,s,...n)=>o(((e,t=[""])=>{const s=[],n=(e,r)=>r==c(t)?d(s,e):null===t[r]?p(e,(e=>n(e,r+1))):o([t[r],null],(t=>n(L(e,t),r+1)));return n(e,0),s})(e,s),(e=>p(e,(e=>L(r,e)[0](t,...s??[],...n))))),e=>g(L(r,e),(([,t,s])=>(k(t,s??[""],void 0,(t=>(S(t,e),R(t)?1:0))),J(r,e),n(e),s))),(e,s,n)=>g(L(r,e),(([e,,r=[]])=>{const l=(...a)=>{const i=c(a);i==c(r)?e(t,...a,...n(a)):b(r[i])?o(s[i](...a),(e=>l(...a,e))):l(...a,r[i])};l()}))]},K=e=>[e,e],Q=()=>[y(),y()],U=t=>{const s=e(t);return w(s)||s==n&&h(t)?s:void 0},V=(e,t,s,n=J)=>{const r=(l=I(e),a=e=>!D(t,e),l.filter(a));var l,a;return o(N(t),(n=>s(e,n,t[n]))),o(r,(t=>n(e,t))),e},X=(e,t,s)=>b(e)||!(e=>T(e,M)&&e.constructor==M)(e)||$(e)||j(e)?(s?.(),!1):(W(e,((s,n)=>{t(s,n)||P(e,n)})),!$(e)),Y=(e,t,s)=>J(e,t,L(e,t)==-s?void 0:s),Z=()=>{let t,s,h=0;const T=y(),k=y(),M=y(),N=y(),j=y(),B=y(),_=y(),ee=y(),te=y(),se=Q(),ne=Q(),re=Q(),le=Q(),oe=Q(),ae=Q(),ce=Q(),ie=Q(),de=Q(),ue=Q(),[fe,he,Te,be]=H((()=>Ze)),ge=(e,s)=>(!t||v(B,s)||je(s))&&X(e,((e,t)=>we(s,t,e)),(()=>je(s))),we=(e,t,s,n)=>X(n?s:Re(s,e,t),((n,r)=>g(ve(e,t,r,n),(e=>(s[r]=e,!0)),(()=>!1))),(()=>je(e,t))),ve=(e,s,n,r)=>t?g(L(L(B,e),n),(t=>U(r)!=t.type?je(e,s,n,r,t.default):r),(()=>je(e,s,n,r))):b(U(r))?je(e,s,n,r):r,Re=(e,t,s)=>(g(L(_,t),(([n,r])=>{p(n,((t,s)=>{D(e,s)||(e[s]=t)})),p(r,(n=>{D(e,n)||je(t,s,n)}))})),e),Ce=e=>V(B,e,((e,t,s)=>{const n=y(),r=q();V(m(B,t,y),s,((e,t,s)=>{J(e,t,s),g(s.default,(e=>J(n,t,e)),(()=>A(r,t)))})),J(_,t,[n,r])}),((e,t)=>{J(B,t),J(_,t)})),pe=e=>V(te,e,((e,t,s)=>Se(t,s)),((e,t)=>me(t))),Se=(e,t)=>V(m(te,e,(()=>(Oe(e,1),y()))),t,((t,s,n)=>ye(e,t,s,n)),((t,s)=>Fe(e,t,s))),ye=(e,t,s,n,r)=>V(m(t,s,(()=>(ke(e,s,1),y()))),n,((t,n,r)=>Ie(e,s,t,n,r)),((n,l)=>ze(e,t,s,n,l,r))),Ie=(e,t,s,n,r)=>{v(s,n)||Me(e,t,n,1);const l=L(s,n);r!==l&&(Ne(e,t,n,l,r),J(s,n,r))},Le=(e,t,s,n,r)=>g(L(t,s),(t=>Ie(e,s,t,n,r)),(()=>ye(e,t,s,Re({[n]:r},e,s)))),Ee=e=>{const[t]=m(ee,e,G),s=t();return v(L(te,e),s)?Ee(e):s},Je=e=>L(te,e)??Se(e,{}),me=e=>Se(e,{}),Fe=(e,t,s)=>{const[,n]=m(ee,e,G);n(s),ye(e,t,s,{},!0)},ze=(e,t,s,n,r,l)=>{const o=L(L(_,e)?.[0],r);if(!b(o)&&!l)return Ie(e,s,n,r,o);const a=t=>{Ne(e,s,t,L(n,t)),Me(e,s,t,-1),J(n,t)};b(o)?a(r):E(n,a),R(n)&&(ke(e,s,-1),R(J(t,s))&&(Oe(e,-1),J(te,e)))},Oe=(e,t)=>Y(T,e,t),ke=(e,t,s)=>Y(m(k,e,y),t,s),Me=(e,t,s,n)=>Y(m(m(M,e,y),t,y),s,n),Ne=(e,t,s,n,r)=>m(m(m(N,e,y),t,y),s,(()=>[n,0]))[1]=r,je=(e,t,s,n,r)=>(d(m(m(m(j,e,y),t,y),s,(()=>[])),n),r),xe=(e,t,s)=>g(L(L(L(N,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...K(Ke(e,t,s))])),De=e=>R(j)||R(de[e])?0:p(e?z(j,O):j,((t,s)=>p(t,((t,n)=>p(t,((t,r)=>he(de[e],[s,n,r],t))))))),Pe=(e,t,s)=>{if(!R(t))return he(e,s),1},We=e=>{const t=R(oe[e]),s=R(ce[e])&&R(le[e])&&t&&R(ne[e]),n=R(ie[e])&&R(ae[e])&&R(re[e])&&R(se[e]);if(!s||!n){const r=e?[z(T),O(k),z(M,O),z(N,O)]:[T,k,M,N];if(!s){p(r[2],((t,s)=>p(t,((t,n)=>Pe(ce[e],t,[s,n])))));const s=q();p(r[1],((n,r)=>{Pe(le[e],n,[r])&&!t&&(he(oe[e],[r,null]),A(s,r))})),t||p(r[3],((t,n)=>{if(!v(s,n)){const s=q();p(t,(e=>p(e,(([t,n],r)=>n!==t?A(s,r):S(e,r))))),p(s,(t=>he(oe[e],[n,t])))}})),Pe(ne[e],r[0])}if(!n){let t;p(r[3],((s,n)=>{let r;p(s,((s,l)=>{let o;p(s,(([s,a],c)=>{a!==s&&(he(ie[e],[n,l,c],a,s,xe),t=r=o=1)})),o&&he(ae[e],[n,l],xe)})),r&&he(re[e],[n],xe)})),t&&he(se[e],void 0,xe)}}},$e=(e,...t)=>(Ve((()=>e(...a(t,l)))),Ze),qe=()=>F(te,(e=>F(e,F))),Ae=()=>I(te),Be=e=>I(L(te,l(e))),Ge=(e,t,s,n=0,r)=>{const o=[];return E(L(te,l(e)),((e,s)=>d(o,[b(t)?e:L(s,l(t)),e]))),a(i(o.sort((([e],[t])=>(e<t?-1:1)*(s?-1:1))),n,b(r)?r:n+r),(([,e])=>e))},He=(e,t)=>I(L(L(te,l(e)),l(t))),Ke=(e,t,s)=>L(L(L(te,l(e)),l(t)),l(s)),Qe=e=>$e((()=>(e=>X(e,ge,je))(e)?pe(e):0)),Ue=()=>$e((()=>pe({}))),Ve=(e,t)=>{if(-1==h)return;Xe();const s=e?.();return Ye(t),s},Xe=()=>(h++,Ze),Ye=e=>(h>0&&(h--,0==h&&(s=!R(N),h=1,De(1),s&&We(1),h=-1,e?.(F(N,(e=>F(e,(e=>F(e,(e=>[...e]),(([e,t])=>e===t))),$)),$),F(j,(e=>F(e,F))))&&(h=1,p(N,((e,t)=>p(e,((e,s)=>p(e,(([e],n)=>((e,t,s,n,r)=>b(r)?e.delCell(t,s,n,!0):e.setCell(t,s,n,r))(Ze,t,s,n,e))))))),h=-1,s=!1),he(ue[0],void 0,s),De(0),s&&We(0),he(ue[1],void 0,s),h=0,o([N,j,T,k,M],C))),Ze),Ze={getTables:qe,getTableIds:Ae,getTable:e=>F(L(te,l(e)),F),getRowIds:Be,getSortedRowIds:Ge,getRow:(e,t)=>F(L(L(te,l(e)),l(t))),getCellIds:He,getCell:Ke,hasTables:()=>!R(te),hasTable:e=>v(te,l(e)),hasRow:(e,t)=>v(L(te,l(e)),l(t)),hasCell:(e,t,s)=>v(L(L(te,l(e)),l(t)),l(s)),getJson:()=>u(te),getSchemaJson:()=>u(B),setTables:Qe,setTable:(e,t)=>$e((e=>ge(t,e)?Se(e,t):0),e),setRow:(e,t,s)=>$e(((e,t)=>we(l(e),l(t),s)?ye(l(e),Je(l(e)),l(t),s):0),e,t),addRow:(e,t)=>Ve((()=>{let s;return we(e,s,t)&&(e=l(e),ye(e,Je(e),s=Ee(e),t)),s})),setPartialRow:(e,t,s)=>$e(((e,t)=>{if(we(e,t,s,1)){const n=Je(e);W(s,((s,r)=>Le(e,n,t,r,s)))}}),e,t),setCell:(t,s,n,l)=>$e(((t,s,n)=>g(ve(t,s,n,e(l)==r?l(Ke(t,s,n)):l),(e=>Le(t,Je(t),s,n,e)))),t,s,n),setJson:e=>{try{"{}"===e?Ue():Qe(f(e))}catch{}return Ze},setSchema:e=>$e((()=>{if((t=(e=>X(e,(e=>X(e,(e=>{if(!X(e,((e,t)=>["type","default"].includes(t))))return!1;const t=e.type;return!(!w(t)&&t!=n||(U(e.default)!=t&&P(e,"default"),0))})))))(e))&&(Ce(e),!R(te))){const e=qe();Ue(),Qe(e)}})),delTables:Ue,delTable:e=>$e((e=>v(te,e)?me(e):0),e),delRow:(e,t)=>$e(((e,t)=>g(L(te,e),(s=>v(s,t)?Fe(e,s,t):0))),e,t),delCell:(e,t,s,n)=>$e(((e,t,s)=>g(L(te,e),(r=>g(L(r,t),(l=>v(l,s)?ze(e,r,t,l,s,n):0))))),e,t,s),delSchema:()=>$e((()=>{Ce({}),t=!1})),transaction:Ve,startTransaction:Xe,finishTransaction:Ye,forEachTable:e=>p(te,((t,s)=>e(s,(e=>p(t,((t,s)=>e(s,(e=>E(t,e))))))))),forEachRow:(e,t)=>p(L(te,l(e)),((e,s)=>t(s,(t=>E(e,t))))),forEachCell:(e,t,s)=>E(L(L(te,l(e)),l(t)),s),addSortedRowIdsListener:(e,t,s,n,r,l,o)=>{let a=Ge(e,t,s,n,r);return fe((()=>{const o=Ge(e,t,s,n,r);var i,d,u;d=a,c(i=o)===c(d)&&(u=(e,t)=>d[t]===e,i.every(u))||(a=o,l(Ze,e,t,s,n,r,a))}),oe[o?1:0],[e,t])},addWillFinishTransactionListener:e=>fe(e,ue[0]),addDidFinishTransactionListener:e=>fe(e,ue[1]),callListener:e=>(be(e,[Ae,Be,He],(e=>b(e[2])?[]:K(Ke(...e)))),Ze),delListener:e=>(Te(e),Ze),getListenerStats:()=>({}),createStore:Z};return W({Tables:[0,se],TableIds:[0,ne],Table:[1,re],RowIds:[1,le],Row:[2,ae],CellIds:[2,ce],Cell:[3,ie],InvalidCell:[3,de]},(([e,t],s)=>{Ze["add"+s+"Listener"]=(...s)=>fe(s[e],t[s[e+1]?1:0],e>0?i(s,0,e):void 0)})),x(Ze)};export{Z as createStore};
1
+ const e=e=>typeof e,t=e(""),s=e(!0),r=e(0),n=e(e),l=e=>""+e,o=(e,t)=>e.forEach(t),a=(e,t)=>e.map(t),c=e=>e.length,i=(e,t,s)=>e.slice(t,s),d=(e,...t)=>e.push(...t),u=e=>JSON.stringify(e,((e,t)=>{return T(t,Map)?(s=[...t],r=(e,[t,s])=>(e[t]=s,e),n={},s.reduce(r,n)):t;var s,r,n})),f=JSON.parse,h=isFinite,T=(e,t)=>e instanceof t,b=e=>null==e,g=(e,t,s)=>b(e)?s?.():t(e),w=e=>e==t||e==s,v=(e,t)=>e?.has(t)??!1,R=e=>b(e)||0==(e=>e.size)(e),y=e=>e.clear(),C=(e,t)=>e?.forEach(t),p=(e,t)=>e?.delete(t),S=e=>new Map(e),I=e=>[...e?.keys()??[]],L=(e,t)=>e?.get(t),E=(e,t)=>C(e,((e,s)=>t(s,e))),J=(e,t,s)=>b(s)?(p(e,t),e):e?.set(t,s),m=(e,t,s)=>(v(e,t)||J(e,t,s()),L(e,t)),F=(e,t,s)=>{const r={},n=t??(e=>e);return C(e,((e,t)=>g(n(e),(e=>s?.(e)?0:r[t]=e)))),r},z=(e,t)=>{const s=S(),r=t??(e=>e);return C(e,((e,t)=>s.set(t,r(e)))),s},O=e=>z(e,z),k=(e,t,s,r,n=0)=>g((s?m:L)(e,t[n],n>c(t)-2?s:S),(l=>{if(n>c(t)-2)return r?.(l)&&J(e,t[n]),l;const o=k(l,t,s,r,n+1);return R(l)&&J(e,t[n]),o})),A=Object,M=A.keys,N=A.isFrozen,j=A.freeze,x=(e,t)=>!b(((e,t)=>g(e,(e=>e[t])))(e,t)),D=(e,t)=>delete e[t],P=(e,t)=>o(A.entries(e),(([e,s])=>t(s,e))),W=e=>{return t=M(e),0==c(t);var t},$=e=>new Set(Array.isArray(e)||b(e)?e:[e]),q=(e,t)=>e?.add(t),B=/^\d+$/,G=()=>{const e=[];let t=0;return[()=>e.shift()??""+t++,t=>{B.test(t)&&c(e)<1e3&&d(e,t)}]},H=e=>{let t;const[s,r]=G(),n=S();return[(r,l,o)=>{t??=e();const a=s();return J(n,a,[r,l,o]),q(k(l,o??[""],$),a),a},(e,s,...r)=>o(((e,t=[""])=>{const s=[],r=(e,n)=>n==c(t)?d(s,e):null===t[n]?C(e,(e=>r(e,n+1))):o([t[n],null],(t=>r(L(e,t),n+1)));return r(e,0),s})(e,s),(e=>C(e,(e=>L(n,e)[0](t,...s??[],...r))))),e=>g(L(n,e),(([,t,s])=>(k(t,s??[""],void 0,(t=>(p(t,e),R(t)?1:0))),J(n,e),r(e),s))),(e,s,r)=>g(L(n,e),(([e,,n=[]])=>{const l=(...a)=>{const i=c(a);i==c(n)?e(t,...a,...r(a)):b(n[i])?o(s[i](...a),(e=>l(...a,e))):l(...a,n[i])};l()}))]},K=e=>[e,e],Q=()=>[S(),S()],U=t=>{const s=e(t);return w(s)||s==r&&h(t)?s:void 0},V=(e,t,s,r=J)=>{const n=(l=I(e),a=e=>!x(t,e),l.filter(a));var l,a;return o(M(t),(r=>s(e,r,t[r]))),o(n,(t=>r(e,t))),e},X=(e,t,s)=>b(e)||!(e=>T(e,A)&&e.constructor==A)(e)||W(e)||N(e)?(s?.(),!1):(P(e,((s,r)=>{t(s,r)||D(e,r)})),!W(e)),Y=(e,t,s)=>J(e,t,L(e,t)==-s?void 0:s),Z=()=>{let t,s,h=0;const T=S(),k=S(),A=S(),M=S(),N=S(),B=S(),_=S(),ee=S(),te=S(),se=Q(),re=Q(),ne=Q(),le=Q(),oe=Q(),ae=Q(),ce=Q(),ie=Q(),de=Q(),ue=Q(),[fe,he,Te,be]=H((()=>Ze)),ge=(e,s)=>(!t||v(B,s)||Ne(s))&&X(e,((e,t)=>we(s,t,e)),(()=>Ne(s))),we=(e,t,s,r)=>X(r?s:Re(s,e,t),((r,n)=>g(ve(e,t,n,r),(e=>(s[n]=e,!0)),(()=>!1))),(()=>Ne(e,t))),ve=(e,s,r,n)=>t?g(L(L(B,e),r),(t=>U(n)!=t.type?Ne(e,s,r,n,t.default):n),(()=>Ne(e,s,r,n))):b(U(n))?Ne(e,s,r,n):n,Re=(e,t,s)=>(g(L(_,t),(([r,n])=>{C(r,((t,s)=>{x(e,s)||(e[s]=t)})),C(n,(r=>{x(e,r)||Ne(t,s,r)}))})),e),ye=e=>V(B,e,((e,t,s)=>{const r=S(),n=$();V(m(B,t,S),s,((e,t,s)=>{J(e,t,s),g(s.default,(e=>J(r,t,e)),(()=>q(n,t)))})),J(_,t,[r,n])}),((e,t)=>{J(B,t),J(_,t)})),Ce=e=>V(te,e,((e,t,s)=>pe(t,s)),((e,t)=>me(t))),pe=(e,t)=>V(m(te,e,(()=>(Oe(e,1),S()))),t,((t,s,r)=>Se(e,t,s,r)),((t,s)=>Fe(e,t,s))),Se=(e,t,s,r,n)=>V(m(t,s,(()=>(ke(e,s,1),S()))),r,((t,r,n)=>Ie(e,s,t,r,n)),((r,l)=>ze(e,t,s,r,l,n))),Ie=(e,t,s,r,n)=>{v(s,r)||Ae(e,t,r,1);const l=L(s,r);n!==l&&(Me(e,t,r,l,n),J(s,r,n))},Le=(e,t,s,r,n)=>g(L(t,s),(t=>Ie(e,s,t,r,n)),(()=>Se(e,t,s,Re({[r]:n},e,s)))),Ee=e=>{const[t]=m(ee,e,G),s=t();return v(L(te,e),s)?Ee(e):s},Je=e=>L(te,e)??pe(e,{}),me=e=>pe(e,{}),Fe=(e,t,s)=>{const[,r]=m(ee,e,G);r(s),Se(e,t,s,{},!0)},ze=(e,t,s,r,n,l)=>{const o=L(L(_,e)?.[0],n);if(!b(o)&&!l)return Ie(e,s,r,n,o);const a=t=>{Me(e,s,t,L(r,t)),Ae(e,s,t,-1),J(r,t)};b(o)?a(n):E(r,a),R(r)&&(ke(e,s,-1),R(J(t,s))&&(Oe(e,-1),J(te,e)))},Oe=(e,t)=>Y(T,e,t),ke=(e,t,s)=>Y(m(k,e,S),t,s),Ae=(e,t,s,r)=>Y(m(m(A,e,S),t,S),s,r),Me=(e,t,s,r,n)=>m(m(m(M,e,S),t,S),s,(()=>[r,0]))[1]=n,Ne=(e,t,s,r,n)=>(d(m(m(m(N,e,S),t,S),s,(()=>[])),r),n),je=(e,t,s)=>g(L(L(L(M,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...K(Ke(e,t,s))])),xe=e=>R(N)||R(de[e])?0:C(e?z(N,O):N,((t,s)=>C(t,((t,r)=>C(t,((t,n)=>he(de[e],[s,r,n],t))))))),De=(e,t,s)=>{if(!R(t))return he(e,s),1},Pe=e=>{const t=R(oe[e]),s=R(ce[e])&&R(le[e])&&t&&R(re[e]),r=R(ie[e])&&R(ae[e])&&R(ne[e])&&R(se[e]);if(!s||!r){const n=e?[z(T),O(k),z(A,O),z(M,O)]:[T,k,A,M];if(!s){C(n[2],((t,s)=>C(t,((t,r)=>De(ce[e],t,[s,r])))));const s=$();C(n[1],((r,n)=>{De(le[e],r,[n])&&!t&&(he(oe[e],[n,null]),q(s,n))})),t||C(n[3],((t,r)=>{if(!v(s,r)){const s=$();C(t,(e=>C(e,(([t,r],n)=>r!==t?q(s,n):p(e,n))))),C(s,(t=>he(oe[e],[r,t])))}})),De(re[e],n[0])}if(!r){let t;C(n[3],((s,r)=>{let n;C(s,((s,l)=>{let o;C(s,(([s,a],c)=>{a!==s&&(he(ie[e],[r,l,c],a,s,je),t=n=o=1)})),o&&he(ae[e],[r,l],je)})),n&&he(ne[e],[r],je)})),t&&he(se[e],void 0,je)}}},We=(e,...t)=>(Ve((()=>e(...a(t,l)))),Ze),$e=()=>F(te,(e=>F(e,F))),qe=()=>I(te),Be=e=>I(L(te,l(e))),Ge=(e,t,s,r=0,n)=>{const o=[];return E(L(te,l(e)),((e,s)=>d(o,[b(t)?e:L(s,l(t)),e]))),a(i(o.sort((([e],[t])=>(e<t?-1:1)*(s?-1:1))),r,b(n)?n:r+n),(([,e])=>e))},He=(e,t)=>I(L(L(te,l(e)),l(t))),Ke=(e,t,s)=>L(L(L(te,l(e)),l(t)),l(s)),Qe=e=>We((()=>(e=>X(e,ge,Ne))(e)?Ce(e):0)),Ue=()=>We((()=>Ce({}))),Ve=(e,t)=>{if(-1==h)return;Xe();const s=e?.();return Ye(t),s},Xe=()=>(h++,Ze),Ye=e=>(h>0&&(h--,0==h&&(s=!R(M),h=1,xe(1),s&&Pe(1),h=-1,e?.(F(M,(e=>F(e,(e=>F(e,(e=>[...e]),(([e,t])=>e===t))),W)),W),F(N,(e=>F(e,F))))&&(h=1,C(M,((e,t)=>C(e,((e,s)=>C(e,(([e],r)=>((e,t,s,r,n)=>b(n)?e.delCell(t,s,r,!0):e.setCell(t,s,r,n))(Ze,t,s,r,e))))))),h=-1,s=!1),he(ue[0],void 0,s),xe(0),s&&Pe(0),he(ue[1],void 0,s),h=0,o([M,N,T,k,A],y))),Ze),Ze={getTables:$e,getTableIds:qe,getTable:e=>F(L(te,l(e)),F),getRowIds:Be,getSortedRowIds:Ge,getRow:(e,t)=>F(L(L(te,l(e)),l(t))),getCellIds:He,getCell:Ke,hasTables:()=>!R(te),hasTable:e=>v(te,l(e)),hasRow:(e,t)=>v(L(te,l(e)),l(t)),hasCell:(e,t,s)=>v(L(L(te,l(e)),l(t)),l(s)),getJson:()=>u(te),getSchemaJson:()=>u(B),setTables:Qe,setTable:(e,t)=>We((e=>ge(t,e)?pe(e,t):0),e),setRow:(e,t,s)=>We(((e,t)=>we(l(e),l(t),s)?Se(l(e),Je(l(e)),l(t),s):0),e,t),addRow:(e,t)=>Ve((()=>{let s;return we(e,s,t)&&(e=l(e),Se(e,Je(e),s=Ee(e),t)),s})),setPartialRow:(e,t,s)=>We(((e,t)=>{if(we(e,t,s,1)){const r=Je(e);P(s,((s,n)=>Le(e,r,t,n,s)))}}),e,t),setCell:(t,s,r,l)=>We(((t,s,r)=>g(ve(t,s,r,e(l)==n?l(Ke(t,s,r)):l),(e=>Le(t,Je(t),s,r,e)))),t,s,r),setJson:e=>{try{"{}"===e?Ue():Qe(f(e))}catch{}return Ze},setSchema:e=>We((()=>{if((t=(e=>X(e,(e=>X(e,(e=>{if(!X(e,((e,t)=>["type","default"].includes(t))))return!1;const t=e.type;return!(!w(t)&&t!=r||(U(e.default)!=t&&D(e,"default"),0))})))))(e))&&(ye(e),!R(te))){const e=$e();Ue(),Qe(e)}})),delTables:Ue,delTable:e=>We((e=>v(te,e)?me(e):0),e),delRow:(e,t)=>We(((e,t)=>g(L(te,e),(s=>v(s,t)?Fe(e,s,t):0))),e,t),delCell:(e,t,s,r)=>We(((e,t,s)=>g(L(te,e),(n=>g(L(n,t),(l=>v(l,s)?ze(e,n,t,l,s,r):0))))),e,t,s),delSchema:()=>We((()=>{ye({}),t=!1})),transaction:Ve,startTransaction:Xe,finishTransaction:Ye,forEachTable:e=>C(te,((t,s)=>e(s,(e=>C(t,((t,s)=>e(s,(e=>E(t,e))))))))),forEachRow:(e,t)=>C(L(te,l(e)),((e,s)=>t(s,(t=>E(e,t))))),forEachCell:(e,t,s)=>E(L(L(te,l(e)),l(t)),s),addSortedRowIdsListener:(e,t,s,r,n,l,o)=>{let a=Ge(e,t,s,r,n);return fe((()=>{const o=Ge(e,t,s,r,n);var i,d,u;d=a,c(i=o)===c(d)&&(u=(e,t)=>d[t]===e,i.every(u))||(a=o,l(Ze,e,t,s,r,n,a))}),oe[o?1:0],[e,t])},addWillFinishTransactionListener:e=>fe(e,ue[0]),addDidFinishTransactionListener:e=>fe(e,ue[1]),callListener:e=>(be(e,[qe,Be,He],(e=>b(e[2])?[]:K(Ke(...e)))),Ze),delListener:e=>(Te(e),Ze),getListenerStats:()=>({}),createStore:Z};return P({Tables:[0,se],TableIds:[0,re],Table:[1,ne],RowIds:[1,le],Row:[2,ae],CellIds:[2,ce],Cell:[3,ie],InvalidCell:[3,de]},(([e,t],s)=>{Ze["add"+s+"Listener"]=(...s)=>fe(s[e],t[s[e+1]?1:0],e>0?i(s,0,e):void 0)})),j(Ze)};export{Z as createStore};
package/lib/store.js.gz CHANGED
Binary file
package/lib/tinybase.js CHANGED
@@ -1 +1 @@
1
- import{promises as e,watch as t}from"fs";const s=e=>typeof e,n=s(""),o=s(!0),r=s(0),a=s(s),i=e=>""+e,l=(e,t)=>e.includes(t),d=(e,t)=>e.every(t),c=(e,t)=>d(e,((s,n)=>0==n||t(e[n-1],s)<=0)),u=(e,t)=>e.sort(t),h=(e,t)=>e.forEach(t),g=(e,t)=>e.map(t),f=e=>R(e,((e,t)=>e+t),0),w=e=>e.length,L=e=>0==w(e),R=(e,t,s)=>e.reduce(t,s),v=(e,t,s)=>e.slice(t,s),I=(e,...t)=>e.push(...t),S=e=>e.pop(),p=e=>e.shift(),T=e=>JSON.stringify(e,((e,t)=>E(t,Map)?R([...t],((e,[t,s])=>(e[t]=s,e)),{}):t)),y=JSON.parse,b=Math.max,C=Math.min,m=isFinite,E=(e,t)=>e instanceof t,k=e=>null==e,M=(e,t,s)=>k(e)?s?.():t(e),D=e=>e==n||e==o,A=e=>s(e)==a,x=()=>{},F=e=>e.size,J=(e,t)=>e?.has(t)??!1,Q=e=>k(e)||0==F(e),z=e=>[...e?.values()??[]],N=e=>e.clear(),O=(e,t)=>e?.forEach(t),j=(e,t)=>e?.delete(t),W=e=>new Map(e),P=e=>[...e?.keys()??[]],B=(e,t)=>e?.get(t),H=(e,t)=>O(e,((e,s)=>t(s,e))),$=(e,t,s)=>k(s)?(j(e,t),e):e?.set(t,s),q=(e,t,s)=>(J(e,t)||$(e,t,s()),B(e,t)),G=(e,t,s)=>{const n={},o=t??(e=>e);return O(e,((e,t)=>M(o(e),(e=>s?.(e)?0:n[t]=e)))),n},K=(e,t)=>{const s=W(),n=t??(e=>e);return O(e,((e,t)=>s.set(t,n(e)))),s},U=e=>K(e,K),V=(e,t,s,n,o=0)=>M((s?q:B)(e,t[o],o>w(t)-2?s:W),(r=>{if(o>w(t)-2)return n?.(r)&&$(e,t[o]),r;const a=V(r,t,s,n,o+1);return Q(r)&&$(e,t[o]),a})),X=e=>new Set(e),Y=(e,t)=>e?.add(t),Z=(e,t,s)=>{const n=e.hasRow,o=W(),r=W(),a=W(),i=W(),l=W(),d=(t,s,...n)=>{const o=q(l,t,X);return h(n,(t=>Y(o,t)&&s&&e.callListener(t))),n},c=(t,...s)=>M(B(l,t),(n=>{h(L(s)?z(n):s,(t=>{e.delListener(t),j(n,t)})),Q(n)&&$(l,t)})),u=(e,s)=>{$(o,e,s),J(r,e)||($(r,e,t()),$(a,e,W()),$(i,e,W()))},g=e=>{$(o,e),$(r,e),$(a,e),$(i,e),c(e)};return[()=>e,()=>P(o),e=>H(r,e),e=>J(r,e),e=>B(o,e),e=>B(r,e),(e,t)=>$(r,e,t),u,(t,o,r,l,g)=>{u(t,o);const f=W(),w=W(),L=B(a,t),R=B(i,t),v=t=>{const r=s=>e.getCell(o,t,s),a=B(L,t),i=n(o,t)?s(l(r,t)):void 0;if(a!=i&&$(f,t,[a,i]),!k(g)){const e=B(R,t),s=n(o,t)?g(r,t):void 0;e!=s&&$(w,t,s)}},I=e=>{r((()=>{O(f,(([,e],t)=>$(L,t,e))),O(w,((e,t)=>$(R,t,e)))}),f,w,L,R,e),N(f),N(w)};H(L,v),e.hasTable(o)&&h(e.getRowIds(o),(e=>{J(L,e)||v(e)})),I(!0),c(t),d(t,0,e.addRowListener(o,null,((e,t,s)=>v(s))),e.addTableListener(o,(()=>I())))},g,()=>H(l,g),d,c]},_=(e,t)=>s(e)==n?t=>t(e):e??(()=>t??""),ee=e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))},te=/^\d+$/,se=()=>{const e=[];let t=0;return[()=>p(e)??""+t++,t=>{te.test(t)&&w(e)<1e3&&I(e,t)}]},ne=e=>{let t;const[s,n]=se(),o=W();return[(n,r,a)=>{t??=e();const i=s();return $(o,i,[n,r,a]),Y(V(r,a??[""],X),i),i},(e,s,...n)=>h(((e,t=[""])=>{const s=[],n=(e,o)=>o==w(t)?I(s,e):null===t[o]?O(e,(e=>n(e,o+1))):h([t[o],null],(t=>n(B(e,t),o+1)));return n(e,0),s})(e,s),(e=>O(e,(e=>B(o,e)[0](t,...s??[],...n))))),e=>M(B(o,e),(([,t,s])=>(V(t,s??[""],void 0,(t=>(j(t,e),Q(t)?1:0))),$(o,e),n(e),s))),(e,s,n)=>M(B(o,e),(([e,,o=[]])=>{const r=(...a)=>{const i=w(a);i==w(o)?e(t,...a,...n(a)):k(o[i])?h(s[i](...a),(e=>r(...a,e))):r(...a,o[i])};r()}))]},oe=Object,re=oe.keys,ae=oe.isFrozen,ie=oe.freeze,le=(e,t)=>!k(((e,t)=>M(e,(e=>e[t])))(e,t)),de=(e,t)=>delete e[t],ce=(e,t)=>h(oe.entries(e),(([e,s])=>t(s,e))),ue=e=>L(re(e)),he=e=>{const t=s(e);return D(t)||t==r&&m(e)?t:void 0},ge=(e,t,s,n,o)=>k(o)?e.delCell(t,s,n,!0):e.setCell(t,s,n,o),fe=ee((e=>{let t,s,n,o=100,r=W(),a=1;const i=W(),d=W(),[c,u,g]=ne((()=>P)),f=W(),R=W(),v=[],T=[],y=(t,s)=>{a=0,e.transaction((()=>O(B(f,s),((s,n)=>O(s,((s,o)=>O(s,((s,r)=>ge(e,n,o,r,s[t]))))))))),a=1},b=e=>{$(f,e),$(R,e),u(d,[e])},C=(e,t)=>h(((e,t)=>e.splice(0,t))(e,t??w(e)),b),m=()=>C(v,w(v)-o),E=e.addCellListener(null,null,null,((e,s,o,i,l,d)=>{if(a){M(t,(()=>{I(v,t),m(),C(T),t=void 0,n=1}));const e=q(r,s,W),a=q(e,o,W),c=q(a,i,(()=>[d,void 0]));c[1]=l,c[0]===l&&Q($(a,i))&&Q($(e,o))&&Q($(r,s))&&(t=S(v),n=1),F()}})),D=(e="")=>(k(t)&&(t=""+s++,$(f,t,r),N(t,e),r=W(),n=1),t),A=()=>{L(v)||(T.unshift(D()),y(0,t),t=S(v),n=1)},x=()=>{L(T)||(I(v,t),t=p(T),y(1,t),n=1)},F=()=>{n&&(u(i),n=0)},z=e=>{const t=D(e);return F(),t},N=(e,t)=>(j(e)&&B(R,e)!==t&&($(R,e,t),u(d,[e])),P),j=e=>J(f,e),P={setSize:e=>(o=e,m(),P),addCheckpoint:z,setCheckpoint:N,getStore:()=>e,getCheckpointIds:()=>[[...v],t,[...T]],forEachCheckpoint:e=>H(R,e),hasCheckpoint:j,getCheckpoint:e=>B(R,e),goBackward:()=>(A(),F(),P),goForward:()=>(x(),F(),P),goTo:e=>{const s=l(v,e)?A:l(T,e)?x:null;for(;!k(s)&&e!=t;)s();return F(),P},addCheckpointIdsListener:e=>c(e,i),addCheckpointListener:(e,t)=>c(t,d,[e]),delListener:e=>(g(e),P),clear:()=>(C(v),C(T),k(t)||b(t),t=void 0,s=0,z(),P),destroy:()=>{e.delListener(E)},getListenerStats:()=>({})};return ie(P.clear())})),we=(e,t)=>e<t?-1:1,Le=ee((e=>{const t=W(),s=W(),[n,o,r,a,i,l,d,,h,g,f]=Z(e,W,(e=>k(e)?"":e+"")),[w,L,R]=ne((()=>I)),v=(t,s,n)=>{const o=i(t);O(n,((t,n)=>s(n,(s=>O(t,(t=>s(t,(s=>e.forEachCell(o,t,s)))))))))},I={setIndexDefinition:(e,n,o,r,a,i=we)=>{const g=k(a)?void 0:([e],[t])=>a(e,t);return h(e,n,((n,o,a,h,f,w)=>{let R=0;const v=X(),I=X(),S=l(e);if(O(o,(([e,t],s)=>{k(e)||(Y(v,e),M(B(S,e),(t=>{j(t,s),Q(t)&&($(S,e),R=1)}))),k(t)||(Y(v,t),J(S,t)||($(S,t,X()),R=1),Y(B(S,t),s),k(r)||Y(I,t))})),n(),Q(f)||(w?H(S,(e=>Y(I,e))):H(a,(e=>M(B(h,e),(e=>Y(I,e))))),O(I,(e=>{const t=(t,s)=>i(B(f,t),B(f,s),e),s=[...B(S,e)];c(s,t)||($(S,e,X(u(s,t))),Y(v,e))}))),(R||w)&&!k(g)){const t=[...S];c(t,g)||(d(e,W(u(t,g))),R=1)}R&&L(t,[e]),O(v,(t=>L(s,[e,t])))}),_(o),M(r,_)),I},delIndexDefinition:e=>(g(e),I),getStore:n,getIndexIds:o,forEachIndex:e=>r(((t,s)=>e(t,(e=>v(t,e,s))))),forEachSlice:(e,t)=>v(e,t,l(e)),hasIndex:a,hasSlice:(e,t)=>J(l(e),t),getTableId:i,getSliceIds:e=>P(l(e)),getSliceRowIds:(e,t)=>z(B(l(e),t)),addSliceIdsListener:(e,s)=>w(s,t,[e]),addSliceRowIdsListener:(e,t,n)=>w(n,s,[e,t]),delListener:e=>(R(e),I),destroy:f,getListenerStats:()=>({})};return ie(I)})),Re=W([["avg",[(e,t)=>f(e)/t,(e,t,s)=>e+(t-e)/(s+1),(e,t,s)=>e+(e-t)/(s-1),(e,t,s,n)=>e+(t-s)/n]],["max",[e=>b(...e),(e,t)=>b(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:b(t,e)]],["min",[e=>C(...e),(e,t)=>C(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:C(t,e)]],["sum",[e=>f(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),ve=(e,t,s,n,o,r=!1)=>{if(Q(s))return;const[a,i,l,d]=o;return r||=k(e),O(n,(([s,n])=>{r||(e=k(s)?i?.(e,n,t++):k(n)?l?.(e,s,t--):d?.(e,n,s,t),r||=k(e))})),r?a(z(s),F(s)):e},Ie=ee((e=>{const t=W(),[s,n,o,r,a,i,l,,d,c,u]=Z(e,x,(e=>isNaN(e)||k(e)||!0===e||!1===e||""===e?void 0:1*e)),[h,g,f]=ne((()=>w)),w={setMetricDefinition:(e,s,n,o,r,a,c)=>{const u=A(n)?[n,r,a,c]:B(Re,n)??B(Re,"sum");return d(e,s,((s,n,o,r,a,d)=>{const c=i(e),h=F(r);d||=k(c),s();let f=ve(c,h,r,n,u,d);m(f)||(f=void 0),f!=c&&(l(e,f),g(t,[e],f,c))}),_(o,1)),w},delMetricDefinition:e=>(c(e),w),getStore:s,getMetricIds:n,forEachMetric:o,hasMetric:r,getTableId:a,getMetric:i,addMetricListener:(e,s)=>h(s,t,[e]),delListener:e=>(f(e),w),destroy:u,getListenerStats:()=>({})};return ie(w)})),Se=(e,t,s,n,o)=>{let r,a=0;const i={load:async s=>{if(2!=a){a=1;const n=await t();k(n)||""==n?e.setTables(s):e.setJson(n),a=0}return i},startAutoLoad:async e=>(i.stopAutoLoad(),await i.load(e),n(i.load),i),stopAutoLoad:()=>(o(),i),save:async()=>(1!=a&&(a=2,await s(e.getJson()),a=0),i),startAutoSave:async()=>(await i.stopAutoSave().save(),r=e.addTablesListener((()=>i.save())),i),stopAutoSave:()=>(M(r,e.delListener),i),getStore:()=>e,destroy:()=>i.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return ie(i)},pe=globalThis.window,Te=(e,t,s)=>{let n;return Se(e,(async()=>s.getItem(t)),(async e=>s.setItem(t,e)),(e=>{n=n=>{n.storageArea===s&&n.key===t&&e()},pe.addEventListener("storage",n)}),(()=>{pe.removeEventListener("storage",n),n=void 0}))},ye=(e,t)=>Te(e,t,localStorage),be=(e,t)=>Te(e,t,sessionStorage),Ce=(s,n)=>{let o;return Se(s,(async()=>{try{return await e.readFile(n,"utf8")}catch{}}),(async t=>{try{await e.writeFile(n,t,"utf8")}catch{}}),(e=>{o=t(n,e)}),(()=>{o?.close(),o=void 0}))},me=e=>e.headers.get("ETag"),Ee=(e,t,s,n)=>{let o,r;return Se(e,(async()=>{const e=await fetch(t);return r=me(e),e.text()}),(async e=>await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:e})),(e=>{o=setInterval((async()=>{const s=await fetch(t,{method:"HEAD"}),n=me(s);k(r)||k(n)||n==r||(r=n,e())}),1e3*n)}),(()=>{M(o,clearInterval),o=void 0}))},ke=ee((e=>{const t=e.createStore,[s,n,o,r,a,,,i,,l,c,u,g]=Z(e,(()=>!0),x),f=t(),R=t(),S=W(),p=(e,t,...s)=>h(s,(s=>Y(q(q(S,t,W),e,X),s))),T=e=>{M(B(S,e),(e=>{H(e,((e,t)=>O(t,(t=>e.delListener(t))))),N(e)})),h([R,f],(t=>t.delTable(e)))},y=(e,t,s)=>p(t,e,t.addWillFinishTransactionListener(s.startTransaction),t.addDidFinishTransactionListener((()=>s.finishTransaction()))),b={setQueryDefinition:(t,s,n)=>{i(t,s),T(t);const o=[],r=[[null,[s,null,null,[],W()]]],a=[],l=[],c=[];n({select:(e,t)=>{const s=A(e)?[w(o)+"",e]:[k(t)?e:t,s=>s(e,t)];return I(o,s),{as:e=>s[0]=e}},join:(e,t,s)=>{const n=k(s)||A(t)?null:t,o=k(n)?t:s,a=[e,[e,n,A(o)?o:e=>e(o),[],W()]];return I(r,a),{as:e=>a[0]=e}},where:(e,t,s)=>I(a,A(e)?e:k(s)?s=>s(e)===t:n=>n(e,t)===s),group:(e,t,s,n,o)=>{const r=[e,[e,A(t)?[t,s,n,o]:B(Re,t)??[(e,t)=>t]]];return I(l,r),{as:e=>r[0]=e}},having:(e,t)=>I(c,A(e)?e:s=>s(e)===t)});const v=W(o);if(Q(v))return b;const S=W(r);H(S,((e,[,t])=>M(B(S,t),(({3:t})=>k(e)?0:I(t,e)))));const C=W(l);let m=f;if(Q(C)&&L(c))m=R;else{y(t,m,R);const e=W();H(C,((t,[s,n])=>Y(q(e,s,X),[t,n])));const s=X();H(v,(t=>J(e,t)?0:Y(s,t)));const n=W(),o=(s,n,o,r)=>M(s,(([a,i,l,u])=>{H(n,((t,[s])=>{const n=q(a,t,W),i=B(n,o),l=r?void 0:s;if(i!==l){const s=X([[i,l]]),r=F(n);$(n,o,l),O(B(e,t),(([e,t])=>{const o=ve(u[e],r,n,s,t);u[e]=k(he(o))?null:o}))}})),Q(i)||!d(c,(e=>e((e=>u[e]))))?R.delRow(t,l):k(l)?s[2]=R.addRow(t,u):R.setRow(t,l,u)}));p(m,t,m.addRowListener(t,null,((r,a,i,l)=>{const d=[],c=[],u=W(),h=m.hasRow(t,i);let g=!h;O(s,(e=>{const[s,n,o]=l(t,i,e);I(d,n),I(c,o),g||=s})),H(e,(e=>{const[s,,n]=l(t,i,e);(g||s)&&$(u,e,[n])})),g&&o(V(n,d,void 0,(([,e])=>(j(e,i),Q(e)))),u,i,1),h&&o(V(n,c,(()=>{const e={};return O(s,(s=>e[s]=m.getCell(t,i,s))),[W(),X(),void 0,e]}),(([,e])=>{Y(e,i)})),u,i)})))}y(t,e,m);const E=(n,o,r,i)=>{const l=t=>e.getCell(o,r,t);h(i,(s=>{const[o,,r,a,i]=B(S,s),d=r?.(l,n),[c,h]=B(i,n)??[];d!=c&&(k(h)||g(t,h),$(i,n,k(d)?null:[d,...u(t,1,e.addRowListener(o,d,(()=>E(n,o,d,a))))]))})),(n=>{const o=(t,o)=>e.getCell(...k(o)?[s,n,t]:t===s?[s,n,o]:[B(S,t)?.[0],B(B(S,t)?.[4],n)?.[0],o]);m.transaction((()=>d(a,(e=>e(o)))?H(v,((e,s)=>ge(m,t,n,e,s(o,n)))):m.delRow(t,n)))})(n)},{3:D}=B(S,null);return m.transaction((()=>u(t,1,e.addRowListener(s,null,((n,o,r)=>{e.hasRow(s,r)?E(r,s,r,D):(m.delRow(t,r),O(S,(({4:e})=>M(B(e,r),(([,s])=>{g(t,s),$(e,r)})))))}))))),b},delQueryDefinition:e=>(T(e),l(e),b),getStore:s,getQueryIds:n,forEachQuery:o,hasQuery:r,getTableId:a,delListener:e=>(R.delListener(e),b),destroy:c,getListenerStats:()=>{const{tables:e,tableIds:t,transaction:s,...n}=R.getListenerStats();return n}};return ce({Table:[1,1],RowIds:[0,1],SortedRowIds:[0,5],Row:[1,2],CellIds:[0,2],Cell:[1,3]},(([e,t],s)=>{h(e?["get","has","forEach"]:["get"],(e=>b[e+"Result"+s]=(...t)=>R[e+s](...t))),b["addResult"+s+"Listener"]=(...e)=>R["add"+s+"Listener"](...v(e,0,t),((s,...n)=>e[t](b,...n)))})),ie(b)})),Me=ee((e=>{const t=W(),s=W(),n=W(),o=W(),[r,a,i,l,d,c,,,u,h,g]=Z(e,(()=>[W(),W(),W(),W()]),(e=>k(e)?void 0:e+"")),[f,w,L]=ne((()=>S)),R=(e,t,s)=>M(c(e),(([n,,o])=>{if(!J(o,t)){const r=X();if(d(e)!=I(e))Y(r,t);else{let e=t;for(;!k(e)&&!J(r,e);)Y(r,e),e=B(n,e)}if(s)return r;$(o,t,r)}return B(o,t)})),v=(e,t)=>M(c(e),(([,,e])=>$(e,t))),I=e=>B(t,e),S={setRelationshipDefinition:(e,r,a,i)=>($(t,e,a),u(e,r,((t,r)=>{const a=X(),i=X(),l=X(),[d,u]=c(e);O(r,(([t,s],n)=>{k(t)||(Y(i,t),M(B(u,t),(e=>{j(e,n),Q(e)&&$(u,t)}))),k(s)||(Y(i,s),J(u,s)||$(u,s,X()),Y(B(u,s),n)),Y(a,n),$(d,n,s),H(B(o,e),(t=>{J(R(e,t),n)&&Y(l,t)}))})),t(),O(a,(t=>w(s,[e,t]))),O(i,(t=>w(n,[e,t]))),O(l,(t=>{v(e,t),w(o,[e,t])}))}),_(i)),S),delRelationshipDefinition:e=>($(t,e),h(e),S),getStore:r,getRelationshipIds:a,forEachRelationship:t=>i((s=>t(s,(t=>e.forEachRow(d(s),t))))),hasRelationship:l,getLocalTableId:d,getRemoteTableId:I,getRemoteRowId:(e,t)=>B(c(e)?.[0],t),getLocalRowIds:(e,t)=>z(B(c(e)?.[1],t)),getLinkedRowIds:(e,t)=>k(c(e))?[t]:z(R(e,t,!0)),addRemoteRowIdListener:(e,t,n)=>f(n,s,[e,t]),addLocalRowIdsListener:(e,t,s)=>f(s,n,[e,t]),addLinkedRowIdsListener:(e,t,s)=>(R(e,t),f(s,o,[e,t])),delListener:e=>(v(...L(e)),S),destroy:g,getListenerStats:()=>({})};return ie(S)})),De=e=>[e,e],Ae=()=>[W(),W()],xe=(e,t,s,n=$)=>{const o=(r=P(e),a=e=>!le(t,e),r.filter(a));var r,a;return h(re(t),(n=>s(e,n,t[n]))),h(o,(t=>n(e,t))),e},Fe=(e,t,s)=>k(e)||!(e=>E(e,oe)&&e.constructor==oe)(e)||ue(e)||ae(e)?(s?.(),!1):(ce(e,((s,n)=>{t(s,n)||de(e,n)})),!ue(e)),Je=(e,t,s)=>$(e,t,B(e,t)==-s?void 0:s),Qe=()=>{let e,t,s=0;const n=W(),o=W(),a=W(),c=W(),f=W(),L=W(),R=W(),S=W(),p=W(),b=Ae(),C=Ae(),m=Ae(),E=Ae(),x=Ae(),F=Ae(),z=Ae(),V=Ae(),Z=Ae(),_=Ae(),[ee,te,oe,re]=ne((()=>st)),ae=(t,s)=>(!e||J(L,s)||je(s))&&Fe(t,((e,t)=>fe(s,t,e)),(()=>je(s))),fe=(e,t,s,n)=>Fe(n?s:Re(s,e,t),((n,o)=>M(Le(e,t,o,n),(e=>(s[o]=e,!0)),(()=>!1))),(()=>je(e,t))),Le=(t,s,n,o)=>e?M(B(B(L,t),n),(e=>he(o)!=e.type?je(t,s,n,o,e.default):o),(()=>je(t,s,n,o))):k(he(o))?je(t,s,n,o):o,Re=(e,t,s)=>(M(B(R,t),(([n,o])=>{O(n,((t,s)=>{le(e,s)||(e[s]=t)})),O(o,(n=>{le(e,n)||je(t,s,n)}))})),e),ve=e=>xe(L,e,((e,t,s)=>{const n=W(),o=X();xe(q(L,t,W),s,((e,t,s)=>{$(e,t,s),M(s.default,(e=>$(n,t,e)),(()=>Y(o,t)))})),$(R,t,[n,o])}),((e,t)=>{$(L,t),$(R,t)})),Ie=e=>xe(p,e,((e,t,s)=>Se(t,s)),((e,t)=>me(t))),Se=(e,t)=>xe(q(p,e,(()=>(Me(e,1),W()))),t,((t,s,n)=>pe(e,t,s,n)),((t,s)=>Ee(e,t,s))),pe=(e,t,s,n,o)=>xe(q(t,s,(()=>(ze(e,s,1),W()))),n,((t,n,o)=>Te(e,s,t,n,o)),((n,r)=>ke(e,t,s,n,r,o))),Te=(e,t,s,n,o)=>{J(s,n)||Ne(e,t,n,1);const r=B(s,n);o!==r&&(Oe(e,t,n,r,o),$(s,n,o))},ye=(e,t,s,n,o)=>M(B(t,s),(t=>Te(e,s,t,n,o)),(()=>pe(e,t,s,Re({[n]:o},e,s)))),be=e=>{const[t]=q(S,e,se),s=t();return J(B(p,e),s)?be(e):s},Ce=e=>B(p,e)??Se(e,{}),me=e=>Se(e,{}),Ee=(e,t,s)=>{const[,n]=q(S,e,se);n(s),pe(e,t,s,{},!0)},ke=(e,t,s,n,o,r)=>{const a=B(B(R,e)?.[0],o);if(!k(a)&&!r)return Te(e,s,n,o,a);const i=t=>{Oe(e,s,t,B(n,t)),Ne(e,s,t,-1),$(n,t)};k(a)?i(o):H(n,i),Q(n)&&(ze(e,s,-1),Q($(t,s))&&(Me(e,-1),$(p,e)))},Me=(e,t)=>Je(n,e,t),ze=(e,t,s)=>Je(q(o,e,W),t,s),Ne=(e,t,s,n)=>Je(q(q(a,e,W),t,W),s,n),Oe=(e,t,s,n,o)=>q(q(q(c,e,W),t,W),s,(()=>[n,0]))[1]=o,je=(e,t,s,n,o)=>(I(q(q(q(f,e,W),t,W),s,(()=>[])),n),o),We=(e,t,s)=>M(B(B(B(c,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...De(Xe(e,t,s))])),Pe=e=>Q(f)||Q(Z[e])?0:O(e?K(f,U):f,((t,s)=>O(t,((t,n)=>O(t,((t,o)=>te(Z[e],[s,n,o],t))))))),Be=(e,t,s)=>{if(!Q(t))return te(e,s),1},He=e=>{const t=Q(x[e]),s=Q(z[e])&&Q(E[e])&&t&&Q(C[e]),r=Q(V[e])&&Q(F[e])&&Q(m[e])&&Q(b[e]);if(!s||!r){const i=e?[K(n),U(o),K(a,U),K(c,U)]:[n,o,a,c];if(!s){O(i[2],((t,s)=>O(t,((t,n)=>Be(z[e],t,[s,n])))));const s=X();O(i[1],((n,o)=>{Be(E[e],n,[o])&&!t&&(te(x[e],[o,null]),Y(s,o))})),t||O(i[3],((t,n)=>{if(!J(s,n)){const s=X();O(t,(e=>O(e,(([t,n],o)=>n!==t?Y(s,o):j(e,o))))),O(s,(t=>te(x[e],[n,t])))}})),Be(C[e],i[0])}if(!r){let t;O(i[3],((s,n)=>{let o;O(s,((s,r)=>{let a;O(s,(([s,i],l)=>{i!==s&&(te(V[e],[n,r,l],i,s,We),t=o=a=1)})),a&&te(F[e],[n,r],We)})),o&&te(m[e],[n],We)})),t&&te(b[e],void 0,We)}}},$e=(e,...t)=>(_e((()=>e(...g(t,i)))),st),qe=()=>G(p,(e=>G(e,G))),Ge=()=>P(p),Ke=e=>P(B(p,i(e))),Ue=(e,t,s,n=0,o)=>{const r=[];return H(B(p,i(e)),((e,s)=>I(r,[k(t)?e:B(s,i(t)),e]))),g(v(u(r,(([e],[t])=>we(e,t)*(s?-1:1))),n,k(o)?o:n+o),(([,e])=>e))},Ve=(e,t)=>P(B(B(p,i(e)),i(t))),Xe=(e,t,s)=>B(B(B(p,i(e)),i(t)),i(s)),Ye=e=>$e((()=>(e=>Fe(e,ae,je))(e)?Ie(e):0)),Ze=()=>$e((()=>Ie({}))),_e=(e,t)=>{if(-1==s)return;et();const n=e?.();return tt(t),n},et=()=>(s++,st),tt=e=>(s>0&&(s--,0==s&&(t=!Q(c),s=1,Pe(1),t&&He(1),s=-1,e?.(G(c,(e=>G(e,(e=>G(e,(e=>[...e]),(([e,t])=>e===t))),ue)),ue),G(f,(e=>G(e,G))))&&(s=1,O(c,((e,t)=>O(e,((e,s)=>O(e,(([e],n)=>ge(st,t,s,n,e))))))),s=-1,t=!1),te(_[0],void 0,t),Pe(0),t&&He(0),te(_[1],void 0,t),s=0,h([c,f,n,o,a],N))),st),st={getTables:qe,getTableIds:Ge,getTable:e=>G(B(p,i(e)),G),getRowIds:Ke,getSortedRowIds:Ue,getRow:(e,t)=>G(B(B(p,i(e)),i(t))),getCellIds:Ve,getCell:Xe,hasTables:()=>!Q(p),hasTable:e=>J(p,i(e)),hasRow:(e,t)=>J(B(p,i(e)),i(t)),hasCell:(e,t,s)=>J(B(B(p,i(e)),i(t)),i(s)),getJson:()=>T(p),getSchemaJson:()=>T(L),setTables:Ye,setTable:(e,t)=>$e((e=>ae(t,e)?Se(e,t):0),e),setRow:(e,t,s)=>$e(((e,t)=>fe(i(e),i(t),s)?pe(i(e),Ce(i(e)),i(t),s):0),e,t),addRow:(e,t)=>_e((()=>{let s;return fe(e,s,t)&&(e=i(e),pe(e,Ce(e),s=be(e),t)),s})),setPartialRow:(e,t,s)=>$e(((e,t)=>{if(fe(e,t,s,1)){const n=Ce(e);ce(s,((s,o)=>ye(e,n,t,o,s)))}}),e,t),setCell:(e,t,s,n)=>$e(((e,t,s)=>M(Le(e,t,s,A(n)?n(Xe(e,t,s)):n),(n=>ye(e,Ce(e),t,s,n)))),e,t,s),setJson:e=>{try{"{}"===e?Ze():Ye(y(e))}catch{}return st},setSchema:t=>$e((()=>{if((e=(e=>Fe(e,(e=>Fe(e,(e=>{if(!Fe(e,((e,t)=>l(["type","default"],t))))return!1;const t=e.type;return!(!D(t)&&t!=r||(he(e.default)!=t&&de(e,"default"),0))})))))(t))&&(ve(t),!Q(p))){const e=qe();Ze(),Ye(e)}})),delTables:Ze,delTable:e=>$e((e=>J(p,e)?me(e):0),e),delRow:(e,t)=>$e(((e,t)=>M(B(p,e),(s=>J(s,t)?Ee(e,s,t):0))),e,t),delCell:(e,t,s,n)=>$e(((e,t,s)=>M(B(p,e),(o=>M(B(o,t),(r=>J(r,s)?ke(e,o,t,r,s,n):0))))),e,t,s),delSchema:()=>$e((()=>{ve({}),e=!1})),transaction:_e,startTransaction:et,finishTransaction:tt,forEachTable:e=>O(p,((t,s)=>e(s,(e=>O(t,((t,s)=>e(s,(e=>H(t,e))))))))),forEachRow:(e,t)=>O(B(p,i(e)),((e,s)=>t(s,(t=>H(e,t))))),forEachCell:(e,t,s)=>H(B(B(p,i(e)),i(t)),s),addSortedRowIdsListener:(e,t,s,n,o,r,a)=>{let i=Ue(e,t,s,n,o);return ee((()=>{const a=Ue(e,t,s,n,o);var l,c;c=i,w(l=a)===w(c)&&d(l,((e,t)=>c[t]===e))||(i=a,r(st,e,t,s,n,o,i))}),x[a?1:0],[e,t])},addWillFinishTransactionListener:e=>ee(e,_[0]),addDidFinishTransactionListener:e=>ee(e,_[1]),callListener:e=>(re(e,[Ge,Ke,Ve],(e=>k(e[2])?[]:De(Xe(...e)))),st),delListener:e=>(oe(e),st),getListenerStats:()=>({}),createStore:Qe};return ce({Tables:[0,b],TableIds:[0,C],Table:[1,m],RowIds:[1,E],Row:[2,F],CellIds:[2,z],Cell:[3,V],InvalidCell:[3,Z]},(([e,t],s)=>{st["add"+s+"Listener"]=(...s)=>ee(s[e],t[s[e+1]?1:0],e>0?v(s,0,e):void 0)})),ie(st)};export{fe as createCheckpoints,Se as createCustomPersister,Ce as createFilePersister,Le as createIndexes,ye as createLocalPersister,Ie as createMetrics,ke as createQueries,Me as createRelationships,Ee as createRemotePersister,be as createSessionPersister,Qe as createStore,we as defaultSorter};
1
+ import{promises as e,watch as t}from"fs";const s=e=>typeof e,n=s(""),o=s(!0),r=s(0),a=s(s),i=e=>""+e,l=(e,t)=>e.includes(t),d=(e,t)=>e.every(t),c=(e,t)=>L(e)===L(t)&&d(e,((e,s)=>t[s]===e)),u=(e,t)=>d(e,((s,n)=>0==n||t(e[n-1],s)<=0)),h=(e,t)=>e.sort(t),g=(e,t)=>e.forEach(t),f=(e,t)=>e.map(t),w=e=>v(e,((e,t)=>e+t),0),L=e=>e.length,R=e=>0==L(e),v=(e,t,s)=>e.reduce(t,s),I=(e,t,s)=>e.slice(t,s),S=(e,...t)=>e.push(...t),p=e=>e.pop(),y=e=>e.shift(),T=e=>JSON.stringify(e,((e,t)=>k(t,Map)?v([...t],((e,[t,s])=>(e[t]=s,e)),{}):t)),b=JSON.parse,C=Math.max,m=Math.min,E=isFinite,k=(e,t)=>e instanceof t,A=e=>null==e,M=(e,t,s)=>A(e)?s?.():t(e),D=e=>e==n||e==o,x=e=>s(e)==a,F=e=>Array.isArray(e),J=()=>{},Q=e=>e.size,z=(e,t)=>e?.has(t)??!1,N=e=>A(e)||0==Q(e),O=e=>[...e?.values()??[]],j=e=>e.clear(),W=(e,t)=>e?.forEach(t),P=(e,t)=>e?.delete(t),B=e=>new Map(e),H=e=>[...e?.keys()??[]],$=(e,t)=>e?.get(t),q=(e,t)=>W(e,((e,s)=>t(s,e))),G=(e,t,s)=>A(s)?(P(e,t),e):e?.set(t,s),K=(e,t,s)=>(z(e,t)||G(e,t,s()),$(e,t)),U=(e,t,s)=>{const n={},o=t??(e=>e);return W(e,((e,t)=>M(o(e),(e=>s?.(e)?0:n[t]=e)))),n},V=(e,t)=>{const s=B(),n=t??(e=>e);return W(e,((e,t)=>s.set(t,n(e)))),s},X=e=>V(e,V),Y=(e,t,s,n,o=0)=>M((s?K:$)(e,t[o],o>L(t)-2?s:B),(r=>{if(o>L(t)-2)return n?.(r)&&G(e,t[o]),r;const a=Y(r,t,s,n,o+1);return N(r)&&G(e,t[o]),a})),Z=e=>new Set(F(e)||A(e)?e:[e]),_=(e,t)=>e?.add(t),ee=(e,t,s)=>{const n=e.hasRow,o=B(),r=B(),a=B(),i=B(),l=B(),d=(t,s,...n)=>{const o=K(l,t,Z);return g(n,(t=>_(o,t)&&s&&e.callListener(t))),n},u=(t,...s)=>M($(l,t),(n=>{g(R(s)?O(n):s,(t=>{e.delListener(t),P(n,t)})),N(n)&&G(l,t)})),h=(e,s)=>{G(o,e,s),z(r,e)||(G(r,e,t()),G(a,e,B()),G(i,e,B()))},f=e=>{G(o,e),G(r,e),G(a,e),G(i,e),u(e)};return[()=>e,()=>H(o),e=>q(r,e),e=>z(r,e),e=>$(o,e),e=>$(r,e),(e,t)=>G(r,e,t),h,(t,o,r,l,f)=>{h(t,o);const w=B(),L=B(),R=$(a,t),v=$(i,t),I=t=>{const r=s=>e.getCell(o,t,s),a=$(R,t),i=n(o,t)?s(l(r,t)):void 0;if(a===i||F(a)&&F(i)&&c(a,i)||G(w,t,[a,i]),!A(f)){const e=$(v,t),s=n(o,t)?f(r,t):void 0;e!=s&&G(L,t,s)}},S=e=>{r((()=>{W(w,(([,e],t)=>G(R,t,e))),W(L,((e,t)=>G(v,t,e)))}),w,L,R,v,e),j(w),j(L)};q(R,I),e.hasTable(o)&&g(e.getRowIds(o),(e=>{z(R,e)||I(e)})),S(!0),u(t),d(t,0,e.addRowListener(o,null,((e,t,s)=>I(s))),e.addTableListener(o,(()=>S())))},f,()=>q(l,f),d,u]},te=(e,t)=>s(e)==n?t=>t(e):e??(()=>t??""),se=e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))},ne=/^\d+$/,oe=()=>{const e=[];let t=0;return[()=>y(e)??""+t++,t=>{ne.test(t)&&L(e)<1e3&&S(e,t)}]},re=e=>{let t;const[s,n]=oe(),o=B();return[(n,r,a)=>{t??=e();const i=s();return G(o,i,[n,r,a]),_(Y(r,a??[""],Z),i),i},(e,s,...n)=>g(((e,t=[""])=>{const s=[],n=(e,o)=>o==L(t)?S(s,e):null===t[o]?W(e,(e=>n(e,o+1))):g([t[o],null],(t=>n($(e,t),o+1)));return n(e,0),s})(e,s),(e=>W(e,(e=>$(o,e)[0](t,...s??[],...n))))),e=>M($(o,e),(([,t,s])=>(Y(t,s??[""],void 0,(t=>(P(t,e),N(t)?1:0))),G(o,e),n(e),s))),(e,s,n)=>M($(o,e),(([e,,o=[]])=>{const r=(...a)=>{const i=L(a);i==L(o)?e(t,...a,...n(a)):A(o[i])?g(s[i](...a),(e=>r(...a,e))):r(...a,o[i])};r()}))]},ae=Object,ie=ae.keys,le=ae.isFrozen,de=ae.freeze,ce=(e,t)=>!A(((e,t)=>M(e,(e=>e[t])))(e,t)),ue=(e,t)=>delete e[t],he=(e,t)=>g(ae.entries(e),(([e,s])=>t(s,e))),ge=e=>R(ie(e)),fe=e=>{const t=s(e);return D(t)||t==r&&E(e)?t:void 0},we=(e,t,s,n,o)=>A(o)?e.delCell(t,s,n,!0):e.setCell(t,s,n,o),Le=se((e=>{let t,s,n,o=100,r=B(),a=1;const i=B(),d=B(),[c,u,h]=re((()=>j)),f=B(),w=B(),v=[],I=[],T=(t,s)=>{a=0,e.transaction((()=>W($(f,s),((s,n)=>W(s,((s,o)=>W(s,((s,r)=>we(e,n,o,r,s[t]))))))))),a=1},b=e=>{G(f,e),G(w,e),u(d,[e])},C=(e,t)=>g(((e,t)=>e.splice(0,t))(e,t??L(e)),b),m=()=>C(v,L(v)-o),E=e.addCellListener(null,null,null,((e,s,o,i,l,d)=>{if(a){M(t,(()=>{S(v,t),m(),C(I),t=void 0,n=1}));const e=K(r,s,B),a=K(e,o,B),c=K(a,i,(()=>[d,void 0]));c[1]=l,c[0]===l&&N(G(a,i))&&N(G(e,o))&&N(G(r,s))&&(t=p(v),n=1),F()}})),k=(e="")=>(A(t)&&(t=""+s++,G(f,t,r),Q(t,e),r=B(),n=1),t),D=()=>{R(v)||(I.unshift(k()),T(0,t),t=p(v),n=1)},x=()=>{R(I)||(S(v,t),t=y(I),T(1,t),n=1)},F=()=>{n&&(u(i),n=0)},J=e=>{const t=k(e);return F(),t},Q=(e,t)=>(O(e)&&$(w,e)!==t&&(G(w,e,t),u(d,[e])),j),O=e=>z(f,e),j={setSize:e=>(o=e,m(),j),addCheckpoint:J,setCheckpoint:Q,getStore:()=>e,getCheckpointIds:()=>[[...v],t,[...I]],forEachCheckpoint:e=>q(w,e),hasCheckpoint:O,getCheckpoint:e=>$(w,e),goBackward:()=>(D(),F(),j),goForward:()=>(x(),F(),j),goTo:e=>{const s=l(v,e)?D:l(I,e)?x:null;for(;!A(s)&&e!=t;)s();return F(),j},addCheckpointIdsListener:e=>c(e,i),addCheckpointListener:(e,t)=>c(t,d,[e]),delListener:e=>(h(e),j),clear:()=>(C(v),C(I),A(t)||b(t),t=void 0,s=0,J(),j),destroy:()=>{e.delListener(E)},getListenerStats:()=>({})};return de(j.clear())})),Re=(e,t)=>e<t?-1:1,ve=se((e=>{const t=B(),s=B(),[n,o,r,a,l,d,c,,g,w,L]=ee(e,B,(e=>A(e)?"":F(e)?f(e,i):i(e))),[R,v,I]=re((()=>p)),S=(t,s,n)=>{const o=l(t);W(n,((t,n)=>s(n,(s=>W(t,(t=>s(t,(s=>e.forEachCell(o,t,s)))))))))},p={setIndexDefinition:(e,n,o,r,a,i=Re)=>{const l=A(a)?void 0:([e],[t])=>a(e,t);return g(e,n,((n,o,a,g,f,w)=>{let L=0;const R=Z(),I=Z(),S=d(e);if(W(o,(([e,t],s)=>{const n=Z(e),o=Z(t);W(n,(e=>P(o,e)?P(n,e):0)),W(n,(e=>{_(R,e),M($(S,e),(t=>{P(t,s),N(t)&&(G(S,e),L=1)}))})),W(o,(e=>{_(R,e),z(S,e)||(G(S,e,Z()),L=1),_($(S,e),s),A(r)||_(I,e)}))})),n(),N(f)||(w?q(S,(e=>_(I,e))):q(a,(e=>M($(g,e),(e=>_(I,e))))),W(I,(e=>{const t=(t,s)=>i($(f,t),$(f,s),e),s=[...$(S,e)];u(s,t)||(G(S,e,Z(h(s,t))),_(R,e))}))),(L||w)&&!A(l)){const t=[...S];u(t,l)||(c(e,B(h(t,l))),L=1)}L&&v(t,[e]),W(R,(t=>v(s,[e,t])))}),te(o),M(r,te)),p},delIndexDefinition:e=>(w(e),p),getStore:n,getIndexIds:o,forEachIndex:e=>r(((t,s)=>e(t,(e=>S(t,e,s))))),forEachSlice:(e,t)=>S(e,t,d(e)),hasIndex:a,hasSlice:(e,t)=>z(d(e),t),getTableId:l,getSliceIds:e=>H(d(e)),getSliceRowIds:(e,t)=>O($(d(e),t)),addSliceIdsListener:(e,s)=>R(s,t,[e]),addSliceRowIdsListener:(e,t,n)=>R(n,s,[e,t]),delListener:e=>(I(e),p),destroy:L,getListenerStats:()=>({})};return de(p)})),Ie=B([["avg",[(e,t)=>w(e)/t,(e,t,s)=>e+(t-e)/(s+1),(e,t,s)=>e+(e-t)/(s-1),(e,t,s,n)=>e+(t-s)/n]],["max",[e=>C(...e),(e,t)=>C(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:C(t,e)]],["min",[e=>m(...e),(e,t)=>m(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:m(t,e)]],["sum",[e=>w(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),Se=(e,t,s,n,o,r=!1)=>{if(N(s))return;const[a,i,l,d]=o;return r||=A(e),W(n,(([s,n])=>{r||(e=A(s)?i?.(e,n,t++):A(n)?l?.(e,s,t--):d?.(e,n,s,t),r||=A(e))})),r?a(O(s),Q(s)):e},pe=se((e=>{const t=B(),[s,n,o,r,a,i,l,,d,c,u]=ee(e,J,(e=>isNaN(e)||A(e)||!0===e||!1===e||""===e?void 0:1*e)),[h,g,f]=re((()=>w)),w={setMetricDefinition:(e,s,n,o,r,a,c)=>{const u=x(n)?[n,r,a,c]:$(Ie,n)??$(Ie,"sum");return d(e,s,((s,n,o,r,a,d)=>{const c=i(e),h=Q(r);d||=A(c),s();let f=Se(c,h,r,n,u,d);E(f)||(f=void 0),f!=c&&(l(e,f),g(t,[e],f,c))}),te(o,1)),w},delMetricDefinition:e=>(c(e),w),getStore:s,getMetricIds:n,forEachMetric:o,hasMetric:r,getTableId:a,getMetric:i,addMetricListener:(e,s)=>h(s,t,[e]),delListener:e=>(f(e),w),destroy:u,getListenerStats:()=>({})};return de(w)})),ye=(e,t,s,n,o)=>{let r,a=0;const i={load:async s=>{if(2!=a){a=1;const n=await t();A(n)||""==n?e.setTables(s):e.setJson(n),a=0}return i},startAutoLoad:async e=>(i.stopAutoLoad(),await i.load(e),n(i.load),i),stopAutoLoad:()=>(o(),i),save:async()=>(1!=a&&(a=2,await s(e.getJson()),a=0),i),startAutoSave:async()=>(await i.stopAutoSave().save(),r=e.addTablesListener((()=>i.save())),i),stopAutoSave:()=>(M(r,e.delListener),i),getStore:()=>e,destroy:()=>i.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return de(i)},Te=globalThis.window,be=(e,t,s)=>{let n;return ye(e,(async()=>s.getItem(t)),(async e=>s.setItem(t,e)),(e=>{n=n=>{n.storageArea===s&&n.key===t&&e()},Te.addEventListener("storage",n)}),(()=>{Te.removeEventListener("storage",n),n=void 0}))},Ce=(e,t)=>be(e,t,localStorage),me=(e,t)=>be(e,t,sessionStorage),Ee=(s,n)=>{let o;return ye(s,(async()=>{try{return await e.readFile(n,"utf8")}catch{}}),(async t=>{try{await e.writeFile(n,t,"utf8")}catch{}}),(e=>{o=t(n,e)}),(()=>{o?.close(),o=void 0}))},ke=e=>e.headers.get("ETag"),Ae=(e,t,s,n)=>{let o,r;return ye(e,(async()=>{const e=await fetch(t);return r=ke(e),e.text()}),(async e=>await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:e})),(e=>{o=setInterval((async()=>{const s=await fetch(t,{method:"HEAD"}),n=ke(s);A(r)||A(n)||n==r||(r=n,e())}),1e3*n)}),(()=>{M(o,clearInterval),o=void 0}))},Me=se((e=>{const t=e.createStore,[s,n,o,r,a,,,i,,l,c,u,h]=ee(e,(()=>!0),J),f=t(),w=t(),v=B(),p=(e,t,...s)=>g(s,(s=>_(K(K(v,t,B),e,Z),s))),y=e=>{M($(v,e),(e=>{q(e,((e,t)=>W(t,(t=>e.delListener(t))))),j(e)})),g([w,f],(t=>t.delTable(e)))},T=(e,t,s)=>p(t,e,t.addWillFinishTransactionListener(s.startTransaction),t.addDidFinishTransactionListener((()=>s.finishTransaction()))),b={setQueryDefinition:(t,s,n)=>{i(t,s),y(t);const o=[],r=[[null,[s,null,null,[],B()]]],a=[],l=[],c=[];n({select:(e,t)=>{const s=x(e)?[L(o)+"",e]:[A(t)?e:t,s=>s(e,t)];return S(o,s),{as:e=>s[0]=e}},join:(e,t,s)=>{const n=A(s)||x(t)?null:t,o=A(n)?t:s,a=[e,[e,n,x(o)?o:e=>e(o),[],B()]];return S(r,a),{as:e=>a[0]=e}},where:(e,t,s)=>S(a,x(e)?e:A(s)?s=>s(e)===t:n=>n(e,t)===s),group:(e,t,s,n,o)=>{const r=[e,[e,x(t)?[t,s,n,o]:$(Ie,t)??[(e,t)=>t]]];return S(l,r),{as:e=>r[0]=e}},having:(e,t)=>S(c,x(e)?e:s=>s(e)===t)});const v=B(o);if(N(v))return b;const I=B(r);q(I,((e,[,t])=>M($(I,t),(({3:t})=>A(e)?0:S(t,e)))));const C=B(l);let m=f;if(N(C)&&R(c))m=w;else{T(t,m,w);const e=B();q(C,((t,[s,n])=>_(K(e,s,Z),[t,n])));const s=Z();q(v,(t=>z(e,t)?0:_(s,t)));const n=B(),o=(s,n,o,r)=>M(s,(([a,i,l,u])=>{q(n,((t,[s])=>{const n=K(a,t,B),i=$(n,o),l=r?void 0:s;if(i!==l){const s=Z([[i,l]]),r=Q(n);G(n,o,l),W($(e,t),(([e,t])=>{const o=Se(u[e],r,n,s,t);u[e]=A(fe(o))?null:o}))}})),N(i)||!d(c,(e=>e((e=>u[e]))))?w.delRow(t,l):A(l)?s[2]=w.addRow(t,u):w.setRow(t,l,u)}));p(m,t,m.addRowListener(t,null,((r,a,i,l)=>{const d=[],c=[],u=B(),h=m.hasRow(t,i);let g=!h;W(s,(e=>{const[s,n,o]=l(t,i,e);S(d,n),S(c,o),g||=s})),q(e,(e=>{const[s,,n]=l(t,i,e);(g||s)&&G(u,e,[n])})),g&&o(Y(n,d,void 0,(([,e])=>(P(e,i),N(e)))),u,i,1),h&&o(Y(n,c,(()=>{const e={};return W(s,(s=>e[s]=m.getCell(t,i,s))),[B(),Z(),void 0,e]}),(([,e])=>{_(e,i)})),u,i)})))}T(t,e,m);const E=(n,o,r,i)=>{const l=t=>e.getCell(o,r,t);g(i,(s=>{const[o,,r,a,i]=$(I,s),d=r?.(l,n),[c,g]=$(i,n)??[];d!=c&&(A(g)||h(t,g),G(i,n,A(d)?null:[d,...u(t,1,e.addRowListener(o,d,(()=>E(n,o,d,a))))]))})),(n=>{const o=(t,o)=>e.getCell(...A(o)?[s,n,t]:t===s?[s,n,o]:[$(I,t)?.[0],$($(I,t)?.[4],n)?.[0],o]);m.transaction((()=>d(a,(e=>e(o)))?q(v,((e,s)=>we(m,t,n,e,s(o,n)))):m.delRow(t,n)))})(n)},{3:k}=$(I,null);return m.transaction((()=>u(t,1,e.addRowListener(s,null,((n,o,r)=>{e.hasRow(s,r)?E(r,s,r,k):(m.delRow(t,r),W(I,(({4:e})=>M($(e,r),(([,s])=>{h(t,s),G(e,r)})))))}))))),b},delQueryDefinition:e=>(y(e),l(e),b),getStore:s,getQueryIds:n,forEachQuery:o,hasQuery:r,getTableId:a,delListener:e=>(w.delListener(e),b),destroy:c,getListenerStats:()=>{const{tables:e,tableIds:t,transaction:s,...n}=w.getListenerStats();return n}};return he({Table:[1,1],RowIds:[0,1],SortedRowIds:[0,5],Row:[1,2],CellIds:[0,2],Cell:[1,3]},(([e,t],s)=>{g(e?["get","has","forEach"]:["get"],(e=>b[e+"Result"+s]=(...t)=>w[e+s](...t))),b["addResult"+s+"Listener"]=(...e)=>w["add"+s+"Listener"](...I(e,0,t),((s,...n)=>e[t](b,...n)))})),de(b)})),De=se((e=>{const t=B(),s=B(),n=B(),o=B(),[r,a,i,l,d,c,,,u,h,g]=ee(e,(()=>[B(),B(),B(),B()]),(e=>A(e)?void 0:e+"")),[f,w,L]=re((()=>S)),R=(e,t,s)=>M(c(e),(([n,,o])=>{if(!z(o,t)){const r=Z();if(d(e)!=I(e))_(r,t);else{let e=t;for(;!A(e)&&!z(r,e);)_(r,e),e=$(n,e)}if(s)return r;G(o,t,r)}return $(o,t)})),v=(e,t)=>M(c(e),(([,,e])=>G(e,t))),I=e=>$(t,e),S={setRelationshipDefinition:(e,r,a,i)=>(G(t,e,a),u(e,r,((t,r)=>{const a=Z(),i=Z(),l=Z(),[d,u]=c(e);W(r,(([t,s],n)=>{A(t)||(_(i,t),M($(u,t),(e=>{P(e,n),N(e)&&G(u,t)}))),A(s)||(_(i,s),z(u,s)||G(u,s,Z()),_($(u,s),n)),_(a,n),G(d,n,s),q($(o,e),(t=>{z(R(e,t),n)&&_(l,t)}))})),t(),W(a,(t=>w(s,[e,t]))),W(i,(t=>w(n,[e,t]))),W(l,(t=>{v(e,t),w(o,[e,t])}))}),te(i)),S),delRelationshipDefinition:e=>(G(t,e),h(e),S),getStore:r,getRelationshipIds:a,forEachRelationship:t=>i((s=>t(s,(t=>e.forEachRow(d(s),t))))),hasRelationship:l,getLocalTableId:d,getRemoteTableId:I,getRemoteRowId:(e,t)=>$(c(e)?.[0],t),getLocalRowIds:(e,t)=>O($(c(e)?.[1],t)),getLinkedRowIds:(e,t)=>A(c(e))?[t]:O(R(e,t,!0)),addRemoteRowIdListener:(e,t,n)=>f(n,s,[e,t]),addLocalRowIdsListener:(e,t,s)=>f(s,n,[e,t]),addLinkedRowIdsListener:(e,t,s)=>(R(e,t),f(s,o,[e,t])),delListener:e=>(v(...L(e)),S),destroy:g,getListenerStats:()=>({})};return de(S)})),xe=e=>[e,e],Fe=()=>[B(),B()],Je=(e,t,s,n=G)=>{const o=(r=H(e),a=e=>!ce(t,e),r.filter(a));var r,a;return g(ie(t),(n=>s(e,n,t[n]))),g(o,(t=>n(e,t))),e},Qe=(e,t,s)=>A(e)||!(e=>k(e,ae)&&e.constructor==ae)(e)||ge(e)||le(e)?(s?.(),!1):(he(e,((s,n)=>{t(s,n)||ue(e,n)})),!ge(e)),ze=(e,t,s)=>G(e,t,$(e,t)==-s?void 0:s),Ne=()=>{let e,t,s=0;const n=B(),o=B(),a=B(),d=B(),u=B(),w=B(),L=B(),R=B(),v=B(),p=Fe(),y=Fe(),C=Fe(),m=Fe(),E=Fe(),k=Fe(),F=Fe(),J=Fe(),Q=Fe(),O=Fe(),[Y,ee,te,se]=re((()=>tt)),ne=(t,s)=>(!e||z(w,s)||Oe(s))&&Qe(t,((e,t)=>ae(s,t,e)),(()=>Oe(s))),ae=(e,t,s,n)=>Qe(n?s:le(s,e,t),((n,o)=>M(ie(e,t,o,n),(e=>(s[o]=e,!0)),(()=>!1))),(()=>Oe(e,t))),ie=(t,s,n,o)=>e?M($($(w,t),n),(e=>fe(o)!=e.type?Oe(t,s,n,o,e.default):o),(()=>Oe(t,s,n,o))):A(fe(o))?Oe(t,s,n,o):o,le=(e,t,s)=>(M($(L,t),(([n,o])=>{W(n,((t,s)=>{ce(e,s)||(e[s]=t)})),W(o,(n=>{ce(e,n)||Oe(t,s,n)}))})),e),Le=e=>Je(w,e,((e,t,s)=>{const n=B(),o=Z();Je(K(w,t,B),s,((e,t,s)=>{G(e,t,s),M(s.default,(e=>G(n,t,e)),(()=>_(o,t)))})),G(L,t,[n,o])}),((e,t)=>{G(w,t),G(L,t)})),ve=e=>Je(v,e,((e,t,s)=>Ie(t,s)),((e,t)=>Ce(t))),Ie=(e,t)=>Je(K(v,e,(()=>(ke(e,1),B()))),t,((t,s,n)=>Se(e,t,s,n)),((t,s)=>me(e,t,s))),Se=(e,t,s,n,o)=>Je(K(t,s,(()=>(Ae(e,s,1),B()))),n,((t,n,o)=>pe(e,s,t,n,o)),((n,r)=>Ee(e,t,s,n,r,o))),pe=(e,t,s,n,o)=>{z(s,n)||Me(e,t,n,1);const r=$(s,n);o!==r&&(De(e,t,n,r,o),G(s,n,o))},ye=(e,t,s,n,o)=>M($(t,s),(t=>pe(e,s,t,n,o)),(()=>Se(e,t,s,le({[n]:o},e,s)))),Te=e=>{const[t]=K(R,e,oe),s=t();return z($(v,e),s)?Te(e):s},be=e=>$(v,e)??Ie(e,{}),Ce=e=>Ie(e,{}),me=(e,t,s)=>{const[,n]=K(R,e,oe);n(s),Se(e,t,s,{},!0)},Ee=(e,t,s,n,o,r)=>{const a=$($(L,e)?.[0],o);if(!A(a)&&!r)return pe(e,s,n,o,a);const i=t=>{De(e,s,t,$(n,t)),Me(e,s,t,-1),G(n,t)};A(a)?i(o):q(n,i),N(n)&&(Ae(e,s,-1),N(G(t,s))&&(ke(e,-1),G(v,e)))},ke=(e,t)=>ze(n,e,t),Ae=(e,t,s)=>ze(K(o,e,B),t,s),Me=(e,t,s,n)=>ze(K(K(a,e,B),t,B),s,n),De=(e,t,s,n,o)=>K(K(K(d,e,B),t,B),s,(()=>[n,0]))[1]=o,Oe=(e,t,s,n,o)=>(S(K(K(K(u,e,B),t,B),s,(()=>[])),n),o),je=(e,t,s)=>M($($($(d,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...xe(Ve(e,t,s))])),We=e=>N(u)||N(Q[e])?0:W(e?V(u,X):u,((t,s)=>W(t,((t,n)=>W(t,((t,o)=>ee(Q[e],[s,n,o],t))))))),Pe=(e,t,s)=>{if(!N(t))return ee(e,s),1},Be=e=>{const t=N(E[e]),s=N(F[e])&&N(m[e])&&t&&N(y[e]),r=N(J[e])&&N(k[e])&&N(C[e])&&N(p[e]);if(!s||!r){const i=e?[V(n),X(o),V(a,X),V(d,X)]:[n,o,a,d];if(!s){W(i[2],((t,s)=>W(t,((t,n)=>Pe(F[e],t,[s,n])))));const s=Z();W(i[1],((n,o)=>{Pe(m[e],n,[o])&&!t&&(ee(E[e],[o,null]),_(s,o))})),t||W(i[3],((t,n)=>{if(!z(s,n)){const s=Z();W(t,(e=>W(e,(([t,n],o)=>n!==t?_(s,o):P(e,o))))),W(s,(t=>ee(E[e],[n,t])))}})),Pe(y[e],i[0])}if(!r){let t;W(i[3],((s,n)=>{let o;W(s,((s,r)=>{let a;W(s,(([s,i],l)=>{i!==s&&(ee(J[e],[n,r,l],i,s,je),t=o=a=1)})),a&&ee(k[e],[n,r],je)})),o&&ee(C[e],[n],je)})),t&&ee(p[e],void 0,je)}}},He=(e,...t)=>(Ze((()=>e(...f(t,i)))),tt),$e=()=>U(v,(e=>U(e,U))),qe=()=>H(v),Ge=e=>H($(v,i(e))),Ke=(e,t,s,n=0,o)=>{const r=[];return q($(v,i(e)),((e,s)=>S(r,[A(t)?e:$(s,i(t)),e]))),f(I(h(r,(([e],[t])=>Re(e,t)*(s?-1:1))),n,A(o)?o:n+o),(([,e])=>e))},Ue=(e,t)=>H($($(v,i(e)),i(t))),Ve=(e,t,s)=>$($($(v,i(e)),i(t)),i(s)),Xe=e=>He((()=>(e=>Qe(e,ne,Oe))(e)?ve(e):0)),Ye=()=>He((()=>ve({}))),Ze=(e,t)=>{if(-1==s)return;_e();const n=e?.();return et(t),n},_e=()=>(s++,tt),et=e=>(s>0&&(s--,0==s&&(t=!N(d),s=1,We(1),t&&Be(1),s=-1,e?.(U(d,(e=>U(e,(e=>U(e,(e=>[...e]),(([e,t])=>e===t))),ge)),ge),U(u,(e=>U(e,U))))&&(s=1,W(d,((e,t)=>W(e,((e,s)=>W(e,(([e],n)=>we(tt,t,s,n,e))))))),s=-1,t=!1),ee(O[0],void 0,t),We(0),t&&Be(0),ee(O[1],void 0,t),s=0,g([d,u,n,o,a],j))),tt),tt={getTables:$e,getTableIds:qe,getTable:e=>U($(v,i(e)),U),getRowIds:Ge,getSortedRowIds:Ke,getRow:(e,t)=>U($($(v,i(e)),i(t))),getCellIds:Ue,getCell:Ve,hasTables:()=>!N(v),hasTable:e=>z(v,i(e)),hasRow:(e,t)=>z($(v,i(e)),i(t)),hasCell:(e,t,s)=>z($($(v,i(e)),i(t)),i(s)),getJson:()=>T(v),getSchemaJson:()=>T(w),setTables:Xe,setTable:(e,t)=>He((e=>ne(t,e)?Ie(e,t):0),e),setRow:(e,t,s)=>He(((e,t)=>ae(i(e),i(t),s)?Se(i(e),be(i(e)),i(t),s):0),e,t),addRow:(e,t)=>Ze((()=>{let s;return ae(e,s,t)&&(e=i(e),Se(e,be(e),s=Te(e),t)),s})),setPartialRow:(e,t,s)=>He(((e,t)=>{if(ae(e,t,s,1)){const n=be(e);he(s,((s,o)=>ye(e,n,t,o,s)))}}),e,t),setCell:(e,t,s,n)=>He(((e,t,s)=>M(ie(e,t,s,x(n)?n(Ve(e,t,s)):n),(n=>ye(e,be(e),t,s,n)))),e,t,s),setJson:e=>{try{"{}"===e?Ye():Xe(b(e))}catch{}return tt},setSchema:t=>He((()=>{if((e=(e=>Qe(e,(e=>Qe(e,(e=>{if(!Qe(e,((e,t)=>l(["type","default"],t))))return!1;const t=e.type;return!(!D(t)&&t!=r||(fe(e.default)!=t&&ue(e,"default"),0))})))))(t))&&(Le(t),!N(v))){const e=$e();Ye(),Xe(e)}})),delTables:Ye,delTable:e=>He((e=>z(v,e)?Ce(e):0),e),delRow:(e,t)=>He(((e,t)=>M($(v,e),(s=>z(s,t)?me(e,s,t):0))),e,t),delCell:(e,t,s,n)=>He(((e,t,s)=>M($(v,e),(o=>M($(o,t),(r=>z(r,s)?Ee(e,o,t,r,s,n):0))))),e,t,s),delSchema:()=>He((()=>{Le({}),e=!1})),transaction:Ze,startTransaction:_e,finishTransaction:et,forEachTable:e=>W(v,((t,s)=>e(s,(e=>W(t,((t,s)=>e(s,(e=>q(t,e))))))))),forEachRow:(e,t)=>W($(v,i(e)),((e,s)=>t(s,(t=>q(e,t))))),forEachCell:(e,t,s)=>q($($(v,i(e)),i(t)),s),addSortedRowIdsListener:(e,t,s,n,o,r,a)=>{let i=Ke(e,t,s,n,o);return Y((()=>{const a=Ke(e,t,s,n,o);c(a,i)||(i=a,r(tt,e,t,s,n,o,i))}),E[a?1:0],[e,t])},addWillFinishTransactionListener:e=>Y(e,O[0]),addDidFinishTransactionListener:e=>Y(e,O[1]),callListener:e=>(se(e,[qe,Ge,Ue],(e=>A(e[2])?[]:xe(Ve(...e)))),tt),delListener:e=>(te(e),tt),getListenerStats:()=>({}),createStore:Ne};return he({Tables:[0,p],TableIds:[0,y],Table:[1,C],RowIds:[1,m],Row:[2,k],CellIds:[2,F],Cell:[3,J],InvalidCell:[3,Q]},(([e,t],s)=>{tt["add"+s+"Listener"]=(...s)=>Y(s[e],t[s[e+1]?1:0],e>0?I(s,0,e):void 0)})),de(tt)};export{Le as createCheckpoints,ye as createCustomPersister,Ee as createFilePersister,ve as createIndexes,Ce as createLocalPersister,pe as createMetrics,Me as createQueries,De as createRelationships,Ae as createRemotePersister,me as createSessionPersister,Ne as createStore,Re as defaultSorter};
Binary file
@@ -1 +1 @@
1
- var e,t;e=this,t=function(e){"use strict";const t="",n=(e,t)=>e.includes(t),o=(e,t)=>e.forEach(t),s=e=>e.length,r=e=>0==s(e),i=(e,...t)=>e.push(...t),l=e=>e.pop(),c=e=>e.shift(),d=e=>null==e,a=(e,t,n)=>d(e)?n?.():t(e),u=(e,t)=>e?.has(t)??!1,p=e=>d(e)||0==(e=>e.size)(e),h=(e,t)=>e?.forEach(t),f=(e,t)=>e?.delete(t),C=e=>new Map(e),g=(e,t)=>e?.get(t),k=(e,t,n)=>d(n)?(f(e,t),e):e?.set(t,n),v=(e,t,n)=>(u(e,t)||k(e,t,n()),g(e,t)),y=(e,t,n,o,r=0)=>a((n?v:g)(e,t[r],r>s(t)-2?n:C),(i=>{if(r>s(t)-2)return o?.(i)&&k(e,t[r]),i;const l=y(i,t,n,o,r+1);return p(i)&&k(e,t[r]),l})),L=e=>new Set(e),b=/^\d+$/,w=e=>{let n;const[r,l]=(()=>{const e=[];let n=0;return[()=>c(e)??t+n++,t=>{b.test(t)&&s(e)<1e3&&i(e,t)}]})(),u=C();return[(o,s,i)=>{n??=e();const l=r();var c,d;return k(u,l,[o,s,i]),c=y(s,i??[t],L),d=l,c?.add(d),l},(e,r,...l)=>o(((e,n=[t])=>{const r=[],l=(e,t)=>t==s(n)?i(r,e):null===n[t]?h(e,(e=>l(e,t+1))):o([n[t],null],(n=>l(g(e,n),t+1)));return l(e,0),r})(e,r),(e=>h(e,(e=>g(u,e)[0](n,...r??[],...l))))),e=>a(g(u,e),(([,n,o])=>(y(n,o??[t],void 0,(t=>(f(t,e),p(t)?1:0))),k(u,e),l(e),o))),(e,t,r)=>a(g(u,e),(([e,,i=[]])=>{const l=(...c)=>{const a=s(c);a==s(i)?e(n,...c,...r(c)):d(i[a])?o(t[a](...c),(e=>l(...c,e))):l(...c,i[a])};l()}))]},S=Object.freeze,T=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{let f,y,L,b=100,T=C(),j=1;const x=C(),z=C(),[E,M,m]=w((()=>Q)),B=C(),I=C(),O=[],_=[],F=(t,n)=>{j=0,e.transaction((()=>h(g(B,n),((n,o)=>h(n,((n,s)=>h(n,((n,r)=>((e,t,n,o,s)=>d(s)?e.delCell(t,n,o,!0):e.setCell(t,n,o,s))(e,o,s,r,n[t]))))))))),j=1},P=e=>{k(B,e),k(I,e),M(z,[e])},W=(e,t)=>o(((e,t)=>e.splice(0,t))(e,t??s(e)),P),$=()=>W(O,s(O)-b),q=e.addCellListener(null,null,null,((e,t,n,o,s,r)=>{if(j){a(f,(()=>{i(O,f),$(),W(_),f=void 0,L=1}));const e=v(T,t,C),c=v(e,n,C),d=v(c,o,(()=>[r,void 0]));d[1]=s,d[0]===s&&p(k(c,o))&&p(k(e,n))&&p(k(T,t))&&(f=l(O),L=1),H()}})),A=(e="")=>(d(f)&&(f=t+y++,k(B,f,T),K(f,e),T=C(),L=1),f),D=()=>{r(O)||(_.unshift(A()),F(0,f),f=l(O),L=1)},G=()=>{r(_)||(i(O,f),f=c(_),F(1,f),L=1)},H=()=>{L&&(M(x),L=0)},J=e=>{const t=A(e);return H(),t},K=(e,t)=>(N(e)&&g(I,e)!==t&&(k(I,e,t),M(z,[e])),Q),N=e=>u(B,e),Q={setSize:e=>(b=e,$(),Q),addCheckpoint:J,setCheckpoint:K,getStore:()=>e,getCheckpointIds:()=>[[...O],f,[..._]],forEachCheckpoint:e=>{return t=e,h(I,((e,n)=>t(n,e)));var t},hasCheckpoint:N,getCheckpoint:e=>g(I,e),goBackward:()=>(D(),H(),Q),goForward:()=>(G(),H(),Q),goTo:e=>{const t=n(O,e)?D:n(_,e)?G:null;for(;!d(t)&&e!=f;)t();return H(),Q},addCheckpointIdsListener:e=>E(e,x),addCheckpointListener:(e,t)=>E(t,z,[e]),delListener:e=>(m(e),Q),clear:()=>(W(O),W(_),d(f)||P(f),f=void 0,y=0,J(),Q),destroy:()=>{e.delListener(q)},getListenerStats:()=>({})};return S(Q.clear())}));e.createCheckpoints=T,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseCheckpoints={});
1
+ var e,t;e=this,t=function(e){"use strict";const t="",n=(e,t)=>e.includes(t),o=(e,t)=>e.forEach(t),r=e=>e.length,s=e=>0==r(e),i=(e,...t)=>e.push(...t),l=e=>e.pop(),c=e=>e.shift(),d=e=>null==e,a=(e,t,n)=>d(e)?n?.():t(e),u=(e,t)=>e?.has(t)??!1,p=e=>d(e)||0==(e=>e.size)(e),h=(e,t)=>e?.forEach(t),f=(e,t)=>e?.delete(t),C=e=>new Map(e),g=(e,t)=>e?.get(t),k=(e,t,n)=>d(n)?(f(e,t),e):e?.set(t,n),y=(e,t,n)=>(u(e,t)||k(e,t,n()),g(e,t)),v=(e,t,n,o,s=0)=>a((n?y:g)(e,t[s],s>r(t)-2?n:C),(i=>{if(s>r(t)-2)return o?.(i)&&k(e,t[s]),i;const l=v(i,t,n,o,s+1);return p(i)&&k(e,t[s]),l})),L=e=>new Set(Array.isArray(e)||d(e)?e:[e]),b=/^\d+$/,w=e=>{let n;const[s,l]=(()=>{const e=[];let n=0;return[()=>c(e)??t+n++,t=>{b.test(t)&&r(e)<1e3&&i(e,t)}]})(),u=C();return[(o,r,i)=>{n??=e();const l=s();var c,d;return k(u,l,[o,r,i]),c=v(r,i??[t],L),d=l,c?.add(d),l},(e,s,...l)=>o(((e,n=[t])=>{const s=[],l=(e,t)=>t==r(n)?i(s,e):null===n[t]?h(e,(e=>l(e,t+1))):o([n[t],null],(n=>l(g(e,n),t+1)));return l(e,0),s})(e,s),(e=>h(e,(e=>g(u,e)[0](n,...s??[],...l))))),e=>a(g(u,e),(([,n,o])=>(v(n,o??[t],void 0,(t=>(f(t,e),p(t)?1:0))),k(u,e),l(e),o))),(e,t,s)=>a(g(u,e),(([e,,i=[]])=>{const l=(...c)=>{const a=r(c);a==r(i)?e(n,...c,...s(c)):d(i[a])?o(t[a](...c),(e=>l(...c,e))):l(...c,i[a])};l()}))]},S=Object.freeze,T=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{let f,v,L,b=100,T=C(),j=1;const x=C(),z=C(),[E,M,m]=w((()=>Q)),A=C(),B=C(),I=[],O=[],_=(t,n)=>{j=0,e.transaction((()=>h(g(A,n),((n,o)=>h(n,((n,r)=>h(n,((n,s)=>((e,t,n,o,r)=>d(r)?e.delCell(t,n,o,!0):e.setCell(t,n,o,r))(e,o,r,s,n[t]))))))))),j=1},F=e=>{k(A,e),k(B,e),M(z,[e])},P=(e,t)=>o(((e,t)=>e.splice(0,t))(e,t??r(e)),F),W=()=>P(I,r(I)-b),$=e.addCellListener(null,null,null,((e,t,n,o,r,s)=>{if(j){a(f,(()=>{i(I,f),W(),P(O),f=void 0,L=1}));const e=y(T,t,C),c=y(e,n,C),d=y(c,o,(()=>[s,void 0]));d[1]=r,d[0]===r&&p(k(c,o))&&p(k(e,n))&&p(k(T,t))&&(f=l(I),L=1),H()}})),q=(e="")=>(d(f)&&(f=t+v++,k(A,f,T),K(f,e),T=C(),L=1),f),D=()=>{s(I)||(O.unshift(q()),_(0,f),f=l(I),L=1)},G=()=>{s(O)||(i(I,f),f=c(O),_(1,f),L=1)},H=()=>{L&&(M(x),L=0)},J=e=>{const t=q(e);return H(),t},K=(e,t)=>(N(e)&&g(B,e)!==t&&(k(B,e,t),M(z,[e])),Q),N=e=>u(A,e),Q={setSize:e=>(b=e,W(),Q),addCheckpoint:J,setCheckpoint:K,getStore:()=>e,getCheckpointIds:()=>[[...I],f,[...O]],forEachCheckpoint:e=>{return t=e,h(B,((e,n)=>t(n,e)));var t},hasCheckpoint:N,getCheckpoint:e=>g(B,e),goBackward:()=>(D(),H(),Q),goForward:()=>(G(),H(),Q),goTo:e=>{const t=n(I,e)?D:n(O,e)?G:null;for(;!d(t)&&e!=f;)t();return H(),Q},addCheckpointIdsListener:e=>E(e,x),addCheckpointListener:(e,t)=>E(t,z,[e]),delListener:e=>(m(e),Q),clear:()=>(P(I),P(O),d(f)||F(f),f=void 0,v=0,J(),Q),destroy:()=>{e.delListener($)},getListenerStats:()=>({})};return S(Q.clear())}));e.createCheckpoints=T,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseCheckpoints={});
Binary file
@@ -1,6 +1,6 @@
1
1
  /**
2
- * The indexes module of the TinyBase project provides the ability to create
3
- * and track indexes of the data in Store objects.
2
+ * The indexes module of the TinyBase project provides the ability to create and
3
+ * track indexes of the data in Store objects.
4
4
  *
5
5
  * The main entry point to this module is the createIndexes function, which
6
6
  * returns a new Indexes object. From there, you can create new Index
@@ -192,6 +192,7 @@ export type IndexesListenerStats = {
192
192
  * @see Rolling Dice demos
193
193
  * @see Country demo
194
194
  * @see Todo App demos
195
+ * @see Word Frequencies demo
195
196
  * @category Indexes
196
197
  */
197
198
  export interface Indexes {
@@ -209,11 +210,12 @@ export interface Indexes {
209
210
  * derived string value in common, as described by this method. Those values
210
211
  * are used as the key for each Slice in the overall Index object.
211
212
  *
212
- * Without the third `getSliceId` parameter, the Index will simply have a
213
+ * Without the third `getSliceIdOrIds` parameter, the Index will simply have a
213
214
  * single Slice, keyed by an empty string. But more often you will specify a
214
215
  * Cell value containing the Slice Id that the Row should belong to.
215
216
  * Alternatively, a custom function can be provided that produces your own
216
- * Slice Id from the local Row as a whole.
217
+ * Slice Id from the local Row as a whole. Since v2.1, the custom function can
218
+ * return an array of Slice Ids, each of which the Row will then belong to.
217
219
  *
218
220
  * The fourth `getSortKey` parameter specifies a Cell Id to get a value (or a
219
221
  * function that processes a whole Row to get a value) that is used to sort
@@ -241,11 +243,13 @@ export interface Indexes {
241
243
  *
242
244
  * @param indexId The Id of the Index to define.
243
245
  * @param tableId The Id of the Table the Index will be generated from.
244
- * @param getSliceId Either the Id of the Cell containing, or a function that
245
- * produces, the Id that is used to indicate which Slice in the Index the Row
246
- * Id should be in. Defaults to a function that returns `''` (meaning that if
247
- * this `getSliceId` parameter is omitted, the Index will simply contain a
248
- * single Slice containing all the Row Ids in the Table).
246
+ * @param getSliceIdOrIds Either the Id of the Cell containing, or a function
247
+ * that produces, the Id that is used to indicate which Slice in the Index the
248
+ * Row Id should be in. Defaults to a function that returns `''` (meaning that
249
+ * if this `getSliceIdOrIds` parameter is omitted, the Index will simply
250
+ * contain a single Slice containing all the Row Ids in the Table). Since
251
+ * v2.1, this can return an array of Slice Ids, each of which the Row will
252
+ * then belong to.
249
253
  * @param getSortKey Either the Id of the Cell containing, or a function that
250
254
  * produces, the value that is used to sort the Row Ids in each Slice.
251
255
  * @param sliceIdSorter A function that takes two Slice Id values and returns
@@ -294,6 +298,29 @@ export interface Indexes {
294
298
  * ```
295
299
  * @example
296
300
  * This example creates a Store, creates an Indexes object, and defines an
301
+ * Index based on each of the letters present in the pets' names.
302
+ *
303
+ * ```js
304
+ * const store = createStore().setTable('pets', {
305
+ * fido: {species: 'dog'},
306
+ * felix: {species: 'cat'},
307
+ * rex: {species: 'dog'},
308
+ * });
309
+ *
310
+ * const indexes = createIndexes(store);
311
+ * indexes.setIndexDefinition('containsLetter', 'pets', (_, rowId) =>
312
+ * rowId.split(''),
313
+ * );
314
+ *
315
+ * console.log(indexes.getSliceIds('containsLetter'));
316
+ * // -> ['f', 'i', 'd', 'o', 'e', 'l', 'x', 'r']
317
+ * console.log(indexes.getSliceRowIds('containsLetter', 'i'));
318
+ * // -> ['fido', 'felix']
319
+ * console.log(indexes.getSliceRowIds('containsLetter', 'x'));
320
+ * // -> ['felix', 'rex']
321
+ * ```
322
+ * @example
323
+ * This example creates a Store, creates an Indexes object, and defines an
297
324
  * Index based on the first letter of the pets' names. The Slice Ids (and Row
298
325
  * Ids within them) are alphabetically sorted.
299
326
  *
@@ -324,7 +351,7 @@ export interface Indexes {
324
351
  setIndexDefinition(
325
352
  indexId: Id,
326
353
  tableId: Id,
327
- getSliceId?: Id | ((getCell: GetCell, rowId: Id) => Id),
354
+ getSliceIdOrIds?: Id | ((getCell: GetCell, rowId: Id) => Id | Ids),
328
355
  getSortKey?: Id | ((getCell: GetCell, rowId: Id) => SortKey),
329
356
  sliceIdSorter?: (sliceId1: Id, sliceId2: Id) => number,
330
357
  rowIdSorter?: (sortKey1: SortKey, sortKey2: SortKey, sliceId: Id) => number,
@@ -1 +1 @@
1
- var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,n="",s=t(n),o=(e,t)=>((e,t)=>e.every(t))(e,((n,s)=>0==s||t(e[s-1],n)<=0)),r=(e,t)=>e.sort(t),d=(e,t)=>e.forEach(t),i=e=>e.length,l=(e,...t)=>e.push(...t),c=e=>null==e,a=(e,t,n)=>c(e)?n?.():t(e),f=(e,t)=>e?.has(t)??!1,u=e=>c(e)||0==(e=>e.size)(e),h=e=>[...e?.values()??[]],I=e=>e.clear(),g=(e,t)=>e?.forEach(t),p=(e,t)=>e?.delete(t),x=e=>new Map(e),y=e=>[...e?.keys()??[]],S=(e,t)=>e?.get(t),b=(e,t)=>g(e,((e,n)=>t(n,e))),v=(e,t,n)=>c(n)?(p(e,t),e):e?.set(t,n),w=(e,t,n)=>(f(e,t)||v(e,t,n()),S(e,t)),L=(e,t,n,s,o=0)=>a((n?w:S)(e,t[o],o>i(t)-2?n:x),(r=>{if(o>i(t)-2)return s?.(r)&&v(e,t[o]),r;const d=L(r,t,n,s,o+1);return u(r)&&v(e,t[o]),d})),T=e=>new Set(e),E=(e,t)=>e?.add(t),R=(e,t,n)=>{const s=e.hasRow,o=x(),r=x(),l=x(),L=x(),R=x(),j=(t,n,...s)=>{const o=w(R,t,T);return d(s,(t=>E(o,t)&&n&&e.callListener(t))),s},M=(t,...n)=>a(S(R,t),(s=>{d(0==i(n)?h(s):n,(t=>{e.delListener(t),p(s,t)})),u(s)&&v(R,t)})),k=(e,n)=>{v(o,e,n),f(r,e)||(v(r,e,t()),v(l,e,x()),v(L,e,x()))},m=e=>{v(o,e),v(r,e),v(l,e),v(L,e),M(e)};return[()=>e,()=>y(o),e=>b(r,e),e=>f(r,e),e=>S(o,e),e=>S(r,e),(e,t)=>v(r,e,t),k,(t,o,r,i,a)=>{k(t,o);const u=x(),h=x(),p=S(l,t),y=S(L,t),w=t=>{const r=n=>e.getCell(o,t,n),d=S(p,t),l=s(o,t)?n(i(r,t)):void 0;if(d!=l&&v(u,t,[d,l]),!c(a)){const e=S(y,t),n=s(o,t)?a(r,t):void 0;e!=n&&v(h,t,n)}},T=e=>{r((()=>{g(u,(([,e],t)=>v(p,t,e))),g(h,((e,t)=>v(y,t,e)))}),u,h,p,y,e),I(u),I(h)};b(p,w),e.hasTable(o)&&d(e.getRowIds(o),(e=>{f(p,e)||w(e)})),T(!0),M(t),j(t,0,e.addRowListener(o,null,((e,t,n)=>w(n))),e.addTableListener(o,(()=>T())))},m,()=>b(R,m),j,M]},j=(e,o)=>t(e)==s?t=>t(e):e??(()=>o??n),M=(e,t)=>e<t?-1:1,k=/^\d+$/,m=e=>{let t;const[s,o]=(()=>{const e=[];let t=0;return[()=>e.shift()??n+t++,t=>{k.test(t)&&i(e)<1e3&&l(e,t)}]})(),r=x();return[(o,d,i)=>{t??=e();const l=s();return v(r,l,[o,d,i]),E(L(d,i??[n],T),l),l},(e,s,...o)=>d(((e,t=[n])=>{const s=[],o=(e,n)=>n==i(t)?l(s,e):null===t[n]?g(e,(e=>o(e,n+1))):d([t[n],null],(t=>o(S(e,t),n+1)));return o(e,0),s})(e,s),(e=>g(e,(e=>S(r,e)[0](t,...s??[],...o))))),e=>a(S(r,e),(([,t,s])=>(L(t,s??[n],void 0,(t=>(p(t,e),u(t)?1:0))),v(r,e),o(e),s))),(e,n,s)=>a(S(r,e),(([e,,o=[]])=>{const r=(...l)=>{const a=i(l);a==i(o)?e(t,...l,...s(l)):c(o[a])?d(n[a](...l),(e=>r(...l,e))):r(...l,o[a])};r()}))]},z=Object.freeze,C=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{const t=x(),s=x(),[d,i,l,I,w,L,k,,C,D,O]=R(e,x,(e=>c(e)?n:e+n)),[_,B,P]=m((()=>$)),W=(t,n,s)=>{const o=w(t);g(s,((t,s)=>n(s,(n=>g(t,(t=>n(t,(n=>e.forEachCell(o,t,n)))))))))},$={setIndexDefinition:(e,n,d,i,l,h=M)=>{const I=c(l)?void 0:([e],[t])=>l(e,t);return C(e,n,((n,d,l,y,w,R)=>{let j=0;const M=T(),m=T(),z=L(e);if(g(d,(([e,t],n)=>{c(e)||(E(M,e),a(S(z,e),(t=>{p(t,n),u(t)&&(v(z,e),j=1)}))),c(t)||(E(M,t),f(z,t)||(v(z,t,T()),j=1),E(S(z,t),n),c(i)||E(m,t))})),n(),u(w)||(R?b(z,(e=>E(m,e))):b(l,(e=>a(S(y,e),(e=>E(m,e))))),g(m,(e=>{const t=(t,n)=>h(S(w,t),S(w,n),e),n=[...S(z,e)];o(n,t)||(v(z,e,T(r(n,t))),E(M,e))}))),(j||R)&&!c(I)){const t=[...z];o(t,I)||(k(e,x(r(t,I))),j=1)}j&&B(t,[e]),g(M,(t=>B(s,[e,t])))}),j(d),a(i,j)),$},delIndexDefinition:e=>(D(e),$),getStore:d,getIndexIds:i,forEachIndex:e=>l(((t,n)=>e(t,(e=>W(t,e,n))))),forEachSlice:(e,t)=>W(e,t,L(e)),hasIndex:I,hasSlice:(e,t)=>f(L(e),t),getTableId:w,getSliceIds:e=>y(L(e)),getSliceRowIds:(e,t)=>h(S(L(e),t)),addSliceIdsListener:(e,n)=>_(n,t,[e]),addSliceRowIdsListener:(e,t,n)=>_(n,s,[e,t]),delListener:e=>(P(e),$),destroy:O,getListenerStats:()=>({})};return z($)}));e.createIndexes=C,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseIndexes={});
1
+ var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,n="",s=t(n),r=e=>n+e,o=(e,t)=>e.every(t),d=(e,t)=>o(e,((n,s)=>0==s||t(e[s-1],n)<=0)),i=(e,t)=>e.sort(t),c=(e,t)=>e.forEach(t),l=e=>e.length,a=(e,...t)=>e.push(...t),f=e=>null==e,u=(e,t,n)=>f(e)?n?.():t(e),h=e=>Array.isArray(e),I=(e,t)=>e?.has(t)??!1,g=e=>f(e)||0==(e=>e.size)(e),p=e=>[...e?.values()??[]],y=e=>e.clear(),v=(e,t)=>e?.forEach(t),x=(e,t)=>e?.delete(t),S=e=>new Map(e),b=e=>[...e?.keys()??[]],w=(e,t)=>e?.get(t),L=(e,t)=>v(e,((e,n)=>t(n,e))),T=(e,t,n)=>f(n)?(x(e,t),e):e?.set(t,n),E=(e,t,n)=>(I(e,t)||T(e,t,n()),w(e,t)),R=(e,t,n,s,r=0)=>u((n?E:w)(e,t[r],r>l(t)-2?n:S),(o=>{if(r>l(t)-2)return s?.(o)&&T(e,t[r]),o;const d=R(o,t,n,s,r+1);return g(o)&&T(e,t[r]),d})),j=e=>new Set(h(e)||f(e)?e:[e]),m=(e,t)=>e?.add(t),M=(e,t,n)=>{const s=e.hasRow,r=S(),d=S(),i=S(),a=S(),R=S(),M=(t,n,...s)=>{const r=E(R,t,j);return c(s,(t=>m(r,t)&&n&&e.callListener(t))),s},k=(t,...n)=>u(w(R,t),(s=>{c(0==l(n)?p(s):n,(t=>{e.delListener(t),x(s,t)})),g(s)&&T(R,t)})),z=(e,n)=>{T(r,e,n),I(d,e)||(T(d,e,t()),T(i,e,S()),T(a,e,S()))},A=e=>{T(r,e),T(d,e),T(i,e),T(a,e),k(e)};return[()=>e,()=>b(r),e=>L(d,e),e=>I(d,e),e=>w(r,e),e=>w(d,e),(e,t)=>T(d,e,t),z,(t,r,d,u,g)=>{z(t,r);const p=S(),x=S(),b=w(i,t),E=w(a,t),R=t=>{const d=n=>e.getCell(r,t,n),i=w(b,t),c=s(r,t)?n(u(d,t)):void 0;var a,I;if(i===c||h(i)&&h(c)&&(I=c,l(a=i)===l(I)&&o(a,((e,t)=>I[t]===e)))||T(p,t,[i,c]),!f(g)){const e=w(E,t),n=s(r,t)?g(d,t):void 0;e!=n&&T(x,t,n)}},j=e=>{d((()=>{v(p,(([,e],t)=>T(b,t,e))),v(x,((e,t)=>T(E,t,e)))}),p,x,b,E,e),y(p),y(x)};L(b,R),e.hasTable(r)&&c(e.getRowIds(r),(e=>{I(b,e)||R(e)})),j(!0),k(t),M(t,0,e.addRowListener(r,null,((e,t,n)=>R(n))),e.addTableListener(r,(()=>j())))},A,()=>L(R,A),M,k]},k=(e,r)=>t(e)==s?t=>t(e):e??(()=>r??n),z=(e,t)=>e<t?-1:1,A=/^\d+$/,C=e=>{let t;const[s,r]=(()=>{const e=[];let t=0;return[()=>e.shift()??n+t++,t=>{A.test(t)&&l(e)<1e3&&a(e,t)}]})(),o=S();return[(r,d,i)=>{t??=e();const c=s();return T(o,c,[r,d,i]),m(R(d,i??[n],j),c),c},(e,s,...r)=>c(((e,t=[n])=>{const s=[],r=(e,n)=>n==l(t)?a(s,e):null===t[n]?v(e,(e=>r(e,n+1))):c([t[n],null],(t=>r(w(e,t),n+1)));return r(e,0),s})(e,s),(e=>v(e,(e=>w(o,e)[0](t,...s??[],...r))))),e=>u(w(o,e),(([,t,s])=>(R(t,s??[n],void 0,(t=>(x(t,e),g(t)?1:0))),T(o,e),r(e),s))),(e,n,s)=>u(w(o,e),(([e,,r=[]])=>{const o=(...d)=>{const i=l(d);i==l(r)?e(t,...d,...s(d)):f(r[i])?c(n[i](...d),(e=>o(...d,e))):o(...d,r[i])};o()}))]},D=Object.freeze,O=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{const t=S(),s=S(),[o,c,l,a,y,E,R,,A,O,_]=M(e,S,(e=>{return f(e)?n:h(e)?(t=r,e.map(t)):r(e);var t})),[B,P,W]=C((()=>q)),$=(t,n,s)=>{const r=y(t);v(s,((t,s)=>n(s,(n=>v(t,(t=>n(t,(n=>e.forEachCell(r,t,n)))))))))},q={setIndexDefinition:(e,n,r,o,c,l=z)=>{const a=f(c)?void 0:([e],[t])=>c(e,t);return A(e,n,((n,r,c,h,p,y)=>{let b=0;const M=j(),k=j(),z=E(e);if(v(r,(([e,t],n)=>{const s=j(e),r=j(t);v(s,(e=>x(r,e)?x(s,e):0)),v(s,(e=>{m(M,e),u(w(z,e),(t=>{x(t,n),g(t)&&(T(z,e),b=1)}))})),v(r,(e=>{m(M,e),I(z,e)||(T(z,e,j()),b=1),m(w(z,e),n),f(o)||m(k,e)}))})),n(),g(p)||(y?L(z,(e=>m(k,e))):L(c,(e=>u(w(h,e),(e=>m(k,e))))),v(k,(e=>{const t=(t,n)=>l(w(p,t),w(p,n),e),n=[...w(z,e)];d(n,t)||(T(z,e,j(i(n,t))),m(M,e))}))),(b||y)&&!f(a)){const t=[...z];d(t,a)||(R(e,S(i(t,a))),b=1)}b&&P(t,[e]),v(M,(t=>P(s,[e,t])))}),k(r),u(o,k)),q},delIndexDefinition:e=>(O(e),q),getStore:o,getIndexIds:c,forEachIndex:e=>l(((t,n)=>e(t,(e=>$(t,e,n))))),forEachSlice:(e,t)=>$(e,t,E(e)),hasIndex:a,hasSlice:(e,t)=>I(E(e),t),getTableId:y,getSliceIds:e=>b(E(e)),getSliceRowIds:(e,t)=>p(w(E(e),t)),addSliceIdsListener:(e,n)=>B(n,t,[e]),addSliceRowIdsListener:(e,t,n)=>B(n,s,[e,t]),delListener:e=>(W(e),q),destroy:_,getListenerStats:()=>({})};return D(q)}));e.createIndexes=O,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseIndexes={});
Binary file
@@ -1 +1 @@
1
- var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,n="",s=t(n),r=t(t),i=(e,t)=>e.forEach(t),o=e=>d(e,((e,t)=>e+t),0),c=e=>e.length,d=(e,t,n)=>e.reduce(t,n),a=(e,...t)=>e.push(...t),l=Math.max,u=Math.min,f=isFinite,h=e=>null==e,M=(e,t,n)=>h(e)?n?.():t(e),g=()=>{},v=e=>e.size,p=(e,t)=>e?.has(t)??!1,y=e=>h(e)||0==v(e),b=e=>[...e?.values()??[]],m=e=>e.clear(),L=(e,t)=>e?.forEach(t),w=(e,t)=>e?.delete(t),T=e=>new Map(e),x=(e,t)=>e?.get(t),j=(e,t)=>L(e,((e,n)=>t(n,e))),E=(e,t,n)=>h(n)?(w(e,t),e):e?.set(t,n),I=(e,t,n)=>(p(e,t)||E(e,t,n()),x(e,t)),R=(e,t,n,s,r=0)=>M((n?I:x)(e,t[r],r>c(t)-2?n:T),(i=>{if(r>c(t)-2)return s?.(i)&&E(e,t[r]),i;const o=R(i,t,n,s,r+1);return y(i)&&E(e,t[r]),o})),S=T([["avg",[(e,t)=>o(e)/t,(e,t,n)=>e+(t-e)/(n+1),(e,t,n)=>e+(e-t)/(n-1),(e,t,n,s)=>e+(t-n)/s]],["max",[e=>l(...e),(e,t)=>l(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:l(t,e)]],["min",[e=>u(...e),(e,t)=>u(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:u(t,e)]],["sum",[e=>o(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,n)=>e-n+t]]]),k=e=>new Set(e),z=(e,t)=>e?.add(t),D=(e,t,n)=>{const s=e.hasRow,r=T(),o=T(),d=T(),a=T(),l=T(),u=(t,n,...s)=>{const r=I(l,t,k);return i(s,(t=>z(r,t)&&n&&e.callListener(t))),s},f=(t,...n)=>M(x(l,t),(s=>{i(0==c(n)?b(s):n,(t=>{e.delListener(t),w(s,t)})),y(s)&&E(l,t)})),g=(e,n)=>{E(r,e,n),p(o,e)||(E(o,e,t()),E(d,e,T()),E(a,e,T()))},v=e=>{E(r,e),E(o,e),E(d,e),E(a,e),f(e)};return[()=>e,()=>[...r?.keys()??[]],e=>j(o,e),e=>p(o,e),e=>x(r,e),e=>x(o,e),(e,t)=>E(o,e,t),g,(t,r,o,c,l)=>{g(t,r);const M=T(),v=T(),y=x(d,t),b=x(a,t),w=t=>{const i=n=>e.getCell(r,t,n),o=x(y,t),d=s(r,t)?n(c(i,t)):void 0;if(o!=d&&E(M,t,[o,d]),!h(l)){const e=x(b,t),n=s(r,t)?l(i,t):void 0;e!=n&&E(v,t,n)}},I=e=>{o((()=>{L(M,(([,e],t)=>E(y,t,e))),L(v,((e,t)=>E(b,t,e)))}),M,v,y,b,e),m(M),m(v)};j(y,w),e.hasTable(r)&&i(e.getRowIds(r),(e=>{p(y,e)||w(e)})),I(!0),f(t),u(t,0,e.addRowListener(r,null,((e,t,n)=>w(n))),e.addTableListener(r,(()=>I())))},v,()=>j(l,v),u,f]},N=(e,r)=>t(e)==s?t=>t(e):e??(()=>r??n),O=/^\d+$/,_=e=>{let t;const[s,r]=(()=>{const e=[];let t=0;return[()=>e.shift()??n+t++,t=>{O.test(t)&&c(e)<1e3&&a(e,t)}]})(),o=T();return[(r,i,c)=>{t??=e();const d=s();return E(o,d,[r,i,c]),z(R(i,c??[n],k),d),d},(e,s,...r)=>i(((e,t=[n])=>{const s=[],r=(e,n)=>n==c(t)?a(s,e):null===t[n]?L(e,(e=>r(e,n+1))):i([t[n],null],(t=>r(x(e,t),n+1)));return r(e,0),s})(e,s),(e=>L(e,(e=>x(o,e)[0](t,...s??[],...r))))),e=>M(x(o,e),(([,t,s])=>(R(t,s??[n],void 0,(t=>(w(t,e),y(t)?1:0))),E(o,e),r(e),s))),(e,n,s)=>M(x(o,e),(([e,,r=[]])=>{const o=(...d)=>{const a=c(d);a==c(r)?e(t,...d,...s(d)):h(r[a])?i(n[a](...d),(e=>o(...d,e))):o(...d,r[a])};o()}))]},B=Object.freeze,C=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{const s=T(),[i,o,c,d,a,l,u,,M,p,m]=D(e,g,(e=>isNaN(e)||h(e)||!0===e||!1===e||e===n?void 0:1*e)),[w,j,E]=_((()=>I)),I={setMetricDefinition:(e,n,i,o,c,d,a)=>{const g=t(i)==r?[i,c,d,a]:x(S,i)??x(S,"sum");return M(e,n,((t,n,r,i,o,c)=>{const d=l(e),a=v(i);c||=h(d),t();let M=((e,t,n,s,r,i=!1)=>{if(y(n))return;const[o,c,d,a]=r;return i||=h(e),L(s,(([n,s])=>{i||(e=h(n)?c?.(e,s,t++):h(s)?d?.(e,n,t--):a?.(e,s,n,t),i||=h(e))})),i?o(b(n),v(n)):e})(d,a,i,n,g,c);f(M)||(M=void 0),M!=d&&(u(e,M),j(s,[e],M,d))}),N(o,1)),I},delMetricDefinition:e=>(p(e),I),getStore:i,getMetricIds:o,forEachMetric:c,hasMetric:d,getTableId:a,getMetric:l,addMetricListener:(e,t)=>w(t,s,[e]),delListener:e=>(E(e),I),destroy:m,getListenerStats:()=>({})};return B(I)}));e.createMetrics=C,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseMetrics={});
1
+ var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,n="",r=t(n),s=t(t),i=(e,t)=>e.forEach(t),o=e=>a(e,((e,t)=>e+t),0),c=e=>e.length,a=(e,t,n)=>e.reduce(t,n),d=(e,...t)=>e.push(...t),l=Math.max,u=Math.min,f=isFinite,h=e=>null==e,v=(e,t,n)=>h(e)?n?.():t(e),M=e=>Array.isArray(e),g=()=>{},p=e=>e.size,y=(e,t)=>e?.has(t)??!1,b=e=>h(e)||0==p(e),m=e=>[...e?.values()??[]],L=e=>e.clear(),w=(e,t)=>e?.forEach(t),T=(e,t)=>e?.delete(t),x=e=>new Map(e),j=(e,t)=>e?.get(t),E=(e,t)=>w(e,((e,n)=>t(n,e))),I=(e,t,n)=>h(n)?(T(e,t),e):e?.set(t,n),R=(e,t,n)=>(y(e,t)||I(e,t,n()),j(e,t)),S=(e,t,n,r,s=0)=>v((n?R:j)(e,t[s],s>c(t)-2?n:x),(i=>{if(s>c(t)-2)return r?.(i)&&I(e,t[s]),i;const o=S(i,t,n,r,s+1);return b(i)&&I(e,t[s]),o})),k=x([["avg",[(e,t)=>o(e)/t,(e,t,n)=>e+(t-e)/(n+1),(e,t,n)=>e+(e-t)/(n-1),(e,t,n,r)=>e+(t-n)/r]],["max",[e=>l(...e),(e,t)=>l(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:l(t,e)]],["min",[e=>u(...e),(e,t)=>u(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:u(t,e)]],["sum",[e=>o(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,n)=>e-n+t]]]),z=e=>new Set(M(e)||h(e)?e:[e]),A=(e,t)=>e?.add(t),D=(e,t,n)=>{const r=e.hasRow,s=x(),o=x(),a=x(),d=x(),l=x(),u=(t,n,...r)=>{const s=R(l,t,z);return i(r,(t=>A(s,t)&&n&&e.callListener(t))),r},f=(t,...n)=>v(j(l,t),(r=>{i(0==c(n)?m(r):n,(t=>{e.delListener(t),T(r,t)})),b(r)&&I(l,t)})),g=(e,n)=>{I(s,e,n),y(o,e)||(I(o,e,t()),I(a,e,x()),I(d,e,x()))},p=e=>{I(s,e),I(o,e),I(a,e),I(d,e),f(e)};return[()=>e,()=>[...s?.keys()??[]],e=>E(o,e),e=>y(o,e),e=>j(s,e),e=>j(o,e),(e,t)=>I(o,e,t),g,(t,s,o,l,v)=>{g(t,s);const p=x(),b=x(),m=j(a,t),T=j(d,t),R=t=>{const i=n=>e.getCell(s,t,n),o=j(m,t),a=r(s,t)?n(l(i,t)):void 0;var d,u,f;if(o===a||M(o)&&M(a)&&(u=a,c(d=o)===c(u)&&(f=(e,t)=>u[t]===e,d.every(f)))||I(p,t,[o,a]),!h(v)){const e=j(T,t),n=r(s,t)?v(i,t):void 0;e!=n&&I(b,t,n)}},S=e=>{o((()=>{w(p,(([,e],t)=>I(m,t,e))),w(b,((e,t)=>I(T,t,e)))}),p,b,m,T,e),L(p),L(b)};E(m,R),e.hasTable(s)&&i(e.getRowIds(s),(e=>{y(m,e)||R(e)})),S(!0),f(t),u(t,0,e.addRowListener(s,null,((e,t,n)=>R(n))),e.addTableListener(s,(()=>S())))},p,()=>E(l,p),u,f]},N=(e,s)=>t(e)==r?t=>t(e):e??(()=>s??n),O=/^\d+$/,_=e=>{let t;const[r,s]=(()=>{const e=[];let t=0;return[()=>e.shift()??n+t++,t=>{O.test(t)&&c(e)<1e3&&d(e,t)}]})(),o=x();return[(s,i,c)=>{t??=e();const a=r();return I(o,a,[s,i,c]),A(S(i,c??[n],z),a),a},(e,r,...s)=>i(((e,t=[n])=>{const r=[],s=(e,n)=>n==c(t)?d(r,e):null===t[n]?w(e,(e=>s(e,n+1))):i([t[n],null],(t=>s(j(e,t),n+1)));return s(e,0),r})(e,r),(e=>w(e,(e=>j(o,e)[0](t,...r??[],...s))))),e=>v(j(o,e),(([,t,r])=>(S(t,r??[n],void 0,(t=>(T(t,e),b(t)?1:0))),I(o,e),s(e),r))),(e,n,r)=>v(j(o,e),(([e,,s=[]])=>{const o=(...a)=>{const d=c(a);d==c(s)?e(t,...a,...r(a)):h(s[d])?i(n[d](...a),(e=>o(...a,e))):o(...a,s[d])};o()}))]},B=Object.freeze,C=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{const r=x(),[i,o,c,a,d,l,u,,v,M,y]=D(e,g,(e=>isNaN(e)||h(e)||!0===e||!1===e||e===n?void 0:1*e)),[L,T,E]=_((()=>I)),I={setMetricDefinition:(e,n,i,o,c,a,d)=>{const M=t(i)==s?[i,c,a,d]:j(k,i)??j(k,"sum");return v(e,n,((t,n,s,i,o,c)=>{const a=l(e),d=p(i);c||=h(a),t();let v=((e,t,n,r,s,i=!1)=>{if(b(n))return;const[o,c,a,d]=s;return i||=h(e),w(r,(([n,r])=>{i||(e=h(n)?c?.(e,r,t++):h(r)?a?.(e,n,t--):d?.(e,r,n,t),i||=h(e))})),i?o(m(n),p(n)):e})(a,d,i,n,M,c);f(v)||(v=void 0),v!=a&&(u(e,v),T(r,[e],v,a))}),N(o,1)),I},delMetricDefinition:e=>(M(e),I),getStore:i,getMetricIds:o,forEachMetric:c,hasMetric:a,getTableId:d,getMetric:l,addMetricListener:(e,t)=>L(t,r,[e]),delListener:e=>(E(e),I),destroy:y,getListenerStats:()=>({})};return B(I)}));e.createMetrics=C,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseMetrics={});
Binary file
@@ -1 +1 @@
1
- var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,n=t(""),s=t(!0),o=t(0),r=t(t),l="Listener",i="Result",a=(e,t)=>e.every(t),d=(e,t)=>e.forEach(t),c=e=>h(e,((e,t)=>e+t),0),u=e=>e.length,f=e=>0==u(e),h=(e,t,n)=>e.reduce(t,n),g=(e,...t)=>e.push(...t),w=Math.max,v=Math.min,R=isFinite,y=e=>null==e,L=(e,t,n)=>y(e)?n?.():t(e),p=e=>t(e)==r,b=()=>{},T=e=>e.size,C=(e,t)=>e?.has(t)??!1,m=e=>y(e)||0==T(e),I=e=>[...e?.values()??[]],Q=e=>e.clear(),S=(e,t)=>e?.forEach(t),x=(e,t)=>e?.delete(t),M=e=>new Map(e),j=(e,t)=>e?.get(t),E=(e,t)=>S(e,((e,n)=>t(n,e))),D=(e,t,n)=>y(n)?(x(e,t),e):e?.set(t,n),F=(e,t,n)=>(C(e,t)||D(e,t,n()),j(e,t)),k=(e,t,n,s,o=0)=>L((n?F:j)(e,t[o],o>u(t)-2?n:M),(r=>{if(o>u(t)-2)return s?.(r)&&D(e,t[o]),r;const l=k(r,t,n,s,o+1);return m(r)&&D(e,t[o]),l})),z=e=>new Set(e),O=(e,t)=>e?.add(t),W=M([["avg",[(e,t)=>c(e)/t,(e,t,n)=>e+(t-e)/(n+1),(e,t,n)=>e+(e-t)/(n-1),(e,t,n,s)=>e+(t-n)/s]],["max",[e=>w(...e),(e,t)=>w(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:w(t,e)]],["min",[e=>v(...e),(e,t)=>v(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:v(t,e)]],["sum",[e=>c(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,n)=>e-n+t]]]),_=e=>{const r=t(e);return(e=>e==n||e==s)(r)||r==o&&R(e)?r:void 0},B=Object,P=B.freeze,q=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{const t=e.createStore,[n,s,o,r,c,,,h,,w,v,R,q]=((e,t,n)=>{const s=e.hasRow,o=M(),r=M(),l=M(),i=M(),a=M(),c=(t,n,...s)=>{const o=F(a,t,z);return d(s,(t=>O(o,t)&&n&&e.callListener(t))),s},u=(t,...n)=>L(j(a,t),(s=>{d(f(n)?I(s):n,(t=>{e.delListener(t),x(s,t)})),m(s)&&D(a,t)})),h=(e,n)=>{D(o,e,n),C(r,e)||(D(r,e,t()),D(l,e,M()),D(i,e,M()))},g=e=>{D(o,e),D(r,e),D(l,e),D(i,e),u(e)};return[()=>e,()=>[...o?.keys()??[]],e=>E(r,e),e=>C(r,e),e=>j(o,e),e=>j(r,e),(e,t)=>D(r,e,t),h,(t,o,r,a,f)=>{h(t,o);const g=M(),w=M(),v=j(l,t),R=j(i,t),L=t=>{const r=n=>e.getCell(o,t,n),l=j(v,t),i=s(o,t)?n(a(r,t)):void 0;if(l!=i&&D(g,t,[l,i]),!y(f)){const e=j(R,t),n=s(o,t)?f(r,t):void 0;e!=n&&D(w,t,n)}},p=e=>{r((()=>{S(g,(([,e],t)=>D(v,t,e))),S(w,((e,t)=>D(R,t,e)))}),g,w,v,R,e),Q(g),Q(w)};E(v,L),e.hasTable(o)&&d(e.getRowIds(o),(e=>{C(v,e)||L(e)})),p(!0),u(t),c(t,0,e.addRowListener(o,null,((e,t,n)=>L(n))),e.addTableListener(o,(()=>p())))},g,()=>E(a,g),c,u]})(e,(()=>!0),b),A=t(),G=t(),H=M(),J=(e,t,...n)=>d(n,(n=>O(F(F(H,t,M),e,z),n))),K=e=>{L(j(H,e),(e=>{E(e,((e,t)=>S(t,(t=>e.delListener(t))))),Q(e)})),d([G,A],(t=>t.delTable(e)))},N=(e,t,n)=>J(t,e,t.addWillFinishTransactionListener(n.startTransaction),t.addDidFinishTransactionListener((()=>n.finishTransaction()))),U={setQueryDefinition:(t,n,s)=>{h(t,n),K(t);const o=[],r=[[null,[n,null,null,[],M()]]],l=[],i=[],c=[];s({select:(e,t)=>{const n=p(e)?[u(o)+"",e]:[y(t)?e:t,n=>n(e,t)];return g(o,n),{as:e=>n[0]=e}},join:(e,t,n)=>{const s=y(n)||p(t)?null:t,o=y(s)?t:n,l=[e,[e,s,p(o)?o:e=>e(o),[],M()]];return g(r,l),{as:e=>l[0]=e}},where:(e,t,n)=>g(l,p(e)?e:y(n)?n=>n(e)===t:s=>s(e,t)===n),group:(e,t,n,s,o)=>{const r=[e,[e,p(t)?[t,n,s,o]:j(W,t)??[(e,t)=>t]]];return g(i,r),{as:e=>r[0]=e}},having:(e,t)=>g(c,p(e)?e:n=>n(e)===t)});const w=M(o);if(m(w))return U;const v=M(r);E(v,((e,[,t])=>L(j(v,t),(({3:t})=>y(e)?0:g(t,e)))));const b=M(i);let Q=A;if(m(b)&&f(c))Q=G;else{N(t,Q,G);const e=M();E(b,((t,[n,s])=>O(F(e,n,z),[t,s])));const n=z();E(w,(t=>C(e,t)?0:O(n,t)));const s=M(),o=(n,s,o,r)=>L(n,(([l,i,d,u])=>{E(s,((t,[n])=>{const s=F(l,t,M),i=j(s,o),a=r?void 0:n;if(i!==a){const n=z([[i,a]]),r=T(s);D(s,o,a),S(j(e,t),(([e,t])=>{const o=((e,t,n,s,o,r=!1)=>{if(m(n))return;const[l,i,a,d]=o;return r||=y(e),S(s,(([n,s])=>{r||(e=y(n)?i?.(e,s,t++):y(s)?a?.(e,n,t--):d?.(e,s,n,t),r||=y(e))})),r?l(I(n),T(n)):e})(u[e],r,s,n,t);u[e]=y(_(o))?null:o}))}})),m(i)||!a(c,(e=>e((e=>u[e]))))?G.delRow(t,d):y(d)?n[2]=G.addRow(t,u):G.setRow(t,d,u)}));J(Q,t,Q.addRowListener(t,null,((r,l,i,a)=>{const d=[],c=[],u=M(),f=Q.hasRow(t,i);let h=!f;S(n,(e=>{const[n,s,o]=a(t,i,e);g(d,s),g(c,o),h||=n})),E(e,(e=>{const[n,,s]=a(t,i,e);(h||n)&&D(u,e,[s])})),h&&o(k(s,d,void 0,(([,e])=>(x(e,i),m(e)))),u,i,1),f&&o(k(s,c,(()=>{const e={};return S(n,(n=>e[n]=Q.getCell(t,i,n))),[M(),z(),void 0,e]}),(([,e])=>{O(e,i)})),u,i)})))}N(t,e,Q);const B=s=>{const o=(t,o)=>e.getCell(...y(o)?[n,s,t]:t===n?[n,s,o]:[j(v,t)?.[0],j(j(v,t)?.[4],s)?.[0],o]);Q.transaction((()=>a(l,(e=>e(o)))?E(w,((e,n)=>((e,t,n,s,o)=>y(o)?e.delCell(t,n,s,!0):e.setCell(t,n,s,o))(Q,t,s,e,n(o,s)))):Q.delRow(t,s)))},P=(n,s,o,r)=>{const l=t=>e.getCell(s,o,t);d(r,(s=>{const[o,,r,i,a]=j(v,s),d=r?.(l,n),[c,u]=j(a,n)??[];d!=c&&(y(u)||q(t,u),D(a,n,y(d)?null:[d,...R(t,1,e.addRowListener(o,d,(()=>P(n,o,d,i))))]))})),B(n)},{3:H}=j(v,null);return Q.transaction((()=>R(t,1,e.addRowListener(n,null,((s,o,r)=>{e.hasRow(n,r)?P(r,n,r,H):(Q.delRow(t,r),S(v,(({4:e})=>L(j(e,r),(([,n])=>{q(t,n),D(e,r)})))))}))))),U},delQueryDefinition:e=>(K(e),w(e),U),getStore:n,getQueryIds:s,forEachQuery:o,hasQuery:r,getTableId:c,delListener:e=>(G.delListener(e),U),destroy:v,getListenerStats:()=>{const{tables:e,tableIds:t,transaction:n,...s}=G.getListenerStats();return s}};var V,X;return V={Table:[1,1],RowIds:[0,1],SortedRowIds:[0,5],Row:[1,2],CellIds:[0,2],Cell:[1,3]},X=([e,t],n)=>{d(e?["get","has","forEach"]:["get"],(e=>U[e+i+n]=(...t)=>G[e+n](...t))),U["addResult"+n+l]=(...e)=>{return G["add"+n+l](...(s=e,o=0,r=t,s.slice(o,r)),((n,...s)=>e[t](U,...s)));var s,o,r}},d(B.entries(V),(([e,t])=>X(t,e))),P(U)}));e.createQueries=q,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseQueries={});
1
+ var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,n=t(""),s=t(!0),r=t(0),o=t(t),i="Listener",l="Result",a=(e,t)=>e.every(t),d=(e,t)=>e.forEach(t),c=e=>h(e,((e,t)=>e+t),0),u=e=>e.length,f=e=>0==u(e),h=(e,t,n)=>e.reduce(t,n),g=(e,...t)=>e.push(...t),w=Math.max,v=Math.min,R=isFinite,y=e=>null==e,L=(e,t,n)=>y(e)?n?.():t(e),p=e=>t(e)==o,b=e=>Array.isArray(e),T=()=>{},C=e=>e.size,m=(e,t)=>e?.has(t)??!1,I=e=>y(e)||0==C(e),Q=e=>[...e?.values()??[]],S=e=>e.clear(),x=(e,t)=>e?.forEach(t),M=(e,t)=>e?.delete(t),j=e=>new Map(e),E=(e,t)=>e?.get(t),D=(e,t)=>x(e,((e,n)=>t(n,e))),F=(e,t,n)=>y(n)?(M(e,t),e):e?.set(t,n),k=(e,t,n)=>(m(e,t)||F(e,t,n()),E(e,t)),z=(e,t,n,s,r=0)=>L((n?k:E)(e,t[r],r>u(t)-2?n:j),(o=>{if(r>u(t)-2)return s?.(o)&&F(e,t[r]),o;const i=z(o,t,n,s,r+1);return I(o)&&F(e,t[r]),i})),A=e=>new Set(b(e)||y(e)?e:[e]),O=(e,t)=>e?.add(t),W=j([["avg",[(e,t)=>c(e)/t,(e,t,n)=>e+(t-e)/(n+1),(e,t,n)=>e+(e-t)/(n-1),(e,t,n,s)=>e+(t-n)/s]],["max",[e=>w(...e),(e,t)=>w(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:w(t,e)]],["min",[e=>v(...e),(e,t)=>v(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:v(t,e)]],["sum",[e=>c(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,n)=>e-n+t]]]),_=e=>{const o=t(e);return(e=>e==n||e==s)(o)||o==r&&R(e)?o:void 0},B=(e,t,n)=>{const s=e.hasRow,r=j(),o=j(),i=j(),l=j(),c=j(),h=(t,n,...s)=>{const r=k(c,t,A);return d(s,(t=>O(r,t)&&n&&e.callListener(t))),s},g=(t,...n)=>L(E(c,t),(s=>{d(f(n)?Q(s):n,(t=>{e.delListener(t),M(s,t)})),I(s)&&F(c,t)})),w=(e,n)=>{F(r,e,n),m(o,e)||(F(o,e,t()),F(i,e,j()),F(l,e,j()))},v=e=>{F(r,e),F(o,e),F(i,e),F(l,e),g(e)};return[()=>e,()=>[...r?.keys()??[]],e=>D(o,e),e=>m(o,e),e=>E(r,e),e=>E(o,e),(e,t)=>F(o,e,t),w,(t,r,o,c,f)=>{w(t,r);const v=j(),R=j(),L=E(i,t),p=E(l,t),T=t=>{const o=n=>e.getCell(r,t,n),i=E(L,t),l=s(r,t)?n(c(o,t)):void 0;var d,h;if(i===l||b(i)&&b(l)&&(h=l,u(d=i)===u(h)&&a(d,((e,t)=>h[t]===e)))||F(v,t,[i,l]),!y(f)){const e=E(p,t),n=s(r,t)?f(o,t):void 0;e!=n&&F(R,t,n)}},C=e=>{o((()=>{x(v,(([,e],t)=>F(L,t,e))),x(R,((e,t)=>F(p,t,e)))}),v,R,L,p,e),S(v),S(R)};D(L,T),e.hasTable(r)&&d(e.getRowIds(r),(e=>{m(L,e)||T(e)})),C(!0),g(t),h(t,0,e.addRowListener(r,null,((e,t,n)=>T(n))),e.addTableListener(r,(()=>C())))},v,()=>D(c,v),h,g]},P=Object,q=P.freeze,G=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{const t=e.createStore,[n,s,r,o,c,,,h,,w,v,R,b]=B(e,(()=>!0),T),G=t(),H=t(),J=j(),K=(e,t,...n)=>d(n,(n=>O(k(k(J,t,j),e,A),n))),N=e=>{L(E(J,e),(e=>{D(e,((e,t)=>x(t,(t=>e.delListener(t))))),S(e)})),d([H,G],(t=>t.delTable(e)))},U=(e,t,n)=>K(t,e,t.addWillFinishTransactionListener(n.startTransaction),t.addDidFinishTransactionListener((()=>n.finishTransaction()))),V={setQueryDefinition:(t,n,s)=>{h(t,n),N(t);const r=[],o=[[null,[n,null,null,[],j()]]],i=[],l=[],c=[];s({select:(e,t)=>{const n=p(e)?[u(r)+"",e]:[y(t)?e:t,n=>n(e,t)];return g(r,n),{as:e=>n[0]=e}},join:(e,t,n)=>{const s=y(n)||p(t)?null:t,r=y(s)?t:n,i=[e,[e,s,p(r)?r:e=>e(r),[],j()]];return g(o,i),{as:e=>i[0]=e}},where:(e,t,n)=>g(i,p(e)?e:y(n)?n=>n(e)===t:s=>s(e,t)===n),group:(e,t,n,s,r)=>{const o=[e,[e,p(t)?[t,n,s,r]:E(W,t)??[(e,t)=>t]]];return g(l,o),{as:e=>o[0]=e}},having:(e,t)=>g(c,p(e)?e:n=>n(e)===t)});const w=j(r);if(I(w))return V;const v=j(o);D(v,((e,[,t])=>L(E(v,t),(({3:t})=>y(e)?0:g(t,e)))));const T=j(l);let S=G;if(I(T)&&f(c))S=H;else{U(t,S,H);const e=j();D(T,((t,[n,s])=>O(k(e,n,A),[t,s])));const n=A();D(w,(t=>m(e,t)?0:O(n,t)));const s=j(),r=(n,s,r,o)=>L(n,(([i,l,d,u])=>{D(s,((t,[n])=>{const s=k(i,t,j),l=E(s,r),a=o?void 0:n;if(l!==a){const n=A([[l,a]]),o=C(s);F(s,r,a),x(E(e,t),(([e,t])=>{const r=((e,t,n,s,r,o=!1)=>{if(I(n))return;const[i,l,a,d]=r;return o||=y(e),x(s,(([n,s])=>{o||(e=y(n)?l?.(e,s,t++):y(s)?a?.(e,n,t--):d?.(e,s,n,t),o||=y(e))})),o?i(Q(n),C(n)):e})(u[e],o,s,n,t);u[e]=y(_(r))?null:r}))}})),I(l)||!a(c,(e=>e((e=>u[e]))))?H.delRow(t,d):y(d)?n[2]=H.addRow(t,u):H.setRow(t,d,u)}));K(S,t,S.addRowListener(t,null,((o,i,l,a)=>{const d=[],c=[],u=j(),f=S.hasRow(t,l);let h=!f;x(n,(e=>{const[n,s,r]=a(t,l,e);g(d,s),g(c,r),h||=n})),D(e,(e=>{const[n,,s]=a(t,l,e);(h||n)&&F(u,e,[s])})),h&&r(z(s,d,void 0,(([,e])=>(M(e,l),I(e)))),u,l,1),f&&r(z(s,c,(()=>{const e={};return x(n,(n=>e[n]=S.getCell(t,l,n))),[j(),A(),void 0,e]}),(([,e])=>{O(e,l)})),u,l)})))}U(t,e,S);const B=s=>{const r=(t,r)=>e.getCell(...y(r)?[n,s,t]:t===n?[n,s,r]:[E(v,t)?.[0],E(E(v,t)?.[4],s)?.[0],r]);S.transaction((()=>a(i,(e=>e(r)))?D(w,((e,n)=>((e,t,n,s,r)=>y(r)?e.delCell(t,n,s,!0):e.setCell(t,n,s,r))(S,t,s,e,n(r,s)))):S.delRow(t,s)))},P=(n,s,r,o)=>{const i=t=>e.getCell(s,r,t);d(o,(s=>{const[r,,o,l,a]=E(v,s),d=o?.(i,n),[c,u]=E(a,n)??[];d!=c&&(y(u)||b(t,u),F(a,n,y(d)?null:[d,...R(t,1,e.addRowListener(r,d,(()=>P(n,r,d,l))))]))})),B(n)},{3:q}=E(v,null);return S.transaction((()=>R(t,1,e.addRowListener(n,null,((s,r,o)=>{e.hasRow(n,o)?P(o,n,o,q):(S.delRow(t,o),x(v,(({4:e})=>L(E(e,o),(([,n])=>{b(t,n),F(e,o)})))))}))))),V},delQueryDefinition:e=>(N(e),w(e),V),getStore:n,getQueryIds:s,forEachQuery:r,hasQuery:o,getTableId:c,delListener:e=>(H.delListener(e),V),destroy:v,getListenerStats:()=>{const{tables:e,tableIds:t,transaction:n,...s}=H.getListenerStats();return s}};var X,Y;return X={Table:[1,1],RowIds:[0,1],SortedRowIds:[0,5],Row:[1,2],CellIds:[0,2],Cell:[1,3]},Y=([e,t],n)=>{d(e?["get","has","forEach"]:["get"],(e=>V[e+l+n]=(...t)=>H[e+n](...t))),V["addResult"+n+i]=(...e)=>{return H["add"+n+i](...(s=e,r=0,o=t,s.slice(r,o)),((n,...s)=>e[t](V,...s)));var s,r,o}},d(P.entries(X),(([e,t])=>Y(t,e))),q(V)}));e.createQueries=G,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseQueries={});
Binary file
@@ -1 +1 @@
1
- var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,n="",o=t(n),s=(e,t)=>e.forEach(t),i=e=>e.length,r=(e,...t)=>e.push(...t),d=e=>null==e,l=(e,t,n)=>d(e)?n?.():t(e),a=(e,t)=>e?.has(t)??!1,c=e=>d(e)||0==(e=>e.size)(e),f=e=>[...e?.values()??[]],u=e=>e.clear(),h=(e,t)=>e?.forEach(t),R=(e,t)=>e?.delete(t),p=e=>new Map(e),g=(e,t)=>e?.get(t),L=(e,t)=>h(e,((e,n)=>t(n,e))),w=(e,t,n)=>d(n)?(R(e,t),e):e?.set(t,n),I=(e,t,n)=>(a(e,t)||w(e,t,n()),g(e,t)),b=(e,t,n,o,s=0)=>l((n?I:g)(e,t[s],s>i(t)-2?n:p),(r=>{if(s>i(t)-2)return o?.(r)&&w(e,t[s]),r;const d=b(r,t,n,o,s+1);return c(r)&&w(e,t[s]),d})),y=e=>new Set(e),v=(e,t)=>e?.add(t),T=(e,t,n)=>{const o=e.hasRow,r=p(),b=p(),T=p(),m=p(),k=p(),E=(t,n,...o)=>{const i=I(k,t,y);return s(o,(t=>v(i,t)&&n&&e.callListener(t))),o},j=(t,...n)=>l(g(k,t),(o=>{s(0==i(n)?f(o):n,(t=>{e.delListener(t),R(o,t)})),c(o)&&w(k,t)})),x=(e,n)=>{w(r,e,n),a(b,e)||(w(b,e,t()),w(T,e,p()),w(m,e,p()))},M=e=>{w(r,e),w(b,e),w(T,e),w(m,e),j(e)};return[()=>e,()=>[...r?.keys()??[]],e=>L(b,e),e=>a(b,e),e=>g(r,e),e=>g(b,e),(e,t)=>w(b,e,t),x,(t,i,r,l,c)=>{x(t,i);const f=p(),R=p(),I=g(T,t),b=g(m,t),y=t=>{const s=n=>e.getCell(i,t,n),r=g(I,t),a=o(i,t)?n(l(s,t)):void 0;if(r!=a&&w(f,t,[r,a]),!d(c)){const e=g(b,t),n=o(i,t)?c(s,t):void 0;e!=n&&w(R,t,n)}},v=e=>{r((()=>{h(f,(([,e],t)=>w(I,t,e))),h(R,((e,t)=>w(b,t,e)))}),f,R,I,b,e),u(f),u(R)};L(I,y),e.hasTable(i)&&s(e.getRowIds(i),(e=>{a(I,e)||y(e)})),v(!0),j(t),E(t,0,e.addRowListener(i,null,((e,t,n)=>y(n))),e.addTableListener(i,(()=>v())))},M,()=>L(k,M),E,j]},m=(e,s)=>t(e)==o?t=>t(e):e??(()=>s??n),k=/^\d+$/,E=e=>{let t;const[o,a]=(()=>{const e=[];let t=0;return[()=>e.shift()??n+t++,t=>{k.test(t)&&i(e)<1e3&&r(e,t)}]})(),f=p();return[(s,i,r)=>{t??=e();const d=o();return w(f,d,[s,i,r]),v(b(i,r??[n],y),d),d},(e,o,...d)=>s(((e,t=[n])=>{const o=[],d=(e,n)=>n==i(t)?r(o,e):null===t[n]?h(e,(e=>d(e,n+1))):s([t[n],null],(t=>d(g(e,t),n+1)));return d(e,0),o})(e,o),(e=>h(e,(e=>g(f,e)[0](t,...o??[],...d))))),e=>l(g(f,e),(([,t,o])=>(b(t,o??[n],void 0,(t=>(R(t,e),c(t)?1:0))),w(f,e),a(e),o))),(e,n,o)=>l(g(f,e),(([e,,r=[]])=>{const l=(...a)=>{const c=i(a);c==i(r)?e(t,...a,...o(a)):d(r[c])?s(n[c](...a),(e=>l(...a,e))):l(...a,r[c])};l()}))]},j=Object.freeze,x=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{const t=p(),o=p(),s=p(),i=p(),[r,u,I,b,k,x,,,M,S,z]=T(e,(()=>[p(),p(),p(),p()]),(e=>d(e)?void 0:e+n)),[D,O,_]=E((()=>W)),B=(e,t,n)=>l(x(e),(([o,,s])=>{if(!a(s,t)){const i=y();if(k(e)!=P(e))v(i,t);else{let e=t;for(;!d(e)&&!a(i,e);)v(i,e),e=g(o,e)}if(n)return i;w(s,t,i)}return g(s,t)})),C=(e,t)=>l(x(e),(([,,e])=>w(e,t))),P=e=>g(t,e),W={setRelationshipDefinition:(e,n,r,f)=>(w(t,e,r),M(e,n,((t,n)=>{const r=y(),f=y(),u=y(),[p,I]=x(e);h(n,(([t,n],o)=>{d(t)||(v(f,t),l(g(I,t),(e=>{R(e,o),c(e)&&w(I,t)}))),d(n)||(v(f,n),a(I,n)||w(I,n,y()),v(g(I,n),o)),v(r,o),w(p,o,n),L(g(i,e),(t=>{a(B(e,t),o)&&v(u,t)}))})),t(),h(r,(t=>O(o,[e,t]))),h(f,(t=>O(s,[e,t]))),h(u,(t=>{C(e,t),O(i,[e,t])}))}),m(f)),W),delRelationshipDefinition:e=>(w(t,e),S(e),W),getStore:r,getRelationshipIds:u,forEachRelationship:t=>I((n=>t(n,(t=>e.forEachRow(k(n),t))))),hasRelationship:b,getLocalTableId:k,getRemoteTableId:P,getRemoteRowId:(e,t)=>g(x(e)?.[0],t),getLocalRowIds:(e,t)=>f(g(x(e)?.[1],t)),getLinkedRowIds:(e,t)=>d(x(e))?[t]:f(B(e,t,!0)),addRemoteRowIdListener:(e,t,n)=>D(n,o,[e,t]),addLocalRowIdsListener:(e,t,n)=>D(n,s,[e,t]),addLinkedRowIdsListener:(e,t,n)=>(B(e,t),D(n,i,[e,t])),delListener:e=>(C(..._(e)),W),destroy:z,getListenerStats:()=>({})};return j(W)}));e.createRelationships=x,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseRelationships={});
1
+ var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,n="",s=t(n),o=(e,t)=>e.forEach(t),i=e=>e.length,r=(e,...t)=>e.push(...t),a=e=>null==e,d=(e,t,n)=>a(e)?n?.():t(e),l=e=>Array.isArray(e),c=(e,t)=>e?.has(t)??!1,f=e=>a(e)||0==(e=>e.size)(e),u=e=>[...e?.values()??[]],h=e=>e.clear(),R=(e,t)=>e?.forEach(t),p=(e,t)=>e?.delete(t),g=e=>new Map(e),L=(e,t)=>e?.get(t),w=(e,t)=>R(e,((e,n)=>t(n,e))),y=(e,t,n)=>a(n)?(p(e,t),e):e?.set(t,n),I=(e,t,n)=>(c(e,t)||y(e,t,n()),L(e,t)),b=(e,t,n,s,o=0)=>d((n?I:L)(e,t[o],o>i(t)-2?n:g),(r=>{if(o>i(t)-2)return s?.(r)&&y(e,t[o]),r;const a=b(r,t,n,s,o+1);return f(r)&&y(e,t[o]),a})),v=e=>new Set(l(e)||a(e)?e:[e]),T=(e,t)=>e?.add(t),m=(e,t,n)=>{const s=e.hasRow,r=g(),b=g(),m=g(),k=g(),E=g(),j=(t,n,...s)=>{const i=I(E,t,v);return o(s,(t=>T(i,t)&&n&&e.callListener(t))),s},x=(t,...n)=>d(L(E,t),(s=>{o(0==i(n)?u(s):n,(t=>{e.delListener(t),p(s,t)})),f(s)&&y(E,t)})),M=(e,n)=>{y(r,e,n),c(b,e)||(y(b,e,t()),y(m,e,g()),y(k,e,g()))},S=e=>{y(r,e),y(b,e),y(m,e),y(k,e),x(e)};return[()=>e,()=>[...r?.keys()??[]],e=>w(b,e),e=>c(b,e),e=>L(r,e),e=>L(b,e),(e,t)=>y(b,e,t),M,(t,r,d,f,u)=>{M(t,r);const p=g(),I=g(),b=L(m,t),v=L(k,t),T=t=>{const o=n=>e.getCell(r,t,n),d=L(b,t),c=s(r,t)?n(f(o,t)):void 0;var h,R,g;if(d===c||l(d)&&l(c)&&(R=c,i(h=d)===i(R)&&(g=(e,t)=>R[t]===e,h.every(g)))||y(p,t,[d,c]),!a(u)){const e=L(v,t),n=s(r,t)?u(o,t):void 0;e!=n&&y(I,t,n)}},E=e=>{d((()=>{R(p,(([,e],t)=>y(b,t,e))),R(I,((e,t)=>y(v,t,e)))}),p,I,b,v,e),h(p),h(I)};w(b,T),e.hasTable(r)&&o(e.getRowIds(r),(e=>{c(b,e)||T(e)})),E(!0),x(t),j(t,0,e.addRowListener(r,null,((e,t,n)=>T(n))),e.addTableListener(r,(()=>E())))},S,()=>w(E,S),j,x]},k=(e,o)=>t(e)==s?t=>t(e):e??(()=>o??n),E=/^\d+$/,j=e=>{let t;const[s,l]=(()=>{const e=[];let t=0;return[()=>e.shift()??n+t++,t=>{E.test(t)&&i(e)<1e3&&r(e,t)}]})(),c=g();return[(o,i,r)=>{t??=e();const a=s();return y(c,a,[o,i,r]),T(b(i,r??[n],v),a),a},(e,s,...a)=>o(((e,t=[n])=>{const s=[],a=(e,n)=>n==i(t)?r(s,e):null===t[n]?R(e,(e=>a(e,n+1))):o([t[n],null],(t=>a(L(e,t),n+1)));return a(e,0),s})(e,s),(e=>R(e,(e=>L(c,e)[0](t,...s??[],...a))))),e=>d(L(c,e),(([,t,s])=>(b(t,s??[n],void 0,(t=>(p(t,e),f(t)?1:0))),y(c,e),l(e),s))),(e,n,s)=>d(L(c,e),(([e,,r=[]])=>{const d=(...l)=>{const c=i(l);c==i(r)?e(t,...l,...s(l)):a(r[c])?o(n[c](...l),(e=>d(...l,e))):d(...l,r[c])};d()}))]},x=Object.freeze,M=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{const t=g(),s=g(),o=g(),i=g(),[r,l,h,I,b,E,,,M,S,z]=m(e,(()=>[g(),g(),g(),g()]),(e=>a(e)?void 0:e+n)),[A,D,O]=j((()=>P)),_=(e,t,n)=>d(E(e),(([s,,o])=>{if(!c(o,t)){const i=v();if(b(e)!=C(e))T(i,t);else{let e=t;for(;!a(e)&&!c(i,e);)T(i,e),e=L(s,e)}if(n)return i;y(o,t,i)}return L(o,t)})),B=(e,t)=>d(E(e),(([,,e])=>y(e,t))),C=e=>L(t,e),P={setRelationshipDefinition:(e,n,r,l)=>(y(t,e,r),M(e,n,((t,n)=>{const r=v(),l=v(),u=v(),[h,g]=E(e);R(n,(([t,n],s)=>{a(t)||(T(l,t),d(L(g,t),(e=>{p(e,s),f(e)&&y(g,t)}))),a(n)||(T(l,n),c(g,n)||y(g,n,v()),T(L(g,n),s)),T(r,s),y(h,s,n),w(L(i,e),(t=>{c(_(e,t),s)&&T(u,t)}))})),t(),R(r,(t=>D(s,[e,t]))),R(l,(t=>D(o,[e,t]))),R(u,(t=>{B(e,t),D(i,[e,t])}))}),k(l)),P),delRelationshipDefinition:e=>(y(t,e),S(e),P),getStore:r,getRelationshipIds:l,forEachRelationship:t=>h((n=>t(n,(t=>e.forEachRow(b(n),t))))),hasRelationship:I,getLocalTableId:b,getRemoteTableId:C,getRemoteRowId:(e,t)=>L(E(e)?.[0],t),getLocalRowIds:(e,t)=>u(L(E(e)?.[1],t)),getLinkedRowIds:(e,t)=>a(E(e))?[t]:u(_(e,t,!0)),addRemoteRowIdListener:(e,t,n)=>A(n,s,[e,t]),addLocalRowIdsListener:(e,t,n)=>A(n,o,[e,t]),addLinkedRowIdsListener:(e,t,n)=>(_(e,t),A(n,i,[e,t])),delListener:e=>(B(...O(e)),P),destroy:z,getListenerStats:()=>({})};return x(P)}));e.createRelationships=M,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseRelationships={});
Binary file