tinybase 2.0.0-beta.0 → 2.0.0-beta.3

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 (63) hide show
  1. package/lib/checkpoints.d.ts +4 -3
  2. package/lib/checkpoints.js +1 -1
  3. package/lib/checkpoints.js.gz +0 -0
  4. package/lib/common.js +1 -1
  5. package/lib/common.js.gz +0 -0
  6. package/lib/debug/checkpoints.d.ts +4 -3
  7. package/lib/debug/checkpoints.js +13 -16
  8. package/lib/debug/common.js +4 -1
  9. package/lib/debug/indexes.d.ts +4 -2
  10. package/lib/debug/indexes.js +13 -15
  11. package/lib/debug/metrics.d.ts +1 -1
  12. package/lib/debug/metrics.js +13 -16
  13. package/lib/debug/persisters.d.ts +6 -0
  14. package/lib/debug/queries.d.ts +249 -299
  15. package/lib/debug/queries.js +67 -192
  16. package/lib/debug/relationships.d.ts +6 -5
  17. package/lib/debug/relationships.js +13 -16
  18. package/lib/debug/store.d.ts +386 -86
  19. package/lib/debug/store.js +278 -216
  20. package/lib/debug/tinybase.js +318 -390
  21. package/lib/debug/ui-react.d.ts +4320 -1796
  22. package/lib/debug/ui-react.js +380 -98
  23. package/lib/indexes.d.ts +4 -2
  24. package/lib/indexes.js +1 -1
  25. package/lib/indexes.js.gz +0 -0
  26. package/lib/metrics.d.ts +1 -1
  27. package/lib/metrics.js +1 -1
  28. package/lib/metrics.js.gz +0 -0
  29. package/lib/persisters.d.ts +6 -0
  30. package/lib/queries.d.ts +249 -299
  31. package/lib/queries.js +1 -1
  32. package/lib/queries.js.gz +0 -0
  33. package/lib/relationships.d.ts +6 -5
  34. package/lib/relationships.js +1 -1
  35. package/lib/relationships.js.gz +0 -0
  36. package/lib/store.d.ts +386 -86
  37. package/lib/store.js +1 -1
  38. package/lib/store.js.gz +0 -0
  39. package/lib/tinybase.js +1 -1
  40. package/lib/tinybase.js.gz +0 -0
  41. package/lib/ui-react.d.ts +4320 -1796
  42. package/lib/ui-react.js +1 -1
  43. package/lib/ui-react.js.gz +0 -0
  44. package/lib/umd/checkpoints.js +1 -1
  45. package/lib/umd/checkpoints.js.gz +0 -0
  46. package/lib/umd/common.js +1 -1
  47. package/lib/umd/common.js.gz +0 -0
  48. package/lib/umd/indexes.js +1 -1
  49. package/lib/umd/indexes.js.gz +0 -0
  50. package/lib/umd/metrics.js +1 -1
  51. package/lib/umd/metrics.js.gz +0 -0
  52. package/lib/umd/queries.js +1 -1
  53. package/lib/umd/queries.js.gz +0 -0
  54. package/lib/umd/relationships.js +1 -1
  55. package/lib/umd/relationships.js.gz +0 -0
  56. package/lib/umd/store.js +1 -1
  57. package/lib/umd/store.js.gz +0 -0
  58. package/lib/umd/tinybase.js +1 -1
  59. package/lib/umd/tinybase.js.gz +0 -0
  60. package/lib/umd/ui-react.js +1 -1
  61. package/lib/umd/ui-react.js.gz +0 -0
  62. package/package.json +26 -26
  63. package/readme.md +2 -2
