tinybase 2.2.0-beta.0 → 2.2.0-beta.1
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/bin/cli.js +1 -1
- package/lib/checkpoints.js +1 -1
- package/lib/checkpoints.js.gz +0 -0
- package/lib/debug/queries.js +4 -3
- package/lib/debug/store.js +5 -5
- package/lib/debug/tinybase.js +6 -6
- package/lib/debug/tools.d.ts +155 -5
- package/lib/debug/tools.js +488 -431
- package/lib/es6/checkpoints.js +1 -1
- package/lib/es6/checkpoints.js.gz +0 -0
- package/lib/es6/indexes.js +1 -1
- package/lib/es6/indexes.js.gz +0 -0
- package/lib/es6/metrics.js +1 -1
- package/lib/es6/metrics.js.gz +0 -0
- package/lib/es6/queries.js +1 -1
- package/lib/es6/queries.js.gz +0 -0
- package/lib/es6/relationships.js +1 -1
- package/lib/es6/relationships.js.gz +0 -0
- package/lib/es6/store.js +1 -1
- package/lib/es6/store.js.gz +0 -0
- package/lib/es6/tinybase.js +1 -1
- package/lib/es6/tinybase.js.gz +0 -0
- package/lib/es6/tools.d.ts +155 -5
- package/lib/es6/tools.js +1 -1
- package/lib/es6/tools.js.gz +0 -0
- package/lib/es6/ui-react.js +1 -1
- package/lib/es6/ui-react.js.gz +0 -0
- 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.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.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/tools.d.ts +155 -5
- package/lib/tools.js +1 -1
- package/lib/tools.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/tools.d.ts +155 -5
- package/lib/umd/tools.js +1 -1
- package/lib/umd/tools.js.gz +0 -0
- package/lib/umd-es6/checkpoints.js +1 -1
- package/lib/umd-es6/checkpoints.js.gz +0 -0
- package/lib/umd-es6/indexes.js +1 -1
- package/lib/umd-es6/indexes.js.gz +0 -0
- package/lib/umd-es6/metrics.js +1 -1
- package/lib/umd-es6/metrics.js.gz +0 -0
- package/lib/umd-es6/queries.js +1 -1
- package/lib/umd-es6/queries.js.gz +0 -0
- package/lib/umd-es6/relationships.js +1 -1
- package/lib/umd-es6/relationships.js.gz +0 -0
- package/lib/umd-es6/store.js +1 -1
- package/lib/umd-es6/store.js.gz +0 -0
- package/lib/umd-es6/tinybase.js +1 -1
- package/lib/umd-es6/tinybase.js.gz +0 -0
- package/lib/umd-es6/tools.d.ts +155 -5
- package/lib/umd-es6/tools.js +1 -1
- package/lib/umd-es6/tools.js.gz +0 -0
- package/lib/umd-es6/ui-react.js +1 -1
- package/lib/umd-es6/ui-react.js.gz +0 -0
- package/package.json +6 -5
- package/readme.md +21 -2
package/lib/umd-es6/tinybase.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e,t;e=this,t=function(e,t){"use strict";const n=e=>typeof e,r="",o=n(r),l=n(!0),s=n(0),i=n(n),a="type",d="default",c="utf8",u="Listener",v="Result",f="add",h="Table",g="RowIds",p="CellIds",y="Cell",w=e=>r+e,L=(e,t)=>e.includes(t),R=(e,t)=>e.every(t),I=(e,t)=>x(e)===x(t)&&R(e,((e,n)=>t[n]===e)),S=(e,t)=>R(e,((n,r)=>0==r||t(e[r-1],n)<=0)),T=(e,t)=>e.sort(t),b=(e,t)=>e.forEach(t),m=(e,t)=>e.map(t),C=e=>P(e,((e,t)=>e+t),0),x=e=>e.length,E=e=>0==x(e),P=(e,t,n)=>e.reduce(t,n),k=(e,t,n)=>e.slice(t,n),M=(e,...t)=>e.push(...t),A=e=>e.pop(),D=e=>e.shift(),O=e=>JSON.stringify(e,((e,t)=>z(t,Map)?P([...t],((e,[t,n])=>(e[t]=n,e)),{}):t)),F=JSON.parse,j=Math.max,J=Math.min,Q=isFinite,z=(e,t)=>e instanceof t,N=e=>null==e,W=(e,t,n)=>N(e)?null==n?void 0:n():t(e),B=e=>e==o||e==l,q=e=>n(e)==i,H=e=>Array.isArray(e),$=()=>{},G=e=>e.size,K=(e,t)=>{var n;return null!=(n=null==e?void 0:e.has(t))&&n},U=e=>N(e)||0==G(e),V=e=>{var t;return[...null!=(t=null==e?void 0:e.values())?t:[]]},X=e=>e.clear(),Y=(e,t)=>null==e?void 0:e.forEach(t),Z=(e,t)=>null==e?void 0:e.delete(t),_=e=>new Map(e),ee=e=>{var t;return[...null!=(t=null==e?void 0:e.keys())?t:[]]},te=(e,t)=>null==e?void 0:e.get(t),ne=(e,t)=>Y(e,((e,n)=>t(n,e))),re=(e,t,n)=>N(n)?(Z(e,t),e):null==e?void 0:e.set(t,n),oe=(e,t,n)=>(K(e,t)||re(e,t,n()),te(e,t)),le=(e,t,n)=>{const r={},o=null!=t?t:e=>e;return Y(e,((e,t)=>W(o(e),(e=>(null==n?void 0:n(e))?0:r[t]=e)))),r},se=(e,t)=>{const n=_(),r=null!=t?t:e=>e;return Y(e,((e,t)=>n.set(t,r(e)))),n},ie=e=>se(e,se),ae=(e,t,n,r,o=0)=>W((n?oe:te)(e,t[o],o>x(t)-2?n:_),(l=>{if(o>x(t)-2)return(null==r?void 0:r(l))&&re(e,t[o]),l;const s=ae(l,t,n,r,o+1);return U(l)&&re(e,t[o]),s})),de=e=>new Set(H(e)||N(e)?e:[e]),ce=(e,t)=>null==e?void 0:e.add(t),ue=(e,t,n)=>{const r=e.hasRow,o=_(),l=_(),s=_(),i=_(),a=_(),d=(t,n,...r)=>{const o=oe(a,t,de);return b(r,(t=>ce(o,t)&&n&&e.callListener(t))),r},c=(t,...n)=>W(te(a,t),(r=>{b(E(n)?V(r):n,(t=>{e.delListener(t),Z(r,t)})),U(r)&&re(a,t)})),u=(e,n)=>{re(o,e,n),K(l,e)||(re(l,e,t()),re(s,e,_()),re(i,e,_()))},v=e=>{re(o,e),re(l,e),re(s,e),re(i,e),c(e)};return[()=>e,()=>ee(o),e=>ne(l,e),e=>K(l,e),e=>te(o,e),e=>te(l,e),(e,t)=>re(l,e,t),u,(t,o,l,a,v)=>{u(t,o);const f=_(),h=_(),g=te(s,t),p=te(i,t),y=t=>{const l=n=>e.getCell(o,t,n),s=te(g,t),i=r(o,t)?n(a(l,t)):void 0;if(s===i||H(s)&&H(i)&&I(s,i)||re(f,t,[s,i]),!N(v)){const e=te(p,t),n=r(o,t)?v(l,t):void 0;e!=n&&re(h,t,n)}},w=e=>{l((()=>{Y(f,(([,e],t)=>re(g,t,e))),Y(h,((e,t)=>re(p,t,e)))}),f,h,g,p,e),X(f),X(h)};ne(g,y),e.hasTable(o)&&b(e.getRowIds(o),(e=>{K(g,e)||y(e)})),w(!0),c(t),d(t,0,e.addRowListener(o,null,((e,t,n)=>y(n))),e.addTableListener(o,(()=>w())))},v,()=>ne(a,v),d,c]},ve=(e,t)=>n(e)==o?t=>t(e):null!=e?e:()=>null!=t?t:r,fe=e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))},he=/^\d+$/,ge=()=>{const e=[];let t=0;return[()=>{var n;return null!=(n=D(e))?n:r+t++},t=>{he.test(t)&&x(e)<1e3&&M(e,t)}]},pe=e=>{let t;const[n,o]=ge(),l=_();return[(o,s,i)=>{null!=t||(t=e());const a=n();return re(l,a,[o,s,i]),ce(ae(s,null!=i?i:[r],de),a),a},(e,n,...o)=>b(((e,t=[r])=>{const n=[],o=(e,r)=>r==x(t)?M(n,e):null===t[r]?Y(e,(e=>o(e,r+1))):b([t[r],null],(t=>o(te(e,t),r+1)));return o(e,0),n})(e,n),(e=>Y(e,(e=>te(l,e)[0](t,...null!=n?n:[],...o))))),e=>W(te(l,e),(([,t,n])=>(ae(t,null!=n?n:[r],void 0,(t=>(Z(t,e),U(t)?1:0))),re(l,e),o(e),n))),(e,n,r)=>W(te(l,e),(([e,,o=[]])=>{const l=(...s)=>{const i=x(s);i==x(o)?e(t,...s,...r(s)):N(o[i])?b(n[i](...s),(e=>l(...s,e))):l(...s,o[i])};l()}))]},ye=Object,we=ye.keys,Le=ye.isFrozen,Re=ye.freeze,Ie=(e,t)=>!N(((e,t)=>W(e,(e=>e[t])))(e,t)),Se=(e,t)=>delete e[t],Te=(e,t)=>b(ye.entries(e),(([e,n])=>t(n,e))),be=e=>E(we(e)),me=e=>{const t=n(e);return B(t)||t==s&&Q(e)?t:void 0},Ce=(e,t,n,r,o)=>N(o)?e.delCell(t,n,r,!0):e.setCell(t,n,r,o),xe=fe((e=>{let t,n,o,l=100,s=_(),i=1;const a=_(),d=_(),[c,u,v]=pe((()=>j)),f=_(),h=_(),g=[],p=[],y=(t,n)=>{i=0,e.transaction((()=>Y(te(f,n),((n,r)=>Y(n,((n,o)=>Y(n,((n,l)=>Ce(e,r,o,l,n[t]))))))))),i=1},w=e=>{re(f,e),re(h,e),u(d,[e])},R=(e,t)=>b(((e,t)=>e.splice(0,t))(e,null!=t?t:x(e)),w),I=()=>R(g,x(g)-l),S=e.addCellListener(null,null,null,((e,n,r,l,a,d)=>{if(i){W(t,(()=>{M(g,t),I(),R(p),t=void 0,o=1}));const e=oe(s,n,_),i=oe(e,r,_),c=oe(i,l,(()=>[d,void 0]));c[1]=a,c[0]===a&&U(re(i,l))&&U(re(e,r))&&U(re(s,n))&&(t=A(g),o=1),P()}})),T=(e="")=>(N(t)&&(t=r+n++,re(f,t,s),O(t,e),s=_(),o=1),t),m=()=>{E(g)||(((e,...t)=>{e.unshift(...t)})(p,T()),y(0,t),t=A(g),o=1)},C=()=>{E(p)||(M(g,t),t=D(p),y(1,t),o=1)},P=()=>{o&&(u(a),o=0)},k=e=>{const t=T(e);return P(),t},O=(e,t)=>(F(e)&&te(h,e)!==t&&(re(h,e,t),u(d,[e])),j),F=e=>K(f,e),j={setSize:e=>(l=e,I(),j),addCheckpoint:k,setCheckpoint:O,getStore:()=>e,getCheckpointIds:()=>[[...g],t,[...p]],forEachCheckpoint:e=>ne(h,e),hasCheckpoint:F,getCheckpoint:e=>te(h,e),goBackward:()=>(m(),P(),j),goForward:()=>(C(),P(),j),goTo:e=>{const n=L(g,e)?m:L(p,e)?C:null;for(;!N(n)&&e!=t;)n();return P(),j},addCheckpointIdsListener:e=>c(e,a),addCheckpointListener:(e,t)=>c(t,d,[e]),delListener:e=>(v(e),j),clear:()=>(R(g),R(p),N(t)||w(t),t=void 0,n=0,k(),j),destroy:()=>{e.delListener(S)},getListenerStats:()=>({})};return Re(j.clear())})),Ee=(e,t)=>e<t?-1:1,Pe=fe((e=>{const t=_(),n=_(),[o,l,s,i,a,d,c,,u,v,f]=ue(e,_,(e=>N(e)?r:H(e)?m(e,w):w(e))),[h,g,p]=pe((()=>L)),y=(t,n,r)=>{const o=a(t);Y(r,((t,r)=>n(r,(n=>Y(t,(t=>n(t,(n=>e.forEachCell(o,t,n)))))))))},L={setIndexDefinition:(e,r,o,l,s,i=Ee)=>{const a=N(s)?void 0:([e],[t])=>s(e,t);return u(e,r,((r,o,s,u,v,f)=>{let h=0;const p=de(),y=de(),w=d(e);if(Y(o,(([e,t],n)=>{const r=de(e),o=de(t);Y(r,(e=>Z(o,e)?Z(r,e):0)),Y(r,(e=>{ce(p,e),W(te(w,e),(t=>{Z(t,n),U(t)&&(re(w,e),h=1)}))})),Y(o,(e=>{ce(p,e),K(w,e)||(re(w,e,de()),h=1),ce(te(w,e),n),N(l)||ce(y,e)}))})),r(),U(v)||(f?ne(w,(e=>ce(y,e))):ne(s,(e=>W(te(u,e),(e=>ce(y,e))))),Y(y,(e=>{const t=(t,n)=>i(te(v,t),te(v,n),e),n=[...te(w,e)];S(n,t)||(re(w,e,de(T(n,t))),ce(p,e))}))),(h||f)&&!N(a)){const t=[...w];S(t,a)||(c(e,_(T(t,a))),h=1)}h&&g(t,[e]),Y(p,(t=>g(n,[e,t])))}),ve(o),W(l,ve)),L},delIndexDefinition:e=>(v(e),L),getStore:o,getIndexIds:l,forEachIndex:e=>s(((t,n)=>e(t,(e=>y(t,e,n))))),forEachSlice:(e,t)=>y(e,t,d(e)),hasIndex:i,hasSlice:(e,t)=>K(d(e),t),getTableId:a,getSliceIds:e=>ee(d(e)),getSliceRowIds:(e,t)=>V(te(d(e),t)),addSliceIdsListener:(e,n)=>h(n,t,[e]),addSliceRowIdsListener:(e,t,r)=>h(r,n,[e,t]),delListener:e=>(p(e),L),destroy:f,getListenerStats:()=>({})};return Re(L)})),ke=_([["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,r)=>e+(t-n)/r]],["max",[e=>j(...e),(e,t)=>j(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:j(t,e)]],["min",[e=>J(...e),(e,t)=>J(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:J(t,e)]],["sum",[e=>C(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,n)=>e-n+t]]]),Me=(e,t,n,r,o,l=!1)=>{if(U(n))return;const[s,i,a,d]=o;return l||(l=N(e)),Y(r,(([n,r])=>{l||(e=N(n)?null==i?void 0:i(e,r,t++):N(r)?null==a?void 0:a(e,n,t--):null==d?void 0:d(e,r,n,t),l||(l=N(e)))})),l?s(V(n),G(n)):e},Ae=fe((e=>{const t=_(),[n,o,l,s,i,a,d,,c,u,v]=ue(e,$,(e=>isNaN(e)||N(e)||!0===e||!1===e||e===r?void 0:1*e)),[f,h,g]=pe((()=>p)),p={setMetricDefinition:(e,n,r,o,l,s,i)=>{var u;const v=q(r)?[r,l,s,i]:null!=(u=te(ke,r))?u:te(ke,"sum");return c(e,n,((n,r,o,l,s,i)=>{const c=a(e),u=G(l);i||(i=N(c)),n();let f=Me(c,u,l,r,v,i);Q(f)||(f=void 0),f!=c&&(d(e,f),h(t,[e],f,c))}),ve(o,1)),p},delMetricDefinition:e=>(u(e),p),getStore:n,getMetricIds:o,forEachMetric:l,hasMetric:s,getTableId:i,getMetric:a,addMetricListener:(e,n)=>f(n,t,[e]),delListener:e=>(g(e),p),destroy:v,getListenerStats:()=>({})};return Re(p)}));var De=(e,t,n)=>new Promise(((r,o)=>{var l=e=>{try{i(n.next(e))}catch(e){o(e)}},s=e=>{try{i(n.throw(e))}catch(e){o(e)}},i=e=>e.done?r(e.value):Promise.resolve(e.value).then(l,s);i((n=n.apply(e,t)).next())}));const Oe=(e,t,n,o,l)=>{let s,i=0;const a={load:n=>De(void 0,null,(function*(){if(2!=i){i=1;const o=yield t();N(o)||o==r?e.setTables(n):e.setJson(o),i=0}return a})),startAutoLoad:e=>De(void 0,null,(function*(){return a.stopAutoLoad(),yield a.load(e),o(a.load),a})),stopAutoLoad:()=>(l(),a),save:()=>De(void 0,null,(function*(){return 1!=i&&(i=2,yield n(e.getJson()),i=0),a})),startAutoSave:()=>De(void 0,null,(function*(){return yield a.stopAutoSave().save(),s=e.addTablesListener((()=>a.save())),a})),stopAutoSave:()=>(W(s,e.delListener),a),getStore:()=>e,destroy:()=>a.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return Re(a)};var Fe=(e,t,n)=>new Promise(((r,o)=>{var l=e=>{try{i(n.next(e))}catch(e){o(e)}},s=e=>{try{i(n.throw(e))}catch(e){o(e)}},i=e=>e.done?r(e.value):Promise.resolve(e.value).then(l,s);i((n=n.apply(e,t)).next())}));const je="storage",Je=globalThis.window,Qe=(e,t,n)=>{let r;return Oe(e,(()=>Fe(void 0,null,(function*(){return n.getItem(t)}))),(e=>Fe(void 0,null,(function*(){return n.setItem(t,e)}))),(e=>{r=r=>{r.storageArea===n&&r.key===t&&e()},Je.addEventListener(je,r)}),(()=>{Je.removeEventListener(je,r),r=void 0}))};var ze=(e,t,n)=>new Promise(((r,o)=>{var l=e=>{try{i(n.next(e))}catch(e){o(e)}},s=e=>{try{i(n.throw(e))}catch(e){o(e)}},i=e=>e.done?r(e.value):Promise.resolve(e.value).then(l,s);i((n=n.apply(e,t)).next())})),Ne=(e,t,n)=>new Promise(((r,o)=>{var l=e=>{try{i(n.next(e))}catch(e){o(e)}},s=e=>{try{i(n.throw(e))}catch(e){o(e)}},i=e=>e.done?r(e.value):Promise.resolve(e.value).then(l,s);i((n=n.apply(e,t)).next())}));const We=e=>e.headers.get("ETag");var Be=Object.getOwnPropertySymbols,qe=Object.prototype.hasOwnProperty,He=Object.prototype.propertyIsEnumerable;const $e=fe((e=>{const t=e.createStore,[n,o,l,s,i,,,a,,d,c,w,L]=ue(e,(()=>!0),$),I=t(),S=t(),T=_(),m=(e,t,...n)=>b(n,(n=>ce(oe(oe(T,t,_),e,de),n))),C=e=>{W(te(T,e),(e=>{ne(e,((e,t)=>Y(t,(t=>e.delListener(t))))),X(e)})),b([S,I],(t=>t.delTable(e)))},P=(e,t,n)=>m(t,e,t.addWillFinishTransactionListener(n.startTransaction),t.addDidFinishTransactionListener((()=>n.finishTransaction()))),A={setQueryDefinition:(t,n,o)=>{a(t,n),C(t);const l=[],s=[[null,[n,null,null,[],_()]]],i=[],d=[],c=[];o({select:(e,t)=>{const n=q(e)?[x(l)+r,e]:[N(t)?e:t,n=>n(e,t)];return M(l,n),{as:e=>n[0]=e}},join:(e,t,n)=>{const r=N(n)||q(t)?null:t,o=N(r)?t:n,l=[e,[e,r,q(o)?o:e=>e(o),[],_()]];return M(s,l),{as:e=>l[0]=e}},where:(e,t,n)=>M(i,q(e)?e:N(n)?n=>n(e)===t:r=>r(e,t)===n),group:(e,t,n,r,o)=>{var l;const s=[e,[e,q(t)?[t,n,r,o]:null!=(l=te(ke,t))?l:[(e,t)=>t]]];return M(d,s),{as:e=>s[0]=e}},having:(e,t)=>M(c,q(e)?e:n=>n(e)===t)});const u=_(l);if(U(u))return A;const v=_(s);ne(v,((e,[,t])=>W(te(v,t),(({3:t})=>N(e)?0:M(t,e)))));const f=_(d);let h=I;if(U(f)&&E(c))h=S;else{P(t,h,S);const e=_();ne(f,((t,[n,r])=>ce(oe(e,n,de),[t,r])));const n=de();ne(u,(t=>K(e,t)?0:ce(n,t)));const r=_(),o=(n,r,o,l)=>W(n,(([s,i,a,d])=>{ne(r,((t,[n])=>{const r=oe(s,t,_),i=te(r,o),a=l?void 0:n;if(i!==a){const n=de([[i,a]]),l=G(r);re(r,o,a),Y(te(e,t),(([e,t])=>{const o=Me(d[e],l,r,n,t);d[e]=N(me(o))?null:o}))}})),U(i)||!R(c,(e=>e((e=>d[e]))))?S.delRow(t,a):N(a)?n[2]=S.addRow(t,d):S.setRow(t,a,d)}));m(h,t,h.addRowListener(t,null,((l,s,i,a)=>{const d=[],c=[],u=_(),v=h.hasRow(t,i);let f=!v;Y(n,(e=>{const[n,r,o]=a(t,i,e);M(d,r),M(c,o),f||(f=n)})),ne(e,(e=>{const[n,,r]=a(t,i,e);(f||n)&&re(u,e,[r])})),f&&o(ae(r,d,void 0,(([,e])=>(Z(e,i),U(e)))),u,i,1),v&&o(ae(r,c,(()=>{const e={};return Y(n,(n=>e[n]=h.getCell(t,i,n))),[_(),de(),void 0,e]}),(([,e])=>{ce(e,i)})),u,i)})))}P(t,e,h);const g=(r,o,l,s)=>{const a=t=>e.getCell(o,l,t);b(s,(n=>{var o;const[l,,s,i,d]=te(v,n),c=null==s?void 0:s(a,r),[u,f]=null!=(o=te(d,r))?o:[];c!=u&&(N(f)||L(t,f),re(d,r,N(c)?null:[c,...w(t,1,e.addRowListener(l,c,(()=>g(r,l,c,i))))]))})),(r=>{const o=(t,o)=>{var l,s,i;return e.getCell(...N(o)?[n,r,t]:t===n?[n,r,o]:[null==(l=te(v,t))?void 0:l[0],null==(i=te(null==(s=te(v,t))?void 0:s[4],r))?void 0:i[0],o])};h.transaction((()=>R(i,(e=>e(o)))?ne(u,((e,n)=>Ce(h,t,r,e,n(o,r)))):h.delRow(t,r)))})(r)},{3:p}=te(v,null);return h.transaction((()=>w(t,1,e.addRowListener(n,null,((r,o,l)=>{e.hasRow(n,l)?g(l,n,l,p):(h.delRow(t,l),Y(v,(({4:e})=>W(te(e,l),(([,n])=>{L(t,n),re(e,l)})))))}))))),A},delQueryDefinition:e=>(C(e),d(e),A),getStore:n,getQueryIds:o,forEachQuery:l,hasQuery:s,getTableId:i,delListener:e=>(S.delListener(e),A),destroy:c,getListenerStats:()=>((e,t)=>{var n={};for(var r in e)qe.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&Be)for(var r of Be(e))t.indexOf(r)<0&&He.call(e,r)&&(n[r]=e[r]);return n})(S.getListenerStats(),["tables","tableIds","transaction"])};return Te({[h]:[1,1],[g]:[0,1],SortedRowIds:[0,5],Row:[1,2],[p]:[0,2],[y]:[1,3]},(([e,t],n)=>{b(e?["get","has","forEach"]:["get"],(e=>A[e+v+n]=(...t)=>S[e+n](...t))),A[f+v+n+u]=(...e)=>S[f+n+u](...k(e,0,t),((n,...r)=>e[t](A,...r)))})),Re(A)})),Ge=fe((e=>{const t=_(),n=_(),o=_(),l=_(),[s,i,a,d,c,u,,,v,f,h]=ue(e,(()=>[_(),_(),_(),_()]),(e=>N(e)?void 0:e+r)),[g,p,y]=pe((()=>I)),w=(e,t,n)=>W(u(e),(([r,,o])=>{if(!K(o,t)){const l=de();if(c(e)!=R(e))ce(l,t);else{let e=t;for(;!N(e)&&!K(l,e);)ce(l,e),e=te(r,e)}if(n)return l;re(o,t,l)}return te(o,t)})),L=(e,t)=>W(u(e),(([,,e])=>re(e,t))),R=e=>te(t,e),I={setRelationshipDefinition:(e,r,s,i)=>(re(t,e,s),v(e,r,((t,r)=>{const s=de(),i=de(),a=de(),[d,c]=u(e);Y(r,(([t,n],r)=>{N(t)||(ce(i,t),W(te(c,t),(e=>{Z(e,r),U(e)&&re(c,t)}))),N(n)||(ce(i,n),K(c,n)||re(c,n,de()),ce(te(c,n),r)),ce(s,r),re(d,r,n),ne(te(l,e),(t=>{K(w(e,t),r)&&ce(a,t)}))})),t(),Y(s,(t=>p(n,[e,t]))),Y(i,(t=>p(o,[e,t]))),Y(a,(t=>{L(e,t),p(l,[e,t])}))}),ve(i)),I),delRelationshipDefinition:e=>(re(t,e),f(e),I),getStore:s,getRelationshipIds:i,forEachRelationship:t=>a((n=>t(n,(t=>e.forEachRow(c(n),t))))),hasRelationship:d,getLocalTableId:c,getRemoteTableId:R,getRemoteRowId:(e,t)=>{var n;return te(null==(n=u(e))?void 0:n[0],t)},getLocalRowIds:(e,t)=>{var n;return V(te(null==(n=u(e))?void 0:n[1],t))},getLinkedRowIds:(e,t)=>N(u(e))?[t]:V(w(e,t,!0)),addRemoteRowIdListener:(e,t,r)=>g(r,n,[e,t]),addLocalRowIdsListener:(e,t,n)=>g(n,o,[e,t]),addLinkedRowIdsListener:(e,t,n)=>(w(e,t),g(n,l,[e,t])),delListener:e=>(L(...y(e)),I),destroy:h,getListenerStats:()=>({})};return Re(I)})),Ke=e=>[e,e],Ue=()=>[_(),_()],Ve=(e,t,n,r=re)=>{const o=(l=ee(e),s=e=>!Ie(t,e),l.filter(s));var l,s;return b(we(t),(r=>n(e,r,t[r]))),b(o,(t=>r(e,t))),e},Xe=(e,t,n)=>N(e)||!(e=>z(e,ye)&&e.constructor==ye)(e)||be(e)||Le(e)?(null==n||n(),!1):(Te(e,((n,r)=>{t(n,r)||Se(e,r)})),!be(e)),Ye=(e,t,n)=>re(e,t,te(e,t)==-n?void 0:n),Ze=()=>{let e,t,n=0;const r=_(),o=_(),l=_(),i=_(),c=_(),v=_(),R=_(),S=_(),C=_(),x=Ue(),E=Ue(),P=Ue(),A=Ue(),D=Ue(),j=Ue(),J=Ue(),Q=Ue(),z=Ue(),H=Ue(),[$,G,V,ae]=pe((()=>dt)),ue=(t,n)=>(!e||K(v,n)||Ne(n))&&Xe(t,((e,t)=>ve(n,t,e)),(()=>Ne(n))),ve=(e,t,n,r)=>Xe(r?n:he(n,e,t),((r,o)=>W(fe(e,t,o,r),(e=>(n[o]=e,!0)),(()=>!1))),(()=>Ne(e,t))),fe=(t,n,r,o)=>e?W(te(te(v,t),r),(e=>me(o)!=e.type?Ne(t,n,r,o,e.default):o),(()=>Ne(t,n,r,o))):N(me(o))?Ne(t,n,r,o):o,he=(e,t,n)=>(W(te(R,t),(([r,o])=>{Y(r,((t,n)=>{Ie(e,n)||(e[n]=t)})),Y(o,(r=>{Ie(e,r)||Ne(t,n,r)}))})),e),ye=e=>Ve(v,e,((e,t,n)=>{const r=_(),o=de();Ve(oe(v,t,_),n,((e,t,n)=>{re(e,t,n),W(n.default,(e=>re(r,t,e)),(()=>ce(o,t)))})),re(R,t,[r,o])}),((e,t)=>{re(v,t),re(R,t)})),we=e=>Ve(C,e,((e,t,n)=>Le(t,n)),((e,t)=>De(t))),Le=(e,t)=>Ve(oe(C,e,(()=>(je(e,1),_()))),t,((t,n,r)=>xe(e,t,n,r)),((t,n)=>Oe(e,t,n))),xe=(e,t,n,r,o)=>Ve(oe(t,n,(()=>(Je(e,n,1),_()))),r,((t,r,o)=>Pe(e,n,t,r,o)),((r,l)=>Fe(e,t,n,r,l,o))),Pe=(e,t,n,r,o)=>{K(n,r)||Qe(e,t,r,1);const l=te(n,r);o!==l&&(ze(e,t,r,l,o),re(n,r,o))},ke=(e,t,n,r,o)=>W(te(t,n),(t=>Pe(e,n,t,r,o)),(()=>xe(e,t,n,he({[r]:o},e,n)))),Me=e=>{const[t]=oe(S,e,ge),n=t();return K(te(C,e),n)?Me(e):n},Ae=e=>{var t;return null!=(t=te(C,e))?t:Le(e,{})},De=e=>Le(e,{}),Oe=(e,t,n)=>{const[,r]=oe(S,e,ge);r(n),xe(e,t,n,{},!0)},Fe=(e,t,n,r,o,l)=>{var s;const i=te(null==(s=te(R,e))?void 0:s[0],o);if(!N(i)&&!l)return Pe(e,n,r,o,i);const a=t=>{ze(e,n,t,te(r,t)),Qe(e,n,t,-1),re(r,t)};N(i)?a(o):ne(r,a),U(r)&&(Je(e,n,-1),U(re(t,n))&&(je(e,-1),re(C,e),re(S,e)))},je=(e,t)=>Ye(r,e,t),Je=(e,t,n)=>Ye(oe(o,e,_),t,n),Qe=(e,t,n,r)=>Ye(oe(oe(l,e,_),t,_),n,r),ze=(e,t,n,r,o)=>oe(oe(oe(i,e,_),t,_),n,(()=>[r,0]))[1]=o,Ne=(e,t,n,r,o)=>(M(oe(oe(oe(c,e,_),t,_),n,(()=>[])),r),o),We=(e,t,n)=>W(te(te(te(i,e),t),n),(([e,t])=>[!0,e,t]),(()=>[!1,...Ke(rt(e,t,n))])),Be=e=>U(c)||U(z[e])?0:Y(e?se(c,ie):c,((t,n)=>Y(t,((t,r)=>Y(t,((t,o)=>G(z[e],[n,r,o],t))))))),qe=(e,t,n)=>{if(!U(t))return G(e,n),1},He=e=>{const t=U(D[e]),n=U(J[e])&&U(A[e])&&t&&U(E[e]),s=U(Q[e])&&U(j[e])&&U(P[e])&&U(x[e]);if(!n||!s){const a=e?[se(r),ie(o),se(l,ie),se(i,ie)]:[r,o,l,i];if(!n){Y(a[2],((t,n)=>Y(t,((t,r)=>qe(J[e],t,[n,r])))));const n=de();Y(a[1],((r,o)=>{qe(A[e],r,[o])&&!t&&(G(D[e],[o,null]),ce(n,o))})),t||Y(a[3],((t,r)=>{if(!K(n,r)){const n=de();Y(t,(e=>Y(e,(([t,r],o)=>r!==t?ce(n,o):Z(e,o))))),Y(n,(t=>G(D[e],[r,t])))}})),qe(E[e],a[0])}if(!s){let t;Y(a[3],((n,r)=>{let o;Y(n,((n,l)=>{let s;Y(n,(([n,i],a)=>{i!==n&&(G(Q[e],[r,l,a],i,n,We),t=o=s=1)})),s&&G(j[e],[r,l],We)})),o&&G(P[e],[r],We)})),t&&G(x[e],void 0,We)}}},$e=(e,...t)=>(st((()=>e(...m(t,w)))),dt),Ge=()=>le(C,(e=>le(e,le))),_e=()=>ee(C),et=e=>ee(te(C,w(e))),tt=(e,t,n,r=0,o)=>{return m(k(T((l=te(C,w(e)),s=(e,n)=>[N(t)?n:te(e,w(t)),n],m([...null!=(i=null==l?void 0:l.entries())?i:[]],(([e,t])=>s(t,e)))),(([e],[t])=>Ee(e,t)*(n?-1:1))),r,N(o)?o:r+o),(([,e])=>e));var l,s,i},nt=(e,t)=>ee(te(te(C,w(e)),w(t))),rt=(e,t,n)=>te(te(te(C,w(e)),w(t)),w(n)),ot=e=>$e((()=>(e=>Xe(e,ue,Ne))(e)?we(e):0)),lt=()=>$e((()=>we({}))),st=(e,t)=>{if(-1==n)return;it();const r=e();return at(t),r},it=()=>(n++,dt),at=e=>(n>0&&(n--,0==n&&(t=!U(i),n=1,Be(1),t&&He(1),n=-1,(null==e?void 0:e(le(i,(e=>le(e,(e=>le(e,(e=>[...e]),(([e,t])=>e===t))),be)),be),le(c,(e=>le(e,le)))))&&(n=1,Y(i,((e,t)=>Y(e,((e,n)=>Y(e,(([e],r)=>Ce(dt,t,n,r,e))))))),n=-1,t=!1),G(H[0],void 0,t),Be(0),t&&He(0),G(H[1],void 0,t),n=0,b([i,c,r,o,l],X))),dt),dt={getTables:Ge,getTableIds:_e,getTable:e=>le(te(C,w(e)),le),getRowIds:et,getSortedRowIds:tt,getRow:(e,t)=>le(te(te(C,w(e)),w(t))),getCellIds:nt,getCell:rt,hasTables:()=>!U(C),hasTable:e=>K(C,w(e)),hasRow:(e,t)=>K(te(C,w(e)),w(t)),hasCell:(e,t,n)=>K(te(te(C,w(e)),w(t)),w(n)),getJson:()=>O(C),getSchemaJson:()=>O(v),setTables:ot,setTable:(e,t)=>$e((e=>ue(t,e)?Le(e,t):0),e),setRow:(e,t,n)=>$e(((e,t)=>ve(w(e),w(t),n)?xe(w(e),Ae(w(e)),w(t),n):0),e,t),addRow:(e,t)=>st((()=>{let n;return ve(e,n,t)&&(e=w(e),xe(e,Ae(e),n=Me(e),t)),n})),setPartialRow:(e,t,n)=>$e(((e,t)=>{if(ve(e,t,n,1)){const r=Ae(e);Te(n,((n,o)=>ke(e,r,t,o,n)))}}),e,t),setCell:(e,t,n,r)=>$e(((e,t,n)=>W(fe(e,t,n,q(r)?r(rt(e,t,n)):r),(r=>ke(e,Ae(e),t,n,r)))),e,t,n),setJson:e=>{try{"{}"===e?lt():ot(F(e))}catch(e){}return dt},setSchema:t=>$e((()=>{if((e=(e=>Xe(e,(e=>Xe(e,(e=>{if(!Xe(e,((e,t)=>L([a,d],t))))return!1;const t=e.type;return!(!B(t)&&t!=s||(me(e.default)!=t&&Se(e,d),0))})))))(t))&&(ye(t),!U(C))){const e=Ge();lt(),ot(e)}})),delTables:lt,delTable:e=>$e((e=>K(C,e)?De(e):0),e),delRow:(e,t)=>$e(((e,t)=>W(te(C,e),(n=>K(n,t)?Oe(e,n,t):0))),e,t),delCell:(e,t,n,r)=>$e(((e,t,n)=>W(te(C,e),(o=>W(te(o,t),(l=>K(l,n)?Fe(e,o,t,l,n,r):0))))),e,t,n),delSchema:()=>$e((()=>{ye({}),e=!1})),transaction:st,startTransaction:it,finishTransaction:at,forEachTable:e=>Y(C,((t,n)=>e(n,(e=>Y(t,((t,n)=>e(n,(e=>ne(t,e))))))))),forEachRow:(e,t)=>Y(te(C,w(e)),((e,n)=>t(n,(t=>ne(e,t))))),forEachCell:(e,t,n)=>ne(te(te(C,w(e)),w(t)),n),addSortedRowIdsListener:(e,t,n,r,o,l,s)=>{let i=tt(e,t,n,r,o);return $((()=>{const s=tt(e,t,n,r,o);I(s,i)||(i=s,l(dt,e,t,n,r,o,i))}),D[s?1:0],[e,t])},addWillFinishTransactionListener:e=>$(e,H[0]),addDidFinishTransactionListener:e=>$(e,H[1]),callListener:e=>(ae(e,[_e,et,nt],(e=>N(e[2])?[]:Ke(rt(...e)))),dt),delListener:e=>(V(e),dt),getListenerStats:()=>({}),createStore:Ze};return Te({Tables:[0,x],TableIds:[0,E],[h]:[1,P],[g]:[1,A],Row:[2,j],[p]:[2,J],[y]:[3,Q],InvalidCell:[3,z]},(([e,t],n)=>{dt[f+n+u]=(...n)=>$(n[e],t[n[e+1]?1:0],e>0?k(n,0,e):void 0)})),Re(dt)};e.createCheckpoints=xe,e.createCustomPersister=Oe,e.createFilePersister=(e,n)=>{let r;return Oe(e,(()=>ze(void 0,null,(function*(){try{return yield t.promises.readFile(n,c)}catch(e){}}))),(e=>ze(void 0,null,(function*(){try{yield t.promises.writeFile(n,e,c)}catch(e){}}))),(e=>{r=t.watch(n,e)}),(()=>{null==r||r.close(),r=void 0}))},e.createIndexes=Pe,e.createLocalPersister=(e,t)=>Qe(e,t,localStorage),e.createMetrics=Ae,e.createQueries=$e,e.createRelationships=Ge,e.createRemotePersister=(e,t,n,r)=>{let o,l;return Oe(e,(()=>Ne(void 0,null,(function*(){const e=yield fetch(t);return l=We(e),e.text()}))),(e=>Ne(void 0,null,(function*(){return yield fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:e})}))),(e=>{o=setInterval((()=>Ne(void 0,null,(function*(){const n=yield fetch(t,{method:"HEAD"}),r=We(n);N(l)||N(r)||r==l||(l=r,e())}))),1e3*r)}),(()=>{W(o,clearInterval),o=void 0}))},e.createSessionPersister=(e,t)=>Qe(e,t,sessionStorage),e.createStore=Ze,e.defaultSorter=Ee},"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 n=e=>typeof e,r="",o=n(r),l=n(!0),s=n(0),i=n(n),a="default",d="utf8",c="Listener",u="Result",v="add",f="Table",h="RowIds",g="CellIds",p="Cell",y=e=>r+e,w=(e,t)=>e.includes(t),L=(e,t)=>e.every(t),R=(e,t)=>C(e)===C(t)&&L(e,((e,n)=>t[n]===e)),I=(e,t)=>L(e,((n,r)=>0==r||t(e[r-1],n)<=0)),S=(e,t)=>e.sort(t),T=(e,t)=>e.forEach(t),b=(e,t)=>e.map(t),m=e=>E(e,((e,t)=>e+t),0),C=e=>e.length,x=e=>0==C(e),E=(e,t,n)=>e.reduce(t,n),P=(e,t,n)=>e.slice(t,n),k=(e,...t)=>e.push(...t),M=e=>e.pop(),A=e=>e.shift(),D=e=>JSON.stringify(e,((e,t)=>Q(t,Map)?E([...t],((e,[t,n])=>(e[t]=n,e)),{}):t)),O=JSON.parse,F=Math.max,j=Math.min,J=isFinite,Q=(e,t)=>e instanceof t,z=e=>null==e,N=(e,t,n)=>z(e)?null==n?void 0:n():t(e),W=e=>e==o||e==l,B=e=>n(e)==i,q=e=>Array.isArray(e),H=()=>{},$=e=>e.size,G=(e,t)=>{var n;return null!=(n=null==e?void 0:e.has(t))&&n},K=e=>z(e)||0==$(e),U=e=>{var t;return[...null!=(t=null==e?void 0:e.values())?t:[]]},V=e=>e.clear(),X=(e,t)=>null==e?void 0:e.forEach(t),Y=(e,t)=>null==e?void 0:e.delete(t),Z=e=>new Map(e),_=e=>{var t;return[...null!=(t=null==e?void 0:e.keys())?t:[]]},ee=(e,t)=>null==e?void 0:e.get(t),te=(e,t)=>X(e,((e,n)=>t(n,e))),ne=(e,t,n)=>z(n)?(Y(e,t),e):null==e?void 0:e.set(t,n),re=(e,t,n)=>(G(e,t)||ne(e,t,n()),ee(e,t)),oe=(e,t,n)=>{const r={},o=null!=t?t:e=>e;return X(e,((e,t)=>N(o(e),(e=>(null==n?void 0:n(e))?0:r[t]=e)))),r},le=(e,t)=>{const n=Z(),r=null!=t?t:e=>e;return X(e,((e,t)=>n.set(t,r(e)))),n},se=e=>le(e,le),ie=(e,t,n,r,o=0)=>N((n?re:ee)(e,t[o],o>C(t)-2?n:Z),(l=>{if(o>C(t)-2)return(null==r?void 0:r(l))&&ne(e,t[o]),l;const s=ie(l,t,n,r,o+1);return K(l)&&ne(e,t[o]),s})),ae=e=>new Set(q(e)||z(e)?e:[e]),de=(e,t)=>null==e?void 0:e.add(t),ce=(e,t,n)=>{const r=e.hasRow,o=Z(),l=Z(),s=Z(),i=Z(),a=Z(),d=(t,n,...r)=>{const o=re(a,t,ae);return T(r,(t=>de(o,t)&&n&&e.callListener(t))),r},c=(t,...n)=>N(ee(a,t),(r=>{T(x(n)?U(r):n,(t=>{e.delListener(t),Y(r,t)})),K(r)&&ne(a,t)})),u=(e,n)=>{ne(o,e,n),G(l,e)||(ne(l,e,t()),ne(s,e,Z()),ne(i,e,Z()))},v=e=>{ne(o,e),ne(l,e),ne(s,e),ne(i,e),c(e)};return[()=>e,()=>_(o),e=>te(l,e),e=>G(l,e),e=>ee(o,e),e=>ee(l,e),(e,t)=>ne(l,e,t),u,(t,o,l,a,v)=>{u(t,o);const f=Z(),h=Z(),g=ee(s,t),p=ee(i,t),y=t=>{const l=n=>e.getCell(o,t,n),s=ee(g,t),i=r(o,t)?n(a(l,t)):void 0;if(s===i||q(s)&&q(i)&&R(s,i)||ne(f,t,[s,i]),!z(v)){const e=ee(p,t),n=r(o,t)?v(l,t):void 0;e!=n&&ne(h,t,n)}},w=e=>{l((()=>{X(f,(([,e],t)=>ne(g,t,e))),X(h,((e,t)=>ne(p,t,e)))}),f,h,g,p,e),V(f),V(h)};te(g,y),e.hasTable(o)&&T(e.getRowIds(o),(e=>{G(g,e)||y(e)})),w(!0),c(t),d(t,0,e.addRowListener(o,null,((e,t,n)=>y(n))),e.addTableListener(o,(()=>w())))},v,()=>te(a,v),d,c]},ue=(e,t)=>n(e)==o?t=>t(e):null!=e?e:()=>null!=t?t:r,ve=e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))},fe=/^\d+$/,he=()=>{const e=[];let t=0;return[()=>{var n;return null!=(n=A(e))?n:r+t++},t=>{fe.test(t)&&C(e)<1e3&&k(e,t)}]},ge=e=>{let t;const[n,o]=he(),l=Z();return[(o,s,i)=>{null!=t||(t=e());const a=n();return ne(l,a,[o,s,i]),de(ie(s,null!=i?i:[r],ae),a),a},(e,n,...o)=>T(((e,t=[r])=>{const n=[],o=(e,r)=>r==C(t)?k(n,e):null===t[r]?X(e,(e=>o(e,r+1))):T([t[r],null],(t=>o(ee(e,t),r+1)));return o(e,0),n})(e,n),(e=>X(e,(e=>ee(l,e)[0](t,...null!=n?n:[],...o))))),e=>N(ee(l,e),(([,t,n])=>(ie(t,null!=n?n:[r],void 0,(t=>(Y(t,e),K(t)?1:0))),ne(l,e),o(e),n))),(e,n,r)=>N(ee(l,e),(([e,,o=[]])=>{const l=(...s)=>{const i=C(s);i==C(o)?e(t,...s,...r(s)):z(o[i])?T(n[i](...s),(e=>l(...s,e))):l(...s,o[i])};l()}))]},pe=Object,ye=pe.keys,we=pe.isFrozen,Le=pe.freeze,Re=(e,t)=>!z(((e,t)=>N(e,(e=>e[t])))(e,t)),Ie=(e,t)=>delete e[t],Se=(e,t)=>b(pe.entries(e),(([e,n])=>t(n,e))),Te=e=>x(ye(e)),be=e=>{const t=n(e);return W(t)||t==s&&J(e)?t:void 0},me=(e,t,n,r,o)=>z(o)?e.delCell(t,n,r,!0):e.setCell(t,n,r,o),Ce=ve((e=>{let t,n,o,l=100,s=Z(),i=1;const a=Z(),d=Z(),[c,u,v]=ge((()=>j)),f=Z(),h=Z(),g=[],p=[],y=(t,n)=>{i=0,e.transaction((()=>X(ee(f,n),((n,r)=>X(n,((n,o)=>X(n,((n,l)=>me(e,r,o,l,n[t]))))))))),i=1},L=e=>{ne(f,e),ne(h,e),u(d,[e])},R=(e,t)=>T(((e,t)=>e.splice(0,t))(e,null!=t?t:C(e)),L),I=()=>R(g,C(g)-l),S=e.addCellListener(null,null,null,((e,n,r,l,a,d)=>{if(i){N(t,(()=>{k(g,t),I(),R(p),t=void 0,o=1}));const e=re(s,n,Z),i=re(e,r,Z),c=re(i,l,(()=>[d,void 0]));c[1]=a,c[0]===a&&K(ne(i,l))&&K(ne(e,r))&&K(ne(s,n))&&(t=M(g),o=1),P()}})),b=(e="")=>(z(t)&&(t=r+n++,ne(f,t,s),O(t,e),s=Z(),o=1),t),m=()=>{x(g)||(((e,...t)=>{e.unshift(...t)})(p,b()),y(0,t),t=M(g),o=1)},E=()=>{x(p)||(k(g,t),t=A(p),y(1,t),o=1)},P=()=>{o&&(u(a),o=0)},D=e=>{const t=b(e);return P(),t},O=(e,t)=>(F(e)&&ee(h,e)!==t&&(ne(h,e,t),u(d,[e])),j),F=e=>G(f,e),j={setSize:e=>(l=e,I(),j),addCheckpoint:D,setCheckpoint:O,getStore:()=>e,getCheckpointIds:()=>[[...g],t,[...p]],forEachCheckpoint:e=>te(h,e),hasCheckpoint:F,getCheckpoint:e=>ee(h,e),goBackward:()=>(m(),P(),j),goForward:()=>(E(),P(),j),goTo:e=>{const n=w(g,e)?m:w(p,e)?E:null;for(;!z(n)&&e!=t;)n();return P(),j},addCheckpointIdsListener:e=>c(e,a),addCheckpointListener:(e,t)=>c(t,d,[e]),delListener:e=>(v(e),j),clear:()=>(R(g),R(p),z(t)||L(t),t=void 0,n=0,D(),j),destroy:()=>{e.delListener(S)},getListenerStats:()=>({})};return Le(j.clear())})),xe=(e,t)=>e<t?-1:1,Ee=ve((e=>{const t=Z(),n=Z(),[o,l,s,i,a,d,c,,u,v,f]=ce(e,Z,(e=>z(e)?r:q(e)?b(e,y):y(e))),[h,g,p]=ge((()=>L)),w=(t,n,r)=>{const o=a(t);X(r,((t,r)=>n(r,(n=>X(t,(t=>n(t,(n=>e.forEachCell(o,t,n)))))))))},L={setIndexDefinition:(e,r,o,l,s,i=xe)=>{const a=z(s)?void 0:([e],[t])=>s(e,t);return u(e,r,((r,o,s,u,v,f)=>{let h=0;const p=ae(),y=ae(),w=d(e);if(X(o,(([e,t],n)=>{const r=ae(e),o=ae(t);X(r,(e=>Y(o,e)?Y(r,e):0)),X(r,(e=>{de(p,e),N(ee(w,e),(t=>{Y(t,n),K(t)&&(ne(w,e),h=1)}))})),X(o,(e=>{de(p,e),G(w,e)||(ne(w,e,ae()),h=1),de(ee(w,e),n),z(l)||de(y,e)}))})),r(),K(v)||(f?te(w,(e=>de(y,e))):te(s,(e=>N(ee(u,e),(e=>de(y,e))))),X(y,(e=>{const t=(t,n)=>i(ee(v,t),ee(v,n),e),n=[...ee(w,e)];I(n,t)||(ne(w,e,ae(S(n,t))),de(p,e))}))),(h||f)&&!z(a)){const t=[...w];I(t,a)||(c(e,Z(S(t,a))),h=1)}h&&g(t,[e]),X(p,(t=>g(n,[e,t])))}),ue(o),N(l,ue)),L},delIndexDefinition:e=>(v(e),L),getStore:o,getIndexIds:l,forEachIndex:e=>s(((t,n)=>e(t,(e=>w(t,e,n))))),forEachSlice:(e,t)=>w(e,t,d(e)),hasIndex:i,hasSlice:(e,t)=>G(d(e),t),getTableId:a,getSliceIds:e=>_(d(e)),getSliceRowIds:(e,t)=>U(ee(d(e),t)),addSliceIdsListener:(e,n)=>h(n,t,[e]),addSliceRowIdsListener:(e,t,r)=>h(r,n,[e,t]),delListener:e=>(p(e),L),destroy:f,getListenerStats:()=>({})};return Le(L)})),Pe=Z([["avg",[(e,t)=>m(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=>F(...e),(e,t)=>F(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:F(t,e)]],["min",[e=>j(...e),(e,t)=>j(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:j(t,e)]],["sum",[e=>m(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,n)=>e-n+t]]]),ke=(e,t,n,r,o,l=!1)=>{if(K(n))return;const[s,i,a,d]=o;return l||(l=z(e)),X(r,(([n,r])=>{l||(e=z(n)?null==i?void 0:i(e,r,t++):z(r)?null==a?void 0:a(e,n,t--):null==d?void 0:d(e,r,n,t),l||(l=z(e)))})),l?s(U(n),$(n)):e},Me=ve((e=>{const t=Z(),[n,o,l,s,i,a,d,,c,u,v]=ce(e,H,(e=>isNaN(e)||z(e)||!0===e||!1===e||e===r?void 0:1*e)),[f,h,g]=ge((()=>p)),p={setMetricDefinition:(e,n,r,o,l,s,i)=>{var u;const v=B(r)?[r,l,s,i]:null!=(u=ee(Pe,r))?u:ee(Pe,"sum");return c(e,n,((n,r,o,l,s,i)=>{const c=a(e),u=$(l);i||(i=z(c)),n();let f=ke(c,u,l,r,v,i);J(f)||(f=void 0),f!=c&&(d(e,f),h(t,[e],f,c))}),ue(o,1)),p},delMetricDefinition:e=>(u(e),p),getStore:n,getMetricIds:o,forEachMetric:l,hasMetric:s,getTableId:i,getMetric:a,addMetricListener:(e,n)=>f(n,t,[e]),delListener:e=>(g(e),p),destroy:v,getListenerStats:()=>({})};return Le(p)}));var Ae=(e,t,n)=>new Promise(((r,o)=>{var l=e=>{try{i(n.next(e))}catch(e){o(e)}},s=e=>{try{i(n.throw(e))}catch(e){o(e)}},i=e=>e.done?r(e.value):Promise.resolve(e.value).then(l,s);i((n=n.apply(e,t)).next())}));const De=(e,t,n,o,l)=>{let s,i=0;const a={load:n=>Ae(void 0,null,(function*(){if(2!=i){i=1;const o=yield t();z(o)||o==r?e.setTables(n):e.setJson(o),i=0}return a})),startAutoLoad:e=>Ae(void 0,null,(function*(){return a.stopAutoLoad(),yield a.load(e),o(a.load),a})),stopAutoLoad:()=>(l(),a),save:()=>Ae(void 0,null,(function*(){return 1!=i&&(i=2,yield n(e.getJson()),i=0),a})),startAutoSave:()=>Ae(void 0,null,(function*(){return yield a.stopAutoSave().save(),s=e.addTablesListener((()=>a.save())),a})),stopAutoSave:()=>(N(s,e.delListener),a),getStore:()=>e,destroy:()=>a.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return Le(a)};var Oe=(e,t,n)=>new Promise(((r,o)=>{var l=e=>{try{i(n.next(e))}catch(e){o(e)}},s=e=>{try{i(n.throw(e))}catch(e){o(e)}},i=e=>e.done?r(e.value):Promise.resolve(e.value).then(l,s);i((n=n.apply(e,t)).next())}));const Fe="storage",je=globalThis.window,Je=(e,t,n)=>{let r;return De(e,(()=>Oe(void 0,null,(function*(){return n.getItem(t)}))),(e=>Oe(void 0,null,(function*(){return n.setItem(t,e)}))),(e=>{r=r=>{r.storageArea===n&&r.key===t&&e()},je.addEventListener(Fe,r)}),(()=>{je.removeEventListener(Fe,r),r=void 0}))};var Qe=(e,t,n)=>new Promise(((r,o)=>{var l=e=>{try{i(n.next(e))}catch(e){o(e)}},s=e=>{try{i(n.throw(e))}catch(e){o(e)}},i=e=>e.done?r(e.value):Promise.resolve(e.value).then(l,s);i((n=n.apply(e,t)).next())})),ze=(e,t,n)=>new Promise(((r,o)=>{var l=e=>{try{i(n.next(e))}catch(e){o(e)}},s=e=>{try{i(n.throw(e))}catch(e){o(e)}},i=e=>e.done?r(e.value):Promise.resolve(e.value).then(l,s);i((n=n.apply(e,t)).next())}));const Ne=e=>e.headers.get("ETag");var We=Object.getOwnPropertySymbols,Be=Object.prototype.hasOwnProperty,qe=Object.prototype.propertyIsEnumerable;const He=ve((e=>{const t=e.createStore,[n,o,l,s,i,,,a,,d,y,w,R]=ce(e,(()=>!0),H),I=t(),S=t(),b=Z(),m=(e,t,...n)=>T(n,(n=>de(re(re(b,t,Z),e,ae),n))),E=e=>{N(ee(b,e),(e=>{te(e,((e,t)=>X(t,(t=>e.delListener(t))))),V(e)})),T([S,I],(t=>t.delTable(e)))},M=(e,t,n)=>m(t,e,t.addWillFinishTransactionListener(n.startTransaction),t.addDidFinishTransactionListener((()=>n.finishTransaction()))),A={setQueryDefinition:(t,n,o)=>{a(t,n),E(t);const l=[],s=[[null,[n,null,null,[],Z()]]],i=[],d=[],c=[];o({select:(e,t)=>{const n=B(e)?[C(l)+r,e]:[z(t)?e:t,n=>n(e,t)];return k(l,n),{as:e=>n[0]=e}},join:(e,t,n)=>{const r=z(n)||B(t)?null:t,o=z(r)?t:n,l=[e,[e,r,B(o)?o:e=>e(o),[],Z()]];return k(s,l),{as:e=>l[0]=e}},where:(e,t,n)=>k(i,B(e)?e:z(n)?n=>n(e)===t:r=>r(e,t)===n),group:(e,t,n,r,o)=>{var l;const s=[e,[e,B(t)?[t,n,r,o]:null!=(l=ee(Pe,t))?l:[(e,t)=>t]]];return k(d,s),{as:e=>s[0]=e}},having:(e,t)=>k(c,B(e)?e:n=>n(e)===t)});const u=Z(l);if(K(u))return A;const v=Z(s);te(v,((e,[,t])=>N(ee(v,t),(({3:t})=>z(e)?0:k(t,e)))));const f=Z(d);let h=I;if(K(f)&&x(c))h=S;else{M(t,h,S);const e=Z();te(f,((t,[n,r])=>de(re(e,n,ae),[t,r])));const n=ae();te(u,(t=>G(e,t)?0:de(n,t)));const r=Z(),o=(n,r,o,l)=>N(n,(([s,i,a,d])=>{te(r,((t,[n])=>{const r=re(s,t,Z),i=ee(r,o),a=l?void 0:n;if(i!==a){const n=ae([[i,a]]),l=$(r);ne(r,o,a),X(ee(e,t),(([e,t])=>{const o=ke(d[e],l,r,n,t);d[e]=z(be(o))?null:o}))}})),K(i)||!L(c,(e=>e((e=>d[e]))))?S.delRow(t,a):z(a)?n[2]=S.addRow(t,d):S.setRow(t,a,d)}));m(h,t,h.addRowListener(t,null,((l,s,i,a)=>{const d=[],c=[],u=Z(),v=h.hasRow(t,i);let f=!v;X(n,(e=>{const[n,r,o]=a(t,i,e);k(d,r),k(c,o),f||(f=n)})),te(e,(e=>{const[n,,r]=a(t,i,e);(f||n)&&ne(u,e,[r])})),f&&o(ie(r,d,void 0,(([,e])=>(Y(e,i),K(e)))),u,i,1),v&&o(ie(r,c,(()=>{const e={};return X(n,(n=>e[n]=h.getCell(t,i,n))),[Z(),ae(),void 0,e]}),(([,e])=>{de(e,i)})),u,i)})))}M(t,e,h);const g=(r,o,l,s)=>{const a=t=>e.getCell(o,l,t);T(s,(n=>{var o;const[l,,s,i,d]=ee(v,n),c=null==s?void 0:s(a,r),[u,f]=null!=(o=ee(d,r))?o:[];c!=u&&(z(f)||R(t,f),ne(d,r,z(c)?null:[c,...w(t,1,e.addRowListener(l,c,(()=>g(r,l,c,i))))]))})),(r=>{const o=(t,o)=>{var l,s,i;return e.getCell(...z(o)?[n,r,t]:t===n?[n,r,o]:[null==(l=ee(v,t))?void 0:l[0],null==(i=ee(null==(s=ee(v,t))?void 0:s[4],r))?void 0:i[0],o])};h.transaction((()=>L(i,(e=>e(o)))?te(u,((e,n)=>me(h,t,r,e,n(o,r)))):h.delRow(t,r)))})(r)},{3:p}=ee(v,null);return h.transaction((()=>w(t,1,e.addRowListener(n,null,((r,o,l)=>{e.hasRow(n,l)?g(l,n,l,p):(h.delRow(t,l),X(v,(({4:e})=>N(ee(e,l),(([,n])=>{R(t,n),ne(e,l)})))))}))))),A},delQueryDefinition:e=>(E(e),d(e),A),getStore:n,getQueryIds:o,forEachQuery:l,hasQuery:s,getTableId:i,delListener:e=>(S.delListener(e),A),destroy:y,getListenerStats:()=>((e,t)=>{var n={};for(var r in e)Be.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&We)for(var r of We(e))t.indexOf(r)<0&&qe.call(e,r)&&(n[r]=e[r]);return n})(S.getListenerStats(),["tables","tableIds","transaction"])};return Se({[f]:[1,1],[h]:[0,1],SortedRowIds:[0,5],Row:[1,2],[g]:[0,2],[p]:[1,3]},(([e,t],n)=>{T(e?["get","has","forEach"]:["get"],(e=>A[e+u+n]=(...t)=>S[e+n](...t))),A[v+u+n+c]=(...e)=>S[v+n+c](...P(e,0,t),((n,...r)=>e[t](A,...r)))})),Le(A)})),$e=ve((e=>{const t=Z(),n=Z(),o=Z(),l=Z(),[s,i,a,d,c,u,,,v,f,h]=ce(e,(()=>[Z(),Z(),Z(),Z()]),(e=>z(e)?void 0:e+r)),[g,p,y]=ge((()=>I)),w=(e,t,n)=>N(u(e),(([r,,o])=>{if(!G(o,t)){const l=ae();if(c(e)!=R(e))de(l,t);else{let e=t;for(;!z(e)&&!G(l,e);)de(l,e),e=ee(r,e)}if(n)return l;ne(o,t,l)}return ee(o,t)})),L=(e,t)=>N(u(e),(([,,e])=>ne(e,t))),R=e=>ee(t,e),I={setRelationshipDefinition:(e,r,s,i)=>(ne(t,e,s),v(e,r,((t,r)=>{const s=ae(),i=ae(),a=ae(),[d,c]=u(e);X(r,(([t,n],r)=>{z(t)||(de(i,t),N(ee(c,t),(e=>{Y(e,r),K(e)&&ne(c,t)}))),z(n)||(de(i,n),G(c,n)||ne(c,n,ae()),de(ee(c,n),r)),de(s,r),ne(d,r,n),te(ee(l,e),(t=>{G(w(e,t),r)&&de(a,t)}))})),t(),X(s,(t=>p(n,[e,t]))),X(i,(t=>p(o,[e,t]))),X(a,(t=>{L(e,t),p(l,[e,t])}))}),ue(i)),I),delRelationshipDefinition:e=>(ne(t,e),f(e),I),getStore:s,getRelationshipIds:i,forEachRelationship:t=>a((n=>t(n,(t=>e.forEachRow(c(n),t))))),hasRelationship:d,getLocalTableId:c,getRemoteTableId:R,getRemoteRowId:(e,t)=>{var n;return ee(null==(n=u(e))?void 0:n[0],t)},getLocalRowIds:(e,t)=>{var n;return U(ee(null==(n=u(e))?void 0:n[1],t))},getLinkedRowIds:(e,t)=>z(u(e))?[t]:U(w(e,t,!0)),addRemoteRowIdListener:(e,t,r)=>g(r,n,[e,t]),addLocalRowIdsListener:(e,t,n)=>g(n,o,[e,t]),addLinkedRowIdsListener:(e,t,n)=>(w(e,t),g(n,l,[e,t])),delListener:e=>(L(...y(e)),I),destroy:h,getListenerStats:()=>({})};return Le(I)})),Ge=e=>[e,e],Ke=()=>[Z(),Z()],Ue=(e,t,n,r=ne)=>{const o=(l=e=>!Re(t,e),_(e).filter(l));var l;return T(ye(t),(r=>n(e,r,t[r]))),T(o,(t=>r(e,t))),e},Ve=(e,t,n)=>z(e)||!(e=>Q(e,pe)&&e.constructor==pe)(e)||Te(e)||we(e)?(null==n||n(),!1):(Se(e,((n,r)=>{t(n,r)||Ie(e,r)})),!Te(e)),Xe=(e,t,n)=>ne(e,t,ee(e,t)==-n?void 0:n),Ye=()=>{let e,t,n=0;const r=Z(),o=Z(),l=Z(),i=Z(),d=Z(),u=Z(),L=Z(),I=Z(),m=Z(),C=Ke(),x=Ke(),E=Ke(),M=Ke(),A=Ke(),F=Ke(),j=Ke(),J=Ke(),Q=Ke(),q=Ke(),[H,$,U,ie]=ge((()=>at)),ce=(t,n)=>(!e||G(u,n)||ze(n))&&Ve(t,((e,t)=>ue(n,t,e)),(()=>ze(n))),ue=(e,t,n,r)=>Ve(r?n:fe(n,e,t),((r,o)=>N(ve(e,t,o,r),(e=>(n[o]=e,!0)),(()=>!1))),(()=>ze(e,t))),ve=(t,n,r,o)=>e?N(ee(ee(u,t),r),(e=>be(o)!=e.type?ze(t,n,r,o,e.default):o),(()=>ze(t,n,r,o))):z(be(o))?ze(t,n,r,o):o,fe=(e,t,n)=>(N(ee(L,t),(([r,o])=>{X(r,((t,n)=>{Re(e,n)||(e[n]=t)})),X(o,(r=>{Re(e,r)||ze(t,n,r)}))})),e),pe=e=>Ue(u,e,((e,t,n)=>{const r=Z(),o=ae();Ue(re(u,t,Z),n,((e,t,n)=>{ne(e,t,n),N(n.default,(e=>ne(r,t,e)),(()=>de(o,t)))})),ne(L,t,[r,o])}),((e,t)=>{ne(u,t),ne(L,t)})),ye=e=>Ue(m,e,((e,t,n)=>we(t,n)),((e,t)=>Ae(t))),we=(e,t)=>Ue(re(m,e,(()=>(Fe(e,1),Z()))),t,((t,n,r)=>Ce(e,t,n,r)),((t,n)=>De(e,t,n))),Ce=(e,t,n,r,o)=>Ue(re(t,n,(()=>(je(e,n,1),Z()))),r,((t,r,o)=>Ee(e,n,t,r,o)),((r,l)=>Oe(e,t,n,r,l,o))),Ee=(e,t,n,r,o)=>{G(n,r)||Je(e,t,r,1);const l=ee(n,r);o!==l&&(Qe(e,t,r,l,o),ne(n,r,o))},Pe=(e,t,n,r,o)=>N(ee(t,n),(t=>Ee(e,n,t,r,o)),(()=>Ce(e,t,n,fe({[r]:o},e,n)))),ke=e=>{const[t]=re(I,e,he),n=t();return G(ee(m,e),n)?ke(e):n},Me=e=>{var t;return null!=(t=ee(m,e))?t:we(e,{})},Ae=e=>we(e,{}),De=(e,t,n)=>{const[,r]=re(I,e,he);r(n),Ce(e,t,n,{},!0)},Oe=(e,t,n,r,o,l)=>{var s;const i=ee(null==(s=ee(L,e))?void 0:s[0],o);if(!z(i)&&!l)return Ee(e,n,r,o,i);const a=t=>{Qe(e,n,t,ee(r,t)),Je(e,n,t,-1),ne(r,t)};z(i)?a(o):te(r,a),K(r)&&(je(e,n,-1),K(ne(t,n))&&(Fe(e,-1),ne(m,e),ne(I,e)))},Fe=(e,t)=>Xe(r,e,t),je=(e,t,n)=>Xe(re(o,e,Z),t,n),Je=(e,t,n,r)=>Xe(re(re(l,e,Z),t,Z),n,r),Qe=(e,t,n,r,o)=>re(re(re(i,e,Z),t,Z),n,(()=>[r,0]))[1]=o,ze=(e,t,n,r,o)=>(k(re(re(re(d,e,Z),t,Z),n,(()=>[])),r),o),Ne=(e,t,n)=>N(ee(ee(ee(i,e),t),n),(([e,t])=>[!0,e,t]),(()=>[!1,...Ge(nt(e,t,n))])),We=e=>K(d)||K(Q[e])?0:X(e?le(d,se):d,((t,n)=>X(t,((t,r)=>X(t,((t,o)=>$(Q[e],[n,r,o],t))))))),Be=(e,t,n)=>{if(!K(t))return $(e,n),1},qe=e=>{const t=K(A[e]),n=K(j[e])&&K(M[e])&&t&&K(x[e]),s=K(J[e])&&K(F[e])&&K(E[e])&&K(C[e]);if(!n||!s){const a=e?[le(r),se(o),le(l,se),le(i,se)]:[r,o,l,i];if(!n){X(a[2],((t,n)=>X(t,((t,r)=>Be(j[e],t,[n,r])))));const n=ae();X(a[1],((r,o)=>{Be(M[e],r,[o])&&!t&&($(A[e],[o,null]),de(n,o))})),t||X(a[3],((t,r)=>{if(!G(n,r)){const n=ae();X(t,(e=>X(e,(([t,r],o)=>r!==t?de(n,o):Y(e,o))))),X(n,(t=>$(A[e],[r,t])))}})),Be(x[e],a[0])}if(!s){let t;X(a[3],((n,r)=>{let o;X(n,((n,l)=>{let s;X(n,(([n,i],a)=>{i!==n&&($(J[e],[r,l,a],i,n,Ne),t=o=s=1)})),s&&$(F[e],[r,l],Ne)})),o&&$(E[e],[r],Ne)})),t&&$(C[e],void 0,Ne)}}},He=(e,...t)=>(lt((()=>e(...b(t,y)))),at),$e=()=>oe(m,(e=>oe(e,oe))),Ze=()=>_(m),_e=e=>_(ee(m,y(e))),et=(e,t,n,r=0,o)=>{return b(P(S((l=ee(m,y(e)),s=(e,n)=>[z(t)?n:ee(e,y(t)),n],b([...null!=(i=null==l?void 0:l.entries())?i:[]],(([e,t])=>s(t,e)))),(([e],[t])=>xe(e,t)*(n?-1:1))),r,z(o)?o:r+o),(([,e])=>e));var l,s,i},tt=(e,t)=>_(ee(ee(m,y(e)),y(t))),nt=(e,t,n)=>ee(ee(ee(m,y(e)),y(t)),y(n)),rt=e=>He((()=>(e=>Ve(e,ce,ze))(e)?ye(e):0)),ot=()=>He((()=>ye({}))),lt=(e,t)=>{if(-1==n)return;st();const r=e();return it(t),r},st=()=>(n++,at),it=e=>(n>0&&(n--,0==n&&(t=!K(i),n=1,We(1),t&&qe(1),n=-1,(null==e?void 0:e(oe(i,(e=>oe(e,(e=>oe(e,(e=>[...e]),(([e,t])=>e===t))),Te)),Te),oe(d,(e=>oe(e,oe)))))&&(n=1,X(i,((e,t)=>X(e,((e,n)=>X(e,(([e],r)=>me(at,t,n,r,e))))))),n=-1,t=!1),$(q[0],void 0,t),We(0),t&&qe(0),$(q[1],void 0,t),n=0,T([i,d,r,o,l],V))),at),at={getTables:$e,getTableIds:Ze,getTable:e=>oe(ee(m,y(e)),oe),getRowIds:_e,getSortedRowIds:et,getRow:(e,t)=>oe(ee(ee(m,y(e)),y(t))),getCellIds:tt,getCell:nt,hasTables:()=>!K(m),hasTable:e=>G(m,y(e)),hasRow:(e,t)=>G(ee(m,y(e)),y(t)),hasCell:(e,t,n)=>G(ee(ee(m,y(e)),y(t)),y(n)),getJson:()=>D(m),getSchemaJson:()=>D(u),setTables:rt,setTable:(e,t)=>He((e=>ce(t,e)?we(e,t):0),e),setRow:(e,t,n)=>He(((e,t)=>ue(y(e),y(t),n)?Ce(y(e),Me(y(e)),y(t),n):0),e,t),addRow:(e,t)=>lt((()=>{let n;return ue(e,n,t)&&(e=y(e),Ce(e,Me(e),n=ke(e),t)),n})),setPartialRow:(e,t,n)=>He(((e,t)=>{if(ue(e,t,n,1)){const r=Me(e);Se(n,((n,o)=>Pe(e,r,t,o,n)))}}),e,t),setCell:(e,t,n,r)=>He(((e,t,n)=>N(ve(e,t,n,B(r)?r(nt(e,t,n)):r),(r=>Pe(e,Me(e),t,n,r)))),e,t,n),setJson:e=>{try{"{}"===e?ot():rt(O(e))}catch(e){}return at},setSchema:t=>He((()=>{if((e=(e=>Ve(e,(e=>Ve(e,(e=>{if(!Ve(e,((e,t)=>w(["type",a],t))))return!1;const t=e.type;return!(!W(t)&&t!=s||(be(e.default)!=t&&Ie(e,a),0))})))))(t))&&(pe(t),!K(m))){const e=$e();ot(),rt(e)}})),delTables:ot,delTable:e=>He((e=>G(m,e)?Ae(e):0),e),delRow:(e,t)=>He(((e,t)=>N(ee(m,e),(n=>G(n,t)?De(e,n,t):0))),e,t),delCell:(e,t,n,r)=>He(((e,t,n)=>N(ee(m,e),(o=>N(ee(o,t),(l=>G(l,n)?Oe(e,o,t,l,n,r):0))))),e,t,n),delSchema:()=>He((()=>{pe({}),e=!1})),transaction:lt,startTransaction:st,finishTransaction:it,forEachTable:e=>X(m,((t,n)=>e(n,(e=>X(t,((t,n)=>e(n,(e=>te(t,e))))))))),forEachRow:(e,t)=>X(ee(m,y(e)),((e,n)=>t(n,(t=>te(e,t))))),forEachCell:(e,t,n)=>te(ee(ee(m,y(e)),y(t)),n),addSortedRowIdsListener:(e,t,n,r,o,l,s)=>{let i=et(e,t,n,r,o);return H((()=>{const s=et(e,t,n,r,o);R(s,i)||(i=s,l(at,e,t,n,r,o,i))}),A[s?1:0],[e,t])},addWillFinishTransactionListener:e=>H(e,q[0]),addDidFinishTransactionListener:e=>H(e,q[1]),callListener:e=>(ie(e,[Ze,_e,tt],(e=>z(e[2])?[]:Ge(nt(...e)))),at),delListener:e=>(U(e),at),getListenerStats:()=>({}),createStore:Ye};return Se({Tables:[0,C],TableIds:[0,x],[f]:[1,E],[h]:[1,M],Row:[2,F],[g]:[2,j],[p]:[3,J],InvalidCell:[3,Q]},(([e,t],n)=>{at[v+n+c]=(...n)=>H(n[e],t[n[e+1]?1:0],e>0?P(n,0,e):void 0)})),Le(at)};e.createCheckpoints=Ce,e.createCustomPersister=De,e.createFilePersister=(e,n)=>{let r;return De(e,(()=>Qe(void 0,null,(function*(){try{return yield t.promises.readFile(n,d)}catch(e){}}))),(e=>Qe(void 0,null,(function*(){try{yield t.promises.writeFile(n,e,d)}catch(e){}}))),(e=>{r=t.watch(n,e)}),(()=>{null==r||r.close(),r=void 0}))},e.createIndexes=Ee,e.createLocalPersister=(e,t)=>Je(e,t,localStorage),e.createMetrics=Me,e.createQueries=He,e.createRelationships=$e,e.createRemotePersister=(e,t,n,r)=>{let o,l;return De(e,(()=>ze(void 0,null,(function*(){const e=yield fetch(t);return l=Ne(e),e.text()}))),(e=>ze(void 0,null,(function*(){return yield fetch(n,{method:"POST",headers:{"Content-Type":"application/json"},body:e})}))),(e=>{o=setInterval((()=>ze(void 0,null,(function*(){const n=yield fetch(t,{method:"HEAD"}),r=Ne(n);z(l)||z(r)||r==l||(l=r,e())}))),1e3*r)}),(()=>{N(o,clearInterval),o=void 0}))},e.createSessionPersister=(e,t)=>Je(e,t,sessionStorage),e.createStore=Ye,e.defaultSorter=xe},"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);
|
|
Binary file
|
package/lib/umd-es6/tools.d.ts
CHANGED
|
@@ -224,21 +224,171 @@ export interface Tools {
|
|
|
224
224
|
|
|
225
225
|
/**
|
|
226
226
|
* The getStoreApi method returns a code-generated .d.ts file and a .ts file
|
|
227
|
-
* that
|
|
227
|
+
* that describe the schema of a Store in an ORM style.
|
|
228
228
|
*
|
|
229
|
-
*
|
|
229
|
+
* If the Store does not already have an explicit Schema associated with it,
|
|
230
|
+
* the data in the Store will be scanned to attempt to infer a new Schema. The
|
|
231
|
+
* method returns two strings (which should be saved as files) though if no
|
|
232
|
+
* schema can be inferred, the strings will be empty.
|
|
233
|
+
*
|
|
234
|
+
* The method takes a single argument which represents the name you want the
|
|
235
|
+
* generated store object to have in code. You are expected to save the files
|
|
236
|
+
* as `[storeName].d.ts` and `[storeName].ts`, and alongside each other so
|
|
237
|
+
* that the latter can import types from the former.
|
|
238
|
+
*
|
|
239
|
+
* The .d.ts and .ts files that are generated are designed to resemble the
|
|
240
|
+
* main TinyBase `store.d.ts` and `store.ts` files, but provide named types
|
|
241
|
+
* and methods that describe the domain of the schema in the store.
|
|
242
|
+
*
|
|
243
|
+
* For example, from a Store that has a `pets` Table, you will get methods
|
|
244
|
+
* like `getPetsTable`, and types like `PetsRow`, that are more specific
|
|
245
|
+
* versions of the underlying getTable method or the Row type. For example:
|
|
246
|
+
*
|
|
247
|
+
* |Store type|Equivalent generated type|
|
|
248
|
+
* |-|-|
|
|
249
|
+
* |Table|[Table]Table|
|
|
250
|
+
* |Row|[Table]Row|
|
|
251
|
+
* |(Cell) Id|[Table]CellId|
|
|
252
|
+
* |CellCallback|[Table]CellCallback|
|
|
253
|
+
* |...|...|
|
|
254
|
+
*
|
|
255
|
+
* |Store method|Equivalent generated method|
|
|
256
|
+
* |-|-|
|
|
257
|
+
* |setTable|set[Table]Table|
|
|
258
|
+
* |hasRow|has[Table]Row|
|
|
259
|
+
* |getCell|get[Table][Cell]Cell|
|
|
260
|
+
* |...|...|
|
|
261
|
+
*
|
|
262
|
+
* Equivalent to the TinyBase createStore function, a `create[StoreName]`
|
|
263
|
+
* function will also be created. This acts as the main entry point to the
|
|
264
|
+
* generated implementation.
|
|
265
|
+
*
|
|
266
|
+
* Each method is refined correctly to take, or return, the types specified by
|
|
267
|
+
* the schema. For example, if the `pets` Table has a numeric `price` Cell in
|
|
268
|
+
* the schema, the `getPetsPriceCell` method will be typed to return a number.
|
|
269
|
+
*
|
|
270
|
+
* The tables above include just a sample of the generated output. For the
|
|
271
|
+
* full set of methods and types generated by this method, inspect the output
|
|
272
|
+
* directly.
|
|
273
|
+
*
|
|
274
|
+
* @param storeName The name you want to provide to the generated Store, which
|
|
275
|
+
* should also be used to save the `.d.ts` and `.ts` files.
|
|
276
|
+
* @returns A pair of strings representing the contents of the `.d.ts` and
|
|
277
|
+
* `.ts` files.
|
|
278
|
+
* @example
|
|
279
|
+
* This example creates a Tools object and generates code for a Store that
|
|
280
|
+
* already has a Schema.
|
|
281
|
+
* ```js
|
|
282
|
+
* const store = createStore().setSchema({
|
|
283
|
+
* pets: {
|
|
284
|
+
* price: {type: 'number'},
|
|
285
|
+
* },
|
|
286
|
+
* });
|
|
287
|
+
* const [dTs, ts] = createTools(store).getStoreApi('shop');
|
|
288
|
+
*
|
|
289
|
+
* const dTsLines = dTs.split('\n');
|
|
290
|
+
* console.log(dTsLines[3]);
|
|
291
|
+
* // -> 'export type PetsTable = {[rowId: Id]: PetsRow};'
|
|
292
|
+
* console.log(dTsLines[6]);
|
|
293
|
+
* // -> 'export type PetsRow = {\'price\'?: number;};'
|
|
294
|
+
*
|
|
295
|
+
* const tsLines = ts.split('\n');
|
|
296
|
+
* console.log(tsLines[40]);
|
|
297
|
+
* // -> 'getPetsTable: (): PetsTable => store.getTable(PETS) as PetsTable,'
|
|
298
|
+
* ```
|
|
299
|
+
* @example
|
|
300
|
+
* This example creates a Tools object and generates code for a Store that
|
|
301
|
+
* doesn't already have a Schema.
|
|
302
|
+
* ```js
|
|
303
|
+
* const store = createStore().setTable('pets', {
|
|
304
|
+
* fido: {price: 5},
|
|
305
|
+
* felix: {price: 4},
|
|
306
|
+
* });
|
|
307
|
+
* const [dTs, ts] = createTools(store).getStoreApi('shop');
|
|
230
308
|
*
|
|
309
|
+
* const dTsLines = dTs.split('\n');
|
|
310
|
+
* console.log(dTsLines[3]);
|
|
311
|
+
* // -> 'export type PetsTable = {[rowId: Id]: PetsRow};'
|
|
312
|
+
* console.log(dTsLines[6]);
|
|
313
|
+
* // -> 'export type PetsRow = {\'price\': number;};'
|
|
314
|
+
*
|
|
315
|
+
* const tsLines = ts.split('\n');
|
|
316
|
+
* console.log(tsLines[42]);
|
|
317
|
+
* // -> 'getPetsTable: (): PetsTable => store.getTable(PETS) as PetsTable,'
|
|
318
|
+
* ```
|
|
231
319
|
* @category Modelling
|
|
232
320
|
* @since v2.2.0
|
|
233
321
|
*/
|
|
234
322
|
getStoreApi(storeName: string): [string, string];
|
|
235
323
|
|
|
236
324
|
/**
|
|
237
|
-
* The
|
|
238
|
-
* file and a .ts file that
|
|
325
|
+
* The getPrettyStoreApi method attempts to returns a prettified
|
|
326
|
+
* code-generated .d.ts file and a .ts file that describe the schema of a
|
|
327
|
+
* Store in an ORM style.
|
|
328
|
+
*
|
|
329
|
+
* This is simply a wrapper around the getStoreApi method that attempts to
|
|
330
|
+
* invoke the `prettier` module (which it hopes you have installed) to format
|
|
331
|
+
* the generated code. If `prettier` is not present, the output will resemble
|
|
332
|
+
* that of the underlying getStoreApi method.
|
|
239
333
|
*
|
|
240
|
-
*
|
|
334
|
+
* The method is asynchronous, so you should use the `await` keyword or handle
|
|
335
|
+
* the results as a promise.
|
|
241
336
|
*
|
|
337
|
+
* The method takes a single argument which represents the name you want the
|
|
338
|
+
* generated store object to have in code. You are expected to save the files
|
|
339
|
+
* as `[storeName].d.ts` and `[storeName].ts`, and alongside each other so
|
|
340
|
+
* that the latter can import types from the former.
|
|
341
|
+
*
|
|
342
|
+
* See the documentation for the getStoreApi method for details of the content
|
|
343
|
+
* of the generated files.
|
|
344
|
+
*
|
|
345
|
+
* @param storeName The name you want to provide to the generated Store, which
|
|
346
|
+
* should also be used to save the `.d.ts` and `.ts` files.
|
|
347
|
+
* @returns A pair of strings representing the contents of the `.d.ts` and
|
|
348
|
+
* `.ts` files.
|
|
349
|
+
* @example
|
|
350
|
+
* This example creates a Tools object and generates code for a Store that
|
|
351
|
+
* already has a Schema.
|
|
352
|
+
* ```js
|
|
353
|
+
* const store = createStore().setSchema({
|
|
354
|
+
* pets: {
|
|
355
|
+
* price: {type: 'number'},
|
|
356
|
+
* },
|
|
357
|
+
* });
|
|
358
|
+
* const tools = createTools(store);
|
|
359
|
+
* const [dTs, ts] = await tools.getPrettyStoreApi('shop');
|
|
360
|
+
*
|
|
361
|
+
* const dTsLines = dTs.split('\n');
|
|
362
|
+
* console.log(dTsLines[14]);
|
|
363
|
+
* // -> 'export type PetsTable = {[rowId: Id]: PetsRow};'
|
|
364
|
+
* console.log(dTsLines[19]);
|
|
365
|
+
* // -> 'export type PetsRow = {price?: number};'
|
|
366
|
+
*
|
|
367
|
+
* const tsLines = ts.split('\n');
|
|
368
|
+
* console.log(tsLines[73]);
|
|
369
|
+
* // -> ' hasPetsTable: (): boolean => store.hasTable(PETS),'
|
|
370
|
+
* ```
|
|
371
|
+
* @example
|
|
372
|
+
* This example creates a Tools object and generates code for a Store that
|
|
373
|
+
* doesn't already have a Schema.
|
|
374
|
+
* ```js
|
|
375
|
+
* const store = createStore().setTable('pets', {
|
|
376
|
+
* fido: {price: 5},
|
|
377
|
+
* felix: {price: 4},
|
|
378
|
+
* });
|
|
379
|
+
* const tools = createTools(store);
|
|
380
|
+
* const [dTs, ts] = await tools.getPrettyStoreApi('shop');
|
|
381
|
+
*
|
|
382
|
+
* const dTsLines = dTs.split('\n');
|
|
383
|
+
* console.log(dTsLines[14]);
|
|
384
|
+
* // -> 'export type PetsTable = {[rowId: Id]: PetsRow};'
|
|
385
|
+
* console.log(dTsLines[19]);
|
|
386
|
+
* // -> 'export type PetsRow = {price: number};'
|
|
387
|
+
*
|
|
388
|
+
* const tsLines = ts.split('\n');
|
|
389
|
+
* console.log(tsLines[75]);
|
|
390
|
+
* // -> ' hasPetsTable: (): boolean => store.hasTable(PETS),'
|
|
391
|
+
* ```
|
|
242
392
|
* @category Modelling
|
|
243
393
|
* @since v2.2.0
|
|
244
394
|
*/
|
package/lib/umd-es6/tools.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,l="",o=t(l),n=t(!0),a=t(0),r="type",s="default",d=(e,t)=>e.every(t),i=(e,t)=>e.sort(t),c=(e,t)=>e.forEach(t),$=(e,t)=>e.map(t),I=e=>e.length,u=(e,...t)=>e.push(...t),b=e=>e.shift(),h=JSON.parse,w=isFinite,f=e=>null==e,g=e=>Array.isArray(e),C=(e,t)=>{var l;return null!=(l=null==e?void 0:e.has(t))&&l},p=e=>{var t;return[...null!=(t=null==e?void 0:e.values())?t:[]]},v=(e,t)=>null==e?void 0:e.forEach(t),T=e=>new Map(e),R=(e,t)=>null==e?void 0:e.get(t),m=(e,t)=>{var l;return $([...null!=(l=null==e?void 0:e.entries())?l:[]],(([e,l])=>t(l,e)))},y=(e,t,l)=>{return f(l)?(n=t,null==(o=e)||o.delete(n),e):null==e?void 0:e.set(t,l);var o,n},S=(e,t,l)=>(C(e,t)||y(e,t,l()),R(e,t)),L=e=>new Set(g(e)||f(e)?e:[e]),k=/[^A-Za-z0-9]+/,A=/^( *)\/\*\* *(.*?) *\*\/$/gm,j=(e,t,l)=>e.substring(t,l),O=e=>e.toUpperCase(),x=e=>e.toLowerCase(),E=(e,t,l,o=1)=>{const n=`${t}${1==o?"":o}`;return C(e,n)?E(e,t,l,o+1):(y(e,n,l),n)},J=e=>e.length,N=(e,t="")=>e.join(t),P=(e,t=0)=>N($(e.split(k),((e,l)=>(l>0||t?O:x)(j(e,0,1))+j(e,1)))),G=e=>O(N(e.split(k),"_")),z=e=>`/** ${e}. */`,D=()=>{const e=[T(),T()],t=T(),o=T(),n=T();return[(...e)=>{const t=[],l=e=>g(e)?c(e,l):u(t,e);return c(e,l),t.join("\n")},(t,l,...o)=>c(o,(o=>{return n=S(e[t],l,L),a=o,null==n?void 0:n.add(a);var n,a})),(e,l="",o="")=>E(t,e,[l,o]),(e,l,o)=>y(t,e,[l,o]),(e,t,l,n,a,r="")=>E(o,e,[t,l,n,a,r]),(e,t,l)=>E(n,e,g(l)?[`(${t}) => {`,l,"}"]:[`(${t}) => ${l}`]),(e,t)=>R(n,e)===t?e:E(n,e,t),t=>[...i(m(e[t],((e,t)=>`import {${N(i(p(e)),", ")}} from '${t}';`))),l],()=>m(t,(([e,t],o)=>[z(t),`export type ${o} = ${e};`,l])),e=>m(o,(([t,o,n,a,r],s)=>{const d=e?[`${s}: ${r}(${t}): ${o} => ${n},`]:[`${s}${r}(${t}): ${o};`];return e||((e,...t)=>{e.unshift(...t)})(d,z(a)),u(d,l),d})),()=>m(n,((e,t)=>(e=g(e)?e:[e],u(e,e.pop()+";"),[`const ${t} = ${b(e)}`,e,l])))]},F=Object,M=F.keys,W=F.freeze,_=(e,t)=>{return o=e=>e[t],f(l=e)?null==n?void 0:n():o(l);var l,o,n},B=(e,t)=>c(F.entries(e),(([e,l])=>t(l,e))),Q=e=>{return t=M(e),0==I(t);var t},U=e=>{const l=t(e);return(e=>e==o||e==n)(l)||l==a&&w(e)?l:void 0},Z="the Store",q="the specified Row",H="Registers a listener that will be called",K=(e,t="",l="")=>`store.${e}(${t})${l?" as "+l:""}`,V=(e,t="")=>`fluent(() => ${K(e,t)})`,X=(e,t,l=0)=>`Gets ${l?"sorted, paginated":"the"} Ids of the ${e}s in ${t}`,Y=(e,t)=>`Calls a function for each ${e} in ${t}`,ee=(e,t=Z)=>`Gets whether ${e} exists in ${t}`,te=e=>"A function that takes "+e,le=(e,t,l=0)=>`${H} whenever ${e} in ${t} change`+(l?"":"s"),oe=(e=0)=>1==e?"Sets":2==e?"Sets part of":3==e?"Deletes":"Gets",ne=(e,l)=>{if(Q(e))return[a="// store has no inferable schema",a];var a;const d=P(l),i=P(l,1),c=P(i),$=`return ${c};`,I=[],b=[],h=[],w=[],g=[],C=[],R=[],m=(e,t="",l="")=>`store.${e}(${t?t+", ":""}proxy(listener)${l?", "+l:""})`,[S,L,k,A,j,O,x,E,J,F,M]=D();L(0,"tinybase","CellChange","ChangedCells","Id","IdOrNull","Ids","InvalidCells","Json","Store"),L(1,"tinybase","ChangedCells","Id","IdOrNull","Ids","InvalidCells","Json","Store","createStore"),O("fluent","actions: () => Store",["actions();",$]),O("proxy","listener: any",`(_: Store, ...args: any[]) => listener(${c}, ...args)`);const W=x(G(r),"'type'"),U=x(G(s),"'default'"),ne=k("Tables"),ae=k("TableId"),re=k("TableCallback"),se=k("GetCellChange"),de=k("TablesListener",`(${c}: ${i}, getCellChange: ${se} | undefined) => void`,"A function for listening to changes to the content of the Store"),ie=k("TableIdsListener",`(${c}: ${i}) => void`,"A function for listening to changes to Table Ids in the Store"),ce=k("TableListener",`(${c}: ${i}, tableId: ${ae}, getCellChange: ${se} | undefined) => void`,"A function for listening to changes to a Table in the Store"),$e=k("RowIdsListener",`(${c}: ${i}, tableId: ${ae}) => void`,"A function for listening to changes to Row Ids in the Store"),Ie=k("RowListener",`(${c}: ${i}, tableId: ${ae}, rowId: Id, getCellChange: ${se} | undefined) => void`,"A function for listening to changes to a Row in the Store"),ue=k("CellIdsListener",`(${c}: ${i}, tableId: ${ae}, rowId: Id) => void`,"A function for listening to changes to Cell Ids in the Store"),be=k("CellListener"),he=k("InvalidCellListener",`(${c}: ${i}, tableId: Id, rowId: Id, cellId: Id, invalidCells: any[]) => void;`,"A function for listening to invalid Cell changes"),we=k("TransactionListener",`(${c}: ${i}, cellsTouched: boolean) => void;`,"A function for listening to the completion of a transaction");L(1,`./${d}.d`,i,`create${i} as create${i}Decl`,ne,ae,re,de,ie,ce,$e,Ie,ue,be,he,we);const fe=(e=0)=>oe(e)+" the content of the Store";j("hasTables","",n,K("hasTables"),ee("any Table")),j("getTables","",ne,K("getTables"),fe()),j("setTables","tables: "+ne,i,V("setTables","tables"),fe(1)),j("delTables","",i,V("delTables"),fe(3)),j("getTableIds","",ae+"[]",K("getTableIds","",ae+"[]"),X("Table",Z)),j("forEachTable","tableCallback: "+re,"void",K("forEachTable","tableCallback as any"),Y("Table",Z));const ge=T();var Ce;return B(e,((e,l)=>{const a=P(l,1),r=x(G(l),`'${l}'`),$=[],p=[],v=[],T=[],m=`the '${l}' Table`,S="the specified Row in "+m,O="the content of "+m,E=(e=0)=>`${oe(e)} the content of ${m}`,J=(e=0)=>`${oe(e)} the content of ${S}`,z=(e=0)=>`Represents a Row when ${e?"s":"g"}etting ${O}`,D=k(a+"Table",`{[rowId: Id]: ${a}Row}`,"Represents "+m),F=k(a+"Row"),M=k(a+"RowWhenSet"),Q=k(a+"CellId"),Z=k(a+"CellCallback"),H=k(a+"RowCallback");L(1,`./${d}.d`,D,F,M,Q,Z,H),j(`has${a}Table`,"",n,K("hasTable",r),ee(m)),j(`get${a}Table`,"",D,K("getTable",r,D),E()),j(`set${a}Table`,"table: "+D,i,V("setTable",r+", table"),E(1)),j(`del${a}Table`,"",i,V("delTable",r),E(3)),j(`get${a}RowIds`,"","Ids",K("getRowIds",r),X("Row",m)),j(`get${a}SortedRowIds`,`cellId?: ${Q}, descending?: boolean, offset?: number, limit?: number`,"Ids",K("getSortedRowIds",r+", cellId, descending, offset, limit"),X("Row",m,1)),j(`forEach${a}Row`,"rowCallback: "+H,"void",K("forEachRow",r+", rowCallback as any"),Y("Row",m)),j(`has${a}Row`,"rowId: Id",n,K("hasRow",r+", rowId"),ee(q,m)),j(`get${a}Row`,"rowId: Id",F,K("getRow",r+", rowId",F),J()),j(`set${a}Row`,"rowId: Id, row: "+M,i,V("setRow",r+", rowId, row"),J(1)),j(`add${a}Row`,"row: "+M,"Id | undefined",K("addRow",r+", row"),"Adds a new Row to "+m),j(`set${a}PartialRow`,"rowId: Id, partialRow: "+M,i,V("setPartialRow",r+", rowId, partialRow"),J(2)),j(`del${a}Row`,"rowId: Id",i,V("delRow",r+", rowId"),J(3)),j(`get${a}CellIds`,"rowId: Id",Q+"[]",K("getCellIds",r+", rowId",Q+"[]"),X("Cell",S)),j(`forEach${a}Cell`,"rowId: Id, cellCallback: "+Z,"void",K("forEachCell",r+", rowId, cellCallback as any"),Y("Cell",S)),u(R,`[${r}]: {`),B(e,((e,d)=>{const I=P(d,1),b=x(G(d),`'${d}'`),h=e.type,w=!f(_(e,s)),C=e.default,m=`the '${d}' Cell`,L=(e=0)=>`${oe(e)} ${m} for ${S}`;var k;u(R,`[${b}]: {[${W}]: ${x(G(h),`'${h}'`)}${w?`, [${U}]: ${k=C,t(k)==o?x(G(C),`'${C}'`):C}`:""}},`),u($,`'${d}'${w?"":"?"}: ${h};`),u(p,`'${d}'?: ${h};`),u(v,`'${d}'`),u(T,`[cellId: '${d}', cell: ${h}]`),u(g,`[${c}: ${i}, tableId: '${l}', rowId: Id, cellId: '${d}', newCell: ${h} | undefined, oldCell: ${h} | undefined, getCellChange: ${se} | undefined]`);const A="Map"+P(h,1);y(ge,h,A),j(`has${a}${I}Cell`,"rowId: Id",n,K("hasCell",`${r}, rowId, ${b}`),ee(m,S));const O=`${h}${w?"":" | undefined"}`;j(`get${a}${I}Cell`,"rowId: Id",O,K("getCell",`${r}, rowId, ${b}`,O),L()),j(`set${a}${I}Cell`,`rowId: Id, cell: ${h} | ${A}`,i,V("setCell",`${r}, rowId, ${b}, cell as any`),L(1)),j(`del${a}${I}Cell`,"rowId: Id",i,V("delCell",`${r}, rowId, ${b}`),L(3))})),u(R,"},"),u(I,`'${l}'?: ${D};`),u(b,`'${l}'`),u(h,`[tableId: '${l}', forEachRow: (rowCallback: ${H}) => void]`),u(w,`[tableId: '${l}', rowId: Id, cellId: ${Q}]`),u(C,Q),A(F,`{${N($," ")}}`,z()),A(M,`{${N(p," ")}}`,z(1)),A(Q,N(v," | "),"A Cell Id for "+m),A(Z,`(...[cellId, cell]: ${N(T," | ")}) => void`,te("a Cell Id and value from a Row in "+m)),A(H,`(rowId: Id, forEachCell: (cellCallback: ${Z}) => void) => void`,te(`a Row Id from ${m}, and a Cell iterator`))})),j("getJson","","Json",K("getJson"),"Gets a a string serialization the content of the Store"),j("setJson","json: Json",i,V("setJson","json"),"Sets the content of the Store from a serialized string"),j("transaction","actions: () => Return, doRollback?: (changedCells: ChangedCells, invalidCells: InvalidCells) => boolean","Return",K("transaction","actions, doRollback"),"Execute a transaction to make multiple mutations","<Return>"),j("startTransaction","",i,V("startTransaction"),"Explicitly starts a transaction"),j("finishTransaction","doRollback?: (changedCells: ChangedCells, invalidCells: InvalidCells) => boolean,",i,V("finishTransaction","doRollback"),"Explicitly finishes a transaction"),j("addTablesListener",`listener: ${de}, mutator?: boolean`,"Id",m("addTablesListener","","mutator"),H+" whenever the content of the Store changes"),j("addTableIdsListener",`listener: ${ie}, mutator?: boolean`,"Id",m("addTableIdsListener","","mutator"),le("the Table Ids",Z,1)),j("addTableListener",`tableId: ${ae} | null, listener: ${ce}, mutator?: boolean`,"Id",m("addTableListener","tableId","mutator"),le("a Table",Z)),j("addRowIdsListener",`tableId: ${ae} | null, listener: ${$e}, mutator?: boolean`,"Id",m("addRowIdsListener","tableId","mutator"),le("the Row Ids","a Table",1)),j("addRowListener",`tableId: ${ae} | null, rowId: IdOrNull, listener: ${Ie}, mutator?: boolean`,"Id",m("addRowListener","tableId, rowId","mutator"),le("a Row","a Table")),j("addCellIdsListener",`tableId: ${ae} | null, rowId: IdOrNull, listener: ${ue}, mutator?: boolean`,"Id",m("addCellIdsListener","tableId, rowId","mutator"),le("the Cell Ids","a Row",1)),j("addCellListener",`tableId: ${ae} | null, rowId: IdOrNull, cellId: ${N(C," | ")} | null, listener: ${be}, mutator?: boolean`,"Id",m("addCellListener","tableId, rowId, cellId","mutator"),le("a Cell","a Row")),j("addInvalidCellListener",`tableId: IdOrNull, rowId: IdOrNull, cellId: IdOrNull, listener: ${he}, mutator?: boolean`,"Id",m("addCellListener","tableId, rowId, cellId","mutator"),H+" whenever an invalid Cell change was attempted"),j("addWillFinishTransactionListener","listener: "+we,"Id",m("addWillFinishTransactionListener"),H+" just before the end of the transaction"),j("addDidFinishTransactionListener","listener: "+we,"Id",m("addDidFinishTransactionListener"),H+" just after the end of the transaction"),j("callListener","listenerId: Id",i,V("callListener","listenerId"),"Manually provoke a listener to be called"),j("delListener","listenerId: Id",i,V("delListener","listenerId"),"Remove a listener that was previously added to the Store"),j("getStore","","Store","store","Gets the underlying Store object"),A(ne,`{${N(I," ")}}`,"Represents the content of the Store"),A(ae,N(b," | "),"A Table Id in the Store"),A(re,`(...[tableId, rowCallback]: ${N(h," | ")}) => void`,te("a Table Id, and a Row iterator")),A(se,`(...[tableId, rowId, cellId]: ${N(w," | ")}) => CellChange`,"A function that returns information about any Cell's changes during a transaction"),A(be,`(...[${c}, tableId, rowId, cellId, newCell, oldCell, getCellChange]: ${N(g," | ")}) => void`,"A function for listening to changes to a Cell in the Store"),Ce=(e,t)=>k(t,`(cell: ${e} | undefined) => ${e}`,`Takes a ${e} Cell value and returns another`),v(ge,((e,t)=>Ce(t,e))),L(1,`./${d}.d`,...p(ge)),x("store",["createStore().setSchema({",...R,"})"]),x(c,["{",...F(1),"}"]),[S(...E(0),...J(),`export interface ${i} {`,...F(0),"}","",z(`Creates a ${i} object`),`export function create${i}(): ${i};`),S(...E(1),`export const create${i}: typeof create${i}Decl = () => {`,...M(),`return Object.freeze(${c});`,"};")]};var ae=Object.defineProperty,re=Object.getOwnPropertySymbols,se=Object.prototype.hasOwnProperty,de=Object.prototype.propertyIsEnumerable,ie=(e,t,l)=>t in e?ae(e,t,{enumerable:!0,configurable:!0,writable:!0,value:l}):e[t]=l,ce=(e,t)=>{for(var l in t||(t={}))se.call(t,l)&&ie(e,l,t[l]);if(re)for(var l of re(t))de.call(t,l)&&ie(e,l,t[l]);return e};const $e={parser:"typescript",singleQuote:!0,trailingComma:"all",bracketSpacing:!1,jsdocSingleLineComment:!1},Ie=(e=>{const t=new WeakMap;return l=>(t.has(l)||t.set(l,e(l)),t.get(l))})((e=>{const t=()=>{const t=h(e.getSchemaJson());return!Q(t)||d(e.getTableIds(),(l=>{const o=e.getRowIds(l),n=T();if(d(o,(t=>d(e.getCellIds(l,t),(o=>{const a=e.getCell(l,t,o),r=S(n,o,(()=>[U(a),T(),[0],0])),[s,d,[i]]=r,c=S(d,a,(()=>0))+1;return c>i&&(r[2]=[c,a]),y(d,a,c),r[3]++,s==U(a)})))))return t[l]={},v(n,(([e,,[,n],a],d)=>{t[l][d]=ce({[r]:e},a==I(o)?{[s]:n}:{})})),1}))?t:{}},l=e=>ne(t(),e);return W({getStoreStats:t=>{let l=0,o=0,n=0;const a={};return e.forEachTable(((e,r)=>{l++;let s=0,d=0;const i={};r(((e,l)=>{s++;let o=0;l((()=>o++)),d+=o,t&&(i[e]={rowCells:o})})),o+=s,n+=d,t&&(a[e]={tableRows:s,tableCells:d,rows:i})})),ce({totalTables:l,totalRows:o,totalCells:n,jsonLength:J(e.getJson())},t?{detail:{tables:a}}:{})},getStoreSchema:t,getStoreApi:l,getPrettyStoreApi:e=>{return t=void 0,o=null,n=function*(){const t=l(e);try{const{format:e}=yield import("prettier");return $(t,(t=>(e=>e.replace(A,((e,t,l)=>{const o=77-J(t);return`${t}/**\n${l.replace(RegExp(`([^\\n]{1,${o}})(\\s|$)`,"g"),t+" * $1\n")}${t} */`})))(e(t,$e))))}catch(e){}return t},new Promise(((e,l)=>{var a=e=>{try{s(n.next(e))}catch(e){l(e)}},r=e=>{try{s(n.throw(e))}catch(e){l(e)}},s=t=>t.done?e(t.value):Promise.resolve(t.value).then(a,r);s((n=n.apply(t,o)).next())}));var t,o,n}})}));e.createTools=Ie},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseTools={});
|
|
1
|
+
var e,l;e=this,l=function(e){"use strict";const l=e=>typeof e,t="",a=l(t),o=l(!0),n=l(0),r="type",d="default",s=(e,l)=>e.every(l),$=(e,l)=>e.sort(l),i=(e,l)=>e.forEach(l),I=(e,l)=>e.map(l),c=e=>e.length,b=e=>0==c(e),w=(e,...l)=>e.push(...l),u=e=>e.pop(),h=(e,...l)=>e.unshift(...l),C=e=>e.shift(),g=JSON.parse,f=isFinite,T=e=>null==e,p=e=>e==a||e==o,R=e=>l(e)==a,m=e=>Array.isArray(e),v=(e,l)=>{var t;return null!=(t=null==e?void 0:e.has(l))&&t},y=e=>{var l;return[...null!=(l=null==e?void 0:e.values())?l:[]]},L=(e,l)=>null==e?void 0:e.forEach(l),S=(e,l)=>null==e?void 0:e.delete(l),k=e=>new Map(e),j=(e,l)=>null==e?void 0:e.get(l),E=(e,l)=>L(e,((e,t)=>l(t,e))),O=(e,l)=>{var t;return I([...null!=(t=null==e?void 0:e.entries())?t:[]],(([e,t])=>l(t,e)))},x=(e,l,t)=>T(t)?(S(e,l),e):null==e?void 0:e.set(l,t),A=(e,l,t)=>(v(e,l)||x(e,l,t()),j(e,l)),J=e=>new Set(m(e)||T(e)?e:[e]),N=(e,l)=>null==e?void 0:e.add(l),P=e=>[e,e],z=()=>[k(),k()],D=/[^A-Za-z0-9]+/,F=/^( *)\/\*\* *(.*?) *\*\/$/gm,G=(e,l,t)=>e.substring(l,t),M=e=>e.toUpperCase(),W=e=>e.toLowerCase(),_=(e,l,t,a=1)=>{const o=`${l}${1==a?"":a}`;return v(e,o)?_(e,l,t,a+1):(x(e,o,t),o)},B=e=>e.replace(F,((e,l,t)=>{const a=77-Q(l);return`${l}/**\n${t.replace(RegExp(`([^\\n]{1,${a}})(\\s|$)`,"g"),l+" * $1\n")}${l} */`})),Q=e=>e.length,U=(e,l=t)=>e.join(l),Z=e=>e.flat(1e3),q=(e,l=0)=>U(I(e.split(D),((e,t)=>(t>0||l?M:W)(G(e,0,1))+G(e,1)))),H=e=>M(U(e.split(D),"_")),K=e=>`/** ${e}. */`,V=()=>{const e=z(),l=k(),a=k(),o=k();return[(...e)=>U(Z(e),"\n"),(l,t,...a)=>i(a,(a=>N(A(e[l],t,J),a))),(e,t="",a="")=>_(l,e,[t,a]),(e,l,t,o,n,r="")=>_(a,e,[l,t,o,n,r]),(e,l,t)=>_(o,e,m(t)?[`(${l}) => {`,t,"}"]:[`(${l}) => ${t}`]),(e,l)=>j(o,e)===l?e:_(o,e,l),l=>[...$(O(e[l],((e,l)=>`import {${U($(y(e)),", ")}} from '${l}';`))),t],()=>O(l,(([e,l],a)=>[K(l),`export type ${a} = ${e};`,t])),e=>O(a,(([l,a,o,n,r],d)=>{const s=e?[`${d}: ${r}(${l}): ${a} => ${o},`]:[`${d}${r}(${l}): ${a};`];return e||h(s,K(n)),w(s,t),s})),()=>O(o,((e,l)=>(e=m(e)?e:[e],w(e,u(e)+";"),[`const ${l} = ${C(e)}`,e,t])))]},X=Object,Y=X.keys,ee=X.freeze,le=(e,l)=>I(X.entries(e),(([e,t])=>l(t,e))),te=e=>b(Y(e)),ae=e=>{const t=l(e);return p(t)||t==n&&f(e)?t:void 0},oe=e=>{const l=new WeakMap;return t=>(l.has(t)||l.set(t,e(t)),l.get(t))},ne="the content of",re="the Store",de="A function for",se="export",$e="listener",ie=" | undefined",Ie=`Registers a ${$e} that will be called`,ce="Represents",be=" => void",we=`${ne} ${re}`,ue="the end of the transaction",he="the specified Row",Ce=(e,l=0)=>`${ce} a Row when ${l?"s":"g"}etting ${ne} the '${e}' Table`,ge=(e,l,t=0)=>`Gets ${t?"sorted, paginated":"the"} Ids of the ${e}s in ${l}`,fe=(e,l)=>`Calls a function for each ${e} in ${l}`,Te=(e,l=re)=>`Gets whether ${e} exists in ${l}`,pe=e=>"A function that takes "+e,Re=(e=0,l=0)=>`${de} listening to changes to ${xe[e]} in ${xe[l]}`,me=(e,l,t=0)=>`${Ie} whenever ${e} in ${l} change`+(t?"":"s"),ve=(e=0)=>`${Oe[e]} ${we}`,ye=e=>`the '${e}' Table`,Le=e=>`${he} in ${ye(e)}`,Se=e=>`the '${e}' Cell`,ke=(e,l=0)=>`${Oe[l]} ${ne} ${ye(e)}`,je=(e,l=0)=>`${Oe[l]} ${ne} ${Le(e)}`,Ee=(e,l,t=0)=>`${Oe[t]} ${Se(l)} for ${Le(e)}`,Oe=["Gets","Sets","Sets part of","Deletes"],xe=[re,"anything","Table Ids","a Table","Row Ids","a Row","Cell Ids","a Cell","invalid Cell changes"],Ae=["ChangedCells","Id","IdOrNull","Ids","InvalidCells","Json","Store"],Je=(e,l=t,a=t)=>`store.${e}(${l})${a?" as "+a:t}`,Ne=(e,l=t)=>`fluent(() => ${Je(e,l)})`,Pe=(e,l=t,a=t)=>`store.${e}(${l?l+", ":t}proxy(${$e})${a?", "+a:t})`,ze=(e,l)=>{if(te(e))return P(t);const[a,n,s,$,i,I,c,b,w,u]=V(),h=`./${q(l)}.d`,C=q(l,1),g=q(C),f=k(),p=l=>le(e,((e,a)=>l(a,A(f,a,(()=>{const e=q(a,1);return[s(e+"Table",`{[rowId: Id]: ${e}Row}`,`${ce} the '${a}' Table`),s(e+"Row",`{${U(m(a,((e,l,a)=>`'${e}'${T(a)?"?":t}: ${l};`))," ")}}`,Ce(a)),s(e+"RowWhenSet",`{${U(m(a,((e,l)=>`'${e}'?: ${l};`))," ")}}`,Ce(a,1)),s(e+"CellId",U(m(a,(e=>`'${e}'`))," | "),`A Cell Id for the '${a}' Table`),s(e+"CellCallback",`(...[cellId, cell]: ${U(m(a,((e,l)=>`[cellId: '${e}', cell: ${l}]`))," | ")})${be}`,pe(`a Cell Id and value from a Row in the '${a}' Table`)),s(e+"RowCallback",`(rowId: Id, forEachCell: (cellCallback: ${e}CellCallback)${be})${be}`,pe(`a Row Id from the '${a}' Table, and a Cell iterator`))]})),q(a,1),I(H(a),`'${a}'`)))),m=(l,t)=>le(e[l],((e,l)=>t(l,e[r],e[d],I(H(l),`'${l}'`),q(l,1)))),v=s("Tables",`{${U(p(((e,l)=>`'${e}'?: ${l[0]};`))," ")}}`,`${ce} ${we}`),L=s("TableId",U(p((e=>`'${e}'`))," | "),"A Table Id in "+re),S=s("TableCallback",`(...[tableId, rowCallback]: ${U(p(((e,l)=>`[tableId: '${e}', forEachRow: (rowCallback: ${l[5]})${be}]`))," | ")})${be}`,pe("a Table Id, and a Row iterator")),j=s("GetCellChange",`(...[tableId, rowId, cellId]: ${U(p(((e,l)=>`[tableId: '${e}', rowId: Id, cellId: ${l[3]}]`))," | ")}) => CellChange`,de+" returning information about any Cell's changes during a transaction"),O=s("TablesListener",`(${g}: ${C}, getCellChange: ${j}${ie})${be}`,Re(1)),J=s("TableIdsListener",`(${g}: ${C})${be}`,Re(2)),N=s("TableListener",`(${g}: ${C}, tableId: ${L}, getCellChange: ${j}${ie})${be}`,Re(3)),z=s("RowIdsListener",`(${g}: ${C}, tableId: ${L})${be}`,Re(4,3)),D=s("RowListener",`(${g}: ${C}, tableId: ${L}, rowId: Id, getCellChange: ${j}${ie})${be}`,Re(5,3)),F=s("CellIdsListener",`(${g}: ${C}, tableId: ${L}, rowId: Id)`+be,Re(6,5)),G=s("CellListener",`(...[${g}, tableId, rowId, cellId, newCell, oldCell, getCellChange]: ${U(Z(p((e=>m(e,((l,t)=>`[${g}: ${C}, tableId: '${e}', rowId: Id, cellId: '${l}', newCell: ${t}${ie}, oldCell: ${t}${ie}, getCellChange: ${j} | undefined]`)))))," | ")})${be}`,Re(7,5)),M=s("InvalidCellListener",`(${g}: ${C}, tableId: Id, rowId: Id, cellId: Id, invalidCells: any[])${be};`,Re(8)),W=s("TransactionListener",`(${g}: ${C}, cellsTouched: boolean)${be};`,de+" listening to the completion of a transaction");$("hasTables",t,o,Je("hasTables"),Te("any Table")),$("getTables",t,v,Je("getTables"),ve()),$("setTables","tables: "+v,C,Ne("setTables","tables"),ve(1)),$("delTables",t,C,Ne("delTables"),ve(3)),$("getTableIds",t,L+"[]",Je("getTableIds",t,L+"[]"),ge("Table",re)),$("forEachTable","tableCallback: "+S,"void",Je("forEachTable","tableCallback as any"),fe("Table",re));const _=k();return p(((e,[l,a,r,d,s,i],I,c)=>{n(1,h,l,a,r,d,s,i),$(`has${I}Table`,t,o,Je("hasTable",c),Te(ye(e))),$(`get${I}Table`,t,l,Je("getTable",c,l),ke(e)),$(`set${I}Table`,"table: "+l,C,Ne("setTable",c+", table"),ke(e,1)),$(`del${I}Table`,t,C,Ne("delTable",c),ke(e,3)),$(`get${I}RowIds`,t,"Ids",Je("getRowIds",c),ge("Row",ye(e))),$(`get${I}SortedRowIds`,`cellId?: ${d}, descending?: boolean, offset?: number, limit?: number`,"Ids",Je("getSortedRowIds",c+", cellId, descending, offset, limit"),ge("Row",ye(e),1)),$(`forEach${I}Row`,"rowCallback: "+i,"void",Je("forEachRow",c+", rowCallback as any"),fe("Row",ye(e))),$(`has${I}Row`,"rowId: Id",o,Je("hasRow",c+", rowId"),Te(he,ye(e))),$(`get${I}Row`,"rowId: Id",a,Je("getRow",c+", rowId",a),je(e)),$(`set${I}Row`,"rowId: Id, row: "+r,C,Ne("setRow",c+", rowId, row"),je(e,1)),$(`add${I}Row`,"row: "+r,"Id"+ie,Je("addRow",c+", row"),"Adds a new Row to "+ye(e)),$(`set${I}PartialRow`,"rowId: Id, partialRow: "+r,C,Ne("setPartialRow",c+", rowId, partialRow"),je(e,2)),$(`del${I}Row`,"rowId: Id",C,Ne("delRow",c+", rowId"),je(e,3)),$(`get${I}CellIds`,"rowId: Id",d+"[]",Je("getCellIds",c+", rowId",d+"[]"),ge("Cell",Le(e))),$(`forEach${I}Cell`,"rowId: Id, cellCallback: "+s,"void",Je("forEachCell",c+", rowId, cellCallback as any"),fe("Cell",Le(e))),m(e,((l,a,n,r,d)=>{const s="Map"+q(a,1);x(_,a,s),$(`has${I}${d}Cell`,"rowId: Id",o,Je("hasCell",`${c}, rowId, ${r}`),Te(Se(l),Le(e)));const i=`${a}${T(n)?ie:t}`;$(`get${I}${d}Cell`,"rowId: Id",i,Je("getCell",`${c}, rowId, ${r}`,i),Ee(e,l)),$(`set${I}${d}Cell`,`rowId: Id, cell: ${a} | ${s}`,C,Ne("setCell",`${c}, rowId, ${r}, cell as any`),Ee(e,l,1)),$(`del${I}${d}Cell`,"rowId: Id",C,Ne("delCell",`${c}, rowId, ${r}`),Ee(e,l,3))}))})),$("getJson",t,"Json",Je("getJson"),`${Oe[0]} a string serialization ${we}`),$("setJson","json: Json",C,Ne("setJson","json"),`${Oe[1]} ${we} from a serialized string`),$("transaction","actions: () => Return, doRollback?: (changedCells: ChangedCells, invalidCells: InvalidCells) => boolean","Return",Je("transaction","actions, doRollback"),"Execute a transaction to make multiple mutations","<Return>"),$("startTransaction",t,C,Ne("startTransaction"),"Explicitly starts a transaction"),$("finishTransaction","doRollback?: (changedCells: ChangedCells, invalidCells: InvalidCells) => boolean,",C,Ne("finishTransaction","doRollback"),"Explicitly finishes a transaction"),$("addTablesListener",`${$e}: ${O}, mutator?: boolean`,"Id",Pe("addTablesListener",t,"mutator"),`${Ie} whenever ${we} changes`),$("addTableIdsListener",`${$e}: ${J}, mutator?: boolean`,"Id",Pe("addTableIdsListener",t,"mutator"),me("the Table Ids",re,1)),$("addTableListener",`tableId: ${L} | null, ${$e}: ${N}, mutator?: boolean`,"Id",Pe("addTableListener","tableId","mutator"),me("a Table",re)),$("addRowIdsListener",`tableId: ${L} | null, ${$e}: ${z}, mutator?: boolean`,"Id",Pe("addRowIdsListener","tableId","mutator"),me("the Row Ids","a Table",1)),$("addRowListener",`tableId: ${L} | null, rowId: IdOrNull, ${$e}: ${D}, mutator?: boolean`,"Id",Pe("addRowListener","tableId, rowId","mutator"),me("a Row","a Table")),$("addCellIdsListener",`tableId: ${L} | null, rowId: IdOrNull, ${$e}: ${F}, mutator?: boolean`,"Id",Pe("addCellIdsListener","tableId, rowId","mutator"),me("the Cell Ids","a Row",1)),$("addCellListener",`tableId: ${L} | null, rowId: IdOrNull, cellId: ${U(p(((e,l)=>l[3]))," | ")} | null, ${$e}: ${G}, mutator?: boolean`,"Id",Pe("addCellListener","tableId, rowId, cellId","mutator"),me("a Cell","a Row")),$("addInvalidCellListener",`tableId: IdOrNull, rowId: IdOrNull, cellId: IdOrNull, ${$e}: ${M}, mutator?: boolean`,"Id",Pe("addCellListener","tableId, rowId, cellId","mutator"),Ie+" whenever an invalid Cell change was attempted"),$("addWillFinishTransactionListener",`${$e}: ${W}`,"Id",Pe("addWillFinishTransactionListener"),`${Ie} just before ${ue}`),$("addDidFinishTransactionListener",`${$e}: ${W}`,"Id",Pe("addDidFinishTransactionListener"),`${Ie} just after ${ue}`),$("callListener",$e+"Id: Id",C,Ne("callListener",$e+"Id"),`Manually provoke a ${$e} to be called`),$("delListener",$e+"Id: Id",C,Ne("delListener",$e+"Id"),`Remove a ${$e} that was previously added to ${re}`),$("getStore",t,"Store","store",Oe[0]+" the underlying Store object"),E(_,((e,l)=>s(l,`(cell: ${e}${ie}) => ${e}`,`Takes a ${e} Cell value and returns another`))),n(0,"tinybase","CellChange",...Ae),n(1,"tinybase","createStore",...Ae),n(1,h,C,`create${C} as create${C}Decl`,v,L,S,O,J,N,z,D,F,G,M,W,...y(_)),I("store",["createStore().setSchema({",Z(p(((e,l,a,o)=>[`[${o}]: {`,...m(e,((e,l,a,o)=>`[${o}]: {[${I(H(r),`'${r}'`)}]: ${I(H(l),`'${l}'`)}${T(a)?t:`, [${I(H(d),`'${d}'`)}]: ${R(a)?I(H(a),`'${a}'`):a}`}},`)),"},"]))),"})"]),i("fluent","actions: () => Store",["actions();",`return ${g};`]),i("proxy",$e+": any",`(_: Store, ...args: any[]) => ${$e}(${g}, ...args)`),I(g,["{",...w(1),"}"]),[a(...c(0),...b(),`${se} interface ${C} {`,...w(0),"}",t,K(`Creates a ${C} object`),`${se} function create${C}(): ${C};`),a(...c(1),`${se} const create${C}: typeof create${C}Decl = () => {`,...u(),`return Object.freeze(${g});`,"};")]};var De=Object.defineProperty,Fe=Object.getOwnPropertySymbols,Ge=Object.prototype.hasOwnProperty,Me=Object.prototype.propertyIsEnumerable,We=(e,l,t)=>l in e?De(e,l,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[l]=t,_e=(e,l)=>{for(var t in l||(l={}))Ge.call(l,t)&&We(e,t,l[t]);if(Fe)for(var t of Fe(l))Me.call(l,t)&&We(e,t,l[t]);return e},Be=(e,l,t)=>new Promise(((a,o)=>{var n=e=>{try{d(t.next(e))}catch(e){o(e)}},r=e=>{try{d(t.throw(e))}catch(e){o(e)}},d=e=>e.done?a(e.value):Promise.resolve(e.value).then(n,r);d((t=t.apply(e,l)).next())}));const Qe={parser:"typescript",singleQuote:!0,trailingComma:"all",bracketSpacing:!1,jsdocSingleLineComment:!1},Ue=oe((e=>{const l=()=>{const l=g(e.getSchemaJson());return!te(l)||s(e.getTableIds(),(t=>{const a=e.getRowIds(t),o=k();if(s(a,(l=>s(e.getCellIds(t,l),(a=>{const n=e.getCell(t,l,a),r=A(o,a,(()=>[ae(n),k(),[0],0])),[d,s,[$]]=r,i=A(s,n,(()=>0))+1;return i>$&&(r[2]=[i,n]),x(s,n,i),r[3]++,d==ae(n)})))))return l[t]={},L(o,(([e,,[,o],n],s)=>{l[t][s]=_e({[r]:e},n==c(a)?{[d]:o}:{})})),1}))?l:{}},t=e=>ze(l(),e),a=e=>Be(void 0,null,(function*(){let l;try{l=(yield import("prettier")).format}catch(e){l=e=>e}return I(t(e),(e=>B(l(e,Qe))))}));return ee({getStoreStats:l=>{let t=0,a=0,o=0;const n={};return e.forEachTable(((e,r)=>{t++;let d=0,s=0;const $={};r(((e,t)=>{d++;let a=0;t((()=>a++)),s+=a,l&&($[e]={rowCells:a})})),a+=d,o+=s,l&&(n[e]={tableRows:d,tableCells:s,rows:$})})),_e({totalTables:t,totalRows:a,totalCells:o,jsonLength:Q(e.getJson())},l?{detail:{tables:n}}:{})},getStoreSchema:l,getStoreApi:t,getPrettyStoreApi:a})}));e.createTools=Ue},"object"==typeof exports&&"undefined"!=typeof module?l(exports):"function"==typeof define&&define.amd?define(["exports"],l):l((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseTools={});
|
package/lib/umd-es6/tools.js.gz
CHANGED
|
Binary file
|
package/lib/umd-es6/ui-react.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e,s;e=this,s=function(e,s){"use strict";const t=e=>typeof e,o="",l=t(o),r="Tables",n="TableIds",d="Table",u="RowIds",i="SortedRowIds",a="Row",c="CellIds",I="Cell",w=(e,s)=>e.map(s),R=e=>null==e,p=(e,s,t)=>R(e)?null==t?void 0:t():s(e),b=()=>{},{createContext:C,useContext:k}=s,g=C([]),v=(e,s)=>{const t=k(g);return R(e)?t[s]:((e,s)=>p(e,(e=>e[s])))(t[s+1],e)},m=(e,s)=>{const o=v(e,s);return R(e)||(e=>t(e)==l)(e)?o:e},h=e=>m(e,0),y=e=>m(e,2),f=e=>m(e,4),L=e=>m(e,6),S=e=>m(e,8),T=e=>m(e,10),{useCallback:P,useEffect:x,useMemo:V,useRef:q,useState:O}=s,B=(e,s,t=[])=>{const o=V((()=>s(e)),[e,...t]);return x((()=>()=>o.destroy()),[o]),o},M=(e,s,t,o=[],l)=>{const[,r]=O(),n=P((()=>{var l,r;return null!=(r=null==(l=null==s?void 0:s["get"+e])?void 0:l.call(s,...o))?r:t}),[s,...o]),[d]=O(n),u=q(d);return V((()=>u.current=n()),[n]),j(e,s,((...e)=>{u.current=R(l)?n():e[l],r([])}),[],o),u.current},j=(e,s,t,o=[],l=[],...r)=>x((()=>{var o;const n=null==(o=null==s?void 0:s["add"+e+"Listener"])?void 0:o.call(s,...l,t,...r);return()=>null==s?void 0:s.delListener(n)}),[s,...l,...o,...r]),D=(e,s,t,o=[],l=b,r=[],...n)=>{const d=h(e);return P((e=>p(d,(o=>p(t(e,o),(e=>l(o["set"+s](...n,e),e)))))),[d,s,...o,...r,...n])},A=(e,s,t=b,o=[],...l)=>{const r=h(e);return P((()=>t(null==r?void 0:r["del"+s](...l))),[r,s,...o,...l])},E=(e,s,t)=>{const o=T(e);return P((()=>null==o?void 0:o[s](t)),[o,s,t])},F=e=>M(n,h(e),[],[]),G=(e,s)=>M(u,h(s),[],[e]),Q=(e,s,t,o=0,l,r)=>M(i,h(r),[],[e,s,t,o,l],6),U=(e,s,t)=>M(c,h(t),[],[e,s]),z=(e,s,t,o)=>M(I,h(o),void 0,[e,s,t],4),H=(e,s)=>M("Metric",y(s),void 0,[e]),J=(e,s)=>M("SliceIds",f(s),[],[e]),K=(e,s,t)=>M("SliceRowIds",f(t),[],[e,s]),N=(e,s,t)=>M("RemoteRowId",L(t),void 0,[e,s]),W=(e,s,t)=>M("LocalRowIds",L(t),[],[e,s]),X=(e,s,t)=>M("LinkedRowIds",L(t),[],[e,s]),Y=(e,s)=>M("ResultRowIds",S(s),[],[e]),Z=(e,s,t,o=0,l,r)=>M("ResultSortedRowIds",S(r),[],[e,s,t,o,l],6),$=(e,s,t)=>M("ResultCellIds",S(t),[],[e,s]),_=(e,s,t,o)=>M("ResultCell",S(o),void 0,[e,s,t]),ee=e=>M("CheckpointIds",T(e),[[],void 0,[]]),se=(e,s)=>M("Checkpoint",T(s),void 0,[e]),te=e=>E(e,"goBackward"),oe=e=>E(e,"goForward");var le=Object.defineProperty,re=Object.defineProperties,ne=Object.getOwnPropertyDescriptors,de=Object.getOwnPropertySymbols,ue=Object.prototype.hasOwnProperty,ie=Object.prototype.propertyIsEnumerable,ae=(e,s,t)=>s in e?le(e,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[s]=t,ce=(e,s)=>{for(var t in s||(s={}))ue.call(s,t)&&ae(e,t,s[t]);if(de)for(var t of de(s))ie.call(s,t)&&ae(e,t,s[t]);return e},Ie=(e,s)=>re(e,ne(s)),we=(e,s)=>{var t={};for(var o in e)ue.call(e,o)&&s.indexOf(o)<0&&(t[o]=e[o]);if(null!=e&&de)for(var o of de(e))s.indexOf(o)<0&&ie.call(e,o)&&(t[o]=e[o]);return t};const{createElement:Re,useMemo:pe}=s,be=({tableId:e,store:s,rowComponent:t=fe,getRowComponentProps:o,separator:l,debugIds:r},n)=>he(w(n,(l=>Re(t,Ie(ce({},me(o,l)),{key:l,tableId:e,rowId:l,store:s,debugIds:r})))),l,r,e),Ce=({queryId:e,queries:s,resultRowComponent:t=Pe,getResultRowComponentProps:o,separator:l,debugIds:r},n)=>he(w(n,(l=>Re(t,Ie(ce({},me(o,l)),{key:l,queryId:e,rowId:l,queries:s,debugIds:r})))),l,r,e),ke=e=>{const s=L(e);return[s,null==s?void 0:s.getStore()]},ge=({relationshipId:e,relationships:s,rowComponent:t=fe,getRowComponentProps:o,separator:l,debugIds:r},n,d)=>{const[u,i]=ke(s),a=null==u?void 0:u.getLocalTableId(e),c=n(e,d,u);return he(w(c,(e=>Re(t,Ie(ce({},me(o,e)),{key:e,tableId:a,rowId:e,store:i,debugIds:r})))),l,r,d)},ve=e=>({checkpoints:s,checkpointComponent:t=xe,getCheckpointComponentProps:o,separator:l,debugIds:r})=>{const n=T(s);return he(w(e(ee(n)),(e=>Re(t,Ie(ce({},me(o,e)),{key:e,checkpoints:n,checkpointId:e,debugIds:r})))),l)},me=(e,s)=>R(e)?{}:e(s),he=(e,s,t,o)=>{const l=R(s)||!Array.isArray(e)?e:w(e,((e,t)=>t>0?[s,e]:e));return t?[o,":{",l,"}"]:l},ye=({tableId:e,rowId:s,cellId:t,store:l,debugIds:r})=>{var n;return he(o+(null!=(n=z(e,s,t,l))?n:o),void 0,r,t)},fe=({tableId:e,rowId:s,store:t,cellComponent:o=ye,getCellComponentProps:l,separator:r,debugIds:n})=>he(w(U(e,s,t),(r=>Re(o,Ie(ce({},me(l,r)),{key:r,tableId:e,rowId:s,cellId:r,store:t,debugIds:n})))),r,n,s),Le=e=>be(e,G(e.tableId,e.store)),Se=({indexId:e,sliceId:s,indexes:t,rowComponent:o=fe,getRowComponentProps:l,separator:r,debugIds:n})=>{const d=f(t),u=null==d?void 0:d.getStore(),i=null==d?void 0:d.getTableId(e),a=K(e,s,d);return he(w(a,(e=>Re(o,Ie(ce({},me(l,e)),{key:e,tableId:i,rowId:e,store:u,debugIds:n})))),r,n,s)},Te=({queryId:e,rowId:s,cellId:t,queries:l,debugIds:r})=>{var n;return he(o+(null!=(n=_(e,s,t,l))?n:o),void 0,r,t)},Pe=({queryId:e,rowId:s,queries:t,resultCellComponent:o=Te,getResultCellComponentProps:l,separator:r,debugIds:n})=>he(w($(e,s,t),(r=>Re(o,Ie(ce({},me(l,r)),{key:r,queryId:e,rowId:s,cellId:r,queries:t,debugIds:n})))),r,n,s),xe=({checkpoints:e,checkpointId:s,debugIds:t})=>{var l;return he(null!=(l=se(s,e))?l:o,void 0,t,s)},Ve=ve((e=>e[0])),qe=ve((e=>R(e[1])?[]:[e[1]])),Oe=ve((e=>e[2]));e.BackwardCheckpointsView=Ve,e.CellView=ye,e.CheckpointView=xe,e.CurrentCheckpointView=qe,e.ForwardCheckpointsView=Oe,e.IndexView=({indexId:e,indexes:s,sliceComponent:t=Se,getSliceComponentProps:o,separator:l,debugIds:r})=>he(w(J(e,s),(l=>Re(t,Ie(ce({},me(o,l)),{key:l,indexId:e,sliceId:l,indexes:s,debugIds:r})))),l,r,e),e.LinkedRowsView=e=>ge(e,X,e.firstRowId),e.LocalRowsView=e=>ge(e,W,e.remoteRowId),e.MetricView=({metricId:e,metrics:s,debugIds:t})=>{var l;return he(null!=(l=H(e,s))?l:o,void 0,t,e)},e.Provider=({store:e,storesById:t,metrics:o,metricsById:l,indexes:r,indexesById:n,relationships:d,relationshipsById:u,queries:i,queriesById:a,checkpoints:c,checkpointsById:I,children:w})=>{const R=s.useContext(g);return Re(g.Provider,{value:pe((()=>[null!=e?e:R[0],ce(ce({},R[1]),t),null!=o?o:R[2],ce(ce({},R[3]),l),null!=r?r:R[4],ce(ce({},R[5]),n),null!=d?d:R[6],ce(ce({},R[7]),u),null!=i?i:R[8],ce(ce({},R[9]),a),null!=c?c:R[10],ce(ce({},R[11]),I)]),[e,t,o,l,r,n,d,u,i,a,c,I,R])},w)},e.RemoteRowView=({relationshipId:e,localRowId:s,relationships:t,rowComponent:o=fe,getRowComponentProps:l,debugIds:r})=>{const[n,d]=ke(t),u=null==n?void 0:n.getRemoteTableId(e),i=N(e,s,n);return he(R(u)||R(i)?null:Re(o,Ie(ce({},me(l,i)),{key:i,tableId:u,rowId:i,store:d,debugIds:r})),void 0,r,s)},e.ResultCellView=Te,e.ResultRowView=Pe,e.ResultSortedTableView=e=>{var s=e,{cellId:t,descending:o,offset:l,limit:r}=s,n=we(s,["cellId","descending","offset","limit"]);return Ce(n,Z(n.queryId,t,o,l,r,n.queries))},e.ResultTableView=e=>Ce(e,Y(e.queryId,e.queries)),e.RowView=fe,e.SliceView=Se,e.SortedTableView=e=>{var s=e,{cellId:t,descending:o,offset:l,limit:r}=s,n=we(s,["cellId","descending","offset","limit"]);return be(n,Q(n.tableId,t,o,l,r,n.store))},e.TableView=Le,e.TablesView=({store:e,tableComponent:s=Le,getTableComponentProps:t,separator:o,debugIds:l})=>he(w(F(e),(o=>Re(s,Ie(ce({},me(t,o)),{key:o,tableId:o,store:e,debugIds:l})))),o),e.tableView=be,e.useAddRowCallback=(e,s,t=[],o,l=b,r=[])=>{const n=h(o);return P((t=>p(n,(o=>p(s(t,o),(s=>l(o.addRow(e,s),o,s)))))),[n,e,...t,...r])},e.useCell=z,e.useCellIds=U,e.useCellIdsListener=(e,s,t,o,l,r)=>j(c,h(r),t,o,[e,s],l),e.useCellListener=(e,s,t,o,l,r,n)=>j(I,h(n),o,l,[e,s,t],r),e.useCheckpoint=se,e.useCheckpointIds=ee,e.useCheckpointIdsListener=(e,s,t)=>j("CheckpointIds",T(t),e,s),e.useCheckpointListener=(e,s,t,o)=>j("Checkpoint",T(o),s,t,[e]),e.useCheckpoints=e=>v(e,10),e.useCreateCheckpoints=(e,s,t)=>B(e,s,t),e.useCreateIndexes=(e,s,t)=>B(e,s,t),e.useCreateMetrics=(e,s,t)=>B(e,s,t),e.useCreatePersister=(e,s,t=[],o,l=[])=>{const[,r]=O(),n=V((()=>s(e)),[e,...t]);return x((()=>{var e,s,t;return e=void 0,s=null,t=function*(){yield null==o?void 0:o(n),r(1)},new Promise(((o,l)=>{var r=e=>{try{d(t.next(e))}catch(e){l(e)}},n=e=>{try{d(t.throw(e))}catch(e){l(e)}},d=e=>e.done?o(e.value):Promise.resolve(e.value).then(r,n);d((t=t.apply(e,s)).next())})),()=>{n.destroy()}}),[n,...l]),n},e.useCreateQueries=(e,s,t)=>B(e,s,t),e.useCreateRelationships=(e,s,t)=>B(e,s,t),e.useCreateStore=(e,s=[])=>V(e,s),e.useDelCellCallback=(e,s,t,o,l,r,n)=>A(l,I,r,n,e,s,t,o),e.useDelRowCallback=(e,s,t,o,l)=>A(t,a,o,l,e,s),e.useDelTableCallback=(e,s,t,o)=>A(s,d,t,o,e),e.useDelTablesCallback=(e,s,t)=>A(e,r,s,t),e.useGoBackwardCallback=te,e.useGoForwardCallback=oe,e.useGoToCallback=(e,s=[],t,o=b,l=[])=>{const r=T(t);return P((s=>p(r,(t=>p(e(s),(e=>o(t.goTo(e),e)))))),[r,...s,...l])},e.useIndexes=e=>v(e,4),e.useLinkedRowIds=X,e.useLinkedRowIdsListener=(e,s,t,o,l)=>j("LinkedRowIds",L(l),t,o,[e,s]),e.useLocalRowIds=W,e.useLocalRowIdsListener=(e,s,t,o,l)=>j("LocalRowIds",L(l),t,o,[e,s]),e.useMetric=H,e.useMetricListener=(e,s,t,o)=>j("Metric",y(o),s,t,[e]),e.useMetrics=e=>v(e,2),e.useQueries=e=>v(e,8),e.useRedoInformation=e=>{var s;const t=T(e),[,,[l]]=ee(t);return[!R(l),oe(t),l,null!=(s=p(l,(e=>null==t?void 0:t.getCheckpoint(e))))?s:o]},e.useRelationships=e=>v(e,6),e.useRemoteRowId=N,e.useRemoteRowIdListener=(e,s,t,o,l)=>j("RemoteRowId",L(l),t,o,[e,s]),e.useResultCell=_,e.useResultCellIds=$,e.useResultCellIdsListener=(e,s,t,o,l)=>j("ResultCellIds",S(l),t,o,[e,s]),e.useResultCellListener=(e,s,t,o,l,r)=>j("ResultCell",S(r),o,l,[e,s,t]),e.useResultRow=(e,s,t)=>M("ResultRow",S(t),{},[e,s]),e.useResultRowIds=Y,e.useResultRowIdsListener=(e,s,t,o)=>j("ResultRowIds",S(o),s,t,[e]),e.useResultRowListener=(e,s,t,o,l)=>j("ResultRow",S(l),t,o,[e,s]),e.useResultSortedRowIds=Z,e.useResultSortedRowIdsListener=(e,s,t,o,l,r,n,d)=>j("ResultSortedRowIds",S(d),r,n,[e,s,t,o,l]),e.useResultTable=(e,s)=>M("ResultTable",S(s),{},[e]),e.useResultTableListener=(e,s,t,o)=>j("ResultTable",S(o),s,t,[e]),e.useRow=(e,s,t)=>M(a,h(t),{},[e,s]),e.useRowIds=G,e.useRowIdsListener=(e,s,t,o,l)=>j(u,h(l),s,t,[e],o),e.useRowListener=(e,s,t,o,l,r)=>j(a,h(r),t,o,[e,s],l),e.useSetCellCallback=(e,s,t,o,l,r,n,d)=>D(r,I,o,l,n,d,e,s,t),e.useSetCheckpointCallback=(e=b,s=[],t,o=b,l=[])=>{const r=T(t);return P((s=>p(r,(t=>{const l=e(s);o(t.addCheckpoint(l),t,l)}))),[r,...s,...l])},e.useSetPartialRowCallback=(e,s,t,o,l,r,n)=>D(l,"PartialRow",t,o,r,n,e,s),e.useSetRowCallback=(e,s,t,o,l,r,n)=>D(l,a,t,o,r,n,e,s),e.useSetTableCallback=(e,s,t,o,l,r)=>D(o,d,s,t,l,r,e),e.useSetTablesCallback=(e,s,t,o,l)=>D(t,r,e,s,o,l),e.useSliceIds=J,e.useSliceIdsListener=(e,s,t,o)=>j("SliceIds",f(o),s,t,[e]),e.useSliceRowIds=K,e.useSliceRowIdsListener=(e,s,t,o,l)=>j("SliceRowIds",f(l),t,o,[e,s]),e.useSortedRowIds=Q,e.useSortedRowIdsListener=(e,s,t,o,l,r,n,d,u)=>j(i,h(u),r,n,[e,s,t,o,l],d),e.useStore=e=>v(e,0),e.useTable=(e,s)=>M(d,h(s),{},[e]),e.useTableIds=F,e.useTableIdsListener=(e,s,t,o)=>j(n,h(o),e,s,[],t),e.useTableListener=(e,s,t,o,l)=>j(d,h(l),s,t,[e],o),e.useTables=e=>M(r,h(e),{}),e.useTablesListener=(e,s,t,o)=>j(r,h(o),e,s,[],t),e.useUndoInformation=e=>{var s;const t=T(e),[l,r]=ee(t);return[(n=l,!(0==(e=>e.length)(n))),te(t),r,null!=(s=p(r,(e=>null==t?void 0:t.getCheckpoint(e))))?s:o];var n}},"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);
|
|
1
|
+
var e,s;e=this,s=function(e,s){"use strict";const t=e=>typeof e,o="",l=t(o),r="Tables",n="TableIds",d="Table",u="RowIds",i="SortedRowIds",a="Row",c="CellIds",I="Cell",w=(e,s)=>e.map(s),R=e=>null==e,p=(e,s,t)=>R(e)?null==t?void 0:t():s(e),b=()=>{},{createContext:C,useContext:k}=s,g=C([]),v=(e,s)=>{const t=k(g);return R(e)?t[s]:((e,s)=>p(e,(e=>e[s])))(t[s+1],e)},m=(e,s)=>{const o=v(e,s);return R(e)||(e=>t(e)==l)(e)?o:e},h=e=>m(e,0),y=e=>m(e,2),f=e=>m(e,4),L=e=>m(e,6),S=e=>m(e,8),T=e=>m(e,10),{useCallback:P,useEffect:x,useMemo:V,useRef:q,useState:O}=s,B=(e,s,t=[])=>{const o=V((()=>s(e)),[e,...t]);return x((()=>()=>o.destroy()),[o]),o},M=(e,s,t,o=[],l)=>{const[,r]=O(),n=P((()=>{var l,r;return null!=(r=null==(l=null==s?void 0:s["get"+e])?void 0:l.call(s,...o))?r:t}),[s,...o]),[d]=O(n),u=q(d);return V((()=>u.current=n()),[n]),j(e,s,((...e)=>{u.current=R(l)?n():e[l],r([])}),[],o),u.current},j=(e,s,t,o=[],l=[],...r)=>x((()=>{var o;const n=null==(o=null==s?void 0:s["add"+e+"Listener"])?void 0:o.call(s,...l,t,...r);return()=>null==s?void 0:s.delListener(n)}),[s,...l,...o,...r]),D=(e,s,t,o=[],l=b,r=[],...n)=>{const d=h(e);return P((e=>p(d,(o=>p(t(e,o),(e=>l(o["set"+s](...n,e),e)))))),[d,s,...o,...r,...n])},A=(e,s,t=b,o=[],...l)=>{const r=h(e);return P((()=>t(null==r?void 0:r["del"+s](...l))),[r,s,...o,...l])},E=(e,s,t)=>{const o=T(e);return P((()=>null==o?void 0:o[s](t)),[o,s,t])},F=e=>M(n,h(e),[],[]),G=(e,s)=>M(u,h(s),[],[e]),Q=(e,s,t,o=0,l,r)=>M(i,h(r),[],[e,s,t,o,l],6),U=(e,s,t)=>M(c,h(t),[],[e,s]),z=(e,s,t,o)=>M(I,h(o),void 0,[e,s,t],4),H=(e,s)=>M("Metric",y(s),void 0,[e]),J=(e,s)=>M("SliceIds",f(s),[],[e]),K=(e,s,t)=>M("SliceRowIds",f(t),[],[e,s]),N=(e,s,t)=>M("RemoteRowId",L(t),void 0,[e,s]),W=(e,s,t)=>M("LocalRowIds",L(t),[],[e,s]),X=(e,s,t)=>M("LinkedRowIds",L(t),[],[e,s]),Y=(e,s)=>M("ResultRowIds",S(s),[],[e]),Z=(e,s,t,o=0,l,r)=>M("ResultSortedRowIds",S(r),[],[e,s,t,o,l],6),$=(e,s,t)=>M("ResultCellIds",S(t),[],[e,s]),_=(e,s,t,o)=>M("ResultCell",S(o),void 0,[e,s,t]),ee=e=>M("CheckpointIds",T(e),[[],void 0,[]]),se=(e,s)=>M("Checkpoint",T(s),void 0,[e]),te=e=>E(e,"goBackward"),oe=e=>E(e,"goForward");var le=Object.defineProperty,re=Object.defineProperties,ne=Object.getOwnPropertyDescriptors,de=Object.getOwnPropertySymbols,ue=Object.prototype.hasOwnProperty,ie=Object.prototype.propertyIsEnumerable,ae=(e,s,t)=>s in e?le(e,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[s]=t,ce=(e,s)=>{for(var t in s||(s={}))ue.call(s,t)&&ae(e,t,s[t]);if(de)for(var t of de(s))ie.call(s,t)&&ae(e,t,s[t]);return e},Ie=(e,s)=>re(e,ne(s)),we=(e,s)=>{var t={};for(var o in e)ue.call(e,o)&&s.indexOf(o)<0&&(t[o]=e[o]);if(null!=e&&de)for(var o of de(e))s.indexOf(o)<0&&ie.call(e,o)&&(t[o]=e[o]);return t};const{createElement:Re,useMemo:pe}=s,be=({tableId:e,store:s,rowComponent:t=fe,getRowComponentProps:o,separator:l,debugIds:r},n)=>he(w(n,(l=>Re(t,Ie(ce({},me(o,l)),{key:l,tableId:e,rowId:l,store:s,debugIds:r})))),l,r,e),Ce=({queryId:e,queries:s,resultRowComponent:t=Pe,getResultRowComponentProps:o,separator:l,debugIds:r},n)=>he(w(n,(l=>Re(t,Ie(ce({},me(o,l)),{key:l,queryId:e,rowId:l,queries:s,debugIds:r})))),l,r,e),ke=e=>{const s=L(e);return[s,null==s?void 0:s.getStore()]},ge=({relationshipId:e,relationships:s,rowComponent:t=fe,getRowComponentProps:o,separator:l,debugIds:r},n,d)=>{const[u,i]=ke(s),a=null==u?void 0:u.getLocalTableId(e),c=n(e,d,u);return he(w(c,(e=>Re(t,Ie(ce({},me(o,e)),{key:e,tableId:a,rowId:e,store:i,debugIds:r})))),l,r,d)},ve=e=>({checkpoints:s,checkpointComponent:t=xe,getCheckpointComponentProps:o,separator:l,debugIds:r})=>{const n=T(s);return he(w(e(ee(n)),(e=>Re(t,Ie(ce({},me(o,e)),{key:e,checkpoints:n,checkpointId:e,debugIds:r})))),l)},me=(e,s)=>R(e)?{}:e(s),he=(e,s,t,o)=>{const l=R(s)||!Array.isArray(e)?e:w(e,((e,t)=>t>0?[s,e]:e));return t?[o,":{",l,"}"]:l},ye=({tableId:e,rowId:s,cellId:t,store:l,debugIds:r})=>{var n;return he(o+(null!=(n=z(e,s,t,l))?n:o),void 0,r,t)},fe=({tableId:e,rowId:s,store:t,cellComponent:o=ye,getCellComponentProps:l,separator:r,debugIds:n})=>he(w(U(e,s,t),(r=>Re(o,Ie(ce({},me(l,r)),{key:r,tableId:e,rowId:s,cellId:r,store:t,debugIds:n})))),r,n,s),Le=e=>be(e,G(e.tableId,e.store)),Se=({indexId:e,sliceId:s,indexes:t,rowComponent:o=fe,getRowComponentProps:l,separator:r,debugIds:n})=>{const d=f(t),u=null==d?void 0:d.getStore(),i=null==d?void 0:d.getTableId(e),a=K(e,s,d);return he(w(a,(e=>Re(o,Ie(ce({},me(l,e)),{key:e,tableId:i,rowId:e,store:u,debugIds:n})))),r,n,s)},Te=({queryId:e,rowId:s,cellId:t,queries:l,debugIds:r})=>{var n;return he(o+(null!=(n=_(e,s,t,l))?n:o),void 0,r,t)},Pe=({queryId:e,rowId:s,queries:t,resultCellComponent:o=Te,getResultCellComponentProps:l,separator:r,debugIds:n})=>he(w($(e,s,t),(r=>Re(o,Ie(ce({},me(l,r)),{key:r,queryId:e,rowId:s,cellId:r,queries:t,debugIds:n})))),r,n,s),xe=({checkpoints:e,checkpointId:s,debugIds:t})=>{var l;return he(null!=(l=se(s,e))?l:o,void 0,t,s)},Ve=ve((e=>e[0])),qe=ve((e=>R(e[1])?[]:[e[1]])),Oe=ve((e=>e[2]));e.BackwardCheckpointsView=Ve,e.CellView=ye,e.CheckpointView=xe,e.CurrentCheckpointView=qe,e.ForwardCheckpointsView=Oe,e.IndexView=({indexId:e,indexes:s,sliceComponent:t=Se,getSliceComponentProps:o,separator:l,debugIds:r})=>he(w(J(e,s),(l=>Re(t,Ie(ce({},me(o,l)),{key:l,indexId:e,sliceId:l,indexes:s,debugIds:r})))),l,r,e),e.LinkedRowsView=e=>ge(e,X,e.firstRowId),e.LocalRowsView=e=>ge(e,W,e.remoteRowId),e.MetricView=({metricId:e,metrics:s,debugIds:t})=>{var l;return he(null!=(l=H(e,s))?l:o,void 0,t,e)},e.Provider=({store:e,storesById:t,metrics:o,metricsById:l,indexes:r,indexesById:n,relationships:d,relationshipsById:u,queries:i,queriesById:a,checkpoints:c,checkpointsById:I,children:w})=>{const R=s.useContext(g);return Re(g.Provider,{value:pe((()=>[null!=e?e:R[0],ce(ce({},R[1]),t),null!=o?o:R[2],ce(ce({},R[3]),l),null!=r?r:R[4],ce(ce({},R[5]),n),null!=d?d:R[6],ce(ce({},R[7]),u),null!=i?i:R[8],ce(ce({},R[9]),a),null!=c?c:R[10],ce(ce({},R[11]),I)]),[e,t,o,l,r,n,d,u,i,a,c,I,R])},w)},e.RemoteRowView=({relationshipId:e,localRowId:s,relationships:t,rowComponent:o=fe,getRowComponentProps:l,debugIds:r})=>{const[n,d]=ke(t),u=null==n?void 0:n.getRemoteTableId(e),i=N(e,s,n);return he(R(u)||R(i)?null:Re(o,Ie(ce({},me(l,i)),{key:i,tableId:u,rowId:i,store:d,debugIds:r})),void 0,r,s)},e.ResultCellView=Te,e.ResultRowView=Pe,e.ResultSortedTableView=e=>{var s=e,{cellId:t,descending:o,offset:l,limit:r}=s,n=we(s,["cellId","descending","offset","limit"]);return Ce(n,Z(n.queryId,t,o,l,r,n.queries))},e.ResultTableView=e=>Ce(e,Y(e.queryId,e.queries)),e.RowView=fe,e.SliceView=Se,e.SortedTableView=e=>{var s=e,{cellId:t,descending:o,offset:l,limit:r}=s,n=we(s,["cellId","descending","offset","limit"]);return be(n,Q(n.tableId,t,o,l,r,n.store))},e.TableView=Le,e.TablesView=({store:e,tableComponent:s=Le,getTableComponentProps:t,separator:o,debugIds:l})=>he(w(F(e),(o=>Re(s,Ie(ce({},me(t,o)),{key:o,tableId:o,store:e,debugIds:l})))),o),e.tableView=be,e.useAddRowCallback=(e,s,t=[],o,l=b,r=[])=>{const n=h(o);return P((t=>p(n,(o=>p(s(t,o),(s=>l(o.addRow(e,s),o,s)))))),[n,e,...t,...r])},e.useCell=z,e.useCellIds=U,e.useCellIdsListener=(e,s,t,o,l,r)=>j(c,h(r),t,o,[e,s],l),e.useCellListener=(e,s,t,o,l,r,n)=>j(I,h(n),o,l,[e,s,t],r),e.useCheckpoint=se,e.useCheckpointIds=ee,e.useCheckpointIdsListener=(e,s,t)=>j("CheckpointIds",T(t),e,s),e.useCheckpointListener=(e,s,t,o)=>j("Checkpoint",T(o),s,t,[e]),e.useCheckpoints=e=>v(e,10),e.useCreateCheckpoints=(e,s,t)=>B(e,s,t),e.useCreateIndexes=(e,s,t)=>B(e,s,t),e.useCreateMetrics=(e,s,t)=>B(e,s,t),e.useCreatePersister=(e,s,t=[],o,l=[])=>{const[,r]=O(),n=V((()=>s(e)),[e,...t]);return x((()=>{var e;return e=function*(){yield null==o?void 0:o(n),r(1)},new Promise(((s,t)=>{var o=s=>{try{r(e.next(s))}catch(e){t(e)}},l=s=>{try{r(e.throw(s))}catch(e){t(e)}},r=e=>e.done?s(e.value):Promise.resolve(e.value).then(o,l);r((e=e.apply(void 0,null)).next())})),()=>{n.destroy()}}),[n,...l]),n},e.useCreateQueries=(e,s,t)=>B(e,s,t),e.useCreateRelationships=(e,s,t)=>B(e,s,t),e.useCreateStore=(e,s=[])=>V(e,s),e.useDelCellCallback=(e,s,t,o,l,r,n)=>A(l,I,r,n,e,s,t,o),e.useDelRowCallback=(e,s,t,o,l)=>A(t,a,o,l,e,s),e.useDelTableCallback=(e,s,t,o)=>A(s,d,t,o,e),e.useDelTablesCallback=(e,s,t)=>A(e,r,s,t),e.useGoBackwardCallback=te,e.useGoForwardCallback=oe,e.useGoToCallback=(e,s=[],t,o=b,l=[])=>{const r=T(t);return P((s=>p(r,(t=>p(e(s),(e=>o(t.goTo(e),e)))))),[r,...s,...l])},e.useIndexes=e=>v(e,4),e.useLinkedRowIds=X,e.useLinkedRowIdsListener=(e,s,t,o,l)=>j("LinkedRowIds",L(l),t,o,[e,s]),e.useLocalRowIds=W,e.useLocalRowIdsListener=(e,s,t,o,l)=>j("LocalRowIds",L(l),t,o,[e,s]),e.useMetric=H,e.useMetricListener=(e,s,t,o)=>j("Metric",y(o),s,t,[e]),e.useMetrics=e=>v(e,2),e.useQueries=e=>v(e,8),e.useRedoInformation=e=>{var s;const t=T(e),[,,[l]]=ee(t);return[!R(l),oe(t),l,null!=(s=p(l,(e=>null==t?void 0:t.getCheckpoint(e))))?s:o]},e.useRelationships=e=>v(e,6),e.useRemoteRowId=N,e.useRemoteRowIdListener=(e,s,t,o,l)=>j("RemoteRowId",L(l),t,o,[e,s]),e.useResultCell=_,e.useResultCellIds=$,e.useResultCellIdsListener=(e,s,t,o,l)=>j("ResultCellIds",S(l),t,o,[e,s]),e.useResultCellListener=(e,s,t,o,l,r)=>j("ResultCell",S(r),o,l,[e,s,t]),e.useResultRow=(e,s,t)=>M("ResultRow",S(t),{},[e,s]),e.useResultRowIds=Y,e.useResultRowIdsListener=(e,s,t,o)=>j("ResultRowIds",S(o),s,t,[e]),e.useResultRowListener=(e,s,t,o,l)=>j("ResultRow",S(l),t,o,[e,s]),e.useResultSortedRowIds=Z,e.useResultSortedRowIdsListener=(e,s,t,o,l,r,n,d)=>j("ResultSortedRowIds",S(d),r,n,[e,s,t,o,l]),e.useResultTable=(e,s)=>M("ResultTable",S(s),{},[e]),e.useResultTableListener=(e,s,t,o)=>j("ResultTable",S(o),s,t,[e]),e.useRow=(e,s,t)=>M(a,h(t),{},[e,s]),e.useRowIds=G,e.useRowIdsListener=(e,s,t,o,l)=>j(u,h(l),s,t,[e],o),e.useRowListener=(e,s,t,o,l,r)=>j(a,h(r),t,o,[e,s],l),e.useSetCellCallback=(e,s,t,o,l,r,n,d)=>D(r,I,o,l,n,d,e,s,t),e.useSetCheckpointCallback=(e=b,s=[],t,o=b,l=[])=>{const r=T(t);return P((s=>p(r,(t=>{const l=e(s);o(t.addCheckpoint(l),t,l)}))),[r,...s,...l])},e.useSetPartialRowCallback=(e,s,t,o,l,r,n)=>D(l,"PartialRow",t,o,r,n,e,s),e.useSetRowCallback=(e,s,t,o,l,r,n)=>D(l,a,t,o,r,n,e,s),e.useSetTableCallback=(e,s,t,o,l,r)=>D(o,d,s,t,l,r,e),e.useSetTablesCallback=(e,s,t,o,l)=>D(t,r,e,s,o,l),e.useSliceIds=J,e.useSliceIdsListener=(e,s,t,o)=>j("SliceIds",f(o),s,t,[e]),e.useSliceRowIds=K,e.useSliceRowIdsListener=(e,s,t,o,l)=>j("SliceRowIds",f(l),t,o,[e,s]),e.useSortedRowIds=Q,e.useSortedRowIdsListener=(e,s,t,o,l,r,n,d,u)=>j(i,h(u),r,n,[e,s,t,o,l],d),e.useStore=e=>v(e,0),e.useTable=(e,s)=>M(d,h(s),{},[e]),e.useTableIds=F,e.useTableIdsListener=(e,s,t,o)=>j(n,h(o),e,s,[],t),e.useTableListener=(e,s,t,o,l)=>j(d,h(l),s,t,[e],o),e.useTables=e=>M(r,h(e),{}),e.useTablesListener=(e,s,t,o)=>j(r,h(o),e,s,[],t),e.useUndoInformation=e=>{var s;const t=T(e),[l,r]=ee(t);return[(n=l,!(0==(e=>e.length)(n))),te(t),r,null!=(s=p(r,(e=>null==t?void 0:t.getCheckpoint(e))))?s:o];var n}},"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);
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tinybase",
|
|
3
|
-
"version": "2.2.0-beta.
|
|
3
|
+
"version": "2.2.0-beta.1",
|
|
4
4
|
"author": "jamesgpearce",
|
|
5
5
|
"repository": "github:tinyplex/tinybase",
|
|
6
6
|
"license": "MIT",
|
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
"test": "gulp --series testUnit testPerf",
|
|
47
47
|
"compileForTest": "gulp compileForTest",
|
|
48
48
|
"compileForProd": "gulp compileForProd",
|
|
49
|
+
"compileForCli": "gulp compileForCli",
|
|
49
50
|
"testUnit": "gulp testUnit",
|
|
50
51
|
"testUnitCountAsserts": "gulp testUnitCountAsserts",
|
|
51
52
|
"compileAndTestUnitSaveCoverage": "gulp compileAndTestUnitSaveCoverage",
|
|
@@ -89,13 +90,13 @@
|
|
|
89
90
|
"babel-preset-minify": "^0.5.2",
|
|
90
91
|
"buffer-replace": "^1.0.0",
|
|
91
92
|
"country-flag-emoji-json": "^2.0.0",
|
|
92
|
-
"cspell": "^6.14.
|
|
93
|
-
"esbuild": "^0.15.
|
|
94
|
-
"eslint": "^8.
|
|
93
|
+
"cspell": "^6.14.3",
|
|
94
|
+
"esbuild": "^0.15.15",
|
|
95
|
+
"eslint": "^8.28.0",
|
|
95
96
|
"eslint-config-prettier": "^8.5.0",
|
|
96
97
|
"eslint-plugin-jest": "^27.1.5",
|
|
97
98
|
"eslint-plugin-jsdoc": "^39.6.2",
|
|
98
|
-
"eslint-plugin-react": "^7.31.
|
|
99
|
+
"eslint-plugin-react": "^7.31.11",
|
|
99
100
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
100
101
|
"gulp": "^4.0.2",
|
|
101
102
|
"gulp-gzip": "^1.4.2",
|
package/readme.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<section id="hero"><h2 id="the-reactive-data-store-for-local-first-apps">The <em>reactive</em> data store for local‑first apps.</h2><p>Modern apps deserve better. Why trade reactive user experiences to be able to use relational data? Why sacrifice store features for bundle size? And why should the cloud do all the work <a href="https://www.inkandswitch.com/local-first/" target="_blank">anyway</a>?</p><p><em>TinyBase is a smart new way to structure your local app data:</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 your UI only spends cycles on the data that changes.</li><li><
|
|
1
|
+
<section id="hero"><h2 id="the-reactive-data-store-for-local-first-apps">The <em>reactive</em> data store for local‑first apps.</h2><p>Modern apps deserve better. Why trade reactive user experiences to be able to use relational data? Why sacrifice store features for bundle size? And why should the cloud do all the work <a href="https://www.inkandswitch.com/local-first/" target="_blank">anyway</a>?</p><p><em>TinyBase is a smart new way to structure your local app data:</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 your UI only spends cycles on the data that changes.</li><li><a href="#build-complex-queries-with-tinyql">Powerful query engine</a> to select, join, filter, group, sort and paginate data - reactively.</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-hooks-to-bind-to-data">idiomatic bindings</a> to your UI.</li><li><em>NEW!</em> <a href="#generate-orm-like-apis">Generate ORM-like APIs</a> in TypeScript, based on your schema or inferred from actual data.</li></ul><p><em>Tiny by name, tiny by nature</em>, TinyBase only costs <a href="#did-we-say-tiny">3.5kB - 7.9kB</a> when compressed, and has zero dependencies. And of course it's <a href="#well-tested-and-documented">well tested</a>, <a href="https://beta.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://beta.tinybase.org/guides/faq/">FAQs</a>?</p></section><p><a id="new" href="https://beta.tinybase.org/guides/releases/#v2-2"><em>NEW!</em> v2.2 release</a></p><hr><p><a id="start" href="https://beta.tinybase.org/guides/the-basics/getting-started">Get started</a></p><p><a href="https://beta.tinybase.org/demos">Try the demos</a></p><p><a href="https://beta.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://beta.tinybase.org/api/store/interfaces/store/store"><code>Store</code></a> requires just a simple call to the <a href="https://beta.tinybase.org/api/store/functions/creation/createstore"><code>createStore</code></a> function. Once you have one, you can easily set <a href="https://beta.tinybase.org/api/store/type-aliases/store/table"><code>Table</code></a>, <a href="https://beta.tinybase.org/api/store/type-aliases/store/row"><code>Row</code></a>, or <a href="https://beta.tinybase.org/api/store/type-aliases/store/cell"><code>Cell</code></a> values by their <a href="https://beta.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://beta.tinybase.org/guides/the-basics">The Basics</a> guide.</p></section>
|
|
2
2
|
|
|
3
3
|
```js
|
|
4
4
|
const store = createStore()
|
|
@@ -235,4 +235,23 @@ console.log(store.getCell('pets', 'felix', 'sold'));
|
|
|
235
235
|
// -> false
|
|
236
236
|
```
|
|
237
237
|
|
|
238
|
-
<section><h2 id="
|
|
238
|
+
<section><h2 id="generate-orm-like-apis">Generate ORM-like APIs</h2><p>You can easily create TypeScript <code>.d.ts</code> definitions that model your data and encourage type-safety when reading and writing data - as well as <code>.ts</code> implementations that provide ORM-like methods for your named tables.</p><p>Read more about TinyBase's tools and CLI in the <a href="https://beta.tinybase.org/guides/developer-tools">Developer Tools</a> guide.</p></section>
|
|
239
|
+
|
|
240
|
+
```js
|
|
241
|
+
const tools = createTools(store);
|
|
242
|
+
const [dTs, ts] = tools.getStoreApi('shop');
|
|
243
|
+
|
|
244
|
+
// -- shop.d.ts --
|
|
245
|
+
/* Represents the 'pets' Table. */
|
|
246
|
+
export type PetsTable = {[rowId: Id]: PetsRow};
|
|
247
|
+
/* Represents a Row when getting the content of the 'pets' Table. */
|
|
248
|
+
export type PetsRow = {species: string /* ... */};
|
|
249
|
+
//...
|
|
250
|
+
|
|
251
|
+
// -- shop.ts --
|
|
252
|
+
export const createShop: typeof createShopDecl = () => {
|
|
253
|
+
//...
|
|
254
|
+
};
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
<section><h2 id="did-we-say-tiny">Did we say tiny?</h2><p>If you use the basic <a href="https://beta.tinybase.org/api/store"><code>store</code></a> module alone, you'll only add a gzipped <em>3.5kB</em> to your app. You can incrementally add the other modules as you need more functionality, or get it all for <em>7.9kB</em>.</p><p>The <code>ui-react</code> adaptor is just another <em>3.2kB</em>, the developer <a href="https://beta.tinybase.org/api/tools"><code>tools</code></a> module is <em>4.7kB</em>, and everything is fast. Life's easy when you have zero dependencies!</p><p>Read more about how TinyBase is structured in the <a href="https://beta.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://beta.tinybase.org/api/store">store</a></th><td>3.5kB</td><td>7.7kB</td><td>33.2kB</td><td>127.2kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/metrics">metrics</a></th><td>1.8kB</td><td>3.5kB</td><td>14.7kB</td><td>29.1kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/indexes">indexes</a></th><td>1.9kB</td><td>3.7kB</td><td>16.5kB</td><td>33.9kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/relationships">relationships</a></th><td>1.8kB</td><td>3.6kB</td><td>16.6kB</td><td>42.1kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/queries">queries</a></th><td>2.6kB</td><td>5.5kB</td><td>24.9kB</td><td>106.8kB</td></tr><tr><th class="right"><a href="https://beta.tinybase.org/api/checkpoints">checkpoints</a></th><td>1.4kB</td><td>2.8kB</td><td>11.3kB</td><td>33.0kB</td></tr><tr><th class="right"><a href="https://beta.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://beta.tinybase.org/api/common">common</a></th><td>0.1kB</td><td>0.1kB</td><td>0.1kB</td><td>3.5kB</td></tr><tr><th class="right">tinybase (all)</th><td>7.9kB</td><td>18.4kB</td><td>81.0kB</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://beta.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,249</td><td>1,249</td><td>100.0%</td></tr><tr><th class="right">Statements</th><td>1,353</td><td>1,353</td><td>100.0%</td></tr><tr><th class="right">Functions</th><td>511</td><td>511</td><td>100.0%</td></tr><tr><th class="right">Branches</th><td>471</td><td>471</td><td>100.0%</td></tr><tr><th class="right">Tests</th><td colspan="3">2,147</td></tr><tr><th class="right">Assertions</th><td colspan="3">11,037</td></tr></tbody></table></div><hr><p><a id="start" href="https://beta.tinybase.org/guides/the-basics/getting-started">Get started</a></p><p><a href="https://beta.tinybase.org/demos">Try the demos</a></p><p><a href="https://beta.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://beta.tinybase.org/guides/releases/">Release notes</a> for each version.</li><li>Packages on <a href="https://www.npmjs.com/package/tinybase/v/2.2.0-beta.1">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 could not have been built without these great <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/credits/#giants">projects</a> and <a href="https://beta.tinybase.org/guides/how-tinybase-is-built/credits/#and-friends">friends</a>, and we hope you enjoy using it!</p></section>
|