tinybase 1.0.1 → 1.0.5

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/metrics.d.ts CHANGED
@@ -22,6 +22,20 @@ import {Id, IdOrNull, Ids} from './common.d';
22
22
  */
23
23
  export type Metric = number;
24
24
 
25
+ /**
26
+ * The MetricCallback type describes a function that takes a Metric's Id and a
27
+ * callback to loop over each Row within it.
28
+ *
29
+ * A MetricCallback is provided when using the forEachMetric method, so that you
30
+ * can do something based on every Metric in the Metrics object. See that method
31
+ * for specific examples.
32
+ *
33
+ * @param metricId The Id of the Metric that the callback can operate on.
34
+ * @param metric The value of the Metric.
35
+ * @category Callback
36
+ */
37
+ export type MetricCallback = (metricId: Id, metric?: Metric) => void;
38
+
25
39
  /**
26
40
  * The Aggregate type describes a custom function that takes an array or numbers
27
41
  * and returns an aggregate that is used as a Metric.
@@ -478,6 +492,64 @@ export interface Metrics {
478
492
  */
479
493
  getMetricIds(): Ids;
480
494
 
495
+ /**
496
+ * The forEachMetric method takes a function that it will then call for each
497
+ * Metric in the Metrics object.
498
+ *
499
+ * This method is useful for iterating over all the Metrics in a functional
500
+ * style. The `metricCallback` parameter is a MetricCallback function that
501
+ * will be called with the Id of each Metric and its value.
502
+ *
503
+ * @param metricCallback The function that should be called for every Metric.
504
+ * @example
505
+ * This example iterates over each Metric in a Metrics object.
506
+ *
507
+ * ```js
508
+ * const store = createStore().setTable('species', {
509
+ * dog: {price: 5},
510
+ * cat: {price: 4},
511
+ * worm: {price: 1},
512
+ * });
513
+ * const metrics = createMetrics(store)
514
+ * .setMetricDefinition('highestPrice', 'species', 'max', 'price')
515
+ * .setMetricDefinition('lowestPrice', 'species', 'min', 'price');
516
+ *
517
+ * metrics.forEachMetric((metricId, metric) => {
518
+ * console.log([metricId, metric]);
519
+ * });
520
+ * // -> ['highestPrice', 5]
521
+ * // -> ['lowestPrice', 1]
522
+ * ```
523
+ * @category Iterator
524
+ */
525
+ forEachMetric(metricCallback: MetricCallback): void;
526
+
527
+ /**
528
+ * The hasMetric method returns a boolean indicating whether a given Metric
529
+ * exists in the Metrics object, and has a value.
530
+ *
531
+ * @param metricId The Id of a possible Metric in the Metrics object.
532
+ * @returns Whether a Metric with that Id exists.
533
+ * @example
534
+ * This example shows two simple Metric existence checks.
535
+ *
536
+ * ```js
537
+ * const store = createStore();
538
+ * const metrics = createMetrics(store);
539
+ * metrics.setMetricDefinition('highestPrice', 'species', 'max', 'price');
540
+ *
541
+ * console.log(metrics.hasMetric('lowestPrice'));
542
+ * // -> false
543
+ * console.log(metrics.hasMetric('highestPrice'));
544
+ * // -> false
545
+ * store.setTable('species', {dog: {price: 5}, cat: {price: 4}});
546
+ * console.log(metrics.hasMetric('highestPrice'));
547
+ * // -> true
548
+ * ```
549
+ * @category Getter
550
+ */
551
+ hasMetric(metricId: Id): boolean;
552
+
481
553
  /**
482
554
  * The getTableId method returns the Id of the underlying Table that is
483
555
  * backing a Metric.
package/lib/metrics.js CHANGED
@@ -1 +1 @@
1
- const e=e=>typeof e,t=e(""),n=e(e),s=(e,t)=>e.forEach(t),o=e=>c(e,((e,t)=>e+t),0),i=e=>e.length,r=e=>0==i(e),c=(e,t,n)=>e.reduce(t,n),a=e=>e.slice(1),d=Math.max,l=Math.min,u=isFinite,v=e=>null==e,g=(e,t,n)=>v(e)?n?.():t(e),h=()=>{},M=e=>e.size,f=(e,t)=>e?.has(t)??!1,p=e=>e.clear(),m=(e,t)=>e?.forEach(t),w=(e,t)=>e?.delete(t),L=e=>new Map(e),b=(e,t)=>e?.get(t),x=(e,t)=>m(e,((e,n)=>t(n,e))),y=(e,t,n)=>v(n)?(w(e,t),e):e?.set(t,n),I=(e,t,n,s)=>(f(e,t)||(s?.(n),e.set(t,n)),b(e,t)),R=e=>new Set(e),S=(n,s)=>e(n)==t?e=>e(n):n??(()=>s??""),T=(e,t,n)=>i(n)<2?((e,t)=>e?.add(t))(r(n)?e:I(e,n[0],R()),t):T(I(e,n[0],L()),t,a(n)),k=e=>{const t=(n,o,...i)=>g(n,(n=>r(i)?e(n,o):s([i[0],null],(e=>t(b(n,e),o,...a(i))))));return t},z=Object.freeze,D=L([["avg",[(e,t)=>o(e)/t,(e,t,n)=>e+(t-e)/(n+1),(e,t,n)=>e+(e-t)/(n-1),(e,t,n,s)=>e+(t-n)/s]],["max",[e=>d(...e),(e,t)=>d(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:d(t,e)]],["min",[e=>l(...e),(e,t)=>l(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:l(t,e)]],["sum",[e=>o(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,n)=>e-n+t]]]),E=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((t=>{const o=L(),[r,c,a,d,l,I,E,N]=((e,t,n)=>{const o=e.hasRow,i=L(),r=L(),c=L(),a=L(),d=L(),l=t=>g(b(d,t),(n=>{m(n,e.delListener),y(d,t)})),u=e=>{y(i,e),y(r,e),y(c,e),y(a,e),l(e)};return[()=>e,()=>[...i?.keys()??[]],e=>b(i,e),e=>b(r,e),(e,t)=>y(r,e,t),(u,g,h,M,w)=>{const I=L(),S=L();y(i,u,g),f(r,u)||(y(r,u,t()),y(c,u,L()),y(a,u,L()));const T=b(c,u),k=b(a,u),z=t=>{const s=n=>e.getCell(g,t,n),i=b(T,t),r=o(g,t)?n(M(s,t)):void 0;if(i!=r&&y(I,t,[i,r]),!v(w)){const e=b(k,t),n=o(g,t)?w(s,t):void 0;e!=n&&y(S,t,n)}},D=e=>{h((()=>{m(I,(([,e],t)=>y(T,t,e))),m(S,((e,t)=>y(k,t,e)))}),I,S,T,k,e),p(I),p(S)};x(T,z),e.hasTable(g)&&s(e.getRowIds(g),(e=>{f(T,e)||z(e)})),D(!0),l(u),y(d,u,R([e.addRowListener(g,null,((e,t,n)=>z(n))),e.addTableListener(g,(()=>D()))]))},u,()=>x(d,u)]})(t,h,(e=>isNaN(e)||v(e)||!0===e||!1===e||""===e?void 0:1*e)),[j,C,F]=(e=>{let t,n=0;const o=[],r=L();return[(s,i,c=[])=>{t??=e();const a=o.pop()??""+n++;return y(r,a,[s,i,c]),T(i,a,c),a},(e,n=[],...s)=>k(m)(e,(e=>g(b(r,e),(([e])=>e(t,...n,...s)))),...n),e=>g(b(r,e),(([,t,n])=>(k(w)(t,e,...n),y(r,e),i(o)<1e3&&o.push(e),n)),(()=>[])),(e,n,o)=>g(b(r,e),(([e,,r])=>{const c=(...a)=>{const d=i(a);d==i(r)?e(t,...a,...o(a)):v(r[d])?s(n[d](...a),(e=>c(...a,e))):c(...a,r[d])};c()}))]})((()=>O)),O={setMetricDefinition:(t,s,i,r,c,a,g)=>{const h=e(i)==n?[i,c,a,g]:b(D,i)??b(D,"sum");return I(t,s,((e,n,s,i,r,c)=>{let a=d(t),g=M(i);const[f,p,w,L]=h;var b;c=c||v(a),m(n,(([e,t])=>{c||(a=v(e)?p?.(a,t,g++):v(t)?w?.(a,e,g--):L?.(a,t,e,g)),c=c||v(a)})),e(),v(b=i)||0==M(b)?a=void 0:c&&(a=f((e=>[...e?.values()??[]])(i),M(i))),u(a)||(a=void 0);const x=d(t);a!=x&&(l(t,a),C(o,[t],a,x))}),S(r,1)),O},delMetricDefinition:e=>(E(e),O),getStore:r,getMetricIds:c,getTableId:a,getMetric:d,addMetricListener:(e,t)=>j(t,o,[e]),delListener:e=>(F(e),O),destroy:N,getListenerStats:()=>({})};return z(O)}));export{E as createMetrics};
1
+ const e=e=>typeof e,t=e(""),s=e(e),n=(e,t)=>e.forEach(t),o=e=>c(e,((e,t)=>e+t),0),i=e=>e.length,r=e=>0==i(e),c=(e,t,s)=>e.reduce(t,s),a=e=>e.slice(1),d=Math.max,l=Math.min,u=isFinite,h=e=>null==e,v=(e,t,s)=>h(e)?s?.():t(e),g=()=>{},M=e=>e.size,f=(e,t)=>e?.has(t)??!1,p=e=>e.clear(),m=(e,t)=>e?.forEach(t),w=(e,t)=>e?.delete(t),L=e=>new Map(e),b=(e,t)=>e?.get(t),x=(e,t)=>m(e,((e,s)=>t(s,e))),y=(e,t,s)=>h(s)?(w(e,t),e):e?.set(t,s),E=(e,t,s,n)=>(f(e,t)||(n?.(s),e.set(t,s)),b(e,t)),I=e=>new Set(e),R=(s,n)=>e(s)==t?e=>e(s):s??(()=>n??""),S=(e,t,s)=>i(s)<2?((e,t)=>e?.add(t))(r(s)?e:E(e,s[0],I()),t):S(E(e,s[0],L()),t,a(s)),T=e=>{const t=(s,o,...i)=>v(s,(s=>r(i)?e(s,o):n([i[0],null],(e=>t(b(s,e),o,...a(i))))));return t},k=Object.freeze,z=L([["avg",[(e,t)=>o(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=>d(...e),(e,t)=>d(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:d(t,e)]],["min",[e=>l(...e),(e,t)=>l(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:l(t,e)]],["sum",[e=>o(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),D=(e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))})((t=>{const o=L(),[r,c,a,d,l,E,D,N,j,C]=((e,t,s)=>{const o=e.hasRow,i=L(),r=L(),c=L(),a=L(),d=L(),l=t=>v(b(d,t),(s=>{m(s,e.delListener),y(d,t)})),u=e=>{y(i,e),y(r,e),y(c,e),y(a,e),l(e)};return[()=>e,()=>[...i?.keys()??[]],e=>x(r,e),e=>f(r,e),e=>b(i,e),e=>b(r,e),(e,t)=>y(r,e,t),(u,v,g,M,w)=>{const E=L(),R=L();y(i,u,v),f(r,u)||(y(r,u,t()),y(c,u,L()),y(a,u,L()));const S=b(c,u),T=b(a,u),k=t=>{const n=s=>e.getCell(v,t,s),i=b(S,t),r=o(v,t)?s(M(n,t)):void 0;if(i!=r&&y(E,t,[i,r]),!h(w)){const e=b(T,t),s=o(v,t)?w(n,t):void 0;e!=s&&y(R,t,s)}},z=e=>{g((()=>{m(E,(([,e],t)=>y(S,t,e))),m(R,((e,t)=>y(T,t,e)))}),E,R,S,T,e),p(E),p(R)};x(S,k),e.hasTable(v)&&n(e.getRowIds(v),(e=>{f(S,e)||k(e)})),z(!0),l(u),y(d,u,I([e.addRowListener(v,null,((e,t,s)=>k(s))),e.addTableListener(v,(()=>z()))]))},u,()=>x(d,u)]})(t,g,(e=>isNaN(e)||h(e)||!0===e||!1===e||""===e?void 0:1*e)),[F,O,W]=(e=>{let t,s=0;const o=[],r=L();return[(n,i,c=[])=>{t??=e();const a=o.pop()??""+s++;return y(r,a,[n,i,c]),S(i,a,c),a},(e,s=[],...n)=>T(m)(e,(e=>v(b(r,e),(([e])=>e(t,...s,...n)))),...s),e=>v(b(r,e),(([,t,s])=>(T(w)(t,e,...s),y(r,e),i(o)<1e3&&o.push(e),s)),(()=>[])),(e,s,o)=>v(b(r,e),(([e,,r])=>{const c=(...a)=>{const d=i(a);d==i(r)?e(t,...a,...o(a)):h(r[d])?n(s[d](...a),(e=>c(...a,e))):c(...a,r[d])};c()}))]})((()=>q)),q={setMetricDefinition:(t,n,i,r,c,a,d)=>{const l=e(i)==s?[i,c,a,d]:b(z,i)??b(z,"sum");return N(t,n,((e,s,n,i,r,c)=>{let a=E(t),d=M(i);const[v,g,f,p]=l;var w;c=c||h(a),m(s,(([e,t])=>{c||(a=h(e)?g?.(a,t,d++):h(t)?f?.(a,e,d--):p?.(a,t,e,d)),c=c||h(a)})),e(),h(w=i)||0==M(w)?a=void 0:c&&(a=v((e=>[...e?.values()??[]])(i),M(i))),u(a)||(a=void 0);const L=E(t);a!=L&&(D(t,a),O(o,[t],a,L))}),R(r,1)),q},delMetricDefinition:e=>(j(e),q),getStore:r,getMetricIds:c,forEachMetric:a,hasMetric:d,getTableId:l,getMetric:E,addMetricListener:(e,t)=>F(t,o,[e]),delListener:e=>(W(e),q),destroy:C,getListenerStats:()=>({})};return k(q)}));export{D as createMetrics};
package/lib/metrics.js.gz CHANGED
Binary file
@@ -11,7 +11,7 @@
11
11
  * @module relationships
12
12
  */
13
13
 
14
- import {GetCell, Store} from './store.d';
14
+ import {GetCell, RowCallback, Store} from './store.d';
15
15
  import {Id, IdOrNull, Ids} from './common.d';
16
16
 
17
17
  /**
@@ -39,6 +39,25 @@ export type Relationship = {
39
39
  linkedRowIds: {[firstRowId: Id]: Ids};
40
40
  };
41
41
 
42
+ /**
43
+ * The RelationshipCallback type describes a function that takes a
44
+ * Relationship's Id and a callback to loop over each local Row within it.
45
+ *
46
+ * A RelationshipCallback is provided when using the forEachRelationship method,
47
+ * so that you can do something based on every Relationship in the Relationships
48
+ * object. See that method for specific examples.
49
+ *
50
+ * @param relationshipId The Id of the Relationship that the callback can
51
+ * operate on.
52
+ * @param forEachRow A function that will let you iterate over the local Row
53
+ * objects in this Relationship.
54
+ * @category Callback
55
+ */
56
+ export type RelationshipCallback = (
57
+ relationshipId: Id,
58
+ forEachRow: (rowCallback: RowCallback) => void,
59
+ ) => void;
60
+
42
61
  /**
43
62
  * The RemoteRowIdListener type describes a function that is used to listen to
44
63
  * changes to the remote Row Id end of a Relationship.
@@ -405,6 +424,72 @@ export interface Relationships {
405
424
  */
406
425
  getRelationshipIds(): Ids;
407
426
 
