tinybase 1.3.4 → 2.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/checkpoints.js +1 -1
- package/lib/checkpoints.js.gz +0 -0
- package/lib/debug/checkpoints.js +67 -54
- package/lib/debug/indexes.js +104 -67
- package/lib/debug/metrics.js +185 -129
- package/lib/debug/persisters.js +2 -1
- package/lib/debug/queries.d.ts +3054 -0
- package/lib/debug/queries.js +880 -0
- package/lib/debug/relationships.d.ts +6 -5
- package/lib/debug/relationships.js +102 -66
- package/lib/debug/store.d.ts +137 -66
- package/lib/debug/store.js +215 -119
- package/lib/debug/tinybase.d.ts +1 -0
- package/lib/debug/tinybase.js +892 -175
- package/lib/debug/ui-react.d.ts +2004 -195
- package/lib/debug/ui-react.js +273 -77
- package/lib/indexes.js +1 -1
- package/lib/indexes.js.gz +0 -0
- package/lib/metrics.js +1 -1
- package/lib/metrics.js.gz +0 -0
- package/lib/queries.d.ts +3054 -0
- package/lib/queries.js +1 -0
- package/lib/queries.js.gz +0 -0
- package/lib/relationships.d.ts +6 -5
- package/lib/relationships.js +1 -1
- package/lib/relationships.js.gz +0 -0
- package/lib/store.d.ts +137 -66
- package/lib/store.js +1 -1
- package/lib/store.js.gz +0 -0
- package/lib/tinybase.d.ts +1 -0
- package/lib/tinybase.js +1 -1
- package/lib/tinybase.js.gz +0 -0
- package/lib/ui-react.d.ts +2004 -195
- package/lib/ui-react.js +1 -1
- package/lib/ui-react.js.gz +0 -0
- package/lib/umd/checkpoints.js +1 -1
- package/lib/umd/checkpoints.js.gz +0 -0
- package/lib/umd/indexes.js +1 -1
- package/lib/umd/indexes.js.gz +0 -0
- package/lib/umd/metrics.js +1 -1
- package/lib/umd/metrics.js.gz +0 -0
- package/lib/umd/queries.js +1 -0
- package/lib/umd/queries.js.gz +0 -0
- package/lib/umd/relationships.js +1 -1
- package/lib/umd/relationships.js.gz +0 -0
- package/lib/umd/store.js +1 -1
- package/lib/umd/store.js.gz +0 -0
- package/lib/umd/tinybase.js +1 -1
- package/lib/umd/tinybase.js.gz +0 -0
- package/lib/umd/ui-react.js +1 -1
- package/lib/umd/ui-react.js.gz +0 -0
- package/package.json +22 -22
- package/readme.md +2 -2
package/lib/store.js.gz
CHANGED
|
Binary file
|
package/lib/tinybase.d.ts
CHANGED
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),a=s(0),r=s(s),i=e=>[e,e],d=(e,t)=>e.includes(t),l=(e,t)=>e.every(((s,n)=>0==n||t(e[n-1],s)<=0)),c=(e,t)=>e.sort(t),u=(e,t)=>e.forEach(t),h=e=>L(e,((e,t)=>e+t),0),g=e=>e.length,f=e=>0==g(e),L=(e,t,s)=>e.reduce(t,s),w=e=>e.slice(1),p=(e,t)=>e.push(t),v=e=>e.pop(),I=e=>JSON.stringify(e,((e,t)=>b(t,Map)?L([...t],((e,[t,s])=>(e[t]=s,e)),{}):t)),S=JSON.parse,y=Math.max,R=Math.min,T=isFinite,b=(e,t)=>e instanceof t,C=e=>null==e,m=(e,t,s)=>C(e)?s?.():t(e),E=e=>e==n||e==o,k=e=>s(e)==r,M=()=>{},A=e=>e.size,x=(e,t)=>e?.has(t)??!1,D=e=>C(e)||0==A(e),F=e=>[...e?.values()??[]],J=e=>e.clear(),z=(e,t)=>e?.forEach(t),N=(e,t)=>e?.delete(t),O=e=>new Map(e),j=(e=O)=>[e(),e()],P=e=>[...e?.keys()??[]],W=(e,t)=>e?.get(t),B=(e,t)=>z(e,((e,s)=>t(s,e))),H=(e,t,s)=>C(s)?(N(e,t),e):e?.set(t,s),q=(e,t,s)=>(x(e,t)||e.set(t,s()),W(e,t)),G=(e,t,s)=>{const n={},o=t??(e=>e);return z(e,((e,t)=>m(o(e),(e=>s?.(e)?0:n[t]=e)))),n},K=(e,t)=>{const s=O(),n=t??(e=>e);return z(e,((e,t)=>s.set(t,n(e)))),s},Q=e=>K(e,K),U=e=>new Set(e),V=(e,t)=>e?.add(t),X=(e,t,s)=>{const n=e.hasRow,o=O(),a=O(),r=O(),i=O(),d=O(),l=t=>m(W(d,t),(s=>{z(s,e.delListener),H(d,t)})),c=e=>{H(o,e),H(a,e),H(r,e),H(i,e),l(e)};return[()=>e,()=>P(o),e=>B(a,e),e=>x(a,e),e=>W(o,e),e=>W(a,e),(e,t)=>H(a,e,t),(c,h,g,f,L)=>{const w=O(),p=O();H(o,c,h),x(a,c)||(H(a,c,t()),H(r,c,O()),H(i,c,O()));const v=W(r,c),I=W(i,c),S=t=>{const o=s=>e.getCell(h,t,s),a=W(v,t),r=n(h,t)?s(f(o,t)):void 0;if(a!=r&&H(w,t,[a,r]),!C(L)){const e=W(I,t),s=n(h,t)?L(o,t):void 0;e!=s&&H(p,t,s)}},y=e=>{g((()=>{z(w,(([,e],t)=>H(v,t,e))),z(p,((e,t)=>H(I,t,e)))}),w,p,v,I,e),J(w),J(p)};B(v,S),e.hasTable(h)&&u(e.getRowIds(h),(e=>{x(v,e)||S(e)})),y(!0),l(c),H(d,c,U([e.addRowListener(h,null,((e,t,s)=>S(s))),e.addTableListener(h,(()=>y()))]))},c,()=>B(d,c)]},Y=(e,t)=>s(e)==n?t=>t(e):e??(()=>t??""),Z=e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))},$=(e,t,s)=>g(s)<2?V(f(s)?e:q(e,s[0],U),t):$(q(e,s[0],O),t,w(s)),_=e=>{const t=(s,n,...o)=>m(s,(s=>f(o)?e(s,n):u([o[0],null],(e=>t(W(s,e),n,...w(o))))));return t},ee=e=>{let t,s=0;const n=[],o=O();return[(a,r,i=[])=>{t??=e();const d=v(n)??""+s++;return H(o,d,[a,r,i]),$(r,d,i),d},(e,s=[],...n)=>_(z)(e,(e=>m(W(o,e),(([e])=>e(t,...s,...n)))),...s),e=>m(W(o,e),(([,t,s])=>(_(N)(t,e,...s),H(o,e),g(n)<1e3&&p(n,e),s)),(()=>[])),(e,s,n)=>m(W(o,e),(([e,,o])=>{const a=(...r)=>{const i=g(r);i==g(o)?e(t,...r,...n(r)):C(o[i])?u(s[i](...r),(e=>a(...r,e))):a(...r,o[i])};a()}))]},te=Object,se=te.keys,ne=te.isFrozen,oe=te.freeze,ae=(e,t)=>!C(((e,t)=>m(e,(e=>e[t])))(e,t)),re=(e,t)=>delete e[t],ie=(e,t)=>u(te.entries(e),(([e,s])=>t(s,e))),de=e=>f(se(e)),le=Z((e=>{let t,s,n,o=100,a=O(),r=1;const i=U(),l=O(),[c,h,L]=ee((()=>G)),w=O(),I=O(),S=[],y=[],R=(t,s)=>{r=0,e.transaction((()=>z(W(w,s),((s,n)=>z(s,((s,o)=>z(s,((s,a)=>C(s[t])?e.delCell(n,o,a,!0):e.setCell(n,o,a,s[t]))))))))),r=1},T=e=>{H(w,e),H(I,e),h(l,[e])},b=(e,t)=>u(((e,t)=>e.splice(0,t))(e,t??g(e)),T),E=()=>b(S,g(S)-o),k=e.addCellListener(null,null,null,((e,s,o,i,d,l)=>{if(r){m(t,(()=>{p(S,t),E(),b(y),t=void 0,n=1}));const e=q(a,s,O),r=q(e,o,O),c=q(r,i,(()=>[l,void 0]));c[1]=d,c[0]===d&&D(H(r,i))&&D(H(e,o))&&D(H(a,s))&&(t=v(S),n=1),J()}})),M=(e="")=>(C(t)&&(t=""+s++,H(w,t,a),j(t,e),a=O(),n=1),t),A=()=>{f(S)||(y.unshift(M()),R(0,t),t=v(S),n=1)},F=()=>{f(y)||(p(S,t),t=y.shift(),R(1,t),n=1)},J=()=>{n&&(h(i),n=0)},N=e=>{const t=M(e);return J(),t},j=(e,t)=>(P(e)&&W(I,e)!==t&&(H(I,e,t),h(l,[e])),G),P=e=>x(w,e),G={setSize:e=>(o=e,E(),G),addCheckpoint:N,setCheckpoint:j,getStore:()=>e,getCheckpointIds:()=>[[...S],t,[...y]],forEachCheckpoint:e=>B(I,e),hasCheckpoint:P,getCheckpoint:e=>W(I,e),goBackward:()=>(A(),J(),G),goForward:()=>(F(),J(),G),goTo:e=>{const s=d(S,e)?A:d(y,e)?F:null;for(;!C(s)&&e!=t;)s();return J(),G},addCheckpointIdsListener:e=>c(e,i),addCheckpointListener:(e,t)=>c(t,l,[e]),delListener:e=>(L(e),G),clear:()=>(b(S),b(y),C(t)||T(t),t=void 0,s=0,N(),G),destroy:()=>{e.delListener(k)},getListenerStats:()=>({})};return oe(G.clear())})),ce=(e,t)=>e<t?-1:1,ue=Z((e=>{const t=O(),s=O(),[n,o,a,r,i,d,u,h,g,f]=X(e,O,(e=>C(e)?"":e+"")),[L,w,p]=ee((()=>I)),v=(t,s,n)=>{const o=i(t);z(n,((t,n)=>s(n,(s=>z(t,(t=>s(t,(s=>e.forEachCell(o,t,s)))))))))},I={setIndexDefinition:(e,n,o,a,r,i=ce)=>{const g=C(r)?void 0:([e],[t])=>r(e,t);return h(e,n,((n,o,r,h,f,L)=>{let p=0;const v=U(),I=U(),S=d(e);if(z(o,(([e,t],s)=>{C(e)||(V(v,e),m(W(S,e),(t=>{N(t,s),D(t)&&(H(S,e),p=1)}))),C(t)||(V(v,t),x(S,t)||(H(S,t,U()),p=1),V(W(S,t),s),C(a)||V(I,t))})),n(),D(f)||(L?B(S,(e=>V(I,e))):B(r,(e=>m(W(h,e),(e=>V(I,e))))),z(I,(e=>{const t=(t,s)=>i(W(f,t),W(f,s),e),s=[...W(S,e)];l(s,t)||(H(S,e,U(c(s,t))),V(v,e))}))),(p||L)&&!C(g)){const t=[...S];l(t,g)||(u(e,O(c(t,g))),p=1)}p&&w(t,[e]),z(v,(t=>w(s,[e,t])))}),Y(o),m(a,Y)),I},delIndexDefinition:e=>(g(e),I),getStore:n,getIndexIds:o,forEachIndex:e=>a(((t,s)=>e(t,(e=>v(t,e,s))))),forEachSlice:(e,t)=>v(e,t,d(e)),hasIndex:r,hasSlice:(e,t)=>x(d(e),t),getTableId:i,getSliceIds:e=>P(d(e)),getSliceRowIds:(e,t)=>F(W(d(e),t)),addSliceIdsListener:(e,s)=>L(s,t,[e]),addSliceRowIdsListener:(e,t,n)=>L(n,s,[e,t]),delListener:e=>(p(e),I),destroy:f,getListenerStats:()=>({})};return oe(I)})),he=O([["avg",[(e,t)=>h(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=>y(...e),(e,t)=>y(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:y(t,e)]],["min",[e=>R(...e),(e,t)=>R(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:R(t,e)]],["sum",[e=>h(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),ge=Z((e=>{const t=O(),[s,n,o,a,r,i,d,l,c,u]=X(e,M,(e=>isNaN(e)||C(e)||!0===e||!1===e||""===e?void 0:1*e)),[h,g,f]=ee((()=>L)),L={setMetricDefinition:(e,s,n,o,a,r,c)=>{const u=k(n)?[n,a,r,c]:W(he,n)??W(he,"sum");return l(e,s,((s,n,o,a,r,l)=>{let c=i(e),h=A(a);const[f,L,w,p]=u;l=l||C(c),z(n,(([e,t])=>{l||(c=C(e)?L?.(c,t,h++):C(t)?w?.(c,e,h--):p?.(c,t,e,h)),l=l||C(c)})),s(),D(a)?c=void 0:l&&(c=f(F(a),A(a))),T(c)||(c=void 0);const v=i(e);c!=v&&(d(e,c),g(t,[e],c,v))}),Y(o,1)),L},delMetricDefinition:e=>(c(e),L),getStore:s,getMetricIds:n,forEachMetric:o,hasMetric:a,getTableId:r,getMetric:i,addMetricListener:(e,s)=>h(s,t,[e]),delListener:e=>(f(e),L),destroy:u,getListenerStats:()=>({})};return oe(L)})),fe=(e,t,s,n,o)=>{let a,r=0;const i={load:async s=>{if(2!=r){r=1;const n=await t();C(n)||""==n?e.setTables(s):e.setJson(n),r=0}return i},startAutoLoad:async e=>(i.stopAutoLoad(),await i.load(e),n(i.load),i),stopAutoLoad:()=>(o(),i),save:async()=>(1!=r&&(r=2,await s(e.getJson()),r=0),i),startAutoSave:async()=>(await i.stopAutoSave().save(),a=e.addTablesListener((()=>i.save())),i),stopAutoSave:()=>(m(a,e.delListener),i),getStore:()=>e,destroy:()=>i.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return oe(i)},Le=globalThis.window,we=(e,t,s)=>{let n;return fe(e,(async()=>s.getItem(t)),(async e=>s.setItem(t,e)),(e=>{n=n=>{n.storageArea===s&&n.key===t&&e()},Le.addEventListener("storage",n)}),(()=>{Le.removeEventListener("storage",n),n=void 0}))},pe=(e,t)=>we(e,t,localStorage),ve=(e,t)=>we(e,t,sessionStorage),Ie=(s,n)=>{let o;return fe(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}))},Se=e=>e.headers.get("ETag"),ye=(e,t,s,n)=>{let o,a;return fe(e,(async()=>{const e=await fetch(t);return a=Se(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=Se(s);C(a)||C(n)||n==a||(a=n,e())}),1e3*n)}),(()=>{m(o,clearInterval),o=void 0}))},Re=Z((e=>{const t=O(),s=O(),n=O(),o=O(),[a,r,i,d,l,c,,u,h,g]=X(e,(()=>[O(),O(),O(),O()]),(e=>C(e)?void 0:e+"")),[f,L,w]=ee((()=>S)),p=(e,t,s)=>m(c(e),(([n,,o])=>{if(!x(o,t)){const a=U();if(l(e)!=I(e))V(a,t);else{let e=t;for(;!C(e)&&!x(a,e);)V(a,e),e=W(n,e)}if(s)return a;H(o,t,a)}return W(o,t)})),v=(e,t)=>m(c(e),(([,,e])=>H(e,t))),I=e=>W(t,e),S={setRelationshipDefinition:(e,a,r,i)=>(H(t,e,r),u(e,a,((t,a)=>{const r=U(),i=U(),d=U(),[l,u]=c(e);z(a,(([t,s],n)=>{C(t)||(V(i,t),m(W(u,t),(e=>{N(e,n),D(e)&&H(u,t)}))),C(s)||(V(i,s),x(u,s)||H(u,s,U()),V(W(u,s),n)),V(r,n),H(l,n,s),B(W(o,e),(t=>{x(p(e,t),n)&&V(d,t)}))})),t(),z(r,(t=>L(s,[e,t]))),z(i,(t=>L(n,[e,t]))),z(d,(t=>{v(e,t),L(o,[e,t])}))}),Y(i)),S),delRelationshipDefinition:e=>(H(t,e),h(e),S),getStore:a,getRelationshipIds:r,forEachRelationship:t=>i((s=>t(s,(t=>e.forEachRow(l(s),t))))),hasRelationship:d,getLocalTableId:l,getRemoteTableId:I,getRemoteRowId:(e,t)=>W(c(e)?.[0],t),getLocalRowIds:(e,t)=>F(W(c(e)?.[1],t)),getLinkedRowIds:(e,t)=>C(c(e))?[t]:F(p(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)=>(p(e,t),f(s,o,[e,t])),delListener:e=>(v(...w(e)),S),destroy:g,getListenerStats:()=>({})};return oe(S)})),Te=(e,t,s,n=H)=>{const o=(a=P(e),r=e=>!ae(t,e),a.filter(r));var a,r;return u(se(t),(n=>s(e,n,t[n]))),u(o,(t=>n(e,t))),e},be=e=>{const t=s(e);return E(t)||t==a&&T(e)?t:void 0},Ce=(e,t,s)=>C(e)||!(e=>b(e,te)&&e.constructor==te)(e)||de(e)||ne(e)?(s?.(),!1):(ie(e,((s,n)=>{t(s,n)||re(e,n)})),!de(e)),me=(e,t,s)=>H(e,t,W(e,t)==-s?void 0:s),Ee=()=>{let e,t,s=0,n=0;const o=O(),r=O(),l=O(),c=O(),h=O(),g=O(),f=O(),L=O(),w=j(U),v=j(U),y=j(),R=j(),T=j(),b=j(),M=j(),A=j(),F=j(U),[N,X,Y,Z]=ee((()=>Ge)),$=(t,s)=>(!e||x(g,s)||Ee(s))&&Ce(t,((e,t)=>_(s,t,e)),(()=>Ee(s))),_=(e,t,s,n)=>Ce(n?s:se(s,e,t),((n,o)=>m(te(e,t,o,n),(e=>(s[o]=e,!0)),(()=>!1))),(()=>Ee(e,t))),te=(t,s,n,o)=>e?m(W(W(g,t),n),(e=>be(o)!=e.type?Ee(t,s,n,o,e.default):o),(()=>Ee(t,s,n,o))):C(be(o))?Ee(t,s,n,o):o,se=(e,t,s)=>(m(W(f,t),(([n,o])=>{z(n,((t,s)=>{ae(e,s)||(e[s]=t)})),z(o,(n=>{ae(e,n)||Ee(t,s,n)}))})),e),ne=e=>Te(g,e,((e,t,s)=>{const n=O(),o=U();Te(q(g,t,O),s,((e,t,s)=>{H(e,t,s),m(s.default,(e=>H(n,t,e)),(()=>V(o,t)))})),H(f,t,[n,o])}),((e,t)=>{H(g,t),H(f,t)})),le=e=>Te(L,e,((e,t,s)=>ce(t,s)),((e,t)=>we(t))),ce=(e,t)=>Te(q(L,e,(()=>(Ie(e,1),O()))),t,((t,s,n)=>ue(e,t,s,n)),((t,s)=>pe(e,t,s))),ue=(e,t,s,n,o)=>Te(q(t,s,(()=>(Se(e,s,1),O()))),n,((t,n,o)=>he(e,s,t,n,o)),((n,a)=>ve(e,t,s,n,a,o))),he=(e,t,s,n,o)=>{x(s,n)||ye(e,t,n,1);const a=W(s,n);o!==a&&(Re(e,t,n,a,o),H(s,n,o))},ge=(e,t,s,n,o)=>m(W(t,s),(t=>he(e,s,t,n,o)),(()=>ue(e,t,s,se({[n]:o},e,s)))),fe=e=>{const t=""+s++;return x(e,t)?fe(e):t},Le=e=>W(L,e)??ce(e,{}),we=e=>ce(e,{}),pe=(e,t,s)=>ue(e,t,s,{},!0),ve=(e,t,s,n,o,a)=>{const r=W(W(f,e)?.[0],o);if(!C(r)&&!a)return he(e,s,n,o,r);const i=t=>{Re(e,s,t,W(n,t)),ye(e,s,t,-1),H(n,t)};C(r)?i(o):B(n,i),D(n)&&(Se(e,s,-1),D(H(t,s))&&(Ie(e,-1),H(L,e)))},Ie=(e,t)=>me(o,e,t),Se=(e,t,s)=>me(q(r,e,O),t,s),ye=(e,t,s,n)=>me(q(q(l,e,O),t,O),s,n),Re=(e,t,s,n,o)=>q(q(q(c,e,O),t,O),s,(()=>[n,0]))[1]=o,Ee=(e,t,s,n,o)=>(p(q(q(q(h,e,O),t,O),s,(()=>[])),n),o),ke=(e,t,s)=>m(W(W(W(c,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...i(Ne(e,t,s))])),Me=e=>D(h)||D(A[e])?0:z(e?K(h,Q):h,((t,s)=>z(t,((t,n)=>z(t,((t,o)=>X(A[e],[s,n,o],t))))))),Ae=e=>{const t=D(b[e])&&D(R[e])&&D(v[e]),s=D(M[e])&&D(T[e])&&D(y[e])&&D(w[e]);if(!t||!s){const n=e?[K(o),Q(r),K(l,Q),K(c,Q)]:[o,r,l,c];if(t||(z(n[2],((t,s)=>z(t,((t,n)=>{D(t)||X(b[e],[s,n])})))),z(n[1],((t,s)=>{D(t)||X(R[e],[s])})),D(n[0])||X(v[e])),!s){let t;z(n[3],((s,n)=>{let o;z(s,((s,a)=>{let r;z(s,(([s,i],d)=>{i!==s&&(X(M[e],[n,a,d],i,s,ke),t=o=r=1)})),r&&X(T[e],[n,a],ke)})),o&&X(y[e],[n],ke)})),t&&X(w[e],[],ke)}}},xe=e=>(Be(e),Ge),De=()=>G(L,(e=>G(e,G))),Fe=()=>P(L),Je=e=>P(W(L,e)),ze=(e,t)=>P(W(W(L,e),t)),Ne=(e,t,s)=>W(W(W(L,e),t),s),Oe=e=>xe((()=>(e=>Ce(e,$,Ee))(e)?le(e):0)),je=(e,t,s,n)=>xe((()=>m(te(e,t,s,k(n)?n(Ne(e,t,s)):n),(n=>ge(e,Le(e),t,s,n))))),Pe=()=>xe((()=>le({}))),We=(e,t,s,n)=>xe((()=>m(W(L,e),(o=>m(W(o,t),(a=>x(a,s)?ve(e,o,t,a,s,n):0)))))),Be=(e,t)=>{if(-1==n)return;He();const s=e?.();return qe(t),s},He=()=>(n++,Ge),qe=e=>(n>0&&(n--,0==n&&(t=!D(c),n=1,Me(1),t&&Ae(1),n=-1,e?.(G(c,(e=>G(e,(e=>G(e,(e=>[...e]),(([e,t])=>e===t))),de)),de),G(h,(e=>G(e,G))))&&(n=1,z(c,((e,t)=>z(e,((e,s)=>z(e,(([e],n)=>C(e)?We(t,s,n,!0):je(t,s,n,e))))))),n=-1,t=!1),X(F[0],[],t),Me(0),t&&Ae(0),X(F[1],[],t),n=0,u([c,h,o,r,l],J))),Ge),Ge={getTables:De,getTableIds:Fe,getTable:e=>G(W(L,e),G),getRowIds:Je,getRow:(e,t)=>G(W(W(L,e),t)),getCellIds:ze,getCell:Ne,hasTables:()=>!D(L),hasTable:e=>x(L,e),hasRow:(e,t)=>x(W(L,e),t),hasCell:(e,t,s)=>x(W(W(L,e),t),s),getJson:()=>I(L),getSchemaJson:()=>I(g),setTables:Oe,setTable:(e,t)=>xe((()=>$(t,e)?ce(e,t):0)),setRow:(e,t,s)=>xe((()=>_(e,t,s)?ue(e,Le(e),t,s):0)),addRow:(e,t)=>Be((()=>{let s;return _(e,s,t)&&ue(e,Le(e),s=fe(W(L,e)),t),s})),setPartialRow:(e,t,s)=>xe((()=>{if(_(e,t,s,1)){const n=Le(e);ie(s,((s,o)=>ge(e,n,t,o,s)))}})),setCell:je,setJson:e=>{try{"{}"===e?Pe():Oe(S(e))}catch{}return Ge},setSchema:t=>xe((()=>{if((e=(e=>Ce(e,(e=>Ce(e,(e=>{if(!Ce(e,((e,t)=>d(["type","default"],t))))return!1;const t=e.type;return!(!E(t)&&t!=a||(be(e.default)!=t&&re(e,"default"),0))})))))(t))&&(ne(t),!D(L))){const e=De();Pe(),Oe(e)}})),delTables:Pe,delTable:e=>xe((()=>x(L,e)?we(e):0)),delRow:(e,t)=>xe((()=>m(W(L,e),(s=>x(s,t)?pe(e,s,t):0)))),delCell:We,delSchema:()=>xe((()=>{ne({}),e=!1})),transaction:Be,startTransaction:He,finishTransaction:qe,forEachTable:e=>z(L,((t,s)=>e(s,(e=>z(t,((t,s)=>e(s,(e=>B(t,e))))))))),forEachRow:(e,t)=>z(W(L,e),((e,s)=>t(s,(t=>B(e,t))))),forEachCell:(e,t,s)=>B(W(W(L,e),t),s),addTablesListener:(e,t)=>N(e,w[t?1:0]),addTableIdsListener:(e,t)=>N(e,v[t?1:0]),addTableListener:(e,t,s)=>N(t,y[s?1:0],[e]),addRowIdsListener:(e,t,s)=>N(t,R[s?1:0],[e]),addRowListener:(e,t,s,n)=>N(s,T[n?1:0],[e,t]),addCellIdsListener:(e,t,s,n)=>N(s,b[n?1:0],[e,t]),addCellListener:(e,t,s,n,o)=>N(n,M[o?1:0],[e,t,s]),addInvalidCellListener:(e,t,s,n,o)=>N(n,A[o?1:0],[e,t,s]),addWillFinishTransactionListener:e=>N(e,F[0]),addDidFinishTransactionListener:e=>N(e,F[1]),callListener:e=>(Z(e,[Fe,Je,ze],(e=>C(e[2])?[]:i(Ne(...e)))),Ge),delListener:e=>(Y(e),Ge),getListenerStats:()=>({})};return oe(Ge)};export{le as createCheckpoints,fe as createCustomPersister,Ie as createFilePersister,ue as createIndexes,pe as createLocalPersister,ge as createMetrics,Re as createRelationships,ye as createRemotePersister,ve as createSessionPersister,Ee as createStore,ce 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),l=(e,t)=>e.includes(t),i=(e,t)=>e.every(t),d=(e,t)=>f(e)===f(t)&&i(e,((e,s)=>t[s]===e)),c=(e,t)=>i(e,((s,n)=>0==n||t(e[n-1],s)<=0)),u=(e,t)=>e.sort(t),h=(e,t)=>e.forEach(t),g=e=>L(e,((e,t)=>e+t),0),f=e=>e.length,R=e=>0==f(e),L=(e,t,s)=>e.reduce(t,s),w=(e,...t)=>e.push(...t),T=e=>e.pop(),I=e=>JSON.stringify(e,((e,t)=>S(t,Map)?L([...t],((e,[t,s])=>(e[t]=s,e)),{}):t)),v=JSON.parse,b=Math.max,p=Math.min,C=isFinite,S=(e,t)=>e instanceof t,y=e=>null==e,E=(e,t,s)=>y(e)?s?.():t(e),m=e=>e==n||e==o,k=e=>s(e)==a,M=()=>{},D=e=>e.size,x=(A=D,e=>L(Q(e),((e,t)=>e+A(t)),0));var A;const F=(e,t)=>e?.has(t)??!1,J=e=>y(e)||0==D(e),Q=e=>[...e?.values()??[]],z=e=>e.clear(),N=(e,t)=>e?.forEach(t),O=(e,t)=>e?.delete(t),j=e=>new Map(e),W=e=>[...e?.keys()??[]],P=(e,t)=>e?.get(t),B=(e,t)=>N(e,((e,s)=>t(s,e))),H=(e,t,s)=>y(s)?(O(e,t),e):e?.set(t,s),q=(e,t,s)=>(F(e,t)||e.set(t,s()),P(e,t)),G=(e,t,s)=>{const n={},o=t??(e=>e);return N(e,((e,t)=>E(o(e),(e=>s?.(e)?0:n[t]=e)))),n},K=(e,t)=>{const s=j(),n=t??(e=>e);return N(e,((e,t)=>s.set(t,n(e)))),s},U=e=>K(e,K),V=(e,t,s,n,o=0)=>E((s?q:P)(e,t[o],o>f(t)-2?s:j),(r=>{if(o>f(t)-2)return n?.(r)&&H(e,t[o]),r;const a=V(r,t,s,n,o+1);return J(r)&&H(e,t[o]),a})),X=e=>new Set(e),Y=(e,t)=>e?.add(t),Z=(e,t,s)=>{const n=e.hasRow,o=j(),r=j(),a=j(),l=j(),i=j(),d=(t,s,...n)=>{const o=q(i,t,X);return h(n,(t=>Y(o,t)&&s&&e.callListener(t))),n},c=(t,...s)=>E(P(i,t),(n=>{h(R(s)?Q(n):s,(t=>{e.delListener(t),O(n,t)})),J(n)&&H(i,t)})),u=(e,s)=>{H(o,e,s),F(r,e)||(H(r,e,t()),H(a,e,j()),H(l,e,j()))},g=e=>{H(o,e),H(r,e),H(a,e),H(l,e),c(e)};return[()=>e,()=>W(o),e=>B(r,e),e=>F(r,e),e=>P(o,e),e=>P(r,e),(e,t)=>H(r,e,t),u,(t,o,r,i,g)=>{u(t,o);const f=j(),R=j(),L=P(a,t),w=P(l,t),T=t=>{const r=s=>e.getCell(o,t,s),a=P(L,t),l=n(o,t)?s(i(r,t)):void 0;if(a!=l&&H(f,t,[a,l]),!y(g)){const e=P(w,t),s=n(o,t)?g(r,t):void 0;e!=s&&H(R,t,s)}},I=e=>{r((()=>{N(f,(([,e],t)=>H(L,t,e))),N(R,((e,t)=>H(w,t,e)))}),f,R,L,w,e),z(f),z(R)};B(L,T),e.hasTable(o)&&h(e.getRowIds(o),(e=>{F(L,e)||T(e)})),I(!0),c(t),d(t,0,e.addRowListener(o,null,((e,t,s)=>T(s))),e.addTableListener(o,(()=>I())))},g,()=>B(i,g),d,c]},$=(e,t)=>s(e)==n?t=>t(e):e??(()=>t??""),_=e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))},ee=(e,t=[""])=>{const s=[],n=(e,o)=>o==f(t)?w(s,e):h([t[o],null],(t=>n(P(e,t),o+1)));return n(e,0),s},te=e=>{let t,s=0;const n=[],o=j();return[(r,a,l)=>{t??=e();const i=T(n)??""+s++;return H(o,i,[r,a,l]),Y(V(a,l??[""],X),i),i},(e,s,...n)=>h(ee(e,s),(e=>N(e,(e=>E(P(o,e),(([e])=>e(t,...s??[],...n))))))),e=>E(P(o,e),(([,t,s])=>(V(t,s??[""],void 0,(t=>(O(t,e),J(t)?1:0))),H(o,e),f(n)<1e3&&w(n,e),s))),(e,t)=>!i(ee(e,t),y),(e,s,n)=>E(P(o,e),(([e,,o=[]])=>{const r=(...a)=>{const l=f(a);l==f(o)?e(t,...a,...n(a)):y(o[l])?h(s[l](...a),(e=>r(...a,e))):r(...a,o[l])};r()}))]},se=Object,ne=se.keys,oe=se.isFrozen,re=se.freeze,ae=(e,t)=>!y(((e,t)=>E(e,(e=>e[t])))(e,t)),le=(e,t)=>delete e[t],ie=(e,t)=>h(se.entries(e),(([e,s])=>t(s,e))),de=e=>R(ne(e)),ce=e=>{const t=s(e);return m(t)||t==r&&C(e)?t:void 0},ue=(e,t,s,n,o)=>y(o)?e.delCell(t,s,n,!0):e.setCell(t,s,n,o),he=_((e=>{let t,s,n,o=100,r=j(),a=1;const i=j(),d=j(),[c,u,g]=te((()=>W)),L=j(),I=j(),v=[],b=[],p=(t,s)=>{a=0,e.transaction((()=>N(P(L,s),((s,n)=>N(s,((s,o)=>N(s,((s,r)=>ue(e,n,o,r,s[t]))))))))),a=1},C=e=>{H(L,e),H(I,e),u(d,[e])},S=(e,t)=>h(((e,t)=>e.splice(0,t))(e,t??f(e)),C),m=()=>S(v,f(v)-o),k=e.addCellListener(null,null,null,((e,s,o,l,i,d)=>{if(a){E(t,(()=>{w(v,t),m(),S(b),t=void 0,n=1}));const e=q(r,s,j),a=q(e,o,j),c=q(a,l,(()=>[d,void 0]));c[1]=i,c[0]===i&&J(H(a,l))&&J(H(e,o))&&J(H(r,s))&&(t=T(v),n=1),A()}})),M=(e="")=>(y(t)&&(t=""+s++,H(L,t,r),z(t,e),r=j(),n=1),t),D=()=>{R(v)||(b.unshift(M()),p(0,t),t=T(v),n=1)},x=()=>{R(b)||(w(v,t),t=b.shift(),p(1,t),n=1)},A=()=>{n&&(u(i),n=0)},Q=e=>{const t=M(e);return A(),t},z=(e,t)=>(O(e)&&P(I,e)!==t&&(H(I,e,t),u(d,[e])),W),O=e=>F(L,e),W={setSize:e=>(o=e,m(),W),addCheckpoint:Q,setCheckpoint:z,getStore:()=>e,getCheckpointIds:()=>[[...v],t,[...b]],forEachCheckpoint:e=>B(I,e),hasCheckpoint:O,getCheckpoint:e=>P(I,e),goBackward:()=>(D(),A(),W),goForward:()=>(x(),A(),W),goTo:e=>{const s=l(v,e)?D:l(b,e)?x:null;for(;!y(s)&&e!=t;)s();return A(),W},addCheckpointIdsListener:e=>c(e,i),addCheckpointListener:(e,t)=>c(t,d,[e]),delListener:e=>(g(e),W),clear:()=>(S(v),S(b),y(t)||C(t),t=void 0,s=0,Q(),W),destroy:()=>{e.delListener(k)},getListenerStats:()=>({})};return re(W.clear())})),ge=(e,t)=>e<t?-1:1,fe=_((e=>{const t=j(),s=j(),[n,o,r,a,l,i,d,,h,g,f]=Z(e,j,(e=>y(e)?"":e+"")),[R,L,w]=te((()=>I)),T=(t,s,n)=>{const o=l(t);N(n,((t,n)=>s(n,(s=>N(t,(t=>s(t,(s=>e.forEachCell(o,t,s)))))))))},I={setIndexDefinition:(e,n,o,r,a,l=ge)=>{const g=y(a)?void 0:([e],[t])=>a(e,t);return h(e,n,((n,o,a,h,f,R)=>{let w=0;const T=X(),I=X(),v=i(e);if(N(o,(([e,t],s)=>{y(e)||(Y(T,e),E(P(v,e),(t=>{O(t,s),J(t)&&(H(v,e),w=1)}))),y(t)||(Y(T,t),F(v,t)||(H(v,t,X()),w=1),Y(P(v,t),s),y(r)||Y(I,t))})),n(),J(f)||(R?B(v,(e=>Y(I,e))):B(a,(e=>E(P(h,e),(e=>Y(I,e))))),N(I,(e=>{const t=(t,s)=>l(P(f,t),P(f,s),e),s=[...P(v,e)];c(s,t)||(H(v,e,X(u(s,t))),Y(T,e))}))),(w||R)&&!y(g)){const t=[...v];c(t,g)||(d(e,j(u(t,g))),w=1)}w&&L(t,[e]),N(T,(t=>L(s,[e,t])))}),$(o),E(r,$)),I},delIndexDefinition:e=>(g(e),I),getStore:n,getIndexIds:o,forEachIndex:e=>r(((t,s)=>e(t,(e=>T(t,e,s))))),forEachSlice:(e,t)=>T(e,t,i(e)),hasIndex:a,hasSlice:(e,t)=>F(i(e),t),getTableId:l,getSliceIds:e=>W(i(e)),getSliceRowIds:(e,t)=>Q(P(i(e),t)),addSliceIdsListener:(e,s)=>R(s,t,[e]),addSliceRowIdsListener:(e,t,n)=>R(n,s,[e,t]),delListener:e=>(w(e),I),destroy:f,getListenerStats:()=>({})};return re(I)})),Re=j([["avg",[(e,t)=>g(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=>b(...e),(e,t)=>b(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:b(t,e)]],["min",[e=>p(...e),(e,t)=>p(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:p(t,e)]],["sum",[e=>g(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),Le=(e,t,s,n,o,r=!1)=>{if(J(s))return;const[a,l,i,d]=o;return r||=y(e),N(n,(([s,n])=>{r||(e=y(s)?l?.(e,n,t++):y(n)?i?.(e,s,t--):d?.(e,n,s,t),r||=y(e))})),r?a(Q(s),D(s)):e},we=_((e=>{const t=j(),[s,n,o,r,a,l,i,,d,c,u]=Z(e,M,(e=>isNaN(e)||y(e)||!0===e||!1===e||""===e?void 0:1*e)),[h,g,f]=te((()=>R)),R={setMetricDefinition:(e,s,n,o,r,a,c)=>{const u=k(n)?[n,r,a,c]:P(Re,n)??P(Re,"sum");return d(e,s,((s,n,o,r,a,d)=>{const c=l(e),h=D(r);d||=y(c),s();let f=Le(c,h,r,n,u,d);C(f)||(f=void 0),f!=c&&(i(e,f),g(t,[e],f,c))}),$(o,1)),R},delMetricDefinition:e=>(c(e),R),getStore:s,getMetricIds:n,forEachMetric:o,hasMetric:r,getTableId:a,getMetric:l,addMetricListener:(e,s)=>h(s,t,[e]),delListener:e=>(f(e),R),destroy:u,getListenerStats:()=>({})};return re(R)})),Te=(e,t,s,n,o)=>{let r,a=0;const l={load:async s=>{if(2!=a){a=1;const n=await t();y(n)||""==n?e.setTables(s):e.setJson(n),a=0}return l},startAutoLoad:async e=>(l.stopAutoLoad(),await l.load(e),n(l.load),l),stopAutoLoad:()=>(o(),l),save:async()=>(1!=a&&(a=2,await s(e.getJson()),a=0),l),startAutoSave:async()=>(await l.stopAutoSave().save(),r=e.addTablesListener((()=>l.save())),l),stopAutoSave:()=>(E(r,e.delListener),l),getStore:()=>e,destroy:()=>l.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return re(l)},Ie=globalThis.window,ve=(e,t,s)=>{let n;return Te(e,(async()=>s.getItem(t)),(async e=>s.setItem(t,e)),(e=>{n=n=>{n.storageArea===s&&n.key===t&&e()},Ie.addEventListener("storage",n)}),(()=>{Ie.removeEventListener("storage",n),n=void 0}))},be=(e,t)=>ve(e,t,localStorage),pe=(e,t)=>ve(e,t,sessionStorage),Ce=(s,n)=>{let o;return Te(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}))},Se=e=>e.headers.get("ETag"),ye=(e,t,s,n)=>{let o,r;return Te(e,(async()=>{const e=await fetch(t);return r=Se(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=Se(s);y(r)||y(n)||n==r||(r=n,e())}),1e3*n)}),(()=>{E(o,clearInterval),o=void 0}))},Ee=_((e=>{const[t,s,n,o,r,,,a,,l,c,g,L]=Z(e,(()=>!0),M),T=e.createStore(),I=e.createStore(),v=e.createStore(),b=j(),p=(e,t,...s)=>h(s,(s=>Y(q(q(b,t,j),e,X),s))),C=(e,t,s)=>g(e,0,t.addWillFinishTransactionListener(s.startTransaction),t.addDidFinishTransactionListener((()=>s.finishTransaction()))),S={setQueryDefinition:(t,s,n)=>{let o;a(t,s),T.delTable(t),I.delTable(t),v.delTable(t);const r=[],l=[[null,[s,null,null,[],j()]]],c=[],b=[],m=[],M=[];n({select:(e,t)=>{const s=k(e)?[f(r)+"",e]:[y(t)?e:t,s=>s(e,t)];return w(r,s),{as:e=>s[0]=e}},join:(e,t,s)=>{const n=y(s)||k(t)?null:t,o=y(n)?t:s,r=[e,[e,n,k(o)?o:e=>e(o),[],j()]];return w(l,r),{as:e=>r[0]=e}},where:(e,t,s)=>w(c,k(e)?e:y(s)?s=>s(e)===t:n=>n(e,t)===s),group:(e,t,s,n,o)=>{const r=[e,[e,k(t)?[t,s,n,o]:P(Re,t)??[(e,t)=>t]]];return w(b,r),{as:e=>r[0]=e}},having:(e,t)=>w(m,k(e)?e:s=>s(e)===t),order:(e,t)=>w(M,[k(e)?e:t=>t(e)??0,t]),limit:(e,t)=>{o=y(t)?[0,e]:[e,t]}});const x=j(r);if(J(x))return S;const A=j(l);B(A,((e,[,t])=>E(P(A,t),(({3:t})=>y(e)?0:w(t,e)))));const Q=j(b);let G=T,K=I;if(R(M)&&y(o))K=v;else{C(t,K,v);const e=(e,t)=>{const n=P(s,e)??[],o=P(s,t)??[],r=M.findIndex(((e,t)=>n[t]!==o[t]));return r<0?0:ge(n[r],o[r])*(M[r][1]?-1:1)},s=j(),n=j();p(K,t,R(M)?K.addRowIdsListener(t,(()=>z(n))):K.addRowListener(t,null,((e,o,r)=>{let a=null;if(K.hasRow(t,r)){const e=P(s,r)??[],o=K.getRow(t,r),i=e=>o[e];if(l=([e])=>e(i,r),a=M.map(l),d(e,a))return void(P(n,r)&&v.setRow(t,r,o))}var l;H(s,r,a),z(n)})),K.addTableListener(t,(()=>{if(J(n)&&(v.delTable(t),K.hasTable(t))){const s=K.getTable(t);h(u(ne(s),e),(e=>H(n,e,0))),h(E(o,(([e,t])=>{return s=W(n),o=e,r=e+t,s.slice(o,r);var s,o,r}),(()=>W(n))),(e=>{v.setRow(t,e,s[e]),H(n,e,1)}))}})))}if(J(Q)&&R(m))G=K;else{C(t,G,K);const e=j();B(Q,((t,[s,n])=>Y(q(e,s,X),[t,n])));const s=X();B(x,(t=>F(e,t)?0:Y(s,t)));const n=j(),o=(s,n,o,r)=>E(s,(([s,a,l,d])=>{B(n,((t,[n])=>{const a=q(s,t,j),l=P(a,o),i=r?void 0:n;if(l!==i){const s=X([[l,i]]),n=D(a);H(a,o,i),N(P(e,t),(([e,t])=>{const o=Le(d[e],n,a,s,t);d[e]=y(ce(o))?null:o}))}})),(J(a)||!i(m,(e=>e((e=>d[e]))))?K.delRow:K.setRow)(t,l,d)}));p(G,t,G.addRowListener(t,null,((r,a,l,i)=>{const d=[],c=[],u=j(),h=G.hasRow(t,l);let g=!h;N(s,(e=>{const[s,n,o]=i(t,l,e);w(d,n),w(c,o),g||=s})),B(e,(e=>{const[s,,n]=i(t,l,e);(g||s)&&H(u,e,[n])})),g&&o(V(n,d,void 0,(([,e,s])=>{if(O(e,l),J(e))return K.delRow(t,s),1})),u,l,1),h&&o(V(n,c,(()=>{const e={};return N(s,(s=>e[s]=G.getCell(t,l,s))),[j(),X(),K.addRow(t,e,1),e]}),(([,e])=>{Y(e,l)})),u,l)})))}C(t,e,G);const U=(n,o,r,a)=>{const l=t=>e.getCell(o,r,t);h(a,(s=>{const[o,,r,a,i]=P(A,s),d=r?.(l,n),[c,u]=P(i,n)??[];d!=c&&(y(u)||L(t,u),H(i,n,y(d)?null:[d,...g(t,1,e.addRowListener(o,d,(()=>U(n,o,d,a))))]))})),(n=>{const o=(t,o)=>e.getCell(...y(o)?[s,n,t]:t===s?[s,n,o]:[P(A,t)?.[0],P(P(A,t)?.[4],n)?.[0],o]);G.transaction((()=>i(c,(e=>e(o)))?B(x,((e,s)=>ue(G,t,n,e,s(o,n)))):G.delRow(t,n)))})(n)},{3:Z}=P(A,null);return G.transaction((()=>g(t,1,e.addRowListener(s,null,((n,o,r)=>{e.hasRow(s,r)?U(r,s,r,Z):(G.delRow(t,r),N(A,(({4:e})=>E(P(e,r),(([,s])=>{L(t,s),H(e,r)})))))}))))),S},delQueryDefinition:e=>(B(P(b,e),((e,t)=>N(t,(t=>e.delListener(t))))),l(e),S),getStore:t,getQueryIds:s,forEachQuery:n,hasQuery:o,getTableId:r,getResultTable:e=>v.getTable(e),getResultRowIds:e=>v.getRowIds(e),getResultRow:(e,t)=>v.getRow(e,t),getResultCellIds:(e,t)=>v.getCellIds(e,t),getResultCell:(e,t,s)=>v.getCell(e,t,s),hasResultTable:e=>v.hasTable(e),hasResultRow:(e,t)=>v.hasRow(e,t),hasResultCell:(e,t,s)=>v.hasCell(e,t,s),forEachResultTable:e=>v.forEachTable(e),forEachResultRow:(e,t)=>v.forEachRow(e,t),forEachResultCell:(e,t,s)=>v.forEachCell(e,t,s),addResultTableListener:(e,t)=>v.addTableListener(e,((e,...s)=>t(S,...s))),addResultRowIdsListener:(e,t,s)=>v.addRowIdsListener(e,((e,...s)=>t(S,...s)),s),addResultRowListener:(e,t,s)=>v.addRowListener(e,t,((e,...t)=>s(S,...t))),addResultCellIdsListener:(e,t,s)=>v.addCellIdsListener(e,t,((e,...t)=>s(S,...t))),addResultCellListener:(e,t,s,n)=>v.addCellListener(e,t,s,((e,...t)=>n(S,...t))),delListener:e=>(v.delListener(e),S),destroy:c,getListenerStats:()=>{const{tables:e,tableIds:t,transaction:s,...n}=v.getListenerStats();return n}};return re(S)})),me=_((e=>{const t=j(),s=j(),n=j(),o=j(),[r,a,l,i,d,c,,,u,h,g]=Z(e,(()=>[j(),j(),j(),j()]),(e=>y(e)?void 0:e+"")),[f,R,L]=te((()=>v)),w=(e,t,s)=>E(c(e),(([n,,o])=>{if(!F(o,t)){const r=X();if(d(e)!=I(e))Y(r,t);else{let e=t;for(;!y(e)&&!F(r,e);)Y(r,e),e=P(n,e)}if(s)return r;H(o,t,r)}return P(o,t)})),T=(e,t)=>E(c(e),(([,,e])=>H(e,t))),I=e=>P(t,e),v={setRelationshipDefinition:(e,r,a,l)=>(H(t,e,a),u(e,r,((t,r)=>{const a=X(),l=X(),i=X(),[d,u]=c(e);N(r,(([t,s],n)=>{y(t)||(Y(l,t),E(P(u,t),(e=>{O(e,n),J(e)&&H(u,t)}))),y(s)||(Y(l,s),F(u,s)||H(u,s,X()),Y(P(u,s),n)),Y(a,n),H(d,n,s),B(P(o,e),(t=>{F(w(e,t),n)&&Y(i,t)}))})),t(),N(a,(t=>R(s,[e,t]))),N(l,(t=>R(n,[e,t]))),N(i,(t=>{T(e,t),R(o,[e,t])}))}),$(l)),v),delRelationshipDefinition:e=>(H(t,e),h(e),v),getStore:r,getRelationshipIds:a,forEachRelationship:t=>l((s=>t(s,(t=>e.forEachRow(d(s),t))))),hasRelationship:i,getLocalTableId:d,getRemoteTableId:I,getRemoteRowId:(e,t)=>P(c(e)?.[0],t),getLocalRowIds:(e,t)=>Q(P(c(e)?.[1],t)),getLinkedRowIds:(e,t)=>y(c(e))?[t]:Q(w(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)=>(w(e,t),f(s,o,[e,t])),delListener:e=>(T(...L(e)),v),destroy:g,getListenerStats:()=>({})};return re(v)})),ke=e=>[e,e],Me=e=>0==((e,t=x)=>t(e[0])+t(e[1]))(e),De=()=>[j(),j()],xe=()=>[De(),De()],Ae=(e,t,s,n=H)=>{const o=(r=W(e),a=e=>!ae(t,e),r.filter(a));var r,a;return h(ne(t),(n=>s(e,n,t[n]))),h(o,(t=>n(e,t))),e},Fe=(e,t,s)=>y(e)||!(e=>S(e,se)&&e.constructor==se)(e)||de(e)||oe(e)?(s?.(),!1):(ie(e,((s,n)=>{t(s,n)||le(e,n)})),!de(e)),Je=(e,t,s)=>H(e,t,P(e,t)==-s?void 0:s),Qe=()=>{let e,t,s=0,n=0;const o=j(),a=j(),i=j(),c=j(),u=j(),g=j(),f=j(),R=j(),L=De(),T=xe(),b=De(),p=xe(),C=De(),S=xe(),M=De(),x=De(),A=De(),[Q,O,V,Z,$]=te((()=>Ze)),_=(t,s)=>(!e||F(g,s)||ye(s))&&Fe(t,((e,t)=>ee(s,t,e)),(()=>ye(s))),ee=(e,t,s,n)=>Fe(n?s:ne(s,e,t),((n,o)=>E(se(e,t,o,n),(e=>(s[o]=e,!0)),(()=>!1))),(()=>ye(e,t))),se=(t,s,n,o)=>e?E(P(P(g,t),n),(e=>ce(o)!=e.type?ye(t,s,n,o,e.default):o),(()=>ye(t,s,n,o))):y(ce(o))?ye(t,s,n,o):o,ne=(e,t,s)=>(E(P(f,t),(([n,o])=>{N(n,((t,s)=>{ae(e,s)||(e[s]=t)})),N(o,(n=>{ae(e,n)||ye(t,s,n)}))})),e),oe=e=>Ae(g,e,((e,t,s)=>{const n=j(),o=X();Ae(q(g,t,j),s,((e,t,s)=>{H(e,t,s),E(s.default,(e=>H(n,t,e)),(()=>Y(o,t)))})),H(f,t,[n,o])}),((e,t)=>{H(g,t),H(f,t)})),ue=e=>Ae(R,e,((e,t,s)=>he(t,s)),((e,t)=>Te(t))),he=(e,t)=>Ae(q(R,e,(()=>(be(e,1),j()))),t,((t,s,n)=>ge(e,t,s,n)),((t,s)=>Ie(e,t,s))),ge=(e,t,s,n,o)=>Ae(q(t,s,(()=>(pe(e,s,1),j()))),n,((t,n,o)=>fe(e,s,t,n,o)),((n,r)=>ve(e,t,s,n,r,o))),fe=(e,t,s,n,o)=>{F(s,n)||Ce(e,t,n,1);const r=P(s,n);o!==r&&(Se(e,t,n,r,o),H(s,n,o))},Re=(e,t,s,n,o)=>E(P(t,s),(t=>fe(e,s,t,n,o)),(()=>ge(e,t,s,ne({[n]:o},e,s)))),Le=e=>{const t=""+s++;return F(e,t)?Le(e):t},we=e=>P(R,e)??he(e,{}),Te=e=>he(e,{}),Ie=(e,t,s)=>ge(e,t,s,{},!0),ve=(e,t,s,n,o,r)=>{const a=P(P(f,e)?.[0],o);if(!y(a)&&!r)return fe(e,s,n,o,a);const l=t=>{Se(e,s,t,P(n,t)),Ce(e,s,t,-1),H(n,t)};y(a)?l(o):B(n,l),J(n)&&(pe(e,s,-1),J(H(t,s))&&(be(e,-1),H(R,e)))},be=(e,t)=>Je(J(o)?H(o,null,Z(T[0][1])||Z(T[1][1])?We():0):o,e,t),pe=(e,t,s)=>Je(q(a,e,(()=>j([[null,Z(p[0][1],[e])||Z(p[1][1],[e])?Pe(e):0]]))),t,s),Ce=(e,t,s,n)=>Je(q(q(i,e,j),t,(()=>j([[null,Z(S[0][1],[e,t])||Z(S[1][1],[e,t])?Be(e,t):0]]))),s,n),Se=(e,t,s,n,o)=>q(q(q(c,e,j),t,j),s,(()=>[n,0]))[1]=o,ye=(e,t,s,n,o)=>(w(q(q(q(u,e,j),t,j),s,(()=>[])),n),o),Ee=(e,t,s)=>E(P(P(P(c,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...ke(He(e,t,s))])),me=e=>J(u)||J(x[e])?0:N(e?K(u,U):u,((t,s)=>N(t,((t,n)=>N(t,((t,o)=>O(x[e],[s,n,o],t))))))),ze=(e,t,s,n)=>{D(t)>1?(O(e[0],n),O(e[1],n)):J(t)||0==P(t,null)||d(P(t,null),s(...n??[]))||O(e[1],n)},Ne=e=>{const t=Me(S[e])&&Me(p[e])&&Me(T[e]),s=J(M[e])&&J(C[e])&&J(b[e])&&J(L[e]);if(!t||!s){const n=e?[K(o),U(a),K(i,U),K(c,U)]:[o,a,i,c];if(t||(N(n[2],((t,s)=>N(t,((t,n)=>ze(S[e],t,Be,[s,n]))))),N(n[1],((t,s)=>ze(p[e],t,Pe,[s]))),ze(T[e],n[0],We)),!s){let t;N(n[3],((s,n)=>{let o;N(s,((s,r)=>{let a;N(s,(([s,l],i)=>{l!==s&&(O(M[e],[n,r,i],l,s,Ee),t=o=a=1)})),a&&O(C[e],[n,r],Ee)})),o&&O(b[e],[n],Ee)})),t&&O(L[e],void 0,Ee)}}},Oe=e=>(Ve(e),Ze),je=()=>G(R,(e=>G(e,G))),We=()=>W(R),Pe=e=>W(P(R,e)),Be=(e,t)=>W(P(P(R,e),t)),He=(e,t,s)=>P(P(P(R,e),t),s),qe=e=>Oe((()=>(e=>Fe(e,_,ye))(e)?ue(e):0)),Ge=(e,t,s,n)=>Oe((()=>E(se(e,t,s,k(n)?n(He(e,t,s)):n),(n=>Re(e,we(e),t,s,n))))),Ke=()=>Oe((()=>ue({}))),Ue=(e,t,s,n)=>Oe((()=>E(P(R,e),(o=>E(P(o,t),(r=>F(r,s)?ve(e,o,t,r,s,n):0)))))),Ve=(e,t)=>{if(-1==n)return;Xe();const s=e?.();return Ye(t),s},Xe=()=>(n++,Ze),Ye=e=>(n>0&&(n--,0==n&&(t=!J(c),n=1,me(1),t&&Ne(1),n=-1,e?.(G(c,(e=>G(e,(e=>G(e,(e=>[...e]),(([e,t])=>e===t))),de)),de),G(u,(e=>G(e,G))))&&(n=1,N(c,((e,t)=>N(e,((e,s)=>N(e,(([e],n)=>y(e)?Ue(t,s,n,!0):Ge(t,s,n,e))))))),n=-1,t=!1),O(A[0],void 0,t),me(0),t&&Ne(0),O(A[1],void 0,t),n=0,h([c,u,o,a,i],z))),Ze),Ze={getTables:je,getTableIds:We,getTable:e=>G(P(R,e),G),getRowIds:Pe,getRow:(e,t)=>G(P(P(R,e),t)),getCellIds:Be,getCell:He,hasTables:()=>!J(R),hasTable:e=>F(R,e),hasRow:(e,t)=>F(P(R,e),t),hasCell:(e,t,s)=>F(P(P(R,e),t),s),getJson:()=>I(R),getSchemaJson:()=>I(g),setTables:qe,setTable:(e,t)=>Oe((()=>_(t,e)?he(e,t):0)),setRow:(e,t,s)=>Oe((()=>ee(e,t,s)?ge(e,we(e),t,s):0)),addRow:(e,t,s)=>Ve((()=>{const n=ee(e,void 0,t),o=n||s?Le(P(R,e)):void 0;return n&&ge(e,we(e),o,t),o})),setPartialRow:(e,t,s)=>Oe((()=>{if(ee(e,t,s,1)){const n=we(e);ie(s,((s,o)=>Re(e,n,t,o,s)))}})),setCell:Ge,setJson:e=>{try{"{}"===e?Ke():qe(v(e))}catch{}return Ze},setSchema:t=>Oe((()=>{if((e=(e=>Fe(e,(e=>Fe(e,(e=>{if(!Fe(e,((e,t)=>l(["type","default"],t))))return!1;const t=e.type;return!(!m(t)&&t!=r||(ce(e.default)!=t&&le(e,"default"),0))})))))(t))&&(oe(t),!J(R))){const e=je();Ke(),qe(e)}})),delTables:Ke,delTable:e=>Oe((()=>F(R,e)?Te(e):0)),delRow:(e,t)=>Oe((()=>E(P(R,e),(s=>F(s,t)?Ie(e,s,t):0)))),delCell:Ue,delSchema:()=>Oe((()=>{oe({}),e=!1})),transaction:Ve,startTransaction:Xe,finishTransaction:Ye,forEachTable:e=>N(R,((t,s)=>e(s,(e=>N(t,((t,s)=>e(s,(e=>B(t,e))))))))),forEachRow:(e,t)=>N(P(R,e),((e,s)=>t(s,(t=>B(e,t))))),forEachCell:(e,t,s)=>B(P(P(R,e),t),s),addTablesListener:(e,t)=>Q(e,L[t?1:0]),addTableIdsListener:(e,t,s)=>Q(e,T[s?1:0][t?1:0]),addTableListener:(e,t,s)=>Q(t,b[s?1:0],[e]),addRowIdsListener:(e,t,s,n)=>Q(t,p[n?1:0][s?1:0],[e]),addRowListener:(e,t,s,n)=>Q(s,C[n?1:0],[e,t]),addCellIdsListener:(e,t,s,n,o)=>Q(s,S[o?1:0][n?1:0],[e,t]),addCellListener:(e,t,s,n,o)=>Q(n,M[o?1:0],[e,t,s]),addInvalidCellListener:(e,t,s,n,o)=>Q(n,x[o?1:0],[e,t,s]),addWillFinishTransactionListener:e=>Q(e,A[0]),addDidFinishTransactionListener:e=>Q(e,A[1]),callListener:e=>($(e,[We,Pe,Be],(e=>y(e[2])?[]:ke(He(...e)))),Ze),delListener:e=>(V(e),Ze),getListenerStats:()=>({}),createStore:Qe};return re(Ze)};export{he as createCheckpoints,Te as createCustomPersister,Ce as createFilePersister,fe as createIndexes,be as createLocalPersister,we as createMetrics,Ee as createQueries,me as createRelationships,ye as createRemotePersister,pe as createSessionPersister,Qe as createStore,ge as defaultSorter};
|
package/lib/tinybase.js.gz
CHANGED
|
Binary file
|