tinybase 1.0.2 → 1.1.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/lib/checkpoints.d.ts +945 -0
- package/lib/checkpoints.js +1 -0
- package/lib/checkpoints.js.gz +0 -0
- package/lib/common.d.ts +115 -0
- package/lib/common.js +1 -0
- package/lib/common.js.gz +0 -0
- package/lib/debug/checkpoints.d.ts +66 -0
- package/lib/debug/checkpoints.js +332 -0
- package/lib/debug/common.js +3 -0
- package/lib/debug/indexes.d.ts +167 -6
- package/lib/debug/indexes.js +431 -0
- package/lib/debug/metrics.d.ts +72 -0
- package/lib/debug/metrics.js +401 -0
- package/lib/debug/persisters.js +191 -0
- package/lib/debug/relationships.d.ts +86 -1
- package/lib/debug/relationships.js +434 -0
- package/lib/debug/store.d.ts +187 -5
- package/lib/debug/store.js +783 -0
- package/lib/debug/tinybase.js +144 -39
- package/lib/indexes.d.ts +939 -0
- package/lib/indexes.js +1 -0
- package/lib/indexes.js.gz +0 -0
- package/lib/metrics.d.ts +829 -0
- package/lib/metrics.js +1 -0
- package/lib/metrics.js.gz +0 -0
- package/lib/persisters.d.ts +711 -0
- package/lib/persisters.js +1 -0
- package/lib/persisters.js.gz +0 -0
- package/lib/relationships.d.ts +1201 -0
- package/lib/relationships.js +1 -0
- package/lib/relationships.js.gz +0 -0
- package/lib/store.d.ts +2688 -0
- package/lib/store.js +1 -0
- package/lib/store.js.gz +0 -0
- package/lib/tinybase.d.ts +13 -0
- package/lib/tinybase.js +1 -0
- package/lib/tinybase.js.gz +0 -0
- package/lib/ui-react.d.ts +7185 -0
- package/lib/ui-react.js +1 -0
- package/lib/ui-react.js.gz +0 -0
- package/lib/umd/checkpoints.js +1 -0
- package/lib/umd/checkpoints.js.gz +0 -0
- package/lib/umd/common.js +1 -0
- package/lib/umd/common.js.gz +0 -0
- package/lib/umd/indexes.js +1 -0
- package/lib/umd/indexes.js.gz +0 -0
- package/lib/umd/metrics.js +1 -0
- package/lib/umd/metrics.js.gz +0 -0
- package/lib/umd/persisters.js +1 -0
- package/lib/umd/persisters.js.gz +0 -0
- package/lib/umd/relationships.js +1 -0
- package/lib/umd/relationships.js.gz +0 -0
- package/lib/umd/store.js +1 -0
- package/lib/umd/store.js.gz +0 -0
- package/lib/umd/tinybase.js +1 -0
- package/lib/umd/tinybase.js.gz +0 -0
- package/lib/umd/ui-react.js +1 -0
- package/lib/umd/ui-react.js.gz +0 -0
- package/package.json +14 -14
- package/readme.md +2 -2
package/lib/store.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=e=>typeof e,t=e(""),s=e(!0),n=e(0),r=e(e),l=(e,t)=>e.forEach(t),a=e=>e.length,o=e=>0==a(e),c=e=>e.slice(1),d=(e,t)=>e.push(t),i=e=>JSON.stringify(e,((e,t)=>{return h(t,Map)?(s=[...t],n=(e,[t,s])=>(e[t]=s,e),r={},s.reduce(n,r)):t;var s,n,r})),u=JSON.parse,f=isFinite,h=(e,t)=>e instanceof t,b=e=>null==e,g=(e,t,s)=>b(e)?s?.():t(e),T=e=>e==t||e==s,w=(e,t)=>e?.has(t)??!1,p=e=>b(e)||0==(e=>e.size)(e),L=e=>e.clear(),R=(e,t)=>e?.forEach(t),C=(e,t)=>e?.delete(t),y=e=>new Map(e),I=(e=y)=>[e(),e()],S=e=>[...e?.keys()??[]],v=(e,t)=>e?.get(t),E=(e,t)=>R(e,((e,s)=>t(s,e))),J=(e,t,s)=>b(s)?(C(e,t),e):e?.set(t,s),m=(e,t,s,n)=>(w(e,t)||(n?.(s),e.set(t,s)),v(e,t)),z=(e,t)=>{const s={},n=t??(e=>e);return R(e,((e,t)=>s[t]=n(e))),s},O=(e,t)=>{const s=y(),n=t??(e=>e);return R(e,((e,t)=>s.set(t,n(e)))),s},k=Object,F=k.keys,M=k.isFrozen,N=k.freeze,j=(e,t)=>!b(((e,t)=>g(e,(e=>e[t])))(e,t)),x=(e,t)=>delete e[t],P=(e,t)=>l(k.entries(e),(([e,s])=>t(s,e))),q=e=>new Set(e),A=(e,t,s)=>a(s)<2?((e,t)=>e?.add(t))(o(s)?e:m(e,s[0],q()),t):A(m(e,s[0],y()),t,c(s)),B=e=>{const t=(s,n,...r)=>g(s,(s=>o(r)?e(s,n):l([r[0],null],(e=>t(v(s,e),n,...c(r))))));return t},D=(e,t,s,n=J)=>{const r=(a=S(e),o=e=>!j(t,e),a.filter(o));var a,o;return l(F(t),(n=>s(e,n,t[n]))),l(r,(t=>n(e,t))),e},G=t=>{const s=e(t);return T(s)||s==n&&f(t)?s:void 0},H=(e,t)=>!(b(e)||!(e=>h(e,k)&&e.constructor==k)(e)||M(e))&&(P(e,((s,n)=>{t(s,n)||x(e,n)})),!(e=>o(F(e)))(e)),K=(e,t,s)=>J(e,t,v(e,t)==-s?void 0:s),Q=()=>{let t,s=0,o=0;const c=y(),f=y(),h=y(),k=y(),F=y(),M=y(),Q=y(),U=y(),V=I(q),W=I(q),X=I(),Y=I(),Z=I(),$=I(),_=I(),ee=I(),[te,se,ne,re]=(e=>{let t,s=0;const n=[],r=y();return[(l,a,o=[])=>{t??=e();const c=n.pop()??""+s++;return J(r,c,[l,a,o]),A(a,c,o),c},(e,s=[],...n)=>B(R)(e,(e=>g(v(r,e),(([e])=>e(t,...s,...n)))),...s),e=>g(v(r,e),(([,t,s])=>(B(C)(t,e,...s),J(r,e),a(n)<1e3&&d(n,e),s)),(()=>[])),(e,s,n)=>g(v(r,e),(([e,,r])=>{const o=(...c)=>{const d=a(c);d==a(r)?e(t,...c,...n(c)):b(r[d])?l(s[d](...c),(e=>o(...c,e))):o(...c,r[d])};o()}))]})((()=>Pe)),le=(e,s)=>(!t||w(M,s))&&H(e,((e,t)=>ae(s,t,e))),ae=(e,t,s,n)=>H(n?s:ce(s,e),((n,r)=>g(oe(e,t,r,n),(e=>(s[r]=e,!0)),(()=>!1)))),oe=(e,s,n,r)=>t?g(v(v(M,e),n),(t=>G(r)!=t.type?ve(e,s,n,r,t.default):r)):b(G(r))?ve(e,s,n,r):r,ce=(e,t)=>(g(v(Q,t),(t=>P(t,((t,s)=>{j(e,s)||(e[s]=t)})))),e),de=e=>D(M,e,((e,t,s)=>{const n={};D(m(M,t,y()),s,((e,t,s)=>{J(e,t,s),g(s.default,(e=>n[t]=e))})),J(Q,t,n)}),((e,t)=>{J(M,t),J(Q,t)})),ie=e=>D(U,e,((e,t,s)=>ue(t,s)),((e,t)=>pe(t))),ue=(e,t)=>D(m(U,e,y(),(()=>Ce(e,1))),t,((t,s,n)=>fe(e,t,s,n)),((t,s)=>Le(e,t,s))),fe=(e,t,s,n,r)=>D(m(t,s,y(),(()=>ye(e,s,1))),n,((t,n,r)=>he(e,s,t,n,r)),((n,l)=>Re(e,t,s,n,l,r))),he=(e,t,s,n,r)=>{w(s,n)||Ie(e,t,n,1);const l=v(s,n);r!==l&&(Se(e,t,n,l),J(s,n,r))},be=(e,t,s)=>xe((()=>fe(e,we(e),t,s))),ge=(e,t,s,n,r)=>g(v(t,s),(t=>he(e,s,t,n,r)),(()=>fe(e,t,s,ce({[n]:r},e)))),Te=e=>{const t=""+s++;return w(e,t)?Te(e):t},we=e=>v(U,e)??ue(e,{}),pe=e=>ue(e,{}),Le=(e,t,s)=>fe(e,t,s,{},!0),Re=(e,t,s,n,r,l)=>{const a=v(Q,e)?.[r];if(!b(a)&&!l)return he(e,s,n,r,a);const o=t=>{Se(e,s,t,v(n,t)),Ie(e,s,t,-1),J(n,t)};b(a)?o(r):E(n,o),p(n)&&(ye(e,s,-1),p(J(t,s))&&(Ce(e,-1),J(U,e)))},Ce=(e,t)=>K(c,e,t),ye=(e,t,s)=>K(m(f,e,y()),t,s),Ie=(e,t,s,n)=>K(m(m(h,e,y()),t,y()),s,n),Se=(e,t,s,n)=>m(m(m(k,e,y()),t,y()),s,n),ve=(e,t,s,n,r)=>(d(m(m(m(F,e,y()),t,y()),s,[]),n),r),Ee=(e,t,s)=>{const n=v(v(k,e),t),r=Me(e,t,s);return w(n,s)?[!0,v(n,s),r]:[!1,r,r]},Je=e=>{p(ee[e])||R(e?O(F,(e=>O(e,O))):F,((t,s)=>R(t,((t,n)=>R(t,((t,r)=>se(ee[e],[s,n,r],t)))))))},me=e=>{const t=p($[e])&&p(Y[e])&&p(W[e]),s=p(_[e])&&p(Z[e])&&p(X[e])&&p(V[e]);if(t&&s)return;const n=e?[O(c),O(f,O),O(h,(e=>O(e,O))),O(k,(e=>O(e,O)))]:[c,f,h,k];if(t||(R(n[2],((t,s)=>R(t,((t,n)=>{p(t)||se($[e],[s,n])})))),R(n[1],((t,s)=>{p(t)||se(Y[e],[s])})),p(n[0])||se(W[e])),!s){let t;R(n[3],((s,n)=>{let r;R(s,((s,l)=>{let a;R(s,((s,o)=>{const c=Me(n,l,o);c!==s&&(se(_[e],[n,l,o],c,s,Ee),t=r=a=1)})),a&&se(Z[e],[n,l],Ee)})),r&&se(X[e],[n],Ee)})),t&&se(V[e],[],Ee)}},ze=()=>z(U,(e=>z(e,z))),Oe=()=>S(U),ke=e=>S(v(U,e)),Fe=(e,t)=>S(v(v(U,e),t)),Me=(e,t,s)=>v(v(v(U,e),t),s),Ne=e=>((e=>H(e,le))(e)?xe((()=>ie(e))):xe(),Pe),je=()=>(xe((()=>ie({}))),Pe),xe=e=>{if(-1==o)return;o++;const t=e?.();return o--,0==o&&(o=1,Je(1),me(1),o=-1,Je(0),me(0),o=0,l([k,F,c,f,h],L)),t},Pe={getTables:ze,getTableIds:Oe,getTable:e=>z(v(U,e),z),getRowIds:ke,getRow:(e,t)=>z(v(v(U,e),t)),getCellIds:Fe,getCell:Me,hasTables:()=>!p(U),hasTable:e=>w(U,e),hasRow:(e,t)=>w(v(U,e),t),hasCell:(e,t,s)=>w(v(v(U,e),t),s),getJson:()=>i(U),getSchemaJson:()=>i(M),setTables:Ne,setTable:(e,t)=>(le(t,e)?xe((()=>ue(e,t))):xe(),Pe),setRow:(e,t,s)=>(ae(e,t,s)?be(e,t,s):xe(),Pe),addRow:(e,t)=>{let s;return ae(e,s,t)?be(e,s=Te(v(U,e)),t):xe(),s},setPartialRow:(e,t,s)=>(ae(e,t,s,1)?xe((()=>{const n=we(e);P(s,((s,r)=>ge(e,n,t,r,s)))})):xe(),Pe),setCell:(t,s,n,l)=>(g(oe(t,s,n,e(l)==r?l(Me(t,s,n)):l),(e=>xe((()=>ge(t,we(t),s,n,e)))),xe),Pe),setJson:e=>{try{"{}"===e?je():Ne(u(e))}catch{}return Pe},setSchema:e=>{if((t=(e=>H(e,(e=>H(e,(e=>{if(!H(e,((e,t)=>["type","default"].includes(t))))return!1;const t=e.type;return!(!T(t)&&t!=n||(G(e.default)!=t&&x(e,"default"),0))})))))(e))&&(de(e),!p(U))){const e=ze();je(),Ne(e)}return Pe},delTables:je,delTable:e=>(w(U,e)&&xe((()=>pe(e))),Pe),delRow:(e,t)=>(g(v(U,e),(s=>{w(s,t)&&xe((()=>Le(e,s,t)))})),Pe),delCell:(e,t,s,n)=>(g(v(U,e),(r=>g(v(r,t),(l=>{w(l,s)&&xe((()=>Re(e,r,t,l,s,n)))})))),Pe),delSchema:()=>(de({}),t=!1,Pe),transaction:xe,forEachTable:e=>R(U,((t,s)=>e(s,(e=>R(t,((t,s)=>e(s,(e=>E(t,e))))))))),forEachRow:(e,t)=>R(v(U,e),((e,s)=>t(s,(t=>E(e,t))))),forEachCell:(e,t,s)=>E(v(v(U,e),t),s),addTablesListener:(e,t)=>te(e,V[t?1:0]),addTableIdsListener:(e,t)=>te(e,W[t?1:0]),addTableListener:(e,t,s)=>te(t,X[s?1:0],[e]),addRowIdsListener:(e,t,s)=>te(t,Y[s?1:0],[e]),addRowListener:(e,t,s,n)=>te(s,Z[n?1:0],[e,t]),addCellIdsListener:(e,t,s,n)=>te(s,$[n?1:0],[e,t]),addCellListener:(e,t,s,n,r)=>te(n,_[r?1:0],[e,t,s]),addInvalidCellListener:(e,t,s,n,r)=>te(n,ee[r?1:0],[e,t,s]),callListener:e=>(re(e,[Oe,ke,Fe],(e=>b(e[2])?[]:[,,].fill(Me(...e)))),Pe),delListener:e=>(ne(e),Pe),getListenerStats:()=>({})};return N(Pe)};export{Q as createStore};
|
package/lib/store.js.gz
ADDED
|
Binary file
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This is everything.
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export * from './checkpoints';
|
|
8
|
+
export * from './common';
|
|
9
|
+
export * from './indexes';
|
|
10
|
+
export * from './metrics';
|
|
11
|
+
export * from './persisters';
|
|
12
|
+
export * from './relationships';
|
|
13
|
+
export * from './store';
|
package/lib/tinybase.js
ADDED
|
@@ -0,0 +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,t)=>e.includes(t),d=(e,t)=>e.every(((s,n)=>0==n||t(e[n-1],s)<=0)),l=(e,t)=>e.sort(t),c=(e,t)=>e.forEach(t),u=e=>f(e,((e,t)=>e+t),0),h=e=>e.length,g=e=>0==h(e),f=(e,t,s)=>e.reduce(t,s),L=e=>e.slice(1),w=(e,t)=>e.push(t),v=e=>e.pop(),p=e=>JSON.stringify(e,((e,t)=>T(t,Map)?f([...t],((e,[t,s])=>(e[t]=s,e)),{}):t)),I=JSON.parse,S=Math.max,y=Math.min,R=isFinite,T=(e,t)=>e instanceof t,b=e=>null==e,C=(e,t,s)=>b(e)?s?.():t(e),m=e=>e==n||e==o,E=e=>s(e)==a,k=()=>{},M=e=>e.size,A=(e,t)=>e?.has(t)??!1,x=e=>b(e)||0==M(e),D=e=>[...e?.values()??[]],J=e=>e.clear(),F=(e,t)=>e?.forEach(t),z=(e,t)=>e?.delete(t),N=e=>new Map(e),O=(e=N)=>[e(),e()],j=e=>[...e?.keys()??[]],P=(e,t)=>e?.get(t),B=(e,t)=>F(e,((e,s)=>t(s,e))),H=(e,t,s)=>b(s)?(z(e,t),e):e?.set(t,s),W=(e,t,s,n)=>(A(e,t)||(n?.(s),e.set(t,s)),P(e,t)),q=(e,t)=>{const s={},n=t??(e=>e);return F(e,((e,t)=>s[t]=n(e))),s},G=(e,t)=>{const s=N(),n=t??(e=>e);return F(e,((e,t)=>s.set(t,n(e)))),s},K=e=>new Set(e),Q=(e,t)=>e?.add(t),U=(e,t,s)=>{const n=e.hasRow,o=N(),r=N(),a=N(),i=N(),d=N(),l=t=>C(P(d,t),(s=>{F(s,e.delListener),H(d,t)})),u=e=>{H(o,e),H(r,e),H(a,e),H(i,e),l(e)};return[()=>e,()=>j(o),e=>B(r,e),e=>A(r,e),e=>P(o,e),e=>P(r,e),(e,t)=>H(r,e,t),(u,h,g,f,L)=>{const w=N(),v=N();H(o,u,h),A(r,u)||(H(r,u,t()),H(a,u,N()),H(i,u,N()));const p=P(a,u),I=P(i,u),S=t=>{const o=s=>e.getCell(h,t,s),r=P(p,t),a=n(h,t)?s(f(o,t)):void 0;if(r!=a&&H(w,t,[r,a]),!b(L)){const e=P(I,t),s=n(h,t)?L(o,t):void 0;e!=s&&H(v,t,s)}},y=e=>{g((()=>{F(w,(([,e],t)=>H(p,t,e))),F(v,((e,t)=>H(I,t,e)))}),w,v,p,I,e),J(w),J(v)};B(p,S),e.hasTable(h)&&c(e.getRowIds(h),(e=>{A(p,e)||S(e)})),y(!0),l(u),H(d,u,K([e.addRowListener(h,null,((e,t,s)=>S(s))),e.addTableListener(h,(()=>y()))]))},u,()=>B(d,u)]},V=(e,t)=>s(e)==n?t=>t(e):e??(()=>t??""),X=e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))},Y=(e,t,s)=>h(s)<2?Q(g(s)?e:W(e,s[0],K()),t):Y(W(e,s[0],N()),t,L(s)),Z=e=>{const t=(s,n,...o)=>C(s,(s=>g(o)?e(s,n):c([o[0],null],(e=>t(P(s,e),n,...L(o))))));return t},$=e=>{let t,s=0;const n=[],o=N();return[(r,a,i=[])=>{t??=e();const d=v(n)??""+s++;return H(o,d,[r,a,i]),Y(a,d,i),d},(e,s=[],...n)=>Z(F)(e,(e=>C(P(o,e),(([e])=>e(t,...s,...n)))),...s),e=>C(P(o,e),(([,t,s])=>(Z(z)(t,e,...s),H(o,e),h(n)<1e3&&w(n,e),s)),(()=>[])),(e,s,n)=>C(P(o,e),(([e,,o])=>{const r=(...a)=>{const i=h(a);i==h(o)?e(t,...a,...n(a)):b(o[i])?c(s[i](...a),(e=>r(...a,e))):r(...a,o[i])};r()}))]},_=Object,ee=_.keys,te=_.isFrozen,se=_.freeze,ne=(e,t)=>!b(((e,t)=>C(e,(e=>e[t])))(e,t)),oe=(e,t)=>delete e[t],re=(e,t)=>c(_.entries(e),(([e,s])=>t(s,e))),ae=X((e=>{let t,s,n,o=100,r=N(),a=1;const d=K(),l=N(),[u,f,L]=$((()=>G)),p=N(),I=N(),S=[],y=[],R=(t,s)=>{a=0,e.transaction((()=>F(P(p,s),((s,n)=>F(s,((s,o)=>F(s,((s,r)=>b(s[t])?e.delCell(n,o,r,!0):e.setCell(n,o,r,s[t]))))))))),a=1},T=e=>{H(p,e),H(I,e),f(l,[e])},m=(e,t)=>c(((e,t)=>e.splice(0,t))(e,t??h(e)),T),E=()=>m(S,h(S)-o),k=e.addCellListener(null,null,null,((e,s,o,i,d,l)=>{if(a){C(t,(()=>{w(S,t),E(),m(y),t=void 0,n=1}));const e=W(r,s,N()),a=W(e,o,N()),c=W(a,i,[void 0,void 0],(e=>e[0]=l));c[1]=d,c[0]===c[1]&&x(H(a,i))&&x(H(e,o))&&x(H(r,s))&&(t=v(S),n=1),z()}})),M=(e="")=>(b(t)&&(t=""+s++,H(p,t,r),j(t,e),r=N(),n=1),t),D=()=>{g(S)||(y.unshift(M()),R(0,t),t=v(S),n=1)},J=()=>{g(y)||(w(S,t),t=y.shift(),R(1,t),n=1)},z=()=>{n&&(f(d),n=0)},O=e=>{const t=M(e);return z(),t},j=(e,t)=>(q(e)&&P(I,e)!==t&&(H(I,e,t),f(l,[e])),G),q=e=>A(p,e),G={setSize:e=>(o=e,E(),G),addCheckpoint:O,setCheckpoint:j,getStore:()=>e,getCheckpointIds:()=>[[...S],t,[...y]],forEachCheckpoint:e=>B(I,e),hasCheckpoint:q,getCheckpoint:e=>P(I,e),goBackward:()=>(D(),z(),G),goForward:()=>(J(),z(),G),goTo:e=>{const s=i(S,e)?D:i(y,e)?J:null;for(;!b(s)&&e!=t;)s();return z(),G},addCheckpointIdsListener:e=>u(e,d),addCheckpointListener:(e,t)=>u(t,l,[e]),delListener:e=>(L(e),G),clear:()=>(m(S),m(y),b(t)||T(t),t=void 0,s=0,O(),G),destroy:()=>{e.delListener(k)},getListenerStats:()=>({})};return se(G.clear())})),ie=(e,t)=>e<t?-1:1,de=X((e=>{const t=N(),s=N(),[n,o,r,a,i,c,u,h,g,f]=U(e,N,(e=>b(e)?"":e+"")),[L,w,v]=$((()=>I)),p=(t,s,n)=>{const o=i(t);F(n,((t,n)=>s(n,(s=>F(t,(t=>s(t,(s=>e.forEachCell(o,t,s)))))))))},I={setIndexDefinition:(e,n,o,r,a,i=ie)=>{const g=b(a)?void 0:([e],[t])=>a(e,t);return h(e,n,((n,o,a,h,f,L)=>{let v=0;const p=K(),I=K(),S=c(e);if(F(o,(([e,t],s)=>{b(e)||(Q(p,e),C(P(S,e),(t=>{z(t,s),x(t)&&(H(S,e),v=1)}))),b(t)||(Q(p,t),A(S,t)||(H(S,t,K()),v=1),Q(P(S,t),s),b(r)||Q(I,t))})),n(),x(f)||(L?B(S,(e=>Q(I,e))):B(a,(e=>C(P(h,e),(e=>Q(I,e))))),F(I,(e=>{const t=(t,s)=>i(P(f,t),P(f,s),e),s=[...P(S,e)];d(s,t)||(H(S,e,K(l(s,t))),Q(p,e))}))),(v||L)&&!b(g)){const t=[...S];d(t,g)||(u(e,N(l(t,g))),v=1)}v&&w(t,[e]),F(p,(t=>w(s,[e,t])))}),V(o),C(r,V)),I},delIndexDefinition:e=>(g(e),I),getStore:n,getIndexIds:o,forEachIndex:e=>r(((t,s)=>e(t,(e=>p(t,e,s))))),forEachSlice:(e,t)=>p(e,t,c(e)),hasIndex:a,hasSlice:(e,t)=>A(c(e),t),getTableId:i,getSliceIds:e=>j(c(e)),getSliceRowIds:(e,t)=>D(P(c(e),t)),addSliceIdsListener:(e,s)=>L(s,t,[e]),addSliceRowIdsListener:(e,t,n)=>L(n,s,[e,t]),delListener:e=>(v(e),I),destroy:f,getListenerStats:()=>({})};return se(I)})),le=N([["avg",[(e,t)=>u(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=>S(...e),(e,t)=>S(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:S(t,e)]],["min",[e=>y(...e),(e,t)=>y(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:y(t,e)]],["sum",[e=>u(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),ce=X((e=>{const t=N(),[s,n,o,r,a,i,d,l,c,u]=U(e,k,(e=>isNaN(e)||b(e)||!0===e||!1===e||""===e?void 0:1*e)),[h,g,f]=$((()=>L)),L={setMetricDefinition:(e,s,n,o,r,a,c)=>{const u=E(n)?[n,r,a,c]:P(le,n)??P(le,"sum");return l(e,s,((s,n,o,r,a,l)=>{let c=i(e),h=M(r);const[f,L,w,v]=u;l=l||b(c),F(n,(([e,t])=>{l||(c=b(e)?L?.(c,t,h++):b(t)?w?.(c,e,h--):v?.(c,t,e,h)),l=l||b(c)})),s(),x(r)?c=void 0:l&&(c=f(D(r),M(r))),R(c)||(c=void 0);const p=i(e);c!=p&&(d(e,c),g(t,[e],c,p))}),V(o,1)),L},delMetricDefinition:e=>(c(e),L),getStore:s,getMetricIds:n,forEachMetric:o,hasMetric:r,getTableId:a,getMetric:i,addMetricListener:(e,s)=>h(s,t,[e]),delListener:e=>(f(e),L),destroy:u,getListenerStats:()=>({})};return se(L)})),ue=(e,t,s,n,o)=>{let r,a=0;const i={load:async s=>{if(2!=a){a=1;const n=await t();b(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:()=>(C(r,e.delListener),i),getStore:()=>e,destroy:()=>i.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return se(i)},he=globalThis.window,ge=(e,t,s)=>{let n;return ue(e,(async()=>s.getItem(t)),(async e=>s.setItem(t,e)),(e=>{n=n=>{n.storageArea===s&&n.key===t&&e()},he.addEventListener("storage",n)}),(()=>{he.removeEventListener("storage",n),n=void 0}))},fe=(e,t)=>ge(e,t,localStorage),Le=(e,t)=>ge(e,t,sessionStorage),we=(s,n)=>{let o;return ue(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}))},ve=e=>e.headers.get("ETag"),pe=(e,t,s,n)=>{let o,r;return ue(e,(async()=>{const e=await fetch(t);return r=ve(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=ve(s);b(r)||b(n)||n==r||(r=n,e())}),1e3*n)}),(()=>{C(o,clearInterval),o=void 0}))},Ie=X((e=>{const t=N(),s=N(),n=N(),o=N(),[r,a,i,d,l,c,u,h,g,f]=U(e,(()=>[N(),N(),N(),N()]),(e=>b(e)?void 0:e+"")),[L,w,v]=$((()=>y)),p=(e,t,s)=>C(c(e),(([n,,o])=>{if(!A(o,t)){const r=K();if(l(e)!=S(e))Q(r,t);else{let e=t;for(;!b(e)&&!A(r,e);)Q(r,e),e=P(n,e)}if(s)return r;H(o,t,r)}return P(o,t)})),I=(e,t)=>C(c(e),(([,,e])=>H(e,t))),S=e=>P(t,e),y={setRelationshipDefinition:(e,r,a,i)=>(H(t,e,a),h(e,r,((t,r)=>{const a=K(),i=K(),d=K(),[l,u]=c(e);F(r,(([t,s],n)=>{b(t)||(Q(i,t),C(P(u,t),(e=>{z(e,n),x(e)&&H(u,t)}))),b(s)||(Q(i,s),A(u,s)||H(u,s,K()),Q(P(u,s),n)),Q(a,n),H(l,n,s),B(P(o,e),(t=>{A(p(e,t),n)&&Q(d,t)}))})),t(),F(a,(t=>w(s,[e,t]))),F(i,(t=>w(n,[e,t]))),F(d,(t=>{I(e,t),w(o,[e,t])}))}),V(i)),y),delRelationshipDefinition:e=>(H(t,e),g(e),y),getStore:r,getRelationshipIds:a,forEachRelationship:t=>i((s=>t(s,(t=>e.forEachRow(l(s),t))))),hasRelationship:d,getLocalTableId:l,getRemoteTableId:S,getRemoteRowId:(e,t)=>P(c(e)?.[0],t),getLocalRowIds:(e,t)=>D(P(c(e)?.[1],t)),getLinkedRowIds:(e,t)=>b(c(e))?[t]:D(p(e,t,!0)),addRemoteRowIdListener:(e,t,n)=>L(n,s,[e,t]),addLocalRowIdsListener:(e,t,s)=>L(s,n,[e,t]),addLinkedRowIdsListener:(e,t,s)=>(p(e,t),L(s,o,[e,t])),delListener:e=>(I(...v(e)),y),destroy:f,getListenerStats:()=>({})};return se(y)})),Se=(e,t,s,n=H)=>{const o=(r=j(e),a=e=>!ne(t,e),r.filter(a));var r,a;return c(ee(t),(n=>s(e,n,t[n]))),c(o,(t=>n(e,t))),e},ye=e=>{const t=s(e);return m(t)||t==r&&R(e)?t:void 0},Re=(e,t)=>!(b(e)||!(e=>T(e,_)&&e.constructor==_)(e)||te(e))&&(re(e,((s,n)=>{t(s,n)||oe(e,n)})),!(e=>g(ee(e)))(e)),Te=(e,t,s)=>H(e,t,P(e,t)==-s?void 0:s),be=()=>{let e,t=0,s=0;const n=N(),o=N(),a=N(),d=N(),l=N(),u=N(),h=N(),g=N(),f=O(K),L=O(K),v=O(),S=O(),y=O(),R=O(),T=O(),k=O(),[M,D,z,Q]=$((()=>Fe)),U=(t,s)=>(!e||A(u,s))&&Re(t,((e,t)=>V(s,t,e))),V=(e,t,s,n)=>Re(n?s:Y(s,e),((n,o)=>C(X(e,t,o,n),(e=>(s[o]=e,!0)),(()=>!1)))),X=(t,s,n,o)=>e?C(P(P(u,t),n),(e=>ye(o)!=e.type?pe(t,s,n,o,e.default):o)):b(ye(o))?pe(t,s,n,o):o,Y=(e,t)=>(C(P(h,t),(t=>re(t,((t,s)=>{ne(e,s)||(e[s]=t)})))),e),Z=e=>Se(u,e,((e,t,s)=>{const n={};Se(W(u,t,N()),s,((e,t,s)=>{H(e,t,s),C(s.default,(e=>n[t]=e))})),H(h,t,n)}),((e,t)=>{H(u,t),H(h,t)})),_=e=>Se(g,e,((e,t,s)=>ee(t,s)),((e,t)=>ue(t))),ee=(e,t)=>Se(W(g,e,N(),(()=>fe(e,1))),t,((t,s,n)=>te(e,t,s,n)),((t,s)=>he(e,t,s))),te=(e,t,s,n,o)=>Se(W(t,s,N(),(()=>Le(e,s,1))),n,((t,n,o)=>ae(e,s,t,n,o)),((n,r)=>ge(e,t,s,n,r,o))),ae=(e,t,s,n,o)=>{A(s,n)||we(e,t,n,1);const r=P(s,n);o!==r&&(ve(e,t,n,r),H(s,n,o))},ie=(e,t,s)=>Je((()=>te(e,ce(e),t,s))),de=(e,t,s,n,o)=>C(P(t,s),(t=>ae(e,s,t,n,o)),(()=>te(e,t,s,Y({[n]:o},e)))),le=e=>{const s=""+t++;return A(e,s)?le(e):s},ce=e=>P(g,e)??ee(e,{}),ue=e=>ee(e,{}),he=(e,t,s)=>te(e,t,s,{},!0),ge=(e,t,s,n,o,r)=>{const a=P(h,e)?.[o];if(!b(a)&&!r)return ae(e,s,n,o,a);const i=t=>{ve(e,s,t,P(n,t)),we(e,s,t,-1),H(n,t)};b(a)?i(o):B(n,i),x(n)&&(Le(e,s,-1),x(H(t,s))&&(fe(e,-1),H(g,e)))},fe=(e,t)=>Te(n,e,t),Le=(e,t,s)=>Te(W(o,e,N()),t,s),we=(e,t,s,n)=>Te(W(W(a,e,N()),t,N()),s,n),ve=(e,t,s,n)=>W(W(W(d,e,N()),t,N()),s,n),pe=(e,t,s,n,o)=>(w(W(W(W(l,e,N()),t,N()),s,[]),n),o),Ie=(e,t,s)=>{const n=P(P(d,e),t),o=Ae(e,t,s);return A(n,s)?[!0,P(n,s),o]:[!1,o,o]},be=e=>{x(k[e])||F(e?G(l,(e=>G(e,G))):l,((t,s)=>F(t,((t,n)=>F(t,((t,o)=>D(k[e],[s,n,o],t)))))))},Ce=e=>{const t=x(R[e])&&x(S[e])&&x(L[e]),s=x(T[e])&&x(y[e])&&x(v[e])&&x(f[e]);if(t&&s)return;const r=e?[G(n),G(o,G),G(a,(e=>G(e,G))),G(d,(e=>G(e,G)))]:[n,o,a,d];if(t||(F(r[2],((t,s)=>F(t,((t,n)=>{x(t)||D(R[e],[s,n])})))),F(r[1],((t,s)=>{x(t)||D(S[e],[s])})),x(r[0])||D(L[e])),!s){let t;F(r[3],((s,n)=>{let o;F(s,((s,r)=>{let a;F(s,((s,i)=>{const d=Ae(n,r,i);d!==s&&(D(T[e],[n,r,i],d,s,Ie),t=o=a=1)})),a&&D(y[e],[n,r],Ie)})),o&&D(v[e],[n],Ie)})),t&&D(f[e],[],Ie)}},me=()=>q(g,(e=>q(e,q))),Ee=()=>j(g),ke=e=>j(P(g,e)),Me=(e,t)=>j(P(P(g,e),t)),Ae=(e,t,s)=>P(P(P(g,e),t),s),xe=e=>((e=>Re(e,U))(e)?Je((()=>_(e))):Je(),Fe),De=()=>(Je((()=>_({}))),Fe),Je=e=>{if(-1==s)return;s++;const t=e?.();return s--,0==s&&(s=1,be(1),Ce(1),s=-1,be(0),Ce(0),s=0,c([d,l,n,o,a],J)),t},Fe={getTables:me,getTableIds:Ee,getTable:e=>q(P(g,e),q),getRowIds:ke,getRow:(e,t)=>q(P(P(g,e),t)),getCellIds:Me,getCell:Ae,hasTables:()=>!x(g),hasTable:e=>A(g,e),hasRow:(e,t)=>A(P(g,e),t),hasCell:(e,t,s)=>A(P(P(g,e),t),s),getJson:()=>p(g),getSchemaJson:()=>p(u),setTables:xe,setTable:(e,t)=>(U(t,e)?Je((()=>ee(e,t))):Je(),Fe),setRow:(e,t,s)=>(V(e,t,s)?ie(e,t,s):Je(),Fe),addRow:(e,t)=>{let s;return V(e,s,t)?ie(e,s=le(P(g,e)),t):Je(),s},setPartialRow:(e,t,s)=>(V(e,t,s,1)?Je((()=>{const n=ce(e);re(s,((s,o)=>de(e,n,t,o,s)))})):Je(),Fe),setCell:(e,t,s,n)=>(C(X(e,t,s,E(n)?n(Ae(e,t,s)):n),(n=>Je((()=>de(e,ce(e),t,s,n)))),Je),Fe),setJson:e=>{try{"{}"===e?De():xe(I(e))}catch{}return Fe},setSchema:t=>{if((e=(e=>Re(e,(e=>Re(e,(e=>{if(!Re(e,((e,t)=>i(["type","default"],t))))return!1;const t=e.type;return!(!m(t)&&t!=r||(ye(e.default)!=t&&oe(e,"default"),0))})))))(t))&&(Z(t),!x(g))){const e=me();De(),xe(e)}return Fe},delTables:De,delTable:e=>(A(g,e)&&Je((()=>ue(e))),Fe),delRow:(e,t)=>(C(P(g,e),(s=>{A(s,t)&&Je((()=>he(e,s,t)))})),Fe),delCell:(e,t,s,n)=>(C(P(g,e),(o=>C(P(o,t),(r=>{A(r,s)&&Je((()=>ge(e,o,t,r,s,n)))})))),Fe),delSchema:()=>(Z({}),e=!1,Fe),transaction:Je,forEachTable:e=>F(g,((t,s)=>e(s,(e=>F(t,((t,s)=>e(s,(e=>B(t,e))))))))),forEachRow:(e,t)=>F(P(g,e),((e,s)=>t(s,(t=>B(e,t))))),forEachCell:(e,t,s)=>B(P(P(g,e),t),s),addTablesListener:(e,t)=>M(e,f[t?1:0]),addTableIdsListener:(e,t)=>M(e,L[t?1:0]),addTableListener:(e,t,s)=>M(t,v[s?1:0],[e]),addRowIdsListener:(e,t,s)=>M(t,S[s?1:0],[e]),addRowListener:(e,t,s,n)=>M(s,y[n?1:0],[e,t]),addCellIdsListener:(e,t,s,n)=>M(s,R[n?1:0],[e,t]),addCellListener:(e,t,s,n,o)=>M(n,T[o?1:0],[e,t,s]),addInvalidCellListener:(e,t,s,n,o)=>M(n,k[o?1:0],[e,t,s]),callListener:e=>(Q(e,[Ee,ke,Me],(e=>b(e[2])?[]:[,,].fill(Ae(...e)))),Fe),delListener:e=>(z(e),Fe),getListenerStats:()=>({})};return se(Fe)};export{ae as createCheckpoints,ue as createCustomPersister,we as createFilePersister,de as createIndexes,fe as createLocalPersister,ce as createMetrics,Ie as createRelationships,pe as createRemotePersister,Le as createSessionPersister,be as createStore,ie as defaultSorter};
|
|
Binary file
|