tinybase 1.3.6 → 2.0.0-beta.2

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.
Files changed (61) hide show
  1. package/lib/checkpoints.d.ts +4 -3
  2. package/lib/checkpoints.js +1 -1
  3. package/lib/checkpoints.js.gz +0 -0
  4. package/lib/debug/checkpoints.d.ts +4 -3
  5. package/lib/debug/checkpoints.js +69 -56
  6. package/lib/debug/indexes.d.ts +4 -2
  7. package/lib/debug/indexes.js +106 -69
  8. package/lib/debug/metrics.d.ts +1 -1
  9. package/lib/debug/metrics.js +187 -131
  10. package/lib/debug/persisters.d.ts +6 -0
  11. package/lib/debug/persisters.js +2 -1
  12. package/lib/debug/queries.d.ts +3251 -0
  13. package/lib/debug/queries.js +900 -0
  14. package/lib/debug/relationships.d.ts +12 -10
  15. package/lib/debug/relationships.js +104 -68
  16. package/lib/debug/store.d.ts +415 -74
  17. package/lib/debug/store.js +295 -120
  18. package/lib/debug/tinybase.d.ts +1 -0
  19. package/lib/debug/tinybase.js +985 -176
  20. package/lib/debug/ui-react.d.ts +4325 -1754
  21. package/lib/debug/ui-react.js +413 -85
  22. package/lib/indexes.d.ts +4 -2
  23. package/lib/indexes.js +1 -1
  24. package/lib/indexes.js.gz +0 -0
  25. package/lib/metrics.d.ts +1 -1
  26. package/lib/metrics.js +1 -1
  27. package/lib/metrics.js.gz +0 -0
  28. package/lib/persisters.d.ts +6 -0
  29. package/lib/queries.d.ts +3251 -0
  30. package/lib/queries.js +1 -0
  31. package/lib/queries.js.gz +0 -0
  32. package/lib/relationships.d.ts +12 -10
  33. package/lib/relationships.js +1 -1
  34. package/lib/relationships.js.gz +0 -0
  35. package/lib/store.d.ts +415 -74
  36. package/lib/store.js +1 -1
  37. package/lib/store.js.gz +0 -0
  38. package/lib/tinybase.d.ts +1 -0
  39. package/lib/tinybase.js +1 -1
  40. package/lib/tinybase.js.gz +0 -0
  41. package/lib/ui-react.d.ts +4325 -1754
  42. package/lib/ui-react.js +1 -1
  43. package/lib/ui-react.js.gz +0 -0
  44. package/lib/umd/checkpoints.js +1 -1
  45. package/lib/umd/checkpoints.js.gz +0 -0
  46. package/lib/umd/indexes.js +1 -1
  47. package/lib/umd/indexes.js.gz +0 -0
  48. package/lib/umd/metrics.js +1 -1
  49. package/lib/umd/metrics.js.gz +0 -0
  50. package/lib/umd/queries.js +1 -0
  51. package/lib/umd/queries.js.gz +0 -0
  52. package/lib/umd/relationships.js +1 -1
  53. package/lib/umd/relationships.js.gz +0 -0
  54. package/lib/umd/store.js +1 -1
  55. package/lib/umd/store.js.gz +0 -0
  56. package/lib/umd/tinybase.js +1 -1
  57. package/lib/umd/tinybase.js.gz +0 -0
  58. package/lib/umd/ui-react.js +1 -1
  59. package/lib/umd/ui-react.js.gz +0 -0
  60. package/package.json +4 -4
  61. package/readme.md +2 -2
