tinybase 2.1.1 → 2.2.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/cli.js +2 -0
- package/lib/checkpoints.d.ts +0 -2
- package/lib/checkpoints.js +1 -1
- package/lib/checkpoints.js.gz +0 -0
- package/lib/debug/checkpoints.d.ts +0 -2
- package/lib/debug/checkpoints.js +4 -2
- package/lib/debug/indexes.d.ts +0 -2
- package/lib/debug/indexes.js +2 -1
- package/lib/debug/metrics.d.ts +0 -2
- package/lib/debug/metrics.js +2 -1
- package/lib/debug/queries.d.ts +0 -2
- package/lib/debug/relationships.d.ts +0 -2
- package/lib/debug/relationships.js +2 -1
- package/lib/debug/store.d.ts +1 -1
- package/lib/debug/store.js +10 -12
- package/lib/debug/tinybase.js +12 -13
- package/lib/debug/tools.d.ts +290 -0
- package/lib/debug/tools.js +955 -0
- package/lib/es6/checkpoints.d.ts +0 -2
- package/lib/es6/checkpoints.js +1 -1
- package/lib/es6/checkpoints.js.gz +0 -0
- package/lib/es6/indexes.d.ts +0 -2
- package/lib/es6/metrics.d.ts +0 -2
- package/lib/es6/queries.d.ts +0 -2
- package/lib/es6/relationships.d.ts +0 -2
- package/lib/es6/store.d.ts +1 -1
- 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 +290 -0
- package/lib/es6/tools.js +1 -0
- package/lib/es6/tools.js.gz +0 -0
- package/lib/indexes.d.ts +0 -2
- package/lib/metrics.d.ts +0 -2
- package/lib/queries.d.ts +0 -2
- package/lib/relationships.d.ts +0 -2
- package/lib/store.d.ts +1 -1
- 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 +290 -0
- package/lib/tools.js +1 -0
- package/lib/tools.js.gz +0 -0
- package/lib/umd/checkpoints.d.ts +0 -2
- package/lib/umd/checkpoints.js +1 -1
- package/lib/umd/checkpoints.js.gz +0 -0
- package/lib/umd/indexes.d.ts +0 -2
- package/lib/umd/metrics.d.ts +0 -2
- package/lib/umd/queries.d.ts +0 -2
- package/lib/umd/relationships.d.ts +0 -2
- package/lib/umd/store.d.ts +1 -1
- 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 +290 -0
- package/lib/umd/tools.js +1 -0
- package/lib/umd/tools.js.gz +0 -0
- package/lib/umd-es6/checkpoints.d.ts +0 -2
- package/lib/umd-es6/checkpoints.js +1 -1
- package/lib/umd-es6/checkpoints.js.gz +0 -0
- package/lib/umd-es6/indexes.d.ts +0 -2
- package/lib/umd-es6/metrics.d.ts +0 -2
- package/lib/umd-es6/queries.d.ts +0 -2
- package/lib/umd-es6/relationships.d.ts +0 -2
- package/lib/umd-es6/store.d.ts +1 -1
- 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 +290 -0
- package/lib/umd-es6/tools.js +1 -0
- package/lib/umd-es6/tools.js.gz +0 -0
- package/package.json +24 -15
- package/readme.md +12 -12
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),s=n(!0),l=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==s,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)),se=(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},le=(e,t)=>{const n=_(),r=null!=t?t:e=>e;return Y(e,((e,t)=>n.set(t,r(e)))),n},ie=e=>le(e,le),ae=(e,t,n,r,o=0)=>W((n?oe:te)(e,t[o],o>x(t)-2?n:_),(s=>{if(o>x(t)-2)return(null==r?void 0:r(s))&&re(e,t[o]),s;const l=ae(s,t,n,r,o+1);return U(s)&&re(e,t[o]),l})),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=_(),s=_(),l=_(),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(s,e)||(re(s,e,t()),re(l,e,_()),re(i,e,_()))},v=e=>{re(o,e),re(s,e),re(l,e),re(i,e),c(e)};return[()=>e,()=>ee(o),e=>ne(s,e),e=>K(s,e),e=>te(o,e),e=>te(s,e),(e,t)=>re(s,e,t),u,(t,o,s,a,v)=>{u(t,o);const f=_(),h=_(),g=te(l,t),p=te(i,t),y=t=>{const s=n=>e.getCell(o,t,n),l=te(g,t),i=r(o,t)?n(a(s,t)):void 0;if(l===i||H(l)&&H(i)&&I(l,i)||re(f,t,[l,i]),!N(v)){const e=te(p,t),n=r(o,t)?v(s,t):void 0;e!=n&&re(h,t,n)}},w=e=>{s((()=>{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(),s=_();return[(o,l,i)=>{null!=t||(t=e());const a=n();return re(s,a,[o,l,i]),ce(ae(l,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(s,e)[0](t,...null!=n?n:[],...o))))),e=>W(te(s,e),(([,t,n])=>(ae(t,null!=n?n:[r],void 0,(t=>(Z(t,e),U(t)?1:0))),re(s,e),o(e),n))),(e,n,r)=>W(te(s,e),(([e,,o=[]])=>{const s=(...l)=>{const i=x(l);i==x(o)?e(t,...l,...r(l)):N(o[i])?b(n[i](...l),(e=>s(...l,e))):s(...l,o[i])};s()}))]},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==l&&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,s=100,l=_(),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,s)=>Ce(e,r,o,s,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)-s),S=e.addCellListener(null,null,null,((e,n,r,s,a,d)=>{if(i){W(t,(()=>{M(g,t),I(),R(p),t=void 0,o=1}));const e=oe(l,n,_),i=oe(e,r,_),c=oe(i,s,(()=>[d,void 0]));c[1]=a,c[0]===a&&U(re(i,s))&&U(re(e,r))&&U(re(l,n))&&(t=A(g),o=1),P()}})),T=(e="")=>(N(t)&&(t=r+n++,re(f,t,l),O(t,e),l=_(),o=1),t),m=()=>{E(g)||(p.unshift(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=>(s=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,s,l,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,s,l,i=Ee)=>{const a=N(l)?void 0:([e],[t])=>l(e,t);return u(e,r,((r,o,l,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(s)||ce(y,e)}))})),r(),U(v)||(f?ne(w,(e=>ce(y,e))):ne(l,(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(s,ve)),L},delIndexDefinition:e=>(v(e),L),getStore:o,getIndexIds:s,forEachIndex:e=>l(((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,s=!1)=>{if(U(n))return;const[l,i,a,d]=o;return s||(s=N(e)),Y(r,(([n,r])=>{s||(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),s||(s=N(e)))})),s?l(V(n),G(n)):e},Ae=fe((e=>{const t=_(),[n,o,s,l,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,s,l,i)=>{var u;const v=q(r)?[r,s,l,i]:null!=(u=te(ke,r))?u:te(ke,"sum");return c(e,n,((n,r,o,s,l,i)=>{const c=a(e),u=G(s);i||(i=N(c)),n();let f=Me(c,u,s,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:s,hasMetric:l,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 s=e=>{try{i(n.next(e))}catch(e){o(e)}},l=e=>{try{i(n.throw(e))}catch(e){o(e)}},i=e=>e.done?r(e.value):Promise.resolve(e.value).then(s,l);i((n=n.apply(e,t)).next())}));const Oe=(e,t,n,o,s)=>{let l,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:()=>(s(),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(),l=e.addTablesListener((()=>a.save())),a})),stopAutoSave:()=>(W(l,e.delListener),a),getStore:()=>e,destroy:()=>a.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return Re(a)};var Fe=(e,t,n)=>new Promise(((r,o)=>{var s=e=>{try{i(n.next(e))}catch(e){o(e)}},l=e=>{try{i(n.throw(e))}catch(e){o(e)}},i=e=>e.done?r(e.value):Promise.resolve(e.value).then(s,l);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 s=e=>{try{i(n.next(e))}catch(e){o(e)}},l=e=>{try{i(n.throw(e))}catch(e){o(e)}},i=e=>e.done?r(e.value):Promise.resolve(e.value).then(s,l);i((n=n.apply(e,t)).next())})),Ne=(e,t,n)=>new Promise(((r,o)=>{var s=e=>{try{i(n.next(e))}catch(e){o(e)}},l=e=>{try{i(n.throw(e))}catch(e){o(e)}},i=e=>e.done?r(e.value):Promise.resolve(e.value).then(s,l);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,s,l,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 s=[],l=[[null,[n,null,null,[],_()]]],i=[],d=[],c=[];o({select:(e,t)=>{const n=q(e)?[x(s)+r,e]:[N(t)?e:t,n=>n(e,t)];return M(s,n),{as:e=>n[0]=e}},join:(e,t,n)=>{const r=N(n)||q(t)?null:t,o=N(r)?t:n,s=[e,[e,r,q(o)?o:e=>e(o),[],_()]];return M(l,s),{as:e=>s[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 s;const l=[e,[e,q(t)?[t,n,r,o]:null!=(s=te(ke,t))?s:[(e,t)=>t]]];return M(d,l),{as:e=>l[0]=e}},having:(e,t)=>M(c,q(e)?e:n=>n(e)===t)});const u=_(s);if(U(u))return A;const v=_(l);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,s)=>W(n,(([l,i,a,d])=>{ne(r,((t,[n])=>{const r=oe(l,t,_),i=te(r,o),a=s?void 0:n;if(i!==a){const n=de([[i,a]]),s=G(r);re(r,o,a),Y(te(e,t),(([e,t])=>{const o=Me(d[e],s,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,((s,l,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,s,l)=>{const a=t=>e.getCell(o,s,t);b(l,(n=>{var o;const[s,,l,i,d]=te(v,n),c=null==l?void 0:l(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(s,c,(()=>g(r,s,c,i))))]))})),(r=>{const o=(t,o)=>{var s,l,i;return e.getCell(...N(o)?[n,r,t]:t===n?[n,r,o]:[null==(s=te(v,t))?void 0:s[0],null==(i=te(null==(l=te(v,t))?void 0:l[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,s)=>{e.hasRow(n,s)?g(s,n,s,p):(h.delRow(t,s),Y(v,(({4:e})=>W(te(e,s),(([,n])=>{L(t,n),re(e,s)})))))}))))),A},delQueryDefinition:e=>(C(e),d(e),A),getStore:n,getQueryIds:o,forEachQuery:s,hasQuery:l,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=_(),s=_(),[l,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 s=de();if(c(e)!=R(e))ce(s,t);else{let e=t;for(;!N(e)&&!K(s,e);)ce(s,e),e=te(r,e)}if(n)return s;re(o,t,s)}return te(o,t)})),L=(e,t)=>W(u(e),(([,,e])=>re(e,t))),R=e=>te(t,e),I={setRelationshipDefinition:(e,r,l,i)=>(re(t,e,l),v(e,r,((t,r)=>{const l=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(l,r),re(d,r,n),ne(te(s,e),(t=>{K(w(e,t),r)&&ce(a,t)}))})),t(),Y(l,(t=>p(n,[e,t]))),Y(i,(t=>p(o,[e,t]))),Y(a,(t=>{L(e,t),p(s,[e,t])}))}),ve(i)),I),delRelationshipDefinition:e=>(re(t,e),f(e),I),getStore:l,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,s,[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=(s=ee(e),l=e=>!Ie(t,e),s.filter(l));var s,l;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=_(),s=_(),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,s)=>Fe(e,t,n,r,s,o))),Pe=(e,t,n,r,o)=>{K(n,r)||Qe(e,t,r,1);const s=te(n,r);o!==s&&(ze(e,t,r,s,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,s)=>{var l;const i=te(null==(l=te(R,e))?void 0:l[0],o);if(!N(i)&&!s)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(s,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?le(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]),l=U(Q[e])&&U(j[e])&&U(P[e])&&U(x[e]);if(!n||!l){const a=e?[le(r),ie(o),le(s,ie),le(i,ie)]:[r,o,s,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(!l){let t;Y(a[3],((n,r)=>{let o;Y(n,((n,s)=>{let l;Y(n,(([n,i],a)=>{i!==n&&(G(Q[e],[r,s,a],i,n,We),t=o=l=1)})),l&&G(j[e],[r,s],We)})),o&&G(P[e],[r],We)})),t&&G(x[e],void 0,We)}}},$e=(e,...t)=>(lt((()=>e(...m(t,w)))),dt),Ge=()=>se(C,(e=>se(e,se))),_e=()=>ee(C),et=e=>ee(te(C,w(e))),tt=(e,t,n,r=0,o)=>{const s=[];return ne(te(C,w(e)),((e,n)=>M(s,[N(t)?e:te(n,w(t)),e]))),m(k(T(s,(([e],[t])=>Ee(e,t)*(n?-1:1))),r,N(o)?o:r+o),(([,e])=>e))},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)),st=()=>$e((()=>we({}))),lt=(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(se(i,(e=>se(e,(e=>se(e,(e=>[...e]),(([e,t])=>e===t))),be)),be),se(c,(e=>se(e,se)))))&&(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,s],X))),dt),dt={getTables:Ge,getTableIds:_e,getTable:e=>se(te(C,w(e)),se),getRowIds:et,getSortedRowIds:tt,getRow:(e,t)=>se(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)=>lt((()=>{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?st():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!=l||(me(e.default)!=t&&Se(e,d),0))})))))(t))&&(ye(t),!U(C))){const e=Ge();st(),ot(e)}})),delTables:st,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),(s=>K(s,n)?Fe(e,o,t,s,n,r):0))))),e,t,n),delSchema:()=>$e((()=>{ye({}),e=!1})),transaction:lt,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,s,l)=>{let i=tt(e,t,n,r,o);return $((()=>{const l=tt(e,t,n,r,o);I(l,i)||(i=l,s(dt,e,t,n,r,o,i))}),D[l?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,s;return Oe(e,(()=>Ne(void 0,null,(function*(){const e=yield fetch(t);return s=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(s)||N(r)||r==s||(s=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="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);
|
|
Binary file
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The tools module of the TinyBase project provides utilities for working with
|
|
3
|
+
* TinyBase during development.
|
|
4
|
+
*
|
|
5
|
+
* This module is not intended to be directly used at runtime in a production
|
|
6
|
+
* environment.
|
|
7
|
+
*
|
|
8
|
+
* @packageDocumentation
|
|
9
|
+
* @module tools
|
|
10
|
+
* @since v2.2.0
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import {Schema, Store} from './store.d';
|
|
14
|
+
import {Id} from './common.d';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* The StoreStats type describes a set of statistics about the Store, and
|
|
18
|
+
* is used for debugging purposes.
|
|
19
|
+
*
|
|
20
|
+
* A StoreStats object is returned from the getStoreStats method.
|
|
21
|
+
*
|
|
22
|
+
* @category Statistics
|
|
23
|
+
* @since v2.2.0
|
|
24
|
+
*/
|
|
25
|
+
export type StoreStats = {
|
|
26
|
+
/**
|
|
27
|
+
* The number of Table objects in the Store.
|
|
28
|
+
*/
|
|
29
|
+
totalTables: number;
|
|
30
|
+
/**
|
|
31
|
+
* The number of Row objects in the Store, across all Table objects.
|
|
32
|
+
*/
|
|
33
|
+
totalRows: number;
|
|
34
|
+
/**
|
|
35
|
+
* The number of Cell objects in the Store, across all Row objects, across all
|
|
36
|
+
* Table objects.
|
|
37
|
+
*/
|
|
38
|
+
totalCells: number;
|
|
39
|
+
/**
|
|
40
|
+
* The string length of the Store when serialized to JSON.
|
|
41
|
+
*/
|
|
42
|
+
jsonLength: number;
|
|
43
|
+
/**
|
|
44
|
+
* Additional detailed statistics about the Store if the `detail` flag is
|
|
45
|
+
* specified in the getStoreStats method.
|
|
46
|
+
*/
|
|
47
|
+
detail?: StoreStatsDetail;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* The StoreStatsDetail type describes a more detailed set of statistics about
|
|
52
|
+
* the Store, and is used for debugging purposes.
|
|
53
|
+
*
|
|
54
|
+
* A StoreStatsDetail object is added to the StoreStats object (returned from
|
|
55
|
+
* the getStoreStats method) when the `detail` flag is specified.
|
|
56
|
+
*
|
|
57
|
+
* @category Statistics
|
|
58
|
+
* @since v2.2.0
|
|
59
|
+
*/
|
|
60
|
+
export type StoreStatsDetail = {
|
|
61
|
+
/**
|
|
62
|
+
* Information about each Table in the Store.
|
|
63
|
+
*/
|
|
64
|
+
tables: {[tableId: Id]: StoreStatsTableDetail};
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* The StoreStatsTableDetail type describes a detailed set of statistics about a
|
|
69
|
+
* single Table in the Store, and is used for debugging purposes.
|
|
70
|
+
*
|
|
71
|
+
* @category Statistics
|
|
72
|
+
* @since v2.2.0
|
|
73
|
+
*/
|
|
74
|
+
export type StoreStatsTableDetail = {
|
|
75
|
+
/**
|
|
76
|
+
* The number of Row objects in the Table.
|
|
77
|
+
*/
|
|
78
|
+
tableRows: number;
|
|
79
|
+
/**
|
|
80
|
+
* The number of Cell objects in the Table, across all Row objects.
|
|
81
|
+
*/
|
|
82
|
+
tableCells: number;
|
|
83
|
+
rows: {[rowId: Id]: StoreStatsRowDetail};
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* The StoreStatsRowDetail type describes statistics about a single Row in the
|
|
88
|
+
* Store, and is used for debugging purposes.
|
|
89
|
+
*
|
|
90
|
+
* @category Statistics
|
|
91
|
+
* @since v2.2.0
|
|
92
|
+
*/
|
|
93
|
+
export type StoreStatsRowDetail = {
|
|
94
|
+
/**
|
|
95
|
+
* The number of Cell objects in the Row.
|
|
96
|
+
*/
|
|
97
|
+
rowCells: number;
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* A Tools object lets you run various utilities on, and get certain information
|
|
102
|
+
* about, Store objects in development.
|
|
103
|
+
*
|
|
104
|
+
* @category Tools
|
|
105
|
+
* @since v2.2.0
|
|
106
|
+
*/
|
|
107
|
+
export interface Tools {
|
|
108
|
+
/**
|
|
109
|
+
* The getStoreStats method provides a set of statistics about the Store, and
|
|
110
|
+
* is used for debugging purposes.
|
|
111
|
+
*
|
|
112
|
+
* @param detail An optional boolean that indicates more detailed stats about
|
|
113
|
+
* the inner structure of the Store should be returned.
|
|
114
|
+
* @returns A StoreStats object containing statistics about the Store.
|
|
115
|
+
* @example
|
|
116
|
+
* This example creates a Tools object and gets basic statistics about it.
|
|
117
|
+
* ```js
|
|
118
|
+
* const store = createStore()
|
|
119
|
+
* .setTable('pets', {
|
|
120
|
+
* fido: {species: 'dog', color: 'brown'},
|
|
121
|
+
* felix: {species: 'cat', color: 'black'},
|
|
122
|
+
* cujo: {species: 'dog', color: 'black'},
|
|
123
|
+
* })
|
|
124
|
+
* .setTable('species', {
|
|
125
|
+
* dog: {price: 5},
|
|
126
|
+
* cat: {price: 4},
|
|
127
|
+
* });
|
|
128
|
+
* const tools = createTools(store);
|
|
129
|
+
* console.log(tools.getStoreStats());
|
|
130
|
+
* // -> {totalTables: 2, totalRows: 5, totalCells: 8, jsonLength: 182}
|
|
131
|
+
* ```
|
|
132
|
+
* @example
|
|
133
|
+
* This example creates a Tools object and gets detailed statistics about it.
|
|
134
|
+
* ```js
|
|
135
|
+
* const store = createStore()
|
|
136
|
+
* .setTable('pets', {
|
|
137
|
+
* fido: {species: 'dog', color: 'brown'},
|
|
138
|
+
* felix: {species: 'cat', color: 'black'},
|
|
139
|
+
* cujo: {species: 'dog', color: 'black'},
|
|
140
|
+
* })
|
|
141
|
+
* .setTable('species', {
|
|
142
|
+
* dog: {price: 5},
|
|
143
|
+
* cat: {price: 4},
|
|
144
|
+
* });
|
|
145
|
+
* const stats = createTools(store).getStoreStats(true);
|
|
146
|
+
*
|
|
147
|
+
* console.log(stats.totalTables);
|
|
148
|
+
* // -> 2
|
|
149
|
+
* console.log(stats.totalRows);
|
|
150
|
+
* // -> 5
|
|
151
|
+
* console.log(stats.totalCells);
|
|
152
|
+
* // -> 8
|
|
153
|
+
* console.log(stats.detail.tables.pets.tableRows);
|
|
154
|
+
* // -> 3
|
|
155
|
+
* console.log(stats.detail.tables.pets.tableCells);
|
|
156
|
+
* // -> 6
|
|
157
|
+
* console.log(stats.detail.tables.pets.rows);
|
|
158
|
+
* // -> {fido: {rowCells: 2}, felix: {rowCells: 2}, cujo: {rowCells: 2}}
|
|
159
|
+
* ```
|
|
160
|
+
* @category Statistics
|
|
161
|
+
* @since v2.2.0
|
|
162
|
+
*/
|
|
163
|
+
getStoreStats(detail?: boolean): StoreStats;
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* The getStoreSchema method returns the Schema of the Store as an object.
|
|
167
|
+
*
|
|
168
|
+
* If the Store does not already have an explicit Schema associated with it,
|
|
169
|
+
* the data in the Store will be scanned to attempt to infer a new Schema.
|
|
170
|
+
*
|
|
171
|
+
* To be successful, this requires all the values of a given Cell across a
|
|
172
|
+
* Table object's Row objects to have a consistent type. If a given Cell Id
|
|
173
|
+
* appears in every Row, then a `default` for that Cell is specified in the
|
|
174
|
+
* Schema, based on the most common value found.
|
|
175
|
+
*
|
|
176
|
+
* @returns A Schema object for the Store.
|
|
177
|
+
* @example
|
|
178
|
+
* This example creates a Tools object and gets basic statistics about a Store
|
|
179
|
+
* that already has a Schema.
|
|
180
|
+
* ```js
|
|
181
|
+
* const store = createStore().setSchema({
|
|
182
|
+
* pets: {
|
|
183
|
+
* species: {type: 'string'},
|
|
184
|
+
* color: {type: 'string'},
|
|
185
|
+
* },
|
|
186
|
+
* species: {
|
|
187
|
+
* price: {type: 'number'},
|
|
188
|
+
* },
|
|
189
|
+
* });
|
|
190
|
+
* const schema = createTools(store).getStoreSchema();
|
|
191
|
+
* console.log(schema.pets);
|
|
192
|
+
* // -> {species: {type: 'string'}, color: {type: 'string'}}
|
|
193
|
+
* ```
|
|
194
|
+
* @example
|
|
195
|
+
* This example creates a Tools object and gets basic statistics about a Store
|
|
196
|
+
* that doesn't already have a Schema.
|
|
197
|
+
* ```js
|
|
198
|
+
* const store = createStore()
|
|
199
|
+
* .setTable('pets', {
|
|
200
|
+
* fido: {species: 'dog', color: 'brown'},
|
|
201
|
+
* felix: {species: 'cat', color: 'black'},
|
|
202
|
+
* cujo: {species: 'dog', color: 'black'},
|
|
203
|
+
* })
|
|
204
|
+
* .setTable('species', {
|
|
205
|
+
* dog: {price: 5, barks: true},
|
|
206
|
+
* cat: {price: 4, purrs: true},
|
|
207
|
+
* });
|
|
208
|
+
* const schema = createTools(store).getStoreSchema();
|
|
209
|
+
* console.log(schema.pets.species);
|
|
210
|
+
* // -> {type: 'string', default: 'dog'}
|
|
211
|
+
* console.log(schema.pets.color);
|
|
212
|
+
* // -> {type: 'string', default: 'black'}
|
|
213
|
+
* console.log(schema.species.price);
|
|
214
|
+
* // -> {type: 'number', default: 5}
|
|
215
|
+
* console.log(schema.species.barks);
|
|
216
|
+
* // -> {type: 'boolean'}
|
|
217
|
+
* console.log(schema.species.purrs);
|
|
218
|
+
* // -> {type: 'boolean'}
|
|
219
|
+
* ```
|
|
220
|
+
* @category Modelling
|
|
221
|
+
* @since v2.2.0
|
|
222
|
+
*/
|
|
223
|
+
getStoreSchema(): Schema;
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* The getStoreApi method returns a code-generated .d.ts file and a .ts file
|
|
227
|
+
* that wraps the schema of a Store.
|
|
228
|
+
*
|
|
229
|
+
* This is currently in development, and further documentation is to come.
|
|
230
|
+
*
|
|
231
|
+
* @category Modelling
|
|
232
|
+
* @since v2.2.0
|
|
233
|
+
*/
|
|
234
|
+
getStoreApi(storeName: string): [string, string];
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* The getStoreApi method attempts to return a prettified code-generated .d.ts
|
|
238
|
+
* file and a .ts file that wraps the schema of a Store.
|
|
239
|
+
*
|
|
240
|
+
* This is currently in development, and further documentation is to come.
|
|
241
|
+
*
|
|
242
|
+
* @category Modelling
|
|
243
|
+
* @since v2.2.0
|
|
244
|
+
*/
|
|
245
|
+
getPrettyStoreApi(storeName: string): Promise<[string, string]>;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* The createTools function creates a Tools object, and is the main entry point
|
|
250
|
+
* into the tools module.
|
|
251
|
+
*
|
|
252
|
+
* A given Store can only have one Tools object associated with it. If you call
|
|
253
|
+
* this function twice on the same Store, your second call will return a
|
|
254
|
+
* reference to the Tools object created by the first.
|
|
255
|
+
*
|
|
256
|
+
* @param store The Store for which to register tools.
|
|
257
|
+
* @returns A reference to the new Tools object.
|
|
258
|
+
* @example
|
|
259
|
+
* This example creates a Tools object.
|
|
260
|
+
*
|
|
261
|
+
* ```js
|
|
262
|
+
* const store = createStore()
|
|
263
|
+
* .setTable('pets', {
|
|
264
|
+
* fido: {species: 'dog', color: 'brown'},
|
|
265
|
+
* felix: {species: 'cat', color: 'black'},
|
|
266
|
+
* cujo: {species: 'dog', color: 'black'},
|
|
267
|
+
* })
|
|
268
|
+
* .setTable('species', {
|
|
269
|
+
* dog: {price: 5},
|
|
270
|
+
* cat: {price: 4},
|
|
271
|
+
* });
|
|
272
|
+
* const tools = createTools(store);
|
|
273
|
+
* console.log(tools.getStoreStats());
|
|
274
|
+
* // -> {totalTables: 2, totalRows: 5, totalCells: 8, jsonLength: 182}
|
|
275
|
+
* ```
|
|
276
|
+
* @example
|
|
277
|
+
* This example creates a Tools object, and calls the method a second time
|
|
278
|
+
* for the same Store to return the same object.
|
|
279
|
+
*
|
|
280
|
+
* ```js
|
|
281
|
+
* const store = createStore();
|
|
282
|
+
* const tools1 = createTools(store);
|
|
283
|
+
* const tools2 = createTools(store);
|
|
284
|
+
* console.log(tools1 === tools2);
|
|
285
|
+
* // -> true
|
|
286
|
+
* ```
|
|
287
|
+
* @category Creation
|
|
288
|
+
* @since v2.2.0
|
|
289
|
+
*/
|
|
290
|
+
export function createTools(store: Store): Tools;
|
|
@@ -0,0 +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={});
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tinybase",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0-beta.0",
|
|
4
4
|
"author": "jamesgpearce",
|
|
5
5
|
"repository": "github:tinyplex/tinybase",
|
|
6
6
|
"license": "MIT",
|
|
@@ -15,13 +15,17 @@
|
|
|
15
15
|
],
|
|
16
16
|
"type": "module",
|
|
17
17
|
"files": [
|
|
18
|
-
"lib/**"
|
|
18
|
+
"lib/**",
|
|
19
|
+
"bin/**"
|
|
19
20
|
],
|
|
20
21
|
"exports": {
|
|
21
22
|
".": "./lib/tinybase.js",
|
|
22
23
|
"./package.json": "./package.json",
|
|
23
24
|
"./*": "./lib/*.js"
|
|
24
25
|
},
|
|
26
|
+
"bin": {
|
|
27
|
+
"tinybase": "./bin/cli.js"
|
|
28
|
+
},
|
|
25
29
|
"react-native": "./lib/tinybase.js",
|
|
26
30
|
"typesVersions": {
|
|
27
31
|
"*": {
|
|
@@ -64,10 +68,11 @@
|
|
|
64
68
|
"@babel/preset-react": "^7.18.6",
|
|
65
69
|
"@babel/preset-typescript": "^7.18.6",
|
|
66
70
|
"@rollup/plugin-replace": "^5.0.1",
|
|
71
|
+
"@rollup/plugin-terser": "^0.1.0",
|
|
67
72
|
"@types/asciichart": "^1.5.6",
|
|
68
73
|
"@types/expect-puppeteer": "^5.0.2",
|
|
69
74
|
"@types/http-server": "^0.12.1",
|
|
70
|
-
"@types/jest": "^29.2.
|
|
75
|
+
"@types/jest": "^29.2.3",
|
|
71
76
|
"@types/jest-environment-puppeteer": "^5.0.3",
|
|
72
77
|
"@types/less": "^3.0.3",
|
|
73
78
|
"@types/node": "^18.11.9",
|
|
@@ -76,27 +81,27 @@
|
|
|
76
81
|
"@types/react-dom": "^17.0.14",
|
|
77
82
|
"@types/react-test-renderer": "^17.0.1",
|
|
78
83
|
"@types/tmp": "^0.2.3",
|
|
79
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
80
|
-
"@typescript-eslint/parser": "^5.
|
|
84
|
+
"@typescript-eslint/eslint-plugin": "^5.43.0",
|
|
85
|
+
"@typescript-eslint/parser": "^5.43.0",
|
|
81
86
|
"asciichart": "^1.5.25",
|
|
82
87
|
"babel-eslint": "^10.1.0",
|
|
83
|
-
"babel-jest": "^29.
|
|
88
|
+
"babel-jest": "^29.3.1",
|
|
84
89
|
"babel-preset-minify": "^0.5.2",
|
|
85
90
|
"buffer-replace": "^1.0.0",
|
|
86
91
|
"country-flag-emoji-json": "^2.0.0",
|
|
87
|
-
"cspell": "^6.14.
|
|
88
|
-
"esbuild": "^0.15.
|
|
92
|
+
"cspell": "^6.14.2",
|
|
93
|
+
"esbuild": "^0.15.14",
|
|
89
94
|
"eslint": "^8.27.0",
|
|
90
95
|
"eslint-config-prettier": "^8.5.0",
|
|
91
|
-
"eslint-plugin-jest": "^27.1.
|
|
96
|
+
"eslint-plugin-jest": "^27.1.5",
|
|
92
97
|
"eslint-plugin-jsdoc": "^39.6.2",
|
|
93
98
|
"eslint-plugin-react": "^7.31.10",
|
|
94
99
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
95
100
|
"gulp": "^4.0.2",
|
|
96
101
|
"gulp-gzip": "^1.4.2",
|
|
97
102
|
"http-server": "^14.1.1",
|
|
98
|
-
"jest": "^29.
|
|
99
|
-
"jest-environment-jsdom": "^29.
|
|
103
|
+
"jest": "^29.3.1",
|
|
104
|
+
"jest-environment-jsdom": "^29.3.1",
|
|
100
105
|
"jest-fetch-mock": "^3.0.3",
|
|
101
106
|
"jest-puppeteer": "^6.1.1",
|
|
102
107
|
"less": "^4.1.3",
|
|
@@ -105,22 +110,26 @@
|
|
|
105
110
|
"react": "^17.0.2",
|
|
106
111
|
"react-dom": "^17.0.2",
|
|
107
112
|
"react-test-renderer": "^17.0.2",
|
|
108
|
-
"rollup": "^3.
|
|
109
|
-
"rollup-plugin-esbuild": "^
|
|
113
|
+
"rollup": "^3.3.0",
|
|
114
|
+
"rollup-plugin-esbuild": "^5.0.0",
|
|
110
115
|
"rollup-plugin-gzip": "^3.1.0",
|
|
116
|
+
"rollup-plugin-preserve-shebang": "^1.0.1",
|
|
111
117
|
"rollup-plugin-prettier": "^3.0.0",
|
|
112
|
-
"rollup-plugin-terser": "^7.0.2",
|
|
113
118
|
"tinydocs": "^0.1.15",
|
|
114
119
|
"tmp": "^0.2.1",
|
|
115
120
|
"ts-unused-exports": "^8.0.0",
|
|
116
|
-
"typescript": "4.
|
|
121
|
+
"typescript": "4.9.3"
|
|
117
122
|
},
|
|
118
123
|
"peerDependencies": {
|
|
124
|
+
"prettier": "^2.0.0",
|
|
119
125
|
"react": "^17.0.0"
|
|
120
126
|
},
|
|
121
127
|
"peerDependenciesMeta": {
|
|
122
128
|
"react": {
|
|
123
129
|
"optional": true
|
|
130
|
+
},
|
|
131
|
+
"prettier": {
|
|
132
|
+
"optional": true
|
|
124
133
|
}
|
|
125
134
|
}
|
|
126
135
|
}
|