tinybase 2.0.0-beta.2 → 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.
- package/lib/checkpoints.js +1 -1
- package/lib/checkpoints.js.gz +0 -0
- package/lib/debug/checkpoints.js +1 -4
- package/lib/debug/indexes.js +1 -3
- package/lib/debug/metrics.js +1 -4
- package/lib/debug/queries.d.ts +61 -296
- package/lib/debug/queries.js +59 -201
- package/lib/debug/relationships.js +1 -4
- package/lib/debug/store.d.ts +112 -90
- package/lib/debug/store.js +90 -149
- package/lib/debug/tinybase.js +130 -333
- package/lib/debug/ui-react.d.ts +81 -81
- package/lib/debug/ui-react.js +138 -173
- package/lib/indexes.js +1 -1
- package/lib/indexes.js.gz +0 -0
- package/lib/metrics.js +1 -1
- package/lib/metrics.js.gz +0 -0
- package/lib/queries.d.ts +61 -296
- package/lib/queries.js +1 -1
- package/lib/queries.js.gz +0 -0
- package/lib/relationships.js +1 -1
- package/lib/relationships.js.gz +0 -0
- package/lib/store.d.ts +112 -90
- package/lib/store.js +1 -1
- package/lib/store.js.gz +0 -0
- package/lib/tinybase.js +1 -1
- package/lib/tinybase.js.gz +0 -0
- package/lib/ui-react.d.ts +81 -81
- package/lib/ui-react.js +1 -1
- package/lib/ui-react.js.gz +0 -0
- package/lib/umd/checkpoints.js +1 -1
- package/lib/umd/checkpoints.js.gz +0 -0
- package/lib/umd/indexes.js +1 -1
- package/lib/umd/indexes.js.gz +0 -0
- package/lib/umd/metrics.js +1 -1
- package/lib/umd/metrics.js.gz +0 -0
- package/lib/umd/queries.js +1 -1
- package/lib/umd/queries.js.gz +0 -0
- package/lib/umd/relationships.js +1 -1
- package/lib/umd/relationships.js.gz +0 -0
- package/lib/umd/store.js +1 -1
- package/lib/umd/store.js.gz +0 -0
- package/lib/umd/tinybase.js +1 -1
- package/lib/umd/tinybase.js.gz +0 -0
- package/lib/umd/ui-react.js +1 -1
- package/lib/umd/ui-react.js.gz +0 -0
- package/package.json +9 -9
- package/readme.md +2 -2
package/lib/umd/queries.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e,t;e=this,t=function(e){"use strict";const t=(e,t)=>e.every(t),
|
|
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),w=(e,...t)=>e.push(...t),g=Math.max,R=Math.min,v=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=>g(...e),(e,t)=>g(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:g(t,e)]],["min",[e=>R(...e),(e,t)=>R(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:R(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&&v(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,,g,R,v,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()))},w=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 w=M(),g=M(),R=j(l,t),v=j(i,t),L=t=>{const r=n=>e.getCell(o,t,n),l=j(R,t),i=s(o,t)?n(a(r,t)):void 0;if(l!=i&&D(w,t,[l,i]),!y(f)){const e=j(v,t),n=s(o,t)?f(r,t):void 0;e!=n&&D(g,t,n)}},p=e=>{r((()=>{S(w,(([,e],t)=>D(R,t,e))),S(g,((e,t)=>D(v,t,e)))}),w,g,R,v,e),Q(w),Q(g)};E(R,L),e.hasTable(o)&&d(e.getRowIds(o),(e=>{C(R,e)||L(e)})),p(!0),u(t),c(t,0,e.addRowListener(o,null,((e,t,n)=>L(n))),e.addTableListener(o,(()=>p())))},w,()=>E(a,w),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=>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 w(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 w(r,l),{as:e=>l[0]=e}},where:(e,t,n)=>w(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 w(i,r),{as:e=>r[0]=e}},having:(e,t)=>w(c,p(e)?e:n=>n(e)===t)});const g=M(o);if(m(g))return U;const R=M(r);E(R,((e,[,t])=>L(j(R,t),(({3:t})=>y(e)?0:w(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(g,(t=>C(e,t)?0:O(n,t)));const s=M(),o=(n,s,o,r)=>L(n,(([n,l,i,d])=>{E(s,((t,[s])=>{const l=F(n,t,M),i=j(l,o),a=r?void 0:s;if(i!==a){const n=z([[i,a]]),s=T(l);D(l,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})(d[e],s,l,n,t);d[e]=y(_(o))?null:o}))}})),(m(l)||!a(c,(e=>e((e=>d[e]))))?G.delRow:G.setRow)(t,i,d)}));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);w(d,s),w(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,n])=>{if(x(e,i),m(e))return G.delRow(t,n),1})),u,i,1),f&&o(k(s,c,(()=>{const e={};return S(n,(n=>e[n]=Q.getCell(t,i,n))),[M(),z(),G.addRow(t,e,1),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(R,t)?.[0],j(j(R,t)?.[4],s)?.[0],o]);Q.transaction((()=>a(l,(e=>e(o)))?E(g,((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(R,s),d=r?.(l,n),[c,u]=j(a,n)??[];d!=c&&(y(u)||q(t,u),D(a,n,y(d)?null:[d,...v(t,1,e.addRowListener(o,d,(()=>P(n,o,d,i))))]))})),B(n)},{3:H}=j(R,null);return Q.transaction((()=>v(t,1,e.addRowListener(n,null,((s,o,r)=>{e.hasRow(n,r)?P(r,n,r,H):(Q.delRow(t,r),S(R,(({4:e})=>L(j(e,r),(([,n])=>{q(t,n),D(e,r)})))))}))))),U},delQueryDefinition:e=>(E(j(H,e),((e,t)=>S(t,(t=>e.delListener(t))))),K(e),g(e),U),getStore:n,getQueryIds:s,forEachQuery:o,hasQuery:r,getTableId:c,delListener:e=>(G.delListener(e),U),destroy:R,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={});
|
package/lib/umd/queries.js.gz
CHANGED
|
Binary file
|
package/lib/umd/relationships.js
CHANGED
|
@@ -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),
|
|
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),p=(e,t)=>e?.delete(t),R=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)?(p(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:R),(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=R(),b=R(),T=R(),m=R(),k=R(),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),p(o,t)})),c(o)&&w(k,t)})),x=(e,n)=>{w(r,e,n),a(b,e)||(w(b,e,t()),w(T,e,R()),w(m,e,R()))},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=R(),p=R(),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(p,t,n)}},v=e=>{r((()=>{h(f,(([,e],t)=>w(I,t,e))),h(p,((e,t)=>w(b,t,e)))}),f,p,I,b,e),u(f),u(p)};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=e=>{let t,o=0;const a=[],f=R();return[(s,i,r)=>{t??=e();const d=a.pop()??n+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=>(p(t,e),c(t)?1:0))),w(f,e),i(a)<1e3&&r(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()}))]},E=Object.freeze,j=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{const t=R(),o=R(),s=R(),i=R(),[r,u,I,b,j,x,,,M,S,z]=T(e,(()=>[R(),R(),R(),R()]),(e=>d(e)?void 0:e+n)),[D,O,_]=k((()=>W)),B=(e,t,n)=>l(x(e),(([o,,s])=>{if(!a(s,t)){const i=y();if(j(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(),[R,I]=x(e);h(n,(([t,n],o)=>{d(t)||(v(f,t),l(g(I,t),(e=>{p(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(R,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(j(n),t))))),hasRelationship:b,getLocalTableId:j,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 E(W)}));e.createRelationships=j,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
|
package/lib/umd/store.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,n="",s=t(n),r=t(!0),
|
|
1
|
+
var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,n="",s=t(n),r=t(!0),o=t(0),l=t(t),a="type",i="default",c=(e,t)=>e.forEach(t),d=(e,t)=>e.map(t),u=e=>e.length,f=(e,t,n)=>e.slice(t,n),h=(e,...t)=>e.push(...t),T=e=>JSON.stringify(e,((e,t)=>{return v(t,Map)?(n=[...t],s=(e,[t,n])=>(e[t]=n,e),r={},n.reduce(s,r)):t;var n,s,r})),p=JSON.parse,b=isFinite,v=(e,t)=>e instanceof t,g=e=>null==e,y=(e,t,n)=>g(e)?n?.():t(e),w=e=>e==s||e==r,R=(e,t)=>e?.has(t)??!1,S=e=>g(e)||0==(e=>e.size)(e),C=e=>e.clear(),I=(e,t)=>e?.forEach(t),L=(e,t)=>e?.delete(t),m=e=>new Map(e),E=e=>[...e?.keys()??[]],J=(e,t)=>e?.get(t),F=(e,t)=>I(e,((e,n)=>t(n,e))),O=(e,t,n)=>g(n)?(L(e,t),e):e?.set(t,n),j=(e,t,n)=>(R(e,t)||O(e,t,n()),J(e,t)),x=(e,t,n)=>{const s={},r=t??(e=>e);return I(e,((e,t)=>y(r(e),(e=>n?.(e)?0:s[t]=e)))),s},z=(e,t)=>{const n=m(),s=t??(e=>e);return I(e,((e,t)=>n.set(t,s(e)))),n},M=e=>z(e,z),k=(e,t,n,s,r=0)=>y((n?j:J)(e,t[r],r>u(t)-2?n:m),(o=>{if(r>u(t)-2)return s?.(o)&&O(e,t[r]),o;const l=k(o,t,n,s,r+1);return S(o)&&O(e,t[r]),l})),N=Object,P=N.keys,_=N.isFrozen,B=N.freeze,D=(e,t)=>!g(((e,t)=>y(e,(e=>e[t])))(e,t)),W=(e,t)=>delete e[t],q=(e,t)=>c(N.entries(e),(([e,n])=>t(n,e))),A=e=>{return t=P(e),0==u(t);var t},G=e=>new Set(e),H=(e,t)=>e?.add(t),K=e=>{let t,s=0;const r=[],o=m();return[(l,a,i)=>{t??=e();const c=r.pop()??n+s++;return O(o,c,[l,a,i]),H(k(a,i??[n],G),c),c},(e,s,...r)=>c(((e,t=[n])=>{const s=[],r=(e,n)=>n==u(t)?h(s,e):null===t[n]?I(e,(e=>r(e,n+1))):c([t[n],null],(t=>r(J(e,t),n+1)));return r(e,0),s})(e,s),(e=>I(e,(e=>J(o,e)[0](t,...s??[],...r))))),e=>y(J(o,e),(([,t,s])=>(k(t,s??[n],void 0,(t=>(L(t,e),S(t)?1:0))),O(o,e),u(r)<1e3&&h(r,e),s))),(e,n,s)=>y(J(o,e),(([e,,r=[]])=>{const o=(...l)=>{const a=u(l);a==u(r)?e(t,...l,...s(l)):g(r[a])?c(n[a](...l),(e=>o(...l,e))):o(...l,r[a])};o()}))]},Q=e=>[e,e],U=()=>[m(),m()],V=e=>{const n=t(e);return w(n)||n==o&&b(e)?n:void 0},X=e=>n+e,Y=(e,t,n,s=O)=>{const r=(o=E(e),l=e=>!D(t,e),o.filter(l));var o,l;return c(P(t),(s=>n(e,s,t[s]))),c(r,(t=>s(e,t))),e},Z=(e,t,n)=>g(e)||!(e=>v(e,N)&&e.constructor==N)(e)||A(e)||_(e)?(n?.(),!1):(q(e,((n,s)=>{t(n,s)||W(e,s)})),!A(e)),$=(e,t,n)=>O(e,t,J(e,t)==-n?void 0:n),ee=()=>{let e,s,r=0,b=0;const v=m(),k=m(),N=m(),P=m(),_=m(),te=m(),ne=m(),se=m(),re=U(),oe=U(),le=U(),ae=U(),ie=U(),ce=U(),de=U(),ue=U(),fe=U(),he=U(),[Te,pe,be,ve]=K((()=>et)),ge=(t,n)=>(!e||R(te,n)||Pe(n))&&Z(t,((e,t)=>ye(n,t,e)),(()=>Pe(n))),ye=(e,t,n,s)=>Z(s?n:Re(n,e,t),((s,r)=>y(we(e,t,r,s),(e=>(n[r]=e,!0)),(()=>!1))),(()=>Pe(e,t))),we=(t,n,s,r)=>e?y(J(J(te,t),s),(e=>V(r)!=e.type?Pe(t,n,s,r,e.default):r),(()=>Pe(t,n,s,r))):g(V(r))?Pe(t,n,s,r):r,Re=(e,t,n)=>(y(J(ne,t),(([s,r])=>{I(s,((t,n)=>{D(e,n)||(e[n]=t)})),I(r,(s=>{D(e,s)||Pe(t,n,s)}))})),e),Se=e=>Y(te,e,((e,t,n)=>{const s=m(),r=G();Y(j(te,t,m),n,((e,t,n)=>{O(e,t,n),y(n.default,(e=>O(s,t,e)),(()=>H(r,t)))})),O(ne,t,[s,r])}),((e,t)=>{O(te,t),O(ne,t)})),Ce=e=>Y(se,e,((e,t,n)=>Ie(t,n)),((e,t)=>Oe(t))),Ie=(e,t)=>Y(j(se,e,(()=>(ze(e,1),m()))),t,((t,n,s)=>Le(e,t,n,s)),((t,n)=>je(e,t,n))),Le=(e,t,n,s,r)=>Y(j(t,n,(()=>(Me(e,n,1),m()))),s,((t,s,r)=>me(e,n,t,s,r)),((s,o)=>xe(e,t,n,s,o,r))),me=(e,t,n,s,r)=>{R(n,s)||ke(e,t,s,1);const o=J(n,s);r!==o&&(Ne(e,t,s,o,r),O(n,s,r))},Ee=(e,t,n,s,r)=>y(J(t,n),(t=>me(e,n,t,s,r)),(()=>Le(e,t,n,Re({[s]:r},e,n)))),Je=e=>{const t=n+r++;return R(e,t)?Je(e):t},Fe=e=>J(se,e)??Ie(e,{}),Oe=e=>Ie(e,{}),je=(e,t,n)=>Le(e,t,n,{},!0),xe=(e,t,n,s,r,o)=>{const l=J(J(ne,e)?.[0],r);if(!g(l)&&!o)return me(e,n,s,r,l);const a=t=>{Ne(e,n,t,J(s,t)),ke(e,n,t,-1),O(s,t)};g(l)?a(r):F(s,a),S(s)&&(Me(e,n,-1),S(O(t,n))&&(ze(e,-1),O(se,e)))},ze=(e,t)=>$(v,e,t),Me=(e,t,n)=>$(j(k,e,m),t,n),ke=(e,t,n,s)=>$(j(j(N,e,m),t,m),n,s),Ne=(e,t,n,s,r)=>j(j(j(P,e,m),t,m),n,(()=>[s,0]))[1]=r,Pe=(e,t,n,s,r)=>(h(j(j(j(_,e,m),t,m),n,(()=>[])),s),r),_e=(e,t,n)=>y(J(J(J(P,e),t),n),(([e,t])=>[!0,e,t]),(()=>[!1,...Q(Ue(e,t,n))])),Be=e=>S(_)||S(fe[e])?0:I(e?z(_,M):_,((t,n)=>I(t,((t,s)=>I(t,((t,r)=>pe(fe[e],[n,s,r],t))))))),De=(e,t,n)=>{if(!S(t))return pe(e,n),1},We=e=>{const t=S(ie[e]),n=S(de[e])&&S(ae[e])&&t&&S(oe[e]),s=S(ue[e])&&S(ce[e])&&S(le[e])&&S(re[e]);if(!n||!s){const r=e?[z(v),M(k),z(N,M),z(P,M)]:[v,k,N,P];if(!n){I(r[2],((t,n)=>I(t,((t,s)=>De(de[e],t,[n,s])))));const n=G();I(r[1],((s,r)=>{De(ae[e],s,[r])&&!t&&(pe(ie[e],[r,null]),H(n,r))})),t||I(r[3],((t,s)=>{if(!R(n,s)){const n=G();I(t,(e=>I(e,(([t,s],r)=>s!==t?H(n,r):L(e,r))))),I(n,(t=>pe(ie[e],[s,t])))}})),De(oe[e],r[0])}if(!s){let t;I(r[3],((n,s)=>{let r;I(n,((n,o)=>{let l;I(n,(([n,a],i)=>{a!==n&&(pe(ue[e],[s,o,i],a,n,_e),t=r=l=1)})),l&&pe(ce[e],[s,o],_e)})),r&&pe(le[e],[s],_e)})),t&&pe(re[e],void 0,_e)}}},qe=(e,...t)=>(Ye((()=>e(...d(t,X)))),et),Ae=()=>x(se,(e=>x(e,x))),Ge=()=>E(se),He=e=>E(J(se,X(e))),Ke=(e,t,n,s=0,r)=>{const o=[];return F(J(se,X(e)),((e,n)=>h(o,[g(t)?e:J(n,X(t)),e]))),d(f(o.sort((([e],[t])=>(e<t?-1:1)*(n?-1:1))),s,g(r)?r:s+r),(([,e])=>e))},Qe=(e,t)=>E(J(J(se,X(e)),X(t))),Ue=(e,t,n)=>J(J(J(se,X(e)),X(t)),X(n)),Ve=e=>qe((()=>(e=>Z(e,ge,Pe))(e)?Ce(e):0)),Xe=()=>qe((()=>Ce({}))),Ye=(e,t)=>{if(-1==b)return;Ze();const n=e?.();return $e(t),n},Ze=()=>(b++,et),$e=e=>(b>0&&(b--,0==b&&(s=!S(P),b=1,Be(1),s&&We(1),b=-1,e?.(x(P,(e=>x(e,(e=>x(e,(e=>[...e]),(([e,t])=>e===t))),A)),A),x(_,(e=>x(e,x))))&&(b=1,I(P,((e,t)=>I(e,((e,n)=>I(e,(([e],s)=>((e,t,n,s,r)=>g(r)?e.delCell(t,n,s,!0):e.setCell(t,n,s,r))(et,t,n,s,e))))))),b=-1,s=!1),pe(he[0],void 0,s),Be(0),s&&We(0),pe(he[1],void 0,s),b=0,c([P,_,v,k,N],C))),et),et={getTables:Ae,getTableIds:Ge,getTable:e=>x(J(se,X(e)),x),getRowIds:He,getSortedRowIds:Ke,getRow:(e,t)=>x(J(J(se,X(e)),X(t))),getCellIds:Qe,getCell:Ue,hasTables:()=>!S(se),hasTable:e=>R(se,X(e)),hasRow:(e,t)=>R(J(se,X(e)),X(t)),hasCell:(e,t,n)=>R(J(J(se,X(e)),X(t)),X(n)),getJson:()=>T(se),getSchemaJson:()=>T(te),setTables:Ve,setTable:(e,t)=>qe((e=>ge(t,e)?Ie(e,t):0),e),setRow:(e,t,n)=>qe(((e,t)=>ye(X(e),X(t),n)?Le(X(e),Fe(X(e)),X(t),n):0),e,t),addRow:(e,t,n)=>Ye((()=>{e=X(e);const s=ye(e,void 0,t),r=s||n?Je(J(se,e)):void 0;return s&&Le(e,Fe(e),r,t),r})),setPartialRow:(e,t,n)=>qe(((e,t)=>{if(ye(e,t,n,1)){const s=Fe(e);q(n,((n,r)=>Ee(e,s,t,r,n)))}}),e,t),setCell:(e,n,s,r)=>qe(((e,n,s)=>y(we(e,n,s,t(r)==l?r(Ue(e,n,s)):r),(t=>Ee(e,Fe(e),n,s,t)))),e,n,s),setJson:e=>{try{"{}"===e?Xe():Ve(p(e))}catch{}return et},setSchema:t=>qe((()=>{if((e=(e=>Z(e,(e=>Z(e,(e=>{if(!Z(e,((e,t)=>[a,i].includes(t))))return!1;const t=e.type;return!(!w(t)&&t!=o||(V(e.default)!=t&&W(e,i),0))})))))(t))&&(Se(t),!S(se))){const e=Ae();Xe(),Ve(e)}})),delTables:Xe,delTable:e=>qe((e=>R(se,e)?Oe(e):0),e),delRow:(e,t)=>qe(((e,t)=>y(J(se,e),(n=>R(n,t)?je(e,n,t):0))),e,t),delCell:(e,t,n,s)=>qe(((e,t,n)=>y(J(se,e),(r=>y(J(r,t),(o=>R(o,n)?xe(e,r,t,o,n,s):0))))),e,t,n),delSchema:()=>qe((()=>{Se({}),e=!1})),transaction:Ye,startTransaction:Ze,finishTransaction:$e,forEachTable:e=>I(se,((t,n)=>e(n,(e=>I(t,((t,n)=>e(n,(e=>F(t,e))))))))),forEachRow:(e,t)=>I(J(se,X(e)),((e,n)=>t(n,(t=>F(e,t))))),forEachCell:(e,t,n)=>F(J(J(se,X(e)),X(t)),n),addSortedRowIdsListener:(e,t,n,s,r,o,l)=>{let a=Ke(e,t,n,s,r);return Te((()=>{const l=Ke(e,t,n,s,r);var i,c,d;c=a,u(i=l)===u(c)&&(d=(e,t)=>c[t]===e,i.every(d))||(a=l,o(et,e,t,n,s,r,a))}),ie[l?1:0],[e,t])},addWillFinishTransactionListener:e=>Te(e,he[0]),addDidFinishTransactionListener:e=>Te(e,he[1]),callListener:e=>(ve(e,[Ge,He,Qe],(e=>g(e[2])?[]:Q(Ue(...e)))),et),delListener:e=>(be(e),et),getListenerStats:()=>({}),createStore:ee};return q({Tables:[0,re],TableIds:[0,oe],Table:[1,le],RowIds:[1,ae],Row:[2,ce],CellIds:[2,de],Cell:[3,ue],InvalidCell:[3,fe]},(([e,t],n)=>{et["add"+n+"Listener"]=(...n)=>Te(n[e],t[n[e+1]?1:0],e>0?f(n,0,e):void 0)})),B(et)};e.createStore=ee,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).TinyBaseStore={});
|
package/lib/umd/store.js.gz
CHANGED
|
Binary file
|
package/lib/umd/tinybase.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e,t;e=this,t=function(e,t){"use strict";const s=e=>typeof e,n="",o=s(n),r=s(!0),a=s(0),l=s(s),i="type",d="default",c="utf8",u=(e,t)=>e.includes(t),f=(e,t)=>e.every(t),h=(e,t)=>T(e)===T(t)&&f(e,((e,s)=>t[s]===e)),R=(e,t)=>f(e,((s,n)=>0==n||t(e[n-1],s)<=0)),g=(e,t)=>e.sort(t),w=(e,t)=>e.forEach(t),L=(e,t)=>e.map(t),I=e=>p(e,((e,t)=>e+t),0),T=e=>e.length,v=e=>0==T(e),p=(e,t,s)=>e.reduce(t,s),S=(e,...t)=>e.push(...t),b=e=>e.pop(),y=e=>JSON.stringify(e,((e,t)=>M(t,Map)?p([...t],((e,[t,s])=>(e[t]=s,e)),{}):t)),C=JSON.parse,m=Math.max,E=Math.min,k=isFinite,M=(e,t)=>e instanceof t,x=e=>null==e,D=(e,t,s)=>x(e)?s?.():t(e),A=e=>e==o||e==r,F=e=>s(e)==l,P=()=>{},J=e=>e.size,Q=(j=J,e=>p(N(e),((e,t)=>e+j(t)),0));var j;const O=(e,t)=>e?.has(t)??!1,z=e=>x(e)||0==J(e),N=e=>[...e?.values()??[]],W=e=>e.clear(),B=(e,t)=>e?.forEach(t),_=(e,t)=>e?.delete(t),q=e=>new Map(e),H=e=>[...e?.keys()??[]],G=(e,t)=>e?.get(t),K=(e,t)=>B(e,((e,s)=>t(s,e))),U=(e,t,s)=>x(s)?(_(e,t),e):e?.set(t,s),V=(e,t,s)=>(O(e,t)||U(e,t,s()),G(e,t)),X=(e,t,s)=>{const n={},o=t??(e=>e);return B(e,((e,t)=>D(o(e),(e=>s?.(e)?0:n[t]=e)))),n},Y=(e,t)=>{const s=q(),n=t??(e=>e);return B(e,((e,t)=>s.set(t,n(e)))),s},Z=e=>Y(e,Y),$=(e,t,s,n,o=0)=>D((s?V:G)(e,t[o],o>T(t)-2?s:q),(r=>{if(o>T(t)-2)return n?.(r)&&U(e,t[o]),r;const a=$(r,t,s,n,o+1);return z(r)&&U(e,t[o]),a})),ee=e=>new Set(e),te=(e,t)=>e?.add(t),se=(e,t,s)=>{const n=e.hasRow,o=q(),r=q(),a=q(),l=q(),i=q(),d=(t,s,...n)=>{const o=V(i,t,ee);return w(n,(t=>te(o,t)&&s&&e.callListener(t))),n},c=(t,...s)=>D(G(i,t),(n=>{w(v(s)?N(n):s,(t=>{e.delListener(t),_(n,t)})),z(n)&&U(i,t)})),u=(e,s)=>{U(o,e,s),O(r,e)||(U(r,e,t()),U(a,e,q()),U(l,e,q()))},f=e=>{U(o,e),U(r,e),U(a,e),U(l,e),c(e)};return[()=>e,()=>H(o),e=>K(r,e),e=>O(r,e),e=>G(o,e),e=>G(r,e),(e,t)=>U(r,e,t),u,(t,o,r,i,f)=>{u(t,o);const h=q(),R=q(),g=G(a,t),L=G(l,t),I=t=>{const r=s=>e.getCell(o,t,s),a=G(g,t),l=n(o,t)?s(i(r,t)):void 0;if(a!=l&&U(h,t,[a,l]),!x(f)){const e=G(L,t),s=n(o,t)?f(r,t):void 0;e!=s&&U(R,t,s)}},T=e=>{r((()=>{B(h,(([,e],t)=>U(g,t,e))),B(R,((e,t)=>U(L,t,e)))}),h,R,g,L,e),W(h),W(R)};K(g,I),e.hasTable(o)&&w(e.getRowIds(o),(e=>{O(g,e)||I(e)})),T(!0),c(t),d(t,0,e.addRowListener(o,null,((e,t,s)=>I(s))),e.addTableListener(o,(()=>T())))},f,()=>K(i,f),d,c]},ne=(e,t)=>s(e)==o?t=>t(e):e??(()=>t??n),oe=e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))},re=(e,t=[n])=>{const s=[],o=(e,n)=>n==T(t)?S(s,e):null===t[n]?B(e,(e=>o(e,n+1))):w([t[n],null],(t=>o(G(e,t),n+1)));return o(e,0),s},ae=e=>{let t,s=0;const o=[],r=q();return[(a,l,i)=>{t??=e();const d=b(o)??n+s++;return U(r,d,[a,l,i]),te($(l,i??[n],ee),d),d},(e,s,...n)=>w(re(e,s),(e=>B(e,(e=>G(r,e)[0](t,...s??[],...n))))),e=>D(G(r,e),(([,t,s])=>($(t,s??[n],void 0,(t=>(_(t,e),z(t)?1:0))),U(r,e),T(o)<1e3&&S(o,e),s))),(e,t)=>!f(re(e,t),x),(e,s,n)=>D(G(r,e),(([e,,o=[]])=>{const r=(...a)=>{const l=T(a);l==T(o)?e(t,...a,...n(a)):x(o[l])?w(s[l](...a),(e=>r(...a,e))):r(...a,o[l])};r()}))]},le=Object,ie=le.keys,de=le.isFrozen,ce=le.freeze,ue=(e,t)=>!x(((e,t)=>D(e,(e=>e[t])))(e,t)),fe=(e,t)=>delete e[t],he=(e,t)=>w(le.entries(e),(([e,s])=>t(s,e))),Re=e=>v(ie(e)),ge=e=>{const t=s(e);return A(t)||t==a&&k(e)?t:void 0},we=(e,t,s,n,o)=>x(o)?e.delCell(t,s,n,!0):e.setCell(t,s,n,o),Le=oe((e=>{let t,s,o,r=100,a=q(),l=1;const i=q(),d=q(),[c,f,h]=ae((()=>j)),R=q(),g=q(),L=[],I=[],p=(t,s)=>{l=0,e.transaction((()=>B(G(R,s),((s,n)=>B(s,((s,o)=>B(s,((s,r)=>we(e,n,o,r,s[t]))))))))),l=1},y=e=>{U(R,e),U(g,e),f(d,[e])},C=(e,t)=>w(((e,t)=>e.splice(0,t))(e,t??T(e)),y),m=()=>C(L,T(L)-r),E=e.addCellListener(null,null,null,((e,s,n,r,i,d)=>{if(l){D(t,(()=>{S(L,t),m(),C(I),t=void 0,o=1}));const e=V(a,s,q),l=V(e,n,q),c=V(l,r,(()=>[d,void 0]));c[1]=i,c[0]===i&&z(U(l,r))&&z(U(e,n))&&z(U(a,s))&&(t=b(L),o=1),F()}})),k=(e="")=>(x(t)&&(t=n+s++,U(R,t,a),J(t,e),a=q(),o=1),t),M=()=>{v(L)||(I.unshift(k()),p(0,t),t=b(L),o=1)},A=()=>{v(I)||(S(L,t),t=I.shift(),p(1,t),o=1)},F=()=>{o&&(f(i),o=0)},P=e=>{const t=k(e);return F(),t},J=(e,t)=>(Q(e)&&G(g,e)!==t&&(U(g,e,t),f(d,[e])),j),Q=e=>O(R,e),j={setSize:e=>(r=e,m(),j),addCheckpoint:P,setCheckpoint:J,getStore:()=>e,getCheckpointIds:()=>[[...L],t,[...I]],forEachCheckpoint:e=>K(g,e),hasCheckpoint:Q,getCheckpoint:e=>G(g,e),goBackward:()=>(M(),F(),j),goForward:()=>(A(),F(),j),goTo:e=>{const s=u(L,e)?M:u(I,e)?A:null;for(;!x(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(L),C(I),x(t)||y(t),t=void 0,s=0,P(),j),destroy:()=>{e.delListener(E)},getListenerStats:()=>({})};return ce(j.clear())})),Ie=(e,t)=>e<t?-1:1,Te=e=>n+e,ve=oe((e=>{const t=q(),s=q(),[o,r,a,l,i,d,c,,u,f,h]=se(e,q,(e=>x(e)?n:e+n)),[w,L,I]=ae((()=>v)),T=(t,s,n)=>{const o=i(t);B(n,((t,n)=>s(n,(s=>B(t,(t=>s(t,(s=>e.forEachCell(o,t,s)))))))))},v={setIndexDefinition:(e,n,o,r,a,l=Ie)=>{const i=x(a)?void 0:([e],[t])=>a(e,t);return u(e,n,((n,o,a,u,f,h)=>{let w=0;const I=ee(),T=ee(),v=d(e);if(B(o,(([e,t],s)=>{x(e)||(te(I,e),D(G(v,e),(t=>{_(t,s),z(t)&&(U(v,e),w=1)}))),x(t)||(te(I,t),O(v,t)||(U(v,t,ee()),w=1),te(G(v,t),s),x(r)||te(T,t))})),n(),z(f)||(h?K(v,(e=>te(T,e))):K(a,(e=>D(G(u,e),(e=>te(T,e))))),B(T,(e=>{const t=(t,s)=>l(G(f,t),G(f,s),e),s=[...G(v,e)];R(s,t)||(U(v,e,ee(g(s,t))),te(I,e))}))),(w||h)&&!x(i)){const t=[...v];R(t,i)||(c(e,q(g(t,i))),w=1)}w&&L(t,[e]),B(I,(t=>L(s,[e,t])))}),ne(o),D(r,ne)),v},delIndexDefinition:e=>(f(e),v),getStore:o,getIndexIds:r,forEachIndex:e=>a(((t,s)=>e(t,(e=>T(t,e,s))))),forEachSlice:(e,t)=>T(e,t,d(e)),hasIndex:l,hasSlice:(e,t)=>O(d(e),t),getTableId:i,getSliceIds:e=>H(d(e)),getSliceRowIds:(e,t)=>N(G(d(e),t)),addSliceIdsListener:(e,s)=>w(s,t,[e]),addSliceRowIdsListener:(e,t,n)=>w(n,s,[e,t]),delListener:e=>(I(e),v),destroy:h,getListenerStats:()=>({})};return ce(v)})),pe=q([["avg",[(e,t)=>I(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=>m(...e),(e,t)=>m(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:m(t,e)]],["min",[e=>E(...e),(e,t)=>E(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:E(t,e)]],["sum",[e=>I(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),Se=(e,t,s,n,o,r=!1)=>{if(z(s))return;const[a,l,i,d]=o;return r||=x(e),B(n,(([s,n])=>{r||(e=x(s)?l?.(e,n,t++):x(n)?i?.(e,s,t--):d?.(e,n,s,t),r||=x(e))})),r?a(N(s),J(s)):e},be=oe((e=>{const t=q(),[s,o,r,a,l,i,d,,c,u,f]=se(e,P,(e=>isNaN(e)||x(e)||!0===e||!1===e||e===n?void 0:1*e)),[h,R,g]=ae((()=>w)),w={setMetricDefinition:(e,s,n,o,r,a,l)=>{const u=F(n)?[n,r,a,l]:G(pe,n)??G(pe,"sum");return c(e,s,((s,n,o,r,a,l)=>{const c=i(e),f=J(r);l||=x(c),s();let h=Se(c,f,r,n,u,l);k(h)||(h=void 0),h!=c&&(d(e,h),R(t,[e],h,c))}),ne(o,1)),w},delMetricDefinition:e=>(u(e),w),getStore:s,getMetricIds:o,forEachMetric:r,hasMetric:a,getTableId:l,getMetric:i,addMetricListener:(e,s)=>h(s,t,[e]),delListener:e=>(g(e),w),destroy:f,getListenerStats:()=>({})};return ce(w)})),ye=(e,t,s,o,r)=>{let a,l=0;const i={load:async s=>{if(2!=l){l=1;const o=await t();x(o)||o==n?e.setTables(s):e.setJson(o),l=0}return i},startAutoLoad:async e=>(i.stopAutoLoad(),await i.load(e),o(i.load),i),stopAutoLoad:()=>(r(),i),save:async()=>(1!=l&&(l=2,await s(e.getJson()),l=0),i),startAutoSave:async()=>(await i.stopAutoSave().save(),a=e.addTablesListener((()=>i.save())),i),stopAutoSave:()=>(D(a,e.delListener),i),getStore:()=>e,destroy:()=>i.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return ce(i)},Ce="storage",me=globalThis.window,Ee=(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()},me.addEventListener(Ce,n)}),(()=>{me.removeEventListener(Ce,n),n=void 0}))},ke=e=>e.headers.get("ETag"),Me=oe((e=>{const t=e.createStore,[s,o,r,a,l,,,i,,d,c,u,R]=se(e,(()=>!0),P),I=t(),p=t(),b=t(),y=q(),C=(e,t,...s)=>w(s,(s=>te(V(V(y,t,q),e,ee),s))),m=e=>w([b,p,I],(t=>t.delTable(e))),E=(e,t,s)=>C(t,e,t.addWillFinishTransactionListener(s.startTransaction),t.addDidFinishTransactionListener((()=>s.finishTransaction()))),k={setQueryDefinition:(t,s,o)=>{let r;i(t,s),m(t);const a=[],l=[[null,[s,null,null,[],q()]]],d=[],c=[],y=[],M=[];o({select:(e,t)=>{const s=F(e)?[T(a)+n,e]:[x(t)?e:t,s=>s(e,t)];return S(a,s),{as:e=>s[0]=e}},join:(e,t,s)=>{const n=x(s)||F(t)?null:t,o=x(n)?t:s,r=[e,[e,n,F(o)?o:e=>e(o),[],q()]];return S(l,r),{as:e=>r[0]=e}},where:(e,t,s)=>S(d,F(e)?e:x(s)?s=>s(e)===t:n=>n(e,t)===s),group:(e,t,s,n,o)=>{const r=[e,[e,F(t)?[t,s,n,o]:G(pe,t)??[(e,t)=>t]]];return S(c,r),{as:e=>r[0]=e}},having:(e,t)=>S(y,F(e)?e:s=>s(e)===t),order:(e,t)=>S(M,[F(e)?e:t=>t(e)??0,t]),limit:(e,t)=>{r=x(t)?[0,e]:[e,t]}});const A=q(a);if(z(A))return k;const P=q(l);K(P,((e,[,t])=>D(G(P,t),(({3:t})=>x(e)?0:S(t,e)))));const Q=q(c);let j=I,N=p;if(v(M)&&x(r))N=b;else{E(t,N,b);const e=(e,t)=>{const n=G(s,e)??[],o=G(s,t)??[],r=M.findIndex(((e,t)=>n[t]!==o[t]));return r<0?0:Ie(n[r],o[r])*(M[r][1]?-1:1)},s=q(),n=q();C(N,t,v(M)?N.addRowIdsListener(t,(()=>W(n))):N.addRowListener(t,null,((e,o,r)=>{let a=null;if(N.hasRow(t,r)){const e=G(s,r)??[],o=N.getRow(t,r),l=e=>o[e];if(a=L(M,(([e])=>e(l,r))),h(e,a))return void(G(n,r)&&b.setRow(t,r,o))}U(s,r,a),W(n)})),N.addTableListener(t,(()=>{if(z(n)&&(b.delTable(t),N.hasTable(t))){const s=N.getTable(t);w(g(ie(s),e),(e=>U(n,e,0))),w(D(r,(([e,t])=>{return s=H(n),o=e,r=e+t,s.slice(o,r);var s,o,r}),(()=>H(n))),(e=>{b.setRow(t,e,s[e]),U(n,e,1)}))}})))}if(z(Q)&&v(y))j=N;else{E(t,j,N);const e=q();K(Q,((t,[s,n])=>te(V(e,s,ee),[t,n])));const s=ee();K(A,(t=>O(e,t)?0:te(s,t)));const n=q(),o=(s,n,o,r)=>D(s,(([s,a,l,i])=>{K(n,((t,[n])=>{const a=V(s,t,q),l=G(a,o),d=r?void 0:n;if(l!==d){const s=ee([[l,d]]),n=J(a);U(a,o,d),B(G(e,t),(([e,t])=>{const o=Se(i[e],n,a,s,t);i[e]=x(ge(o))?null:o}))}})),(z(a)||!f(y,(e=>e((e=>i[e]))))?N.delRow:N.setRow)(t,l,i)}));C(j,t,j.addRowListener(t,null,((r,a,l,i)=>{const d=[],c=[],u=q(),f=j.hasRow(t,l);let h=!f;B(s,(e=>{const[s,n,o]=i(t,l,e);S(d,n),S(c,o),h||=s})),K(e,(e=>{const[s,,n]=i(t,l,e);(h||s)&&U(u,e,[n])})),h&&o($(n,d,void 0,(([,e,s])=>{if(_(e,l),z(e))return N.delRow(t,s),1})),u,l,1),f&&o($(n,c,(()=>{const e={};return B(s,(s=>e[s]=j.getCell(t,l,s))),[q(),ee(),N.addRow(t,e,1),e]}),(([,e])=>{te(e,l)})),u,l)})))}E(t,e,j);const X=(n,o,r,a)=>{const l=t=>e.getCell(o,r,t);w(a,(s=>{const[o,,r,a,i]=G(P,s),d=r?.(l,n),[c,f]=G(i,n)??[];d!=c&&(x(f)||R(t,f),U(i,n,x(d)?null:[d,...u(t,1,e.addRowListener(o,d,(()=>X(n,o,d,a))))]))})),(n=>{const o=(t,o)=>e.getCell(...x(o)?[s,n,t]:t===s?[s,n,o]:[G(P,t)?.[0],G(G(P,t)?.[4],n)?.[0],o]);j.transaction((()=>f(d,(e=>e(o)))?K(A,((e,s)=>we(j,t,n,e,s(o,n)))):j.delRow(t,n)))})(n)},{3:Y}=G(P,null);return j.transaction((()=>u(t,1,e.addRowListener(s,null,((n,o,r)=>{e.hasRow(s,r)?X(r,s,r,Y):(j.delRow(t,r),B(P,(({4:e})=>D(G(e,r),(([,s])=>{R(t,s),U(e,r)})))))}))))),k},delQueryDefinition:e=>(K(G(y,e),((e,t)=>B(t,(t=>e.delListener(t))))),m(e),d(e),k),getStore:s,getQueryIds:o,forEachQuery:r,hasQuery:a,getTableId:l,getResultTable:e=>b.getTable(e),getResultRowIds:e=>b.getRowIds(e),getResultSortedRowIds:(e,t,s)=>b.getSortedRowIds(e,t,s),getResultRow:(e,t)=>b.getRow(e,t),getResultCellIds:(e,t)=>b.getCellIds(e,t),getResultCell:(e,t,s)=>b.getCell(e,t,s),hasResultTable:e=>b.hasTable(e),hasResultRow:(e,t)=>b.hasRow(e,t),hasResultCell:(e,t,s)=>b.hasCell(e,t,s),forEachResultTable:e=>b.forEachTable(e),forEachResultRow:(e,t)=>b.forEachRow(e,t),forEachResultCell:(e,t,s)=>b.forEachCell(e,t,s),addResultTableListener:(e,t)=>b.addTableListener(e,((e,...s)=>t(k,...s))),addResultRowIdsListener:(e,t,s)=>b.addRowIdsListener(e,((e,...s)=>t(k,...s)),s),addResultSortedRowIdsListener:(e,t,s,n)=>b.addSortedRowIdsListener(e,t,s,((e,...t)=>n(k,...t))),addResultRowListener:(e,t,s)=>b.addRowListener(e,t,((e,...t)=>s(k,...t))),addResultCellIdsListener:(e,t,s)=>b.addCellIdsListener(e,t,((e,...t)=>s(k,...t))),addResultCellListener:(e,t,s,n)=>b.addCellListener(e,t,s,((e,...t)=>n(k,...t))),delListener:e=>(b.delListener(e),k),destroy:c,getListenerStats:()=>{const{tables:e,tableIds:t,transaction:s,...n}=b.getListenerStats();return n}};return ce(k)})),xe=oe((e=>{const t=q(),s=q(),o=q(),r=q(),[a,l,i,d,c,u,,,f,h,R]=se(e,(()=>[q(),q(),q(),q()]),(e=>x(e)?void 0:e+n)),[g,w,L]=ae((()=>p)),I=(e,t,s)=>D(u(e),(([n,,o])=>{if(!O(o,t)){const r=ee();if(c(e)!=v(e))te(r,t);else{let e=t;for(;!x(e)&&!O(r,e);)te(r,e),e=G(n,e)}if(s)return r;U(o,t,r)}return G(o,t)})),T=(e,t)=>D(u(e),(([,,e])=>U(e,t))),v=e=>G(t,e),p={setRelationshipDefinition:(e,n,a,l)=>(U(t,e,a),f(e,n,((t,n)=>{const a=ee(),l=ee(),i=ee(),[d,c]=u(e);B(n,(([t,s],n)=>{x(t)||(te(l,t),D(G(c,t),(e=>{_(e,n),z(e)&&U(c,t)}))),x(s)||(te(l,s),O(c,s)||U(c,s,ee()),te(G(c,s),n)),te(a,n),U(d,n,s),K(G(r,e),(t=>{O(I(e,t),n)&&te(i,t)}))})),t(),B(a,(t=>w(s,[e,t]))),B(l,(t=>w(o,[e,t]))),B(i,(t=>{T(e,t),w(r,[e,t])}))}),ne(l)),p),delRelationshipDefinition:e=>(U(t,e),h(e),p),getStore:a,getRelationshipIds:l,forEachRelationship:t=>i((s=>t(s,(t=>e.forEachRow(c(s),t))))),hasRelationship:d,getLocalTableId:c,getRemoteTableId:v,getRemoteRowId:(e,t)=>G(u(e)?.[0],t),getLocalRowIds:(e,t)=>N(G(u(e)?.[1],t)),getLinkedRowIds:(e,t)=>x(u(e))?[t]:N(I(e,t,!0)),addRemoteRowIdListener:(e,t,n)=>g(n,s,[e,t]),addLocalRowIdsListener:(e,t,s)=>g(s,o,[e,t]),addLinkedRowIdsListener:(e,t,s)=>(I(e,t),g(s,r,[e,t])),delListener:e=>(T(...L(e)),p),destroy:R,getListenerStats:()=>({})};return ce(p)})),De=e=>[e,e],Ae=e=>0==((e,t=Q)=>t(e[0])+t(e[1]))(e),Fe=()=>[q(),q()],Pe=()=>[Fe(),Fe()],Je=(e,t,s,n=U)=>{const o=(r=H(e),a=e=>!ue(t,e),r.filter(a));var r,a;return w(ie(t),(n=>s(e,n,t[n]))),w(o,(t=>n(e,t))),e},Qe=(e,t,s)=>x(e)||!(e=>M(e,le)&&e.constructor==le)(e)||Re(e)||de(e)?(s?.(),!1):(he(e,((s,n)=>{t(s,n)||fe(e,n)})),!Re(e)),je=(e,t,s)=>U(e,t,G(e,t)==-s?void 0:s),Oe=()=>{let e,t,s=0,o=0;const r=q(),l=q(),c=q(),f=q(),R=q(),I=q(),T=q(),v=q(),p=Fe(),b=Pe(),m=Fe(),E=Pe(),k=Fe(),M=Fe(),P=Pe(),Q=Fe(),j=Fe(),N=Fe(),[$,se,ne,oe,re]=ae((()=>at)),le=(t,s)=>(!e||O(I,s)||_e(s))&&Qe(t,((e,t)=>ie(s,t,e)),(()=>_e(s))),ie=(e,t,s,n)=>Qe(n?s:Le(s,e,t),((n,o)=>D(de(e,t,o,n),(e=>(s[o]=e,!0)),(()=>!1))),(()=>_e(e,t))),de=(t,s,n,o)=>e?D(G(G(I,t),n),(e=>ge(o)!=e.type?_e(t,s,n,o,e.default):o),(()=>_e(t,s,n,o))):x(ge(o))?_e(t,s,n,o):o,Le=(e,t,s)=>(D(G(T,t),(([n,o])=>{B(n,((t,s)=>{ue(e,s)||(e[s]=t)})),B(o,(n=>{ue(e,n)||_e(t,s,n)}))})),e),ve=e=>Je(I,e,((e,t,s)=>{const n=q(),o=ee();Je(V(I,t,q),s,((e,t,s)=>{U(e,t,s),D(s.default,(e=>U(n,t,e)),(()=>te(o,t)))})),U(T,t,[n,o])}),((e,t)=>{U(I,t),U(T,t)})),pe=e=>Je(v,e,((e,t,s)=>Se(t,s)),((e,t)=>ke(t))),Se=(e,t)=>Je(V(v,e,(()=>(ze(e,1),q()))),t,((t,s,n)=>be(e,t,s,n)),((t,s)=>Me(e,t,s))),be=(e,t,s,n,o)=>Je(V(t,s,(()=>(Ne(e,s,1),q()))),n,((t,n,o)=>ye(e,s,t,n,o)),((n,r)=>xe(e,t,s,n,r,o))),ye=(e,t,s,n,o)=>{O(s,n)||We(e,t,n,1);const r=G(s,n);o!==r&&(Be(e,t,n,r,o),U(s,n,o))},Ce=(e,t,s,n,o)=>D(G(t,s),(t=>ye(e,s,t,n,o)),(()=>be(e,t,s,Le({[n]:o},e,s)))),me=e=>{const t=n+s++;return O(e,t)?me(e):t},Ee=e=>G(v,e)??Se(e,{}),ke=e=>Se(e,{}),Me=(e,t,s)=>be(e,t,s,{},!0),xe=(e,t,s,n,o,r)=>{const a=G(G(T,e)?.[0],o);if(!x(a)&&!r)return ye(e,s,n,o,a);const l=t=>{Be(e,s,t,G(n,t)),We(e,s,t,-1),U(n,t)};x(a)?l(o):K(n,l),z(n)&&(Ne(e,s,-1),z(U(t,s))&&(ze(e,-1),U(v,e)))},ze=(e,t)=>je(z(r)?U(r,null,oe(b[0][1])||oe(b[1][1])?Xe():0):r,e,t),Ne=(e,t,s)=>je(V(l,e,(()=>q([[null,oe(E[0][1],[e])||oe(E[1][1],[e])?Ye(e):0]]))),t,s),We=(e,t,s,n)=>je(V(V(c,e,q),t,(()=>q([[null,oe(P[0][1],[e,t])||oe(P[1][1],[e,t])?$e(e,t):0]]))),s,n),Be=(e,t,s,n,o)=>V(V(V(f,e,q),t,q),s,(()=>[n,0]))[1]=o,_e=(e,t,s,n,o)=>(S(V(V(V(R,e,q),t,q),s,(()=>[])),n),o),qe=(e,t,s)=>D(G(G(G(f,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...De(et(e,t,s))])),He=e=>z(R)||z(j[e])?0:B(e?Y(R,Z):R,((t,s)=>B(t,((t,n)=>B(t,((t,o)=>se(j[e],[s,n,o],t))))))),Ge=(e,t,s,n)=>J(t)>1?(se(e[0],n),se(e[1],n),1):z(t)||0==G(t,null)||h(G(t,null),s(...n??[]))?void 0:(se(e[1],n),1),Ke=e=>{const t=z(k[e]),s=Ae(P[e])&&Ae(E[e])&&t&&Ae(b[e]),n=z(Q[e])&&z(M[e])&&z(m[e])&&z(p[e]);if(!s||!n){const o=e?[Y(r),Z(l),Y(c,Z),Y(f,Z)]:[r,l,c,f];if(!s){B(o[2],((t,s)=>B(t,((t,n)=>Ge(P[e],t,$e,[s,n])))));const s=ee();B(o[1],((n,o)=>{Ge(E[e],n,Ye,[o])&&!t&&(se(k[e],[o,null]),te(s,o))})),t||B(o[3],((t,n)=>{if(!O(s,n)){const s=ee();B(t,(e=>B(e,(([t,n],o)=>n!==t?te(s,o):_(e,o))))),B(s,(t=>se(k[e],[n,t])))}})),Ge(b[e],o[0],Xe)}if(!n){let t;B(o[3],((s,n)=>{let o;B(s,((s,r)=>{let a;B(s,(([s,l],i)=>{l!==s&&(se(Q[e],[n,r,i],l,s,qe),t=o=a=1)})),a&&se(M[e],[n,r],qe)})),o&&se(m[e],[n],qe)})),t&&se(p[e],void 0,qe)}}},Ue=(e,...t)=>(nt((()=>e(...L(t,Te)))),at),Ve=()=>X(v,(e=>X(e,X))),Xe=()=>H(v),Ye=e=>H(G(v,Te(e))),Ze=(e,t,s)=>{const n=[];return K(G(v,Te(e)),((e,s)=>S(n,[x(t)?e:G(s,Te(t)),e]))),L(g(n,(([e],[t])=>Ie(e,t)*(s?-1:1))),(([,e])=>e))},$e=(e,t)=>H(G(G(v,Te(e)),Te(t))),et=(e,t,s)=>G(G(G(v,Te(e)),Te(t)),Te(s)),tt=e=>Ue((()=>(e=>Qe(e,le,_e))(e)?pe(e):0)),st=()=>Ue((()=>pe({}))),nt=(e,t)=>{if(-1==o)return;ot();const s=e?.();return rt(t),s},ot=()=>(o++,at),rt=e=>(o>0&&(o--,0==o&&(t=!z(f),o=1,He(1),t&&Ke(1),o=-1,e?.(X(f,(e=>X(e,(e=>X(e,(e=>[...e]),(([e,t])=>e===t))),Re)),Re),X(R,(e=>X(e,X))))&&(o=1,B(f,((e,t)=>B(e,((e,s)=>B(e,(([e],n)=>we(at,t,s,n,e))))))),o=-1,t=!1),se(N[0],void 0,t),He(0),t&&Ke(0),se(N[1],void 0,t),o=0,w([f,R,r,l,c],W))),at),at={getTables:Ve,getTableIds:Xe,getTable:e=>X(G(v,Te(e)),X),getRowIds:Ye,getSortedRowIds:Ze,getRow:(e,t)=>X(G(G(v,Te(e)),Te(t))),getCellIds:$e,getCell:et,hasTables:()=>!z(v),hasTable:e=>O(v,Te(e)),hasRow:(e,t)=>O(G(v,Te(e)),Te(t)),hasCell:(e,t,s)=>O(G(G(v,Te(e)),Te(t)),Te(s)),getJson:()=>y(v),getSchemaJson:()=>y(I),setTables:tt,setTable:(e,t)=>Ue((e=>le(t,e)?Se(e,t):0),e),setRow:(e,t,s)=>Ue(((e,t)=>ie(Te(e),Te(t),s)?be(Te(e),Ee(Te(e)),Te(t),s):0),e,t),addRow:(e,t,s)=>nt((()=>{e=Te(e);const n=ie(e,void 0,t),o=n||s?me(G(v,e)):void 0;return n&&be(e,Ee(e),o,t),o})),setPartialRow:(e,t,s)=>Ue(((e,t)=>{if(ie(e,t,s,1)){const n=Ee(e);he(s,((s,o)=>Ce(e,n,t,o,s)))}}),e,t),setCell:(e,t,s,n)=>Ue(((e,t,s)=>D(de(e,t,s,F(n)?n(et(e,t,s)):n),(n=>Ce(e,Ee(e),t,s,n)))),e,t,s),setJson:e=>{try{"{}"===e?st():tt(C(e))}catch{}return at},setSchema:t=>Ue((()=>{if((e=(e=>Qe(e,(e=>Qe(e,(e=>{if(!Qe(e,((e,t)=>u([i,d],t))))return!1;const t=e.type;return!(!A(t)&&t!=a||(ge(e.default)!=t&&fe(e,d),0))})))))(t))&&(ve(t),!z(v))){const e=Ve();st(),tt(e)}})),delTables:st,delTable:e=>Ue((e=>O(v,e)?ke(e):0),e),delRow:(e,t)=>Ue(((e,t)=>D(G(v,e),(s=>O(s,t)?Me(e,s,t):0))),e,t),delCell:(e,t,s,n)=>Ue(((e,t,s)=>D(G(v,e),(o=>D(G(o,t),(r=>O(r,s)?xe(e,o,t,r,s,n):0))))),e,t,s),delSchema:()=>Ue((()=>{ve({}),e=!1})),transaction:nt,startTransaction:ot,finishTransaction:rt,forEachTable:e=>B(v,((t,s)=>e(s,(e=>B(t,((t,s)=>e(s,(e=>K(t,e))))))))),forEachRow:(e,t)=>B(G(v,Te(e)),((e,s)=>t(s,(t=>K(e,t))))),forEachCell:(e,t,s)=>K(G(G(v,Te(e)),Te(t)),s),addTablesListener:(e,t)=>$(e,p[t?1:0]),addTableIdsListener:(e,t,s)=>$(e,b[s?1:0][t?1:0]),addTableListener:(e,t,s)=>$(t,m[s?1:0],[e]),addRowIdsListener:(e,t,s,n)=>$(t,E[n?1:0][s?1:0],[e]),addSortedRowIdsListener:(e,t,s,n,o)=>{let r=Ze(e,t,s);return $((()=>{const o=Ze(e,t,s);h(o,r)||(r=o,n(at,e,t,s,r))}),k[o?1:0],[e,t])},addRowListener:(e,t,s,n)=>$(s,M[n?1:0],[e,t]),addCellIdsListener:(e,t,s,n,o)=>$(s,P[o?1:0][n?1:0],[e,t]),addCellListener:(e,t,s,n,o)=>$(n,Q[o?1:0],[e,t,s]),addInvalidCellListener:(e,t,s,n,o)=>$(n,j[o?1:0],[e,t,s]),addWillFinishTransactionListener:e=>$(e,N[0]),addDidFinishTransactionListener:e=>$(e,N[1]),callListener:e=>(re(e,[Xe,Ye,$e],(e=>x(e[2])?[]:De(et(...e)))),at),delListener:e=>(ne(e),at),getListenerStats:()=>({}),createStore:Oe};return ce(at)};e.createCheckpoints=Le,e.createCustomPersister=ye,e.createFilePersister=(e,s)=>{let n;return ye(e,(async()=>{try{return await t.promises.readFile(s,c)}catch{}}),(async e=>{try{await t.promises.writeFile(s,e,c)}catch{}}),(e=>{n=t.watch(s,e)}),(()=>{n?.close(),n=void 0}))},e.createIndexes=ve,e.createLocalPersister=(e,t)=>Ee(e,t,localStorage),e.createMetrics=be,e.createQueries=Me,e.createRelationships=xe,e.createRemotePersister=(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);x(r)||x(n)||n==r||(r=n,e())}),1e3*n)}),(()=>{D(o,clearInterval),o=void 0}))},e.createSessionPersister=(e,t)=>Ee(e,t,sessionStorage),e.createStore=Oe,e.defaultSorter=Ie,e.id=Te,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("fs")):"function"==typeof define&&define.amd?define(["exports","fs"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBase={},e.fs);
|
|
1
|
+
var e,t;e=this,t=function(e,t){"use strict";const s=e=>typeof e,n="",o=s(n),r=s(!0),a=s(0),i=s(s),l="type",d="default",c="utf8",u="Listener",f="Result",h="add",g="Table",w="RowIds",L="CellIds",p="Cell",v=(e,t)=>e.includes(t),R=(e,t)=>e.every(t),I=(e,t)=>R(e,((s,n)=>0==n||t(e[n-1],s)<=0)),y=(e,t)=>e.sort(t),S=(e,t)=>e.forEach(t),T=(e,t)=>e.map(t),b=e=>E(e,((e,t)=>e+t),0),C=e=>e.length,m=e=>0==C(e),E=(e,t,s)=>e.reduce(t,s),k=(e,t,s)=>e.slice(t,s),M=(e,...t)=>e.push(...t),x=e=>e.pop(),D=e=>JSON.stringify(e,((e,t)=>Q(t,Map)?E([...t],((e,[t,s])=>(e[t]=s,e)),{}):t)),A=JSON.parse,F=Math.max,P=Math.min,J=isFinite,Q=(e,t)=>e instanceof t,j=e=>null==e,O=(e,t,s)=>j(e)?s?.():t(e),z=e=>e==o||e==r,N=e=>s(e)==i,W=()=>{},B=e=>e.size,_=(e,t)=>e?.has(t)??!1,q=e=>j(e)||0==B(e),H=e=>[...e?.values()??[]],G=e=>e.clear(),K=(e,t)=>e?.forEach(t),U=(e,t)=>e?.delete(t),V=e=>new Map(e),X=e=>[...e?.keys()??[]],Y=(e,t)=>e?.get(t),Z=(e,t)=>K(e,((e,s)=>t(s,e))),$=(e,t,s)=>j(s)?(U(e,t),e):e?.set(t,s),ee=(e,t,s)=>(_(e,t)||$(e,t,s()),Y(e,t)),te=(e,t,s)=>{const n={},o=t??(e=>e);return K(e,((e,t)=>O(o(e),(e=>s?.(e)?0:n[t]=e)))),n},se=(e,t)=>{const s=V(),n=t??(e=>e);return K(e,((e,t)=>s.set(t,n(e)))),s},ne=e=>se(e,se),oe=(e,t,s,n,o=0)=>O((s?ee:Y)(e,t[o],o>C(t)-2?s:V),(r=>{if(o>C(t)-2)return n?.(r)&&$(e,t[o]),r;const a=oe(r,t,s,n,o+1);return q(r)&&$(e,t[o]),a})),re=e=>new Set(e),ae=(e,t)=>e?.add(t),ie=(e,t,s)=>{const n=e.hasRow,o=V(),r=V(),a=V(),i=V(),l=V(),d=(t,s,...n)=>{const o=ee(l,t,re);return S(n,(t=>ae(o,t)&&s&&e.callListener(t))),n},c=(t,...s)=>O(Y(l,t),(n=>{S(m(s)?H(n):s,(t=>{e.delListener(t),U(n,t)})),q(n)&&$(l,t)})),u=(e,s)=>{$(o,e,s),_(r,e)||($(r,e,t()),$(a,e,V()),$(i,e,V()))},f=e=>{$(o,e),$(r,e),$(a,e),$(i,e),c(e)};return[()=>e,()=>X(o),e=>Z(r,e),e=>_(r,e),e=>Y(o,e),e=>Y(r,e),(e,t)=>$(r,e,t),u,(t,o,r,l,f)=>{u(t,o);const h=V(),g=V(),w=Y(a,t),L=Y(i,t),p=t=>{const r=s=>e.getCell(o,t,s),a=Y(w,t),i=n(o,t)?s(l(r,t)):void 0;if(a!=i&&$(h,t,[a,i]),!j(f)){const e=Y(L,t),s=n(o,t)?f(r,t):void 0;e!=s&&$(g,t,s)}},v=e=>{r((()=>{K(h,(([,e],t)=>$(w,t,e))),K(g,((e,t)=>$(L,t,e)))}),h,g,w,L,e),G(h),G(g)};Z(w,p),e.hasTable(o)&&S(e.getRowIds(o),(e=>{_(w,e)||p(e)})),v(!0),c(t),d(t,0,e.addRowListener(o,null,((e,t,s)=>p(s))),e.addTableListener(o,(()=>v())))},f,()=>Z(l,f),d,c]},le=(e,t)=>s(e)==o?t=>t(e):e??(()=>t??n),de=e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))},ce=e=>{let t,s=0;const o=[],r=V();return[(a,i,l)=>{t??=e();const d=x(o)??n+s++;return $(r,d,[a,i,l]),ae(oe(i,l??[n],re),d),d},(e,s,...o)=>S(((e,t=[n])=>{const s=[],o=(e,n)=>n==C(t)?M(s,e):null===t[n]?K(e,(e=>o(e,n+1))):S([t[n],null],(t=>o(Y(e,t),n+1)));return o(e,0),s})(e,s),(e=>K(e,(e=>Y(r,e)[0](t,...s??[],...o))))),e=>O(Y(r,e),(([,t,s])=>(oe(t,s??[n],void 0,(t=>(U(t,e),q(t)?1:0))),$(r,e),C(o)<1e3&&M(o,e),s))),(e,s,n)=>O(Y(r,e),(([e,,o=[]])=>{const r=(...a)=>{const i=C(a);i==C(o)?e(t,...a,...n(a)):j(o[i])?S(s[i](...a),(e=>r(...a,e))):r(...a,o[i])};r()}))]},ue=Object,fe=ue.keys,he=ue.isFrozen,ge=ue.freeze,we=(e,t)=>!j(((e,t)=>O(e,(e=>e[t])))(e,t)),Le=(e,t)=>delete e[t],pe=(e,t)=>S(ue.entries(e),(([e,s])=>t(s,e))),ve=e=>m(fe(e)),Re=e=>{const t=s(e);return z(t)||t==a&&J(e)?t:void 0},Ie=(e,t,s,n,o)=>j(o)?e.delCell(t,s,n,!0):e.setCell(t,s,n,o),ye=de((e=>{let t,s,o,r=100,a=V(),i=1;const l=V(),d=V(),[c,u,f]=ce((()=>J)),h=V(),g=V(),w=[],L=[],p=(t,s)=>{i=0,e.transaction((()=>K(Y(h,s),((s,n)=>K(s,((s,o)=>K(s,((s,r)=>Ie(e,n,o,r,s[t]))))))))),i=1},R=e=>{$(h,e),$(g,e),u(d,[e])},I=(e,t)=>S(((e,t)=>e.splice(0,t))(e,t??C(e)),R),y=()=>I(w,C(w)-r),T=e.addCellListener(null,null,null,((e,s,n,r,l,d)=>{if(i){O(t,(()=>{M(w,t),y(),I(L),t=void 0,o=1}));const e=ee(a,s,V),i=ee(e,n,V),c=ee(i,r,(()=>[d,void 0]));c[1]=l,c[0]===l&&q($(i,r))&&q($(e,n))&&q($(a,s))&&(t=x(w),o=1),D()}})),b=(e="")=>(j(t)&&(t=n+s++,$(h,t,a),F(t,e),a=V(),o=1),t),E=()=>{m(w)||(L.unshift(b()),p(0,t),t=x(w),o=1)},k=()=>{m(L)||(M(w,t),t=L.shift(),p(1,t),o=1)},D=()=>{o&&(u(l),o=0)},A=e=>{const t=b(e);return D(),t},F=(e,t)=>(P(e)&&Y(g,e)!==t&&($(g,e,t),u(d,[e])),J),P=e=>_(h,e),J={setSize:e=>(r=e,y(),J),addCheckpoint:A,setCheckpoint:F,getStore:()=>e,getCheckpointIds:()=>[[...w],t,[...L]],forEachCheckpoint:e=>Z(g,e),hasCheckpoint:P,getCheckpoint:e=>Y(g,e),goBackward:()=>(E(),D(),J),goForward:()=>(k(),D(),J),goTo:e=>{const s=v(w,e)?E:v(L,e)?k:null;for(;!j(s)&&e!=t;)s();return D(),J},addCheckpointIdsListener:e=>c(e,l),addCheckpointListener:(e,t)=>c(t,d,[e]),delListener:e=>(f(e),J),clear:()=>(I(w),I(L),j(t)||R(t),t=void 0,s=0,A(),J),destroy:()=>{e.delListener(T)},getListenerStats:()=>({})};return ge(J.clear())})),Se=(e,t)=>e<t?-1:1,Te=e=>n+e,be=de((e=>{const t=V(),s=V(),[o,r,a,i,l,d,c,,u,f,h]=ie(e,V,(e=>j(e)?n:e+n)),[g,w,L]=ce((()=>v)),p=(t,s,n)=>{const o=l(t);K(n,((t,n)=>s(n,(s=>K(t,(t=>s(t,(s=>e.forEachCell(o,t,s)))))))))},v={setIndexDefinition:(e,n,o,r,a,i=Se)=>{const l=j(a)?void 0:([e],[t])=>a(e,t);return u(e,n,((n,o,a,u,f,h)=>{let g=0;const L=re(),p=re(),v=d(e);if(K(o,(([e,t],s)=>{j(e)||(ae(L,e),O(Y(v,e),(t=>{U(t,s),q(t)&&($(v,e),g=1)}))),j(t)||(ae(L,t),_(v,t)||($(v,t,re()),g=1),ae(Y(v,t),s),j(r)||ae(p,t))})),n(),q(f)||(h?Z(v,(e=>ae(p,e))):Z(a,(e=>O(Y(u,e),(e=>ae(p,e))))),K(p,(e=>{const t=(t,s)=>i(Y(f,t),Y(f,s),e),s=[...Y(v,e)];I(s,t)||($(v,e,re(y(s,t))),ae(L,e))}))),(g||h)&&!j(l)){const t=[...v];I(t,l)||(c(e,V(y(t,l))),g=1)}g&&w(t,[e]),K(L,(t=>w(s,[e,t])))}),le(o),O(r,le)),v},delIndexDefinition:e=>(f(e),v),getStore:o,getIndexIds:r,forEachIndex:e=>a(((t,s)=>e(t,(e=>p(t,e,s))))),forEachSlice:(e,t)=>p(e,t,d(e)),hasIndex:i,hasSlice:(e,t)=>_(d(e),t),getTableId:l,getSliceIds:e=>X(d(e)),getSliceRowIds:(e,t)=>H(Y(d(e),t)),addSliceIdsListener:(e,s)=>g(s,t,[e]),addSliceRowIdsListener:(e,t,n)=>g(n,s,[e,t]),delListener:e=>(L(e),v),destroy:h,getListenerStats:()=>({})};return ge(v)})),Ce=V([["avg",[(e,t)=>b(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=>F(...e),(e,t)=>F(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:F(t,e)]],["min",[e=>P(...e),(e,t)=>P(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:P(t,e)]],["sum",[e=>b(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),me=(e,t,s,n,o,r=!1)=>{if(q(s))return;const[a,i,l,d]=o;return r||=j(e),K(n,(([s,n])=>{r||(e=j(s)?i?.(e,n,t++):j(n)?l?.(e,s,t--):d?.(e,n,s,t),r||=j(e))})),r?a(H(s),B(s)):e},Ee=de((e=>{const t=V(),[s,o,r,a,i,l,d,,c,u,f]=ie(e,W,(e=>isNaN(e)||j(e)||!0===e||!1===e||e===n?void 0:1*e)),[h,g,w]=ce((()=>L)),L={setMetricDefinition:(e,s,n,o,r,a,i)=>{const u=N(n)?[n,r,a,i]:Y(Ce,n)??Y(Ce,"sum");return c(e,s,((s,n,o,r,a,i)=>{const c=l(e),f=B(r);i||=j(c),s();let h=me(c,f,r,n,u,i);J(h)||(h=void 0),h!=c&&(d(e,h),g(t,[e],h,c))}),le(o,1)),L},delMetricDefinition:e=>(u(e),L),getStore:s,getMetricIds:o,forEachMetric:r,hasMetric:a,getTableId:i,getMetric:l,addMetricListener:(e,s)=>h(s,t,[e]),delListener:e=>(w(e),L),destroy:f,getListenerStats:()=>({})};return ge(L)})),ke=(e,t,s,o,r)=>{let a,i=0;const l={load:async s=>{if(2!=i){i=1;const o=await t();j(o)||o==n?e.setTables(s):e.setJson(o),i=0}return l},startAutoLoad:async e=>(l.stopAutoLoad(),await l.load(e),o(l.load),l),stopAutoLoad:()=>(r(),l),save:async()=>(1!=i&&(i=2,await s(e.getJson()),i=0),l),startAutoSave:async()=>(await l.stopAutoSave().save(),a=e.addTablesListener((()=>l.save())),l),stopAutoSave:()=>(O(a,e.delListener),l),getStore:()=>e,destroy:()=>l.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return ge(l)},Me="storage",xe=globalThis.window,De=(e,t,s)=>{let n;return ke(e,(async()=>s.getItem(t)),(async e=>s.setItem(t,e)),(e=>{n=n=>{n.storageArea===s&&n.key===t&&e()},xe.addEventListener(Me,n)}),(()=>{xe.removeEventListener(Me,n),n=void 0}))},Ae=e=>e.headers.get("ETag"),Fe=de((e=>{const t=e.createStore,[s,o,r,a,i,,,l,,d,c,v,I]=ie(e,(()=>!0),W),y=t(),T=t(),b=V(),E=(e,t,...s)=>S(s,(s=>ae(ee(ee(b,t,V),e,re),s))),x=e=>S([T,y],(t=>t.delTable(e))),D=(e,t,s)=>E(t,e,t.addWillFinishTransactionListener(s.startTransaction),t.addDidFinishTransactionListener((()=>s.finishTransaction()))),A={setQueryDefinition:(t,s,o)=>{l(t,s),x(t);const r=[],a=[[null,[s,null,null,[],V()]]],i=[],d=[],c=[];o({select:(e,t)=>{const s=N(e)?[C(r)+n,e]:[j(t)?e:t,s=>s(e,t)];return M(r,s),{as:e=>s[0]=e}},join:(e,t,s)=>{const n=j(s)||N(t)?null:t,o=j(n)?t:s,r=[e,[e,n,N(o)?o:e=>e(o),[],V()]];return M(a,r),{as:e=>r[0]=e}},where:(e,t,s)=>M(i,N(e)?e:j(s)?s=>s(e)===t:n=>n(e,t)===s),group:(e,t,s,n,o)=>{const r=[e,[e,N(t)?[t,s,n,o]:Y(Ce,t)??[(e,t)=>t]]];return M(d,r),{as:e=>r[0]=e}},having:(e,t)=>M(c,N(e)?e:s=>s(e)===t)});const u=V(r);if(q(u))return A;const f=V(a);Z(f,((e,[,t])=>O(Y(f,t),(({3:t})=>j(e)?0:M(t,e)))));const h=V(d);let g=y;if(q(h)&&m(c))g=T;else{D(t,g,T);const e=V();Z(h,((t,[s,n])=>ae(ee(e,s,re),[t,n])));const s=re();Z(u,(t=>_(e,t)?0:ae(s,t)));const n=V(),o=(s,n,o,r)=>O(s,(([s,a,i,l])=>{Z(n,((t,[n])=>{const a=ee(s,t,V),i=Y(a,o),d=r?void 0:n;if(i!==d){const s=re([[i,d]]),n=B(a);$(a,o,d),K(Y(e,t),(([e,t])=>{const o=me(l[e],n,a,s,t);l[e]=j(Re(o))?null:o}))}})),(q(a)||!R(c,(e=>e((e=>l[e]))))?T.delRow:T.setRow)(t,i,l)}));E(g,t,g.addRowListener(t,null,((r,a,i,l)=>{const d=[],c=[],u=V(),f=g.hasRow(t,i);let h=!f;K(s,(e=>{const[s,n,o]=l(t,i,e);M(d,n),M(c,o),h||=s})),Z(e,(e=>{const[s,,n]=l(t,i,e);(h||s)&&$(u,e,[n])})),h&&o(oe(n,d,void 0,(([,e,s])=>{if(U(e,i),q(e))return T.delRow(t,s),1})),u,i,1),f&&o(oe(n,c,(()=>{const e={};return K(s,(s=>e[s]=g.getCell(t,i,s))),[V(),re(),T.addRow(t,e,1),e]}),(([,e])=>{ae(e,i)})),u,i)})))}D(t,e,g);const w=(n,o,r,a)=>{const l=t=>e.getCell(o,r,t);S(a,(s=>{const[o,,r,a,i]=Y(f,s),d=r?.(l,n),[c,u]=Y(i,n)??[];d!=c&&(j(u)||I(t,u),$(i,n,j(d)?null:[d,...v(t,1,e.addRowListener(o,d,(()=>w(n,o,d,a))))]))})),(n=>{const o=(t,o)=>e.getCell(...j(o)?[s,n,t]:t===s?[s,n,o]:[Y(f,t)?.[0],Y(Y(f,t)?.[4],n)?.[0],o]);g.transaction((()=>R(i,(e=>e(o)))?Z(u,((e,s)=>Ie(g,t,n,e,s(o,n)))):g.delRow(t,n)))})(n)},{3:L}=Y(f,null);return g.transaction((()=>v(t,1,e.addRowListener(s,null,((n,o,r)=>{e.hasRow(s,r)?w(r,s,r,L):(g.delRow(t,r),K(f,(({4:e})=>O(Y(e,r),(([,s])=>{I(t,s),$(e,r)})))))}))))),A},delQueryDefinition:e=>(Z(Y(b,e),((e,t)=>K(t,(t=>e.delListener(t))))),x(e),d(e),A),getStore:s,getQueryIds:o,forEachQuery:r,hasQuery:a,getTableId:i,delListener:e=>(T.delListener(e),A),destroy:c,getListenerStats:()=>{const{tables:e,tableIds:t,transaction:s,...n}=T.getListenerStats();return n}};return pe({[g]:[1,1],[w]:[0,1],SortedRowIds:[0,5],Row:[1,2],[L]:[0,2],[p]:[1,3]},(([e,t],s)=>{S(e?["get","has","forEach"]:["get"],(e=>A[e+f+s]=(...t)=>T[e+s](...t))),A[h+f+s+u]=(...e)=>T[h+s+u](...k(e,0,t),((s,...n)=>e[t](A,...n)))})),ge(A)})),Pe=de((e=>{const t=V(),s=V(),o=V(),r=V(),[a,i,l,d,c,u,,,f,h,g]=ie(e,(()=>[V(),V(),V(),V()]),(e=>j(e)?void 0:e+n)),[w,L,p]=ce((()=>y)),v=(e,t,s)=>O(u(e),(([n,,o])=>{if(!_(o,t)){const r=re();if(c(e)!=I(e))ae(r,t);else{let e=t;for(;!j(e)&&!_(r,e);)ae(r,e),e=Y(n,e)}if(s)return r;$(o,t,r)}return Y(o,t)})),R=(e,t)=>O(u(e),(([,,e])=>$(e,t))),I=e=>Y(t,e),y={setRelationshipDefinition:(e,n,a,i)=>($(t,e,a),f(e,n,((t,n)=>{const a=re(),i=re(),l=re(),[d,c]=u(e);K(n,(([t,s],n)=>{j(t)||(ae(i,t),O(Y(c,t),(e=>{U(e,n),q(e)&&$(c,t)}))),j(s)||(ae(i,s),_(c,s)||$(c,s,re()),ae(Y(c,s),n)),ae(a,n),$(d,n,s),Z(Y(r,e),(t=>{_(v(e,t),n)&&ae(l,t)}))})),t(),K(a,(t=>L(s,[e,t]))),K(i,(t=>L(o,[e,t]))),K(l,(t=>{R(e,t),L(r,[e,t])}))}),le(i)),y),delRelationshipDefinition:e=>($(t,e),h(e),y),getStore:a,getRelationshipIds:i,forEachRelationship:t=>l((s=>t(s,(t=>e.forEachRow(c(s),t))))),hasRelationship:d,getLocalTableId:c,getRemoteTableId:I,getRemoteRowId:(e,t)=>Y(u(e)?.[0],t),getLocalRowIds:(e,t)=>H(Y(u(e)?.[1],t)),getLinkedRowIds:(e,t)=>j(u(e))?[t]:H(v(e,t,!0)),addRemoteRowIdListener:(e,t,n)=>w(n,s,[e,t]),addLocalRowIdsListener:(e,t,s)=>w(s,o,[e,t]),addLinkedRowIdsListener:(e,t,s)=>(v(e,t),w(s,r,[e,t])),delListener:e=>(R(...p(e)),y),destroy:g,getListenerStats:()=>({})};return ge(y)})),Je=e=>[e,e],Qe=()=>[V(),V()],je=(e,t,s,n=$)=>{const o=(r=X(e),a=e=>!we(t,e),r.filter(a));var r,a;return S(fe(t),(n=>s(e,n,t[n]))),S(o,(t=>n(e,t))),e},Oe=(e,t,s)=>j(e)||!(e=>Q(e,ue)&&e.constructor==ue)(e)||ve(e)||he(e)?(s?.(),!1):(pe(e,((s,n)=>{t(s,n)||Le(e,n)})),!ve(e)),ze=(e,t,s)=>$(e,t,Y(e,t)==-s?void 0:s),Ne=()=>{let e,t,s=0,o=0;const r=V(),i=V(),c=V(),f=V(),I=V(),b=V(),m=V(),E=V(),x=Qe(),F=Qe(),P=Qe(),J=Qe(),Q=Qe(),W=Qe(),B=Qe(),H=Qe(),oe=Qe(),ie=Qe(),[le,de,ue,fe]=ce((()=>ct)),he=(t,s)=>(!e||_(b,s)||Ke(s))&&Oe(t,((e,t)=>ye(s,t,e)),(()=>Ke(s))),ye=(e,t,s,n)=>Oe(n?s:Ce(s,e,t),((n,o)=>O(be(e,t,o,n),(e=>(s[o]=e,!0)),(()=>!1))),(()=>Ke(e,t))),be=(t,s,n,o)=>e?O(Y(Y(b,t),n),(e=>Re(o)!=e.type?Ke(t,s,n,o,e.default):o),(()=>Ke(t,s,n,o))):j(Re(o))?Ke(t,s,n,o):o,Ce=(e,t,s)=>(O(Y(m,t),(([n,o])=>{K(n,((t,s)=>{we(e,s)||(e[s]=t)})),K(o,(n=>{we(e,n)||Ke(t,s,n)}))})),e),me=e=>je(b,e,((e,t,s)=>{const n=V(),o=re();je(ee(b,t,V),s,((e,t,s)=>{$(e,t,s),O(s.default,(e=>$(n,t,e)),(()=>ae(o,t)))})),$(m,t,[n,o])}),((e,t)=>{$(b,t),$(m,t)})),Ee=e=>je(E,e,((e,t,s)=>ke(t,s)),((e,t)=>Pe(t))),ke=(e,t)=>je(ee(E,e,(()=>(_e(e,1),V()))),t,((t,s,n)=>Me(e,t,s,n)),((t,s)=>We(e,t,s))),Me=(e,t,s,n,o)=>je(ee(t,s,(()=>(qe(e,s,1),V()))),n,((t,n,o)=>xe(e,s,t,n,o)),((n,r)=>Be(e,t,s,n,r,o))),xe=(e,t,s,n,o)=>{_(s,n)||He(e,t,n,1);const r=Y(s,n);o!==r&&(Ge(e,t,n,r,o),$(s,n,o))},De=(e,t,s,n,o)=>O(Y(t,s),(t=>xe(e,s,t,n,o)),(()=>Me(e,t,s,Ce({[n]:o},e,s)))),Ae=e=>{const t=n+s++;return _(e,t)?Ae(e):t},Fe=e=>Y(E,e)??ke(e,{}),Pe=e=>ke(e,{}),We=(e,t,s)=>Me(e,t,s,{},!0),Be=(e,t,s,n,o,r)=>{const a=Y(Y(m,e)?.[0],o);if(!j(a)&&!r)return xe(e,s,n,o,a);const i=t=>{Ge(e,s,t,Y(n,t)),He(e,s,t,-1),$(n,t)};j(a)?i(o):Z(n,i),q(n)&&(qe(e,s,-1),q($(t,s))&&(_e(e,-1),$(E,e)))},_e=(e,t)=>ze(r,e,t),qe=(e,t,s)=>ze(ee(i,e,V),t,s),He=(e,t,s,n)=>ze(ee(ee(c,e,V),t,V),s,n),Ge=(e,t,s,n,o)=>ee(ee(ee(f,e,V),t,V),s,(()=>[n,0]))[1]=o,Ke=(e,t,s,n,o)=>(M(ee(ee(ee(I,e,V),t,V),s,(()=>[])),n),o),Ue=(e,t,s)=>O(Y(Y(Y(f,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...Je(ot(e,t,s))])),Ve=e=>q(I)||q(oe[e])?0:K(e?se(I,ne):I,((t,s)=>K(t,((t,n)=>K(t,((t,o)=>de(oe[e],[s,n,o],t))))))),Xe=(e,t,s)=>{if(!q(t))return de(e,s),1},Ye=e=>{const t=q(Q[e]),s=q(B[e])&&q(J[e])&&t&&q(F[e]),n=q(H[e])&&q(W[e])&&q(P[e])&&q(x[e]);if(!s||!n){const o=e?[se(r),ne(i),se(c,ne),se(f,ne)]:[r,i,c,f];if(!s){K(o[2],((t,s)=>K(t,((t,n)=>Xe(B[e],t,[s,n])))));const s=re();K(o[1],((n,o)=>{Xe(J[e],n,[o])&&!t&&(de(Q[e],[o,null]),ae(s,o))})),t||K(o[3],((t,n)=>{if(!_(s,n)){const s=re();K(t,(e=>K(e,(([t,n],o)=>n!==t?ae(s,o):U(e,o))))),K(s,(t=>de(Q[e],[n,t])))}})),Xe(F[e],o[0])}if(!n){let t;K(o[3],((s,n)=>{let o;K(s,((s,r)=>{let a;K(s,(([s,i],l)=>{i!==s&&(de(H[e],[n,r,l],i,s,Ue),t=o=a=1)})),a&&de(W[e],[n,r],Ue)})),o&&de(P[e],[n],Ue)})),t&&de(x[e],void 0,Ue)}}},Ze=(e,...t)=>(it((()=>e(...T(t,Te)))),ct),$e=()=>te(E,(e=>te(e,te))),et=()=>X(E),tt=e=>X(Y(E,Te(e))),st=(e,t,s,n=0,o)=>{const r=[];return Z(Y(E,Te(e)),((e,s)=>M(r,[j(t)?e:Y(s,Te(t)),e]))),T(k(y(r,(([e],[t])=>Se(e,t)*(s?-1:1))),n,j(o)?o:n+o),(([,e])=>e))},nt=(e,t)=>X(Y(Y(E,Te(e)),Te(t))),ot=(e,t,s)=>Y(Y(Y(E,Te(e)),Te(t)),Te(s)),rt=e=>Ze((()=>(e=>Oe(e,he,Ke))(e)?Ee(e):0)),at=()=>Ze((()=>Ee({}))),it=(e,t)=>{if(-1==o)return;lt();const s=e?.();return dt(t),s},lt=()=>(o++,ct),dt=e=>(o>0&&(o--,0==o&&(t=!q(f),o=1,Ve(1),t&&Ye(1),o=-1,e?.(te(f,(e=>te(e,(e=>te(e,(e=>[...e]),(([e,t])=>e===t))),ve)),ve),te(I,(e=>te(e,te))))&&(o=1,K(f,((e,t)=>K(e,((e,s)=>K(e,(([e],n)=>Ie(ct,t,s,n,e))))))),o=-1,t=!1),de(ie[0],void 0,t),Ve(0),t&&Ye(0),de(ie[1],void 0,t),o=0,S([f,I,r,i,c],G))),ct),ct={getTables:$e,getTableIds:et,getTable:e=>te(Y(E,Te(e)),te),getRowIds:tt,getSortedRowIds:st,getRow:(e,t)=>te(Y(Y(E,Te(e)),Te(t))),getCellIds:nt,getCell:ot,hasTables:()=>!q(E),hasTable:e=>_(E,Te(e)),hasRow:(e,t)=>_(Y(E,Te(e)),Te(t)),hasCell:(e,t,s)=>_(Y(Y(E,Te(e)),Te(t)),Te(s)),getJson:()=>D(E),getSchemaJson:()=>D(b),setTables:rt,setTable:(e,t)=>Ze((e=>he(t,e)?ke(e,t):0),e),setRow:(e,t,s)=>Ze(((e,t)=>ye(Te(e),Te(t),s)?Me(Te(e),Fe(Te(e)),Te(t),s):0),e,t),addRow:(e,t,s)=>it((()=>{e=Te(e);const n=ye(e,void 0,t),o=n||s?Ae(Y(E,e)):void 0;return n&&Me(e,Fe(e),o,t),o})),setPartialRow:(e,t,s)=>Ze(((e,t)=>{if(ye(e,t,s,1)){const n=Fe(e);pe(s,((s,o)=>De(e,n,t,o,s)))}}),e,t),setCell:(e,t,s,n)=>Ze(((e,t,s)=>O(be(e,t,s,N(n)?n(ot(e,t,s)):n),(n=>De(e,Fe(e),t,s,n)))),e,t,s),setJson:e=>{try{"{}"===e?at():rt(A(e))}catch{}return ct},setSchema:t=>Ze((()=>{if((e=(e=>Oe(e,(e=>Oe(e,(e=>{if(!Oe(e,((e,t)=>v([l,d],t))))return!1;const t=e.type;return!(!z(t)&&t!=a||(Re(e.default)!=t&&Le(e,d),0))})))))(t))&&(me(t),!q(E))){const e=$e();at(),rt(e)}})),delTables:at,delTable:e=>Ze((e=>_(E,e)?Pe(e):0),e),delRow:(e,t)=>Ze(((e,t)=>O(Y(E,e),(s=>_(s,t)?We(e,s,t):0))),e,t),delCell:(e,t,s,n)=>Ze(((e,t,s)=>O(Y(E,e),(o=>O(Y(o,t),(r=>_(r,s)?Be(e,o,t,r,s,n):0))))),e,t,s),delSchema:()=>Ze((()=>{me({}),e=!1})),transaction:it,startTransaction:lt,finishTransaction:dt,forEachTable:e=>K(E,((t,s)=>e(s,(e=>K(t,((t,s)=>e(s,(e=>Z(t,e))))))))),forEachRow:(e,t)=>K(Y(E,Te(e)),((e,s)=>t(s,(t=>Z(e,t))))),forEachCell:(e,t,s)=>Z(Y(Y(E,Te(e)),Te(t)),s),addSortedRowIdsListener:(e,t,s,n,o,r,a)=>{let i=st(e,t,s,n,o);return le((()=>{const a=st(e,t,s,n,o);var l,d;d=i,C(l=a)===C(d)&&R(l,((e,t)=>d[t]===e))||(i=a,r(ct,e,t,s,n,o,i))}),Q[a?1:0],[e,t])},addWillFinishTransactionListener:e=>le(e,ie[0]),addDidFinishTransactionListener:e=>le(e,ie[1]),callListener:e=>(fe(e,[et,tt,nt],(e=>j(e[2])?[]:Je(ot(...e)))),ct),delListener:e=>(ue(e),ct),getListenerStats:()=>({}),createStore:Ne};return pe({Tables:[0,x],TableIds:[0,F],[g]:[1,P],[w]:[1,J],Row:[2,W],[L]:[2,B],[p]:[3,H],InvalidCell:[3,oe]},(([e,t],s)=>{ct[h+s+u]=(...s)=>le(s[e],t[s[e+1]?1:0],e>0?k(s,0,e):void 0)})),ge(ct)};e.createCheckpoints=ye,e.createCustomPersister=ke,e.createFilePersister=(e,s)=>{let n;return ke(e,(async()=>{try{return await t.promises.readFile(s,c)}catch{}}),(async e=>{try{await t.promises.writeFile(s,e,c)}catch{}}),(e=>{n=t.watch(s,e)}),(()=>{n?.close(),n=void 0}))},e.createIndexes=be,e.createLocalPersister=(e,t)=>De(e,t,localStorage),e.createMetrics=Ee,e.createQueries=Fe,e.createRelationships=Pe,e.createRemotePersister=(e,t,s,n)=>{let o,r;return ke(e,(async()=>{const e=await fetch(t);return r=Ae(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=Ae(s);j(r)||j(n)||n==r||(r=n,e())}),1e3*n)}),(()=>{O(o,clearInterval),o=void 0}))},e.createSessionPersister=(e,t)=>De(e,t,sessionStorage),e.createStore=Ne,e.defaultSorter=Se,e.id=Te,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("fs")):"function"==typeof define&&define.amd?define(["exports","fs"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBase={},e.fs);
|
package/lib/umd/tinybase.js.gz
CHANGED
|
Binary file
|
package/lib/umd/ui-react.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e,s;e=this,s=function(e,s){"use strict";const t=e=>typeof e,o="",r=t(o),d=(e,s)=>e.map(s),
|
|
1
|
+
var e,s;e=this,s=function(e,s){"use strict";const t=e=>typeof e,o="",r=t(o),d="Tables",l="TableIds",n="Table",u="RowIds",i="SortedRowIds",a="Row",I="CellIds",c="Cell",w=(e,s)=>e.map(s),R=e=>null==e,C=(e,s,t)=>R(e)?t?.():s(e),p=()=>{},{createContext:b,useContext:k}=s,g=b([]),m=(e,s)=>{const t=k(g);return R(e)?t[s]:((e,s)=>C(e,(e=>e[s])))(t[s+1],e)},h=(e,s)=>{const o=m(e,s);return R(e)||(e=>t(e)==r)(e)?o:e},y=e=>h(e,0),L=e=>h(e,2),T=e=>h(e,4),S=e=>h(e,6),f=e=>h(e,8),V=e=>h(e,10),{useCallback:q,useEffect:v,useMemo:x,useRef:P,useState:B}=s,M=(e,s,t=[])=>{const o=x((()=>s(e)),[e,...t]);return v((()=>()=>o.destroy()),[o]),o},D=(e,s,t,o=[],r)=>{const[,d]=B(),l=q((()=>s?.["get"+e]?.(...o)??t),[s,...o]),[n]=B(l),u=P(n);return x((()=>u.current=l()),[l]),A(e,s,((...e)=>{u.current=R(r)?l():e[r],d([])}),[],o),u.current},A=(e,s,t,o=[],r=[],...d)=>v((()=>{const o=s?.["add"+e+"Listener"]?.(...r,t,...d);return()=>s?.delListener(o)}),[s,...r,...o,...d]),F=(e,s,t,o=[],r=p,d=[],...l)=>{const n=y(e);return q((e=>C(n,(o=>C(t(e,o),(e=>r(o["set"+s](...l,e),e)))))),[n,s,...o,...d,...l])},G=(e,s,t=p,o=[],...r)=>{const d=y(e);return q((()=>t(d?.["del"+s](...r))),[d,s,...o,...r])},j=(e,s,t)=>{const o=V(e);return q((()=>o?.[s](t)),[o,s,t])},E=e=>D(l,y(e),[],[]),Q=(e,s)=>D(u,y(s),[],[e]),U=(e,s,t,o=0,r,d)=>D(i,y(d),[],[e,s,t,o,r],6),_=(e,s,t)=>D(I,y(t),[],[e,s]),O=(e,s,t,o)=>D(c,y(o),void 0,[e,s,t],4),z=(e,s)=>D("Metric",L(s),void 0,[e]),H=(e,s)=>D("SliceIds",T(s),[],[e]),J=(e,s,t)=>D("SliceRowIds",T(t),[],[e,s]),K=(e,s,t)=>D("RemoteRowId",S(t),void 0,[e,s]),N=(e,s,t)=>D("LocalRowIds",S(t),[],[e,s]),W=(e,s,t)=>D("LinkedRowIds",S(t),[],[e,s]),X=(e,s)=>D("ResultRowIds",f(s),[],[e]),Y=(e,s,t,o=0,r,d)=>D("ResultSortedRowIds",f(d),[],[e,s,t,o,r],6),Z=(e,s,t)=>D("ResultCellIds",f(t),[],[e,s]),$=(e,s,t,o)=>D("ResultCell",f(o),void 0,[e,s,t]),ee=e=>D("CheckpointIds",V(e),[[],void 0,[]]),se=(e,s)=>D("Checkpoint",V(s),void 0,[e]),te=e=>j(e,"goBackward"),oe=e=>j(e,"goForward"),{createElement:re,useMemo:de}=s,le=({tableId:e,store:s,rowComponent:t=Re,getRowComponentProps:o,separator:r,debugIds:d},l)=>ce(w(l,(r=>re(t,{...Ie(o,r),key:r,tableId:e,rowId:r,store:s,debugIds:d}))),r,d,e),ne=({queryId:e,queries:s,resultRowComponent:t=ke,getResultRowComponentProps:o,separator:r,debugIds:d},l)=>ce(w(l,(r=>re(t,{...Ie(o,r),key:r,queryId:e,rowId:r,queries:s,debugIds:d}))),r,d,e),ue=e=>{const s=S(e);return[s,s?.getStore()]},ie=({relationshipId:e,relationships:s,rowComponent:t=Re,getRowComponentProps:o,separator:r,debugIds:d},l,n)=>{const[u,i]=ue(s),a=u?.getLocalTableId(e),I=l(e,n,u);return ce(w(I,(e=>re(t,{...Ie(o,e),key:e,tableId:a,rowId:e,store:i,debugIds:d}))),r,d,n)},ae=e=>({checkpoints:s,checkpointComponent:t=ge,getCheckpointComponentProps:o,separator:r,debugIds:d})=>{const l=V(s);return ce(w(e(ee(l)),(e=>re(t,{...Ie(o,e),key:e,checkpoints:l,checkpointId:e,debugIds:d}))),r)},Ie=(e,s)=>R(e)?{}:e(s),ce=(e,s,t,o)=>{const r=R(s)||!Array.isArray(e)?e:w(e,((e,t)=>t>0?[s,e]:e));return t?[o,":{",r,"}"]:r},we=({tableId:e,rowId:s,cellId:t,store:r,debugIds:d})=>ce(o+(O(e,s,t,r)??o),void 0,d,t),Re=({tableId:e,rowId:s,store:t,cellComponent:o=we,getCellComponentProps:r,separator:d,debugIds:l})=>ce(w(_(e,s,t),(d=>re(o,{...Ie(r,d),key:d,tableId:e,rowId:s,cellId:d,store:t,debugIds:l}))),d,l,s),Ce=e=>le(e,Q(e.tableId,e.store)),pe=({indexId:e,sliceId:s,indexes:t,rowComponent:o=Re,getRowComponentProps:r,separator:d,debugIds:l})=>{const n=T(t),u=n?.getStore(),i=n?.getTableId(e),a=J(e,s,n);return ce(w(a,(e=>re(o,{...Ie(r,e),key:e,tableId:i,rowId:e,store:u,debugIds:l}))),d,l,s)},be=({queryId:e,rowId:s,cellId:t,queries:r,debugIds:d})=>ce(o+($(e,s,t,r)??o),void 0,d,t),ke=({queryId:e,rowId:s,queries:t,resultCellComponent:o=be,getResultCellComponentProps:r,separator:d,debugIds:l})=>ce(w(Z(e,s,t),(d=>re(o,{...Ie(r,d),key:d,queryId:e,rowId:s,cellId:d,queries:t,debugIds:l}))),d,l,s),ge=({checkpoints:e,checkpointId:s,debugIds:t})=>ce(se(s,e)??o,void 0,t,s),me=ae((e=>e[0])),he=ae((e=>R(e[1])?[]:[e[1]])),ye=ae((e=>e[2]));e.BackwardCheckpointsView=me,e.CellView=we,e.CheckpointView=ge,e.CurrentCheckpointView=he,e.ForwardCheckpointsView=ye,e.IndexView=({indexId:e,indexes:s,sliceComponent:t=pe,getSliceComponentProps:o,separator:r,debugIds:d})=>ce(w(H(e,s),(r=>re(t,{...Ie(o,r),key:r,indexId:e,sliceId:r,indexes:s,debugIds:d}))),r,d,e),e.LinkedRowsView=e=>ie(e,W,e.firstRowId),e.LocalRowsView=e=>ie(e,N,e.remoteRowId),e.MetricView=({metricId:e,metrics:s,debugIds:t})=>ce(z(e,s)??o,void 0,t,e),e.Provider=({store:e,storesById:t,metrics:o,metricsById:r,indexes:d,indexesById:l,relationships:n,relationshipsById:u,queries:i,queriesById:a,checkpoints:I,checkpointsById:c,children:w})=>{const R=s.useContext(g);return re(g.Provider,{value:de((()=>[e??R[0],{...R[1],...t},o??R[2],{...R[3],...r},d??R[4],{...R[5],...l},n??R[6],{...R[7],...u},i??R[8],{...R[9],...a},I??R[10],{...R[11],...c}]),[e,t,o,r,d,l,n,u,i,a,I,c,R])},w)},e.RemoteRowView=({relationshipId:e,localRowId:s,relationships:t,rowComponent:o=Re,getRowComponentProps:r,debugIds:d})=>{const[l,n]=ue(t),u=l?.getRemoteTableId(e),i=K(e,s,l);return ce(R(u)||R(i)?null:re(o,{...Ie(r,i),key:i,tableId:u,rowId:i,store:n,debugIds:d}),void 0,d,s)},e.ResultCellView=be,e.ResultRowView=ke,e.ResultSortedTableView=({cellId:e,descending:s,offset:t,limit:o,...r})=>ne(r,Y(r.queryId,e,s,t,o,r.queries)),e.ResultTableView=e=>ne(e,X(e.queryId,e.queries)),e.RowView=Re,e.SliceView=pe,e.SortedTableView=({cellId:e,descending:s,offset:t,limit:o,...r})=>le(r,U(r.tableId,e,s,t,o,r.store)),e.TableView=Ce,e.TablesView=({store:e,tableComponent:s=Ce,getTableComponentProps:t,separator:o,debugIds:r})=>ce(w(E(e),(o=>re(s,{...Ie(t,o),key:o,tableId:o,store:e,debugIds:r}))),o),e.tableView=le,e.useAddRowCallback=(e,s,t=[],o,r=p,d=[])=>{const l=y(o);return q((t=>C(l,(o=>C(s(t,o),(s=>r(o.addRow(e,s),o,s)))))),[l,e,...t,...d])},e.useCell=O,e.useCellIds=_,e.useCellIdsListener=(e,s,t,o,r,d)=>A(I,y(d),t,o,[e,s],r),e.useCellListener=(e,s,t,o,r,d,l)=>A(c,y(l),o,r,[e,s,t],d),e.useCheckpoint=se,e.useCheckpointIds=ee,e.useCheckpointIdsListener=(e,s,t)=>A("CheckpointIds",V(t),e,s),e.useCheckpointListener=(e,s,t,o)=>A("Checkpoint",V(o),s,t,[e]),e.useCheckpoints=e=>m(e,10),e.useCreateCheckpoints=(e,s,t)=>M(e,s,t),e.useCreateIndexes=(e,s,t)=>M(e,s,t),e.useCreateMetrics=(e,s,t)=>M(e,s,t),e.useCreatePersister=(e,s,t=[],o,r=[])=>{const[,d]=B(),l=x((()=>s(e)),[e,...t]);return v((()=>((async()=>{await(o?.(l)),d(1)})(),()=>{l.destroy()})),[l,...r]),l},e.useCreateQueries=(e,s,t)=>M(e,s,t),e.useCreateRelationships=(e,s,t)=>M(e,s,t),e.useCreateStore=(e,s=[])=>x(e,s),e.useDelCellCallback=(e,s,t,o,r,d,l)=>G(r,c,d,l,e,s,t,o),e.useDelRowCallback=(e,s,t,o,r)=>G(t,a,o,r,e,s),e.useDelTableCallback=(e,s,t,o)=>G(s,n,t,o,e),e.useDelTablesCallback=(e,s,t)=>G(e,d,s,t),e.useGoBackwardCallback=te,e.useGoForwardCallback=oe,e.useGoToCallback=(e,s=[],t,o=p,r=[])=>{const d=V(t);return q((s=>C(d,(t=>C(e(s),(e=>o(t.goTo(e),e)))))),[d,...s,...r])},e.useIndexes=e=>m(e,4),e.useLinkedRowIds=W,e.useLinkedRowIdsListener=(e,s,t,o,r)=>A("LinkedRowIds",S(r),t,o,[e,s]),e.useLocalRowIds=N,e.useLocalRowIdsListener=(e,s,t,o,r)=>A("LocalRowIds",S(r),t,o,[e,s]),e.useMetric=z,e.useMetricListener=(e,s,t,o)=>A("Metric",L(o),s,t,[e]),e.useMetrics=e=>m(e,2),e.useQueries=e=>m(e,8),e.useRedoInformation=e=>{const s=V(e),[,,[t]]=ee(s);return[!R(t),oe(s),t,C(t,(e=>s?.getCheckpoint(e)))??o]},e.useRelationships=e=>m(e,6),e.useRemoteRowId=K,e.useRemoteRowIdListener=(e,s,t,o,r)=>A("RemoteRowId",S(r),t,o,[e,s]),e.useResultCell=$,e.useResultCellIds=Z,e.useResultCellIdsListener=(e,s,t,o,r)=>A("ResultCellIds",f(r),t,o,[e,s]),e.useResultCellListener=(e,s,t,o,r,d)=>A("ResultCell",f(d),o,r,[e,s,t]),e.useResultRow=(e,s,t)=>D("ResultRow",f(t),{},[e,s]),e.useResultRowIds=X,e.useResultRowIdsListener=(e,s,t,o)=>A("ResultRowIds",f(o),s,t,[e]),e.useResultRowListener=(e,s,t,o,r)=>A("ResultRow",f(r),t,o,[e,s]),e.useResultSortedRowIds=Y,e.useResultSortedRowIdsListener=(e,s,t,o,r,d,l,n)=>A("ResultSortedRowIds",f(n),d,l,[e,s,t,o,r]),e.useResultTable=(e,s)=>D("ResultTable",f(s),{},[e]),e.useResultTableListener=(e,s,t,o)=>A("ResultTable",f(o),s,t,[e]),e.useRow=(e,s,t)=>D(a,y(t),{},[e,s]),e.useRowIds=Q,e.useRowIdsListener=(e,s,t,o,r)=>A(u,y(r),s,t,[e],o),e.useRowListener=(e,s,t,o,r,d)=>A(a,y(d),t,o,[e,s],r),e.useSetCellCallback=(e,s,t,o,r,d,l,n)=>F(d,c,o,r,l,n,e,s,t),e.useSetCheckpointCallback=(e=p,s=[],t,o=p,r=[])=>{const d=V(t);return q((s=>C(d,(t=>{const r=e(s);o(t.addCheckpoint(r),t,r)}))),[d,...s,...r])},e.useSetPartialRowCallback=(e,s,t,o,r,d,l)=>F(r,"PartialRow",t,o,d,l,e,s),e.useSetRowCallback=(e,s,t,o,r,d,l)=>F(r,a,t,o,d,l,e,s),e.useSetTableCallback=(e,s,t,o,r,d)=>F(o,n,s,t,r,d,e),e.useSetTablesCallback=(e,s,t,o,r)=>F(t,d,e,s,o,r),e.useSliceIds=H,e.useSliceIdsListener=(e,s,t,o)=>A("SliceIds",T(o),s,t,[e]),e.useSliceRowIds=J,e.useSliceRowIdsListener=(e,s,t,o,r)=>A("SliceRowIds",T(r),t,o,[e,s]),e.useSortedRowIds=U,e.useSortedRowIdsListener=(e,s,t,o,r,d,l,n,u)=>A(i,y(u),d,l,[e,s,t,o,r],n),e.useStore=e=>m(e,0),e.useTable=(e,s)=>D(n,y(s),{},[e]),e.useTableIds=E,e.useTableIdsListener=(e,s,t,o)=>A(l,y(o),e,s,[],t),e.useTableListener=(e,s,t,o,r)=>A(n,y(r),s,t,[e],o),e.useTables=e=>D(d,y(e),{}),e.useTablesListener=(e,s,t,o)=>A(d,y(o),e,s,[],t),e.useUndoInformation=e=>{const s=V(e),[t,r]=ee(s);return[(d=t,!(0==(e=>e.length)(d))),te(s),r,C(r,(e=>s?.getCheckpoint(e)))??o];var d},Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?s(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],s):s((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseUiReact={},e.React);
|
package/lib/umd/ui-react.js.gz
CHANGED
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tinybase",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.3",
|
|
4
4
|
"author": "jamesgpearce",
|
|
5
5
|
"repository": "github:tinyplex/tinybase",
|
|
6
6
|
"license": "MIT",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"@types/asciichart": "^1.5.6",
|
|
68
68
|
"@types/expect-puppeteer": "^5.0.1",
|
|
69
69
|
"@types/http-server": "^0.12.1",
|
|
70
|
-
"@types/jest": "^28.1.
|
|
70
|
+
"@types/jest": "^28.1.7",
|
|
71
71
|
"@types/jest-environment-puppeteer": "^5.0.2",
|
|
72
72
|
"@types/less": "^3.0.3",
|
|
73
73
|
"@types/puppeteer": "^5.4.6",
|
|
@@ -75,18 +75,18 @@
|
|
|
75
75
|
"@types/react-dom": "^17.0.14",
|
|
76
76
|
"@types/react-test-renderer": "^17.0.1",
|
|
77
77
|
"@types/tmp": "^0.2.3",
|
|
78
|
-
"@typescript-eslint/eslint-plugin": "^5.33.
|
|
79
|
-
"@typescript-eslint/parser": "^5.33.
|
|
78
|
+
"@typescript-eslint/eslint-plugin": "^5.33.1",
|
|
79
|
+
"@typescript-eslint/parser": "^5.33.1",
|
|
80
80
|
"asciichart": "^1.5.25",
|
|
81
81
|
"babel-eslint": "^10.1.0",
|
|
82
82
|
"babel-jest": "^28.1.3",
|
|
83
83
|
"babel-preset-minify": "^0.5.2",
|
|
84
84
|
"country-flag-emoji-json": "^2.0.0",
|
|
85
85
|
"cspell": "^6.6.1",
|
|
86
|
-
"esbuild": "^0.15.
|
|
87
|
-
"eslint": "^8.
|
|
86
|
+
"esbuild": "^0.15.3",
|
|
87
|
+
"eslint": "^8.22.0",
|
|
88
88
|
"eslint-config-prettier": "^8.5.0",
|
|
89
|
-
"eslint-plugin-jest": "^26.8.
|
|
89
|
+
"eslint-plugin-jest": "^26.8.3",
|
|
90
90
|
"eslint-plugin-jsdoc": "^39.3.6",
|
|
91
91
|
"eslint-plugin-react": "^7.30.1",
|
|
92
92
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
@@ -103,8 +103,8 @@
|
|
|
103
103
|
"react": "^17.0.2",
|
|
104
104
|
"react-dom": "^17.0.2",
|
|
105
105
|
"react-test-renderer": "^17.0.2",
|
|
106
|
-
"rollup": "^2.
|
|
107
|
-
"rollup-plugin-esbuild": "^4.9.
|
|
106
|
+
"rollup": "^2.78.0",
|
|
107
|
+
"rollup-plugin-esbuild": "^4.9.3",
|
|
108
108
|
"rollup-plugin-gzip": "^3.0.1",
|
|
109
109
|
"rollup-plugin-prettier": "^2.2.2",
|
|
110
110
|
"rollup-plugin-terser": "^7.0.2",
|
package/readme.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<section id="hero"><h2 id="a-javascript-library-for-structured-state">A JavaScript library for <em>structured state</em>.</h2><p>Using plain old JavaScript objects to manage data gets old very quickly. It's error-prone, tricky to track changes efficiently, and easy to mistakenly incur performance costs.</p><p><em>TinyBase is a smarter way to structure your application state:</em></p><ul><li>Familiar concepts of <a href="#set-and-get-tables-rows-and-cells">tables, rows, and cells</a>, and <a href="#apply-schemas-to-tables">schematization</a> to model your data domain.</li><li><a href="#register-listeners-at-any-granularity">Flexibly reactive</a> to reconciled updates, so you only spend cycles on the data that changes.</li><li><a href="#create-indexes-for-fast-lookups">Indexing</a>, <a href="#define-metrics-and-aggregations">metrics</a>, <a href="#configure-relationships-between-tables">relationships</a> - and even an <a href="#use-checkpoints-for-an-easy-undo-stack">undo stack</a> for your app state! - out of the box.</li><li>Easily <a href="#persist-data-to-browser-file-or-server">sync your data</a> to local or remote storage, and use <a href="#call-react-hooks-to-bind-to-data">idiomatic bindings</a> to your React UI.</li></ul><p><em>Tiny by name, tiny by nature</em>, TinyBase only costs <a href="#did-we-say-tiny">3.
|
|
1
|
+
<section id="hero"><h2 id="a-javascript-library-for-structured-state">A JavaScript library for <em>structured state</em>.</h2><p>Using plain old JavaScript objects to manage data gets old very quickly. It's error-prone, tricky to track changes efficiently, and easy to mistakenly incur performance costs.</p><p><em>TinyBase is a smarter way to structure your application state:</em></p><ul><li>Familiar concepts of <a href="#set-and-get-tables-rows-and-cells">tables, rows, and cells</a>, and <a href="#apply-schemas-to-tables">schematization</a> to model your data domain.</li><li><a href="#register-listeners-at-any-granularity">Flexibly reactive</a> to reconciled updates, so you only spend cycles on the data that changes.</li><li><a href="#create-indexes-for-fast-lookups">Indexing</a>, <a href="#define-metrics-and-aggregations">metrics</a>, <a href="#configure-relationships-between-tables">relationships</a> - and even an <a href="#use-checkpoints-for-an-easy-undo-stack">undo stack</a> for your app state! - out of the box.</li><li>Easily <a href="#persist-data-to-browser-file-or-server">sync your data</a> to local or remote storage, and use <a href="#call-react-hooks-to-bind-to-data">idiomatic bindings</a> to your React UI.</li></ul><p><em>Tiny by name, tiny by nature</em>, TinyBase only costs <a href="#did-we-say-tiny">3.4kB - 7.7kB</a> when compressed, and has zero dependencies. And of course it's <a href="#well-tested-and-documented">well tested</a>, <a href="https://tinybase.org/guides/the-basics/getting-started">fully documented</a>, and <a href="https://github.com/tinyplex/tinybase">open source</a>. Other <a href="https://tinybase.org/guides/faq/">FAQs</a>?</p></section><hr><p><a id="start" href="https://tinybase.org/guides/the-basics/getting-started">Get started</a></p><p><a href="https://tinybase.org/demos">Try the demos</a></p><p><a href="https://tinybase.org/api/store/interfaces/store/store/">Read the docs</a></p><hr><section><h2 id="set-and-get-tables-rows-and-cells">Set and get tables, rows, and cells.</h2><p>Creating a <a href="https://tinybase.org/api/store/interfaces/store/store"><code>Store</code></a> requires just a simple call to the <a href="https://tinybase.org/api/store/functions/creation/createstore"><code>createStore</code></a> function. Once you have one, you can easily set <a href="https://tinybase.org/api/store/type-aliases/store/table"><code>Table</code></a>, <a href="https://tinybase.org/api/store/type-aliases/store/row"><code>Row</code></a>, or <a href="https://tinybase.org/api/store/type-aliases/store/cell"><code>Cell</code></a> values by their <a href="https://tinybase.org/api/common/type-aliases/identity/id"><code>Id</code></a>. And of course you can easily get the values back out again.</p><p>Read more about setting and changing data in <a href="https://tinybase.org/guides/the-basics">The Basics</a> guide.</p></section>
|
|
2
2
|
|
|
3
3
|
```js
|
|
4
4
|
const store = createStore()
|
|
@@ -192,4 +192,4 @@ console.log(store.getCell('pets', 'felix', 'sold'));
|
|
|
192
192
|
// -> false
|
|
193
193
|
```
|
|
194
194
|
|
|
195
|
-
<section><h2 id="did-we-say-tiny">Did we say tiny?</h2><p>If you use the basic <a href="https://tinybase.org/api/store"><code>store</code></a> module alone, you'll only add a gzipped <em>3.
|
|
195
|
+
<section><h2 id="did-we-say-tiny">Did we say tiny?</h2><p>If you use the basic <a href="https://tinybase.org/api/store"><code>store</code></a> module alone, you'll only add a gzipped <em>3.4kB</em> to your app. You can incrementally add the other modules as you need more functionality, or get it all for <em>7.7kB</em>. The <code>ui-react</code> adaptor is just another <em>3.2kB</em>, and everything is fast.</p><p>Life's easy when you have zero dependencies.</p><p>Read more about how TinyBase is structured in the <a href="https://tinybase.org/guides/how-tinybase-is-built/architecture">Architecture</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th width="30%"> </th><th>.js.gz</th><th>.js</th><th>debug.js</th><th>.d.ts</th></tr><tr><th class="right"><a href="https://tinybase.org/api/store">store</a></th><td>3.4kB</td><td>7.6kB</td><td>32.6kB</td><td>127.2kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/indexes">indexes</a></th><td>1.7kB</td><td>3.5kB</td><td>15.2kB</td><td>32.9kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/metrics">metrics</a></th><td>1.7kB</td><td>3.4kB</td><td>13.9kB</td><td>29.2kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/relationships">relationships</a></th><td>1.7kB</td><td>3.5kB</td><td>15.8kB</td><td>42.2kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/checkpoints">checkpoints</a></th><td>1.4kB</td><td>2.6kB</td><td>10.8kB</td><td>33.0kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/persisters">persisters</a></th><td>0.8kB</td><td>1.6kB</td><td>5.0kB</td><td>26.8kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/common">common</a></th><td>0.1kB</td><td>0.1kB</td><td>0.2kB</td><td>3.5kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/tinybase">tinybase</a></th><td>7.7kB</td><td>18.2kB</td><td>79.6kB</td><td>0.3kB</td></tr></tbody></table></div><section><h2 id="well-tested-and-documented">Well tested and documented.</h2><p>TinyBase has <em>100.0%</em> test coverage, including the code throughout the documentation - even on this page! The guides, demos, and API examples are designed to make it as easy as possible to get up and running.</p><p>Read more about how TinyBase is tested in the Unit <a href="https://tinybase.org/guides/how-tinybase-is-built/testing">Testing</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th width="30%"> </th><th>Total</th><th>Tested</th><th>Coverage</th></tr><tr><th class="right">Lines</th><td>1,227</td><td>1,227</td><td>100.0%</td></tr><tr><th class="right">Statements</th><td>1,327</td><td>1,327</td><td>100.0%</td></tr><tr><th class="right">Functions</th><td>498</td><td>498</td><td>100.0%</td></tr><tr><th class="right">Branches</th><td>463</td><td>463</td><td>100.0%</td></tr><tr><th class="right">Tests</th><td colspan="3">2,124</td></tr><tr><th class="right">Assertions</th><td colspan="3">10,778</td></tr></tbody></table></div><hr><p><a id="start" href="https://tinybase.org/guides/the-basics/getting-started">Get started</a></p><p><a href="https://tinybase.org/demos">Try the demos</a></p><p><a href="https://tinybase.org/api/store/interfaces/store/store/">Read the docs</a></p><hr><section><h2 id="follow">Follow</h2><ul><li>News and updates on <a href="https://twitter.com/tinybasejs">Twitter</a> and <a href="https://facebook.com/tinybasejs">Facebook</a>.</li><li><a href="https://tinybase.org/guides/releases/">Release notes</a> for each minor version.</li><li>Packages on <a href="https://www.npmjs.com/package/tinybase/v/2.0.0-beta.3">NPM</a>.</li><li><a href="https://github.com/tinyplex/tinybase/issues">Issues</a> on <a href="https://github.com/tinyplex/tinybase">GitHub</a>.</li></ul></section><section><h2 id="about">About</h2><p>Building TinyBase was an interesting exercise in API design, minification, and documentation. It's not <a href="https://www.linkedin.com/in/jamespearce">my day job</a>, but I do intend to maintain it, so please provide feedback. I could not have done this without these great <a href="https://tinybase.org/guides/how-tinybase-is-built/credits/#giants">projects</a> and <a href="https://tinybase.org/guides/how-tinybase-is-built/credits/#and-friends">friends</a>, and I hope you enjoy using it!</p></section>
|