427
+ /**
428
+ * The forEachRelationship method takes a function that it will then call for
429
+ * each Relationship in a specified Relationships object.
430
+ *
431
+ * This method is useful for iterating over the structure of the Relationships
432
+ * object in a functional style. The `relationshipCallback` parameter is a
433
+ * RelationshipCallback function that will be called with the Id of each
434
+ * Relationship, and with a function that can then be used to iterate over
435
+ * each local Row involved in the Relationship.
436
+ *
437
+ * @param relationshipCallback The function that should be called for every
438
+ * Relationship.
439
+ * @example
440
+ * This example iterates over each Relationship in a Relationships object, and
441
+ * lists each Row Id within them.
442
+ *
443
+ * ```js
444
+ * const store = createStore().setTable('pets', {
445
+ * fido: {species: 'dog', next: 'felix'},
446
+ * felix: {species: 'cat', next: 'cujo'},
447
+ * cujo: {species: 'dog'},
448
+ * });
449
+ * const relationships = createRelationships(store)
450
+ * .setRelationshipDefinition('petSpecies', 'pets', 'species', 'species')
451
+ * .setRelationshipDefinition('petSequence', 'pets', 'pets', 'next');
452
+ *
453
+ * relationships.forEachRelationship((relationshipId, forEachRow) => {
454
+ * console.log(relationshipId);
455
+ * forEachRow((rowId) => console.log(`- ${rowId}`));
456
+ * });
457
+ * // -> 'petSpecies'
458
+ * // -> '- fido'
459
+ * // -> '- felix'
460
+ * // -> '- cujo'
461
+ * // -> 'petSequence'
462
+ * // -> '- fido'
463
+ * // -> '- felix'
464
+ * // -> '- cujo'
465
+ * ```
466
+ * @category Iterator
467
+ */
468
+ forEachRelationship(relationshipCallback: RelationshipCallback): void;
469
+
470
+ /**
471
+ * The hasRelationship method returns a boolean indicating whether a given
472
+ * Relationship exists in the Relationships object.
473
+ *
474
+ * @param relationshipId The Id of a possible Relationship in the
475
+ * Relationships object.
476
+ * @returns Whether a Relationship with that Id exists.
477
+ * @example
478
+ * This example shows two simple Relationship existence checks.
479
+ *
480
+ * ```js
481
+ * const relationships = createRelationships(
482
+ * createStore(),
483
+ * ).setRelationshipDefinition('petSpecies', 'pets', 'species', 'species');
484
+ * console.log(relationships.hasRelationship('petSpecies'));
485
+ * // -> true
486
+ * console.log(relationships.hasRelationship('petColor'));
487
+ * // -> false
488
+ * ```
489
+ * @category Getter
490
+ */
491
+ hasRelationship(indexId: Id): boolean;
492
+
408
493
  /**
409
494
  * The getLocalTableId method returns the Id of the underlying local Table
410
495
  * that is used in the Relationship.
@@ -1 +1 @@
1
- const e=e=>typeof e,t=e(""),s=(e,t)=>e.forEach(t),n=e=>e.length,o=e=>0==n(e),r=e=>e.slice(1),d=e=>null==e,i=(e,t,s)=>d(e)?s?.():t(e),a=(e,t)=>e?.has(t)??!1,l=e=>[...e?.values()??[]],c=e=>e.clear(),R=(e,t)=>e?.forEach(t),g=(e,t)=>e?.delete(t),u=e=>new Map(e),L=(e,t)=>e?.get(t),w=(e,t)=>R(e,((e,s)=>t(s,e))),f=(e,t,s)=>d(s)?(g(e,t),e):e?.set(t,s),h=(e,t,s,n)=>(a(e,t)||(n?.(s),e.set(t,s)),L(e,t)),p=e=>new Set(e),I=(e,t)=>e?.add(t),b=(s,n)=>e(s)==t?e=>e(s):s??(()=>n??""),v=(e,t,s)=>n(s)<2?I(o(s)?e:h(e,s[0],p()),t):v(h(e,s[0],u()),t,r(s)),k=e=>{const t=(n,d,...a)=>i(n,(n=>o(a)?e(n,d):s([a[0],null],(e=>t(L(n,e),d,...r(a))))));return t},T=Object.freeze,m=(e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))})((e=>{const t=u(),o=u(),r=u(),h=u(),[m,y,S,z,D,E,M,j]=((e,t,n)=>{const o=e.hasRow,r=u(),l=u(),g=u(),h=u(),I=u(),b=t=>i(L(I,t),(s=>{R(s,e.delListener),f(I,t)})),v=e=>{f(r,e),f(l,e),f(g,e),f(h,e),b(e)};return[()=>e,()=>[...r?.keys()??[]],e=>L(r,e),e=>L(l,e),(e,t)=>f(l,e,t),(i,v,k,T,m)=>{const y=u(),S=u();f(r,i,v),a(l,i)||(f(l,i,t()),f(g,i,u()),f(h,i,u()));const z=L(g,i),D=L(h,i),E=t=>{const s=s=>e.getCell(v,t,s),r=L(z,t),i=o(v,t)?n(T(s,t)):void 0;if(r!=i&&f(y,t,[r,i]),!d(m)){const e=L(D,t),n=o(v,t)?m(s,t):void 0;e!=n&&f(S,t,n)}},M=e=>{k((()=>{R(y,(([,e],t)=>f(z,t,e))),R(S,((e,t)=>f(D,t,e)))}),y,S,z,D,e),c(y),c(S)};w(z,E),e.hasTable(v)&&s(e.getRowIds(v),(e=>{a(z,e)||E(e)})),M(!0),b(i),f(I,i,p([e.addRowListener(v,null,((e,t,s)=>E(s))),e.addTableListener(v,(()=>M()))]))},v,()=>w(I,v)]})(e,(()=>[u(),u(),u(),u()]),(e=>d(e)?void 0:e+"")),[x,C,O]=(e=>{let t,o=0;const r=[],a=u();return[(s,n,d=[])=>{t??=e();const i=r.pop()??""+o++;return f(a,i,[s,n,d]),v(n,i,d),i},(e,s=[],...n)=>k(R)(e,(e=>i(L(a,e),(([e])=>e(t,...s,...n)))),...s),e=>i(L(a,e),(([,t,s])=>(k(g)(t,e,...s),f(a,e),n(r)<1e3&&r.push(e),s)),(()=>[])),(e,o,r)=>i(L(a,e),(([e,,i])=>{const a=(...l)=>{const c=n(l);c==n(i)?e(t,...l,...r(l)):d(i[c])?s(o[c](...l),(e=>a(...l,e))):a(...l,i[c])};a()}))]})((()=>B)),W=(e,t,s)=>i(z(e),(([n,,o])=>{if(!a(o,t)){const r=p();if(S(e)!=A(e))I(r,t);else{let e=t;for(;!d(e)&&!a(r,e);)I(r,e),e=L(n,e)}if(s)return r;f(o,t,r)}return L(o,t)})),q=(e,t)=>i(z(e),(([,,e])=>f(e,t))),A=e=>L(t,e),B={setRelationshipDefinition:(e,s,n,l)=>(f(t,e,n),E(e,s,((t,s)=>{const n=p(),l=p(),c=p(),[u,b]=z(e);R(s,(([t,s],o)=>{d(t)||(I(l,t),i(L(b,t),(e=>{var s;g(e,o),(d(s=e)||0==(e=>e.size)(s))&&f(b,t)}))),d(s)||(I(l,s),a(b,s)||f(b,s,p()),I(L(b,s),o)),I(n,o),f(u,o,s),w(L(h,e),(t=>{a(W(e,t),o)&&I(c,t)}))})),t(),R(n,(t=>C(o,[e,t]))),R(l,(t=>C(r,[e,t]))),R(c,(t=>{q(e,t),C(h,[e,t])}))}),b(l)),B),delRelationshipDefinition:e=>(f(t,e),M(e),B),getStore:m,getRelationshipIds:y,getLocalTableId:S,getRemoteTableId:A,getRemoteRowId:(e,t)=>L(z(e)?.[0],t),getLocalRowIds:(e,t)=>l(L(z(e)?.[1],t)),getLinkedRowIds:(e,t)=>d(z(e))?[t]:l(W(e,t,!0)),addRemoteRowIdListener:(e,t,s)=>x(s,o,[e,t]),addLocalRowIdsListener:(e,t,s)=>x(s,r,[e,t]),addLinkedRowIdsListener:(e,t,s)=>(W(e,t),x(s,h,[e,t])),delListener:e=>(q(...O(e)),B),destroy:j,getListenerStats:()=>({})};return T(B)}));export{m as createRelationships};
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,s)=>(d(e,t)||(s?.(o),e.set(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,C]=((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+"")),[O,W,q]=(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()}))]})((()=>G)),A=(e,t,o)=>a(D(e),(([s,,n])=>{if(!d(n,t)){const i=p();if(z(e)!=F(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)})),B=(e,t)=>a(D(e),(([,,e])=>w(e,t))),F=e=>g(t,e),G={setRelationshipDefinition:(e,o,s,l)=>(w(t,e,s),j(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(A(e,t),n)&&I(c,t)}))})),t(),R(s,(t=>W(n,[e,t]))),R(l,(t=>W(i,[e,t]))),R(c,(t=>{B(e,t),W(L,[e,t])}))}),b(l)),G),delRelationshipDefinition:e=>(w(t,e),x(e),G),getStore:T,getRelationshipIds:m,forEachRelationship:t=>y((o=>t(o,(t=>e.forEachRow(z(o),t))))),hasRelationship:S,getLocalTableId:z,getRemoteTableId:F,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(A(e,t,!0)),addRemoteRowIdListener:(e,t,o)=>O(o,n,[e,t]),addLocalRowIdsListener:(e,t,o)=>O(o,i,[e,t]),addLinkedRowIdsListener:(e,t,o)=>(A(e,t),O(o,L,[e,t])),delListener:e=>(B(...q(e)),G),destroy:C,getListenerStats:()=>({})};return E(G)}));export{T as createRelationships};
Binary file
package/lib/store.d.ts CHANGED
@@ -89,7 +89,7 @@ export type Row = {[cellId: Id]: Cell};
89
89
  export type Cell = string | number | boolean;
90
90
 
91
91
  /**
92
- * The TableCallback type describes a function that takes a Tables's Id and a
92
+ * The TableCallback type describes a function that takes a Table's Id and a
93
93
  * callback to loop over each Row within it.
94
94
  *
95
95
  * A TableCallback is provided when using the forEachTable method, so that you
@@ -867,6 +867,26 @@ export interface Store {
867
867
  */
868
868
  getCell(tableId: Id, rowId: Id, cellId: Id): Cell | undefined;
869
869
 
