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/store.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=e=>typeof e,t=e(""),
|
|
1
|
+
const e=e=>typeof e,t=e(""),r=e(!0),s=e(0),n=e(e),l=e=>""+e,o=(e,t)=>e.forEach(t),a=(e,t)=>e.map(t),i=e=>e.length,c=(e,t,r)=>e.slice(t,r),d=(e,...t)=>e.push(...t),u=e=>JSON.stringify(e,((e,t)=>{return T(t,Map)?(r=[...t],s=(e,[t,r])=>(e[t]=r,e),n={},r.reduce(s,n)):t;var r,s,n})),f=JSON.parse,h=isFinite,T=(e,t)=>e instanceof t,b=e=>null==e,g=(e,t,r)=>b(e)?r?.():t(e),v=e=>e==t||e==r,w=(e,t)=>e?.has(t)??!1,R=e=>b(e)||0==(e=>e.size)(e),y=e=>e.clear(),C=(e,t)=>e?.forEach(t),p=(e,t)=>e?.delete(t),S=e=>new Map(e),I=e=>[...e?.keys()??[]],L=(e,t)=>e?.get(t),E=(e,t)=>C(e,((e,r)=>t(r,e))),J=(e,t,r)=>b(r)?(p(e,t),e):e?.set(t,r),m=(e,t,r)=>(w(e,t)||J(e,t,r()),L(e,t)),F=(e,t,r)=>{const s={},n=t??(e=>e);return C(e,((e,t)=>g(n(e),(e=>r?.(e)?0:s[t]=e)))),s},z=(e,t)=>{const r=S(),s=t??(e=>e);return C(e,((e,t)=>r.set(t,s(e)))),r},O=e=>z(e,z),k=(e,t,r,s,n=0)=>g((r?m:L)(e,t[n],n>i(t)-2?r:S),(l=>{if(n>i(t)-2)return s?.(l)&&J(e,t[n]),l;const o=k(l,t,r,s,n+1);return R(l)&&J(e,t[n]),o})),A=Object,M=A.keys,N=A.isFrozen,j=A.freeze,x=(e,t)=>!b(((e,t)=>g(e,(e=>e[t])))(e,t)),D=(e,t)=>delete e[t],P=(e,t)=>o(A.entries(e),(([e,r])=>t(r,e))),W=e=>{return t=M(e),0==i(t);var t},$=e=>new Set(Array.isArray(e)||b(e)?e:[e]),q=(e,t)=>e?.add(t),B=/^\d+$/,G=()=>{const e=[];let t=0;return[()=>e.shift()??""+t++,t=>{B.test(t)&&i(e)<1e3&&d(e,t)}]},H=e=>{let t;const[r,s]=G(),n=S();return[(s,l,o)=>{t??=e();const a=r();return J(n,a,[s,l,o]),q(k(l,o??[""],$),a),a},(e,r,...s)=>o(((e,t=[""])=>{const r=[],s=(e,n)=>n==i(t)?d(r,e):null===t[n]?C(e,(e=>s(e,n+1))):o([t[n],null],(t=>s(L(e,t),n+1)));return s(e,0),r})(e,r),(e=>C(e,(e=>L(n,e)[0](t,...r??[],...s))))),e=>g(L(n,e),(([,t,r])=>(k(t,r??[""],void 0,(t=>(p(t,e),R(t)?1:0))),J(n,e),s(e),r))),(e,r,s)=>g(L(n,e),(([e,,n=[]])=>{const l=(...a)=>{const c=i(a);c==i(n)?e(t,...a,...s(a)):b(n[c])?o(r[c](...a),(e=>l(...a,e))):l(...a,n[c])};l()}))]},K=e=>[e,e],Q=()=>[S(),S()],U=t=>{const r=e(t);return v(r)||r==s&&h(t)?r:void 0},V=(e,t,r,s=J)=>{const n=(l=I(e),a=e=>!x(t,e),l.filter(a));var l,a;return o(M(t),(s=>r(e,s,t[s]))),o(n,(t=>s(e,t))),e},X=(e,t,r)=>b(e)||!(e=>T(e,A)&&e.constructor==A)(e)||W(e)||N(e)?(r?.(),!1):(P(e,((r,s)=>{t(r,s)||D(e,s)})),!W(e)),Y=(e,t,r)=>J(e,t,L(e,t)==-r?void 0:r),Z=()=>{let t,r,h=0;const T=S(),k=S(),A=S(),M=S(),N=S(),B=S(),_=S(),ee=S(),te=S(),re=Q(),se=Q(),ne=Q(),le=Q(),oe=Q(),ae=Q(),ie=Q(),ce=Q(),de=Q(),ue=Q(),[fe,he,Te,be]=H((()=>Ze)),ge=(e,r)=>(!t||w(B,r)||Ne(r))&&X(e,((e,t)=>ve(r,t,e)),(()=>Ne(r))),ve=(e,t,r,s)=>X(s?r:Re(r,e,t),((s,n)=>g(we(e,t,n,s),(e=>(r[n]=e,!0)),(()=>!1))),(()=>Ne(e,t))),we=(e,r,s,n)=>t?g(L(L(B,e),s),(t=>U(n)!=t.type?Ne(e,r,s,n,t.default):n),(()=>Ne(e,r,s,n))):b(U(n))?Ne(e,r,s,n):n,Re=(e,t,r)=>(g(L(_,t),(([s,n])=>{C(s,((t,r)=>{x(e,r)||(e[r]=t)})),C(n,(s=>{x(e,s)||Ne(t,r,s)}))})),e),ye=e=>V(B,e,((e,t,r)=>{const s=S(),n=$();V(m(B,t,S),r,((e,t,r)=>{J(e,t,r),g(r.default,(e=>J(s,t,e)),(()=>q(n,t)))})),J(_,t,[s,n])}),((e,t)=>{J(B,t),J(_,t)})),Ce=e=>V(te,e,((e,t,r)=>pe(t,r)),((e,t)=>me(t))),pe=(e,t)=>V(m(te,e,(()=>(Oe(e,1),S()))),t,((t,r,s)=>Se(e,t,r,s)),((t,r)=>Fe(e,t,r))),Se=(e,t,r,s,n)=>V(m(t,r,(()=>(ke(e,r,1),S()))),s,((t,s,n)=>Ie(e,r,t,s,n)),((s,l)=>ze(e,t,r,s,l,n))),Ie=(e,t,r,s,n)=>{w(r,s)||Ae(e,t,s,1);const l=L(r,s);n!==l&&(Me(e,t,s,l,n),J(r,s,n))},Le=(e,t,r,s,n)=>g(L(t,r),(t=>Ie(e,r,t,s,n)),(()=>Se(e,t,r,Re({[s]:n},e,r)))),Ee=e=>{const[t]=m(ee,e,G),r=t();return w(L(te,e),r)?Ee(e):r},Je=e=>L(te,e)??pe(e,{}),me=e=>pe(e,{}),Fe=(e,t,r)=>{const[,s]=m(ee,e,G);s(r),Se(e,t,r,{},!0)},ze=(e,t,r,s,n,l)=>{const o=L(L(_,e)?.[0],n);if(!b(o)&&!l)return Ie(e,r,s,n,o);const a=t=>{Me(e,r,t,L(s,t)),Ae(e,r,t,-1),J(s,t)};b(o)?a(n):E(s,a),R(s)&&(ke(e,r,-1),R(J(t,r))&&(Oe(e,-1),J(te,e),J(ee,e)))},Oe=(e,t)=>Y(T,e,t),ke=(e,t,r)=>Y(m(k,e,S),t,r),Ae=(e,t,r,s)=>Y(m(m(A,e,S),t,S),r,s),Me=(e,t,r,s,n)=>m(m(m(M,e,S),t,S),r,(()=>[s,0]))[1]=n,Ne=(e,t,r,s,n)=>(d(m(m(m(N,e,S),t,S),r,(()=>[])),s),n),je=(e,t,r)=>g(L(L(L(M,e),t),r),(([e,t])=>[!0,e,t]),(()=>[!1,...K(Ke(e,t,r))])),xe=e=>R(N)||R(de[e])?0:C(e?z(N,O):N,((t,r)=>C(t,((t,s)=>C(t,((t,n)=>he(de[e],[r,s,n],t))))))),De=(e,t,r)=>{if(!R(t))return he(e,r),1},Pe=e=>{const t=R(oe[e]),r=R(ie[e])&&R(le[e])&&t&&R(se[e]),s=R(ce[e])&&R(ae[e])&&R(ne[e])&&R(re[e]);if(!r||!s){const n=e?[z(T),O(k),z(A,O),z(M,O)]:[T,k,A,M];if(!r){C(n[2],((t,r)=>C(t,((t,s)=>De(ie[e],t,[r,s])))));const r=$();C(n[1],((s,n)=>{De(le[e],s,[n])&&!t&&(he(oe[e],[n,null]),q(r,n))})),t||C(n[3],((t,s)=>{if(!w(r,s)){const r=$();C(t,(e=>C(e,(([t,s],n)=>s!==t?q(r,n):p(e,n))))),C(r,(t=>he(oe[e],[s,t])))}})),De(se[e],n[0])}if(!s){let t;C(n[3],((r,s)=>{let n;C(r,((r,l)=>{let o;C(r,(([r,a],i)=>{a!==r&&(he(ce[e],[s,l,i],a,r,je),t=n=o=1)})),o&&he(ae[e],[s,l],je)})),n&&he(ne[e],[s],je)})),t&&he(re[e],void 0,je)}}},We=(e,...t)=>(Ve((()=>e(...a(t,l)))),Ze),$e=()=>F(te,(e=>F(e,F))),qe=()=>I(te),Be=e=>I(L(te,l(e))),Ge=(e,t,r,s=0,n)=>{return a(c((d=L(te,l(e)),u=(e,r)=>[b(t)?r:L(e,l(t)),r],o=a([...d?.entries()??[]],(([e,t])=>u(t,e))),i=([e],[t])=>(e<t?-1:1)*(r?-1:1),o.sort(i)),s,b(n)?n:s+n),(([,e])=>e));var o,i,d,u},He=(e,t)=>I(L(L(te,l(e)),l(t))),Ke=(e,t,r)=>L(L(L(te,l(e)),l(t)),l(r)),Qe=e=>We((()=>(e=>X(e,ge,Ne))(e)?Ce(e):0)),Ue=()=>We((()=>Ce({}))),Ve=(e,t)=>{if(-1==h)return;Xe();const r=e();return Ye(t),r},Xe=()=>(h++,Ze),Ye=e=>(h>0&&(h--,0==h&&(r=!R(M),h=1,xe(1),r&&Pe(1),h=-1,e?.(F(M,(e=>F(e,(e=>F(e,(e=>[...e]),(([e,t])=>e===t))),W)),W),F(N,(e=>F(e,F))))&&(h=1,C(M,((e,t)=>C(e,((e,r)=>C(e,(([e],s)=>((e,t,r,s,n)=>b(n)?e.delCell(t,r,s,!0):e.setCell(t,r,s,n))(Ze,t,r,s,e))))))),h=-1,r=!1),he(ue[0],void 0,r),xe(0),r&&Pe(0),he(ue[1],void 0,r),h=0,o([M,N,T,k,A],y))),Ze),Ze={getTables:$e,getTableIds:qe,getTable:e=>F(L(te,l(e)),F),getRowIds:Be,getSortedRowIds:Ge,getRow:(e,t)=>F(L(L(te,l(e)),l(t))),getCellIds:He,getCell:Ke,hasTables:()=>!R(te),hasTable:e=>w(te,l(e)),hasRow:(e,t)=>w(L(te,l(e)),l(t)),hasCell:(e,t,r)=>w(L(L(te,l(e)),l(t)),l(r)),getJson:()=>u(te),getSchemaJson:()=>u(B),setTables:Qe,setTable:(e,t)=>We((e=>ge(t,e)?pe(e,t):0),e),setRow:(e,t,r)=>We(((e,t)=>ve(l(e),l(t),r)?Se(l(e),Je(l(e)),l(t),r):0),e,t),addRow:(e,t)=>Ve((()=>{let r;return ve(e,r,t)&&(e=l(e),Se(e,Je(e),r=Ee(e),t)),r})),setPartialRow:(e,t,r)=>We(((e,t)=>{if(ve(e,t,r,1)){const s=Je(e);P(r,((r,n)=>Le(e,s,t,n,r)))}}),e,t),setCell:(t,r,s,l)=>We(((t,r,s)=>g(we(t,r,s,e(l)==n?l(Ke(t,r,s)):l),(e=>Le(t,Je(t),r,s,e)))),t,r,s),setJson:e=>{try{"{}"===e?Ue():Qe(f(e))}catch{}return Ze},setSchema:e=>We((()=>{if((t=(e=>X(e,(e=>X(e,(e=>{if(!X(e,((e,t)=>["type","default"].includes(t))))return!1;const t=e.type;return!(!v(t)&&t!=s||(U(e.default)!=t&&D(e,"default"),0))})))))(e))&&(ye(e),!R(te))){const e=$e();Ue(),Qe(e)}})),delTables:Ue,delTable:e=>We((e=>w(te,e)?me(e):0),e),delRow:(e,t)=>We(((e,t)=>g(L(te,e),(r=>w(r,t)?Fe(e,r,t):0))),e,t),delCell:(e,t,r,s)=>We(((e,t,r)=>g(L(te,e),(n=>g(L(n,t),(l=>w(l,r)?ze(e,n,t,l,r,s):0))))),e,t,r),delSchema:()=>We((()=>{ye({}),t=!1})),transaction:Ve,startTransaction:Xe,finishTransaction:Ye,forEachTable:e=>C(te,((t,r)=>e(r,(e=>C(t,((t,r)=>e(r,(e=>E(t,e))))))))),forEachRow:(e,t)=>C(L(te,l(e)),((e,r)=>t(r,(t=>E(e,t))))),forEachCell:(e,t,r)=>E(L(L(te,l(e)),l(t)),r),addSortedRowIdsListener:(e,t,r,s,n,l,o)=>{let a=Ge(e,t,r,s,n);return fe((()=>{const o=Ge(e,t,r,s,n);var c,d,u;d=a,i(c=o)===i(d)&&(u=(e,t)=>d[t]===e,c.every(u))||(a=o,l(Ze,e,t,r,s,n,a))}),oe[o?1:0],[e,t])},addWillFinishTransactionListener:e=>fe(e,ue[0]),addDidFinishTransactionListener:e=>fe(e,ue[1]),callListener:e=>(be(e,[qe,Be,He],(e=>b(e[2])?[]:K(Ke(...e)))),Ze),delListener:e=>(Te(e),Ze),getListenerStats:()=>({}),createStore:Z};return P({Tables:[0,re],TableIds:[0,se],Table:[1,ne],RowIds:[1,le],Row:[2,ae],CellIds:[2,ie],Cell:[3,ce],InvalidCell:[3,de]},(([e,t],r)=>{Ze["add"+r+"Listener"]=(...r)=>fe(r[e],t[r[e+1]?1:0],e>0?c(r,0,e):void 0)})),j(Ze)};export{Z as createStore};
|
package/lib/store.js.gz
CHANGED
|
Binary file
|
package/lib/tinybase.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{promises as e,watch as t}from"fs";const s=e=>typeof e,n=s(""),o=s(!0),r=s(0),a=s(s),i=e=>""+e,l=(e,t)=>e.includes(t),d=(e,t)=>e.every(t),c=(e,t)=>L(e)===L(t)&&d(e,((e,s)=>t[s]===e)),u=(e,t)=>d(e,((s,n)=>0==n||t(e[n-1],s)<=0)),h=(e,t)=>e.sort(t),g=(e,t)=>e.forEach(t),f=(e,t)=>e.map(t),w=e=>v(e,((e,t)=>e+t),0),L=e=>e.length,R=e=>0==L(e),v=(e,t,s)=>e.reduce(t,s),I=(e,t,s)=>e.slice(t,s),S=(e,...t)=>e.push(...t),p=e=>e.pop(),y=e=>e.shift(),T=e=>JSON.stringify(e,((e,t)=>k(t,Map)?v([...t],((e,[t,s])=>(e[t]=s,e)),{}):t)),b=JSON.parse,C=Math.max,m=Math.min,E=isFinite,k=(e,t)=>e instanceof t,A=e=>null==e,M=(e,t,s)=>A(e)?s?.():t(e),D=e=>e==n||e==o,x=e=>s(e)==a,F=e=>Array.isArray(e),J=()=>{},Q=e=>e.size,z=(e,t)=>e?.has(t)??!1,N=e=>A(e)||0==Q(e),O=e=>[...e?.values()??[]],j=e=>e.clear(),W=(e,t)=>e?.forEach(t),P=(e,t)=>e?.delete(t),B=e=>new Map(e),H=e=>[...e?.keys()??[]],$=(e,t)=>e?.get(t),q=(e,t)=>W(e,((e,s)=>t(s,e))),G=(e,t,s)=>A(s)?(P(e,t),e):e?.set(t,s),K=(e,t,s)=>(z(e,t)||G(e,t,s()),$(e,t)),U=(e,t,s)=>{const n={},o=t??(e=>e);return W(e,((e,t)=>M(o(e),(e=>s?.(e)?0:n[t]=e)))),n},V=(e,t)=>{const s=B(),n=t??(e=>e);return W(e,((e,t)=>s.set(t,n(e)))),s},X=e=>V(e,V),Y=(e,t,s,n,o=0)=>M((s?K:$)(e,t[o],o>L(t)-2?s:B),(r=>{if(o>L(t)-2)return n?.(r)&&G(e,t[o]),r;const a=Y(r,t,s,n,o+1);return N(r)&&G(e,t[o]),a})),Z=e=>new Set(F(e)||A(e)?e:[e]),_=(e,t)=>e?.add(t),ee=(e,t,s)=>{const n=e.hasRow,o=B(),r=B(),a=B(),i=B(),l=B(),d=(t,s,...n)=>{const o=K(l,t,Z);return g(n,(t=>_(o,t)&&s&&e.callListener(t))),n},u=(t,...s)=>M($(l,t),(n=>{g(R(s)?O(n):s,(t=>{e.delListener(t),P(n,t)})),N(n)&&G(l,t)})),h=(e,s)=>{G(o,e,s),z(r,e)||(G(r,e,t()),G(a,e,B()),G(i,e,B()))},f=e=>{G(o,e),G(r,e),G(a,e),G(i,e),u(e)};return[()=>e,()=>H(o),e=>q(r,e),e=>z(r,e),e=>$(o,e),e=>$(r,e),(e,t)=>G(r,e,t),h,(t,o,r,l,f)=>{h(t,o);const w=B(),L=B(),R=$(a,t),v=$(i,t),I=t=>{const r=s=>e.getCell(o,t,s),a=$(R,t),i=n(o,t)?s(l(r,t)):void 0;if(a===i||F(a)&&F(i)&&c(a,i)||G(w,t,[a,i]),!A(f)){const e=$(v,t),s=n(o,t)?f(r,t):void 0;e!=s&&G(L,t,s)}},S=e=>{r((()=>{W(w,(([,e],t)=>G(R,t,e))),W(L,((e,t)=>G(v,t,e)))}),w,L,R,v,e),j(w),j(L)};q(R,I),e.hasTable(o)&&g(e.getRowIds(o),(e=>{z(R,e)||I(e)})),S(!0),u(t),d(t,0,e.addRowListener(o,null,((e,t,s)=>I(s))),e.addTableListener(o,(()=>S())))},f,()=>q(l,f),d,u]},te=(e,t)=>s(e)==n?t=>t(e):e??(()=>t??""),se=e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))},ne=/^\d+$/,oe=()=>{const e=[];let t=0;return[()=>y(e)??""+t++,t=>{ne.test(t)&&L(e)<1e3&&S(e,t)}]},re=e=>{let t;const[s,n]=oe(),o=B();return[(n,r,a)=>{t??=e();const i=s();return G(o,i,[n,r,a]),_(Y(r,a??[""],Z),i),i},(e,s,...n)=>g(((e,t=[""])=>{const s=[],n=(e,o)=>o==L(t)?S(s,e):null===t[o]?W(e,(e=>n(e,o+1))):g([t[o],null],(t=>n($(e,t),o+1)));return n(e,0),s})(e,s),(e=>W(e,(e=>$(o,e)[0](t,...s??[],...n))))),e=>M($(o,e),(([,t,s])=>(Y(t,s??[""],void 0,(t=>(P(t,e),N(t)?1:0))),G(o,e),n(e),s))),(e,s,n)=>M($(o,e),(([e,,o=[]])=>{const r=(...a)=>{const i=L(a);i==L(o)?e(t,...a,...n(a)):A(o[i])?g(s[i](...a),(e=>r(...a,e))):r(...a,o[i])};r()}))]},ae=Object,ie=ae.keys,le=ae.isFrozen,de=ae.freeze,ce=(e,t)=>!A(((e,t)=>M(e,(e=>e[t])))(e,t)),ue=(e,t)=>delete e[t],he=(e,t)=>g(ae.entries(e),(([e,s])=>t(s,e))),ge=e=>R(ie(e)),fe=e=>{const t=s(e);return D(t)||t==r&&E(e)?t:void 0},we=(e,t,s,n,o)=>A(o)?e.delCell(t,s,n,!0):e.setCell(t,s,n,o),Le=se((e=>{let t,s,n,o=100,r=B(),a=1;const i=B(),d=B(),[c,u,h]=re((()=>j)),f=B(),w=B(),v=[],I=[],T=(t,s)=>{a=0,e.transaction((()=>W($(f,s),((s,n)=>W(s,((s,o)=>W(s,((s,r)=>we(e,n,o,r,s[t]))))))))),a=1},b=e=>{G(f,e),G(w,e),u(d,[e])},C=(e,t)=>g(((e,t)=>e.splice(0,t))(e,t??L(e)),b),m=()=>C(v,L(v)-o),E=e.addCellListener(null,null,null,((e,s,o,i,l,d)=>{if(a){M(t,(()=>{S(v,t),m(),C(I),t=void 0,n=1}));const e=K(r,s,B),a=K(e,o,B),c=K(a,i,(()=>[d,void 0]));c[1]=l,c[0]===l&&N(G(a,i))&&N(G(e,o))&&N(G(r,s))&&(t=p(v),n=1),F()}})),k=(e="")=>(A(t)&&(t=""+s++,G(f,t,r),Q(t,e),r=B(),n=1),t),D=()=>{R(v)||(I.unshift(k()),T(0,t),t=p(v),n=1)},x=()=>{R(I)||(S(v,t),t=y(I),T(1,t),n=1)},F=()=>{n&&(u(i),n=0)},J=e=>{const t=k(e);return F(),t},Q=(e,t)=>(O(e)&&$(w,e)!==t&&(G(w,e,t),u(d,[e])),j),O=e=>z(f,e),j={setSize:e=>(o=e,m(),j),addCheckpoint:J,setCheckpoint:Q,getStore:()=>e,getCheckpointIds:()=>[[...v],t,[...I]],forEachCheckpoint:e=>q(w,e),hasCheckpoint:O,getCheckpoint:e=>$(w,e),goBackward:()=>(D(),F(),j),goForward:()=>(x(),F(),j),goTo:e=>{const s=l(v,e)?D:l(I,e)?x:null;for(;!A(s)&&e!=t;)s();return F(),j},addCheckpointIdsListener:e=>c(e,i),addCheckpointListener:(e,t)=>c(t,d,[e]),delListener:e=>(h(e),j),clear:()=>(C(v),C(I),A(t)||b(t),t=void 0,s=0,J(),j),destroy:()=>{e.delListener(E)},getListenerStats:()=>({})};return de(j.clear())})),Re=(e,t)=>e<t?-1:1,ve=se((e=>{const t=B(),s=B(),[n,o,r,a,l,d,c,,g,w,L]=ee(e,B,(e=>A(e)?"":F(e)?f(e,i):i(e))),[R,v,I]=re((()=>p)),S=(t,s,n)=>{const o=l(t);W(n,((t,n)=>s(n,(s=>W(t,(t=>s(t,(s=>e.forEachCell(o,t,s)))))))))},p={setIndexDefinition:(e,n,o,r,a,i=Re)=>{const l=A(a)?void 0:([e],[t])=>a(e,t);return g(e,n,((n,o,a,g,f,w)=>{let L=0;const R=Z(),I=Z(),S=d(e);if(W(o,(([e,t],s)=>{const n=Z(e),o=Z(t);W(n,(e=>P(o,e)?P(n,e):0)),W(n,(e=>{_(R,e),M($(S,e),(t=>{P(t,s),N(t)&&(G(S,e),L=1)}))})),W(o,(e=>{_(R,e),z(S,e)||(G(S,e,Z()),L=1),_($(S,e),s),A(r)||_(I,e)}))})),n(),N(f)||(w?q(S,(e=>_(I,e))):q(a,(e=>M($(g,e),(e=>_(I,e))))),W(I,(e=>{const t=(t,s)=>i($(f,t),$(f,s),e),s=[...$(S,e)];u(s,t)||(G(S,e,Z(h(s,t))),_(R,e))}))),(L||w)&&!A(l)){const t=[...S];u(t,l)||(c(e,B(h(t,l))),L=1)}L&&v(t,[e]),W(R,(t=>v(s,[e,t])))}),te(o),M(r,te)),p},delIndexDefinition:e=>(w(e),p),getStore:n,getIndexIds:o,forEachIndex:e=>r(((t,s)=>e(t,(e=>S(t,e,s))))),forEachSlice:(e,t)=>S(e,t,d(e)),hasIndex:a,hasSlice:(e,t)=>z(d(e),t),getTableId:l,getSliceIds:e=>H(d(e)),getSliceRowIds:(e,t)=>O($(d(e),t)),addSliceIdsListener:(e,s)=>R(s,t,[e]),addSliceRowIdsListener:(e,t,n)=>R(n,s,[e,t]),delListener:e=>(I(e),p),destroy:L,getListenerStats:()=>({})};return de(p)})),Ie=B([["avg",[(e,t)=>w(e)/t,(e,t,s)=>e+(t-e)/(s+1),(e,t,s)=>e+(e-t)/(s-1),(e,t,s,n)=>e+(t-s)/n]],["max",[e=>C(...e),(e,t)=>C(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:C(t,e)]],["min",[e=>m(...e),(e,t)=>m(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:m(t,e)]],["sum",[e=>w(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),Se=(e,t,s,n,o,r=!1)=>{if(N(s))return;const[a,i,l,d]=o;return r||=A(e),W(n,(([s,n])=>{r||(e=A(s)?i?.(e,n,t++):A(n)?l?.(e,s,t--):d?.(e,n,s,t),r||=A(e))})),r?a(O(s),Q(s)):e},pe=se((e=>{const t=B(),[s,n,o,r,a,i,l,,d,c,u]=ee(e,J,(e=>isNaN(e)||A(e)||!0===e||!1===e||""===e?void 0:1*e)),[h,g,f]=re((()=>w)),w={setMetricDefinition:(e,s,n,o,r,a,c)=>{const u=x(n)?[n,r,a,c]:$(Ie,n)??$(Ie,"sum");return d(e,s,((s,n,o,r,a,d)=>{const c=i(e),h=Q(r);d||=A(c),s();let f=Se(c,h,r,n,u,d);E(f)||(f=void 0),f!=c&&(l(e,f),g(t,[e],f,c))}),te(o,1)),w},delMetricDefinition:e=>(c(e),w),getStore:s,getMetricIds:n,forEachMetric:o,hasMetric:r,getTableId:a,getMetric:i,addMetricListener:(e,s)=>h(s,t,[e]),delListener:e=>(f(e),w),destroy:u,getListenerStats:()=>({})};return de(w)})),ye=(e,t,s,n,o)=>{let r,a=0;const i={load:async s=>{if(2!=a){a=1;const n=await t();A(n)||""==n?e.setTables(s):e.setJson(n),a=0}return i},startAutoLoad:async e=>(i.stopAutoLoad(),await i.load(e),n(i.load),i),stopAutoLoad:()=>(o(),i),save:async()=>(1!=a&&(a=2,await s(e.getJson()),a=0),i),startAutoSave:async()=>(await i.stopAutoSave().save(),r=e.addTablesListener((()=>i.save())),i),stopAutoSave:()=>(M(r,e.delListener),i),getStore:()=>e,destroy:()=>i.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return de(i)},Te=globalThis.window,be=(e,t,s)=>{let n;return ye(e,(async()=>s.getItem(t)),(async e=>s.setItem(t,e)),(e=>{n=n=>{n.storageArea===s&&n.key===t&&e()},Te.addEventListener("storage",n)}),(()=>{Te.removeEventListener("storage",n),n=void 0}))},Ce=(e,t)=>be(e,t,localStorage),me=(e,t)=>be(e,t,sessionStorage),Ee=(s,n)=>{let o;return ye(s,(async()=>{try{return await e.readFile(n,"utf8")}catch{}}),(async t=>{try{await e.writeFile(n,t,"utf8")}catch{}}),(e=>{o=t(n,e)}),(()=>{o?.close(),o=void 0}))},ke=e=>e.headers.get("ETag"),Ae=(e,t,s,n)=>{let o,r;return ye(e,(async()=>{const e=await fetch(t);return r=ke(e),e.text()}),(async e=>await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:e})),(e=>{o=setInterval((async()=>{const s=await fetch(t,{method:"HEAD"}),n=ke(s);A(r)||A(n)||n==r||(r=n,e())}),1e3*n)}),(()=>{M(o,clearInterval),o=void 0}))},Me=se((e=>{const t=e.createStore,[s,n,o,r,a,,,i,,l,c,u,h]=ee(e,(()=>!0),J),f=t(),w=t(),v=B(),p=(e,t,...s)=>g(s,(s=>_(K(K(v,t,B),e,Z),s))),y=e=>{M($(v,e),(e=>{q(e,((e,t)=>W(t,(t=>e.delListener(t))))),j(e)})),g([w,f],(t=>t.delTable(e)))},T=(e,t,s)=>p(t,e,t.addWillFinishTransactionListener(s.startTransaction),t.addDidFinishTransactionListener((()=>s.finishTransaction()))),b={setQueryDefinition:(t,s,n)=>{i(t,s),y(t);const o=[],r=[[null,[s,null,null,[],B()]]],a=[],l=[],c=[];n({select:(e,t)=>{const s=x(e)?[L(o)+"",e]:[A(t)?e:t,s=>s(e,t)];return S(o,s),{as:e=>s[0]=e}},join:(e,t,s)=>{const n=A(s)||x(t)?null:t,o=A(n)?t:s,a=[e,[e,n,x(o)?o:e=>e(o),[],B()]];return S(r,a),{as:e=>a[0]=e}},where:(e,t,s)=>S(a,x(e)?e:A(s)?s=>s(e)===t:n=>n(e,t)===s),group:(e,t,s,n,o)=>{const r=[e,[e,x(t)?[t,s,n,o]:$(Ie,t)??[(e,t)=>t]]];return S(l,r),{as:e=>r[0]=e}},having:(e,t)=>S(c,x(e)?e:s=>s(e)===t)});const v=B(o);if(N(v))return b;const I=B(r);q(I,((e,[,t])=>M($(I,t),(({3:t})=>A(e)?0:S(t,e)))));const C=B(l);let m=f;if(N(C)&&R(c))m=w;else{T(t,m,w);const e=B();q(C,((t,[s,n])=>_(K(e,s,Z),[t,n])));const s=Z();q(v,(t=>z(e,t)?0:_(s,t)));const n=B(),o=(s,n,o,r)=>M(s,(([a,i,l,u])=>{q(n,((t,[s])=>{const n=K(a,t,B),i=$(n,o),l=r?void 0:s;if(i!==l){const s=Z([[i,l]]),r=Q(n);G(n,o,l),W($(e,t),(([e,t])=>{const o=Se(u[e],r,n,s,t);u[e]=A(fe(o))?null:o}))}})),N(i)||!d(c,(e=>e((e=>u[e]))))?w.delRow(t,l):A(l)?s[2]=w.addRow(t,u):w.setRow(t,l,u)}));p(m,t,m.addRowListener(t,null,((r,a,i,l)=>{const d=[],c=[],u=B(),h=m.hasRow(t,i);let g=!h;W(s,(e=>{const[s,n,o]=l(t,i,e);S(d,n),S(c,o),g||=s})),q(e,(e=>{const[s,,n]=l(t,i,e);(g||s)&&G(u,e,[n])})),g&&o(Y(n,d,void 0,(([,e])=>(P(e,i),N(e)))),u,i,1),h&&o(Y(n,c,(()=>{const e={};return W(s,(s=>e[s]=m.getCell(t,i,s))),[B(),Z(),void 0,e]}),(([,e])=>{_(e,i)})),u,i)})))}T(t,e,m);const E=(n,o,r,i)=>{const l=t=>e.getCell(o,r,t);g(i,(s=>{const[o,,r,a,i]=$(I,s),d=r?.(l,n),[c,g]=$(i,n)??[];d!=c&&(A(g)||h(t,g),G(i,n,A(d)?null:[d,...u(t,1,e.addRowListener(o,d,(()=>E(n,o,d,a))))]))})),(n=>{const o=(t,o)=>e.getCell(...A(o)?[s,n,t]:t===s?[s,n,o]:[$(I,t)?.[0],$($(I,t)?.[4],n)?.[0],o]);m.transaction((()=>d(a,(e=>e(o)))?q(v,((e,s)=>we(m,t,n,e,s(o,n)))):m.delRow(t,n)))})(n)},{3:k}=$(I,null);return m.transaction((()=>u(t,1,e.addRowListener(s,null,((n,o,r)=>{e.hasRow(s,r)?E(r,s,r,k):(m.delRow(t,r),W(I,(({4:e})=>M($(e,r),(([,s])=>{h(t,s),G(e,r)})))))}))))),b},delQueryDefinition:e=>(y(e),l(e),b),getStore:s,getQueryIds:n,forEachQuery:o,hasQuery:r,getTableId:a,delListener:e=>(w.delListener(e),b),destroy:c,getListenerStats:()=>{const{tables:e,tableIds:t,transaction:s,...n}=w.getListenerStats();return n}};return he({Table:[1,1],RowIds:[0,1],SortedRowIds:[0,5],Row:[1,2],CellIds:[0,2],Cell:[1,3]},(([e,t],s)=>{g(e?["get","has","forEach"]:["get"],(e=>b[e+"Result"+s]=(...t)=>w[e+s](...t))),b["addResult"+s+"Listener"]=(...e)=>w["add"+s+"Listener"](...I(e,0,t),((s,...n)=>e[t](b,...n)))})),de(b)})),De=se((e=>{const t=B(),s=B(),n=B(),o=B(),[r,a,i,l,d,c,,,u,h,g]=ee(e,(()=>[B(),B(),B(),B()]),(e=>A(e)?void 0:e+"")),[f,w,L]=re((()=>S)),R=(e,t,s)=>M(c(e),(([n,,o])=>{if(!z(o,t)){const r=Z();if(d(e)!=I(e))_(r,t);else{let e=t;for(;!A(e)&&!z(r,e);)_(r,e),e=$(n,e)}if(s)return r;G(o,t,r)}return $(o,t)})),v=(e,t)=>M(c(e),(([,,e])=>G(e,t))),I=e=>$(t,e),S={setRelationshipDefinition:(e,r,a,i)=>(G(t,e,a),u(e,r,((t,r)=>{const a=Z(),i=Z(),l=Z(),[d,u]=c(e);W(r,(([t,s],n)=>{A(t)||(_(i,t),M($(u,t),(e=>{P(e,n),N(e)&&G(u,t)}))),A(s)||(_(i,s),z(u,s)||G(u,s,Z()),_($(u,s),n)),_(a,n),G(d,n,s),q($(o,e),(t=>{z(R(e,t),n)&&_(l,t)}))})),t(),W(a,(t=>w(s,[e,t]))),W(i,(t=>w(n,[e,t]))),W(l,(t=>{v(e,t),w(o,[e,t])}))}),te(i)),S),delRelationshipDefinition:e=>(G(t,e),h(e),S),getStore:r,getRelationshipIds:a,forEachRelationship:t=>i((s=>t(s,(t=>e.forEachRow(d(s),t))))),hasRelationship:l,getLocalTableId:d,getRemoteTableId:I,getRemoteRowId:(e,t)=>$(c(e)?.[0],t),getLocalRowIds:(e,t)=>O($(c(e)?.[1],t)),getLinkedRowIds:(e,t)=>A(c(e))?[t]:O(R(e,t,!0)),addRemoteRowIdListener:(e,t,n)=>f(n,s,[e,t]),addLocalRowIdsListener:(e,t,s)=>f(s,n,[e,t]),addLinkedRowIdsListener:(e,t,s)=>(R(e,t),f(s,o,[e,t])),delListener:e=>(v(...L(e)),S),destroy:g,getListenerStats:()=>({})};return de(S)})),xe=e=>[e,e],Fe=()=>[B(),B()],Je=(e,t,s,n=G)=>{const o=(r=H(e),a=e=>!ce(t,e),r.filter(a));var r,a;return g(ie(t),(n=>s(e,n,t[n]))),g(o,(t=>n(e,t))),e},Qe=(e,t,s)=>A(e)||!(e=>k(e,ae)&&e.constructor==ae)(e)||ge(e)||le(e)?(s?.(),!1):(he(e,((s,n)=>{t(s,n)||ue(e,n)})),!ge(e)),ze=(e,t,s)=>G(e,t,$(e,t)==-s?void 0:s),Ne=()=>{let e,t,s=0;const n=B(),o=B(),a=B(),d=B(),u=B(),w=B(),L=B(),R=B(),v=B(),p=Fe(),y=Fe(),C=Fe(),m=Fe(),E=Fe(),k=Fe(),F=Fe(),J=Fe(),Q=Fe(),O=Fe(),[Y,ee,te,se]=re((()=>tt)),ne=(t,s)=>(!e||z(w,s)||Oe(s))&&Qe(t,((e,t)=>ae(s,t,e)),(()=>Oe(s))),ae=(e,t,s,n)=>Qe(n?s:le(s,e,t),((n,o)=>M(ie(e,t,o,n),(e=>(s[o]=e,!0)),(()=>!1))),(()=>Oe(e,t))),ie=(t,s,n,o)=>e?M($($(w,t),n),(e=>fe(o)!=e.type?Oe(t,s,n,o,e.default):o),(()=>Oe(t,s,n,o))):A(fe(o))?Oe(t,s,n,o):o,le=(e,t,s)=>(M($(L,t),(([n,o])=>{W(n,((t,s)=>{ce(e,s)||(e[s]=t)})),W(o,(n=>{ce(e,n)||Oe(t,s,n)}))})),e),Le=e=>Je(w,e,((e,t,s)=>{const n=B(),o=Z();Je(K(w,t,B),s,((e,t,s)=>{G(e,t,s),M(s.default,(e=>G(n,t,e)),(()=>_(o,t)))})),G(L,t,[n,o])}),((e,t)=>{G(w,t),G(L,t)})),ve=e=>Je(v,e,((e,t,s)=>Ie(t,s)),((e,t)=>Ce(t))),Ie=(e,t)=>Je(K(v,e,(()=>(ke(e,1),B()))),t,((t,s,n)=>Se(e,t,s,n)),((t,s)=>me(e,t,s))),Se=(e,t,s,n,o)=>Je(K(t,s,(()=>(Ae(e,s,1),B()))),n,((t,n,o)=>pe(e,s,t,n,o)),((n,r)=>Ee(e,t,s,n,r,o))),pe=(e,t,s,n,o)=>{z(s,n)||Me(e,t,n,1);const r=$(s,n);o!==r&&(De(e,t,n,r,o),G(s,n,o))},ye=(e,t,s,n,o)=>M($(t,s),(t=>pe(e,s,t,n,o)),(()=>Se(e,t,s,le({[n]:o},e,s)))),Te=e=>{const[t]=K(R,e,oe),s=t();return z($(v,e),s)?Te(e):s},be=e=>$(v,e)??Ie(e,{}),Ce=e=>Ie(e,{}),me=(e,t,s)=>{const[,n]=K(R,e,oe);n(s),Se(e,t,s,{},!0)},Ee=(e,t,s,n,o,r)=>{const a=$($(L,e)?.[0],o);if(!A(a)&&!r)return pe(e,s,n,o,a);const i=t=>{De(e,s,t,$(n,t)),Me(e,s,t,-1),G(n,t)};A(a)?i(o):q(n,i),N(n)&&(Ae(e,s,-1),N(G(t,s))&&(ke(e,-1),G(v,e),G(R,e)))},ke=(e,t)=>ze(n,e,t),Ae=(e,t,s)=>ze(K(o,e,B),t,s),Me=(e,t,s,n)=>ze(K(K(a,e,B),t,B),s,n),De=(e,t,s,n,o)=>K(K(K(d,e,B),t,B),s,(()=>[n,0]))[1]=o,Oe=(e,t,s,n,o)=>(S(K(K(K(u,e,B),t,B),s,(()=>[])),n),o),je=(e,t,s)=>M($($($(d,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...xe(Ve(e,t,s))])),We=e=>N(u)||N(Q[e])?0:W(e?V(u,X):u,((t,s)=>W(t,((t,n)=>W(t,((t,o)=>ee(Q[e],[s,n,o],t))))))),Pe=(e,t,s)=>{if(!N(t))return ee(e,s),1},Be=e=>{const t=N(E[e]),s=N(F[e])&&N(m[e])&&t&&N(y[e]),r=N(J[e])&&N(k[e])&&N(C[e])&&N(p[e]);if(!s||!r){const i=e?[V(n),X(o),V(a,X),V(d,X)]:[n,o,a,d];if(!s){W(i[2],((t,s)=>W(t,((t,n)=>Pe(F[e],t,[s,n])))));const s=Z();W(i[1],((n,o)=>{Pe(m[e],n,[o])&&!t&&(ee(E[e],[o,null]),_(s,o))})),t||W(i[3],((t,n)=>{if(!z(s,n)){const s=Z();W(t,(e=>W(e,(([t,n],o)=>n!==t?_(s,o):P(e,o))))),W(s,(t=>ee(E[e],[n,t])))}})),Pe(y[e],i[0])}if(!r){let t;W(i[3],((s,n)=>{let o;W(s,((s,r)=>{let a;W(s,(([s,i],l)=>{i!==s&&(ee(J[e],[n,r,l],i,s,je),t=o=a=1)})),a&&ee(k[e],[n,r],je)})),o&&ee(C[e],[n],je)})),t&&ee(p[e],void 0,je)}}},He=(e,...t)=>(Ze((()=>e(...f(t,i)))),tt),$e=()=>U(v,(e=>U(e,U))),qe=()=>H(v),Ge=e=>H($(v,i(e))),Ke=(e,t,s,n=0,o)=>{const r=[];return q($(v,i(e)),((e,s)=>S(r,[A(t)?e:$(s,i(t)),e]))),f(I(h(r,(([e],[t])=>Re(e,t)*(s?-1:1))),n,A(o)?o:n+o),(([,e])=>e))},Ue=(e,t)=>H($($(v,i(e)),i(t))),Ve=(e,t,s)=>$($($(v,i(e)),i(t)),i(s)),Xe=e=>He((()=>(e=>Qe(e,ne,Oe))(e)?ve(e):0)),Ye=()=>He((()=>ve({}))),Ze=(e,t)=>{if(-1==s)return;_e();const n=e();return et(t),n},_e=()=>(s++,tt),et=e=>(s>0&&(s--,0==s&&(t=!N(d),s=1,We(1),t&&Be(1),s=-1,e?.(U(d,(e=>U(e,(e=>U(e,(e=>[...e]),(([e,t])=>e===t))),ge)),ge),U(u,(e=>U(e,U))))&&(s=1,W(d,((e,t)=>W(e,((e,s)=>W(e,(([e],n)=>we(tt,t,s,n,e))))))),s=-1,t=!1),ee(O[0],void 0,t),We(0),t&&Be(0),ee(O[1],void 0,t),s=0,g([d,u,n,o,a],j))),tt),tt={getTables:$e,getTableIds:qe,getTable:e=>U($(v,i(e)),U),getRowIds:Ge,getSortedRowIds:Ke,getRow:(e,t)=>U($($(v,i(e)),i(t))),getCellIds:Ue,getCell:Ve,hasTables:()=>!N(v),hasTable:e=>z(v,i(e)),hasRow:(e,t)=>z($(v,i(e)),i(t)),hasCell:(e,t,s)=>z($($(v,i(e)),i(t)),i(s)),getJson:()=>T(v),getSchemaJson:()=>T(w),setTables:Xe,setTable:(e,t)=>He((e=>ne(t,e)?Ie(e,t):0),e),setRow:(e,t,s)=>He(((e,t)=>ae(i(e),i(t),s)?Se(i(e),be(i(e)),i(t),s):0),e,t),addRow:(e,t)=>Ze((()=>{let s;return ae(e,s,t)&&(e=i(e),Se(e,be(e),s=Te(e),t)),s})),setPartialRow:(e,t,s)=>He(((e,t)=>{if(ae(e,t,s,1)){const n=be(e);he(s,((s,o)=>ye(e,n,t,o,s)))}}),e,t),setCell:(e,t,s,n)=>He(((e,t,s)=>M(ie(e,t,s,x(n)?n(Ve(e,t,s)):n),(n=>ye(e,be(e),t,s,n)))),e,t,s),setJson:e=>{try{"{}"===e?Ye():Xe(b(e))}catch{}return tt},setSchema:t=>He((()=>{if((e=(e=>Qe(e,(e=>Qe(e,(e=>{if(!Qe(e,((e,t)=>l(["type","default"],t))))return!1;const t=e.type;return!(!D(t)&&t!=r||(fe(e.default)!=t&&ue(e,"default"),0))})))))(t))&&(Le(t),!N(v))){const e=$e();Ye(),Xe(e)}})),delTables:Ye,delTable:e=>He((e=>z(v,e)?Ce(e):0),e),delRow:(e,t)=>He(((e,t)=>M($(v,e),(s=>z(s,t)?me(e,s,t):0))),e,t),delCell:(e,t,s,n)=>He(((e,t,s)=>M($(v,e),(o=>M($(o,t),(r=>z(r,s)?Ee(e,o,t,r,s,n):0))))),e,t,s),delSchema:()=>He((()=>{Le({}),e=!1})),transaction:Ze,startTransaction:_e,finishTransaction:et,forEachTable:e=>W(v,((t,s)=>e(s,(e=>W(t,((t,s)=>e(s,(e=>q(t,e))))))))),forEachRow:(e,t)=>W($(v,i(e)),((e,s)=>t(s,(t=>q(e,t))))),forEachCell:(e,t,s)=>q($($(v,i(e)),i(t)),s),addSortedRowIdsListener:(e,t,s,n,o,r,a)=>{let i=Ke(e,t,s,n,o);return Y((()=>{const a=Ke(e,t,s,n,o);c(a,i)||(i=a,r(tt,e,t,s,n,o,i))}),E[a?1:0],[e,t])},addWillFinishTransactionListener:e=>Y(e,O[0]),addDidFinishTransactionListener:e=>Y(e,O[1]),callListener:e=>(se(e,[qe,Ge,Ue],(e=>A(e[2])?[]:xe(Ve(...e)))),tt),delListener:e=>(te(e),tt),getListenerStats:()=>({}),createStore:Ne};return he({Tables:[0,p],TableIds:[0,y],Table:[1,C],RowIds:[1,m],Row:[2,k],CellIds:[2,F],Cell:[3,J],InvalidCell:[3,Q]},(([e,t],s)=>{tt["add"+s+"Listener"]=(...s)=>Y(s[e],t[s[e+1]?1:0],e>0?I(s,0,e):void 0)})),de(tt)};export{Le as createCheckpoints,ye as createCustomPersister,Ee as createFilePersister,ve as createIndexes,Ce as createLocalPersister,pe as createMetrics,Me as createQueries,De as createRelationships,Ae as createRemotePersister,me as createSessionPersister,Ne as createStore,Re as defaultSorter};
|
|
1
|
+
import{promises as e,watch as t}from"fs";const s=e=>typeof e,n=s(""),o=s(!0),r=s(0),a=s(s),i=e=>""+e,l=(e,t)=>e.includes(t),d=(e,t)=>e.every(t),c=(e,t)=>L(e)===L(t)&&d(e,((e,s)=>t[s]===e)),u=(e,t)=>d(e,((s,n)=>0==n||t(e[n-1],s)<=0)),h=(e,t)=>e.sort(t),g=(e,t)=>e.forEach(t),f=(e,t)=>e.map(t),w=e=>v(e,((e,t)=>e+t),0),L=e=>e.length,R=e=>0==L(e),v=(e,t,s)=>e.reduce(t,s),I=(e,t,s)=>e.slice(t,s),S=(e,...t)=>e.push(...t),p=e=>e.pop(),y=e=>e.shift(),T=e=>JSON.stringify(e,((e,t)=>k(t,Map)?v([...t],((e,[t,s])=>(e[t]=s,e)),{}):t)),b=JSON.parse,C=Math.max,m=Math.min,E=isFinite,k=(e,t)=>e instanceof t,A=e=>null==e,M=(e,t,s)=>A(e)?s?.():t(e),D=e=>e==n||e==o,x=e=>s(e)==a,F=e=>Array.isArray(e),J=()=>{},Q=e=>e.size,z=(e,t)=>e?.has(t)??!1,N=e=>A(e)||0==Q(e),O=e=>[...e?.values()??[]],j=e=>e.clear(),W=(e,t)=>e?.forEach(t),P=(e,t)=>e?.delete(t),B=e=>new Map(e),H=e=>[...e?.keys()??[]],$=(e,t)=>e?.get(t),q=(e,t)=>W(e,((e,s)=>t(s,e))),G=(e,t,s)=>A(s)?(P(e,t),e):e?.set(t,s),K=(e,t,s)=>(z(e,t)||G(e,t,s()),$(e,t)),U=(e,t,s)=>{const n={},o=t??(e=>e);return W(e,((e,t)=>M(o(e),(e=>s?.(e)?0:n[t]=e)))),n},V=(e,t)=>{const s=B(),n=t??(e=>e);return W(e,((e,t)=>s.set(t,n(e)))),s},X=e=>V(e,V),Y=(e,t,s,n,o=0)=>M((s?K:$)(e,t[o],o>L(t)-2?s:B),(r=>{if(o>L(t)-2)return n?.(r)&&G(e,t[o]),r;const a=Y(r,t,s,n,o+1);return N(r)&&G(e,t[o]),a})),Z=e=>new Set(F(e)||A(e)?e:[e]),_=(e,t)=>e?.add(t),ee=(e,t,s)=>{const n=e.hasRow,o=B(),r=B(),a=B(),i=B(),l=B(),d=(t,s,...n)=>{const o=K(l,t,Z);return g(n,(t=>_(o,t)&&s&&e.callListener(t))),n},u=(t,...s)=>M($(l,t),(n=>{g(R(s)?O(n):s,(t=>{e.delListener(t),P(n,t)})),N(n)&&G(l,t)})),h=(e,s)=>{G(o,e,s),z(r,e)||(G(r,e,t()),G(a,e,B()),G(i,e,B()))},f=e=>{G(o,e),G(r,e),G(a,e),G(i,e),u(e)};return[()=>e,()=>H(o),e=>q(r,e),e=>z(r,e),e=>$(o,e),e=>$(r,e),(e,t)=>G(r,e,t),h,(t,o,r,l,f)=>{h(t,o);const w=B(),L=B(),R=$(a,t),v=$(i,t),I=t=>{const r=s=>e.getCell(o,t,s),a=$(R,t),i=n(o,t)?s(l(r,t)):void 0;if(a===i||F(a)&&F(i)&&c(a,i)||G(w,t,[a,i]),!A(f)){const e=$(v,t),s=n(o,t)?f(r,t):void 0;e!=s&&G(L,t,s)}},S=e=>{r((()=>{W(w,(([,e],t)=>G(R,t,e))),W(L,((e,t)=>G(v,t,e)))}),w,L,R,v,e),j(w),j(L)};q(R,I),e.hasTable(o)&&g(e.getRowIds(o),(e=>{z(R,e)||I(e)})),S(!0),u(t),d(t,0,e.addRowListener(o,null,((e,t,s)=>I(s))),e.addTableListener(o,(()=>S())))},f,()=>q(l,f),d,u]},te=(e,t)=>s(e)==n?t=>t(e):e??(()=>t??""),se=e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))},ne=/^\d+$/,oe=()=>{const e=[];let t=0;return[()=>y(e)??""+t++,t=>{ne.test(t)&&L(e)<1e3&&S(e,t)}]},re=e=>{let t;const[s,n]=oe(),o=B();return[(n,r,a)=>{t??=e();const i=s();return G(o,i,[n,r,a]),_(Y(r,a??[""],Z),i),i},(e,s,...n)=>g(((e,t=[""])=>{const s=[],n=(e,o)=>o==L(t)?S(s,e):null===t[o]?W(e,(e=>n(e,o+1))):g([t[o],null],(t=>n($(e,t),o+1)));return n(e,0),s})(e,s),(e=>W(e,(e=>$(o,e)[0](t,...s??[],...n))))),e=>M($(o,e),(([,t,s])=>(Y(t,s??[""],void 0,(t=>(P(t,e),N(t)?1:0))),G(o,e),n(e),s))),(e,s,n)=>M($(o,e),(([e,,o=[]])=>{const r=(...a)=>{const i=L(a);i==L(o)?e(t,...a,...n(a)):A(o[i])?g(s[i](...a),(e=>r(...a,e))):r(...a,o[i])};r()}))]},ae=Object,ie=ae.keys,le=ae.isFrozen,de=ae.freeze,ce=(e,t)=>!A(((e,t)=>M(e,(e=>e[t])))(e,t)),ue=(e,t)=>delete e[t],he=(e,t)=>g(ae.entries(e),(([e,s])=>t(s,e))),ge=e=>R(ie(e)),fe=e=>{const t=s(e);return D(t)||t==r&&E(e)?t:void 0},we=(e,t,s,n,o)=>A(o)?e.delCell(t,s,n,!0):e.setCell(t,s,n,o),Le=se((e=>{let t,s,n,o=100,r=B(),a=1;const i=B(),d=B(),[c,u,h]=re((()=>j)),f=B(),w=B(),v=[],I=[],T=(t,s)=>{a=0,e.transaction((()=>W($(f,s),((s,n)=>W(s,((s,o)=>W(s,((s,r)=>we(e,n,o,r,s[t]))))))))),a=1},b=e=>{G(f,e),G(w,e),u(d,[e])},C=(e,t)=>g(((e,t)=>e.splice(0,t))(e,t??L(e)),b),m=()=>C(v,L(v)-o),E=e.addCellListener(null,null,null,((e,s,o,i,l,d)=>{if(a){M(t,(()=>{S(v,t),m(),C(I),t=void 0,n=1}));const e=K(r,s,B),a=K(e,o,B),c=K(a,i,(()=>[d,void 0]));c[1]=l,c[0]===l&&N(G(a,i))&&N(G(e,o))&&N(G(r,s))&&(t=p(v),n=1),F()}})),k=(e="")=>(A(t)&&(t=""+s++,G(f,t,r),Q(t,e),r=B(),n=1),t),D=()=>{R(v)||(((e,...t)=>{e.unshift(...t)})(I,k()),T(0,t),t=p(v),n=1)},x=()=>{R(I)||(S(v,t),t=y(I),T(1,t),n=1)},F=()=>{n&&(u(i),n=0)},J=e=>{const t=k(e);return F(),t},Q=(e,t)=>(O(e)&&$(w,e)!==t&&(G(w,e,t),u(d,[e])),j),O=e=>z(f,e),j={setSize:e=>(o=e,m(),j),addCheckpoint:J,setCheckpoint:Q,getStore:()=>e,getCheckpointIds:()=>[[...v],t,[...I]],forEachCheckpoint:e=>q(w,e),hasCheckpoint:O,getCheckpoint:e=>$(w,e),goBackward:()=>(D(),F(),j),goForward:()=>(x(),F(),j),goTo:e=>{const s=l(v,e)?D:l(I,e)?x:null;for(;!A(s)&&e!=t;)s();return F(),j},addCheckpointIdsListener:e=>c(e,i),addCheckpointListener:(e,t)=>c(t,d,[e]),delListener:e=>(h(e),j),clear:()=>(C(v),C(I),A(t)||b(t),t=void 0,s=0,J(),j),destroy:()=>{e.delListener(E)},getListenerStats:()=>({})};return de(j.clear())})),Re=(e,t)=>e<t?-1:1,ve=se((e=>{const t=B(),s=B(),[n,o,r,a,l,d,c,,g,w,L]=ee(e,B,(e=>A(e)?"":F(e)?f(e,i):i(e))),[R,v,I]=re((()=>p)),S=(t,s,n)=>{const o=l(t);W(n,((t,n)=>s(n,(s=>W(t,(t=>s(t,(s=>e.forEachCell(o,t,s)))))))))},p={setIndexDefinition:(e,n,o,r,a,i=Re)=>{const l=A(a)?void 0:([e],[t])=>a(e,t);return g(e,n,((n,o,a,g,f,w)=>{let L=0;const R=Z(),I=Z(),S=d(e);if(W(o,(([e,t],s)=>{const n=Z(e),o=Z(t);W(n,(e=>P(o,e)?P(n,e):0)),W(n,(e=>{_(R,e),M($(S,e),(t=>{P(t,s),N(t)&&(G(S,e),L=1)}))})),W(o,(e=>{_(R,e),z(S,e)||(G(S,e,Z()),L=1),_($(S,e),s),A(r)||_(I,e)}))})),n(),N(f)||(w?q(S,(e=>_(I,e))):q(a,(e=>M($(g,e),(e=>_(I,e))))),W(I,(e=>{const t=(t,s)=>i($(f,t),$(f,s),e),s=[...$(S,e)];u(s,t)||(G(S,e,Z(h(s,t))),_(R,e))}))),(L||w)&&!A(l)){const t=[...S];u(t,l)||(c(e,B(h(t,l))),L=1)}L&&v(t,[e]),W(R,(t=>v(s,[e,t])))}),te(o),M(r,te)),p},delIndexDefinition:e=>(w(e),p),getStore:n,getIndexIds:o,forEachIndex:e=>r(((t,s)=>e(t,(e=>S(t,e,s))))),forEachSlice:(e,t)=>S(e,t,d(e)),hasIndex:a,hasSlice:(e,t)=>z(d(e),t),getTableId:l,getSliceIds:e=>H(d(e)),getSliceRowIds:(e,t)=>O($(d(e),t)),addSliceIdsListener:(e,s)=>R(s,t,[e]),addSliceRowIdsListener:(e,t,n)=>R(n,s,[e,t]),delListener:e=>(I(e),p),destroy:L,getListenerStats:()=>({})};return de(p)})),Ie=B([["avg",[(e,t)=>w(e)/t,(e,t,s)=>e+(t-e)/(s+1),(e,t,s)=>e+(e-t)/(s-1),(e,t,s,n)=>e+(t-s)/n]],["max",[e=>C(...e),(e,t)=>C(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:C(t,e)]],["min",[e=>m(...e),(e,t)=>m(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:m(t,e)]],["sum",[e=>w(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),Se=(e,t,s,n,o,r=!1)=>{if(N(s))return;const[a,i,l,d]=o;return r||=A(e),W(n,(([s,n])=>{r||(e=A(s)?i?.(e,n,t++):A(n)?l?.(e,s,t--):d?.(e,n,s,t),r||=A(e))})),r?a(O(s),Q(s)):e},pe=se((e=>{const t=B(),[s,n,o,r,a,i,l,,d,c,u]=ee(e,J,(e=>isNaN(e)||A(e)||!0===e||!1===e||""===e?void 0:1*e)),[h,g,f]=re((()=>w)),w={setMetricDefinition:(e,s,n,o,r,a,c)=>{const u=x(n)?[n,r,a,c]:$(Ie,n)??$(Ie,"sum");return d(e,s,((s,n,o,r,a,d)=>{const c=i(e),h=Q(r);d||=A(c),s();let f=Se(c,h,r,n,u,d);E(f)||(f=void 0),f!=c&&(l(e,f),g(t,[e],f,c))}),te(o,1)),w},delMetricDefinition:e=>(c(e),w),getStore:s,getMetricIds:n,forEachMetric:o,hasMetric:r,getTableId:a,getMetric:i,addMetricListener:(e,s)=>h(s,t,[e]),delListener:e=>(f(e),w),destroy:u,getListenerStats:()=>({})};return de(w)})),ye=(e,t,s,n,o)=>{let r,a=0;const i={load:async s=>{if(2!=a){a=1;const n=await t();A(n)||""==n?e.setTables(s):e.setJson(n),a=0}return i},startAutoLoad:async e=>(i.stopAutoLoad(),await i.load(e),n(i.load),i),stopAutoLoad:()=>(o(),i),save:async()=>(1!=a&&(a=2,await s(e.getJson()),a=0),i),startAutoSave:async()=>(await i.stopAutoSave().save(),r=e.addTablesListener((()=>i.save())),i),stopAutoSave:()=>(M(r,e.delListener),i),getStore:()=>e,destroy:()=>i.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return de(i)},Te=globalThis.window,be=(e,t,s)=>{let n;return ye(e,(async()=>s.getItem(t)),(async e=>s.setItem(t,e)),(e=>{n=n=>{n.storageArea===s&&n.key===t&&e()},Te.addEventListener("storage",n)}),(()=>{Te.removeEventListener("storage",n),n=void 0}))},Ce=(e,t)=>be(e,t,localStorage),me=(e,t)=>be(e,t,sessionStorage),Ee=(s,n)=>{let o;return ye(s,(async()=>{try{return await e.readFile(n,"utf8")}catch{}}),(async t=>{try{await e.writeFile(n,t,"utf8")}catch{}}),(e=>{o=t(n,e)}),(()=>{o?.close(),o=void 0}))},ke=e=>e.headers.get("ETag"),Ae=(e,t,s,n)=>{let o,r;return ye(e,(async()=>{const e=await fetch(t);return r=ke(e),e.text()}),(async e=>await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:e})),(e=>{o=setInterval((async()=>{const s=await fetch(t,{method:"HEAD"}),n=ke(s);A(r)||A(n)||n==r||(r=n,e())}),1e3*n)}),(()=>{M(o,clearInterval),o=void 0}))},Me=se((e=>{const t=e.createStore,[s,n,o,r,a,,,i,,l,c,u,h]=ee(e,(()=>!0),J),f=t(),w=t(),v=B(),p=(e,t,...s)=>g(s,(s=>_(K(K(v,t,B),e,Z),s))),y=e=>{M($(v,e),(e=>{q(e,((e,t)=>W(t,(t=>e.delListener(t))))),j(e)})),g([w,f],(t=>t.delTable(e)))},T=(e,t,s)=>p(t,e,t.addWillFinishTransactionListener(s.startTransaction),t.addDidFinishTransactionListener((()=>s.finishTransaction()))),b={setQueryDefinition:(t,s,n)=>{i(t,s),y(t);const o=[],r=[[null,[s,null,null,[],B()]]],a=[],l=[],c=[];n({select:(e,t)=>{const s=x(e)?[L(o)+"",e]:[A(t)?e:t,s=>s(e,t)];return S(o,s),{as:e=>s[0]=e}},join:(e,t,s)=>{const n=A(s)||x(t)?null:t,o=A(n)?t:s,a=[e,[e,n,x(o)?o:e=>e(o),[],B()]];return S(r,a),{as:e=>a[0]=e}},where:(e,t,s)=>S(a,x(e)?e:A(s)?s=>s(e)===t:n=>n(e,t)===s),group:(e,t,s,n,o)=>{const r=[e,[e,x(t)?[t,s,n,o]:$(Ie,t)??[(e,t)=>t]]];return S(l,r),{as:e=>r[0]=e}},having:(e,t)=>S(c,x(e)?e:s=>s(e)===t)});const v=B(o);if(N(v))return b;const I=B(r);q(I,((e,[,t])=>M($(I,t),(({3:t})=>A(e)?0:S(t,e)))));const C=B(l);let m=f;if(N(C)&&R(c))m=w;else{T(t,m,w);const e=B();q(C,((t,[s,n])=>_(K(e,s,Z),[t,n])));const s=Z();q(v,(t=>z(e,t)?0:_(s,t)));const n=B(),o=(s,n,o,r)=>M(s,(([a,i,l,u])=>{q(n,((t,[s])=>{const n=K(a,t,B),i=$(n,o),l=r?void 0:s;if(i!==l){const s=Z([[i,l]]),r=Q(n);G(n,o,l),W($(e,t),(([e,t])=>{const o=Se(u[e],r,n,s,t);u[e]=A(fe(o))?null:o}))}})),N(i)||!d(c,(e=>e((e=>u[e]))))?w.delRow(t,l):A(l)?s[2]=w.addRow(t,u):w.setRow(t,l,u)}));p(m,t,m.addRowListener(t,null,((r,a,i,l)=>{const d=[],c=[],u=B(),h=m.hasRow(t,i);let g=!h;W(s,(e=>{const[s,n,o]=l(t,i,e);S(d,n),S(c,o),g||=s})),q(e,(e=>{const[s,,n]=l(t,i,e);(g||s)&&G(u,e,[n])})),g&&o(Y(n,d,void 0,(([,e])=>(P(e,i),N(e)))),u,i,1),h&&o(Y(n,c,(()=>{const e={};return W(s,(s=>e[s]=m.getCell(t,i,s))),[B(),Z(),void 0,e]}),(([,e])=>{_(e,i)})),u,i)})))}T(t,e,m);const E=(n,o,r,i)=>{const l=t=>e.getCell(o,r,t);g(i,(s=>{const[o,,r,a,i]=$(I,s),d=r?.(l,n),[c,g]=$(i,n)??[];d!=c&&(A(g)||h(t,g),G(i,n,A(d)?null:[d,...u(t,1,e.addRowListener(o,d,(()=>E(n,o,d,a))))]))})),(n=>{const o=(t,o)=>e.getCell(...A(o)?[s,n,t]:t===s?[s,n,o]:[$(I,t)?.[0],$($(I,t)?.[4],n)?.[0],o]);m.transaction((()=>d(a,(e=>e(o)))?q(v,((e,s)=>we(m,t,n,e,s(o,n)))):m.delRow(t,n)))})(n)},{3:k}=$(I,null);return m.transaction((()=>u(t,1,e.addRowListener(s,null,((n,o,r)=>{e.hasRow(s,r)?E(r,s,r,k):(m.delRow(t,r),W(I,(({4:e})=>M($(e,r),(([,s])=>{h(t,s),G(e,r)})))))}))))),b},delQueryDefinition:e=>(y(e),l(e),b),getStore:s,getQueryIds:n,forEachQuery:o,hasQuery:r,getTableId:a,delListener:e=>(w.delListener(e),b),destroy:c,getListenerStats:()=>{const{tables:e,tableIds:t,transaction:s,...n}=w.getListenerStats();return n}};return he({Table:[1,1],RowIds:[0,1],SortedRowIds:[0,5],Row:[1,2],CellIds:[0,2],Cell:[1,3]},(([e,t],s)=>{g(e?["get","has","forEach"]:["get"],(e=>b[e+"Result"+s]=(...t)=>w[e+s](...t))),b["addResult"+s+"Listener"]=(...e)=>w["add"+s+"Listener"](...I(e,0,t),((s,...n)=>e[t](b,...n)))})),de(b)})),De=se((e=>{const t=B(),s=B(),n=B(),o=B(),[r,a,i,l,d,c,,,u,h,g]=ee(e,(()=>[B(),B(),B(),B()]),(e=>A(e)?void 0:e+"")),[f,w,L]=re((()=>S)),R=(e,t,s)=>M(c(e),(([n,,o])=>{if(!z(o,t)){const r=Z();if(d(e)!=I(e))_(r,t);else{let e=t;for(;!A(e)&&!z(r,e);)_(r,e),e=$(n,e)}if(s)return r;G(o,t,r)}return $(o,t)})),v=(e,t)=>M(c(e),(([,,e])=>G(e,t))),I=e=>$(t,e),S={setRelationshipDefinition:(e,r,a,i)=>(G(t,e,a),u(e,r,((t,r)=>{const a=Z(),i=Z(),l=Z(),[d,u]=c(e);W(r,(([t,s],n)=>{A(t)||(_(i,t),M($(u,t),(e=>{P(e,n),N(e)&&G(u,t)}))),A(s)||(_(i,s),z(u,s)||G(u,s,Z()),_($(u,s),n)),_(a,n),G(d,n,s),q($(o,e),(t=>{z(R(e,t),n)&&_(l,t)}))})),t(),W(a,(t=>w(s,[e,t]))),W(i,(t=>w(n,[e,t]))),W(l,(t=>{v(e,t),w(o,[e,t])}))}),te(i)),S),delRelationshipDefinition:e=>(G(t,e),h(e),S),getStore:r,getRelationshipIds:a,forEachRelationship:t=>i((s=>t(s,(t=>e.forEachRow(d(s),t))))),hasRelationship:l,getLocalTableId:d,getRemoteTableId:I,getRemoteRowId:(e,t)=>$(c(e)?.[0],t),getLocalRowIds:(e,t)=>O($(c(e)?.[1],t)),getLinkedRowIds:(e,t)=>A(c(e))?[t]:O(R(e,t,!0)),addRemoteRowIdListener:(e,t,n)=>f(n,s,[e,t]),addLocalRowIdsListener:(e,t,s)=>f(s,n,[e,t]),addLinkedRowIdsListener:(e,t,s)=>(R(e,t),f(s,o,[e,t])),delListener:e=>(v(...L(e)),S),destroy:g,getListenerStats:()=>({})};return de(S)})),xe=e=>[e,e],Fe=()=>[B(),B()],Je=(e,t,s,n=G)=>{const o=(r=H(e),a=e=>!ce(t,e),r.filter(a));var r,a;return g(ie(t),(n=>s(e,n,t[n]))),g(o,(t=>n(e,t))),e},Qe=(e,t,s)=>A(e)||!(e=>k(e,ae)&&e.constructor==ae)(e)||ge(e)||le(e)?(s?.(),!1):(he(e,((s,n)=>{t(s,n)||ue(e,n)})),!ge(e)),ze=(e,t,s)=>G(e,t,$(e,t)==-s?void 0:s),Ne=()=>{let e,t,s=0;const n=B(),o=B(),a=B(),d=B(),u=B(),w=B(),L=B(),R=B(),v=B(),p=Fe(),y=Fe(),C=Fe(),m=Fe(),E=Fe(),k=Fe(),F=Fe(),J=Fe(),Q=Fe(),O=Fe(),[Y,ee,te,se]=re((()=>tt)),ne=(t,s)=>(!e||z(w,s)||Oe(s))&&Qe(t,((e,t)=>ae(s,t,e)),(()=>Oe(s))),ae=(e,t,s,n)=>Qe(n?s:le(s,e,t),((n,o)=>M(ie(e,t,o,n),(e=>(s[o]=e,!0)),(()=>!1))),(()=>Oe(e,t))),ie=(t,s,n,o)=>e?M($($(w,t),n),(e=>fe(o)!=e.type?Oe(t,s,n,o,e.default):o),(()=>Oe(t,s,n,o))):A(fe(o))?Oe(t,s,n,o):o,le=(e,t,s)=>(M($(L,t),(([n,o])=>{W(n,((t,s)=>{ce(e,s)||(e[s]=t)})),W(o,(n=>{ce(e,n)||Oe(t,s,n)}))})),e),Le=e=>Je(w,e,((e,t,s)=>{const n=B(),o=Z();Je(K(w,t,B),s,((e,t,s)=>{G(e,t,s),M(s.default,(e=>G(n,t,e)),(()=>_(o,t)))})),G(L,t,[n,o])}),((e,t)=>{G(w,t),G(L,t)})),ve=e=>Je(v,e,((e,t,s)=>Ie(t,s)),((e,t)=>Ce(t))),Ie=(e,t)=>Je(K(v,e,(()=>(ke(e,1),B()))),t,((t,s,n)=>Se(e,t,s,n)),((t,s)=>me(e,t,s))),Se=(e,t,s,n,o)=>Je(K(t,s,(()=>(Ae(e,s,1),B()))),n,((t,n,o)=>pe(e,s,t,n,o)),((n,r)=>Ee(e,t,s,n,r,o))),pe=(e,t,s,n,o)=>{z(s,n)||Me(e,t,n,1);const r=$(s,n);o!==r&&(De(e,t,n,r,o),G(s,n,o))},ye=(e,t,s,n,o)=>M($(t,s),(t=>pe(e,s,t,n,o)),(()=>Se(e,t,s,le({[n]:o},e,s)))),Te=e=>{const[t]=K(R,e,oe),s=t();return z($(v,e),s)?Te(e):s},be=e=>$(v,e)??Ie(e,{}),Ce=e=>Ie(e,{}),me=(e,t,s)=>{const[,n]=K(R,e,oe);n(s),Se(e,t,s,{},!0)},Ee=(e,t,s,n,o,r)=>{const a=$($(L,e)?.[0],o);if(!A(a)&&!r)return pe(e,s,n,o,a);const i=t=>{De(e,s,t,$(n,t)),Me(e,s,t,-1),G(n,t)};A(a)?i(o):q(n,i),N(n)&&(Ae(e,s,-1),N(G(t,s))&&(ke(e,-1),G(v,e),G(R,e)))},ke=(e,t)=>ze(n,e,t),Ae=(e,t,s)=>ze(K(o,e,B),t,s),Me=(e,t,s,n)=>ze(K(K(a,e,B),t,B),s,n),De=(e,t,s,n,o)=>K(K(K(d,e,B),t,B),s,(()=>[n,0]))[1]=o,Oe=(e,t,s,n,o)=>(S(K(K(K(u,e,B),t,B),s,(()=>[])),n),o),je=(e,t,s)=>M($($($(d,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...xe(Ve(e,t,s))])),We=e=>N(u)||N(Q[e])?0:W(e?V(u,X):u,((t,s)=>W(t,((t,n)=>W(t,((t,o)=>ee(Q[e],[s,n,o],t))))))),Pe=(e,t,s)=>{if(!N(t))return ee(e,s),1},Be=e=>{const t=N(E[e]),s=N(F[e])&&N(m[e])&&t&&N(y[e]),r=N(J[e])&&N(k[e])&&N(C[e])&&N(p[e]);if(!s||!r){const i=e?[V(n),X(o),V(a,X),V(d,X)]:[n,o,a,d];if(!s){W(i[2],((t,s)=>W(t,((t,n)=>Pe(F[e],t,[s,n])))));const s=Z();W(i[1],((n,o)=>{Pe(m[e],n,[o])&&!t&&(ee(E[e],[o,null]),_(s,o))})),t||W(i[3],((t,n)=>{if(!z(s,n)){const s=Z();W(t,(e=>W(e,(([t,n],o)=>n!==t?_(s,o):P(e,o))))),W(s,(t=>ee(E[e],[n,t])))}})),Pe(y[e],i[0])}if(!r){let t;W(i[3],((s,n)=>{let o;W(s,((s,r)=>{let a;W(s,(([s,i],l)=>{i!==s&&(ee(J[e],[n,r,l],i,s,je),t=o=a=1)})),a&&ee(k[e],[n,r],je)})),o&&ee(C[e],[n],je)})),t&&ee(p[e],void 0,je)}}},He=(e,...t)=>(Ze((()=>e(...f(t,i)))),tt),$e=()=>U(v,(e=>U(e,U))),qe=()=>H(v),Ge=e=>H($(v,i(e))),Ke=(e,t,s,n=0,o)=>{return f(I(h((r=$(v,i(e)),a=(e,s)=>[A(t)?s:$(e,i(t)),s],f([...r?.entries()??[]],(([e,t])=>a(t,e)))),(([e],[t])=>Re(e,t)*(s?-1:1))),n,A(o)?o:n+o),(([,e])=>e));var r,a},Ue=(e,t)=>H($($(v,i(e)),i(t))),Ve=(e,t,s)=>$($($(v,i(e)),i(t)),i(s)),Xe=e=>He((()=>(e=>Qe(e,ne,Oe))(e)?ve(e):0)),Ye=()=>He((()=>ve({}))),Ze=(e,t)=>{if(-1==s)return;_e();const n=e();return et(t),n},_e=()=>(s++,tt),et=e=>(s>0&&(s--,0==s&&(t=!N(d),s=1,We(1),t&&Be(1),s=-1,e?.(U(d,(e=>U(e,(e=>U(e,(e=>[...e]),(([e,t])=>e===t))),ge)),ge),U(u,(e=>U(e,U))))&&(s=1,W(d,((e,t)=>W(e,((e,s)=>W(e,(([e],n)=>we(tt,t,s,n,e))))))),s=-1,t=!1),ee(O[0],void 0,t),We(0),t&&Be(0),ee(O[1],void 0,t),s=0,g([d,u,n,o,a],j))),tt),tt={getTables:$e,getTableIds:qe,getTable:e=>U($(v,i(e)),U),getRowIds:Ge,getSortedRowIds:Ke,getRow:(e,t)=>U($($(v,i(e)),i(t))),getCellIds:Ue,getCell:Ve,hasTables:()=>!N(v),hasTable:e=>z(v,i(e)),hasRow:(e,t)=>z($(v,i(e)),i(t)),hasCell:(e,t,s)=>z($($(v,i(e)),i(t)),i(s)),getJson:()=>T(v),getSchemaJson:()=>T(w),setTables:Xe,setTable:(e,t)=>He((e=>ne(t,e)?Ie(e,t):0),e),setRow:(e,t,s)=>He(((e,t)=>ae(i(e),i(t),s)?Se(i(e),be(i(e)),i(t),s):0),e,t),addRow:(e,t)=>Ze((()=>{let s;return ae(e,s,t)&&(e=i(e),Se(e,be(e),s=Te(e),t)),s})),setPartialRow:(e,t,s)=>He(((e,t)=>{if(ae(e,t,s,1)){const n=be(e);he(s,((s,o)=>ye(e,n,t,o,s)))}}),e,t),setCell:(e,t,s,n)=>He(((e,t,s)=>M(ie(e,t,s,x(n)?n(Ve(e,t,s)):n),(n=>ye(e,be(e),t,s,n)))),e,t,s),setJson:e=>{try{"{}"===e?Ye():Xe(b(e))}catch{}return tt},setSchema:t=>He((()=>{if((e=(e=>Qe(e,(e=>Qe(e,(e=>{if(!Qe(e,((e,t)=>l(["type","default"],t))))return!1;const t=e.type;return!(!D(t)&&t!=r||(fe(e.default)!=t&&ue(e,"default"),0))})))))(t))&&(Le(t),!N(v))){const e=$e();Ye(),Xe(e)}})),delTables:Ye,delTable:e=>He((e=>z(v,e)?Ce(e):0),e),delRow:(e,t)=>He(((e,t)=>M($(v,e),(s=>z(s,t)?me(e,s,t):0))),e,t),delCell:(e,t,s,n)=>He(((e,t,s)=>M($(v,e),(o=>M($(o,t),(r=>z(r,s)?Ee(e,o,t,r,s,n):0))))),e,t,s),delSchema:()=>He((()=>{Le({}),e=!1})),transaction:Ze,startTransaction:_e,finishTransaction:et,forEachTable:e=>W(v,((t,s)=>e(s,(e=>W(t,((t,s)=>e(s,(e=>q(t,e))))))))),forEachRow:(e,t)=>W($(v,i(e)),((e,s)=>t(s,(t=>q(e,t))))),forEachCell:(e,t,s)=>q($($(v,i(e)),i(t)),s),addSortedRowIdsListener:(e,t,s,n,o,r,a)=>{let i=Ke(e,t,s,n,o);return Y((()=>{const a=Ke(e,t,s,n,o);c(a,i)||(i=a,r(tt,e,t,s,n,o,i))}),E[a?1:0],[e,t])},addWillFinishTransactionListener:e=>Y(e,O[0]),addDidFinishTransactionListener:e=>Y(e,O[1]),callListener:e=>(se(e,[qe,Ge,Ue],(e=>A(e[2])?[]:xe(Ve(...e)))),tt),delListener:e=>(te(e),tt),getListenerStats:()=>({}),createStore:Ne};return he({Tables:[0,p],TableIds:[0,y],Table:[1,C],RowIds:[1,m],Row:[2,k],CellIds:[2,F],Cell:[3,J],InvalidCell:[3,Q]},(([e,t],s)=>{tt["add"+s+"Listener"]=(...s)=>Y(s[e],t[s[e+1]?1:0],e>0?I(s,0,e):void 0)})),de(tt)};export{Le as createCheckpoints,ye as createCustomPersister,Ee as createFilePersister,ve as createIndexes,Ce as createLocalPersister,pe as createMetrics,Me as createQueries,De as createRelationships,Ae as createRemotePersister,me as createSessionPersister,Ne as createStore,Re as defaultSorter};
|
package/lib/tinybase.js.gz
CHANGED
|
Binary file
|
package/lib/tools.d.ts
ADDED
|
@@ -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;
|
package/lib/tools.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=e=>typeof e,t=e(""),l=e(!0),a=e(0),o=(e,t)=>e.every(t),n=(e,t)=>e.sort(t),r=(e,t)=>e.forEach(t),s=(e,t)=>e.map(t),d=e=>e.length,i=(e,...t)=>e.push(...t),$=e=>e.shift(),c=JSON.parse,I=isFinite,b=e=>null==e,h=e=>Array.isArray(e),w=(e,t)=>e?.has(t)??!1,u=e=>[...e?.values()??[]],C=(e,t)=>e?.forEach(t),g=e=>new Map(e),f=(e,t)=>e?.get(t),R=(e,t)=>s([...e?.entries()??[]],(([e,l])=>t(l,e))),T=(e,t,l)=>{return b(l)?(a=t,e?.delete(a),e):e?.set(t,l);var a},p=(e,t,l)=>(w(e,t)||T(e,t,l()),f(e,t)),v=e=>new Set(h(e)||b(e)?e:[e]),m=/[^A-Za-z0-9]+/,S=/^( *)\/\*\* *(.*?) *\*\/$/gm,L=(e,t,l)=>e.substring(t,l),y=e=>e.toUpperCase(),k=e=>e.toLowerCase(),A=(e,t,l,a=1)=>{const o=`${t}${1==a?"":a}`;return w(e,o)?A(e,t,l,a+1):(T(e,o,l),o)},E=e=>e.length,j=(e,t="")=>e.join(t),x=(e,t=0)=>j(s(e.split(m),((e,l)=>(l>0||t?y:k)(L(e,0,1))+L(e,1)))),J=e=>y(j(e.split(m),"_")),O=e=>`/** ${e}. */`,N=()=>{const e=[g(),g()],t=g(),l=g(),a=g();return[(...e)=>{const t=[],l=e=>h(e)?r(e,l):i(t,e);return r(e,l),t.join("\n")},(t,l,...a)=>r(a,(a=>{return o=p(e[t],l,v),n=a,o?.add(n);var o,n})),(e,l="",a="")=>A(t,e,[l,a]),(e,l,a)=>T(t,e,[l,a]),(e,t,a,o,n,r="")=>A(l,e,[t,a,o,n,r]),(e,t,l)=>A(a,e,h(l)?[`(${t}) => {`,l,"}"]:[`(${t}) => ${l}`]),(e,t)=>f(a,e)===t?e:A(a,e,t),t=>[...n(R(e[t],((e,t)=>`import {${j(n(u(e)),", ")}} from '${t}';`))),""],()=>R(t,(([e,t],l)=>[O(t),`export type ${l} = ${e};`,""])),e=>R(l,(([t,l,a,o,n],r)=>{const s=e?[`${r}: ${n}(${t}): ${l} => ${a},`]:[`${r}${n}(${t}): ${l};`];return e||((e,...t)=>{e.unshift(...t)})(s,O(o)),i(s,""),s})),()=>R(a,((e,t)=>(e=h(e)?e:[e],i(e,e.pop()+";"),[`const ${t} = ${$(e)}`,e,""])))]},G=Object,z=G.keys,D=G.freeze,F=(e,t)=>{return a=e=>e[t],b(l=e)?o?.():a(l);var l,a,o},M=(e,t)=>r(G.entries(e),(([e,l])=>t(l,e))),W=e=>{return t=z(e),0==d(t);var t},P=o=>{const n=e(o);return(e=>e==t||e==l)(n)||n==a&&I(o)?n:void 0},_="the Store",Q="Registers a listener that will be called",U=(e,t="",l="")=>`store.${e}(${t})${l?" as "+l:""}`,Z=(e,t="")=>`fluent(() => ${U(e,t)})`,q=(e,t,l=0)=>`Gets ${l?"sorted, paginated":"the"} Ids of the ${e}s in ${t}`,B=(e,t)=>`Calls a function for each ${e} in ${t}`,H=(e,t=_)=>`Gets whether ${e} exists in ${t}`,K=e=>"A function that takes "+e,V=(e,t,l=0)=>`${Q} whenever ${e} in ${t} change`+(l?"":"s"),X=(e=0)=>1==e?"Sets":2==e?"Sets part of":3==e?"Deletes":"Gets",Y=(a,o)=>{if(W(a))return[n="// store has no inferable schema",n];var n;const r=x(o),s=x(o,1),d=x(s),$=`return ${d};`,c=[],I=[],h=[],w=[],f=[],R=[],p=[],v=(e,t="",l="")=>`store.${e}(${t?t+", ":""}proxy(listener)${l?", "+l:""})`,[m,S,L,y,k,A,E,G,z,D,P]=N();S(0,"tinybase","CellChange","ChangedCells","Id","IdOrNull","Ids","InvalidCells","Json","Store"),S(1,"tinybase","ChangedCells","Id","IdOrNull","Ids","InvalidCells","Json","Store","createStore"),A("fluent","actions: () => Store",["actions();",$]),A("proxy","listener: any",`(_: Store, ...args: any[]) => listener(${d}, ...args)`);const Y=E(J("type"),"'type'"),ee=E(J("default"),"'default'"),te=L("Tables"),le=L("TableId"),ae=L("TableCallback"),oe=L("GetCellChange"),ne=L("TablesListener",`(${d}: ${s}, getCellChange: ${oe} | undefined) => void`,"A function for listening to changes to the content of the Store"),re=L("TableIdsListener",`(${d}: ${s}) => void`,"A function for listening to changes to Table Ids in the Store"),se=L("TableListener",`(${d}: ${s}, tableId: ${le}, getCellChange: ${oe} | undefined) => void`,"A function for listening to changes to a Table in the Store"),de=L("RowIdsListener",`(${d}: ${s}, tableId: ${le}) => void`,"A function for listening to changes to Row Ids in the Store"),ie=L("RowListener",`(${d}: ${s}, tableId: ${le}, rowId: Id, getCellChange: ${oe} | undefined) => void`,"A function for listening to changes to a Row in the Store"),$e=L("CellIdsListener",`(${d}: ${s}, tableId: ${le}, rowId: Id) => void`,"A function for listening to changes to Cell Ids in the Store"),ce=L("CellListener"),Ie=L("InvalidCellListener",`(${d}: ${s}, tableId: Id, rowId: Id, cellId: Id, invalidCells: any[]) => void;`,"A function for listening to invalid Cell changes"),be=L("TransactionListener",`(${d}: ${s}, cellsTouched: boolean) => void;`,"A function for listening to the completion of a transaction");S(1,`./${r}.d`,s,`create${s} as create${s}Decl`,te,le,ae,ne,re,se,de,ie,$e,ce,Ie,be);const he=(e=0)=>X(e)+" the content of the Store";k("hasTables","",l,U("hasTables"),H("any Table")),k("getTables","",te,U("getTables"),he()),k("setTables","tables: "+te,s,Z("setTables","tables"),he(1)),k("delTables","",s,Z("delTables"),he(3)),k("getTableIds","",le+"[]",U("getTableIds","",le+"[]"),q("Table",_)),k("forEachTable","tableCallback: "+ae,"void",U("forEachTable","tableCallback as any"),B("Table",_));const we=g();var ue;return M(a,((a,o)=>{const n=x(o,1),$=E(J(o),`'${o}'`),u=[],C=[],g=[],v=[],m=`the '${o}' Table`,A="the specified Row in "+m,O="the content of "+m,N=(e=0)=>`${X(e)} the content of ${m}`,G=(e=0)=>`${X(e)} the content of ${A}`,z=(e=0)=>`Represents a Row when ${e?"s":"g"}etting ${O}`,D=L(n+"Table",`{[rowId: Id]: ${n}Row}`,"Represents "+m),W=L(n+"Row"),P=L(n+"RowWhenSet"),_=L(n+"CellId"),Q=L(n+"CellCallback"),V=L(n+"RowCallback");S(1,`./${r}.d`,D,W,P,_,Q,V),k(`has${n}Table`,"",l,U("hasTable",$),H(m)),k(`get${n}Table`,"",D,U("getTable",$,D),N()),k(`set${n}Table`,"table: "+D,s,Z("setTable",$+", table"),N(1)),k(`del${n}Table`,"",s,Z("delTable",$),N(3)),k(`get${n}RowIds`,"","Ids",U("getRowIds",$),q("Row",m)),k(`get${n}SortedRowIds`,`cellId?: ${_}, descending?: boolean, offset?: number, limit?: number`,"Ids",U("getSortedRowIds",$+", cellId, descending, offset, limit"),q("Row",m,1)),k(`forEach${n}Row`,"rowCallback: "+V,"void",U("forEachRow",$+", rowCallback as any"),B("Row",m)),k(`has${n}Row`,"rowId: Id",l,U("hasRow",$+", rowId"),H("the specified Row",m)),k(`get${n}Row`,"rowId: Id",W,U("getRow",$+", rowId",W),G()),k(`set${n}Row`,"rowId: Id, row: "+P,s,Z("setRow",$+", rowId, row"),G(1)),k(`add${n}Row`,"row: "+P,"Id | undefined",U("addRow",$+", row"),"Adds a new Row to "+m),k(`set${n}PartialRow`,"rowId: Id, partialRow: "+P,s,Z("setPartialRow",$+", rowId, partialRow"),G(2)),k(`del${n}Row`,"rowId: Id",s,Z("delRow",$+", rowId"),G(3)),k(`get${n}CellIds`,"rowId: Id",_+"[]",U("getCellIds",$+", rowId",_+"[]"),q("Cell",A)),k(`forEach${n}Cell`,"rowId: Id, cellCallback: "+Q,"void",U("forEachCell",$+", rowId, cellCallback as any"),B("Cell",A)),i(p,`[${$}]: {`),M(a,((a,r)=>{const c=x(r,1),I=E(J(r),`'${r}'`),h=a.type,w=!b(F(a,"default"));const R=a.default,m=`the '${r}' Cell`,S=(e=0)=>`${X(e)} ${m} for ${A}`;var L;i(p,`[${I}]: {[${Y}]: ${E(J(h),`'${h}'`)}${w?`, [${ee}]: ${L=R,e(L)==t?E(J(R),`'${R}'`):R}`:""}},`),i(u,`'${r}'${w?"":"?"}: ${h};`),i(C,`'${r}'?: ${h};`),i(g,`'${r}'`),i(v,`[cellId: '${r}', cell: ${h}]`),i(f,`[${d}: ${s}, tableId: '${o}', rowId: Id, cellId: '${r}', newCell: ${h} | undefined, oldCell: ${h} | undefined, getCellChange: ${oe} | undefined]`);const y="Map"+x(h,1);T(we,h,y),k(`has${n}${c}Cell`,"rowId: Id",l,U("hasCell",`${$}, rowId, ${I}`),H(m,A));const j=`${h}${w?"":" | undefined"}`;k(`get${n}${c}Cell`,"rowId: Id",j,U("getCell",`${$}, rowId, ${I}`,j),S()),k(`set${n}${c}Cell`,`rowId: Id, cell: ${h} | ${y}`,s,Z("setCell",`${$}, rowId, ${I}, cell as any`),S(1)),k(`del${n}${c}Cell`,"rowId: Id",s,Z("delCell",`${$}, rowId, ${I}`),S(3))})),i(p,"},"),i(c,`'${o}'?: ${D};`),i(I,`'${o}'`),i(h,`[tableId: '${o}', forEachRow: (rowCallback: ${V}) => void]`),i(w,`[tableId: '${o}', rowId: Id, cellId: ${_}]`),i(R,_),y(W,`{${j(u," ")}}`,z()),y(P,`{${j(C," ")}}`,z(1)),y(_,j(g," | "),"A Cell Id for "+m),y(Q,`(...[cellId, cell]: ${j(v," | ")}) => void`,K("a Cell Id and value from a Row in "+m)),y(V,`(rowId: Id, forEachCell: (cellCallback: ${Q}) => void) => void`,K(`a Row Id from ${m}, and a Cell iterator`))})),k("getJson","","Json",U("getJson"),"Gets a a string serialization the content of the Store"),k("setJson","json: Json",s,Z("setJson","json"),"Sets the content of the Store from a serialized string"),k("transaction","actions: () => Return, doRollback?: (changedCells: ChangedCells, invalidCells: InvalidCells) => boolean","Return",U("transaction","actions, doRollback"),"Execute a transaction to make multiple mutations","<Return>"),k("startTransaction","",s,Z("startTransaction"),"Explicitly starts a transaction"),k("finishTransaction","doRollback?: (changedCells: ChangedCells, invalidCells: InvalidCells) => boolean,",s,Z("finishTransaction","doRollback"),"Explicitly finishes a transaction"),k("addTablesListener",`listener: ${ne}, mutator?: boolean`,"Id",v("addTablesListener","","mutator"),Q+" whenever the content of the Store changes"),k("addTableIdsListener",`listener: ${re}, mutator?: boolean`,"Id",v("addTableIdsListener","","mutator"),V("the Table Ids",_,1)),k("addTableListener",`tableId: ${le} | null, listener: ${se}, mutator?: boolean`,"Id",v("addTableListener","tableId","mutator"),V("a Table",_)),k("addRowIdsListener",`tableId: ${le} | null, listener: ${de}, mutator?: boolean`,"Id",v("addRowIdsListener","tableId","mutator"),V("the Row Ids","a Table",1)),k("addRowListener",`tableId: ${le} | null, rowId: IdOrNull, listener: ${ie}, mutator?: boolean`,"Id",v("addRowListener","tableId, rowId","mutator"),V("a Row","a Table")),k("addCellIdsListener",`tableId: ${le} | null, rowId: IdOrNull, listener: ${$e}, mutator?: boolean`,"Id",v("addCellIdsListener","tableId, rowId","mutator"),V("the Cell Ids","a Row",1)),k("addCellListener",`tableId: ${le} | null, rowId: IdOrNull, cellId: ${j(R," | ")} | null, listener: ${ce}, mutator?: boolean`,"Id",v("addCellListener","tableId, rowId, cellId","mutator"),V("a Cell","a Row")),k("addInvalidCellListener",`tableId: IdOrNull, rowId: IdOrNull, cellId: IdOrNull, listener: ${Ie}, mutator?: boolean`,"Id",v("addCellListener","tableId, rowId, cellId","mutator"),Q+" whenever an invalid Cell change was attempted"),k("addWillFinishTransactionListener","listener: "+be,"Id",v("addWillFinishTransactionListener"),Q+" just before the end of the transaction"),k("addDidFinishTransactionListener","listener: "+be,"Id",v("addDidFinishTransactionListener"),Q+" just after the end of the transaction"),k("callListener","listenerId: Id",s,Z("callListener","listenerId"),"Manually provoke a listener to be called"),k("delListener","listenerId: Id",s,Z("delListener","listenerId"),"Remove a listener that was previously added to the Store"),k("getStore","","Store","store","Gets the underlying Store object"),y(te,`{${j(c," ")}}`,"Represents the content of the Store"),y(le,j(I," | "),"A Table Id in the Store"),y(ae,`(...[tableId, rowCallback]: ${j(h," | ")}) => void`,K("a Table Id, and a Row iterator")),y(oe,`(...[tableId, rowId, cellId]: ${j(w," | ")}) => CellChange`,"A function that returns information about any Cell's changes during a transaction"),y(ce,`(...[${d}, tableId, rowId, cellId, newCell, oldCell, getCellChange]: ${j(f," | ")}) => void`,"A function for listening to changes to a Cell in the Store"),ue=(e,t)=>L(t,`(cell: ${e} | undefined) => ${e}`,`Takes a ${e} Cell value and returns another`),C(we,((e,t)=>ue(t,e))),S(1,`./${r}.d`,...u(we)),E("store",["createStore().setSchema({",...p,"})"]),E(d,["{",...D(1),"}"]),[m(...G(0),...z(),`export interface ${s} {`,...D(0),"}","",O(`Creates a ${s} object`),`export function create${s}(): ${s};`),m(...G(1),`export const create${s}: typeof create${s}Decl = () => {`,...P(),`return Object.freeze(${d});`,"};")]},ee={parser:"typescript",singleQuote:!0,trailingComma:"all",bracketSpacing:!1,jsdocSingleLineComment:!1},te=(e=>{const t=new WeakMap;return l=>(t.has(l)||t.set(l,e(l)),t.get(l))})((e=>{const t=()=>{const t=c(e.getSchemaJson());return!W(t)||o(e.getTableIds(),(l=>{const a=e.getRowIds(l),n=g();if(o(a,(t=>o(e.getCellIds(l,t),(a=>{const o=e.getCell(l,t,a),r=p(n,a,(()=>[P(o),g(),[0],0])),[s,d,[i]]=r,$=p(d,o,(()=>0))+1;return $>i&&(r[2]=[$,o]),T(d,o,$),r[3]++,s==P(o)})))))return t[l]={},C(n,(([e,,[,o],n],r)=>{t[l][r]={type:e,...n==d(a)?{default:o}:{}}})),1}))?t:{}},l=e=>Y(t(),e);return D({getStoreStats:t=>{let l=0,a=0,o=0;const n={};return e.forEachTable(((e,r)=>{l++;let s=0,d=0;const i={};r(((e,l)=>{s++;let a=0;l((()=>a++)),d+=a,t&&(i[e]={rowCells:a})})),a+=s,o+=d,t&&(n[e]={tableRows:s,tableCells:d,rows:i})})),{totalTables:l,totalRows:a,totalCells:o,jsonLength:E(e.getJson()),...t?{detail:{tables:n}}:{}}},getStoreSchema:t,getStoreApi:l,getPrettyStoreApi:async e=>{const t=l(e);try{const{format:e}=await import("prettier");return s(t,(t=>(e=>e.replace(S,((e,t,l)=>{const a=77-E(t);return`${t}/**\n${l.replace(RegExp(`([^\\n]{1,${a}})(\\s|$)`,"g"),t+" * $1\n")}${t} */`})))(e(t,ee))))}catch{}return t}})}));export{te as createTools};
|
package/lib/tools.js.gz
ADDED
|
Binary file
|
package/lib/umd/checkpoints.d.ts
CHANGED
|
@@ -913,8 +913,6 @@ export interface Checkpoints {
|
|
|
913
913
|
* The createCheckpoints function creates a Checkpoints object, and is the main
|
|
914
914
|
* entry point into the checkpoints module.
|
|
915
915
|
*
|
|
916
|
-
* It is trivially simple.
|
|
917
|
-
*
|
|
918
916
|
* A given Store can only have one Checkpoints object associated with it. If you
|
|
919
917
|
* call this function twice on the same Store, your second call will return a
|
|
920
918
|
* reference to the Checkpoints object created by the first.
|
package/lib/umd/checkpoints.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e,t;e=this,t=function(e){"use strict";const t="",n=(e,t)=>e.includes(t),o=(e,t)=>e.forEach(t),r=e=>e.length,s=e=>0==r(e),i=(e,...t)=>e.push(...t),c=e=>e.pop(),l=e=>e.shift(),d=e=>null==e,a=(e,t,n)=>d(e)?n?.():t(e),u=(e,t)=>e?.has(t)??!1,h=e=>d(e)||0==(e=>e.size)(e),p=(e,t)=>e?.forEach(t),f=(e,t)=>e?.delete(t),C=e=>new Map(e),g=(e,t)=>e?.get(t),k=(e,t,n)=>d(n)?(f(e,t),e):e?.set(t,n),y=(e,t,n)=>(u(e,t)||k(e,t,n()),g(e,t)),v=(e,t,n,o,s=0)=>a((n?y:g)(e,t[s],s>r(t)-2?n:C),(i=>{if(s>r(t)-2)return o?.(i)&&k(e,t[s]),i;const c=v(i,t,n,o,s+1);return h(i)&&k(e,t[s]),c})),L=e=>new Set(Array.isArray(e)||d(e)?e:[e]),w=/^\d+$/,b=e=>{let n;const[s,c]=(()=>{const e=[];let n=0;return[()=>l(e)??t+n++,t=>{w.test(t)&&r(e)<1e3&&i(e,t)}]})(),u=C();return[(o,r,i)=>{n??=e();const c=s();var l,d;return k(u,c,[o,r,i]),l=v(r,i??[t],L),d=c,l?.add(d),c},(e,s,...c)=>o(((e,n=[t])=>{const s=[],c=(e,t)=>t==r(n)?i(s,e):null===n[t]?p(e,(e=>c(e,t+1))):o([n[t],null],(n=>c(g(e,n),t+1)));return c(e,0),s})(e,s),(e=>p(e,(e=>g(u,e)[0](n,...s??[],...c))))),e=>a(g(u,e),(([,n,o])=>(v(n,o??[t],void 0,(t=>(f(t,e),h(t)?1:0))),k(u,e),c(e),o))),(e,t,s)=>a(g(u,e),(([e,,i=[]])=>{const c=(...l)=>{const a=r(l);a==r(i)?e(n,...l,...s(l)):d(i[a])?o(t[a](...l),(e=>c(...l,e))):c(...l,i[a])};c()}))]},S=Object.freeze,T=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{let f,v,L,w=100,T=C(),x=1;const z=C(),E=C(),[j,m,A]=b((()=>R)),B=C(),I=C(),M=[],F=[],O=(t,n)=>{x=0,e.transaction((()=>p(g(B,n),((n,o)=>p(n,((n,r)=>p(n,((n,s)=>((e,t,n,o,r)=>d(r)?e.delCell(t,n,o,!0):e.setCell(t,n,o,r))(e,o,r,s,n[t]))))))))),x=1},W=e=>{k(B,e),k(I,e),m(E,[e])},$=(e,t)=>o(((e,t)=>e.splice(0,t))(e,t??r(e)),W),q=()=>$(M,r(M)-w),D=e.addCellListener(null,null,null,((e,t,n,o,r,s)=>{if(x){a(f,(()=>{i(M,f),q(),$(F),f=void 0,L=1}));const e=y(T,t,C),l=y(e,n,C),d=y(l,o,(()=>[s,void 0]));d[1]=r,d[0]===r&&h(k(l,o))&&h(k(e,n))&&h(k(T,t))&&(f=c(M),L=1),K()}})),G=(e="")=>(d(f)&&(f=t+v++,k(B,f,T),P(f,e),T=C(),L=1),f),H=()=>{s(M)||(
|
|
1
|
+
var e,t;e=this,t=function(e){"use strict";const t="",n=(e,t)=>e.includes(t),o=(e,t)=>e.forEach(t),r=e=>e.length,s=e=>0==r(e),i=(e,...t)=>e.push(...t),c=e=>e.pop(),l=e=>e.shift(),d=e=>null==e,a=(e,t,n)=>d(e)?n?.():t(e),u=(e,t)=>e?.has(t)??!1,h=e=>d(e)||0==(e=>e.size)(e),p=(e,t)=>e?.forEach(t),f=(e,t)=>e?.delete(t),C=e=>new Map(e),g=(e,t)=>e?.get(t),k=(e,t,n)=>d(n)?(f(e,t),e):e?.set(t,n),y=(e,t,n)=>(u(e,t)||k(e,t,n()),g(e,t)),v=(e,t,n,o,s=0)=>a((n?y:g)(e,t[s],s>r(t)-2?n:C),(i=>{if(s>r(t)-2)return o?.(i)&&k(e,t[s]),i;const c=v(i,t,n,o,s+1);return h(i)&&k(e,t[s]),c})),L=e=>new Set(Array.isArray(e)||d(e)?e:[e]),w=/^\d+$/,b=e=>{let n;const[s,c]=(()=>{const e=[];let n=0;return[()=>l(e)??t+n++,t=>{w.test(t)&&r(e)<1e3&&i(e,t)}]})(),u=C();return[(o,r,i)=>{n??=e();const c=s();var l,d;return k(u,c,[o,r,i]),l=v(r,i??[t],L),d=c,l?.add(d),c},(e,s,...c)=>o(((e,n=[t])=>{const s=[],c=(e,t)=>t==r(n)?i(s,e):null===n[t]?p(e,(e=>c(e,t+1))):o([n[t],null],(n=>c(g(e,n),t+1)));return c(e,0),s})(e,s),(e=>p(e,(e=>g(u,e)[0](n,...s??[],...c))))),e=>a(g(u,e),(([,n,o])=>(v(n,o??[t],void 0,(t=>(f(t,e),h(t)?1:0))),k(u,e),c(e),o))),(e,t,s)=>a(g(u,e),(([e,,i=[]])=>{const c=(...l)=>{const a=r(l);a==r(i)?e(n,...l,...s(l)):d(i[a])?o(t[a](...l),(e=>c(...l,e))):c(...l,i[a])};c()}))]},S=Object.freeze,T=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{let f,v,L,w=100,T=C(),x=1;const z=C(),E=C(),[j,m,A]=b((()=>R)),B=C(),I=C(),M=[],F=[],O=(t,n)=>{x=0,e.transaction((()=>p(g(B,n),((n,o)=>p(n,((n,r)=>p(n,((n,s)=>((e,t,n,o,r)=>d(r)?e.delCell(t,n,o,!0):e.setCell(t,n,o,r))(e,o,r,s,n[t]))))))))),x=1},W=e=>{k(B,e),k(I,e),m(E,[e])},$=(e,t)=>o(((e,t)=>e.splice(0,t))(e,t??r(e)),W),q=()=>$(M,r(M)-w),D=e.addCellListener(null,null,null,((e,t,n,o,r,s)=>{if(x){a(f,(()=>{i(M,f),q(),$(F),f=void 0,L=1}));const e=y(T,t,C),l=y(e,n,C),d=y(l,o,(()=>[s,void 0]));d[1]=r,d[0]===r&&h(k(l,o))&&h(k(e,n))&&h(k(T,t))&&(f=c(M),L=1),K()}})),G=(e="")=>(d(f)&&(f=t+v++,k(B,f,T),P(f,e),T=C(),L=1),f),H=()=>{s(M)||(((e,...t)=>{e.unshift(...t)})(F,G()),O(0,f),f=c(M),L=1)},J=()=>{s(F)||(i(M,f),f=l(F),O(1,f),L=1)},K=()=>{L&&(m(z),L=0)},N=e=>{const t=G(e);return K(),t},P=(e,t)=>(Q(e)&&g(I,e)!==t&&(k(I,e,t),m(E,[e])),R),Q=e=>u(B,e),R={setSize:e=>(w=e,q(),R),addCheckpoint:N,setCheckpoint:P,getStore:()=>e,getCheckpointIds:()=>[[...M],f,[...F]],forEachCheckpoint:e=>{return t=e,p(I,((e,n)=>t(n,e)));var t},hasCheckpoint:Q,getCheckpoint:e=>g(I,e),goBackward:()=>(H(),K(),R),goForward:()=>(J(),K(),R),goTo:e=>{const t=n(M,e)?H:n(F,e)?J:null;for(;!d(t)&&e!=f;)t();return K(),R},addCheckpointIdsListener:e=>j(e,z),addCheckpointListener:(e,t)=>j(t,E,[e]),delListener:e=>(A(e),R),clear:()=>($(M),$(F),d(f)||W(f),f=void 0,v=0,N(),R),destroy:()=>{e.delListener(D)},getListenerStats:()=>({})};return S(R.clear())}));e.createCheckpoints=T},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseCheckpoints={});
|
|
Binary file
|
package/lib/umd/indexes.d.ts
CHANGED
|
@@ -935,8 +935,6 @@ export interface Indexes {
|
|
|
935
935
|
* The createIndexes function creates an Indexes object, and is the main entry
|
|
936
936
|
* point into the indexes module.
|
|
937
937
|
*
|
|
938
|
-
* It is trivially simple.
|
|
939
|
-
*
|
|
940
938
|
* A given Store can only have one Indexes object associated with it. If you
|
|
941
939
|
* call this function twice on the same Store, your second call will return a
|
|
942
940
|
* reference to the Indexes object created by the first.
|
package/lib/umd/metrics.d.ts
CHANGED
|
@@ -796,8 +796,6 @@ export interface Metrics {
|
|
|
796
796
|
* The createMetrics function creates a Metrics object, and is the main entry
|
|
797
797
|
* point into the metrics module.
|
|
798
798
|
*
|
|
799
|
-
* It is trivially simple.
|
|
800
|
-
*
|
|
801
799
|
* A given Store can only have one Metrics object associated with it. If you
|
|
802
800
|
* call this function twice on the same Store, your second call will return a
|
|
803
801
|
* reference to the Metrics object created by the first.
|
package/lib/umd/queries.d.ts
CHANGED
|
@@ -2992,8 +2992,6 @@ export interface Queries {
|
|
|
2992
2992
|
* The createQueries function creates a Queries object, and is the main entry
|
|
2993
2993
|
* point into the queries module.
|
|
2994
2994
|
*
|
|
2995
|
-
* It is trivially simple.
|
|
2996
|
-
*
|
|
2997
2995
|
* A given Store can only have one Queries object associated with it. If you
|
|
2998
2996
|
* call this function twice on the same Store, your second call will return a
|
|
2999
2997
|
* reference to the Queries object created by the first.
|
|
@@ -1170,8 +1170,6 @@ export interface Relationships {
|
|
|
1170
1170
|
* The createRelationships function creates a Relationships object, and is the
|
|
1171
1171
|
* main entry point into the relationships module.
|
|
1172
1172
|
*
|
|
1173
|
-
* It is trivially simple.
|
|
1174
|
-
*
|
|
1175
1173
|
* A given Store can only have one Relationships object associated with it. If
|
|
1176
1174
|
* you call this function twice on the same Store, your second call will return
|
|
1177
1175
|
* a reference to the Relationships object created by the first.
|
package/lib/umd/store.d.ts
CHANGED
package/lib/umd/store.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,n="",s=t(n),r=t(!0),o=t(0),l=t(t),a="type",i="default",c=e=>n+e,d=(e,t)=>e.forEach(t),u=(e,t)=>e.map(t),f=e=>e.length,h=(e,t,n)=>e.slice(t,n),T=(e,...t)=>e.push(...t),b=e=>JSON.stringify(e,((e,t)=>{return y(t,Map)?(n=[...t],s=(e,[t,n])=>(e[t]=n,e),r={},n.reduce(s,r)):t;var n,s,r})),g=JSON.parse,p=isFinite,y=(e,t)=>e instanceof t,v=e=>null==e,w=(e,t,n)=>v(e)?n?.():t(e),R=e=>e==s||e==r,S=(e,t)=>e?.has(t)??!1,C=e=>v(e)||0==(e=>e.size)(e),I=e=>e.clear(),L=(e,t)=>e?.forEach(t),m=(e,t)=>e?.delete(t),E=e=>new Map(e),J=e=>[...e?.keys()??[]],F=(e,t)=>e?.get(t),x=(e,t)=>L(e,((e,n)=>t(n,e))),z=(e,t,n)=>v(n)?(m(e,t),e):e?.set(t,n),O=(e,t,n)=>(S(e,t)||z(e,t,n()),F(e,t)),j=(e,t,n)=>{const s={},r=t??(e=>e);return L(e,((e,t)=>w(r(e),(e=>n?.(e)?0:s[t]=e)))),s},k=(e,t)=>{const n=E(),s=t??(e=>e);return L(e,((e,t)=>n.set(t,s(e)))),n},A=e=>k(e,k),M=(e,t,n,s,r=0)=>w((n?O:F)(e,t[r],r>f(t)-2?n:E),(o=>{if(r>f(t)-2)return s?.(o)&&z(e,t[r]),o;const l=M(o,t,n,s,r+1);return C(o)&&z(e,t[r]),l})),N=Object,B=N.keys,D=N.isFrozen,P=N.freeze,W=(e,t)=>!v(((e,t)=>w(e,(e=>e[t])))(e,t)),$=(e,t)=>delete e[t],q=(e,t)=>d(N.entries(e),(([e,n])=>t(n,e))),G=e=>{return t=B(e),0==f(t);var t},H=e=>new Set(Array.isArray(e)||v(e)?e:[e]),K=(e,t)=>e?.add(t),Q=/^\d+$/,U=()=>{const e=[];let t=0;return[()=>e.shift()??n+t++,t=>{Q.test(t)&&f(e)<1e3&&T(e,t)}]},V=e=>{let t;const[s,r]=U(),o=E();return[(r,l,a)=>{t??=e();const i=s();return z(o,i,[r,l,a]),K(M(l,a??[n],H),i),i},(e,s,...r)=>d(((e,t=[n])=>{const s=[],r=(e,n)=>n==f(t)?T(s,e):null===t[n]?L(e,(e=>r(e,n+1))):d([t[n],null],(t=>r(F(e,t),n+1)));return r(e,0),s})(e,s),(e=>L(e,(e=>F(o,e)[0](t,...s??[],...r))))),e=>w(F(o,e),(([,t,s])=>(M(t,s??[n],void 0,(t=>(m(t,e),C(t)?1:0))),z(o,e),r(e),s))),(e,n,s)=>w(F(o,e),(([e,,r=[]])=>{const o=(...l)=>{const a=f(l);a==f(r)?e(t,...l,...s(l)):v(r[a])?d(n[a](...l),(e=>o(...l,e))):o(...l,r[a])};o()}))]},X=e=>[e,e],Y=()=>[E(),E()],Z=e=>{const n=t(e);return R(n)||n==o&&p(e)?n:void 0},_=(e,t,n,s=z)=>{const r=(o=J(e),l=e=>!W(t,e),o.filter(l));var o,l;return d(B(t),(s=>n(e,s,t[s]))),d(r,(t=>s(e,t))),e},ee=(e,t,n)=>v(e)||!(e=>y(e,N)&&e.constructor==N)(e)||G(e)||D(e)?(n?.(),!1):(q(e,((n,s)=>{t(n,s)||$(e,s)})),!G(e)),te=(e,t,n)=>z(e,t,F(e,t)==-n?void 0:n),ne=()=>{let e,n,s=0;const r=E(),p=E(),y=E(),M=E(),N=E(),B=E(),D=E(),Q=E(),se=E(),re=Y(),oe=Y(),le=Y(),ae=Y(),ie=Y(),ce=Y(),de=Y(),ue=Y(),fe=Y(),he=Y(),[Te,be,ge,pe]=V((()=>et)),ye=(t,n)=>(!e||S(B,n)||Ne(n))&&ee(t,((e,t)=>ve(n,t,e)),(()=>Ne(n))),ve=(e,t,n,s)=>ee(s?n:Re(n,e,t),((s,r)=>w(we(e,t,r,s),(e=>(n[r]=e,!0)),(()=>!1))),(()=>Ne(e,t))),we=(t,n,s,r)=>e?w(F(F(B,t),s),(e=>Z(r)!=e.type?Ne(t,n,s,r,e.default):r),(()=>Ne(t,n,s,r))):v(Z(r))?Ne(t,n,s,r):r,Re=(e,t,n)=>(w(F(D,t),(([s,r])=>{L(s,((t,n)=>{W(e,n)||(e[n]=t)})),L(r,(s=>{W(e,s)||Ne(t,n,s)}))})),e),Se=e=>_(B,e,((e,t,n)=>{const s=E(),r=H();_(O(B,t,E),n,((e,t,n)=>{z(e,t,n),w(n.default,(e=>z(s,t,e)),(()=>K(r,t)))})),z(D,t,[s,r])}),((e,t)=>{z(B,t),z(D,t)})),Ce=e=>_(se,e,((e,t,n)=>Ie(t,n)),((e,t)=>xe(t))),Ie=(e,t)=>_(O(se,e,(()=>(je(e,1),E()))),t,((t,n,s)=>Le(e,t,n,s)),((t,n)=>ze(e,t,n))),Le=(e,t,n,s,r)=>_(O(t,n,(()=>(ke(e,n,1),E()))),s,((t,s,r)=>me(e,n,t,s,r)),((s,o)=>Oe(e,t,n,s,o,r))),me=(e,t,n,s,r)=>{S(n,s)||Ae(e,t,s,1);const o=F(n,s);r!==o&&(Me(e,t,s,o,r),z(n,s,r))},Ee=(e,t,n,s,r)=>w(F(t,n),(t=>me(e,n,t,s,r)),(()=>Le(e,t,n,Re({[s]:r},e,n)))),Je=e=>{const[t]=O(Q,e,U),n=t();return S(F(se,e),n)?Je(e):n},Fe=e=>F(se,e)??Ie(e,{}),xe=e=>Ie(e,{}),ze=(e,t,n)=>{const[,s]=O(Q,e,U);s(n),Le(e,t,n,{},!0)},Oe=(e,t,n,s,r,o)=>{const l=F(F(D,e)?.[0],r);if(!v(l)&&!o)return me(e,n,s,r,l);const a=t=>{Me(e,n,t,F(s,t)),Ae(e,n,t,-1),z(s,t)};v(l)?a(r):x(s,a),C(s)&&(ke(e,n,-1),C(z(t,n))&&(je(e,-1),z(se,e),z(Q,e)))},je=(e,t)=>te(r,e,t),ke=(e,t,n)=>te(O(p,e,E),t,n),Ae=(e,t,n,s)=>te(O(O(y,e,E),t,E),n,s),Me=(e,t,n,s,r)=>O(O(O(M,e,E),t,E),n,(()=>[s,0]))[1]=r,Ne=(e,t,n,s,r)=>(T(O(O(O(N,e,E),t,E),n,(()=>[])),s),r),Be=(e,t,n)=>w(F(F(F(M,e),t),n),(([e,t])=>[!0,e,t]),(()=>[!1,...X(Ue(e,t,n))])),De=e=>C(N)||C(fe[e])?0:L(e?k(N,A):N,((t,n)=>L(t,((t,s)=>L(t,((t,r)=>be(fe[e],[n,s,r],t))))))),Pe=(e,t,n)=>{if(!C(t))return be(e,n),1},We=e=>{const t=C(ie[e]),n=C(de[e])&&C(ae[e])&&t&&C(oe[e]),s=C(ue[e])&&C(ce[e])&&C(le[e])&&C(re[e]);if(!n||!s){const o=e?[k(r),A(p),k(y,A),k(M,A)]:[r,p,y,M];if(!n){L(o[2],((t,n)=>L(t,((t,s)=>Pe(de[e],t,[n,s])))));const n=H();L(o[1],((s,r)=>{Pe(ae[e],s,[r])&&!t&&(be(ie[e],[r,null]),K(n,r))})),t||L(o[3],((t,s)=>{if(!S(n,s)){const n=H();L(t,(e=>L(e,(([t,s],r)=>s!==t?K(n,r):m(e,r))))),L(n,(t=>be(ie[e],[s,t])))}})),Pe(oe[e],o[0])}if(!s){let t;L(o[3],((n,s)=>{let r;L(n,((n,o)=>{let l;L(n,(([n,a],i)=>{a!==n&&(be(ue[e],[s,o,i],a,n,Be),t=r=l=1)})),l&&be(ce[e],[s,o],Be)})),r&&be(le[e],[s],Be)})),t&&be(re[e],void 0,Be)}}},$e=(e,...t)=>(Ye((()=>e(...u(t,c)))),et),qe=()=>j(se,(e=>j(e,j))),Ge=()=>J(se),He=e=>J(F(se,c(e))),Ke=(e,t,n,s=0,r)=>{
|
|
1
|
+
var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,n="",s=t(n),r=t(!0),o=t(0),l=t(t),a="type",i="default",c=e=>n+e,d=(e,t)=>e.forEach(t),u=(e,t)=>e.map(t),f=e=>e.length,h=(e,t,n)=>e.slice(t,n),T=(e,...t)=>e.push(...t),b=e=>JSON.stringify(e,((e,t)=>{return y(t,Map)?(n=[...t],s=(e,[t,n])=>(e[t]=n,e),r={},n.reduce(s,r)):t;var n,s,r})),g=JSON.parse,p=isFinite,y=(e,t)=>e instanceof t,v=e=>null==e,w=(e,t,n)=>v(e)?n?.():t(e),R=e=>e==s||e==r,S=(e,t)=>e?.has(t)??!1,C=e=>v(e)||0==(e=>e.size)(e),I=e=>e.clear(),L=(e,t)=>e?.forEach(t),m=(e,t)=>e?.delete(t),E=e=>new Map(e),J=e=>[...e?.keys()??[]],F=(e,t)=>e?.get(t),x=(e,t)=>L(e,((e,n)=>t(n,e))),z=(e,t,n)=>v(n)?(m(e,t),e):e?.set(t,n),O=(e,t,n)=>(S(e,t)||z(e,t,n()),F(e,t)),j=(e,t,n)=>{const s={},r=t??(e=>e);return L(e,((e,t)=>w(r(e),(e=>n?.(e)?0:s[t]=e)))),s},k=(e,t)=>{const n=E(),s=t??(e=>e);return L(e,((e,t)=>n.set(t,s(e)))),n},A=e=>k(e,k),M=(e,t,n,s,r=0)=>w((n?O:F)(e,t[r],r>f(t)-2?n:E),(o=>{if(r>f(t)-2)return s?.(o)&&z(e,t[r]),o;const l=M(o,t,n,s,r+1);return C(o)&&z(e,t[r]),l})),N=Object,B=N.keys,D=N.isFrozen,P=N.freeze,W=(e,t)=>!v(((e,t)=>w(e,(e=>e[t])))(e,t)),$=(e,t)=>delete e[t],q=(e,t)=>d(N.entries(e),(([e,n])=>t(n,e))),G=e=>{return t=B(e),0==f(t);var t},H=e=>new Set(Array.isArray(e)||v(e)?e:[e]),K=(e,t)=>e?.add(t),Q=/^\d+$/,U=()=>{const e=[];let t=0;return[()=>e.shift()??n+t++,t=>{Q.test(t)&&f(e)<1e3&&T(e,t)}]},V=e=>{let t;const[s,r]=U(),o=E();return[(r,l,a)=>{t??=e();const i=s();return z(o,i,[r,l,a]),K(M(l,a??[n],H),i),i},(e,s,...r)=>d(((e,t=[n])=>{const s=[],r=(e,n)=>n==f(t)?T(s,e):null===t[n]?L(e,(e=>r(e,n+1))):d([t[n],null],(t=>r(F(e,t),n+1)));return r(e,0),s})(e,s),(e=>L(e,(e=>F(o,e)[0](t,...s??[],...r))))),e=>w(F(o,e),(([,t,s])=>(M(t,s??[n],void 0,(t=>(m(t,e),C(t)?1:0))),z(o,e),r(e),s))),(e,n,s)=>w(F(o,e),(([e,,r=[]])=>{const o=(...l)=>{const a=f(l);a==f(r)?e(t,...l,...s(l)):v(r[a])?d(n[a](...l),(e=>o(...l,e))):o(...l,r[a])};o()}))]},X=e=>[e,e],Y=()=>[E(),E()],Z=e=>{const n=t(e);return R(n)||n==o&&p(e)?n:void 0},_=(e,t,n,s=z)=>{const r=(o=J(e),l=e=>!W(t,e),o.filter(l));var o,l;return d(B(t),(s=>n(e,s,t[s]))),d(r,(t=>s(e,t))),e},ee=(e,t,n)=>v(e)||!(e=>y(e,N)&&e.constructor==N)(e)||G(e)||D(e)?(n?.(),!1):(q(e,((n,s)=>{t(n,s)||$(e,s)})),!G(e)),te=(e,t,n)=>z(e,t,F(e,t)==-n?void 0:n),ne=()=>{let e,n,s=0;const r=E(),p=E(),y=E(),M=E(),N=E(),B=E(),D=E(),Q=E(),se=E(),re=Y(),oe=Y(),le=Y(),ae=Y(),ie=Y(),ce=Y(),de=Y(),ue=Y(),fe=Y(),he=Y(),[Te,be,ge,pe]=V((()=>et)),ye=(t,n)=>(!e||S(B,n)||Ne(n))&&ee(t,((e,t)=>ve(n,t,e)),(()=>Ne(n))),ve=(e,t,n,s)=>ee(s?n:Re(n,e,t),((s,r)=>w(we(e,t,r,s),(e=>(n[r]=e,!0)),(()=>!1))),(()=>Ne(e,t))),we=(t,n,s,r)=>e?w(F(F(B,t),s),(e=>Z(r)!=e.type?Ne(t,n,s,r,e.default):r),(()=>Ne(t,n,s,r))):v(Z(r))?Ne(t,n,s,r):r,Re=(e,t,n)=>(w(F(D,t),(([s,r])=>{L(s,((t,n)=>{W(e,n)||(e[n]=t)})),L(r,(s=>{W(e,s)||Ne(t,n,s)}))})),e),Se=e=>_(B,e,((e,t,n)=>{const s=E(),r=H();_(O(B,t,E),n,((e,t,n)=>{z(e,t,n),w(n.default,(e=>z(s,t,e)),(()=>K(r,t)))})),z(D,t,[s,r])}),((e,t)=>{z(B,t),z(D,t)})),Ce=e=>_(se,e,((e,t,n)=>Ie(t,n)),((e,t)=>xe(t))),Ie=(e,t)=>_(O(se,e,(()=>(je(e,1),E()))),t,((t,n,s)=>Le(e,t,n,s)),((t,n)=>ze(e,t,n))),Le=(e,t,n,s,r)=>_(O(t,n,(()=>(ke(e,n,1),E()))),s,((t,s,r)=>me(e,n,t,s,r)),((s,o)=>Oe(e,t,n,s,o,r))),me=(e,t,n,s,r)=>{S(n,s)||Ae(e,t,s,1);const o=F(n,s);r!==o&&(Me(e,t,s,o,r),z(n,s,r))},Ee=(e,t,n,s,r)=>w(F(t,n),(t=>me(e,n,t,s,r)),(()=>Le(e,t,n,Re({[s]:r},e,n)))),Je=e=>{const[t]=O(Q,e,U),n=t();return S(F(se,e),n)?Je(e):n},Fe=e=>F(se,e)??Ie(e,{}),xe=e=>Ie(e,{}),ze=(e,t,n)=>{const[,s]=O(Q,e,U);s(n),Le(e,t,n,{},!0)},Oe=(e,t,n,s,r,o)=>{const l=F(F(D,e)?.[0],r);if(!v(l)&&!o)return me(e,n,s,r,l);const a=t=>{Me(e,n,t,F(s,t)),Ae(e,n,t,-1),z(s,t)};v(l)?a(r):x(s,a),C(s)&&(ke(e,n,-1),C(z(t,n))&&(je(e,-1),z(se,e),z(Q,e)))},je=(e,t)=>te(r,e,t),ke=(e,t,n)=>te(O(p,e,E),t,n),Ae=(e,t,n,s)=>te(O(O(y,e,E),t,E),n,s),Me=(e,t,n,s,r)=>O(O(O(M,e,E),t,E),n,(()=>[s,0]))[1]=r,Ne=(e,t,n,s,r)=>(T(O(O(O(N,e,E),t,E),n,(()=>[])),s),r),Be=(e,t,n)=>w(F(F(F(M,e),t),n),(([e,t])=>[!0,e,t]),(()=>[!1,...X(Ue(e,t,n))])),De=e=>C(N)||C(fe[e])?0:L(e?k(N,A):N,((t,n)=>L(t,((t,s)=>L(t,((t,r)=>be(fe[e],[n,s,r],t))))))),Pe=(e,t,n)=>{if(!C(t))return be(e,n),1},We=e=>{const t=C(ie[e]),n=C(de[e])&&C(ae[e])&&t&&C(oe[e]),s=C(ue[e])&&C(ce[e])&&C(le[e])&&C(re[e]);if(!n||!s){const o=e?[k(r),A(p),k(y,A),k(M,A)]:[r,p,y,M];if(!n){L(o[2],((t,n)=>L(t,((t,s)=>Pe(de[e],t,[n,s])))));const n=H();L(o[1],((s,r)=>{Pe(ae[e],s,[r])&&!t&&(be(ie[e],[r,null]),K(n,r))})),t||L(o[3],((t,s)=>{if(!S(n,s)){const n=H();L(t,(e=>L(e,(([t,s],r)=>s!==t?K(n,r):m(e,r))))),L(n,(t=>be(ie[e],[s,t])))}})),Pe(oe[e],o[0])}if(!s){let t;L(o[3],((n,s)=>{let r;L(n,((n,o)=>{let l;L(n,(([n,a],i)=>{a!==n&&(be(ue[e],[s,o,i],a,n,Be),t=r=l=1)})),l&&be(ce[e],[s,o],Be)})),r&&be(le[e],[s],Be)})),t&&be(re[e],void 0,Be)}}},$e=(e,...t)=>(Ye((()=>e(...u(t,c)))),et),qe=()=>j(se,(e=>j(e,j))),Ge=()=>J(se),He=e=>J(F(se,c(e))),Ke=(e,t,n,s=0,r)=>{return u(h((a=F(se,c(e)),i=(e,n)=>[v(t)?n:F(e,c(t)),n],o=u([...a?.entries()??[]],(([e,t])=>i(t,e))),l=([e],[t])=>(e<t?-1:1)*(n?-1:1),o.sort(l)),s,v(r)?r:s+r),(([,e])=>e));var o,l,a,i},Qe=(e,t)=>J(F(F(se,c(e)),c(t))),Ue=(e,t,n)=>F(F(F(se,c(e)),c(t)),c(n)),Ve=e=>$e((()=>(e=>ee(e,ye,Ne))(e)?Ce(e):0)),Xe=()=>$e((()=>Ce({}))),Ye=(e,t)=>{if(-1==s)return;Ze();const n=e();return _e(t),n},Ze=()=>(s++,et),_e=e=>(s>0&&(s--,0==s&&(n=!C(M),s=1,De(1),n&&We(1),s=-1,e?.(j(M,(e=>j(e,(e=>j(e,(e=>[...e]),(([e,t])=>e===t))),G)),G),j(N,(e=>j(e,j))))&&(s=1,L(M,((e,t)=>L(e,((e,n)=>L(e,(([e],s)=>((e,t,n,s,r)=>v(r)?e.delCell(t,n,s,!0):e.setCell(t,n,s,r))(et,t,n,s,e))))))),s=-1,n=!1),be(he[0],void 0,n),De(0),n&&We(0),be(he[1],void 0,n),s=0,d([M,N,r,p,y],I))),et),et={getTables:qe,getTableIds:Ge,getTable:e=>j(F(se,c(e)),j),getRowIds:He,getSortedRowIds:Ke,getRow:(e,t)=>j(F(F(se,c(e)),c(t))),getCellIds:Qe,getCell:Ue,hasTables:()=>!C(se),hasTable:e=>S(se,c(e)),hasRow:(e,t)=>S(F(se,c(e)),c(t)),hasCell:(e,t,n)=>S(F(F(se,c(e)),c(t)),c(n)),getJson:()=>b(se),getSchemaJson:()=>b(B),setTables:Ve,setTable:(e,t)=>$e((e=>ye(t,e)?Ie(e,t):0),e),setRow:(e,t,n)=>$e(((e,t)=>ve(c(e),c(t),n)?Le(c(e),Fe(c(e)),c(t),n):0),e,t),addRow:(e,t)=>Ye((()=>{let n;return ve(e,n,t)&&(e=c(e),Le(e,Fe(e),n=Je(e),t)),n})),setPartialRow:(e,t,n)=>$e(((e,t)=>{if(ve(e,t,n,1)){const s=Fe(e);q(n,((n,r)=>Ee(e,s,t,r,n)))}}),e,t),setCell:(e,n,s,r)=>$e(((e,n,s)=>w(we(e,n,s,t(r)==l?r(Ue(e,n,s)):r),(t=>Ee(e,Fe(e),n,s,t)))),e,n,s),setJson:e=>{try{"{}"===e?Xe():Ve(g(e))}catch{}return et},setSchema:t=>$e((()=>{if((e=(e=>ee(e,(e=>ee(e,(e=>{if(!ee(e,((e,t)=>[a,i].includes(t))))return!1;const t=e.type;return!(!R(t)&&t!=o||(Z(e.default)!=t&&$(e,i),0))})))))(t))&&(Se(t),!C(se))){const e=qe();Xe(),Ve(e)}})),delTables:Xe,delTable:e=>$e((e=>S(se,e)?xe(e):0),e),delRow:(e,t)=>$e(((e,t)=>w(F(se,e),(n=>S(n,t)?ze(e,n,t):0))),e,t),delCell:(e,t,n,s)=>$e(((e,t,n)=>w(F(se,e),(r=>w(F(r,t),(o=>S(o,n)?Oe(e,r,t,o,n,s):0))))),e,t,n),delSchema:()=>$e((()=>{Se({}),e=!1})),transaction:Ye,startTransaction:Ze,finishTransaction:_e,forEachTable:e=>L(se,((t,n)=>e(n,(e=>L(t,((t,n)=>e(n,(e=>x(t,e))))))))),forEachRow:(e,t)=>L(F(se,c(e)),((e,n)=>t(n,(t=>x(e,t))))),forEachCell:(e,t,n)=>x(F(F(se,c(e)),c(t)),n),addSortedRowIdsListener:(e,t,n,s,r,o,l)=>{let a=Ke(e,t,n,s,r);return Te((()=>{const l=Ke(e,t,n,s,r);var i,c,d;c=a,f(i=l)===f(c)&&(d=(e,t)=>c[t]===e,i.every(d))||(a=l,o(et,e,t,n,s,r,a))}),ie[l?1:0],[e,t])},addWillFinishTransactionListener:e=>Te(e,he[0]),addDidFinishTransactionListener:e=>Te(e,he[1]),callListener:e=>(pe(e,[Ge,He,Qe],(e=>v(e[2])?[]:X(Ue(...e)))),et),delListener:e=>(ge(e),et),getListenerStats:()=>({}),createStore:ne};return q({Tables:[0,re],TableIds:[0,oe],Table:[1,le],RowIds:[1,ae],Row:[2,ce],CellIds:[2,de],Cell:[3,ue],InvalidCell:[3,fe]},(([e,t],n)=>{et["add"+n+"Listener"]=(...n)=>Te(n[e],t[n[e+1]?1:0],e>0?h(n,0,e):void 0)})),P(et)};e.createStore=ne},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseStore={});
|
package/lib/umd/store.js.gz
CHANGED
|
Binary file
|