package/lib/indexes.d.ts CHANGED
@@ -128,11 +128,13 @@ export type SliceRowIdsListener = (
128
128
  */
129
129
  export type IndexesListenerStats = {
130
130
  /**
131
- * The number of SlideIdsListeners registered with the Indexes object.
131
+ * The number of SlideIdsListener functions registered with the Indexes
132
+ * object.
132
133
  */
133
134
  sliceIds?: number;
134
135
  /**
135
- * The number of SliceRowIdsListeners registered with the Indexes object.
136
+ * The number of SliceRowIdsListener functions registered with the Indexes
137
+ * object.
136
138
  */
137
139
  sliceRowIds?: number;
138
140
  };
package/lib/indexes.js CHANGED
@@ -1 +1 @@
1
- const e=e=>typeof e,t=e(""),n=(e,t)=>e.every(t),s=(e,t)=>n(e,((n,s)=>0==s||t(e[s-1],n)<=0)),o=(e,t)=>e.sort(t),r=(e,t)=>e.forEach(t),c=e=>e.length,d=(e,...t)=>e.push(...t),l=e=>null==e,i=(e,t,n)=>l(e)?n?.():t(e),a=(e,t)=>e?.has(t)??!1,u=e=>l(e)||0==(e=>e.size)(e),h=e=>[...e?.values()??[]],f=e=>e.clear(),I=(e,t)=>e?.forEach(t),g=(e,t)=>e?.delete(t),S=e=>new Map(e),w=e=>[...e?.keys()??[]],L=(e,t)=>e?.get(t),p=(e,t)=>I(e,((e,n)=>t(n,e))),v=(e,t,n)=>l(n)?(g(e,t),e):e?.set(t,n),x=(e,t,n)=>(a(e,t)||e.set(t,n()),L(e,t)),E=(e,t,n,s,o=0)=>i((n?x:L)(e,t[o],o>c(t)-2?n:S),(r=>{if(o>c(t)-2)return s?.(r)&&v(e,t[o]),r;const d=E(r,t,n,s,o+1);return u(r)&&v(e,t[o]),d})),R=e=>new Set(e),b=(e,t)=>e?.add(t),y=(e,t,n)=>{const s=e.hasRow,o=S(),d=S(),E=S(),y=S(),T=S(),k=(t,n,...s)=>{const o=x(T,t,R);return r(s,(t=>b(o,t)&&n&&e.callListener(t))),s},z=(t,...n)=>i(L(T,t),(s=>{r(0==c(n)?h(s):n,(t=>{e.delListener(t),g(s,t)})),u(s)&&v(T,t)})),C=(e,n)=>{v(o,e,n),a(d,e)||(v(d,e,t()),v(E,e,S()),v(y,e,S()))},D=e=>{v(o,e),v(d,e),v(E,e),v(y,e),z(e)};return[()=>e,()=>w(o),e=>p(d,e),e=>a(d,e),e=>L(o,e),e=>L(d,e),(e,t)=>v(d,e,t),C,(t,o,c,d,i)=>{C(t,o);const u=S(),h=S(),g=L(E,t),w=L(y,t),x=t=>{const r=n=>e.getCell(o,t,n),c=L(g,t),a=s(o,t)?n(d(r,t)):void 0;if(c!=a&&v(u,t,[c,a]),!l(i)){const e=L(w,t),n=s(o,t)?i(r,t):void 0;e!=n&&v(h,t,n)}},R=e=>{c((()=>{I(u,(([,e],t)=>v(g,t,e))),I(h,((e,t)=>v(w,t,e)))}),u,h,g,w,e),f(u),f(h)};p(g,x),e.hasTable(o)&&r(e.getRowIds(o),(e=>{a(g,e)||x(e)})),R(!0),z(t),k(t,0,e.addRowListener(o,null,((e,t,n)=>x(n))),e.addTableListener(o,(()=>R())))},D,()=>p(T,D),k,z]},T=(n,s)=>e(n)==t?e=>e(n):n??(()=>s??""),k=(e,t)=>e<t?-1:1,z=(e,t=[""])=>{const n=[],s=(e,o)=>o==c(t)?d(n,e):r([t[o],null],(t=>s(L(e,t),o+1)));return s(e,0),n},C=Object.freeze,D=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{const t=S(),f=S(),[x,D,M,j,O,W,m,,q,A,B]=y(e,S,(e=>l(e)?"":e+"")),[F,G,H]=(e=>{let t,s=0;const o=[],a=S();return[(n,r,c)=>{t??=e();const d=o.pop()??""+s++;return v(a,d,[n,r,c]),b(E(r,c??[""],R),d),d},(e,n,...s)=>r(z(e,n),(e=>I(e,(e=>i(L(a,e),(([e])=>e(t,...n??[],...s))))))),e=>i(L(a,e),(([,t,n])=>(E(t,n??[""],void 0,(t=>(g(t,e),u(t)?1:0))),v(a,e),c(o)<1e3&&d(o,e),n))),(e,t)=>!n(z(e,t),l),(e,n,s)=>i(L(a,e),(([e,,o=[]])=>{const d=(...i)=>{const a=c(i);a==c(o)?e(t,...i,...s(i)):l(o[a])?r(n[a](...i),(e=>d(...i,e))):d(...i,o[a])};d()}))]})((()=>K)),J=(t,n,s)=>{const o=O(t);I(s,((t,s)=>n(s,(n=>I(t,(t=>n(t,(n=>e.forEachCell(o,t,n)))))))))},K={setIndexDefinition:(e,n,r,c,d,h=k)=>{const w=l(d)?void 0:([e],[t])=>d(e,t);return q(e,n,((n,r,d,x,E,y)=>{let T=0;const k=R(),z=R(),C=W(e);if(I(r,(([e,t],n)=>{l(e)||(b(k,e),i(L(C,e),(t=>{g(t,n),u(t)&&(v(C,e),T=1)}))),l(t)||(b(k,t),a(C,t)||(v(C,t,R()),T=1),b(L(C,t),n),l(c)||b(z,t))})),n(),u(E)||(y?p(C,(e=>b(z,e))):p(d,(e=>i(L(x,e),(e=>b(z,e))))),I(z,(e=>{const t=(t,n)=>h(L(E,t),L(E,n),e),n=[...L(C,e)];s(n,t)||(v(C,e,R(o(n,t))),b(k,e))}))),(T||y)&&!l(w)){const t=[...C];s(t,w)||(m(e,S(o(t,w))),T=1)}T&&G(t,[e]),I(k,(t=>G(f,[e,t])))}),T(r),i(c,T)),K},delIndexDefinition:e=>(A(e),K),getStore:x,getIndexIds:D,forEachIndex:e=>M(((t,n)=>e(t,(e=>J(t,e,n))))),forEachSlice:(e,t)=>J(e,t,W(e)),hasIndex:j,hasSlice:(e,t)=>a(W(e),t),getTableId:O,getSliceIds:e=>w(W(e)),getSliceRowIds:(e,t)=>h(L(W(e),t)),addSliceIdsListener:(e,n)=>F(n,t,[e]),addSliceRowIdsListener:(e,t,n)=>F(n,f,[e,t]),delListener:e=>(H(e),K),destroy:B,getListenerStats:()=>({})};return C(K)}));export{D as createIndexes};
1
+ const e=e=>typeof e,t=e(""),n=(e,t)=>((e,t)=>e.every(t))(e,((n,s)=>0==s||t(e[s-1],n)<=0)),s=(e,t)=>e.sort(t),o=(e,t)=>e.forEach(t),r=e=>e.length,c=(e,...t)=>e.push(...t),l=e=>null==e,d=(e,t,n)=>l(e)?n?.():t(e),i=(e,t)=>e?.has(t)??!1,a=e=>l(e)||0==(e=>e.size)(e),u=e=>[...e?.values()??[]],h=e=>e.clear(),f=(e,t)=>e?.forEach(t),I=(e,t)=>e?.delete(t),g=e=>new Map(e),S=e=>[...e?.keys()??[]],w=(e,t)=>e?.get(t),L=(e,t)=>f(e,((e,n)=>t(n,e))),p=(e,t,n)=>l(n)?(I(e,t),e):e?.set(t,n),v=(e,t,n)=>(i(e,t)||p(e,t,n()),w(e,t)),x=(e,t,n,s,o=0)=>d((n?v:w)(e,t[o],o>r(t)-2?n:g),(c=>{if(o>r(t)-2)return s?.(c)&&p(e,t[o]),c;const l=x(c,t,n,s,o+1);return a(c)&&p(e,t[o]),l})),E=e=>new Set(e),R=(e,t)=>e?.add(t),b=(e,t,n)=>{const s=e.hasRow,c=g(),x=g(),b=g(),y=g(),T=g(),k=(t,n,...s)=>{const r=v(T,t,E);return o(s,(t=>R(r,t)&&n&&e.callListener(t))),s},z=(t,...n)=>d(w(T,t),(s=>{o(0==r(n)?u(s):n,(t=>{e.delListener(t),I(s,t)})),a(s)&&p(T,t)})),C=(e,n)=>{p(c,e,n),i(x,e)||(p(x,e,t()),p(b,e,g()),p(y,e,g()))},D=e=>{p(c,e),p(x,e),p(b,e),p(y,e),z(e)};return[()=>e,()=>S(c),e=>L(x,e),e=>i(x,e),e=>w(c,e),e=>w(x,e),(e,t)=>p(x,e,t),C,(t,r,c,d,a)=>{C(t,r);const u=g(),I=g(),S=w(b,t),v=w(y,t),x=t=>{const o=n=>e.getCell(r,t,n),c=w(S,t),i=s(r,t)?n(d(o,t)):void 0;if(c!=i&&p(u,t,[c,i]),!l(a)){const e=w(v,t),n=s(r,t)?a(o,t):void 0;e!=n&&p(I,t,n)}},E=e=>{c((()=>{f(u,(([,e],t)=>p(S,t,e))),f(I,((e,t)=>p(v,t,e)))}),u,I,S,v,e),h(u),h(I)};L(S,x),e.hasTable(r)&&o(e.getRowIds(r),(e=>{i(S,e)||x(e)})),E(!0),z(t),k(t,0,e.addRowListener(r,null,((e,t,n)=>x(n))),e.addTableListener(r,(()=>E())))},D,()=>L(T,D),k,z]},y=(n,s)=>e(n)==t?e=>e(n):n??(()=>s??""),T=(e,t)=>e<t?-1:1,k=e=>{let t,n=0;const s=[],i=g();return[(o,r,c)=>{t??=e();const l=s.pop()??""+n++;return p(i,l,[o,r,c]),R(x(r,c??[""],E),l),l},(e,n,...s)=>o(((e,t=[""])=>{const n=[],s=(e,l)=>l==r(t)?c(n,e):null===t[l]?f(e,(e=>s(e,l+1))):o([t[l],null],(t=>s(w(e,t),l+1)));return s(e,0),n})(e,n),(e=>f(e,(e=>w(i,e)[0](t,...n??[],...s))))),e=>d(w(i,e),(([,t,n])=>(x(t,n??[""],void 0,(t=>(I(t,e),a(t)?1:0))),p(i,e),r(s)<1e3&&c(s,e),n))),(e,n,s)=>d(w(i,e),(([e,,c=[]])=>{const d=(...i)=>{const a=r(i);a==r(c)?e(t,...i,...s(i)):l(c[a])?o(n[a](...i),(e=>d(...i,e))):d(...i,c[a])};d()}))]},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=g(),o=g(),[r,c,h,v,x,C,D,,M,j,O]=b(e,g,(e=>l(e)?"":e+"")),[W,m,q]=k((()=>B)),A=(t,n,s)=>{const o=x(t);f(s,((t,s)=>n(s,(n=>f(t,(t=>n(t,(n=>e.forEachCell(o,t,n)))))))))},B={setIndexDefinition:(e,r,c,u,h,S=T)=>{const v=l(h)?void 0:([e],[t])=>h(e,t);return M(e,r,((r,c,h,x,b,y)=>{let T=0;const k=E(),z=E(),M=C(e);if(f(c,(([e,t],n)=>{l(e)||(R(k,e),d(w(M,e),(t=>{I(t,n),a(t)&&(p(M,e),T=1)}))),l(t)||(R(k,t),i(M,t)||(p(M,t,E()),T=1),R(w(M,t),n),l(u)||R(z,t))})),r(),a(b)||(y?L(M,(e=>R(z,e))):L(h,(e=>d(w(x,e),(e=>R(z,e))))),f(z,(e=>{const t=(t,n)=>S(w(b,t),w(b,n),e),o=[...w(M,e)];n(o,t)||(p(M,e,E(s(o,t))),R(k,e))}))),(T||y)&&!l(v)){const t=[...M];n(t,v)||(D(e,g(s(t,v))),T=1)}T&&m(t,[e]),f(k,(t=>m(o,[e,t])))}),y(c),d(u,y)),B},delIndexDefinition:e=>(j(e),B),getStore:r,getIndexIds:c,forEachIndex:e=>h(((t,n)=>e(t,(e=>A(t,e,n))))),forEachSlice:(e,t)=>A(e,t,C(e)),hasIndex:v,hasSlice:(e,t)=>i(C(e),t),getTableId:x,getSliceIds:e=>S(C(e)),getSliceRowIds:(e,t)=>u(w(C(e),t)),addSliceIdsListener:(e,n)=>W(n,t,[e]),addSliceRowIdsListener:(e,t,n)=>W(n,o,[e,t]),delListener:e=>(q(e),B),destroy:O,getListenerStats:()=>({})};return z(B)}));export{C as createIndexes};
package/lib/indexes.js.gz CHANGED
Binary file
package/lib/metrics.d.ts CHANGED
@@ -186,7 +186,7 @@ export type MetricListener = (
186
186
  */
187
187
  export type MetricsListenerStats = {
188
188
  /**
189
- * The number of MetricListeners registered with the Metrics object.
189
+ * The number of MetricListener functions registered with the Metrics object.
190
190
  */
191
191
  metric?: number;
192
192
  };
package/lib/metrics.js CHANGED
@@ -1 +1 @@
1
- const e=e=>typeof e,t=e(""),n=e(e),r=(e,t)=>e.forEach(t),s=e=>o(e,((e,t)=>e+t),0),i=e=>e.length,o=(e,t,n)=>e.reduce(t,n),c=(e,...t)=>e.push(...t),a=Math.max,d=Math.min,l=isFinite,u=e=>null==e,v=(e,t,n)=>u(e)?n?.():t(e),h=()=>{},g=e=>e.size,M=(e,t)=>e?.has(t)??!1,f=e=>u(e)||0==g(e),p=e=>[...e?.values()??[]],L=e=>e.clear(),m=(e,t)=>e?.forEach(t),w=(e,t)=>e?.delete(t),b=e=>new Map(e),y=(e,t)=>e?.get(t),x=(e,t)=>m(e,((e,n)=>t(n,e))),E=(e,t,n)=>u(n)?(w(e,t),e):e?.set(t,n),I=(e,t,n)=>(M(e,t)||e.set(t,n()),y(e,t)),R=(e,t,n,r,s=0)=>v((n?I:y)(e,t[s],s>i(t)-2?n:b),(o=>{if(s>i(t)-2)return r?.(o)&&E(e,t[s]),o;const c=R(o,t,n,r,s+1);return f(o)&&E(e,t[s]),c})),S=b([["avg",[(e,t)=>s(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=>a(...e),(e,t)=>a(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:a(t,e)]],["min",[e=>d(...e),(e,t)=>d(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:d(t,e)]],["sum",[e=>s(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,n)=>e-n+t]]]),T=e=>new Set(e),k=(e,t)=>e?.add(t),z=(e,t,n)=>{const s=e.hasRow,o=b(),c=b(),a=b(),d=b(),l=b(),h=(t,n,...s)=>{const i=I(l,t,T);return r(s,(t=>k(i,t)&&n&&e.callListener(t))),s},g=(t,...n)=>v(y(l,t),(s=>{r(0==i(n)?p(s):n,(t=>{e.delListener(t),w(s,t)})),f(s)&&E(l,t)})),R=(e,n)=>{E(o,e,n),M(c,e)||(E(c,e,t()),E(a,e,b()),E(d,e,b()))},S=e=>{E(o,e),E(c,e),E(a,e),E(d,e),g(e)};return[()=>e,()=>[...o?.keys()??[]],e=>x(c,e),e=>M(c,e),e=>y(o,e),e=>y(c,e),(e,t)=>E(c,e,t),R,(t,i,o,c,l)=>{R(t,i);const v=b(),f=b(),p=y(a,t),w=y(d,t),I=t=>{const r=n=>e.getCell(i,t,n),o=y(p,t),a=s(i,t)?n(c(r,t)):void 0;if(o!=a&&E(v,t,[o,a]),!u(l)){const e=y(w,t),n=s(i,t)?l(r,t):void 0;e!=n&&E(f,t,n)}},S=e=>{o((()=>{m(v,(([,e],t)=>E(p,t,e))),m(f,((e,t)=>E(w,t,e)))}),v,f,p,w,e),L(v),L(f)};x(p,I),e.hasTable(i)&&r(e.getRowIds(i),(e=>{M(p,e)||I(e)})),S(!0),g(t),h(t,0,e.addRowListener(i,null,((e,t,n)=>I(n))),e.addTableListener(i,(()=>S())))},S,()=>x(l,S),h,g]},D=(n,r)=>e(n)==t?e=>e(n):n??(()=>r??""),N=(e,t=[""])=>{const n=[],s=(e,o)=>o==i(t)?c(n,e):r([t[o],null],(t=>s(y(e,t),o+1)));return s(e,0),n},j=Object.freeze,C=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((t=>{const s=b(),[o,a,d,M,L,x,I,,C,F,O]=z(t,h,(e=>isNaN(e)||u(e)||!0===e||!1===e||""===e?void 0:1*e)),[W,q,A]=(e=>{let t,n=0;const s=[],o=b();return[(r,i,c)=>{t??=e();const a=s.pop()??""+n++;return E(o,a,[r,i,c]),k(R(i,c??[""],T),a),a},(e,n,...s)=>r(N(e,n),(e=>m(e,(e=>v(y(o,e),(([e])=>e(t,...n??[],...s))))))),e=>v(y(o,e),(([,t,n])=>(R(t,n??[""],void 0,(t=>(w(t,e),f(t)?1:0))),E(o,e),i(s)<1e3&&c(s,e),n))),(e,t)=>{return n=N(e,t),r=u,!n.every(r);var n,r},(e,n,s)=>v(y(o,e),(([e,,o=[]])=>{const c=(...a)=>{const d=i(a);d==i(o)?e(t,...a,...s(a)):u(o[d])?r(n[d](...a),(e=>c(...a,e))):c(...a,o[d])};c()}))]})((()=>B)),B={setMetricDefinition:(t,r,i,o,c,a,d)=>{const v=e(i)==n?[i,c,a,d]:y(S,i)??y(S,"sum");return C(t,r,((e,n,r,i,o,c)=>{const a=x(t),d=g(i);c||=u(a),e();let h=((e,t,n,r,s,i=!1)=>{if(f(n))return;const[o,c,a,d]=s;return i||=u(e),m(r,(([n,r])=>{i||(e=u(n)?c?.(e,r,t++):u(r)?a?.(e,n,t--):d?.(e,r,n,t),i||=u(e))})),i?o(p(n),g(n)):e})(a,d,i,n,v,c);l(h)||(h=void 0),h!=a&&(I(t,h),q(s,[t],h,a))}),D(o,1)),B},delMetricDefinition:e=>(F(e),B),getStore:o,getMetricIds:a,forEachMetric:d,hasMetric:M,getTableId:L,getMetric:x,addMetricListener:(e,t)=>W(t,s,[e]),delListener:e=>(A(e),B),destroy:O,getListenerStats:()=>({})};return j(B)}));export{C as createMetrics};
1
+ const e=e=>typeof e,t=e(""),n=e(e),r=(e,t)=>e.forEach(t),s=e=>o(e,((e,t)=>e+t),0),i=e=>e.length,o=(e,t,n)=>e.reduce(t,n),c=(e,...t)=>e.push(...t),a=Math.max,d=Math.min,l=isFinite,u=e=>null==e,h=(e,t,n)=>u(e)?n?.():t(e),g=()=>{},v=e=>e.size,M=(e,t)=>e?.has(t)??!1,f=e=>u(e)||0==v(e),p=e=>[...e?.values()??[]],L=e=>e.clear(),m=(e,t)=>e?.forEach(t),w=(e,t)=>e?.delete(t),b=e=>new Map(e),x=(e,t)=>e?.get(t),y=(e,t)=>m(e,((e,n)=>t(n,e))),E=(e,t,n)=>u(n)?(w(e,t),e):e?.set(t,n),I=(e,t,n)=>(M(e,t)||E(e,t,n()),x(e,t)),R=(e,t,n,r,s=0)=>h((n?I:x)(e,t[s],s>i(t)-2?n:b),(o=>{if(s>i(t)-2)return r?.(o)&&E(e,t[s]),o;const c=R(o,t,n,r,s+1);return f(o)&&E(e,t[s]),c})),S=b([["avg",[(e,t)=>s(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=>a(...e),(e,t)=>a(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:a(t,e)]],["min",[e=>d(...e),(e,t)=>d(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:d(t,e)]],["sum",[e=>s(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,n)=>e-n+t]]]),T=e=>new Set(e),k=(e,t)=>e?.add(t),z=(e,t,n)=>{const s=e.hasRow,o=b(),c=b(),a=b(),d=b(),l=b(),g=(t,n,...s)=>{const i=I(l,t,T);return r(s,(t=>k(i,t)&&n&&e.callListener(t))),s},v=(t,...n)=>h(x(l,t),(s=>{r(0==i(n)?p(s):n,(t=>{e.delListener(t),w(s,t)})),f(s)&&E(l,t)})),R=(e,n)=>{E(o,e,n),M(c,e)||(E(c,e,t()),E(a,e,b()),E(d,e,b()))},S=e=>{E(o,e),E(c,e),E(a,e),E(d,e),v(e)};return[()=>e,()=>[...o?.keys()??[]],e=>y(c,e),e=>M(c,e),e=>x(o,e),e=>x(c,e),(e,t)=>E(c,e,t),R,(t,i,o,c,l)=>{R(t,i);const h=b(),f=b(),p=x(a,t),w=x(d,t),I=t=>{const r=n=>e.getCell(i,t,n),o=x(p,t),a=s(i,t)?n(c(r,t)):void 0;if(o!=a&&E(h,t,[o,a]),!u(l)){const e=x(w,t),n=s(i,t)?l(r,t):void 0;e!=n&&E(f,t,n)}},S=e=>{o((()=>{m(h,(([,e],t)=>E(p,t,e))),m(f,((e,t)=>E(w,t,e)))}),h,f,p,w,e),L(h),L(f)};y(p,I),e.hasTable(i)&&r(e.getRowIds(i),(e=>{M(p,e)||I(e)})),S(!0),v(t),g(t,0,e.addRowListener(i,null,((e,t,n)=>I(n))),e.addTableListener(i,(()=>S())))},S,()=>y(l,S),g,v]},D=(n,r)=>e(n)==t?e=>e(n):n??(()=>r??""),N=e=>{let t,n=0;const s=[],o=b();return[(r,i,c)=>{t??=e();const a=s.pop()??""+n++;return E(o,a,[r,i,c]),k(R(i,c??[""],T),a),a},(e,n,...s)=>r(((e,t=[""])=>{const n=[],s=(e,o)=>o==i(t)?c(n,e):null===t[o]?m(e,(e=>s(e,o+1))):r([t[o],null],(t=>s(x(e,t),o+1)));return s(e,0),n})(e,n),(e=>m(e,(e=>x(o,e)[0](t,...n??[],...s))))),e=>h(x(o,e),(([,t,n])=>(R(t,n??[""],void 0,(t=>(w(t,e),f(t)?1:0))),E(o,e),i(s)<1e3&&c(s,e),n))),(e,n,s)=>h(x(o,e),(([e,,o=[]])=>{const c=(...a)=>{const d=i(a);d==i(o)?e(t,...a,...s(a)):u(o[d])?r(n[d](...a),(e=>c(...a,e))):c(...a,o[d])};c()}))]},j=Object.freeze,C=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((t=>{const r=b(),[s,i,o,c,a,d,h,,M,L,w]=z(t,g,(e=>isNaN(e)||u(e)||!0===e||!1===e||""===e?void 0:1*e)),[y,E,I]=N((()=>R)),R={setMetricDefinition:(t,s,i,o,c,a,g)=>{const L=e(i)==n?[i,c,a,g]:x(S,i)??x(S,"sum");return M(t,s,((e,n,s,i,o,c)=>{const a=d(t),g=v(i);c||=u(a),e();let M=((e,t,n,r,s,i=!1)=>{if(f(n))return;const[o,c,a,d]=s;return i||=u(e),m(r,(([n,r])=>{i||(e=u(n)?c?.(e,r,t++):u(r)?a?.(e,n,t--):d?.(e,r,n,t),i||=u(e))})),i?o(p(n),v(n)):e})(a,g,i,n,L,c);l(M)||(M=void 0),M!=a&&(h(t,M),E(r,[t],M,a))}),D(o,1)),R},delMetricDefinition:e=>(L(e),R),getStore:s,getMetricIds:i,forEachMetric:o,hasMetric:c,getTableId:a,getMetric:d,addMetricListener:(e,t)=>y(t,r,[e]),delListener:e=>(I(e),R),destroy:w,getListenerStats:()=>({})};return j(R)}));export{C as createMetrics};
package/lib/metrics.js.gz CHANGED
Binary file
@@ -40,7 +40,13 @@ import {Callback} from './common.d';
40
40
  * @category Development
41
41
  */
42
42
  export type PersisterStats = {
43
+ /**
44
+ * The number of times data has been loaded.
45
+ */
43
46
  loads?: number;
47
+ /**
48
+ * The number of times data has been saved.
49
+ */
44
50
  saves?: number;
45
51
  };
46
52