870
+ /**
871
+ * The hasTables method returns a boolean indicating whether any Table objects
872
+ * exist in the Store.
873
+ *
874
+ * @returns Whether any Tables exist.
875
+ * @example
876
+ * This example shows simple existence checks.
877
+ *
878
+ * ```js
879
+ * const store = createStore();
880
+ * console.log(store.hasTables());
881
+ * // -> false
882
+ * store.setTables({pets: {fido: {species: 'dog'}}});
883
+ * console.log(store.hasTables());
884
+ * // -> true
885
+ * ```
886
+ * @category Getter
887
+ */
888
+ hasTables(): boolean;
889
+
870
890
  /**
871
891
  * The hasTable method returns a boolean indicating whether a given Table
872
892
  * exists in the Store.
@@ -1611,7 +1631,7 @@ export interface Store {
1611
1631
  *
1612
1632
  * This method is useful for iterating over the Table structure of the Store
1613
1633
  * in a functional style. The `tableCallback` parameter is a TableCallback
1614
- * function that will called with the Id of each Table, and with a function
1634
+ * function that will be called with the Id of each Table, and with a function
1615
1635
  * that can then be used to iterate over each Row of the Table, should you
1616
1636
  * wish.
1617
1637
  *
@@ -1644,9 +1664,10 @@ export interface Store {
1644
1664
  *
1645
1665
  * This method is useful for iterating over the Row structure of the Table in
1646
1666
  * a functional style. The `rowCallback` parameter is a RowCallback function
1647
- * that will called with the Id of each Row, and with a function that can then
1648
- * be used to iterate over each Cell of the Row, should you wish.
1667
+ * that will be called with the Id of each Row, and with a function that can
1668
+ * then be used to iterate over each Cell of the Row, should you wish.
1649
1669
  *
1670
+ * @param tableId The Id of the Table to iterate over.
1650
1671
  * @param rowCallback The function that should be called for every Row.
1651
1672
  * @example
1652
1673
  * This example iterates over each Row in a Table, and lists each Cell Id
@@ -1678,8 +1699,10 @@ export interface Store {
1678
1699
  *
1679
1700
  * This method is useful for iterating over the Cell structure of the Row in a
1680
1701
  * functional style. The `cellCallback` parameter is a CellCallback function
1681
- * that will called with the Id and value of each Cell.
1702
+ * that will be called with the Id and value of each Cell.
1682
1703
  *
1704
+ * @param tableId The Id of the Table containing the Row to iterate over.
1705
+ * @param rowId The Id of the Row to iterate over.
1683
1706
  * @param cellCallback The function that should be called for every Cell.
1684
1707
  * @example
1685
1708
  * This example iterates over each Cell in a Row, and lists its value.
package/lib/store.js CHANGED
@@ -1 +1 @@
1
- const e=e=>typeof e,t=e(""),s=e(!0),n=e(0),r=e(e),l=(e,t)=>e.forEach(t),o=e=>e.length,a=e=>0==o(e),c=e=>e.slice(1),d=e=>JSON.stringify(e,((e,t)=>{return f(t,Map)?(s=[...t],n=(e,[t,s])=>(e[t]=s,e),r={},s.reduce(n,r)):t;var s,n,r})),i=JSON.parse,u=isFinite,f=(e,t)=>e instanceof t,h=e=>null==e,b=(e,t,s)=>h(e)?s?.():t(e),g=e=>e==t||e==s,w=(e,t)=>e?.has(t)??!1,T=e=>h(e)||0==(e=>e.size)(e),p=e=>e.clear(),L=(e,t)=>e?.forEach(t),R=(e,t)=>e?.delete(t),y=e=>new Map(e),C=(e=y)=>[e(),e()],S=e=>[...e?.keys()??[]],I=(e,t)=>e?.get(t),v=(e,t)=>L(e,((e,s)=>t(s,e))),E=(e,t,s)=>h(s)?(R(e,t),e):e?.set(t,s),J=(e,t,s,n)=>(w(e,t)||(n?.(s),e.set(t,s)),I(e,t)),m=(e,t)=>{const s={},n=t??(e=>e);return L(e,((e,t)=>s[t]=n(e))),s},z=(e,t)=>{const s=y(),n=t??(e=>e);return L(e,((e,t)=>s.set(t,n(e)))),s},O=Object,k=O.keys,F=O.isFrozen,M=O.freeze,N=(e,t)=>!h(((e,t)=>b(e,(e=>e[t])))(e,t)),j=(e,t)=>delete e[t],x=(e,t)=>l(O.entries(e),(([e,s])=>t(s,e))),P=e=>new Set(e),q=(e,t,s)=>o(s)<2?((e,t)=>e?.add(t))(a(s)?e:J(e,s[0],P()),t):q(J(e,s[0],y()),t,c(s)),A=e=>{const t=(s,n,...r)=>b(s,(s=>a(r)?e(s,n):l([r[0],null],(e=>t(I(s,e),n,...c(r))))));return t},B=(e,t,s,n=E)=>{const r=(o=S(e),a=e=>!N(t,e),o.filter(a));var o,a;return l(k(t),(n=>s(e,n,t[n]))),l(r,(t=>n(e,t))),e},D=t=>{const s=e(t);return g(s)||s==n&&u(t)?s:void 0},G=(e,t)=>!(h(e)||!(e=>f(e,O)&&e.constructor==O)(e)||F(e))&&(x(e,((s,n)=>{t(s,n)||j(e,n)})),!(e=>a(k(e)))(e)),H=(e,t,s)=>E(e,t,I(e,t)==-s?void 0:s),K=()=>{let t,s=0,a=0;const c=y(),u=y(),f=y(),O=y(),k=y(),F=y(),K=y(),Q=C(P),U=C(P),V=C(),W=C(),X=C(),Y=C(),Z=C(),[$,_,ee,te]=(e=>{let t,s=0;const n=[],r=y();return[(l,o,a=[])=>{t??=e();const c=n.pop()??""+s++;return E(r,c,[l,o,a]),q(o,c,a),c},(e,s=[],...n)=>A(L)(e,(e=>b(I(r,e),(([e])=>e(t,...s,...n)))),...s),e=>b(I(r,e),(([,t,s])=>(A(R)(t,e,...s),E(r,e),o(n)<1e3&&n.push(e),s)),(()=>[])),(e,s,n)=>b(I(r,e),(([e,,r])=>{const a=(...c)=>{const d=o(c);d==o(r)?e(t,...c,...n(c)):h(r[d])?l(s[d](...c),(e=>a(...c,e))):a(...c,r[d])};a()}))]})((()=>Fe)),se=(e,s)=>(!t||w(k,s))&&G(e,(e=>ne(s,e))),ne=(e,t,s)=>G(s?t:le(t,e),((s,n)=>b(re(e,n,s),(e=>(t[n]=e,!0)),(()=>!1)))),re=(e,s,n)=>t?b(I(I(k,e),s),(e=>D(n)!=e.type?e.default:n)):h(D(n))?void 0:n,le=(e,t)=>(b(I(F,t),(t=>x(t,((t,s)=>{N(e,s)||(e[s]=t)})))),e),oe=e=>B(k,e,((e,t,s)=>{const n={};B(J(k,t,y()),s,((e,t,s)=>{E(e,t,s),b(s.default,(e=>n[t]=e))})),E(F,t,n)}),((e,t)=>{E(k,t),E(F,t)})),ae=e=>B(K,e,((e,t,s)=>ce(t,s)),((e,t)=>ge(t))),ce=(e,t)=>B(J(K,e,y(),(()=>pe(e,1))),t,((t,s,n)=>de(e,t,s,n)),((t,s)=>we(e,t,s))),de=(e,t,s,n,r)=>B(J(t,s,y(),(()=>Le(e,s,1))),n,((t,n,r)=>ie(e,s,t,n,r)),((n,l)=>Te(e,t,s,n,l,r))),ie=(e,t,s,n,r)=>{w(s,n)||Re(e,t,n,1);const l=I(s,n);r!==l&&(ye(e,t,n,l),E(s,n,r))},ue=(e,t,s)=>ke((()=>de(e,be(e),t,s))),fe=(e,t,s,n,r)=>b(I(t,s),(t=>ie(e,s,t,n,r)),(()=>de(e,t,s,le({[n]:r},e)))),he=e=>{const t=""+s++;return w(e,t)?he(e):t},be=e=>I(K,e)??ce(e,{}),ge=e=>ce(e,{}),we=(e,t,s)=>de(e,t,s,{},!0),Te=(e,t,s,n,r,l)=>{const o=I(F,e)?.[r];if(!h(o)&&!l)return ie(e,s,n,r,o);const a=t=>{ye(e,s,t,I(n,t)),Re(e,s,t,-1),E(n,t)};h(o)?a(r):v(n,a),T(n)&&(Le(e,s,-1),T(E(t,s))&&(pe(e,-1),E(K,e)))},pe=(e,t)=>H(c,e,t),Le=(e,t,s)=>H(J(u,e,y()),t,s),Re=(e,t,s,n)=>H(J(J(f,e,y()),t,y()),s,n),ye=(e,t,s,n)=>J(J(J(O,e,y()),t,y()),s,n),Ce=(e,t,s)=>{const n=I(I(O,e),t),r=me(e,t,s);return w(n,s)?[!0,I(n,s),r]:[!1,r,r]},Se=e=>{const t=T(Y[e])&&T(W[e])&&T(U[e]),s=T(Z[e])&&T(X[e])&&T(V[e])&&T(Q[e]);if(t&&s)return;const n=e?[z(c),z(u,z),z(f,(e=>z(e,z))),z(O,(e=>z(e,z)))]:[c,u,f,O];if(t||(L(n[2],((t,s)=>L(t,((t,n)=>{T(t)||_(Y[e],[s,n])})))),L(n[1],((t,s)=>{T(t)||_(W[e],[s])})),T(n[0])||_(U[e])),!s){let t;L(n[3],((s,n)=>{let r;L(s,((s,l)=>{let o;L(s,((s,a)=>{const c=me(n,l,a);c!==s&&(_(Z[e],[n,l,a],c,s,Ce),t=r=o=1)})),o&&_(X[e],[n,l],Ce)})),r&&_(V[e],[n],Ce)})),t&&_(Q[e],[],Ce)}},Ie=()=>m(K,(e=>m(e,m))),ve=()=>S(K),Ee=e=>S(I(K,e)),Je=(e,t)=>S(I(I(K,e),t)),me=(e,t,s)=>I(I(I(K,e),t),s),ze=e=>((e=>G(e,se))(e)&&ke((()=>ae(e))),Fe),Oe=()=>(ke((()=>ae({}))),Fe),ke=e=>{if(-1==a)return;a++;const t=e();return a--,0==a&&(a=1,Se(1),a=-1,Se(0),a=0,l([O,c,u,f],p)),t},Fe={getTables:Ie,getTableIds:ve,getTable:e=>m(I(K,e),m),getRowIds:Ee,getRow:(e,t)=>m(I(I(K,e),t)),getCellIds:Je,getCell:me,hasTable:e=>w(K,e),hasRow:(e,t)=>w(I(K,e),t),hasCell:(e,t,s)=>w(I(I(K,e),t),s),getJson:()=>d(K),getSchemaJson:()=>d(k),setTables:ze,setTable:(e,t)=>(se(t,e)&&ke((()=>ce(e,t))),Fe),setRow:(e,t,s)=>(ne(e,s)&&ue(e,t,s),Fe),addRow:(e,t)=>{let s;return ne(e,t)&&(s=he(I(K,e)),ue(e,s,t)),s},setPartialRow:(e,t,s)=>(ne(e,s,1)&&ke((()=>{const n=be(e);x(s,((s,r)=>fe(e,n,t,r,s)))})),Fe),setCell:(t,s,n,l)=>(b(re(t,n,e(l)==r?l(me(t,s,n)):l),(e=>ke((()=>fe(t,be(t),s,n,e))))),Fe),setJson:e=>{try{"{}"===e?Oe():ze(i(e))}catch{}return Fe},setSchema:e=>{if((t=(e=>G(e,(e=>G(e,(e=>{if(!G(e,((e,t)=>["type","default"].includes(t))))return!1;const t=e.type;return!(!g(t)&&t!=n||(D(e.default)!=t&&j(e,"default"),0))})))))(e))&&(oe(e),!T(K))){const e=Ie();Oe(),ze(e)}return Fe},delTables:Oe,delTable:e=>(w(K,e)&&ke((()=>ge(e))),Fe),delRow:(e,t)=>(b(I(K,e),(s=>{w(s,t)&&ke((()=>we(e,s,t)))})),Fe),delCell:(e,t,s,n)=>(b(I(K,e),(r=>b(I(r,t),(l=>{w(l,s)&&ke((()=>Te(e,r,t,l,s,n)))})))),Fe),delSchema:()=>(oe({}),t=!1,Fe),transaction:ke,forEachTable:e=>L(K,((t,s)=>e(s,(e=>L(t,((t,s)=>e(s,(e=>v(t,e))))))))),forEachRow:(e,t)=>L(I(K,e),((e,s)=>t(s,(t=>v(e,t))))),forEachCell:(e,t,s)=>v(I(I(K,e),t),s),addTablesListener:(e,t)=>$(e,Q[t?1:0]),addTableIdsListener:(e,t)=>$(e,U[t?1:0]),addTableListener:(e,t,s)=>$(t,V[s?1:0],[e]),addRowIdsListener:(e,t,s)=>$(t,W[s?1:0],[e]),addRowListener:(e,t,s,n)=>$(s,X[n?1:0],[e,t]),addCellIdsListener:(e,t,s,n)=>$(s,Y[n?1:0],[e,t]),addCellListener:(e,t,s,n,r)=>$(n,Z[r?1:0],[e,t,s]),callListener:e=>(te(e,[ve,Ee,Je],(e=>h(e[2])?[]:[,,].fill(me(...e)))),Fe),delListener:e=>(ee(e),Fe),getListenerStats:()=>({})};return M(Fe)};export{K as createStore};
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=>JSON.stringify(e,((e,t)=>{return f(t,Map)?(s=[...t],n=(e,[t,s])=>(e[t]=s,e),r={},s.reduce(n,r)):t;var s,n,r})),i=JSON.parse,u=isFinite,f=(e,t)=>e instanceof t,h=e=>null==e,b=(e,t,s)=>h(e)?s?.():t(e),g=e=>e==t||e==s,T=(e,t)=>e?.has(t)??!1,w=e=>h(e)||0==(e=>e.size)(e),p=e=>e.clear(),L=(e,t)=>e?.forEach(t),R=(e,t)=>e?.delete(t),y=e=>new Map(e),C=(e=y)=>[e(),e()],S=e=>[...e?.keys()??[]],I=(e,t)=>e?.get(t),v=(e,t)=>L(e,((e,s)=>t(s,e))),E=(e,t,s)=>h(s)?(R(e,t),e):e?.set(t,s),J=(e,t,s,n)=>(T(e,t)||(n?.(s),e.set(t,s)),I(e,t)),m=(e,t)=>{const s={},n=t??(e=>e);return L(e,((e,t)=>s[t]=n(e))),s},z=(e,t)=>{const s=y(),n=t??(e=>e);return L(e,((e,t)=>s.set(t,n(e)))),s},O=Object,k=O.keys,F=O.isFrozen,M=O.freeze,N=(e,t)=>!h(((e,t)=>b(e,(e=>e[t])))(e,t)),j=(e,t)=>delete e[t],x=(e,t)=>l(O.entries(e),(([e,s])=>t(s,e))),P=e=>new Set(e),q=(e,t,s)=>a(s)<2?((e,t)=>e?.add(t))(o(s)?e:J(e,s[0],P()),t):q(J(e,s[0],y()),t,c(s)),A=e=>{const t=(s,n,...r)=>b(s,(s=>o(r)?e(s,n):l([r[0],null],(e=>t(I(s,e),n,...c(r))))));return t},B=(e,t,s,n=E)=>{const r=(a=S(e),o=e=>!N(t,e),a.filter(o));var a,o;return l(k(t),(n=>s(e,n,t[n]))),l(r,(t=>n(e,t))),e},D=t=>{const s=e(t);return g(s)||s==n&&u(t)?s:void 0},G=(e,t)=>!(h(e)||!(e=>f(e,O)&&e.constructor==O)(e)||F(e))&&(x(e,((s,n)=>{t(s,n)||j(e,n)})),!(e=>o(k(e)))(e)),H=(e,t,s)=>E(e,t,I(e,t)==-s?void 0:s),K=()=>{let t,s=0,o=0;const c=y(),u=y(),f=y(),O=y(),k=y(),F=y(),K=y(),Q=C(P),U=C(P),V=C(),W=C(),X=C(),Y=C(),Z=C(),[$,_,ee,te]=(e=>{let t,s=0;const n=[],r=y();return[(l,a,o=[])=>{t??=e();const c=n.pop()??""+s++;return E(r,c,[l,a,o]),q(a,c,o),c},(e,s=[],...n)=>A(L)(e,(e=>b(I(r,e),(([e])=>e(t,...s,...n)))),...s),e=>b(I(r,e),(([,t,s])=>(A(R)(t,e,...s),E(r,e),a(n)<1e3&&n.push(e),s)),(()=>[])),(e,s,n)=>b(I(r,e),(([e,,r])=>{const o=(...c)=>{const d=a(c);d==a(r)?e(t,...c,...n(c)):h(r[d])?l(s[d](...c),(e=>o(...c,e))):o(...c,r[d])};o()}))]})((()=>Fe)),se=(e,s)=>(!t||T(k,s))&&G(e,(e=>ne(s,e))),ne=(e,t,s)=>G(s?t:le(t,e),((s,n)=>b(re(e,n,s),(e=>(t[n]=e,!0)),(()=>!1)))),re=(e,s,n)=>t?b(I(I(k,e),s),(e=>D(n)!=e.type?e.default:n)):h(D(n))?void 0:n,le=(e,t)=>(b(I(F,t),(t=>x(t,((t,s)=>{N(e,s)||(e[s]=t)})))),e),ae=e=>B(k,e,((e,t,s)=>{const n={};B(J(k,t,y()),s,((e,t,s)=>{E(e,t,s),b(s.default,(e=>n[t]=e))})),E(F,t,n)}),((e,t)=>{E(k,t),E(F,t)})),oe=e=>B(K,e,((e,t,s)=>ce(t,s)),((e,t)=>ge(t))),ce=(e,t)=>B(J(K,e,y(),(()=>pe(e,1))),t,((t,s,n)=>de(e,t,s,n)),((t,s)=>Te(e,t,s))),de=(e,t,s,n,r)=>B(J(t,s,y(),(()=>Le(e,s,1))),n,((t,n,r)=>ie(e,s,t,n,r)),((n,l)=>we(e,t,s,n,l,r))),ie=(e,t,s,n,r)=>{T(s,n)||Re(e,t,n,1);const l=I(s,n);r!==l&&(ye(e,t,n,l),E(s,n,r))},ue=(e,t,s)=>ke((()=>de(e,be(e),t,s))),fe=(e,t,s,n,r)=>b(I(t,s),(t=>ie(e,s,t,n,r)),(()=>de(e,t,s,le({[n]:r},e)))),he=e=>{const t=""+s++;return T(e,t)?he(e):t},be=e=>I(K,e)??ce(e,{}),ge=e=>ce(e,{}),Te=(e,t,s)=>de(e,t,s,{},!0),we=(e,t,s,n,r,l)=>{const a=I(F,e)?.[r];if(!h(a)&&!l)return ie(e,s,n,r,a);const o=t=>{ye(e,s,t,I(n,t)),Re(e,s,t,-1),E(n,t)};h(a)?o(r):v(n,o),w(n)&&(Le(e,s,-1),w(E(t,s))&&(pe(e,-1),E(K,e)))},pe=(e,t)=>H(c,e,t),Le=(e,t,s)=>H(J(u,e,y()),t,s),Re=(e,t,s,n)=>H(J(J(f,e,y()),t,y()),s,n),ye=(e,t,s,n)=>J(J(J(O,e,y()),t,y()),s,n),Ce=(e,t,s)=>{const n=I(I(O,e),t),r=me(e,t,s);return T(n,s)?[!0,I(n,s),r]:[!1,r,r]},Se=e=>{const t=w(Y[e])&&w(W[e])&&w(U[e]),s=w(Z[e])&&w(X[e])&&w(V[e])&&w(Q[e]);if(t&&s)return;const n=e?[z(c),z(u,z),z(f,(e=>z(e,z))),z(O,(e=>z(e,z)))]:[c,u,f,O];if(t||(L(n[2],((t,s)=>L(t,((t,n)=>{w(t)||_(Y[e],[s,n])})))),L(n[1],((t,s)=>{w(t)||_(W[e],[s])})),w(n[0])||_(U[e])),!s){let t;L(n[3],((s,n)=>{let r;L(s,((s,l)=>{let a;L(s,((s,o)=>{const c=me(n,l,o);c!==s&&(_(Z[e],[n,l,o],c,s,Ce),t=r=a=1)})),a&&_(X[e],[n,l],Ce)})),r&&_(V[e],[n],Ce)})),t&&_(Q[e],[],Ce)}},Ie=()=>m(K,(e=>m(e,m))),ve=()=>S(K),Ee=e=>S(I(K,e)),Je=(e,t)=>S(I(I(K,e),t)),me=(e,t,s)=>I(I(I(K,e),t),s),ze=e=>((e=>G(e,se))(e)&&ke((()=>oe(e))),Fe),Oe=()=>(ke((()=>oe({}))),Fe),ke=e=>{if(-1==o)return;o++;const t=e();return o--,0==o&&(o=1,Se(1),o=-1,Se(0),o=0,l([O,c,u,f],p)),t},Fe={getTables:Ie,getTableIds:ve,getTable:e=>m(I(K,e),m),getRowIds:Ee,getRow:(e,t)=>m(I(I(K,e),t)),getCellIds:Je,getCell:me,hasTables:()=>!w(K),hasTable:e=>T(K,e),hasRow:(e,t)=>T(I(K,e),t),hasCell:(e,t,s)=>T(I(I(K,e),t),s),getJson:()=>d(K),getSchemaJson:()=>d(k),setTables:ze,setTable:(e,t)=>(se(t,e)&&ke((()=>ce(e,t))),Fe),setRow:(e,t,s)=>(ne(e,s)&&ue(e,t,s),Fe),addRow:(e,t)=>{let s;return ne(e,t)&&(s=he(I(K,e)),ue(e,s,t)),s},setPartialRow:(e,t,s)=>(ne(e,s,1)&&ke((()=>{const n=be(e);x(s,((s,r)=>fe(e,n,t,r,s)))})),Fe),setCell:(t,s,n,l)=>(b(re(t,n,e(l)==r?l(me(t,s,n)):l),(e=>ke((()=>fe(t,be(t),s,n,e))))),Fe),setJson:e=>{try{"{}"===e?Oe():ze(i(e))}catch{}return Fe},setSchema:e=>{if((t=(e=>G(e,(e=>G(e,(e=>{if(!G(e,((e,t)=>["type","default"].includes(t))))return!1;const t=e.type;return!(!g(t)&&t!=n||(D(e.default)!=t&&j(e,"default"),0))})))))(e))&&(ae(e),!w(K))){const e=Ie();Oe(),ze(e)}return Fe},delTables:Oe,delTable:e=>(T(K,e)&&ke((()=>ge(e))),Fe),delRow:(e,t)=>(b(I(K,e),(s=>{T(s,t)&&ke((()=>Te(e,s,t)))})),Fe),delCell:(e,t,s,n)=>(b(I(K,e),(r=>b(I(r,t),(l=>{T(l,s)&&ke((()=>we(e,r,t,l,s,n)))})))),Fe),delSchema:()=>(ae({}),t=!1,Fe),transaction:ke,forEachTable:e=>L(K,((t,s)=>e(s,(e=>L(t,((t,s)=>e(s,(e=>v(t,e))))))))),forEachRow:(e,t)=>L(I(K,e),((e,s)=>t(s,(t=>v(e,t))))),forEachCell:(e,t,s)=>v(I(I(K,e),t),s),addTablesListener:(e,t)=>$(e,Q[t?1:0]),addTableIdsListener:(e,t)=>$(e,U[t?1:0]),addTableListener:(e,t,s)=>$(t,V[s?1:0],[e]),addRowIdsListener:(e,t,s)=>$(t,W[s?1:0],[e]),addRowListener:(e,t,s,n)=>$(s,X[n?1:0],[e,t]),addCellIdsListener:(e,t,s,n)=>$(s,Y[n?1:0],[e,t]),addCellListener:(e,t,s,n,r)=>$(n,Z[r?1:0],[e,t,s]),callListener:e=>(te(e,[ve,Ee,Je],(e=>h(e[2])?[]:[,,].fill(me(...e)))),Fe),delListener:e=>(ee(e),Fe),getListenerStats:()=>({})};return M(Fe)};export{K 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,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=>L(e,((e,t)=>e+t),0),g=e=>e.length,f=e=>0==g(e),L=(e,t,s)=>e.reduce(t,s),h=e=>e.slice(1),p=e=>JSON.stringify(e,((e,t)=>S(t,Map)?L([...t],((e,[t,s])=>(e[t]=s,e)),{}):t)),w=JSON.parse,v=Math.max,I=Math.min,y=isFinite,S=(e,t)=>e instanceof t,R=e=>null==e,T=(e,t,s)=>R(e)?s?.():t(e),b=e=>e==n||e==o,m=e=>s(e)==a,C=()=>{},k=e=>e.size,A=(e,t)=>e?.has(t)??!1,M=e=>R(e)||0==k(e),E=e=>[...e?.values()??[]],x=e=>e.clear(),D=(e,t)=>e?.forEach(t),J=(e,t)=>e?.delete(t),F=e=>new Map(e),z=(e=F)=>[e(),e()],N=e=>[...e?.keys()??[]],O=(e,t)=>e?.get(t),j=(e,t)=>D(e,((e,s)=>t(s,e))),P=(e,t,s)=>R(s)?(J(e,t),e):e?.set(t,s),B=(e,t,s,n)=>(A(e,t)||(n?.(s),e.set(t,s)),O(e,t)),H=(e,t)=>{const s={},n=t??(e=>e);return D(e,((e,t)=>s[t]=n(e))),s},W=(e,t)=>{const s=F(),n=t??(e=>e);return D(e,((e,t)=>s.set(t,n(e)))),s},q=e=>new Set(e),G=(e,t)=>e?.add(t),K=(e,t,s)=>{const n=e.hasRow,o=F(),r=F(),a=F(),i=F(),d=F(),l=t=>T(O(d,t),(s=>{D(s,e.delListener),P(d,t)})),u=e=>{P(o,e),P(r,e),P(a,e),P(i,e),l(e)};return[()=>e,()=>N(o),e=>O(o,e),e=>O(r,e),(e,t)=>P(r,e,t),(u,g,f,L,h)=>{const p=F(),w=F();P(o,u,g),A(r,u)||(P(r,u,t()),P(a,u,F()),P(i,u,F()));const v=O(a,u),I=O(i,u),y=t=>{const o=s=>e.getCell(g,t,s),r=O(v,t),a=n(g,t)?s(L(o,t)):void 0;if(r!=a&&P(p,t,[r,a]),!R(h)){const e=O(I,t),s=n(g,t)?h(o,t):void 0;e!=s&&P(w,t,s)}},S=e=>{f((()=>{D(p,(([,e],t)=>P(v,t,e))),D(w,((e,t)=>P(I,t,e)))}),p,w,v,I,e),x(p),x(w)};j(v,y),e.hasTable(g)&&c(e.getRowIds(g),(e=>{A(v,e)||y(e)})),S(!0),l(u),P(d,u,q([e.addRowListener(g,null,((e,t,s)=>y(s))),e.addTableListener(g,(()=>S()))]))},u,()=>j(d,u)]},Q=(e,t)=>s(e)==n?t=>t(e):e??(()=>t??""),U=e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))},V=(e,t,s)=>g(s)<2?G(f(s)?e:B(e,s[0],q()),t):V(B(e,s[0],F()),t,h(s)),X=e=>{const t=(s,n,...o)=>T(s,(s=>f(o)?e(s,n):c([o[0],null],(e=>t(O(s,e),n,...h(o))))));return t},Y=e=>{let t,s=0;const n=[],o=F();return[(r,a,i=[])=>{t??=e();const d=n.pop()??""+s++;return P(o,d,[r,a,i]),V(a,d,i),d},(e,s=[],...n)=>X(D)(e,(e=>T(O(o,e),(([e])=>e(t,...s,...n)))),...s),e=>T(O(o,e),(([,t,s])=>(X(J)(t,e,...s),P(o,e),g(n)<1e3&&n.push(e),s)),(()=>[])),(e,s,n)=>T(O(o,e),(([e,,o])=>{const r=(...a)=>{const i=g(a);i==g(o)?e(t,...a,...n(a)):R(o[i])?c(s[i](...a),(e=>r(...a,e))):r(...a,o[i])};r()}))]},Z=Object,$=Z.keys,_=Z.isFrozen,ee=Z.freeze,te=(e,t)=>!R(((e,t)=>T(e,(e=>e[t])))(e,t)),se=(e,t)=>delete e[t],ne=(e,t)=>c(Z.entries(e),(([e,s])=>t(s,e))),oe=U((e=>{let t,s,n,o=100,r=F(),a=1;const d=q(),l=F(),[u,L,h]=Y((()=>j)),p=F(),w=F(),v=[],I=[],y=(t,s)=>{a=0,e.transaction((()=>D(O(p,s),((s,n)=>D(s,((s,o)=>D(s,((s,r)=>R(s[t])?e.delCell(n,o,r,!0):e.setCell(n,o,r,s[t]))))))))),a=1},S=e=>{P(p,e),P(w,e),L(l,[e])},b=(e,t)=>c(((e,t)=>e.splice(0,t))(e,t??g(e)),S),m=()=>b(v,g(v)-o),C=e.addCellListener(null,null,null,((e,s,o,i,d,l)=>{if(a){T(t,(()=>{v.push(t),m(),b(I),t=void 0,n=1}));const e=B(r,s,F()),a=B(e,o,F()),c=B(a,i,[void 0,void 0],(e=>e[0]=l));c[1]=d,c[0]===c[1]&&M(P(a,i))&&M(P(e,o))&&M(P(r,s))&&(t=v.pop(),n=1),J()}})),k=(e="")=>(R(t)&&(t=""+s++,P(p,t,r),N(t,e),r=F(),n=1),t),E=()=>{f(v)||(I.unshift(k()),y(0,t),t=v.pop(),n=1)},x=()=>{f(I)||(v.push(t),t=I.shift(),y(1,t),n=1)},J=()=>{n&&(L(d),n=0)},z=e=>{const t=k(e);return J(),t},N=(e,t)=>(A(p,e)&&O(w,e)!==t&&(P(w,e,t),L(l,[e])),j),j={setSize:e=>(o=e,m(),j),addCheckpoint:z,setCheckpoint:N,getStore:()=>e,getCheckpointIds:()=>[[...v],t,[...I]],getCheckpoint:e=>O(w,e),goBackward:()=>(E(),J(),j),goForward:()=>(x(),J(),j),goTo:e=>{const s=i(v,e)?E:i(I,e)?x:null;for(;!R(s)&&e!=t;)s();return J(),j},addCheckpointIdsListener:e=>u(e,d),addCheckpointListener:(e,t)=>u(t,l,[e]),delListener:e=>(h(e),j),clear:()=>(b(v),b(I),R(t)||S(t),t=void 0,s=0,z(),j),destroy:()=>{e.delListener(C)},getListenerStats:()=>({})};return ee(j.clear())})),re=(e,t)=>e<t?-1:1,ae=U((e=>{const t=F(),s=F(),[n,o,r,a,i,c,u,g]=K(e,F,(e=>R(e)?"":e+"")),[f,L,h]=Y((()=>p)),p={setIndexDefinition:(e,n,o,r,u,g=re)=>{const f=R(u)?void 0:([e],[t])=>u(e,t);return c(e,n,((n,o,c,u,h,p)=>{let w=0;const v=q(),I=q(),y=a(e);if(D(o,(([e,t],s)=>{R(e)||(G(v,e),T(O(y,e),(t=>{J(t,s),M(t)&&(P(y,e),w=1)}))),R(t)||(G(v,t),A(y,t)||(P(y,t,q()),w=1),G(O(y,t),s),R(r)||G(I,t))})),n(),M(h)||(p?j(y,(e=>G(I,e))):j(c,(e=>T(O(u,e),(e=>G(I,e))))),D(I,(e=>{const t=(t,s)=>g(O(h,t),O(h,s),e),s=[...O(y,e)];d(s,t)||(P(y,e,q(l(s,t))),G(v,e))}))),(w||p)&&!R(f)){const t=[...y];d(t,f)||(i(e,F(l(t,f))),w=1)}w&&L(t,[e]),D(v,(t=>L(s,[e,t])))}),Q(o),T(r,Q)),p},delIndexDefinition:e=>(u(e),p),getStore:n,getIndexIds:o,getTableId:r,getSliceIds:e=>N(a(e)),getSliceRowIds:(e,t)=>E(O(a(e),t)),addSliceIdsListener:(e,s)=>f(s,t,[e]),addSliceRowIdsListener:(e,t,n)=>f(n,s,[e,t]),delListener:e=>(h(e),p),destroy:g,getListenerStats:()=>({})};return ee(p)})),ie=F([["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=>v(...e),(e,t)=>v(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:v(t,e)]],["min",[e=>I(...e),(e,t)=>I(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:I(t,e)]],["sum",[e=>u(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),de=U((e=>{const t=F(),[s,n,o,r,a,i,d,l]=K(e,C,(e=>isNaN(e)||R(e)||!0===e||!1===e||""===e?void 0:1*e)),[c,u,g]=Y((()=>f)),f={setMetricDefinition:(e,s,n,o,d,l,c)=>{const g=m(n)?[n,d,l,c]:O(ie,n)??O(ie,"sum");return i(e,s,((s,n,o,i,d,l)=>{let c=r(e),f=k(i);const[L,h,p,w]=g;l=l||R(c),D(n,(([e,t])=>{l||(c=R(e)?h?.(c,t,f++):R(t)?p?.(c,e,f--):w?.(c,t,e,f)),l=l||R(c)})),s(),M(i)?c=void 0:l&&(c=L(E(i),k(i))),y(c)||(c=void 0);const v=r(e);c!=v&&(a(e,c),u(t,[e],c,v))}),Q(o,1)),f},delMetricDefinition:e=>(d(e),f),getStore:s,getMetricIds:n,getTableId:o,getMetric:r,addMetricListener:(e,s)=>c(s,t,[e]),delListener:e=>(g(e),f),destroy:l,getListenerStats:()=>({})};return ee(f)})),le=(e,t,s,n,o)=>{let r,a=0;const i={load:async s=>{if(2!=a){a=1;const n=await t();R(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:()=>(T(r,e.delListener),i),getStore:()=>e,destroy:()=>i.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return ee(i)},ce=globalThis.window,ue=(e,t,s)=>{let n;return le(e,(async()=>s.getItem(t)),(async e=>s.setItem(t,e)),(e=>{n=n=>{n.storageArea===s&&n.key===t&&e()},ce.addEventListener("storage",n)}),(()=>{ce.removeEventListener("storage",n),n=void 0}))},ge=(e,t)=>ue(e,t,localStorage),fe=(e,t)=>ue(e,t,sessionStorage),Le=(s,n)=>{let o;return le(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}))},he=e=>e.headers.get("ETag"),pe=(e,t,s,n)=>{let o,r;return le(e,(async()=>{const e=await fetch(t);return r=he(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=he(s);R(r)||R(n)||n==r||(r=n,e())}),1e3*n)}),(()=>{T(o,clearInterval),o=void 0}))},we=U((e=>{const t=F(),s=F(),n=F(),o=F(),[r,a,i,d,l,c,u,g]=K(e,(()=>[F(),F(),F(),F()]),(e=>R(e)?void 0:e+"")),[f,L,h]=Y((()=>I)),p=(e,t,s)=>T(d(e),(([n,,o])=>{if(!A(o,t)){const r=q();if(i(e)!=v(e))G(r,t);else{let e=t;for(;!R(e)&&!A(r,e);)G(r,e),e=O(n,e)}if(s)return r;P(o,t,r)}return O(o,t)})),w=(e,t)=>T(d(e),(([,,e])=>P(e,t))),v=e=>O(t,e),I={setRelationshipDefinition:(e,r,a,i)=>(P(t,e,a),c(e,r,((t,r)=>{const a=q(),i=q(),l=q(),[c,u]=d(e);D(r,(([t,s],n)=>{R(t)||(G(i,t),T(O(u,t),(e=>{J(e,n),M(e)&&P(u,t)}))),R(s)||(G(i,s),A(u,s)||P(u,s,q()),G(O(u,s),n)),G(a,n),P(c,n,s),j(O(o,e),(t=>{A(p(e,t),n)&&G(l,t)}))})),t(),D(a,(t=>L(s,[e,t]))),D(i,(t=>L(n,[e,t]))),D(l,(t=>{w(e,t),L(o,[e,t])}))}),Q(i)),I),delRelationshipDefinition:e=>(P(t,e),u(e),I),getStore:r,getRelationshipIds:a,getLocalTableId:i,getRemoteTableId:v,getRemoteRowId:(e,t)=>O(d(e)?.[0],t),getLocalRowIds:(e,t)=>E(O(d(e)?.[1],t)),getLinkedRowIds:(e,t)=>R(d(e))?[t]:E(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=>(w(...h(e)),I),destroy:g,getListenerStats:()=>({})};return ee(I)})),ve=(e,t,s,n=P)=>{const o=(r=N(e),a=e=>!te(t,e),r.filter(a));var r,a;return c($(t),(n=>s(e,n,t[n]))),c(o,(t=>n(e,t))),e},Ie=e=>{const t=s(e);return b(t)||t==r&&y(e)?t:void 0},ye=(e,t)=>!(R(e)||!(e=>S(e,Z)&&e.constructor==Z)(e)||_(e))&&(ne(e,((s,n)=>{t(s,n)||se(e,n)})),!(e=>f($(e)))(e)),Se=(e,t,s)=>P(e,t,O(e,t)==-s?void 0:s),Re=()=>{let e,t=0,s=0;const n=F(),o=F(),a=F(),d=F(),l=F(),u=F(),g=F(),f=z(q),L=z(q),h=z(),v=z(),I=z(),y=z(),S=z(),[C,k,E,J]=Y((()=>Me)),G=(t,s)=>(!e||A(l,s))&&ye(t,(e=>K(s,e))),K=(e,t,s)=>ye(s?t:U(t,e),((s,n)=>T(Q(e,n,s),(e=>(t[n]=e,!0)),(()=>!1)))),Q=(t,s,n)=>e?T(O(O(l,t),s),(e=>Ie(n)!=e.type?e.default:n)):R(Ie(n))?void 0:n,U=(e,t)=>(T(O(u,t),(t=>ne(t,((t,s)=>{te(e,s)||(e[s]=t)})))),e),V=e=>ve(l,e,((e,t,s)=>{const n={};ve(B(l,t,F()),s,((e,t,s)=>{P(e,t,s),T(s.default,(e=>n[t]=e))})),P(u,t,n)}),((e,t)=>{P(l,t),P(u,t)})),X=e=>ve(g,e,((e,t,s)=>Z(t,s)),((e,t)=>de(t))),Z=(e,t)=>ve(B(g,e,F(),(()=>ue(e,1))),t,((t,s,n)=>$(e,t,s,n)),((t,s)=>le(e,t,s))),$=(e,t,s,n,o)=>ve(B(t,s,F(),(()=>ge(e,s,1))),n,((t,n,o)=>_(e,s,t,n,o)),((n,r)=>ce(e,t,s,n,r,o))),_=(e,t,s,n,o)=>{A(s,n)||fe(e,t,n,1);const r=O(s,n);o!==r&&(Le(e,t,n,r),P(s,n,o))},oe=(e,t,s)=>Ae((()=>$(e,ie(e),t,s))),re=(e,t,s,n,o)=>T(O(t,s),(t=>_(e,s,t,n,o)),(()=>$(e,t,s,U({[n]:o},e)))),ae=e=>{const s=""+t++;return A(e,s)?ae(e):s},ie=e=>O(g,e)??Z(e,{}),de=e=>Z(e,{}),le=(e,t,s)=>$(e,t,s,{},!0),ce=(e,t,s,n,o,r)=>{const a=O(u,e)?.[o];if(!R(a)&&!r)return _(e,s,n,o,a);const i=t=>{Le(e,s,t,O(n,t)),fe(e,s,t,-1),P(n,t)};R(a)?i(o):j(n,i),M(n)&&(ge(e,s,-1),M(P(t,s))&&(ue(e,-1),P(g,e)))},ue=(e,t)=>Se(n,e,t),ge=(e,t,s)=>Se(B(o,e,F()),t,s),fe=(e,t,s,n)=>Se(B(B(a,e,F()),t,F()),s,n),Le=(e,t,s,n)=>B(B(B(d,e,F()),t,F()),s,n),he=(e,t,s)=>{const n=O(O(d,e),t),o=me(e,t,s);return A(n,s)?[!0,O(n,s),o]:[!1,o,o]},pe=e=>{const t=M(y[e])&&M(v[e])&&M(L[e]),s=M(S[e])&&M(I[e])&&M(h[e])&&M(f[e]);if(t&&s)return;const r=e?[W(n),W(o,W),W(a,(e=>W(e,W))),W(d,(e=>W(e,W)))]:[n,o,a,d];if(t||(D(r[2],((t,s)=>D(t,((t,n)=>{M(t)||k(y[e],[s,n])})))),D(r[1],((t,s)=>{M(t)||k(v[e],[s])})),M(r[0])||k(L[e])),!s){let t;D(r[3],((s,n)=>{let o;D(s,((s,r)=>{let a;D(s,((s,i)=>{const d=me(n,r,i);d!==s&&(k(S[e],[n,r,i],d,s,he),t=o=a=1)})),a&&k(I[e],[n,r],he)})),o&&k(h[e],[n],he)})),t&&k(f[e],[],he)}},we=()=>H(g,(e=>H(e,H))),Re=()=>N(g),Te=e=>N(O(g,e)),be=(e,t)=>N(O(O(g,e),t)),me=(e,t,s)=>O(O(O(g,e),t),s),Ce=e=>((e=>ye(e,G))(e)&&Ae((()=>X(e))),Me),ke=()=>(Ae((()=>X({}))),Me),Ae=e=>{if(-1==s)return;s++;const t=e();return s--,0==s&&(s=1,pe(1),s=-1,pe(0),s=0,c([d,n,o,a],x)),t},Me={getTables:we,getTableIds:Re,getTable:e=>H(O(g,e),H),getRowIds:Te,getRow:(e,t)=>H(O(O(g,e),t)),getCellIds:be,getCell:me,hasTable:e=>A(g,e),hasRow:(e,t)=>A(O(g,e),t),hasCell:(e,t,s)=>A(O(O(g,e),t),s),getJson:()=>p(g),getSchemaJson:()=>p(l),setTables:Ce,setTable:(e,t)=>(G(t,e)&&Ae((()=>Z(e,t))),Me),setRow:(e,t,s)=>(K(e,s)&&oe(e,t,s),Me),addRow:(e,t)=>{let s;return K(e,t)&&(s=ae(O(g,e)),oe(e,s,t)),s},setPartialRow:(e,t,s)=>(K(e,s,1)&&Ae((()=>{const n=ie(e);ne(s,((s,o)=>re(e,n,t,o,s)))})),Me),setCell:(e,t,s,n)=>(T(Q(e,s,m(n)?n(me(e,t,s)):n),(n=>Ae((()=>re(e,ie(e),t,s,n))))),Me),setJson:e=>{try{"{}"===e?ke():Ce(w(e))}catch{}return Me},setSchema:t=>{if((e=(e=>ye(e,(e=>ye(e,(e=>{if(!ye(e,((e,t)=>i(["type","default"],t))))return!1;const t=e.type;return!(!b(t)&&t!=r||(Ie(e.default)!=t&&se(e,"default"),0))})))))(t))&&(V(t),!M(g))){const e=we();ke(),Ce(e)}return Me},delTables:ke,delTable:e=>(A(g,e)&&Ae((()=>de(e))),Me),delRow:(e,t)=>(T(O(g,e),(s=>{A(s,t)&&Ae((()=>le(e,s,t)))})),Me),delCell:(e,t,s,n)=>(T(O(g,e),(o=>T(O(o,t),(r=>{A(r,s)&&Ae((()=>ce(e,o,t,r,s,n)))})))),Me),delSchema:()=>(V({}),e=!1,Me),transaction:Ae,forEachTable:e=>D(g,((t,s)=>e(s,(e=>D(t,((t,s)=>e(s,(e=>j(t,e))))))))),forEachRow:(e,t)=>D(O(g,e),((e,s)=>t(s,(t=>j(e,t))))),forEachCell:(e,t,s)=>j(O(O(g,e),t),s),addTablesListener:(e,t)=>C(e,f[t?1:0]),addTableIdsListener:(e,t)=>C(e,L[t?1:0]),addTableListener:(e,t,s)=>C(t,h[s?1:0],[e]),addRowIdsListener:(e,t,s)=>C(t,v[s?1:0],[e]),addRowListener:(e,t,s,n)=>C(s,I[n?1:0],[e,t]),addCellIdsListener:(e,t,s,n)=>C(s,y[n?1:0],[e,t]),addCellListener:(e,t,s,n,o)=>C(n,S[o?1:0],[e,t,s]),callListener:e=>(J(e,[Re,Te,be],(e=>R(e[2])?[]:[,,].fill(me(...e)))),Me),delListener:e=>(E(e),Me),getListenerStats:()=>({})};return ee(Me)};export{oe as createCheckpoints,le as createCustomPersister,Le as createFilePersister,ae as createIndexes,ge as createLocalPersister,de as createMetrics,we as createRelationships,pe as createRemotePersister,fe as createSessionPersister,Re 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,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),p=e=>JSON.stringify(e,((e,t)=>y(t,Map)?f([...t],((e,[t,s])=>(e[t]=s,e)),{}):t)),w=JSON.parse,v=Math.max,I=Math.min,S=isFinite,y=(e,t)=>e instanceof t,R=e=>null==e,T=(e,t,s)=>R(e)?s?.():t(e),b=e=>e==n||e==o,C=e=>s(e)==a,m=()=>{},E=e=>e.size,k=(e,t)=>e?.has(t)??!1,M=e=>R(e)||0==E(e),A=e=>[...e?.values()??[]],x=e=>e.clear(),D=(e,t)=>e?.forEach(t),J=(e,t)=>e?.delete(t),F=e=>new Map(e),z=(e=F)=>[e(),e()],N=e=>[...e?.keys()??[]],O=(e,t)=>e?.get(t),j=(e,t)=>D(e,((e,s)=>t(s,e))),P=(e,t,s)=>R(s)?(J(e,t),e):e?.set(t,s),B=(e,t,s,n)=>(k(e,t)||(n?.(s),e.set(t,s)),O(e,t)),H=(e,t)=>{const s={},n=t??(e=>e);return D(e,((e,t)=>s[t]=n(e))),s},W=(e,t)=>{const s=F(),n=t??(e=>e);return D(e,((e,t)=>s.set(t,n(e)))),s},q=e=>new Set(e),G=(e,t)=>e?.add(t),K=(e,t,s)=>{const n=e.hasRow,o=F(),r=F(),a=F(),i=F(),d=F(),l=t=>T(O(d,t),(s=>{D(s,e.delListener),P(d,t)})),u=e=>{P(o,e),P(r,e),P(a,e),P(i,e),l(e)};return[()=>e,()=>N(o),e=>j(r,e),e=>k(r,e),e=>O(o,e),e=>O(r,e),(e,t)=>P(r,e,t),(u,h,g,f,L)=>{const p=F(),w=F();P(o,u,h),k(r,u)||(P(r,u,t()),P(a,u,F()),P(i,u,F()));const v=O(a,u),I=O(i,u),S=t=>{const o=s=>e.getCell(h,t,s),r=O(v,t),a=n(h,t)?s(f(o,t)):void 0;if(r!=a&&P(p,t,[r,a]),!R(L)){const e=O(I,t),s=n(h,t)?L(o,t):void 0;e!=s&&P(w,t,s)}},y=e=>{g((()=>{D(p,(([,e],t)=>P(v,t,e))),D(w,((e,t)=>P(I,t,e)))}),p,w,v,I,e),x(p),x(w)};j(v,S),e.hasTable(h)&&c(e.getRowIds(h),(e=>{k(v,e)||S(e)})),y(!0),l(u),P(d,u,q([e.addRowListener(h,null,((e,t,s)=>S(s))),e.addTableListener(h,(()=>y()))]))},u,()=>j(d,u)]},Q=(e,t)=>s(e)==n?t=>t(e):e??(()=>t??""),U=e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))},V=(e,t,s)=>h(s)<2?G(g(s)?e:B(e,s[0],q()),t):V(B(e,s[0],F()),t,L(s)),X=e=>{const t=(s,n,...o)=>T(s,(s=>g(o)?e(s,n):c([o[0],null],(e=>t(O(s,e),n,...L(o))))));return t},Y=e=>{let t,s=0;const n=[],o=F();return[(r,a,i=[])=>{t??=e();const d=n.pop()??""+s++;return P(o,d,[r,a,i]),V(a,d,i),d},(e,s=[],...n)=>X(D)(e,(e=>T(O(o,e),(([e])=>e(t,...s,...n)))),...s),e=>T(O(o,e),(([,t,s])=>(X(J)(t,e,...s),P(o,e),h(n)<1e3&&n.push(e),s)),(()=>[])),(e,s,n)=>T(O(o,e),(([e,,o])=>{const r=(...a)=>{const i=h(a);i==h(o)?e(t,...a,...n(a)):R(o[i])?c(s[i](...a),(e=>r(...a,e))):r(...a,o[i])};r()}))]},Z=Object,$=Z.keys,_=Z.isFrozen,ee=Z.freeze,te=(e,t)=>!R(((e,t)=>T(e,(e=>e[t])))(e,t)),se=(e,t)=>delete e[t],ne=(e,t)=>c(Z.entries(e),(([e,s])=>t(s,e))),oe=U((e=>{let t,s,n,o=100,r=F(),a=1;const d=q(),l=F(),[u,f,L]=Y((()=>W)),p=F(),w=F(),v=[],I=[],S=(t,s)=>{a=0,e.transaction((()=>D(O(p,s),((s,n)=>D(s,((s,o)=>D(s,((s,r)=>R(s[t])?e.delCell(n,o,r,!0):e.setCell(n,o,r,s[t]))))))))),a=1},y=e=>{P(p,e),P(w,e),f(l,[e])},b=(e,t)=>c(((e,t)=>e.splice(0,t))(e,t??h(e)),y),C=()=>b(v,h(v)-o),m=e.addCellListener(null,null,null,((e,s,o,i,d,l)=>{if(a){T(t,(()=>{v.push(t),C(),b(I),t=void 0,n=1}));const e=B(r,s,F()),a=B(e,o,F()),c=B(a,i,[void 0,void 0],(e=>e[0]=l));c[1]=d,c[0]===c[1]&&M(P(a,i))&&M(P(e,o))&&M(P(r,s))&&(t=v.pop(),n=1),J()}})),E=(e="")=>(R(t)&&(t=""+s++,P(p,t,r),N(t,e),r=F(),n=1),t),A=()=>{g(v)||(I.unshift(E()),S(0,t),t=v.pop(),n=1)},x=()=>{g(I)||(v.push(t),t=I.shift(),S(1,t),n=1)},J=()=>{n&&(f(d),n=0)},z=e=>{const t=E(e);return J(),t},N=(e,t)=>(H(e)&&O(w,e)!==t&&(P(w,e,t),f(l,[e])),W),H=e=>k(p,e),W={setSize:e=>(o=e,C(),W),addCheckpoint:z,setCheckpoint:N,getStore:()=>e,getCheckpointIds:()=>[[...v],t,[...I]],forEachCheckpoint:e=>j(w,e),hasCheckpoint:H,getCheckpoint:e=>O(w,e),goBackward:()=>(A(),J(),W),goForward:()=>(x(),J(),W),goTo:e=>{const s=i(v,e)?A:i(I,e)?x:null;for(;!R(s)&&e!=t;)s();return J(),W},addCheckpointIdsListener:e=>u(e,d),addCheckpointListener:(e,t)=>u(t,l,[e]),delListener:e=>(L(e),W),clear:()=>(b(v),b(I),R(t)||y(t),t=void 0,s=0,z(),W),destroy:()=>{e.delListener(m)},getListenerStats:()=>({})};return ee(W.clear())})),re=(e,t)=>e<t?-1:1,ae=U((e=>{const t=F(),s=F(),[n,o,r,a,i,c,u,h,g,f]=K(e,F,(e=>R(e)?"":e+"")),[L,p,w]=Y((()=>I)),v=(t,s,n)=>{const o=i(t);D(n,((t,n)=>s(n,(s=>D(t,(t=>s(t,(s=>e.forEachCell(o,t,s)))))))))},I={setIndexDefinition:(e,n,o,r,a,i=re)=>{const g=R(a)?void 0:([e],[t])=>a(e,t);return h(e,n,((n,o,a,h,f,L)=>{let w=0;const v=q(),I=q(),S=c(e);if(D(o,(([e,t],s)=>{R(e)||(G(v,e),T(O(S,e),(t=>{J(t,s),M(t)&&(P(S,e),w=1)}))),R(t)||(G(v,t),k(S,t)||(P(S,t,q()),w=1),G(O(S,t),s),R(r)||G(I,t))})),n(),M(f)||(L?j(S,(e=>G(I,e))):j(a,(e=>T(O(h,e),(e=>G(I,e))))),D(I,(e=>{const t=(t,s)=>i(O(f,t),O(f,s),e),s=[...O(S,e)];d(s,t)||(P(S,e,q(l(s,t))),G(v,e))}))),(w||L)&&!R(g)){const t=[...S];d(t,g)||(u(e,F(l(t,g))),w=1)}w&&p(t,[e]),D(v,(t=>p(s,[e,t])))}),Q(o),T(r,Q)),I},delIndexDefinition:e=>(g(e),I),getStore:n,getIndexIds:o,forEachIndex:e=>r(((t,s)=>e(t,(e=>v(t,e,s))))),forEachSlice:(e,t)=>v(e,t,c(e)),hasIndex:a,hasSlice:(e,t)=>k(c(e),t),getTableId:i,getSliceIds:e=>N(c(e)),getSliceRowIds:(e,t)=>A(O(c(e),t)),addSliceIdsListener:(e,s)=>L(s,t,[e]),addSliceRowIdsListener:(e,t,n)=>L(n,s,[e,t]),delListener:e=>(w(e),I),destroy:f,getListenerStats:()=>({})};return ee(I)})),ie=F([["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=>v(...e),(e,t)=>v(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:v(t,e)]],["min",[e=>I(...e),(e,t)=>I(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:I(t,e)]],["sum",[e=>u(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),de=U((e=>{const t=F(),[s,n,o,r,a,i,d,l,c,u]=K(e,m,(e=>isNaN(e)||R(e)||!0===e||!1===e||""===e?void 0:1*e)),[h,g,f]=Y((()=>L)),L={setMetricDefinition:(e,s,n,o,r,a,c)=>{const u=C(n)?[n,r,a,c]:O(ie,n)??O(ie,"sum");return l(e,s,((s,n,o,r,a,l)=>{let c=i(e),h=E(r);const[f,L,p,w]=u;l=l||R(c),D(n,(([e,t])=>{l||(c=R(e)?L?.(c,t,h++):R(t)?p?.(c,e,h--):w?.(c,t,e,h)),l=l||R(c)})),s(),M(r)?c=void 0:l&&(c=f(A(r),E(r))),S(c)||(c=void 0);const v=i(e);c!=v&&(d(e,c),g(t,[e],c,v))}),Q(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 ee(L)})),le=(e,t,s,n,o)=>{let r,a=0;const i={load:async s=>{if(2!=a){a=1;const n=await t();R(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:()=>(T(r,e.delListener),i),getStore:()=>e,destroy:()=>i.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return ee(i)},ce=globalThis.window,ue=(e,t,s)=>{let n;return le(e,(async()=>s.getItem(t)),(async e=>s.setItem(t,e)),(e=>{n=n=>{n.storageArea===s&&n.key===t&&e()},ce.addEventListener("storage",n)}),(()=>{ce.removeEventListener("storage",n),n=void 0}))},he=(e,t)=>ue(e,t,localStorage),ge=(e,t)=>ue(e,t,sessionStorage),fe=(s,n)=>{let o;return le(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}))},Le=e=>e.headers.get("ETag"),pe=(e,t,s,n)=>{let o,r;return le(e,(async()=>{const e=await fetch(t);return r=Le(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=Le(s);R(r)||R(n)||n==r||(r=n,e())}),1e3*n)}),(()=>{T(o,clearInterval),o=void 0}))},we=U((e=>{const t=F(),s=F(),n=F(),o=F(),[r,a,i,d,l,c,u,h,g,f]=K(e,(()=>[F(),F(),F(),F()]),(e=>R(e)?void 0:e+"")),[L,p,w]=Y((()=>y)),v=(e,t,s)=>T(c(e),(([n,,o])=>{if(!k(o,t)){const r=q();if(l(e)!=S(e))G(r,t);else{let e=t;for(;!R(e)&&!k(r,e);)G(r,e),e=O(n,e)}if(s)return r;P(o,t,r)}return O(o,t)})),I=(e,t)=>T(c(e),(([,,e])=>P(e,t))),S=e=>O(t,e),y={setRelationshipDefinition:(e,r,a,i)=>(P(t,e,a),h(e,r,((t,r)=>{const a=q(),i=q(),d=q(),[l,u]=c(e);D(r,(([t,s],n)=>{R(t)||(G(i,t),T(O(u,t),(e=>{J(e,n),M(e)&&P(u,t)}))),R(s)||(G(i,s),k(u,s)||P(u,s,q()),G(O(u,s),n)),G(a,n),P(l,n,s),j(O(o,e),(t=>{k(v(e,t),n)&&G(d,t)}))})),t(),D(a,(t=>p(s,[e,t]))),D(i,(t=>p(n,[e,t]))),D(d,(t=>{I(e,t),p(o,[e,t])}))}),Q(i)),y),delRelationshipDefinition:e=>(P(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)=>O(c(e)?.[0],t),getLocalRowIds:(e,t)=>A(O(c(e)?.[1],t)),getLinkedRowIds:(e,t)=>R(c(e))?[t]:A(v(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)=>(v(e,t),L(s,o,[e,t])),delListener:e=>(I(...w(e)),y),destroy:f,getListenerStats:()=>({})};return ee(y)})),ve=(e,t,s,n=P)=>{const o=(r=N(e),a=e=>!te(t,e),r.filter(a));var r,a;return c($(t),(n=>s(e,n,t[n]))),c(o,(t=>n(e,t))),e},Ie=e=>{const t=s(e);return b(t)||t==r&&S(e)?t:void 0},Se=(e,t)=>!(R(e)||!(e=>y(e,Z)&&e.constructor==Z)(e)||_(e))&&(ne(e,((s,n)=>{t(s,n)||se(e,n)})),!(e=>g($(e)))(e)),ye=(e,t,s)=>P(e,t,O(e,t)==-s?void 0:s),Re=()=>{let e,t=0,s=0;const n=F(),o=F(),a=F(),d=F(),l=F(),u=F(),h=F(),g=z(q),f=z(q),L=z(),v=z(),I=z(),S=z(),y=z(),[m,E,A,J]=Y((()=>Me)),G=(t,s)=>(!e||k(l,s))&&Se(t,(e=>K(s,e))),K=(e,t,s)=>Se(s?t:U(t,e),((s,n)=>T(Q(e,n,s),(e=>(t[n]=e,!0)),(()=>!1)))),Q=(t,s,n)=>e?T(O(O(l,t),s),(e=>Ie(n)!=e.type?e.default:n)):R(Ie(n))?void 0:n,U=(e,t)=>(T(O(u,t),(t=>ne(t,((t,s)=>{te(e,s)||(e[s]=t)})))),e),V=e=>ve(l,e,((e,t,s)=>{const n={};ve(B(l,t,F()),s,((e,t,s)=>{P(e,t,s),T(s.default,(e=>n[t]=e))})),P(u,t,n)}),((e,t)=>{P(l,t),P(u,t)})),X=e=>ve(h,e,((e,t,s)=>Z(t,s)),((e,t)=>de(t))),Z=(e,t)=>ve(B(h,e,F(),(()=>ue(e,1))),t,((t,s,n)=>$(e,t,s,n)),((t,s)=>le(e,t,s))),$=(e,t,s,n,o)=>ve(B(t,s,F(),(()=>he(e,s,1))),n,((t,n,o)=>_(e,s,t,n,o)),((n,r)=>ce(e,t,s,n,r,o))),_=(e,t,s,n,o)=>{k(s,n)||ge(e,t,n,1);const r=O(s,n);o!==r&&(fe(e,t,n,r),P(s,n,o))},oe=(e,t,s)=>ke((()=>$(e,ie(e),t,s))),re=(e,t,s,n,o)=>T(O(t,s),(t=>_(e,s,t,n,o)),(()=>$(e,t,s,U({[n]:o},e)))),ae=e=>{const s=""+t++;return k(e,s)?ae(e):s},ie=e=>O(h,e)??Z(e,{}),de=e=>Z(e,{}),le=(e,t,s)=>$(e,t,s,{},!0),ce=(e,t,s,n,o,r)=>{const a=O(u,e)?.[o];if(!R(a)&&!r)return _(e,s,n,o,a);const i=t=>{fe(e,s,t,O(n,t)),ge(e,s,t,-1),P(n,t)};R(a)?i(o):j(n,i),M(n)&&(he(e,s,-1),M(P(t,s))&&(ue(e,-1),P(h,e)))},ue=(e,t)=>ye(n,e,t),he=(e,t,s)=>ye(B(o,e,F()),t,s),ge=(e,t,s,n)=>ye(B(B(a,e,F()),t,F()),s,n),fe=(e,t,s,n)=>B(B(B(d,e,F()),t,F()),s,n),Le=(e,t,s)=>{const n=O(O(d,e),t),o=Ce(e,t,s);return k(n,s)?[!0,O(n,s),o]:[!1,o,o]},pe=e=>{const t=M(S[e])&&M(v[e])&&M(f[e]),s=M(y[e])&&M(I[e])&&M(L[e])&&M(g[e]);if(t&&s)return;const r=e?[W(n),W(o,W),W(a,(e=>W(e,W))),W(d,(e=>W(e,W)))]:[n,o,a,d];if(t||(D(r[2],((t,s)=>D(t,((t,n)=>{M(t)||E(S[e],[s,n])})))),D(r[1],((t,s)=>{M(t)||E(v[e],[s])})),M(r[0])||E(f[e])),!s){let t;D(r[3],((s,n)=>{let o;D(s,((s,r)=>{let a;D(s,((s,i)=>{const d=Ce(n,r,i);d!==s&&(E(y[e],[n,r,i],d,s,Le),t=o=a=1)})),a&&E(I[e],[n,r],Le)})),o&&E(L[e],[n],Le)})),t&&E(g[e],[],Le)}},we=()=>H(h,(e=>H(e,H))),Re=()=>N(h),Te=e=>N(O(h,e)),be=(e,t)=>N(O(O(h,e),t)),Ce=(e,t,s)=>O(O(O(h,e),t),s),me=e=>((e=>Se(e,G))(e)&&ke((()=>X(e))),Me),Ee=()=>(ke((()=>X({}))),Me),ke=e=>{if(-1==s)return;s++;const t=e();return s--,0==s&&(s=1,pe(1),s=-1,pe(0),s=0,c([d,n,o,a],x)),t},Me={getTables:we,getTableIds:Re,getTable:e=>H(O(h,e),H),getRowIds:Te,getRow:(e,t)=>H(O(O(h,e),t)),getCellIds:be,getCell:Ce,hasTables:()=>!M(h),hasTable:e=>k(h,e),hasRow:(e,t)=>k(O(h,e),t),hasCell:(e,t,s)=>k(O(O(h,e),t),s),getJson:()=>p(h),getSchemaJson:()=>p(l),setTables:me,setTable:(e,t)=>(G(t,e)&&ke((()=>Z(e,t))),Me),setRow:(e,t,s)=>(K(e,s)&&oe(e,t,s),Me),addRow:(e,t)=>{let s;return K(e,t)&&(s=ae(O(h,e)),oe(e,s,t)),s},setPartialRow:(e,t,s)=>(K(e,s,1)&&ke((()=>{const n=ie(e);ne(s,((s,o)=>re(e,n,t,o,s)))})),Me),setCell:(e,t,s,n)=>(T(Q(e,s,C(n)?n(Ce(e,t,s)):n),(n=>ke((()=>re(e,ie(e),t,s,n))))),Me),setJson:e=>{try{"{}"===e?Ee():me(w(e))}catch{}return Me},setSchema:t=>{if((e=(e=>Se(e,(e=>Se(e,(e=>{if(!Se(e,((e,t)=>i(["type","default"],t))))return!1;const t=e.type;return!(!b(t)&&t!=r||(Ie(e.default)!=t&&se(e,"default"),0))})))))(t))&&(V(t),!M(h))){const e=we();Ee(),me(e)}return Me},delTables:Ee,delTable:e=>(k(h,e)&&ke((()=>de(e))),Me),delRow:(e,t)=>(T(O(h,e),(s=>{k(s,t)&&ke((()=>le(e,s,t)))})),Me),delCell:(e,t,s,n)=>(T(O(h,e),(o=>T(O(o,t),(r=>{k(r,s)&&ke((()=>ce(e,o,t,r,s,n)))})))),Me),delSchema:()=>(V({}),e=!1,Me),transaction:ke,forEachTable:e=>D(h,((t,s)=>e(s,(e=>D(t,((t,s)=>e(s,(e=>j(t,e))))))))),forEachRow:(e,t)=>D(O(h,e),((e,s)=>t(s,(t=>j(e,t))))),forEachCell:(e,t,s)=>j(O(O(h,e),t),s),addTablesListener:(e,t)=>m(e,g[t?1:0]),addTableIdsListener:(e,t)=>m(e,f[t?1:0]),addTableListener:(e,t,s)=>m(t,L[s?1:0],[e]),addRowIdsListener:(e,t,s)=>m(t,v[s?1:0],[e]),addRowListener:(e,t,s,n)=>m(s,I[n?1:0],[e,t]),addCellIdsListener:(e,t,s,n)=>m(s,S[n?1:0],[e,t]),addCellListener:(e,t,s,n,o)=>m(n,y[o?1:0],[e,t,s]),callListener:e=>(J(e,[Re,Te,be],(e=>R(e[2])?[]:[,,].fill(Ce(...e)))),Me),delListener:e=>(A(e),Me),getListenerStats:()=>({})};return ee(Me)};export{oe as createCheckpoints,le as createCustomPersister,fe as createFilePersister,ae as createIndexes,he as createLocalPersister,de as createMetrics,we as createRelationships,pe as createRemotePersister,ge as createSessionPersister,Re as createStore,re as defaultSorter};
Binary file
@@ -1 +1 @@
1
- var e,t;e=this,t=function(e){"use strict";const t=(e,t)=>e.includes(t),n=(e,t)=>e.forEach(t),o=e=>e.length,s=e=>0==o(e),i=e=>e.slice(1),r=e=>null==e,l=(e,t,n)=>r(e)?n?.():t(e),c=(e,t)=>e?.has(t)??!1,d=e=>r(e)||0==(e=>e.size)(e),p=(e,t)=>e?.forEach(t),a=(e,t)=>e?.delete(t),u=e=>new Map(e),h=(e,t)=>e?.get(t),f=(e,t,n)=>r(n)?(a(e,t),e):e?.set(t,n),g=(e,t,n,o)=>(c(e,t)||(o?.(n),e.set(t,n)),h(e,t)),C=e=>new Set(e),k=(e,t,n)=>o(n)<2?((e,t)=>e?.add(t))(s(n)?e:g(e,n[0],C()),t):k(g(e,n[0],u()),t,i(n)),y=e=>{const t=(o,r,...c)=>l(o,(o=>s(c)?e(o,r):n([c[0],null],(e=>t(h(o,e),r,...i(c))))));return t},v=Object.freeze,L=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{let i,L,b,w=100,S=u(),T=1;const j=C(),x=u(),[z,M,m]=(e=>{let t,s=0;const i=[],c=u();return[(n,o,r=[])=>{t??=e();const l=i.pop()??""+s++;return f(c,l,[n,o,r]),k(o,l,r),l},(e,n=[],...o)=>y(p)(e,(e=>l(h(c,e),(([e])=>e(t,...n,...o)))),...n),e=>l(h(c,e),(([,t,n])=>(y(a)(t,e,...n),f(c,e),o(i)<1e3&&i.push(e),n)),(()=>[])),(e,s,i)=>l(h(c,e),(([e,,l])=>{const c=(...d)=>{const p=o(d);p==o(l)?e(t,...d,...i(d)):r(l[p])?n(s[p](...d),(e=>c(...d,e))):c(...d,l[p])};c()}))]})((()=>N)),B=u(),E=u(),I=[],O=[],_=(t,n)=>{T=0,e.transaction((()=>p(h(B,n),((n,o)=>p(n,((n,s)=>p(n,((n,i)=>r(n[t])?e.delCell(o,s,i,!0):e.setCell(o,s,i,n[t]))))))))),T=1},F=e=>{f(B,e),f(E,e),M(x,[e])},P=(e,t)=>n(((e,t)=>e.splice(0,t))(e,t??o(e)),F),W=()=>P(I,o(I)-w),q=e.addCellListener(null,null,null,((e,t,n,o,s,r)=>{if(T){l(i,(()=>{I.push(i),W(),P(O),i=void 0,b=1}));const e=g(S,t,u()),c=g(e,n,u()),p=g(c,o,[void 0,void 0],(e=>e[0]=r));p[1]=s,p[0]===p[1]&&d(f(c,o))&&d(f(e,n))&&d(f(S,t))&&(i=I.pop(),b=1),H()}})),A=(e="")=>(r(i)&&(i=""+L++,f(B,i,S),K(i,e),S=u(),b=1),i),D=()=>{s(I)||(O.unshift(A()),_(0,i),i=I.pop(),b=1)},G=()=>{s(O)||(I.push(i),i=O.shift(),_(1,i),b=1)},H=()=>{b&&(M(j),b=0)},J=e=>{const t=A(e);return H(),t},K=(e,t)=>(c(B,e)&&h(E,e)!==t&&(f(E,e,t),M(x,[e])),N),N={setSize:e=>(w=e,W(),N),addCheckpoint:J,setCheckpoint:K,getStore:()=>e,getCheckpointIds:()=>[[...I],i,[...O]],getCheckpoint:e=>h(E,e),goBackward:()=>(D(),H(),N),goForward:()=>(G(),H(),N),goTo:e=>{const n=t(I,e)?D:t(O,e)?G:null;for(;!r(n)&&e!=i;)n();return H(),N},addCheckpointIdsListener:e=>z(e,j),addCheckpointListener:(e,t)=>z(t,x,[e]),delListener:e=>(m(e),N),clear:()=>(P(I),P(O),r(i)||F(i),i=void 0,L=0,J(),N),destroy:()=>{e.delListener(q)},getListenerStats:()=>({})};return v(N.clear())}));e.createCheckpoints=L,Object.defineProperty(e,"__esModule",{value:!0})},"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={});
1
+ var e,t;e=this,t=function(e){"use strict";const t=(e,t)=>e.includes(t),n=(e,t)=>e.forEach(t),o=e=>e.length,s=e=>0==o(e),r=e=>e.slice(1),i=e=>null==e,c=(e,t,n)=>i(e)?n?.():t(e),l=(e,t)=>e?.has(t)??!1,d=e=>i(e)||0==(e=>e.size)(e),a=(e,t)=>e?.forEach(t),p=(e,t)=>e?.delete(t),u=e=>new Map(e),h=(e,t)=>e?.get(t),f=(e,t,n)=>i(n)?(p(e,t),e):e?.set(t,n),C=(e,t,n,o)=>(l(e,t)||(o?.(n),e.set(t,n)),h(e,t)),g=e=>new Set(e),k=(e,t,n)=>o(n)<2?((e,t)=>e?.add(t))(s(n)?e:C(e,n[0],g()),t):k(C(e,n[0],u()),t,r(n)),v=e=>{const t=(o,i,...l)=>c(o,(o=>s(l)?e(o,i):n([l[0],null],(e=>t(h(o,e),i,...r(l))))));return t},y=Object.freeze,L=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{let r,L,b,w=100,S=u(),T=1;const j=g(),x=u(),[z,E,M]=(e=>{let t,s=0;const r=[],l=u();return[(n,o,i=[])=>{t??=e();const c=r.pop()??""+s++;return f(l,c,[n,o,i]),k(o,c,i),c},(e,n=[],...o)=>v(a)(e,(e=>c(h(l,e),(([e])=>e(t,...n,...o)))),...n),e=>c(h(l,e),(([,t,n])=>(v(p)(t,e,...n),f(l,e),o(r)<1e3&&r.push(e),n)),(()=>[])),(e,s,r)=>c(h(l,e),(([e,,c])=>{const l=(...d)=>{const a=o(d);a==o(c)?e(t,...d,...r(d)):i(c[a])?n(s[a](...d),(e=>l(...d,e))):l(...d,c[a])};l()}))]})((()=>Q)),m=u(),B=u(),I=[],O=[],_=(t,n)=>{T=0,e.transaction((()=>a(h(m,n),((n,o)=>a(n,((n,s)=>a(n,((n,r)=>i(n[t])?e.delCell(o,s,r,!0):e.setCell(o,s,r,n[t]))))))))),T=1},F=e=>{f(m,e),f(B,e),E(x,[e])},P=(e,t)=>n(((e,t)=>e.splice(0,t))(e,t??o(e)),F),W=()=>P(I,o(I)-w),q=e.addCellListener(null,null,null,((e,t,n,o,s,i)=>{if(T){c(r,(()=>{I.push(r),W(),P(O),r=void 0,b=1}));const e=C(S,t,u()),l=C(e,n,u()),a=C(l,o,[void 0,void 0],(e=>e[0]=i));a[1]=s,a[0]===a[1]&&d(f(l,o))&&d(f(e,n))&&d(f(S,t))&&(r=I.pop(),b=1),H()}})),A=(e="")=>(i(r)&&(r=""+L++,f(m,r,S),K(r,e),S=u(),b=1),r),D=()=>{s(I)||(O.unshift(A()),_(0,r),r=I.pop(),b=1)},G=()=>{s(O)||(I.push(r),r=O.shift(),_(1,r),b=1)},H=()=>{b&&(E(j),b=0)},J=e=>{const t=A(e);return H(),t},K=(e,t)=>(N(e)&&h(B,e)!==t&&(f(B,e,t),E(x,[e])),Q),N=e=>l(m,e),Q={setSize:e=>(w=e,W(),Q),addCheckpoint:J,setCheckpoint:K,getStore:()=>e,getCheckpointIds:()=>[[...I],r,[...O]],forEachCheckpoint:e=>{return t=e,a(B,((e,n)=>t(n,e)));var t},hasCheckpoint:N,getCheckpoint:e=>h(B,e),goBackward:()=>(D(),H(),Q),goForward:()=>(G(),H(),Q),goTo:e=>{const n=t(I,e)?D:t(O,e)?G:null;for(;!i(n)&&e!=r;)n();return H(),Q},addCheckpointIdsListener:e=>z(e,j),addCheckpointListener:(e,t)=>z(t,x,[e]),delListener:e=>(M(e),Q),clear:()=>(P(I),P(O),i(r)||F(r),r=void 0,L=0,J(),Q),destroy:()=>{e.delListener(q)},getListenerStats:()=>({})};return y(Q.clear())}));e.createCheckpoints=L,Object.defineProperty(e,"__esModule",{value:!0})},"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
@@ -1 +1 @@
1
- var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,n=t(""),s=(e,t)=>e.every(((n,s)=>0==s||t(e[s-1],n)<=0)),o=(e,t)=>e.sort(t),d=(e,t)=>e.forEach(t),i=e=>e.length,r=e=>0==i(e),l=e=>e.slice(1),c=e=>null==e,a=(e,t,n)=>c(e)?n?.():t(e),f=(e,t)=>e?.has(t)??!1,u=e=>c(e)||0==(e=>e.size)(e),p=e=>e.clear(),g=(e,t)=>e?.forEach(t),I=(e,t)=>e?.delete(t),h=e=>new Map(e),y=e=>[...e?.keys()??[]],b=(e,t)=>e?.get(t),w=(e,t)=>g(e,((e,n)=>t(n,e))),x=(e,t,n)=>c(n)?(I(e,t),e):e?.set(t,n),v=(e,t,n,s)=>(f(e,t)||(s?.(n),e.set(t,n)),b(e,t)),L=e=>new Set(e),S=(e,t)=>e?.add(t),T=(e,s)=>t(e)==n?t=>t(e):e??(()=>s??""),R=(e,t)=>e<t?-1:1,j=(e,t,n)=>i(n)<2?S(r(n)?e:v(e,n[0],L()),t):j(v(e,n[0],h()),t,l(n)),M=e=>{const t=(n,s,...o)=>a(n,(n=>r(o)?e(n,s):d([o[0],null],(e=>t(b(n,e),s,...l(o))))));return t},k=Object.freeze,m=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{const t=h(),n=h(),[r,l,v,m,z,D,E,O]=((e,t,n)=>{const s=e.hasRow,o=h(),i=h(),r=h(),l=h(),u=h(),I=t=>a(b(u,t),(n=>{g(n,e.delListener),x(u,t)})),v=e=>{x(o,e),x(i,e),x(r,e),x(l,e),I(e)};return[()=>e,()=>y(o),e=>b(o,e),e=>b(i,e),(e,t)=>x(i,e,t),(a,y,v,S,T)=>{const R=h(),j=h();x(o,a,y),f(i,a)||(x(i,a,t()),x(r,a,h()),x(l,a,h()));const M=b(r,a),k=b(l,a),m=t=>{const o=n=>e.getCell(y,t,n),d=b(M,t),i=s(y,t)?n(S(o,t)):void 0;if(d!=i&&x(R,t,[d,i]),!c(T)){const e=b(k,t),n=s(y,t)?T(o,t):void 0;e!=n&&x(j,t,n)}},z=e=>{v((()=>{g(R,(([,e],t)=>x(M,t,e))),g(j,((e,t)=>x(k,t,e)))}),R,j,M,k,e),p(R),p(j)};w(M,m),e.hasTable(y)&&d(e.getRowIds(y),(e=>{f(M,e)||m(e)})),z(!0),I(a),x(u,a,L([e.addRowListener(y,null,((e,t,n)=>m(n))),e.addTableListener(y,(()=>z()))]))},v,()=>w(u,v)]})(e,h,(e=>c(e)?"":e+"")),[_,B,C]=(e=>{let t,n=0;const s=[],o=h();return[(d,i,r=[])=>{t??=e();const l=s.pop()??""+n++;return x(o,l,[d,i,r]),j(i,l,r),l},(e,n=[],...s)=>M(g)(e,(e=>a(b(o,e),(([e])=>e(t,...n,...s)))),...n),e=>a(b(o,e),(([,t,n])=>(M(I)(t,e,...n),x(o,e),i(s)<1e3&&s.push(e),n)),(()=>[])),(e,n,s)=>a(b(o,e),(([e,,o])=>{const r=(...l)=>{const a=i(l);a==i(o)?e(t,...l,...s(l)):c(o[a])?d(n[a](...l),(e=>r(...l,e))):r(...l,o[a])};r()}))]})((()=>P)),P={setIndexDefinition:(e,d,i,r,l,p=R)=>{const y=c(l)?void 0:([e],[t])=>l(e,t);return D(e,d,((d,i,l,v,T,R)=>{let j=0;const M=L(),k=L(),D=m(e);if(g(i,(([e,t],n)=>{c(e)||(S(M,e),a(b(D,e),(t=>{I(t,n),u(t)&&(x(D,e),j=1)}))),c(t)||(S(M,t),f(D,t)||(x(D,t,L()),j=1),S(b(D,t),n),c(r)||S(k,t))})),d(),u(T)||(R?w(D,(e=>S(k,e))):w(l,(e=>a(b(v,e),(e=>S(k,e))))),g(k,(e=>{const t=(t,n)=>p(b(T,t),b(T,n),e),n=[...b(D,e)];s(n,t)||(x(D,e,L(o(n,t))),S(M,e))}))),(j||R)&&!c(y)){const t=[...D];s(t,y)||(z(e,h(o(t,y))),j=1)}j&&B(t,[e]),g(M,(t=>B(n,[e,t])))}),T(i),a(r,T)),P},delIndexDefinition:e=>(E(e),P),getStore:r,getIndexIds:l,getTableId:v,getSliceIds:e=>y(m(e)),getSliceRowIds:(e,t)=>[...b(m(e),t)?.values()??[]],addSliceIdsListener:(e,n)=>_(n,t,[e]),addSliceRowIdsListener:(e,t,s)=>_(s,n,[e,t]),delListener:e=>(C(e),P),destroy:O,getListenerStats:()=>({})};return k(P)}));e.createIndexes=m,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseIndexes={});
1
+ var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,n=t(""),s=(e,t)=>e.every(((n,s)=>0==s||t(e[s-1],n)<=0)),o=(e,t)=>e.sort(t),d=(e,t)=>e.forEach(t),r=e=>e.length,i=e=>0==r(e),c=e=>e.slice(1),l=e=>null==e,a=(e,t,n)=>l(e)?n?.():t(e),f=(e,t)=>e?.has(t)??!1,u=e=>l(e)||0==(e=>e.size)(e),h=e=>e.clear(),p=(e,t)=>e?.forEach(t),I=(e,t)=>e?.delete(t),g=e=>new Map(e),x=e=>[...e?.keys()??[]],y=(e,t)=>e?.get(t),S=(e,t)=>p(e,((e,n)=>t(n,e))),b=(e,t,n)=>l(n)?(I(e,t),e):e?.set(t,n),w=(e,t,n,s)=>(f(e,t)||(s?.(n),e.set(t,n)),y(e,t)),v=e=>new Set(e),L=(e,t)=>e?.add(t),T=(e,s)=>t(e)==n?t=>t(e):e??(()=>s??""),E=(e,t)=>e<t?-1:1,R=(e,t,n)=>r(n)<2?L(i(n)?e:w(e,n[0],v()),t):R(w(e,n[0],g()),t,c(n)),j=e=>{const t=(n,s,...o)=>a(n,(n=>i(o)?e(n,s):d([o[0],null],(e=>t(y(n,e),s,...c(o))))));return t},M=Object.freeze,k=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{const t=g(),n=g(),[i,c,w,k,m,z,C,D,O,_]=((e,t,n)=>{const s=e.hasRow,o=g(),r=g(),i=g(),c=g(),u=g(),I=t=>a(y(u,t),(n=>{p(n,e.delListener),b(u,t)})),w=e=>{b(o,e),b(r,e),b(i,e),b(c,e),I(e)};return[()=>e,()=>x(o),e=>S(r,e),e=>f(r,e),e=>y(o,e),e=>y(r,e),(e,t)=>b(r,e,t),(a,x,w,L,T)=>{const E=g(),R=g();b(o,a,x),f(r,a)||(b(r,a,t()),b(i,a,g()),b(c,a,g()));const j=y(i,a),M=y(c,a),k=t=>{const o=n=>e.getCell(x,t,n),d=y(j,t),r=s(x,t)?n(L(o,t)):void 0;if(d!=r&&b(E,t,[d,r]),!l(T)){const e=y(M,t),n=s(x,t)?T(o,t):void 0;e!=n&&b(R,t,n)}},m=e=>{w((()=>{p(E,(([,e],t)=>b(j,t,e))),p(R,((e,t)=>b(M,t,e)))}),E,R,j,M,e),h(E),h(R)};S(j,k),e.hasTable(x)&&d(e.getRowIds(x),(e=>{f(j,e)||k(e)})),m(!0),I(a),b(u,a,v([e.addRowListener(x,null,((e,t,n)=>k(n))),e.addTableListener(x,(()=>m()))]))},w,()=>S(u,w)]})(e,g,(e=>l(e)?"":e+"")),[B,P,W]=(e=>{let t,n=0;const s=[],o=g();return[(d,r,i=[])=>{t??=e();const c=s.pop()??""+n++;return b(o,c,[d,r,i]),R(r,c,i),c},(e,n=[],...s)=>j(p)(e,(e=>a(y(o,e),(([e])=>e(t,...n,...s)))),...n),e=>a(y(o,e),(([,t,n])=>(j(I)(t,e,...n),b(o,e),r(s)<1e3&&s.push(e),n)),(()=>[])),(e,n,s)=>a(y(o,e),(([e,,o])=>{const i=(...c)=>{const a=r(c);a==r(o)?e(t,...c,...s(c)):l(o[a])?d(n[a](...c),(e=>i(...c,e))):i(...c,o[a])};i()}))]})((()=>A)),q=(t,n,s)=>{const o=m(t);p(s,((t,s)=>n(s,(n=>p(t,(t=>n(t,(n=>e.forEachCell(o,t,n)))))))))},A={setIndexDefinition:(e,d,r,i,c,h=E)=>{const x=l(c)?void 0:([e],[t])=>c(e,t);return D(e,d,((d,r,c,w,T,E)=>{let R=0;const j=v(),M=v(),k=z(e);if(p(r,(([e,t],n)=>{l(e)||(L(j,e),a(y(k,e),(t=>{I(t,n),u(t)&&(b(k,e),R=1)}))),l(t)||(L(j,t),f(k,t)||(b(k,t,v()),R=1),L(y(k,t),n),l(i)||L(M,t))})),d(),u(T)||(E?S(k,(e=>L(M,e))):S(c,(e=>a(y(w,e),(e=>L(M,e))))),p(M,(e=>{const t=(t,n)=>h(y(T,t),y(T,n),e),n=[...y(k,e)];s(n,t)||(b(k,e,v(o(n,t))),L(j,e))}))),(R||E)&&!l(x)){const t=[...k];s(t,x)||(C(e,g(o(t,x))),R=1)}R&&P(t,[e]),p(j,(t=>P(n,[e,t])))}),T(r),a(i,T)),A},delIndexDefinition:e=>(O(e),A),getStore:i,getIndexIds:c,forEachIndex:e=>w(((t,n)=>e(t,(e=>q(t,e,n))))),forEachSlice:(e,t)=>q(e,t,z(e)),hasIndex:k,hasSlice:(e,t)=>f(z(e),t),getTableId:m,getSliceIds:e=>x(z(e)),getSliceRowIds:(e,t)=>[...y(z(e),t)?.values()??[]],addSliceIdsListener:(e,n)=>B(n,t,[e]),addSliceRowIdsListener:(e,t,s)=>B(s,n,[e,t]),delListener:e=>(W(e),A),destroy:_,getListenerStats:()=>({})};return M(A)}));e.createIndexes=k,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseIndexes={});
Binary file
@@ -1 +1 @@
1
- var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,n=t(""),s=t(t),o=(e,t)=>e.forEach(t),i=e=>c(e,((e,t)=>e+t),0),r=e=>e.length,d=e=>0==r(e),c=(e,t,n)=>e.reduce(t,n),a=e=>e.slice(1),l=Math.max,u=Math.min,f=isFinite,p=e=>null==e,v=(e,t,n)=>p(e)?n?.():t(e),g=()=>{},h=e=>e.size,M=(e,t)=>e?.has(t)??!1,y=e=>e.clear(),b=(e,t)=>e?.forEach(t),m=(e,t)=>e?.delete(t),w=e=>new Map(e),L=(e,t)=>e?.get(t),T=(e,t)=>b(e,((e,n)=>t(n,e))),x=(e,t,n)=>p(n)?(m(e,t),e):e?.set(t,n),j=(e,t,n,s)=>(M(e,t)||(s?.(n),e.set(t,n)),L(e,t)),I=e=>new Set(e),R=(e,s)=>t(e)==n?t=>t(e):e??(()=>s??""),S=(e,t,n)=>r(n)<2?((e,t)=>e?.add(t))(d(n)?e:j(e,n[0],I()),t):S(j(e,n[0],w()),t,a(n)),k=e=>{const t=(n,s,...i)=>v(n,(n=>d(i)?e(n,s):o([i[0],null],(e=>t(L(n,e),s,...a(i))))));return t},z=Object.freeze,D=w([["avg",[(e,t)=>i(e)/t,(e,t,n)=>e+(t-e)/(n+1),(e,t,n)=>e+(e-t)/(n-1),(e,t,n,s)=>e+(t-n)/s]],["max",[e=>l(...e),(e,t)=>l(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:l(t,e)]],["min",[e=>u(...e),(e,t)=>u(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:u(t,e)]],["sum",[e=>i(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,n)=>e-n+t]]]),E=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{const n=w(),[i,d,c,a,l,u,j,E]=((e,t,n)=>{const s=e.hasRow,i=w(),r=w(),d=w(),c=w(),a=w(),l=t=>v(L(a,t),(n=>{b(n,e.delListener),x(a,t)})),u=e=>{x(i,e),x(r,e),x(d,e),x(c,e),l(e)};return[()=>e,()=>[...i?.keys()??[]],e=>L(i,e),e=>L(r,e),(e,t)=>x(r,e,t),(u,f,v,g,h)=>{const m=w(),j=w();x(i,u,f),M(r,u)||(x(r,u,t()),x(d,u,w()),x(c,u,w()));const R=L(d,u),S=L(c,u),k=t=>{const o=n=>e.getCell(f,t,n),i=L(R,t),r=s(f,t)?n(g(o,t)):void 0;if(i!=r&&x(m,t,[i,r]),!p(h)){const e=L(S,t),n=s(f,t)?h(o,t):void 0;e!=n&&x(j,t,n)}},z=e=>{v((()=>{b(m,(([,e],t)=>x(R,t,e))),b(j,((e,t)=>x(S,t,e)))}),m,j,R,S,e),y(m),y(j)};T(R,k),e.hasTable(f)&&o(e.getRowIds(f),(e=>{M(R,e)||k(e)})),z(!0),l(u),x(a,u,I([e.addRowListener(f,null,((e,t,n)=>k(n))),e.addTableListener(f,(()=>z()))]))},u,()=>T(a,u)]})(e,g,(e=>isNaN(e)||p(e)||!0===e||!1===e||""===e?void 0:1*e)),[N,O,_]=(e=>{let t,n=0;const s=[],i=w();return[(o,r,d=[])=>{t??=e();const c=s.pop()??""+n++;return x(i,c,[o,r,d]),S(r,c,d),c},(e,n=[],...s)=>k(b)(e,(e=>v(L(i,e),(([e])=>e(t,...n,...s)))),...n),e=>v(L(i,e),(([,t,n])=>(k(m)(t,e,...n),x(i,e),r(s)<1e3&&s.push(e),n)),(()=>[])),(e,n,s)=>v(L(i,e),(([e,,i])=>{const d=(...c)=>{const a=r(c);a==r(i)?e(t,...c,...s(c)):p(i[a])?o(n[a](...c),(e=>d(...c,e))):d(...c,i[a])};d()}))]})((()=>B)),B={setMetricDefinition:(e,o,i,r,d,c,v)=>{const g=t(i)==s?[i,d,c,v]:L(D,i)??L(D,"sum");return u(e,o,((t,s,o,i,r,d)=>{let c=a(e),u=h(i);const[v,M,y,m]=g;var w;d=d||p(c),b(s,(([e,t])=>{d||(c=p(e)?M?.(c,t,u++):p(t)?y?.(c,e,u--):m?.(c,t,e,u)),d=d||p(c)})),t(),p(w=i)||0==h(w)?c=void 0:d&&(c=v((e=>[...e?.values()??[]])(i),h(i))),f(c)||(c=void 0);const L=a(e);c!=L&&(l(e,c),O(n,[e],c,L))}),R(r,1)),B},delMetricDefinition:e=>(j(e),B),getStore:i,getMetricIds:d,getTableId:c,getMetric:a,addMetricListener:(e,t)=>N(t,n,[e]),delListener:e=>(_(e),B),destroy:E,getListenerStats:()=>({})};return z(B)}));e.createMetrics=E,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseMetrics={});
1
+ var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,s=t(""),n=t(t),i=(e,t)=>e.forEach(t),o=e=>d(e,((e,t)=>e+t),0),r=e=>e.length,c=e=>0==r(e),d=(e,t,s)=>e.reduce(t,s),a=e=>e.slice(1),l=Math.max,u=Math.min,f=isFinite,h=e=>null==e,p=(e,t,s)=>h(e)?s?.():t(e),v=()=>{},M=e=>e.size,g=(e,t)=>e?.has(t)??!1,y=e=>e.clear(),b=(e,t)=>e?.forEach(t),m=(e,t)=>e?.delete(t),w=e=>new Map(e),L=(e,t)=>e?.get(t),T=(e,t)=>b(e,((e,s)=>t(s,e))),x=(e,t,s)=>h(s)?(m(e,t),e):e?.set(t,s),j=(e,t,s,n)=>(g(e,t)||(n?.(s),e.set(t,s)),L(e,t)),E=e=>new Set(e),I=(e,n)=>t(e)==s?t=>t(e):e??(()=>n??""),R=(e,t,s)=>r(s)<2?((e,t)=>e?.add(t))(c(s)?e:j(e,s[0],E()),t):R(j(e,s[0],w()),t,a(s)),S=e=>{const t=(s,n,...o)=>p(s,(s=>c(o)?e(s,n):i([o[0],null],(e=>t(L(s,e),n,...a(o))))));return t},k=Object.freeze,z=w([["avg",[(e,t)=>o(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=>l(...e),(e,t)=>l(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:l(t,e)]],["min",[e=>u(...e),(e,t)=>u(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:u(t,e)]],["sum",[e=>o(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),D=(e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))})((e=>{const s=w(),[o,c,d,a,l,u,j,D,N,O]=((e,t,s)=>{const n=e.hasRow,o=w(),r=w(),c=w(),d=w(),a=w(),l=t=>p(L(a,t),(s=>{b(s,e.delListener),x(a,t)})),u=e=>{x(o,e),x(r,e),x(c,e),x(d,e),l(e)};return[()=>e,()=>[...o?.keys()??[]],e=>T(r,e),e=>g(r,e),e=>L(o,e),e=>L(r,e),(e,t)=>x(r,e,t),(u,f,p,v,M)=>{const m=w(),j=w();x(o,u,f),g(r,u)||(x(r,u,t()),x(c,u,w()),x(d,u,w()));const I=L(c,u),R=L(d,u),S=t=>{const i=s=>e.getCell(f,t,s),o=L(I,t),r=n(f,t)?s(v(i,t)):void 0;if(o!=r&&x(m,t,[o,r]),!h(M)){const e=L(R,t),s=n(f,t)?M(i,t):void 0;e!=s&&x(j,t,s)}},k=e=>{p((()=>{b(m,(([,e],t)=>x(I,t,e))),b(j,((e,t)=>x(R,t,e)))}),m,j,I,R,e),y(m),y(j)};T(I,S),e.hasTable(f)&&i(e.getRowIds(f),(e=>{g(I,e)||S(e)})),k(!0),l(u),x(a,u,E([e.addRowListener(f,null,((e,t,s)=>S(s))),e.addTableListener(f,(()=>k()))]))},u,()=>T(a,u)]})(e,v,(e=>isNaN(e)||h(e)||!0===e||!1===e||""===e?void 0:1*e)),[_,B,C]=(e=>{let t,s=0;const n=[],o=w();return[(i,r,c=[])=>{t??=e();const d=n.pop()??""+s++;return x(o,d,[i,r,c]),R(r,d,c),d},(e,s=[],...n)=>S(b)(e,(e=>p(L(o,e),(([e])=>e(t,...s,...n)))),...s),e=>p(L(o,e),(([,t,s])=>(S(m)(t,e,...s),x(o,e),r(n)<1e3&&n.push(e),s)),(()=>[])),(e,s,n)=>p(L(o,e),(([e,,o])=>{const c=(...d)=>{const a=r(d);a==r(o)?e(t,...d,...n(d)):h(o[a])?i(s[a](...d),(e=>c(...d,e))):c(...d,o[a])};c()}))]})((()=>F)),F={setMetricDefinition:(e,i,o,r,c,d,a)=>{const l=t(o)==n?[o,c,d,a]:L(z,o)??L(z,"sum");return D(e,i,((t,n,i,o,r,c)=>{let d=u(e),a=M(o);const[p,v,g,y]=l;var m;c=c||h(d),b(n,(([e,t])=>{c||(d=h(e)?v?.(d,t,a++):h(t)?g?.(d,e,a--):y?.(d,t,e,a)),c=c||h(d)})),t(),h(m=o)||0==M(m)?d=void 0:c&&(d=p((e=>[...e?.values()??[]])(o),M(o))),f(d)||(d=void 0);const w=u(e);d!=w&&(j(e,d),B(s,[e],d,w))}),I(r,1)),F},delMetricDefinition:e=>(N(e),F),getStore:o,getMetricIds:c,forEachMetric:d,hasMetric:a,getTableId:l,getMetric:u,addMetricListener:(e,t)=>_(t,s,[e]),delListener:e=>(C(e),F),destroy:O,getListenerStats:()=>({})};return k(F)}));e.createMetrics=D,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseMetrics={});
Binary file
@@ -1 +1 @@
1
- var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,s=t(""),n=(e,t)=>e.forEach(t),o=e=>e.length,i=e=>0==o(e),d=e=>e.slice(1),r=e=>null==e,l=(e,t,s)=>r(e)?s?.():t(e),a=(e,t)=>e?.has(t)??!1,c=e=>[...e?.values()??[]],f=e=>e.clear(),u=(e,t)=>e?.forEach(t),p=(e,t)=>e?.delete(t),R=e=>new Map(e),h=(e,t)=>e?.get(t),g=(e,t)=>u(e,((e,s)=>t(s,e))),L=(e,t,s)=>r(s)?(p(e,t),e):e?.set(t,s),w=(e,t,s,n)=>(a(e,t)||(n?.(s),e.set(t,s)),h(e,t)),I=e=>new Set(e),b=(e,t)=>e?.add(t),y=(e,n)=>t(e)==s?t=>t(e):e??(()=>n??""),v=(e,t,s)=>o(s)<2?b(i(s)?e:w(e,s[0],I()),t):v(w(e,s[0],R()),t,d(s)),T=e=>{const t=(s,o,...r)=>l(s,(s=>i(r)?e(s,o):n([r[0],null],(e=>t(h(s,e),o,...d(r))))));return t},m=Object.freeze,k=(e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))})((e=>{const t=R(),s=R(),i=R(),d=R(),[w,k,j,x,M,S,z,D]=((e,t,s)=>{const o=e.hasRow,i=R(),d=R(),c=R(),p=R(),w=R(),b=t=>l(h(w,t),(s=>{u(s,e.delListener),L(w,t)})),y=e=>{L(i,e),L(d,e),L(c,e),L(p,e),b(e)};return[()=>e,()=>[...i?.keys()??[]],e=>h(i,e),e=>h(d,e),(e,t)=>L(d,e,t),(l,y,v,T,m)=>{const k=R(),j=R();L(i,l,y),a(d,l)||(L(d,l,t()),L(c,l,R()),L(p,l,R()));const x=h(c,l),M=h(p,l),S=t=>{const n=s=>e.getCell(y,t,s),i=h(x,t),d=o(y,t)?s(T(n,t)):void 0;if(i!=d&&L(k,t,[i,d]),!r(m)){const e=h(M,t),s=o(y,t)?m(n,t):void 0;e!=s&&L(j,t,s)}},z=e=>{v((()=>{u(k,(([,e],t)=>L(x,t,e))),u(j,((e,t)=>L(M,t,e)))}),k,j,x,M,e),f(k),f(j)};g(x,S),e.hasTable(y)&&n(e.getRowIds(y),(e=>{a(x,e)||S(e)})),z(!0),b(l),L(w,l,I([e.addRowListener(y,null,((e,t,s)=>S(s))),e.addTableListener(y,(()=>z()))]))},y,()=>g(w,y)]})(e,(()=>[R(),R(),R(),R()]),(e=>r(e)?void 0:e+"")),[E,O,_]=(e=>{let t,s=0;const i=[],d=R();return[(n,o,r=[])=>{t??=e();const l=i.pop()??""+s++;return L(d,l,[n,o,r]),v(o,l,r),l},(e,s=[],...n)=>T(u)(e,(e=>l(h(d,e),(([e])=>e(t,...s,...n)))),...s),e=>l(h(d,e),(([,t,s])=>(T(p)(t,e,...s),L(d,e),o(i)<1e3&&i.push(e),s)),(()=>[])),(e,s,i)=>l(h(d,e),(([e,,d])=>{const l=(...a)=>{const c=o(a);c==o(d)?e(t,...a,...i(a)):r(d[c])?n(s[c](...a),(e=>l(...a,e))):l(...a,d[c])};l()}))]})((()=>W)),B=(e,t,s)=>l(x(e),(([n,,o])=>{if(!a(o,t)){const i=I();if(j(e)!=P(e))b(i,t);else{let e=t;for(;!r(e)&&!a(i,e);)b(i,e),e=h(n,e)}if(s)return i;L(o,t,i)}return h(o,t)})),C=(e,t)=>l(x(e),(([,,e])=>L(e,t))),P=e=>h(t,e),W={setRelationshipDefinition:(e,n,o,c)=>(L(t,e,o),S(e,n,((t,n)=>{const o=I(),c=I(),f=I(),[R,w]=x(e);u(n,(([t,s],n)=>{r(t)||(b(c,t),l(h(w,t),(e=>{var s;p(e,n),(r(s=e)||0==(e=>e.size)(s))&&L(w,t)}))),r(s)||(b(c,s),a(w,s)||L(w,s,I()),b(h(w,s),n)),b(o,n),L(R,n,s),g(h(d,e),(t=>{a(B(e,t),n)&&b(f,t)}))})),t(),u(o,(t=>O(s,[e,t]))),u(c,(t=>O(i,[e,t]))),u(f,(t=>{C(e,t),O(d,[e,t])}))}),y(c)),W),delRelationshipDefinition:e=>(L(t,e),z(e),W),getStore:w,getRelationshipIds:k,getLocalTableId:j,getRemoteTableId:P,getRemoteRowId:(e,t)=>h(x(e)?.[0],t),getLocalRowIds:(e,t)=>c(h(x(e)?.[1],t)),getLinkedRowIds:(e,t)=>r(x(e))?[t]:c(B(e,t,!0)),addRemoteRowIdListener:(e,t,n)=>E(n,s,[e,t]),addLocalRowIdsListener:(e,t,s)=>E(s,i,[e,t]),addLinkedRowIdsListener:(e,t,s)=>(B(e,t),E(s,d,[e,t])),delListener:e=>(C(..._(e)),W),destroy:D,getListenerStats:()=>({})};return m(W)}));e.createRelationships=k,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseRelationships={});
1
+ var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,o=t(""),s=(e,t)=>e.forEach(t),n=e=>e.length,i=e=>0==n(e),a=e=>e.slice(1),d=e=>null==e,r=(e,t,o)=>d(e)?o?.():t(e),l=(e,t)=>e?.has(t)??!1,c=e=>[...e?.values()??[]],f=e=>e.clear(),h=(e,t)=>e?.forEach(t),p=(e,t)=>e?.delete(t),u=e=>new Map(e),R=(e,t)=>e?.get(t),g=(e,t)=>h(e,((e,o)=>t(o,e))),w=(e,t,o)=>d(o)?(p(e,t),e):e?.set(t,o),L=(e,t,o,s)=>(l(e,t)||(s?.(o),e.set(t,o)),R(e,t)),I=e=>new Set(e),b=(e,t)=>e?.add(t),y=(e,s)=>t(e)==o?t=>t(e):e??(()=>s??""),v=(e,t,o)=>n(o)<2?b(i(o)?e:L(e,o[0],I()),t):v(L(e,o[0],u()),t,a(o)),T=e=>{const t=(o,n,...d)=>r(o,(o=>i(d)?e(o,n):s([d[0],null],(e=>t(R(o,e),n,...a(d))))));return t},m=Object.freeze,k=(e=>{const t=new WeakMap;return o=>(t.has(o)||t.set(o,e(o)),t.get(o))})((e=>{const t=u(),o=u(),i=u(),a=u(),[L,k,E,j,x,M,S,z,D,O]=((e,t,o)=>{const n=e.hasRow,i=u(),a=u(),c=u(),p=u(),L=u(),b=t=>r(R(L,t),(o=>{h(o,e.delListener),w(L,t)})),y=e=>{w(i,e),w(a,e),w(c,e),w(p,e),b(e)};return[()=>e,()=>[...i?.keys()??[]],e=>g(a,e),e=>l(a,e),e=>R(i,e),e=>R(a,e),(e,t)=>w(a,e,t),(r,y,v,T,m)=>{const k=u(),E=u();w(i,r,y),l(a,r)||(w(a,r,t()),w(c,r,u()),w(p,r,u()));const j=R(c,r),x=R(p,r),M=t=>{const s=o=>e.getCell(y,t,o),i=R(j,t),a=n(y,t)?o(T(s,t)):void 0;if(i!=a&&w(k,t,[i,a]),!d(m)){const e=R(x,t),o=n(y,t)?m(s,t):void 0;e!=o&&w(E,t,o)}},S=e=>{v((()=>{h(k,(([,e],t)=>w(j,t,e))),h(E,((e,t)=>w(x,t,e)))}),k,E,j,x,e),f(k),f(E)};g(j,M),e.hasTable(y)&&s(e.getRowIds(y),(e=>{l(j,e)||M(e)})),S(!0),b(r),w(L,r,I([e.addRowListener(y,null,((e,t,o)=>M(o))),e.addTableListener(y,(()=>S()))]))},y,()=>g(L,y)]})(e,(()=>[u(),u(),u(),u()]),(e=>d(e)?void 0:e+"")),[_,B,C]=(e=>{let t,o=0;const i=[],a=u();return[(s,n,d=[])=>{t??=e();const r=i.pop()??""+o++;return w(a,r,[s,n,d]),v(n,r,d),r},(e,o=[],...s)=>T(h)(e,(e=>r(R(a,e),(([e])=>e(t,...o,...s)))),...o),e=>r(R(a,e),(([,t,o])=>(T(p)(t,e,...o),w(a,e),n(i)<1e3&&i.push(e),o)),(()=>[])),(e,o,i)=>r(R(a,e),(([e,,a])=>{const r=(...l)=>{const c=n(l);c==n(a)?e(t,...l,...i(l)):d(a[c])?s(o[c](...l),(e=>r(...l,e))):r(...l,a[c])};r()}))]})((()=>A)),P=(e,t,o)=>r(M(e),(([s,,n])=>{if(!l(n,t)){const i=I();if(x(e)!=q(e))b(i,t);else{let e=t;for(;!d(e)&&!l(i,e);)b(i,e),e=R(s,e)}if(o)return i;w(n,t,i)}return R(n,t)})),W=(e,t)=>r(M(e),(([,,e])=>w(e,t))),q=e=>R(t,e),A={setRelationshipDefinition:(e,s,n,c)=>(w(t,e,n),z(e,s,((t,s)=>{const n=I(),c=I(),f=I(),[u,L]=M(e);h(s,(([t,o],s)=>{d(t)||(b(c,t),r(R(L,t),(e=>{var o;p(e,s),(d(o=e)||0==(e=>e.size)(o))&&w(L,t)}))),d(o)||(b(c,o),l(L,o)||w(L,o,I()),b(R(L,o),s)),b(n,s),w(u,s,o),g(R(a,e),(t=>{l(P(e,t),s)&&b(f,t)}))})),t(),h(n,(t=>B(o,[e,t]))),h(c,(t=>B(i,[e,t]))),h(f,(t=>{W(e,t),B(a,[e,t])}))}),y(c)),A),delRelationshipDefinition:e=>(w(t,e),D(e),A),getStore:L,getRelationshipIds:k,forEachRelationship:t=>E((o=>t(o,(t=>e.forEachRow(x(o),t))))),hasRelationship:j,getLocalTableId:x,getRemoteTableId:q,getRemoteRowId:(e,t)=>R(M(e)?.[0],t),getLocalRowIds:(e,t)=>c(R(M(e)?.[1],t)),getLinkedRowIds:(e,t)=>d(M(e))?[t]:c(P(e,t,!0)),addRemoteRowIdListener:(e,t,s)=>_(s,o,[e,t]),addLocalRowIdsListener:(e,t,o)=>_(o,i,[e,t]),addLinkedRowIdsListener:(e,t,o)=>(P(e,t),_(o,a,[e,t])),delListener:e=>(W(...C(e)),A),destroy:O,getListenerStats:()=>({})};return m(A)}));e.createRelationships=k,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseRelationships={});
Binary file