package/lib/queries.js ADDED
@@ -0,0 +1 @@
1
+ const e=(e,t)=>e.every(t),t=(e,t)=>e.forEach(t),s=e=>o(e,((e,t)=>e+t),0),n=e=>e.length,l=e=>0==n(e),o=(e,t,s)=>e.reduce(t,s),r=(e,...t)=>e.push(...t),a=e=>typeof e,d=a(""),i=a(!0),c=a(0),u=a(a),R=Math.max,w=Math.min,h=isFinite,g=e=>null==e,L=(e,t,s)=>g(e)?s?.():t(e),f=e=>a(e)==u,T=()=>{},b=e=>e.size,C=(e,t)=>e?.has(t)??!1,I=e=>g(e)||0==b(e),v=e=>[...e?.values()??[]],y=e=>e.clear(),E=(e,t)=>e?.forEach(t),S=(e,t)=>e?.delete(t),m=e=>new Map(e),p=e=>[...e?.keys()??[]],Q=(e,t)=>e?.get(t),x=(e,t)=>E(e,((e,s)=>t(s,e))),M=(e,t,s)=>g(s)?(S(e,t),e):e?.set(t,s),k=(e,t,s)=>(C(e,t)||M(e,t,s()),Q(e,t)),D=(e,t,s,l,o=0)=>L((s?k:Q)(e,t[o],o>n(t)-2?s:m),(r=>{if(o>n(t)-2)return l?.(r)&&M(e,t[o]),r;const a=D(r,t,s,l,o+1);return I(r)&&M(e,t[o]),a})),F=e=>new Set(e),j=(e,t)=>e?.add(t),z=m([["avg",[(e,t)=>s(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=>R(...e),(e,t)=>R(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:R(t,e)]],["min",[e=>w(...e),(e,t)=>w(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:w(t,e)]],["sum",[e=>s(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),W=e=>{const t=a(e);return(e=>e==d||e==i)(t)||t==c&&h(e)?t:void 0},O=Object,q=O.keys,A=O.freeze,B=(e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))})((s=>{const o=s.createStore,[a,d,i,c,u,,,R,,w,h,O,B]=((e,s,n)=>{const o=e.hasRow,r=m(),a=m(),d=m(),i=m(),c=m(),u=(s,n,...l)=>{const o=k(c,s,F);return t(l,(t=>j(o,t)&&n&&e.callListener(t))),l},R=(s,...n)=>L(Q(c,s),(o=>{t(l(n)?v(o):n,(t=>{e.delListener(t),S(o,t)})),I(o)&&M(c,s)})),w=(e,t)=>{M(r,e,t),C(a,e)||(M(a,e,s()),M(d,e,m()),M(i,e,m()))},h=e=>{M(r,e),M(a,e),M(d,e),M(i,e),R(e)};return[()=>e,()=>p(r),e=>x(a,e),e=>C(a,e),e=>Q(r,e),e=>Q(a,e),(e,t)=>M(a,e,t),w,(s,l,r,a,c)=>{w(s,l);const h=m(),L=m(),f=Q(d,s),T=Q(i,s),b=t=>{const s=s=>e.getCell(l,t,s),r=Q(f,t),d=o(l,t)?n(a(s,t)):void 0;if(r!=d&&M(h,t,[r,d]),!g(c)){const e=Q(T,t),n=o(l,t)?c(s,t):void 0;e!=n&&M(L,t,n)}},I=e=>{r((()=>{E(h,(([,e],t)=>M(f,t,e))),E(L,((e,t)=>M(T,t,e)))}),h,L,f,T,e),y(h),y(L)};x(f,b),e.hasTable(l)&&t(e.getRowIds(l),(e=>{C(f,e)||b(e)})),I(!0),R(s),u(s,0,e.addRowListener(l,null,((e,t,s)=>b(s))),e.addTableListener(l,(()=>I())))},h,()=>x(c,h),u,R]})(s,(()=>!0),T),G=o(),H=o(),J=o(),K=m(),N=(e,s,...n)=>t(n,(t=>j(k(k(K,s,m),e,F),t))),P=e=>t([J,H,G],(t=>t.delTable(e))),U=(e,t,s)=>N(t,e,t.addWillFinishTransactionListener(s.startTransaction),t.addDidFinishTransactionListener((()=>s.finishTransaction()))),V={setQueryDefinition:(o,a,d)=>{let i;R(o,a),P(o);const c=[],u=[[null,[a,null,null,[],m()]]],w=[],h=[],T=[],A=[];d({select:(e,t)=>{const s=f(e)?[n(c)+"",e]:[g(t)?e:t,s=>s(e,t)];return r(c,s),{as:e=>s[0]=e}},join:(e,t,s)=>{const n=g(s)||f(t)?null:t,l=g(n)?t:s,o=[e,[e,n,f(l)?l:e=>e(l),[],m()]];return r(u,o),{as:e=>o[0]=e}},where:(e,t,s)=>r(w,f(e)?e:g(s)?s=>s(e)===t:n=>n(e,t)===s),group:(e,t,s,n,l)=>{const o=[e,[e,f(t)?[t,s,n,l]:Q(z,t)??[(e,t)=>t]]];return r(h,o),{as:e=>o[0]=e}},having:(e,t)=>r(T,f(e)?e:s=>s(e)===t),order:(e,t)=>r(A,[f(e)?e:t=>t(e)??0,t]),limit:(e,t)=>{i=g(t)?[0,e]:[e,t]}});const K=m(c);if(I(K))return V;const X=m(u);x(X,((e,[,t])=>L(Q(X,t),(({3:t})=>g(e)?0:r(t,e)))));const Y=m(h);let Z=G,$=H;if(l(A)&&g(i))$=J;else{U(o,$,J);const s=(e,t)=>{const s=Q(r,e)??[],n=Q(r,t)??[],l=A.findIndex(((e,t)=>s[t]!==n[t]));return l<0?0:(o=s[l],a=n[l],(o<a?-1:1)*(A[l][1]?-1:1));var o,a},r=m(),a=m();N($,o,l(A)?$.addRowIdsListener(o,(()=>y(a))):$.addRowListener(o,null,((t,s,l)=>{let d=null;if($.hasRow(o,l)){const t=Q(r,l)??[],s=$.getRow(o,l),R=e=>s[e];if(u=([e])=>e(R,l),d=A.map(u),c=d,n(i=t)===n(c)&&e(i,((e,t)=>c[t]===e)))return void(Q(a,l)&&J.setRow(o,l,s))}var i,c,u;M(r,l,d),y(a)})),$.addTableListener(o,(()=>{if(I(a)&&(J.delTable(o),$.hasTable(o))){const l=$.getTable(o);t((e=q(l),n=s,e.sort(n)),(e=>M(a,e,0))),t(L(i,(([e,t])=>((e,t,s)=>e.slice(t,s))(p(a),e,e+t)),(()=>p(a))),(e=>{J.setRow(o,e,l[e]),M(a,e,1)}))}var e,n})))}if(I(Y)&&l(T))Z=$;else{U(o,Z,$);const t=m();x(Y,((e,[s,n])=>j(k(t,s,F),[e,n])));const s=F();x(K,(e=>C(t,e)?0:j(s,e)));const n=m(),l=(s,n,l,r)=>L(s,(([s,a,d,i])=>{x(n,((e,[n])=>{const o=k(s,e,m),a=Q(o,l),d=r?void 0:n;if(a!==d){const s=F([[a,d]]),n=b(o);M(o,l,d),E(Q(t,e),(([e,t])=>{const l=((e,t,s,n,l,o=!1)=>{if(I(s))return;const[r,a,d,i]=l;return o||=g(e),E(n,(([s,n])=>{o||(e=g(s)?a?.(e,n,t++):g(n)?d?.(e,s,t--):i?.(e,n,s,t),o||=g(e))})),o?r(v(s),b(s)):e})(i[e],n,o,s,t);i[e]=g(W(l))?null:l}))}})),(I(a)||!e(T,(e=>e((e=>i[e]))))?$.delRow:$.setRow)(o,d,i)}));N(Z,o,Z.addRowListener(o,null,((e,a,d,i)=>{const c=[],u=[],R=m(),w=Z.hasRow(o,d);let h=!w;E(s,(e=>{const[t,s,n]=i(o,d,e);r(c,s),r(u,n),h||=t})),x(t,(e=>{const[t,,s]=i(o,d,e);(h||t)&&M(R,e,[s])})),h&&l(D(n,c,void 0,(([,e,t])=>{if(S(e,d),I(e))return $.delRow(o,t),1})),R,d,1),w&&l(D(n,u,(()=>{const e={};return E(s,(t=>e[t]=Z.getCell(o,d,t))),[m(),F(),$.addRow(o,e,1),e]}),(([,e])=>{j(e,d)})),R,d)})))}U(o,s,Z);const _=t=>{const n=(e,n)=>s.getCell(...g(n)?[a,t,e]:e===a?[a,t,n]:[Q(X,e)?.[0],Q(Q(X,e)?.[4],t)?.[0],n]);Z.transaction((()=>e(w,(e=>e(n)))?x(K,((e,s)=>((e,t,s,n,l)=>g(l)?e.delCell(t,s,n,!0):e.setCell(t,s,n,l))(Z,o,t,e,s(n,t)))):Z.delRow(o,t)))},ee=(e,n,l,r)=>{const a=e=>s.getCell(n,l,e);t(r,(t=>{const[n,,l,r,d]=Q(X,t),i=l?.(a,e),[c,u]=Q(d,e)??[];i!=c&&(g(u)||B(o,u),M(d,e,g(i)?null:[i,...O(o,1,s.addRowListener(n,i,(()=>ee(e,n,i,r))))]))})),_(e)},{3:te}=Q(X,null);return Z.transaction((()=>O(o,1,s.addRowListener(a,null,((e,t,n)=>{s.hasRow(a,n)?ee(n,a,n,te):(Z.delRow(o,n),E(X,(({4:e})=>L(Q(e,n),(([,t])=>{B(o,t),M(e,n)})))))}))))),V},delQueryDefinition:e=>(x(Q(K,e),((e,t)=>E(t,(t=>e.delListener(t))))),P(e),w(e),V),getStore:a,getQueryIds:d,forEachQuery:i,hasQuery:c,getTableId:u,getResultTable:e=>J.getTable(e),getResultRowIds:e=>J.getRowIds(e),getResultSortedRowIds:(e,t,s)=>J.getSortedRowIds(e,t,s),getResultRow:(e,t)=>J.getRow(e,t),getResultCellIds:(e,t)=>J.getCellIds(e,t),getResultCell:(e,t,s)=>J.getCell(e,t,s),hasResultTable:e=>J.hasTable(e),hasResultRow:(e,t)=>J.hasRow(e,t),hasResultCell:(e,t,s)=>J.hasCell(e,t,s),forEachResultTable:e=>J.forEachTable(e),forEachResultRow:(e,t)=>J.forEachRow(e,t),forEachResultCell:(e,t,s)=>J.forEachCell(e,t,s),addResultTableListener:(e,t)=>J.addTableListener(e,((e,...s)=>t(V,...s))),addResultRowIdsListener:(e,t,s)=>J.addRowIdsListener(e,((e,...s)=>t(V,...s)),s),addResultSortedRowIdsListener:(e,t,s,n)=>J.addSortedRowIdsListener(e,t,s,((e,...t)=>n(V,...t))),addResultRowListener:(e,t,s)=>J.addRowListener(e,t,((e,...t)=>s(V,...t))),addResultCellIdsListener:(e,t,s)=>J.addCellIdsListener(e,t,((e,...t)=>s(V,...t))),addResultCellListener:(e,t,s,n)=>J.addCellListener(e,t,s,((e,...t)=>n(V,...t))),delListener:e=>(J.delListener(e),V),destroy:h,getListenerStats:()=>{const{tables:e,tableIds:t,transaction:s,...n}=J.getListenerStats();return n}};return A(V)}));export{B as createQueries};
Binary file
@@ -137,17 +137,18 @@ export type LinkedRowIdsListener = (
137
137
  */
138
138
  export type RelationshipsListenerStats = {
139
139
  /**
140
- * The number of RemoteRowIdListeners registered with the Relationships
141
- * object.
140
+ * The number of RemoteRowIdListener functions registered with the
141
+ * Relationships object.
142
142
  */
143
143
  remoteRowId?: number;
144
144
  /**
145
- * The number of LocalRowIdsListeners registered with the Relationships
146
- * object.
145
+ * The number of LocalRowIdsListener functions registered with the
146
+ * Relationships object.
147
147
  */
148
148
  localRowIds?: number;
149
149
  /**
150
- * The number of LinkedRowIds registered with the Relationships object.
150
+ * The number of LinkedRowId functions registered with the Relationships
151
+ * object.
151
152
  */
152
153
  linkedRowIds?: number;
153
154
  };
@@ -190,6 +191,7 @@ export type RelationshipsListenerStats = {
190
191
  * });
191
192
  *
192
193
  * const relationships = createRelationships(store);
194
+ *
193
195
  * // A local/remote table relationship:
194
196
  * relationships.setRelationshipDefinition(
195
197
  * 'petSpecies', // relationshipId
@@ -197,6 +199,11 @@ export type RelationshipsListenerStats = {
197
199
  * 'species', // remoteTableId to link to
198
200
  * 'species', // cellId containing remote key
199
201
  * );
202
+ * console.log(relationships.getRemoteRowId('petSpecies', 'fido'));
203
+ * // -> 'dog'
204
+ * console.log(relationships.getLocalRowIds('petSpecies', 'dog'));
205
+ * // -> ['fido', 'cujo']
206
+ *
200
207
  * // A linked list relationship:
201
208
  * relationships.setRelationshipDefinition(
202
209
  * 'petSequence', // relationshipId
@@ -204,11 +211,6 @@ export type RelationshipsListenerStats = {
204
211
  * 'pets', // the same remoteTableId to link within
205
212
  * 'next', // cellId containing link key
206
213
  * );
207
- *
208
- * console.log(relationships.getRemoteRowId('petSpecies', 'fido'));
209
- * // -> 'dog'
210
- * console.log(relationships.getLocalRowIds('petSpecies', 'dog'));
211
- * // -> ['fido', 'cujo']
212
214
  * console.log(relationships.getLinkedRowIds('petSequence', 'fido'));
213
215
  * // -> ['fido', 'felix', 'cujo']
214
216
  *
@@ -1 +1 @@
1
- const e=e=>typeof e,t=e(""),o=(e,t)=>e.forEach(t),s=e=>e.length,n=e=>0==s(e),i=e=>e.slice(1),r=e=>null==e,a=(e,t,o)=>r(e)?o?.():t(e),d=(e,t)=>e?.has(t)??!1,l=e=>[...e?.values()??[]],c=e=>e.clear(),R=(e,t)=>e?.forEach(t),h=(e,t)=>e?.delete(t),f=e=>new Map(e),g=(e,t)=>e?.get(t),u=(e,t)=>R(e,((e,o)=>t(o,e))),w=(e,t,o)=>r(o)?(h(e,t),e):e?.set(t,o),L=(e,t,o)=>(d(e,t)||w(e,t,o()),g(e,t)),p=e=>new Set(e),I=(e,t)=>e?.add(t),b=(o,s)=>e(o)==t?e=>e(o):o??(()=>s??""),v=(e,t,o)=>s(o)<2?I(n(o)?e:L(e,o[0],p),t):v(L(e,o[0],f),t,i(o)),k=e=>{const t=(s,r,...d)=>a(s,(s=>n(d)?e(s,r):o([d[0],null],(e=>t(g(s,e),r,...i(d))))));return t},E=Object.freeze,T=(e=>{const t=new WeakMap;return o=>(t.has(o)||t.set(o,e(o)),t.get(o))})((e=>{const t=f(),n=f(),i=f(),L=f(),[T,m,y,S,z,D,,M,j,x]=((e,t,s)=>{const n=e.hasRow,i=f(),l=f(),h=f(),L=f(),I=f(),b=t=>a(g(I,t),(o=>{R(o,e.delListener),w(I,t)})),v=e=>{w(i,e),w(l,e),w(h,e),w(L,e),b(e)};return[()=>e,()=>[...i?.keys()??[]],e=>u(l,e),e=>d(l,e),e=>g(i,e),e=>g(l,e),(e,t)=>w(l,e,t),(a,v,k,E,T)=>{const m=f(),y=f();w(i,a,v),d(l,a)||(w(l,a,t()),w(h,a,f()),w(L,a,f()));const S=g(h,a),z=g(L,a),D=t=>{const o=o=>e.getCell(v,t,o),i=g(S,t),a=n(v,t)?s(E(o,t)):void 0;if(i!=a&&w(m,t,[i,a]),!r(T)){const e=g(z,t),s=n(v,t)?T(o,t):void 0;e!=s&&w(y,t,s)}},M=e=>{k((()=>{R(m,(([,e],t)=>w(S,t,e))),R(y,((e,t)=>w(z,t,e)))}),m,y,S,z,e),c(m),c(y)};u(S,D),e.hasTable(v)&&o(e.getRowIds(v),(e=>{d(S,e)||D(e)})),M(!0),b(a),w(I,a,p([e.addRowListener(v,null,((e,t,o)=>D(o))),e.addTableListener(v,(()=>M()))]))},v,()=>u(I,v)]})(e,(()=>[f(),f(),f(),f()]),(e=>r(e)?void 0:e+"")),[C,O,W]=(e=>{let t,n=0;const i=[],d=f();return[(o,s,r=[])=>{t??=e();const a=i.pop()??""+n++;return w(d,a,[o,s,r]),v(s,a,r),a},(e,o=[],...s)=>k(R)(e,(e=>a(g(d,e),(([e])=>e(t,...o,...s)))),...o),e=>a(g(d,e),(([,t,o])=>(k(h)(t,e,...o),w(d,e),s(i)<1e3&&i.push(e),o)),(()=>[])),(e,n,i)=>a(g(d,e),(([e,,a])=>{const d=(...l)=>{const c=s(l);c==s(a)?e(t,...l,...i(l)):r(a[c])?o(n[c](...l),(e=>d(...l,e))):d(...l,a[c])};d()}))]})((()=>F)),q=(e,t,o)=>a(D(e),(([s,,n])=>{if(!d(n,t)){const i=p();if(z(e)!=B(e))I(i,t);else{let e=t;for(;!r(e)&&!d(i,e);)I(i,e),e=g(s,e)}if(o)return i;w(n,t,i)}return g(n,t)})),A=(e,t)=>a(D(e),(([,,e])=>w(e,t))),B=e=>g(t,e),F={setRelationshipDefinition:(e,o,s,l)=>(w(t,e,s),M(e,o,((t,o)=>{const s=p(),l=p(),c=p(),[f,b]=D(e);R(o,(([t,o],n)=>{r(t)||(I(l,t),a(g(b,t),(e=>{var o;h(e,n),(r(o=e)||0==(e=>e.size)(o))&&w(b,t)}))),r(o)||(I(l,o),d(b,o)||w(b,o,p()),I(g(b,o),n)),I(s,n),w(f,n,o),u(g(L,e),(t=>{d(q(e,t),n)&&I(c,t)}))})),t(),R(s,(t=>O(n,[e,t]))),R(l,(t=>O(i,[e,t]))),R(c,(t=>{A(e,t),O(L,[e,t])}))}),b(l)),F),delRelationshipDefinition:e=>(w(t,e),j(e),F),getStore:T,getRelationshipIds:m,forEachRelationship:t=>y((o=>t(o,(t=>e.forEachRow(z(o),t))))),hasRelationship:S,getLocalTableId:z,getRemoteTableId:B,getRemoteRowId:(e,t)=>g(D(e)?.[0],t),getLocalRowIds:(e,t)=>l(g(D(e)?.[1],t)),getLinkedRowIds:(e,t)=>r(D(e))?[t]:l(q(e,t,!0)),addRemoteRowIdListener:(e,t,o)=>C(o,n,[e,t]),addLocalRowIdsListener:(e,t,o)=>C(o,i,[e,t]),addLinkedRowIdsListener:(e,t,o)=>(q(e,t),C(o,L,[e,t])),delListener:e=>(A(...W(e)),F),destroy:x,getListenerStats:()=>({})};return E(F)}));export{T as createRelationships};
1
+ const e=e=>typeof e,t=e(""),n=(e,t)=>e.forEach(t),o=e=>e.length,s=(e,...t)=>e.push(...t),r=e=>null==e,i=(e,t,n)=>r(e)?n?.():t(e),a=(e,t)=>e?.has(t)??!1,l=e=>r(e)||0==(e=>e.size)(e),d=e=>[...e?.values()??[]],c=e=>e.clear(),u=(e,t)=>e?.forEach(t),R=(e,t)=>e?.delete(t),h=e=>new Map(e),f=(e,t)=>e?.get(t),L=(e,t)=>u(e,((e,n)=>t(n,e))),g=(e,t,n)=>r(n)?(R(e,t),e):e?.set(t,n),w=(e,t,n)=>(a(e,t)||g(e,t,n()),f(e,t)),p=(e,t,n,s,r=0)=>i((n?w:f)(e,t[r],r>o(t)-2?n:h),(i=>{if(r>o(t)-2)return s?.(i)&&g(e,t[r]),i;const a=p(i,t,n,s,r+1);return l(i)&&g(e,t[r]),a})),I=e=>new Set(e),v=(e,t)=>e?.add(t),b=(e,t,s)=>{const p=e.hasRow,b=h(),k=h(),y=h(),E=h(),T=h(),m=(t,o,...s)=>{const r=w(T,t,I);return n(s,(t=>v(r,t)&&o&&e.callListener(t))),s},S=(t,...s)=>i(f(T,t),(r=>{n(0==o(s)?d(r):s,(t=>{e.delListener(t),R(r,t)})),l(r)&&g(T,t)})),z=(e,n)=>{g(b,e,n),a(k,e)||(g(k,e,t()),g(y,e,h()),g(E,e,h()))},D=e=>{g(b,e),g(k,e),g(y,e),g(E,e),S(e)};return[()=>e,()=>[...b?.keys()??[]],e=>L(k,e),e=>a(k,e),e=>f(b,e),e=>f(k,e),(e,t)=>g(k,e,t),z,(t,o,i,l,d)=>{z(t,o);const R=h(),w=h(),I=f(y,t),v=f(E,t),b=t=>{const n=n=>e.getCell(o,t,n),i=f(I,t),a=p(o,t)?s(l(n,t)):void 0;if(i!=a&&g(R,t,[i,a]),!r(d)){const e=f(v,t),s=p(o,t)?d(n,t):void 0;e!=s&&g(w,t,s)}},k=e=>{i((()=>{u(R,(([,e],t)=>g(I,t,e))),u(w,((e,t)=>g(v,t,e)))}),R,w,I,v,e),c(R),c(w)};L(I,b),e.hasTable(o)&&n(e.getRowIds(o),(e=>{a(I,e)||b(e)})),k(!0),S(t),m(t,0,e.addRowListener(o,null,((e,t,n)=>b(n))),e.addTableListener(o,(()=>k())))},D,()=>L(T,D),m,S]},k=(n,o)=>e(n)==t?e=>e(n):n??(()=>o??""),y=(e,t=[""])=>{const r=[],i=(e,a)=>a==o(t)?s(r,e):null===t[a]?u(e,(e=>i(e,a+1))):n([t[a],null],(t=>i(f(e,t),a+1)));return i(e,0),r},E=Object.freeze,T=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{const t=h(),c=h(),w=h(),T=h(),[m,S,z,D,M,j,,,x,C,O]=b(e,(()=>[h(),h(),h(),h()]),(e=>r(e)?void 0:e+"")),[W,q,A]=(e=>{let t,a=0;const d=[],c=h();return[(n,o,s)=>{t??=e();const r=d.pop()??""+a++;return g(c,r,[n,o,s]),v(p(o,s??[""],I),r),r},(e,o,...s)=>n(y(e,o),(e=>u(e,(e=>f(c,e)[0](t,...o??[],...s))))),e=>i(f(c,e),(([,t,n])=>(p(t,n??[""],void 0,(t=>(R(t,e),l(t)?1:0))),g(c,e),o(d)<1e3&&s(d,e),n))),(e,t)=>{return n=y(e,t),o=r,!n.every(o);var n,o},(e,s,a)=>i(f(c,e),(([e,,i=[]])=>{const l=(...d)=>{const c=o(d);c==o(i)?e(t,...d,...a(d)):r(i[c])?n(s[c](...d),(e=>l(...d,e))):l(...d,i[c])};l()}))]})((()=>H)),B=(e,t,n)=>i(j(e),(([o,,s])=>{if(!a(s,t)){const i=I();if(M(e)!=G(e))v(i,t);else{let e=t;for(;!r(e)&&!a(i,e);)v(i,e),e=f(o,e)}if(n)return i;g(s,t,i)}return f(s,t)})),F=(e,t)=>i(j(e),(([,,e])=>g(e,t))),G=e=>f(t,e),H={setRelationshipDefinition:(e,n,o,s)=>(g(t,e,o),x(e,n,((t,n)=>{const o=I(),s=I(),d=I(),[h,p]=j(e);u(n,(([t,n],c)=>{r(t)||(v(s,t),i(f(p,t),(e=>{R(e,c),l(e)&&g(p,t)}))),r(n)||(v(s,n),a(p,n)||g(p,n,I()),v(f(p,n),c)),v(o,c),g(h,c,n),L(f(T,e),(t=>{a(B(e,t),c)&&v(d,t)}))})),t(),u(o,(t=>q(c,[e,t]))),u(s,(t=>q(w,[e,t]))),u(d,(t=>{F(e,t),q(T,[e,t])}))}),k(s)),H),delRelationshipDefinition:e=>(g(t,e),C(e),H),getStore:m,getRelationshipIds:S,forEachRelationship:t=>z((n=>t(n,(t=>e.forEachRow(M(n),t))))),hasRelationship:D,getLocalTableId:M,getRemoteTableId:G,getRemoteRowId:(e,t)=>f(j(e)?.[0],t),getLocalRowIds:(e,t)=>d(f(j(e)?.[1],t)),getLinkedRowIds:(e,t)=>r(j(e))?[t]:d(B(e,t,!0)),addRemoteRowIdListener:(e,t,n)=>W(n,c,[e,t]),addLocalRowIdsListener:(e,t,n)=>W(n,w,[e,t]),addLinkedRowIdsListener:(e,t,n)=>(B(e,t),W(n,T,[e,t])),delListener:e=>(F(...A(e)),H),destroy:O,getListenerStats:()=>({})};return E(H)}));export{T as createRelationships};
Binary file