tinybase 1.2.0-beta.1 → 1.2.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.
@@ -1 +1 @@
1
- const e=(e,t)=>e.includes(t),t=(e,t)=>e.forEach(t),n=e=>e.length,s=e=>0==n(e),o=e=>e.slice(1),r=(e,t)=>e.push(t),c=e=>e.pop(),l=e=>null==e,i=(e,t,n)=>l(e)?n?.():t(e),d=(e,t)=>e?.has(t)??!1,a=e=>l(e)||0==(e=>e.size)(e),h=(e,t)=>e?.forEach(t),u=(e,t)=>e?.delete(t),p=e=>new Map(e),C=(e,t)=>e?.get(t),g=(e,t,n)=>l(n)?(u(e,t),e):e?.set(t,n),k=(e,t,n,s)=>(d(e,t)||(s?.(n),e.set(t,n)),C(e,t)),f=e=>new Set(e),L=(e,t,r)=>n(r)<2?((e,t)=>e?.add(t))(s(r)?e:k(e,r[0],f()),t):L(k(e,r[0],p()),t,o(r)),v=e=>{const n=(r,c,...l)=>i(r,(r=>s(l)?e(r,c):t([l[0],null],(e=>n(C(r,e),c,...o(l))))));return n},w=Object.freeze,S=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((o=>{let S,z,E,I=100,M=p(),b=1;const j=f(),x=p(),[y,B,F]=(e=>{let s,o=0;const d=[],a=p();return[(t,n,r=[])=>{s??=e();const l=c(d)??""+o++;return g(a,l,[t,n,r]),L(n,l,r),l},(e,t=[],...n)=>v(h)(e,(e=>i(C(a,e),(([e])=>e(s,...t,...n)))),...t),e=>i(C(a,e),(([,t,s])=>(v(u)(t,e,...s),g(a,e),n(d)<1e3&&r(d,e),s)),(()=>[])),(e,o,r)=>i(C(a,e),(([e,,c])=>{const i=(...d)=>{const a=n(d);a==n(c)?e(s,...d,...r(d)):l(c[a])?t(o[a](...d),(e=>i(...d,e))):i(...d,c[a])};i()}))]})((()=>V)),O=p(),T=p(),W=[],m=[],q=(e,t)=>{b=0,o.transaction((()=>h(C(O,t),((t,n)=>h(t,((t,s)=>h(t,((t,r)=>l(t[e])?o.delCell(n,s,r,!0):o.setCell(n,s,r,t[e]))))))))),b=1},A=e=>{g(O,e),g(T,e),B(x,[e])},D=(e,s)=>t(((e,t)=>e.splice(0,t))(e,s??n(e)),A),G=()=>D(W,n(W)-I),H=o.addCellListener(null,null,null,((e,t,n,s,o,l)=>{if(b){i(S,(()=>{r(W,S),G(),D(m),S=void 0,E=1}));const e=k(M,t,p()),d=k(e,n,p()),h=k(d,s,[void 0,void 0],(e=>e[0]=l));h[1]=o,h[0]===h[1]&&a(g(d,s))&&a(g(e,n))&&a(g(M,t))&&(S=c(W),E=1),P()}})),J=(e="")=>(l(S)&&(S=""+z++,g(O,S,M),R(S,e),M=p(),E=1),S),K=()=>{s(W)||(m.unshift(J()),q(0,S),S=c(W),E=1)},N=()=>{s(m)||(r(W,S),S=m.shift(),q(1,S),E=1)},P=()=>{E&&(B(j),E=0)},Q=e=>{const t=J(e);return P(),t},R=(e,t)=>(U(e)&&C(T,e)!==t&&(g(T,e,t),B(x,[e])),V),U=e=>d(O,e),V={setSize:e=>(I=e,G(),V),addCheckpoint:Q,setCheckpoint:R,getStore:()=>o,getCheckpointIds:()=>[[...W],S,[...m]],forEachCheckpoint:e=>{return t=e,h(T,((e,n)=>t(n,e)));var t},hasCheckpoint:U,getCheckpoint:e=>C(T,e),goBackward:()=>(K(),P(),V),goForward:()=>(N(),P(),V),goTo:t=>{const n=e(W,t)?K:e(m,t)?N:null;for(;!l(n)&&t!=S;)n();return P(),V},addCheckpointIdsListener:e=>y(e,j),addCheckpointListener:(e,t)=>y(t,x,[e]),delListener:e=>(F(e),V),clear:()=>(D(W),D(m),l(S)||A(S),S=void 0,z=0,Q(),V),destroy:()=>{o.delListener(H)},getListenerStats:()=>({})};return w(V.clear())}));export{S as createCheckpoints};
1
+ const e=(e,t)=>e.includes(t),t=(e,t)=>e.forEach(t),n=e=>e.length,s=e=>0==n(e),r=e=>e.slice(1),o=(e,t)=>e.push(t),c=e=>e.pop(),l=e=>null==e,i=(e,t,n)=>l(e)?n?.():t(e),a=(e,t)=>e?.has(t)??!1,d=e=>l(e)||0==(e=>e.size)(e),h=(e,t)=>e?.forEach(t),u=(e,t)=>e?.delete(t),p=e=>new Map(e),C=(e,t)=>e?.get(t),g=(e,t,n)=>l(n)?(u(e,t),e):e?.set(t,n),k=(e,t,n)=>(a(e,t)||e.set(t,n()),C(e,t)),f=e=>new Set(e),L=(e,t,o)=>n(o)<2?((e,t)=>e?.add(t))(s(o)?e:k(e,o[0],f),t):L(k(e,o[0],p),t,r(o)),w=e=>{const n=(o,c,...l)=>i(o,(o=>s(l)?e(o,c):t([l[0],null],(e=>n(C(o,e),c,...r(l))))));return n},v=Object.freeze,S=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((r=>{let S,z,E,I=100,M=p(),b=1;const j=f(),x=p(),[y,B,F]=(e=>{let s,r=0;const a=[],d=p();return[(t,n,o=[])=>{s??=e();const l=c(a)??""+r++;return g(d,l,[t,n,o]),L(n,l,o),l},(e,t=[],...n)=>w(h)(e,(e=>i(C(d,e),(([e])=>e(s,...t,...n)))),...t),e=>i(C(d,e),(([,t,s])=>(w(u)(t,e,...s),g(d,e),n(a)<1e3&&o(a,e),s)),(()=>[])),(e,r,o)=>i(C(d,e),(([e,,c])=>{const i=(...a)=>{const d=n(a);d==n(c)?e(s,...a,...o(a)):l(c[d])?t(r[d](...a),(e=>i(...a,e))):i(...a,c[d])};i()}))]})((()=>V)),O=p(),T=p(),W=[],m=[],q=(e,t)=>{b=0,r.transaction((()=>h(C(O,t),((t,n)=>h(t,((t,s)=>h(t,((t,o)=>l(t[e])?r.delCell(n,s,o,!0):r.setCell(n,s,o,t[e]))))))))),b=1},A=e=>{g(O,e),g(T,e),B(x,[e])},D=(e,s)=>t(((e,t)=>e.splice(0,t))(e,s??n(e)),A),G=()=>D(W,n(W)-I),H=r.addCellListener(null,null,null,((e,t,n,s,r,l)=>{if(b){i(S,(()=>{o(W,S),G(),D(m),S=void 0,E=1}));const e=k(M,t,p),a=k(e,n,p),h=k(a,s,(()=>[l,void 0]));h[1]=r,h[0]===r&&d(g(a,s))&&d(g(e,n))&&d(g(M,t))&&(S=c(W),E=1),P()}})),J=(e="")=>(l(S)&&(S=""+z++,g(O,S,M),R(S,e),M=p(),E=1),S),K=()=>{s(W)||(m.unshift(J()),q(0,S),S=c(W),E=1)},N=()=>{s(m)||(o(W,S),S=m.shift(),q(1,S),E=1)},P=()=>{E&&(B(j),E=0)},Q=e=>{const t=J(e);return P(),t},R=(e,t)=>(U(e)&&C(T,e)!==t&&(g(T,e,t),B(x,[e])),V),U=e=>a(O,e),V={setSize:e=>(I=e,G(),V),addCheckpoint:Q,setCheckpoint:R,getStore:()=>r,getCheckpointIds:()=>[[...W],S,[...m]],forEachCheckpoint:e=>{return t=e,h(T,((e,n)=>t(n,e)));var t},hasCheckpoint:U,getCheckpoint:e=>C(T,e),goBackward:()=>(K(),P(),V),goForward:()=>(N(),P(),V),goTo:t=>{const n=e(W,t)?K:e(m,t)?N:null;for(;!l(n)&&t!=S;)n();return P(),V},addCheckpointIdsListener:e=>y(e,j),addCheckpointListener:(e,t)=>y(t,x,[e]),delListener:e=>(F(e),V),clear:()=>(D(W),D(m),l(S)||A(S),S=void 0,z=0,Q(),V),destroy:()=>{r.delListener(H)},getListenerStats:()=>({})};return v(V.clear())}));export{S as createCheckpoints};
Binary file
@@ -28,10 +28,9 @@ const mapForEach = (map, cb) =>
28
28
  collForEach(map, (value, key) => cb(key, value));
29
29
  const mapSet = (map, key, value) =>
30
30
  isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
31
- const mapEnsure = (map, key, defaultValue, onWillAdd) => {
31
+ const mapEnsure = (map, key, getDefaultValue) => {
32
32
  if (!collHas(map, key)) {
33
- onWillAdd?.(defaultValue);
34
- map.set(key, defaultValue);
33
+ map.set(key, getDefaultValue());
35
34
  }
36
35
  return mapGet(map, key);
37
36
  };
@@ -52,11 +51,11 @@ const getCreateFunction = (getFunction) => {
52
51
  const addDeepSet = (deepSet, value, ids) =>
53
52
  arrayLength(ids) < 2
54
53
  ? setAdd(
55
- arrayIsEmpty(ids) ? deepSet : mapEnsure(deepSet, ids[0], setNew()),
54
+ arrayIsEmpty(ids) ? deepSet : mapEnsure(deepSet, ids[0], setNew),
56
55
  value,
57
56
  )
58
57
  : addDeepSet(
59
- mapEnsure(deepSet, ids[0], mapNew()),
58
+ mapEnsure(deepSet, ids[0], mapNew),
60
59
  value,
61
60
  arrayFromSecond(ids),
62
61
  );
@@ -181,16 +180,11 @@ const createCheckpoints = getCreateFunction((store) => {
181
180
  currentId = void 0;
182
181
  checkpointsChanged = 1;
183
182
  });
184
- const table = mapEnsure(delta, tableId, mapNew());
185
- const row = mapEnsure(table, rowId, mapNew());
186
- const oldNew = mapEnsure(
187
- row,
188
- cellId,
189
- [void 0, void 0],
190
- (addOldNew) => (addOldNew[0] = oldCell),
191
- );
183
+ const table = mapEnsure(delta, tableId, mapNew);
184
+ const row = mapEnsure(table, rowId, mapNew);
185
+ const oldNew = mapEnsure(row, cellId, () => [oldCell, void 0]);
192
186
  oldNew[1] = newCell;
193
- if (oldNew[0] === oldNew[1]) {
187
+ if (oldNew[0] === newCell) {
194
188
  if (collIsEmpty(mapSet(row, cellId))) {
195
189
  if (collIsEmpty(mapSet(table, rowId))) {
196
190
  if (collIsEmpty(mapSet(delta, tableId))) {
@@ -39,10 +39,9 @@ const mapForEach = (map, cb) =>
39
39
  collForEach(map, (value, key) => cb(key, value));
40
40
  const mapSet = (map, key, value) =>
41
41
  isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
42
- const mapEnsure = (map, key, defaultValue, onWillAdd) => {
42
+ const mapEnsure = (map, key, getDefaultValue) => {
43
43
  if (!collHas(map, key)) {
44
- onWillAdd?.(defaultValue);
45
- map.set(key, defaultValue);
44
+ map.set(key, getDefaultValue());
46
45
  }
47
46
  return mapGet(map, key);
48
47
  };
@@ -179,11 +178,11 @@ const defaultSorter = (sortKey1, sortKey2) => (sortKey1 < sortKey2 ? -1 : 1);
179
178
  const addDeepSet = (deepSet, value, ids) =>
180
179
  arrayLength(ids) < 2
181
180
  ? setAdd(
182
- arrayIsEmpty(ids) ? deepSet : mapEnsure(deepSet, ids[0], setNew()),
181
+ arrayIsEmpty(ids) ? deepSet : mapEnsure(deepSet, ids[0], setNew),
183
182
  value,
184
183
  )
185
184
  : addDeepSet(
186
- mapEnsure(deepSet, ids[0], mapNew()),
185
+ mapEnsure(deepSet, ids[0], mapNew),
187
186
  value,
188
187
  arrayFromSecond(ids),
189
188
  );
@@ -44,10 +44,9 @@ const mapForEach = (map, cb) =>
44
44
  collForEach(map, (value, key) => cb(key, value));
45
45
  const mapSet = (map, key, value) =>
46
46
  isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
47
- const mapEnsure = (map, key, defaultValue, onWillAdd) => {
47
+ const mapEnsure = (map, key, getDefaultValue) => {
48
48
  if (!collHas(map, key)) {
49
- onWillAdd?.(defaultValue);
50
- map.set(key, defaultValue);
49
+ map.set(key, getDefaultValue());
51
50
  }
52
51
  return mapGet(map, key);
53
52
  };
@@ -182,11 +181,11 @@ const getCreateFunction = (getFunction) => {
182
181
  const addDeepSet = (deepSet, value, ids) =>
183
182
  arrayLength(ids) < 2
184
183
  ? setAdd(
185
- arrayIsEmpty(ids) ? deepSet : mapEnsure(deepSet, ids[0], setNew()),
184
+ arrayIsEmpty(ids) ? deepSet : mapEnsure(deepSet, ids[0], setNew),
186
185
  value,
187
186
  )
188
187
  : addDeepSet(
189
- mapEnsure(deepSet, ids[0], mapNew()),
188
+ mapEnsure(deepSet, ids[0], mapNew),
190
189
  value,
191
190
  arrayFromSecond(ids),
192
191
  );
@@ -34,10 +34,9 @@ const mapForEach = (map, cb) =>
34
34
  collForEach(map, (value, key) => cb(key, value));
35
35
  const mapSet = (map, key, value) =>
36
36
  isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
37
- const mapEnsure = (map, key, defaultValue, onWillAdd) => {
37
+ const mapEnsure = (map, key, getDefaultValue) => {
38
38
  if (!collHas(map, key)) {
39
- onWillAdd?.(defaultValue);
40
- map.set(key, defaultValue);
39
+ map.set(key, getDefaultValue());
41
40
  }
42
41
  return mapGet(map, key);
43
42
  };
@@ -172,11 +171,11 @@ const getCreateFunction = (getFunction) => {
172
171
  const addDeepSet = (deepSet, value, ids) =>
173
172
  arrayLength(ids) < 2
174
173
  ? setAdd(
175
- arrayIsEmpty(ids) ? deepSet : mapEnsure(deepSet, ids[0], setNew()),
174
+ arrayIsEmpty(ids) ? deepSet : mapEnsure(deepSet, ids[0], setNew),
176
175
  value,
177
176
  )
178
177
  : addDeepSet(
179
- mapEnsure(deepSet, ids[0], mapNew()),
178
+ mapEnsure(deepSet, ids[0], mapNew),
180
179
  value,
181
180
  arrayFromSecond(ids),
182
181
  );
@@ -1661,7 +1661,7 @@ export interface Store {
1661
1661
  * transaction, a relevant listener will only be called with the final value
1662
1662
  * (assuming it is different to the value at the start of the transaction),
1663
1663
  * regardless of the changes that happened in between. For example, if a Cell
1664
- * had a value `'b'` and then, within a transaction, it was changed to `'b'`
1664
+ * had a value `'a'` and then, within a transaction, it was changed to `'b'`
1665
1665
  * and then `'c'`, any CellListener registered for that cell would be called
1666
1666
  * once as if there had been a single change from `'a'` to `'c'`.
1667
1667
  *
@@ -63,10 +63,9 @@ const mapForEach = (map, cb) =>
63
63
  collForEach(map, (value, key) => cb(key, value));
64
64
  const mapSet = (map, key, value) =>
65
65
  isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
66
- const mapEnsure = (map, key, defaultValue, onWillAdd) => {
66
+ const mapEnsure = (map, key, getDefaultValue) => {
67
67
  if (!collHas(map, key)) {
68
- onWillAdd?.(defaultValue);
69
- map.set(key, defaultValue);
68
+ map.set(key, getDefaultValue());
70
69
  }
71
70
  return mapGet(map, key);
72
71
  };
@@ -107,11 +106,11 @@ const setAdd = (set, value) => set?.add(value);
107
106
  const addDeepSet = (deepSet, value, ids) =>
108
107
  arrayLength(ids) < 2
109
108
  ? setAdd(
110
- arrayIsEmpty(ids) ? deepSet : mapEnsure(deepSet, ids[0], setNew()),
109
+ arrayIsEmpty(ids) ? deepSet : mapEnsure(deepSet, ids[0], setNew),
111
110
  value,
112
111
  )
113
112
  : addDeepSet(
114
- mapEnsure(deepSet, ids[0], mapNew()),
113
+ mapEnsure(deepSet, ids[0], mapNew),
115
114
  value,
116
115
  arrayFromSecond(ids),
117
116
  );
@@ -310,7 +309,7 @@ const createStore = () => {
310
309
  const rowDefaulted = mapNew();
311
310
  const rowNonDefaulted = setNew();
312
311
  transformMap(
313
- mapEnsure(schemaMap, tableId, mapNew()),
312
+ mapEnsure(schemaMap, tableId, mapNew),
314
313
  tableSchema,
315
314
  (tableSchemaMap, cellId, cellSchema) => {
316
315
  mapSet(tableSchemaMap, cellId, cellSchema);
@@ -337,18 +336,20 @@ const createStore = () => {
337
336
  );
338
337
  const setValidTable = (tableId, table) =>
339
338
  transformMap(
340
- mapEnsure(tablesMap, tableId, mapNew(), () =>
341
- tableIdsChanged(tableId, 1),
342
- ),
339
+ mapEnsure(tablesMap, tableId, () => {
340
+ tableIdsChanged(tableId, 1);
341
+ return mapNew();
342
+ }),
343
343
  table,
344
344
  (tableMap, rowId, row) => setValidRow(tableId, tableMap, rowId, row),
345
345
  (tableMap, rowId) => delValidRow(tableId, tableMap, rowId),
346
346
  );
347
347
  const setValidRow = (tableId, tableMap, rowId, newRow, forceDel) =>
348
348
  transformMap(
349
- mapEnsure(tableMap, rowId, mapNew(), () =>
350
- rowIdsChanged(tableId, rowId, 1),
351
- ),
349
+ mapEnsure(tableMap, rowId, () => {
350
+ rowIdsChanged(tableId, rowId, 1);
351
+ return mapNew();
352
+ }),
352
353
  newRow,
353
354
  (rowMap, cellId, cell) =>
354
355
  setValidCell(tableId, rowId, rowMap, cellId, cell),
@@ -411,25 +412,25 @@ const createStore = () => {
411
412
  const tableIdsChanged = (tableId, added) =>
412
413
  idsChanged(changedTableIds, tableId, added);
413
414
  const rowIdsChanged = (tableId, rowId, added) =>
414
- idsChanged(mapEnsure(changedRowIds, tableId, mapNew()), rowId, added);
415
+ idsChanged(mapEnsure(changedRowIds, tableId, mapNew), rowId, added);
415
416
  const cellIdsChanged = (tableId, rowId, cellId, added) =>
416
417
  idsChanged(
417
- mapEnsure(mapEnsure(changedCellIds, tableId, mapNew()), rowId, mapNew()),
418
+ mapEnsure(mapEnsure(changedCellIds, tableId, mapNew), rowId, mapNew),
418
419
  cellId,
419
420
  added,
420
421
  );
421
422
  const cellChanged = (tableId, rowId, cellId, oldCell, newCell) =>
422
423
  (mapEnsure(
423
- mapEnsure(mapEnsure(changedCells, tableId, mapNew()), rowId, mapNew()),
424
+ mapEnsure(mapEnsure(changedCells, tableId, mapNew), rowId, mapNew),
424
425
  cellId,
425
- [oldCell],
426
+ () => [oldCell, 0],
426
427
  )[1] = newCell);
427
428
  const cellInvalid = (tableId, rowId, cellId, invalidCell, defaultedCell) => {
428
429
  arrayPush(
429
430
  mapEnsure(
430
- mapEnsure(mapEnsure(invalidCells, tableId, mapNew()), rowId, mapNew()),
431
+ mapEnsure(mapEnsure(invalidCells, tableId, mapNew), rowId, mapNew),
431
432
  cellId,
432
- [],
433
+ () => [],
433
434
  ),
434
435
  invalidCell,
435
436
  );
@@ -81,10 +81,9 @@ const mapForEach = (map, cb) =>
81
81
  collForEach(map, (value, key) => cb(key, value));
82
82
  const mapSet = (map, key, value) =>
83
83
  isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
84
- const mapEnsure = (map, key, defaultValue, onWillAdd) => {
84
+ const mapEnsure = (map, key, getDefaultValue) => {
85
85
  if (!collHas(map, key)) {
86
- onWillAdd?.(defaultValue);
87
- map.set(key, defaultValue);
86
+ map.set(key, getDefaultValue());
88
87
  }
89
88
  return mapGet(map, key);
90
89
  };
@@ -236,11 +235,11 @@ const getCreateFunction = (getFunction) => {
236
235
  const addDeepSet = (deepSet, value, ids) =>
237
236
  arrayLength(ids) < 2
238
237
  ? setAdd(
239
- arrayIsEmpty(ids) ? deepSet : mapEnsure(deepSet, ids[0], setNew()),
238
+ arrayIsEmpty(ids) ? deepSet : mapEnsure(deepSet, ids[0], setNew),
240
239
  value,
241
240
  )
242
241
  : addDeepSet(
243
- mapEnsure(deepSet, ids[0], mapNew()),
242
+ mapEnsure(deepSet, ids[0], mapNew),
244
243
  value,
245
244
  arrayFromSecond(ids),
246
245
  );
@@ -375,16 +374,11 @@ const createCheckpoints = getCreateFunction((store) => {
375
374
  currentId = void 0;
376
375
  checkpointsChanged = 1;
377
376
  });
378
- const table = mapEnsure(delta, tableId, mapNew());
379
- const row = mapEnsure(table, rowId, mapNew());
380
- const oldNew = mapEnsure(
381
- row,
382
- cellId,
383
- [void 0, void 0],
384
- (addOldNew) => (addOldNew[0] = oldCell),
385
- );
377
+ const table = mapEnsure(delta, tableId, mapNew);
378
+ const row = mapEnsure(table, rowId, mapNew);
379
+ const oldNew = mapEnsure(row, cellId, () => [oldCell, void 0]);
386
380
  oldNew[1] = newCell;
387
- if (oldNew[0] === oldNew[1]) {
381
+ if (oldNew[0] === newCell) {
388
382
  if (collIsEmpty(mapSet(row, cellId))) {
389
383
  if (collIsEmpty(mapSet(table, rowId))) {
390
384
  if (collIsEmpty(mapSet(delta, tableId))) {
@@ -1336,7 +1330,7 @@ const createStore = () => {
1336
1330
  const rowDefaulted = mapNew();
1337
1331
  const rowNonDefaulted = setNew();
1338
1332
  transformMap(
1339
- mapEnsure(schemaMap, tableId, mapNew()),
1333
+ mapEnsure(schemaMap, tableId, mapNew),
1340
1334
  tableSchema,
1341
1335
  (tableSchemaMap, cellId, cellSchema) => {
1342
1336
  mapSet(tableSchemaMap, cellId, cellSchema);
@@ -1363,18 +1357,20 @@ const createStore = () => {
1363
1357
  );
1364
1358
  const setValidTable = (tableId, table) =>
1365
1359
  transformMap(
1366
- mapEnsure(tablesMap, tableId, mapNew(), () =>
1367
- tableIdsChanged(tableId, 1),
1368
- ),
1360
+ mapEnsure(tablesMap, tableId, () => {
1361
+ tableIdsChanged(tableId, 1);
1362
+ return mapNew();
1363
+ }),
1369
1364
  table,
1370
1365
  (tableMap, rowId, row) => setValidRow(tableId, tableMap, rowId, row),
1371
1366
  (tableMap, rowId) => delValidRow(tableId, tableMap, rowId),
1372
1367
  );
1373
1368
  const setValidRow = (tableId, tableMap, rowId, newRow, forceDel) =>
1374
1369
  transformMap(
1375
- mapEnsure(tableMap, rowId, mapNew(), () =>
1376
- rowIdsChanged(tableId, rowId, 1),
1377
- ),
1370
+ mapEnsure(tableMap, rowId, () => {
1371
+ rowIdsChanged(tableId, rowId, 1);
1372
+ return mapNew();
1373
+ }),
1378
1374
  newRow,
1379
1375
  (rowMap, cellId, cell) =>
1380
1376
  setValidCell(tableId, rowId, rowMap, cellId, cell),
@@ -1437,25 +1433,25 @@ const createStore = () => {
1437
1433
  const tableIdsChanged = (tableId, added) =>
1438
1434
  idsChanged(changedTableIds, tableId, added);
1439
1435
  const rowIdsChanged = (tableId, rowId, added) =>
1440
- idsChanged(mapEnsure(changedRowIds, tableId, mapNew()), rowId, added);
1436
+ idsChanged(mapEnsure(changedRowIds, tableId, mapNew), rowId, added);
1441
1437
  const cellIdsChanged = (tableId, rowId, cellId, added) =>
1442
1438
  idsChanged(
1443
- mapEnsure(mapEnsure(changedCellIds, tableId, mapNew()), rowId, mapNew()),
1439
+ mapEnsure(mapEnsure(changedCellIds, tableId, mapNew), rowId, mapNew),
1444
1440
  cellId,
1445
1441
  added,
1446
1442
  );
1447
1443
  const cellChanged = (tableId, rowId, cellId, oldCell, newCell) =>
1448
1444
  (mapEnsure(
1449
- mapEnsure(mapEnsure(changedCells, tableId, mapNew()), rowId, mapNew()),
1445
+ mapEnsure(mapEnsure(changedCells, tableId, mapNew), rowId, mapNew),
1450
1446
  cellId,
1451
- [oldCell],
1447
+ () => [oldCell, 0],
1452
1448
  )[1] = newCell);
1453
1449
  const cellInvalid = (tableId, rowId, cellId, invalidCell, defaultedCell) => {
1454
1450
  arrayPush(
1455
1451
  mapEnsure(
1456
- mapEnsure(mapEnsure(invalidCells, tableId, mapNew()), rowId, mapNew()),
1452
+ mapEnsure(mapEnsure(invalidCells, tableId, mapNew), rowId, mapNew),
1457
1453
  cellId,
1458
- [],
1454
+ () => [],
1459
1455
  ),
1460
1456
  invalidCell,
1461
1457
  );
package/lib/indexes.js CHANGED
@@ -1 +1 @@
1
- const e=e=>typeof e,t=e(""),s=(e,t)=>e.every(((s,n)=>0==n||t(e[n-1],s)<=0)),n=(e,t)=>e.sort(t),o=(e,t)=>e.forEach(t),r=e=>e.length,c=e=>0==r(e),d=e=>e.slice(1),l=e=>null==e,i=(e,t,s)=>l(e)?s?.():t(e),a=(e,t)=>e?.has(t)??!1,h=e=>l(e)||0==(e=>e.size)(e),u=e=>e.clear(),I=(e,t)=>e?.forEach(t),f=(e,t)=>e?.delete(t),g=e=>new Map(e),S=e=>[...e?.keys()??[]],w=(e,t)=>e?.get(t),p=(e,t)=>I(e,((e,s)=>t(s,e))),L=(e,t,s)=>l(s)?(f(e,t),e):e?.set(t,s),x=(e,t,s,n)=>(a(e,t)||(n?.(s),e.set(t,s)),w(e,t)),v=e=>new Set(e),E=(e,t)=>e?.add(t),R=(s,n)=>e(s)==t?e=>e(s):s??(()=>n??""),b=(e,t)=>e<t?-1:1,y=(e,t,s)=>r(s)<2?E(c(s)?e:x(e,s[0],v()),t):y(x(e,s[0],g()),t,d(s)),T=e=>{const t=(s,n,...r)=>i(s,(s=>c(r)?e(s,n):o([r[0],null],(e=>t(w(s,e),n,...d(r))))));return t},k=Object.freeze,z=(e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))})((e=>{const t=g(),c=g(),[d,x,z,C,D,M,j,O,W,m]=((e,t,s)=>{const n=e.hasRow,r=g(),c=g(),d=g(),h=g(),f=g(),x=t=>i(w(f,t),(s=>{I(s,e.delListener),L(f,t)})),E=e=>{L(r,e),L(c,e),L(d,e),L(h,e),x(e)};return[()=>e,()=>S(r),e=>p(c,e),e=>a(c,e),e=>w(r,e),e=>w(c,e),(e,t)=>L(c,e,t),(i,S,E,R,b)=>{const y=g(),T=g();L(r,i,S),a(c,i)||(L(c,i,t()),L(d,i,g()),L(h,i,g()));const k=w(d,i),z=w(h,i),C=t=>{const o=s=>e.getCell(S,t,s),r=w(k,t),c=n(S,t)?s(R(o,t)):void 0;if(r!=c&&L(y,t,[r,c]),!l(b)){const e=w(z,t),s=n(S,t)?b(o,t):void 0;e!=s&&L(T,t,s)}},D=e=>{E((()=>{I(y,(([,e],t)=>L(k,t,e))),I(T,((e,t)=>L(z,t,e)))}),y,T,k,z,e),u(y),u(T)};p(k,C),e.hasTable(S)&&o(e.getRowIds(S),(e=>{a(k,e)||C(e)})),D(!0),x(i),L(f,i,v([e.addRowListener(S,null,((e,t,s)=>C(s))),e.addTableListener(S,(()=>D()))]))},E,()=>p(f,E)]})(e,g,(e=>l(e)?"":e+"")),[q,A,B]=(e=>{let t,s=0;const n=[],c=g();return[(o,r,d=[])=>{t??=e();const l=n.pop()??""+s++;return L(c,l,[o,r,d]),y(r,l,d),l},(e,s=[],...n)=>T(I)(e,(e=>i(w(c,e),(([e])=>e(t,...s,...n)))),...s),e=>i(w(c,e),(([,t,s])=>(T(f)(t,e,...s),L(c,e),r(n)<1e3&&n.push(e),s)),(()=>[])),(e,s,n)=>i(w(c,e),(([e,,c])=>{const d=(...i)=>{const a=r(i);a==r(c)?e(t,...i,...n(i)):l(c[a])?o(s[a](...i),(e=>d(...i,e))):d(...i,c[a])};d()}))]})((()=>G)),F=(t,s,n)=>{const o=D(t);I(n,((t,n)=>s(n,(s=>I(t,(t=>s(t,(s=>e.forEachCell(o,t,s)))))))))},G={setIndexDefinition:(e,o,r,d,u,S=b)=>{const x=l(u)?void 0:([e],[t])=>u(e,t);return O(e,o,((o,r,u,R,b,y)=>{let T=0;const k=v(),z=v(),C=M(e);if(I(r,(([e,t],s)=>{l(e)||(E(k,e),i(w(C,e),(t=>{f(t,s),h(t)&&(L(C,e),T=1)}))),l(t)||(E(k,t),a(C,t)||(L(C,t,v()),T=1),E(w(C,t),s),l(d)||E(z,t))})),o(),h(b)||(y?p(C,(e=>E(z,e))):p(u,(e=>i(w(R,e),(e=>E(z,e))))),I(z,(e=>{const t=(t,s)=>S(w(b,t),w(b,s),e),o=[...w(C,e)];s(o,t)||(L(C,e,v(n(o,t))),E(k,e))}))),(T||y)&&!l(x)){const t=[...C];s(t,x)||(j(e,g(n(t,x))),T=1)}T&&A(t,[e]),I(k,(t=>A(c,[e,t])))}),R(r),i(d,R)),G},delIndexDefinition:e=>(W(e),G),getStore:d,getIndexIds:x,forEachIndex:e=>z(((t,s)=>e(t,(e=>F(t,e,s))))),forEachSlice:(e,t)=>F(e,t,M(e)),hasIndex:C,hasSlice:(e,t)=>a(M(e),t),getTableId:D,getSliceIds:e=>S(M(e)),getSliceRowIds:(e,t)=>[...w(M(e),t)?.values()??[]],addSliceIdsListener:(e,s)=>q(s,t,[e]),addSliceRowIdsListener:(e,t,s)=>q(s,c,[e,t]),delListener:e=>(B(e),G),destroy:m,getListenerStats:()=>({})};return k(G)}));export{z as createIndexes};
1
+ const e=e=>typeof e,t=e(""),s=(e,t)=>e.every(((s,n)=>0==n||t(e[n-1],s)<=0)),n=(e,t)=>e.sort(t),o=(e,t)=>e.forEach(t),r=e=>e.length,c=e=>0==r(e),d=e=>e.slice(1),l=e=>null==e,i=(e,t,s)=>l(e)?s?.():t(e),a=(e,t)=>e?.has(t)??!1,h=e=>l(e)||0==(e=>e.size)(e),u=e=>e.clear(),I=(e,t)=>e?.forEach(t),f=(e,t)=>e?.delete(t),g=e=>new Map(e),S=e=>[...e?.keys()??[]],w=(e,t)=>e?.get(t),p=(e,t)=>I(e,((e,s)=>t(s,e))),L=(e,t,s)=>l(s)?(f(e,t),e):e?.set(t,s),x=(e,t,s)=>(a(e,t)||e.set(t,s()),w(e,t)),v=e=>new Set(e),E=(e,t)=>e?.add(t),R=(s,n)=>e(s)==t?e=>e(s):s??(()=>n??""),b=(e,t)=>e<t?-1:1,y=(e,t,s)=>r(s)<2?E(c(s)?e:x(e,s[0],v),t):y(x(e,s[0],g),t,d(s)),T=e=>{const t=(s,n,...r)=>i(s,(s=>c(r)?e(s,n):o([r[0],null],(e=>t(w(s,e),n,...d(r))))));return t},k=Object.freeze,z=(e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))})((e=>{const t=g(),c=g(),[d,x,z,C,D,M,j,O,W,m]=((e,t,s)=>{const n=e.hasRow,r=g(),c=g(),d=g(),h=g(),f=g(),x=t=>i(w(f,t),(s=>{I(s,e.delListener),L(f,t)})),E=e=>{L(r,e),L(c,e),L(d,e),L(h,e),x(e)};return[()=>e,()=>S(r),e=>p(c,e),e=>a(c,e),e=>w(r,e),e=>w(c,e),(e,t)=>L(c,e,t),(i,S,E,R,b)=>{const y=g(),T=g();L(r,i,S),a(c,i)||(L(c,i,t()),L(d,i,g()),L(h,i,g()));const k=w(d,i),z=w(h,i),C=t=>{const o=s=>e.getCell(S,t,s),r=w(k,t),c=n(S,t)?s(R(o,t)):void 0;if(r!=c&&L(y,t,[r,c]),!l(b)){const e=w(z,t),s=n(S,t)?b(o,t):void 0;e!=s&&L(T,t,s)}},D=e=>{E((()=>{I(y,(([,e],t)=>L(k,t,e))),I(T,((e,t)=>L(z,t,e)))}),y,T,k,z,e),u(y),u(T)};p(k,C),e.hasTable(S)&&o(e.getRowIds(S),(e=>{a(k,e)||C(e)})),D(!0),x(i),L(f,i,v([e.addRowListener(S,null,((e,t,s)=>C(s))),e.addTableListener(S,(()=>D()))]))},E,()=>p(f,E)]})(e,g,(e=>l(e)?"":e+"")),[q,A,B]=(e=>{let t,s=0;const n=[],c=g();return[(o,r,d=[])=>{t??=e();const l=n.pop()??""+s++;return L(c,l,[o,r,d]),y(r,l,d),l},(e,s=[],...n)=>T(I)(e,(e=>i(w(c,e),(([e])=>e(t,...s,...n)))),...s),e=>i(w(c,e),(([,t,s])=>(T(f)(t,e,...s),L(c,e),r(n)<1e3&&n.push(e),s)),(()=>[])),(e,s,n)=>i(w(c,e),(([e,,c])=>{const d=(...i)=>{const a=r(i);a==r(c)?e(t,...i,...n(i)):l(c[a])?o(s[a](...i),(e=>d(...i,e))):d(...i,c[a])};d()}))]})((()=>G)),F=(t,s,n)=>{const o=D(t);I(n,((t,n)=>s(n,(s=>I(t,(t=>s(t,(s=>e.forEachCell(o,t,s)))))))))},G={setIndexDefinition:(e,o,r,d,u,S=b)=>{const x=l(u)?void 0:([e],[t])=>u(e,t);return O(e,o,((o,r,u,R,b,y)=>{let T=0;const k=v(),z=v(),C=M(e);if(I(r,(([e,t],s)=>{l(e)||(E(k,e),i(w(C,e),(t=>{f(t,s),h(t)&&(L(C,e),T=1)}))),l(t)||(E(k,t),a(C,t)||(L(C,t,v()),T=1),E(w(C,t),s),l(d)||E(z,t))})),o(),h(b)||(y?p(C,(e=>E(z,e))):p(u,(e=>i(w(R,e),(e=>E(z,e))))),I(z,(e=>{const t=(t,s)=>S(w(b,t),w(b,s),e),o=[...w(C,e)];s(o,t)||(L(C,e,v(n(o,t))),E(k,e))}))),(T||y)&&!l(x)){const t=[...C];s(t,x)||(j(e,g(n(t,x))),T=1)}T&&A(t,[e]),I(k,(t=>A(c,[e,t])))}),R(r),i(d,R)),G},delIndexDefinition:e=>(W(e),G),getStore:d,getIndexIds:x,forEachIndex:e=>z(((t,s)=>e(t,(e=>F(t,e,s))))),forEachSlice:(e,t)=>F(e,t,M(e)),hasIndex:C,hasSlice:(e,t)=>a(M(e),t),getTableId:D,getSliceIds:e=>S(M(e)),getSliceRowIds:(e,t)=>[...w(M(e),t)?.values()??[]],addSliceIdsListener:(e,s)=>q(s,t,[e]),addSliceRowIdsListener:(e,t,s)=>q(s,c,[e,t]),delListener:e=>(B(e),G),destroy:m,getListenerStats:()=>({})};return k(G)}));export{z as createIndexes};
package/lib/indexes.js.gz CHANGED
Binary file
package/lib/metrics.js CHANGED
@@ -1 +1 @@
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};
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)=>(f(e,t)||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
@@ -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,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};
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)||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
@@ -1661,7 +1661,7 @@ export interface Store {
1661
1661
  * transaction, a relevant listener will only be called with the final value
1662
1662
  * (assuming it is different to the value at the start of the transaction),
1663
1663
  * regardless of the changes that happened in between. For example, if a Cell
1664
- * had a value `'b'` and then, within a transaction, it was changed to `'b'`
1664
+ * had a value `'a'` and then, within a transaction, it was changed to `'b'`
1665
1665
  * and then `'c'`, any CellListener registered for that cell would be called
1666
1666
  * once as if there had been a single change from `'a'` to `'c'`.
1667
1667
  *
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=>[e,e],a=(e,t)=>e.forEach(t),o=e=>e.length,d=e=>0==o(e),c=e=>e.slice(1),i=(e,t)=>e.push(t),u=e=>JSON.stringify(e,((e,t)=>{return b(t,Map)?(s=[...t],n=(e,[t,s])=>(e[t]=s,e),r={},s.reduce(n,r)):t;var s,n,r})),f=JSON.parse,h=isFinite,b=(e,t)=>e instanceof t,g=e=>null==e,T=(e,t,s)=>g(e)?s?.():t(e),w=e=>e==t||e==s,p=(e,t)=>e?.has(t)??!1,L=e=>g(e)||0==(e=>e.size)(e),R=e=>e.clear(),C=(e,t)=>e?.forEach(t),y=(e,t)=>e?.delete(t),I=e=>new Map(e),S=(e=I)=>[e(),e()],v=e=>[...e?.keys()??[]],E=(e,t)=>e?.get(t),J=(e,t)=>C(e,((e,s)=>t(s,e))),m=(e,t,s)=>g(s)?(y(e,t),e):e?.set(t,s),z=(e,t,s,n)=>(p(e,t)||(n?.(s),e.set(t,s)),E(e,t)),O=(e,t,s)=>{const n={},r=t??(e=>e);return C(e,((e,t)=>T(r(e),(e=>s?.(e)?0:n[t]=e)))),n},k=(e,t)=>{const s=I(),n=t??(e=>e);return C(e,((e,t)=>s.set(t,n(e)))),s},F=e=>k(e,k),M=Object,N=M.keys,j=M.isFrozen,x=M.freeze,P=(e,t)=>!g(((e,t)=>T(e,(e=>e[t])))(e,t)),q=(e,t)=>delete e[t],A=(e,t)=>a(M.entries(e),(([e,s])=>t(s,e))),B=e=>d(N(e)),D=e=>new Set(e),G=(e,t)=>e?.add(t),H=(e,t,s)=>o(s)<2?G(d(s)?e:z(e,s[0],D()),t):H(z(e,s[0],I()),t,c(s)),K=e=>{const t=(s,n,...r)=>T(s,(s=>d(r)?e(s,n):a([r[0],null],(e=>t(E(s,e),n,...c(r))))));return t},Q=(e,t,s,n=m)=>{const r=(l=v(e),o=e=>!P(t,e),l.filter(o));var l,o;return a(N(t),(n=>s(e,n,t[n]))),a(r,(t=>n(e,t))),e},U=t=>{const s=e(t);return w(s)||s==n&&h(t)?s:void 0},V=(e,t,s)=>g(e)||!(e=>b(e,M)&&e.constructor==M)(e)||B(e)||j(e)?(s?.(),!1):(A(e,((s,n)=>{t(s,n)||q(e,n)})),!B(e)),W=(e,t,s)=>m(e,t,E(e,t)==-s?void 0:s),X=()=>{let t,s=0,d=0;const c=I(),h=I(),b=I(),M=I(),N=I(),j=I(),X=I(),Y=I(),Z=S(D),$=S(D),_=S(),ee=S(),te=S(),se=S(),ne=S(),re=S(),[le,ae,oe,de]=(e=>{let t,s=0;const n=[],r=I();return[(l,a,o=[])=>{t??=e();const d=n.pop()??""+s++;return m(r,d,[l,a,o]),H(a,d,o),d},(e,s=[],...n)=>K(C)(e,(e=>T(E(r,e),(([e])=>e(t,...s,...n)))),...s),e=>T(E(r,e),(([,t,s])=>(K(y)(t,e,...s),m(r,e),o(n)<1e3&&i(n,e),s)),(()=>[])),(e,s,n)=>T(E(r,e),(([e,,r])=>{const l=(...d)=>{const c=o(d);c==o(r)?e(t,...d,...n(d)):g(r[c])?a(s[c](...d),(e=>l(...d,e))):l(...d,r[c])};l()}))]})((()=>He)),ce=(e,s)=>(!t||p(j,s)||me(s))&&V(e,((e,t)=>ie(s,t,e)),(()=>me(s))),ie=(e,t,s,n)=>V(n?s:fe(s,e,t),((n,r)=>T(ue(e,t,r,n),(e=>(s[r]=e,!0)),(()=>!1))),(()=>me(e,t))),ue=(e,s,n,r)=>t?T(E(E(j,e),n),(t=>U(r)!=t.type?me(e,s,n,r,t.default):r),(()=>me(e,s,n,r))):g(U(r))?me(e,s,n,r):r,fe=(e,t,s)=>(T(E(X,t),(([n,r])=>{C(n,((t,s)=>{P(e,s)||(e[s]=t)})),C(r,(n=>{P(e,n)||me(t,s,n)}))})),e),he=e=>Q(j,e,((e,t,s)=>{const n=I(),r=D();Q(z(j,t,I()),s,((e,t,s)=>{m(e,t,s),T(s.default,(e=>m(n,t,e)),(()=>G(r,t)))})),m(X,t,[n,r])}),((e,t)=>{m(j,t),m(X,t)})),be=e=>Q(Y,e,((e,t,s)=>ge(t,s)),((e,t)=>Ce(t))),ge=(e,t)=>Q(z(Y,e,I(),(()=>Se(e,1))),t,((t,s,n)=>Te(e,t,s,n)),((t,s)=>ye(e,t,s))),Te=(e,t,s,n,r)=>Q(z(t,s,I(),(()=>ve(e,s,1))),n,((t,n,r)=>we(e,s,t,n,r)),((n,l)=>Ie(e,t,s,n,l,r))),we=(e,t,s,n,r)=>{p(s,n)||Ee(e,t,n,1);const l=E(s,n);r!==l&&(Je(e,t,n,l,r),m(s,n,r))},pe=(e,t,s,n,r)=>T(E(t,s),(t=>we(e,s,t,n,r)),(()=>Te(e,t,s,fe({[n]:r},e,s)))),Le=e=>{const t=""+s++;return p(e,t)?Le(e):t},Re=e=>E(Y,e)??ge(e,{}),Ce=e=>ge(e,{}),ye=(e,t,s)=>Te(e,t,s,{},!0),Ie=(e,t,s,n,r,l)=>{const a=E(E(X,e)?.[0],r);if(!g(a)&&!l)return we(e,s,n,r,a);const o=t=>{Je(e,s,t,E(n,t)),Ee(e,s,t,-1),m(n,t)};g(a)?o(r):J(n,o),L(n)&&(ve(e,s,-1),L(m(t,s))&&(Se(e,-1),m(Y,e)))},Se=(e,t)=>W(c,e,t),ve=(e,t,s)=>W(z(h,e,I()),t,s),Ee=(e,t,s,n)=>W(z(z(b,e,I()),t,I()),s,n),Je=(e,t,s,n,r)=>z(z(z(M,e,I()),t,I()),s,[n])[1]=r,me=(e,t,s,n,r)=>(i(z(z(z(N,e,I()),t,I()),s,[]),n),r),ze=(e,t,s)=>T(E(E(E(M,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...l(Pe(e,t,s))])),Oe=e=>L(N)||L(re[e])?0:C(e?k(N,F):N,((t,s)=>C(t,((t,n)=>C(t,((t,r)=>ae(re[e],[s,n,r],t))))))),ke=e=>{if(!L(M)){const t=L(se[e])&&L(ee[e])&&L($[e]),s=L(ne[e])&&L(te[e])&&L(_[e])&&L(Z[e]);if(!t||!s){const n=e?[k(c),F(h),k(b,F),k(M,F)]:[c,h,b,M];if(t||(C(n[2],((t,s)=>C(t,((t,n)=>{L(t)||ae(se[e],[s,n])})))),C(n[1],((t,s)=>{L(t)||ae(ee[e],[s])})),L(n[0])||ae($[e])),!s){let t;C(n[3],((s,n)=>{let r;C(s,((s,l)=>{let a;C(s,(([s,o],d)=>{o!==s&&(ae(ne[e],[n,l,d],o,s,ze),t=r=a=1)})),a&&ae(te[e],[n,l],ze)})),r&&ae(_[e],[n],ze)})),t&&ae(Z[e],[],ze)}}}},Fe=e=>(Ge(e),He),Me=()=>O(Y,(e=>O(e,O))),Ne=()=>v(Y),je=e=>v(E(Y,e)),xe=(e,t)=>v(E(E(Y,e),t)),Pe=(e,t,s)=>E(E(E(Y,e),t),s),qe=e=>Fe((()=>(e=>V(e,ce,me))(e)?be(e):0)),Ae=(t,s,n,l)=>Fe((()=>T(ue(t,s,n,e(l)==r?l(Pe(t,s,n)):l),(e=>pe(t,Re(t),s,n,e))))),Be=()=>Fe((()=>be({}))),De=(e,t,s,n)=>Fe((()=>T(E(Y,e),(r=>T(E(r,t),(l=>p(l,s)?Ie(e,r,t,l,s,n):0)))))),Ge=(e,t)=>{if(-1==d)return;d++;const s=e?.();return d--,0==d&&(d=1,Oe(1),ke(1),d=-1,t?.(O(M,(e=>O(e,(e=>O(e,(e=>[...e]),(([e,t])=>e===t))),B)),B),O(N,(e=>O(e,O))))&&(d=1,C(M,((e,t)=>C(e,((e,s)=>C(e,(([e],n)=>g(e)?De(t,s,n,!0):Ae(t,s,n,e))))))),d=-1),Oe(0),ke(0),d=0,a([M,N,c,h,b],R)),s},He={getTables:Me,getTableIds:Ne,getTable:e=>O(E(Y,e),O),getRowIds:je,getRow:(e,t)=>O(E(E(Y,e),t)),getCellIds:xe,getCell:Pe,hasTables:()=>!L(Y),hasTable:e=>p(Y,e),hasRow:(e,t)=>p(E(Y,e),t),hasCell:(e,t,s)=>p(E(E(Y,e),t),s),getJson:()=>u(Y),getSchemaJson:()=>u(j),setTables:qe,setTable:(e,t)=>Fe((()=>ce(t,e)?ge(e,t):0)),setRow:(e,t,s)=>Fe((()=>ie(e,t,s)?Te(e,Re(e),t,s):0)),addRow:(e,t)=>Ge((()=>{let s;return ie(e,s,t)&&Te(e,Re(e),s=Le(E(Y,e)),t),s})),setPartialRow:(e,t,s)=>Fe((()=>{if(ie(e,t,s,1)){const n=Re(e);A(s,((s,r)=>pe(e,n,t,r,s)))}})),setCell:Ae,setJson:e=>{try{"{}"===e?Be():qe(f(e))}catch{}return He},setSchema:e=>Fe((()=>{if((t=(e=>V(e,(e=>V(e,(e=>{if(!V(e,((e,t)=>["type","default"].includes(t))))return!1;const t=e.type;return!(!w(t)&&t!=n||(U(e.default)!=t&&q(e,"default"),0))})))))(e))&&(he(e),!L(Y))){const e=Me();Be(),qe(e)}})),delTables:Be,delTable:e=>Fe((()=>p(Y,e)?Ce(e):0)),delRow:(e,t)=>Fe((()=>T(E(Y,e),(s=>p(s,t)?ye(e,s,t):0)))),delCell:De,delSchema:()=>Fe((()=>{he({}),t=!1})),transaction:Ge,forEachTable:e=>C(Y,((t,s)=>e(s,(e=>C(t,((t,s)=>e(s,(e=>J(t,e))))))))),forEachRow:(e,t)=>C(E(Y,e),((e,s)=>t(s,(t=>J(e,t))))),forEachCell:(e,t,s)=>J(E(E(Y,e),t),s),addTablesListener:(e,t)=>le(e,Z[t?1:0]),addTableIdsListener:(e,t)=>le(e,$[t?1:0]),addTableListener:(e,t,s)=>le(t,_[s?1:0],[e]),addRowIdsListener:(e,t,s)=>le(t,ee[s?1:0],[e]),addRowListener:(e,t,s,n)=>le(s,te[n?1:0],[e,t]),addCellIdsListener:(e,t,s,n)=>le(s,se[n?1:0],[e,t]),addCellListener:(e,t,s,n,r)=>le(n,ne[r?1:0],[e,t,s]),addInvalidCellListener:(e,t,s,n,r)=>le(n,re[r?1:0],[e,t,s]),callListener:e=>(de(e,[Ne,je,xe],(e=>g(e[2])?[]:l(Pe(...e)))),He),delListener:e=>(oe(e),He),getListenerStats:()=>({})};return x(He)};export{X as createStore};
1
+ const e=e=>typeof e,t=e(""),s=e(!0),n=e(0),r=e(e),l=e=>[e,e],a=(e,t)=>e.forEach(t),o=e=>e.length,d=e=>0==o(e),c=e=>e.slice(1),i=(e,t)=>e.push(t),u=e=>JSON.stringify(e,((e,t)=>{return b(t,Map)?(s=[...t],n=(e,[t,s])=>(e[t]=s,e),r={},s.reduce(n,r)):t;var s,n,r})),f=JSON.parse,h=isFinite,b=(e,t)=>e instanceof t,g=e=>null==e,T=(e,t,s)=>g(e)?s?.():t(e),w=e=>e==t||e==s,p=(e,t)=>e?.has(t)??!1,L=e=>g(e)||0==(e=>e.size)(e),R=e=>e.clear(),C=(e,t)=>e?.forEach(t),y=(e,t)=>e?.delete(t),I=e=>new Map(e),S=(e=I)=>[e(),e()],v=e=>[...e?.keys()??[]],E=(e,t)=>e?.get(t),J=(e,t)=>C(e,((e,s)=>t(s,e))),m=(e,t,s)=>g(s)?(y(e,t),e):e?.set(t,s),z=(e,t,s)=>(p(e,t)||e.set(t,s()),E(e,t)),O=(e,t,s)=>{const n={},r=t??(e=>e);return C(e,((e,t)=>T(r(e),(e=>s?.(e)?0:n[t]=e)))),n},k=(e,t)=>{const s=I(),n=t??(e=>e);return C(e,((e,t)=>s.set(t,n(e)))),s},F=e=>k(e,k),M=Object,N=M.keys,j=M.isFrozen,x=M.freeze,P=(e,t)=>!g(((e,t)=>T(e,(e=>e[t])))(e,t)),q=(e,t)=>delete e[t],A=(e,t)=>a(M.entries(e),(([e,s])=>t(s,e))),B=e=>d(N(e)),D=e=>new Set(e),G=(e,t)=>e?.add(t),H=(e,t,s)=>o(s)<2?G(d(s)?e:z(e,s[0],D),t):H(z(e,s[0],I),t,c(s)),K=e=>{const t=(s,n,...r)=>T(s,(s=>d(r)?e(s,n):a([r[0],null],(e=>t(E(s,e),n,...c(r))))));return t},Q=(e,t,s,n=m)=>{const r=(l=v(e),o=e=>!P(t,e),l.filter(o));var l,o;return a(N(t),(n=>s(e,n,t[n]))),a(r,(t=>n(e,t))),e},U=t=>{const s=e(t);return w(s)||s==n&&h(t)?s:void 0},V=(e,t,s)=>g(e)||!(e=>b(e,M)&&e.constructor==M)(e)||B(e)||j(e)?(s?.(),!1):(A(e,((s,n)=>{t(s,n)||q(e,n)})),!B(e)),W=(e,t,s)=>m(e,t,E(e,t)==-s?void 0:s),X=()=>{let t,s=0,d=0;const c=I(),h=I(),b=I(),M=I(),N=I(),j=I(),X=I(),Y=I(),Z=S(D),$=S(D),_=S(),ee=S(),te=S(),se=S(),ne=S(),re=S(),[le,ae,oe,de]=(e=>{let t,s=0;const n=[],r=I();return[(l,a,o=[])=>{t??=e();const d=n.pop()??""+s++;return m(r,d,[l,a,o]),H(a,d,o),d},(e,s=[],...n)=>K(C)(e,(e=>T(E(r,e),(([e])=>e(t,...s,...n)))),...s),e=>T(E(r,e),(([,t,s])=>(K(y)(t,e,...s),m(r,e),o(n)<1e3&&i(n,e),s)),(()=>[])),(e,s,n)=>T(E(r,e),(([e,,r])=>{const l=(...d)=>{const c=o(d);c==o(r)?e(t,...d,...n(d)):g(r[c])?a(s[c](...d),(e=>l(...d,e))):l(...d,r[c])};l()}))]})((()=>He)),ce=(e,s)=>(!t||p(j,s)||me(s))&&V(e,((e,t)=>ie(s,t,e)),(()=>me(s))),ie=(e,t,s,n)=>V(n?s:fe(s,e,t),((n,r)=>T(ue(e,t,r,n),(e=>(s[r]=e,!0)),(()=>!1))),(()=>me(e,t))),ue=(e,s,n,r)=>t?T(E(E(j,e),n),(t=>U(r)!=t.type?me(e,s,n,r,t.default):r),(()=>me(e,s,n,r))):g(U(r))?me(e,s,n,r):r,fe=(e,t,s)=>(T(E(X,t),(([n,r])=>{C(n,((t,s)=>{P(e,s)||(e[s]=t)})),C(r,(n=>{P(e,n)||me(t,s,n)}))})),e),he=e=>Q(j,e,((e,t,s)=>{const n=I(),r=D();Q(z(j,t,I),s,((e,t,s)=>{m(e,t,s),T(s.default,(e=>m(n,t,e)),(()=>G(r,t)))})),m(X,t,[n,r])}),((e,t)=>{m(j,t),m(X,t)})),be=e=>Q(Y,e,((e,t,s)=>ge(t,s)),((e,t)=>Ce(t))),ge=(e,t)=>Q(z(Y,e,(()=>(Se(e,1),I()))),t,((t,s,n)=>Te(e,t,s,n)),((t,s)=>ye(e,t,s))),Te=(e,t,s,n,r)=>Q(z(t,s,(()=>(ve(e,s,1),I()))),n,((t,n,r)=>we(e,s,t,n,r)),((n,l)=>Ie(e,t,s,n,l,r))),we=(e,t,s,n,r)=>{p(s,n)||Ee(e,t,n,1);const l=E(s,n);r!==l&&(Je(e,t,n,l,r),m(s,n,r))},pe=(e,t,s,n,r)=>T(E(t,s),(t=>we(e,s,t,n,r)),(()=>Te(e,t,s,fe({[n]:r},e,s)))),Le=e=>{const t=""+s++;return p(e,t)?Le(e):t},Re=e=>E(Y,e)??ge(e,{}),Ce=e=>ge(e,{}),ye=(e,t,s)=>Te(e,t,s,{},!0),Ie=(e,t,s,n,r,l)=>{const a=E(E(X,e)?.[0],r);if(!g(a)&&!l)return we(e,s,n,r,a);const o=t=>{Je(e,s,t,E(n,t)),Ee(e,s,t,-1),m(n,t)};g(a)?o(r):J(n,o),L(n)&&(ve(e,s,-1),L(m(t,s))&&(Se(e,-1),m(Y,e)))},Se=(e,t)=>W(c,e,t),ve=(e,t,s)=>W(z(h,e,I),t,s),Ee=(e,t,s,n)=>W(z(z(b,e,I),t,I),s,n),Je=(e,t,s,n,r)=>z(z(z(M,e,I),t,I),s,(()=>[n,0]))[1]=r,me=(e,t,s,n,r)=>(i(z(z(z(N,e,I),t,I),s,(()=>[])),n),r),ze=(e,t,s)=>T(E(E(E(M,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...l(Pe(e,t,s))])),Oe=e=>L(N)||L(re[e])?0:C(e?k(N,F):N,((t,s)=>C(t,((t,n)=>C(t,((t,r)=>ae(re[e],[s,n,r],t))))))),ke=e=>{if(!L(M)){const t=L(se[e])&&L(ee[e])&&L($[e]),s=L(ne[e])&&L(te[e])&&L(_[e])&&L(Z[e]);if(!t||!s){const n=e?[k(c),F(h),k(b,F),k(M,F)]:[c,h,b,M];if(t||(C(n[2],((t,s)=>C(t,((t,n)=>{L(t)||ae(se[e],[s,n])})))),C(n[1],((t,s)=>{L(t)||ae(ee[e],[s])})),L(n[0])||ae($[e])),!s){let t;C(n[3],((s,n)=>{let r;C(s,((s,l)=>{let a;C(s,(([s,o],d)=>{o!==s&&(ae(ne[e],[n,l,d],o,s,ze),t=r=a=1)})),a&&ae(te[e],[n,l],ze)})),r&&ae(_[e],[n],ze)})),t&&ae(Z[e],[],ze)}}}},Fe=e=>(Ge(e),He),Me=()=>O(Y,(e=>O(e,O))),Ne=()=>v(Y),je=e=>v(E(Y,e)),xe=(e,t)=>v(E(E(Y,e),t)),Pe=(e,t,s)=>E(E(E(Y,e),t),s),qe=e=>Fe((()=>(e=>V(e,ce,me))(e)?be(e):0)),Ae=(t,s,n,l)=>Fe((()=>T(ue(t,s,n,e(l)==r?l(Pe(t,s,n)):l),(e=>pe(t,Re(t),s,n,e))))),Be=()=>Fe((()=>be({}))),De=(e,t,s,n)=>Fe((()=>T(E(Y,e),(r=>T(E(r,t),(l=>p(l,s)?Ie(e,r,t,l,s,n):0)))))),Ge=(e,t)=>{if(-1==d)return;d++;const s=e?.();return d--,0==d&&(d=1,Oe(1),ke(1),d=-1,t?.(O(M,(e=>O(e,(e=>O(e,(e=>[...e]),(([e,t])=>e===t))),B)),B),O(N,(e=>O(e,O))))&&(d=1,C(M,((e,t)=>C(e,((e,s)=>C(e,(([e],n)=>g(e)?De(t,s,n,!0):Ae(t,s,n,e))))))),d=-1),Oe(0),ke(0),d=0,a([M,N,c,h,b],R)),s},He={getTables:Me,getTableIds:Ne,getTable:e=>O(E(Y,e),O),getRowIds:je,getRow:(e,t)=>O(E(E(Y,e),t)),getCellIds:xe,getCell:Pe,hasTables:()=>!L(Y),hasTable:e=>p(Y,e),hasRow:(e,t)=>p(E(Y,e),t),hasCell:(e,t,s)=>p(E(E(Y,e),t),s),getJson:()=>u(Y),getSchemaJson:()=>u(j),setTables:qe,setTable:(e,t)=>Fe((()=>ce(t,e)?ge(e,t):0)),setRow:(e,t,s)=>Fe((()=>ie(e,t,s)?Te(e,Re(e),t,s):0)),addRow:(e,t)=>Ge((()=>{let s;return ie(e,s,t)&&Te(e,Re(e),s=Le(E(Y,e)),t),s})),setPartialRow:(e,t,s)=>Fe((()=>{if(ie(e,t,s,1)){const n=Re(e);A(s,((s,r)=>pe(e,n,t,r,s)))}})),setCell:Ae,setJson:e=>{try{"{}"===e?Be():qe(f(e))}catch{}return He},setSchema:e=>Fe((()=>{if((t=(e=>V(e,(e=>V(e,(e=>{if(!V(e,((e,t)=>["type","default"].includes(t))))return!1;const t=e.type;return!(!w(t)&&t!=n||(U(e.default)!=t&&q(e,"default"),0))})))))(e))&&(he(e),!L(Y))){const e=Me();Be(),qe(e)}})),delTables:Be,delTable:e=>Fe((()=>p(Y,e)?Ce(e):0)),delRow:(e,t)=>Fe((()=>T(E(Y,e),(s=>p(s,t)?ye(e,s,t):0)))),delCell:De,delSchema:()=>Fe((()=>{he({}),t=!1})),transaction:Ge,forEachTable:e=>C(Y,((t,s)=>e(s,(e=>C(t,((t,s)=>e(s,(e=>J(t,e))))))))),forEachRow:(e,t)=>C(E(Y,e),((e,s)=>t(s,(t=>J(e,t))))),forEachCell:(e,t,s)=>J(E(E(Y,e),t),s),addTablesListener:(e,t)=>le(e,Z[t?1:0]),addTableIdsListener:(e,t)=>le(e,$[t?1:0]),addTableListener:(e,t,s)=>le(t,_[s?1:0],[e]),addRowIdsListener:(e,t,s)=>le(t,ee[s?1:0],[e]),addRowListener:(e,t,s,n)=>le(s,te[n?1:0],[e,t]),addCellIdsListener:(e,t,s,n)=>le(s,se[n?1:0],[e,t]),addCellListener:(e,t,s,n,r)=>le(n,ne[r?1:0],[e,t,s]),addInvalidCellListener:(e,t,s,n,r)=>le(n,re[r?1:0],[e,t,s]),callListener:e=>(de(e,[Ne,je,xe],(e=>g(e[2])?[]:l(Pe(...e)))),He),delListener:e=>(oe(e),He),getListenerStats:()=>({})};return x(He)};export{X 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),a=s(0),r=s(s),i=e=>[e,e],d=(e,t)=>e.includes(t),l=(e,t)=>e.every(((s,n)=>0==n||t(e[n-1],s)<=0)),c=(e,t)=>e.sort(t),u=(e,t)=>e.forEach(t),h=e=>L(e,((e,t)=>e+t),0),g=e=>e.length,f=e=>0==g(e),L=(e,t,s)=>e.reduce(t,s),w=e=>e.slice(1),v=(e,t)=>e.push(t),p=e=>e.pop(),I=e=>JSON.stringify(e,((e,t)=>b(t,Map)?L([...t],((e,[t,s])=>(e[t]=s,e)),{}):t)),S=JSON.parse,y=Math.max,R=Math.min,T=isFinite,b=(e,t)=>e instanceof t,C=e=>null==e,m=(e,t,s)=>C(e)?s?.():t(e),E=e=>e==n||e==o,k=e=>s(e)==r,M=()=>{},A=e=>e.size,x=(e,t)=>e?.has(t)??!1,D=e=>C(e)||0==A(e),J=e=>[...e?.values()??[]],F=e=>e.clear(),z=(e,t)=>e?.forEach(t),N=(e,t)=>e?.delete(t),O=e=>new Map(e),j=(e=O)=>[e(),e()],P=e=>[...e?.keys()??[]],B=(e,t)=>e?.get(t),H=(e,t)=>z(e,((e,s)=>t(s,e))),W=(e,t,s)=>C(s)?(N(e,t),e):e?.set(t,s),q=(e,t,s,n)=>(x(e,t)||(n?.(s),e.set(t,s)),B(e,t)),G=(e,t,s)=>{const n={},o=t??(e=>e);return z(e,((e,t)=>m(o(e),(e=>s?.(e)?0:n[t]=e)))),n},K=(e,t)=>{const s=O(),n=t??(e=>e);return z(e,((e,t)=>s.set(t,n(e)))),s},Q=e=>K(e,K),U=e=>new Set(e),V=(e,t)=>e?.add(t),X=(e,t,s)=>{const n=e.hasRow,o=O(),a=O(),r=O(),i=O(),d=O(),l=t=>m(B(d,t),(s=>{z(s,e.delListener),W(d,t)})),c=e=>{W(o,e),W(a,e),W(r,e),W(i,e),l(e)};return[()=>e,()=>P(o),e=>H(a,e),e=>x(a,e),e=>B(o,e),e=>B(a,e),(e,t)=>W(a,e,t),(c,h,g,f,L)=>{const w=O(),v=O();W(o,c,h),x(a,c)||(W(a,c,t()),W(r,c,O()),W(i,c,O()));const p=B(r,c),I=B(i,c),S=t=>{const o=s=>e.getCell(h,t,s),a=B(p,t),r=n(h,t)?s(f(o,t)):void 0;if(a!=r&&W(w,t,[a,r]),!C(L)){const e=B(I,t),s=n(h,t)?L(o,t):void 0;e!=s&&W(v,t,s)}},y=e=>{g((()=>{z(w,(([,e],t)=>W(p,t,e))),z(v,((e,t)=>W(I,t,e)))}),w,v,p,I,e),F(w),F(v)};H(p,S),e.hasTable(h)&&u(e.getRowIds(h),(e=>{x(p,e)||S(e)})),y(!0),l(c),W(d,c,U([e.addRowListener(h,null,((e,t,s)=>S(s))),e.addTableListener(h,(()=>y()))]))},c,()=>H(d,c)]},Y=(e,t)=>s(e)==n?t=>t(e):e??(()=>t??""),Z=e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))},$=(e,t,s)=>g(s)<2?V(f(s)?e:q(e,s[0],U()),t):$(q(e,s[0],O()),t,w(s)),_=e=>{const t=(s,n,...o)=>m(s,(s=>f(o)?e(s,n):u([o[0],null],(e=>t(B(s,e),n,...w(o))))));return t},ee=e=>{let t,s=0;const n=[],o=O();return[(a,r,i=[])=>{t??=e();const d=p(n)??""+s++;return W(o,d,[a,r,i]),$(r,d,i),d},(e,s=[],...n)=>_(z)(e,(e=>m(B(o,e),(([e])=>e(t,...s,...n)))),...s),e=>m(B(o,e),(([,t,s])=>(_(N)(t,e,...s),W(o,e),g(n)<1e3&&v(n,e),s)),(()=>[])),(e,s,n)=>m(B(o,e),(([e,,o])=>{const a=(...r)=>{const i=g(r);i==g(o)?e(t,...r,...n(r)):C(o[i])?u(s[i](...r),(e=>a(...r,e))):a(...r,o[i])};a()}))]},te=Object,se=te.keys,ne=te.isFrozen,oe=te.freeze,ae=(e,t)=>!C(((e,t)=>m(e,(e=>e[t])))(e,t)),re=(e,t)=>delete e[t],ie=(e,t)=>u(te.entries(e),(([e,s])=>t(s,e))),de=e=>f(se(e)),le=Z((e=>{let t,s,n,o=100,a=O(),r=1;const i=U(),l=O(),[c,h,L]=ee((()=>G)),w=O(),I=O(),S=[],y=[],R=(t,s)=>{r=0,e.transaction((()=>z(B(w,s),((s,n)=>z(s,((s,o)=>z(s,((s,a)=>C(s[t])?e.delCell(n,o,a,!0):e.setCell(n,o,a,s[t]))))))))),r=1},T=e=>{W(w,e),W(I,e),h(l,[e])},b=(e,t)=>u(((e,t)=>e.splice(0,t))(e,t??g(e)),T),E=()=>b(S,g(S)-o),k=e.addCellListener(null,null,null,((e,s,o,i,d,l)=>{if(r){m(t,(()=>{v(S,t),E(),b(y),t=void 0,n=1}));const e=q(a,s,O()),r=q(e,o,O()),c=q(r,i,[void 0,void 0],(e=>e[0]=l));c[1]=d,c[0]===c[1]&&D(W(r,i))&&D(W(e,o))&&D(W(a,s))&&(t=p(S),n=1),F()}})),M=(e="")=>(C(t)&&(t=""+s++,W(w,t,a),j(t,e),a=O(),n=1),t),A=()=>{f(S)||(y.unshift(M()),R(0,t),t=p(S),n=1)},J=()=>{f(y)||(v(S,t),t=y.shift(),R(1,t),n=1)},F=()=>{n&&(h(i),n=0)},N=e=>{const t=M(e);return F(),t},j=(e,t)=>(P(e)&&B(I,e)!==t&&(W(I,e,t),h(l,[e])),G),P=e=>x(w,e),G={setSize:e=>(o=e,E(),G),addCheckpoint:N,setCheckpoint:j,getStore:()=>e,getCheckpointIds:()=>[[...S],t,[...y]],forEachCheckpoint:e=>H(I,e),hasCheckpoint:P,getCheckpoint:e=>B(I,e),goBackward:()=>(A(),F(),G),goForward:()=>(J(),F(),G),goTo:e=>{const s=d(S,e)?A:d(y,e)?J:null;for(;!C(s)&&e!=t;)s();return F(),G},addCheckpointIdsListener:e=>c(e,i),addCheckpointListener:(e,t)=>c(t,l,[e]),delListener:e=>(L(e),G),clear:()=>(b(S),b(y),C(t)||T(t),t=void 0,s=0,N(),G),destroy:()=>{e.delListener(k)},getListenerStats:()=>({})};return oe(G.clear())})),ce=(e,t)=>e<t?-1:1,ue=Z((e=>{const t=O(),s=O(),[n,o,a,r,i,d,u,h,g,f]=X(e,O,(e=>C(e)?"":e+"")),[L,w,v]=ee((()=>I)),p=(t,s,n)=>{const o=i(t);z(n,((t,n)=>s(n,(s=>z(t,(t=>s(t,(s=>e.forEachCell(o,t,s)))))))))},I={setIndexDefinition:(e,n,o,a,r,i=ce)=>{const g=C(r)?void 0:([e],[t])=>r(e,t);return h(e,n,((n,o,r,h,f,L)=>{let v=0;const p=U(),I=U(),S=d(e);if(z(o,(([e,t],s)=>{C(e)||(V(p,e),m(B(S,e),(t=>{N(t,s),D(t)&&(W(S,e),v=1)}))),C(t)||(V(p,t),x(S,t)||(W(S,t,U()),v=1),V(B(S,t),s),C(a)||V(I,t))})),n(),D(f)||(L?H(S,(e=>V(I,e))):H(r,(e=>m(B(h,e),(e=>V(I,e))))),z(I,(e=>{const t=(t,s)=>i(B(f,t),B(f,s),e),s=[...B(S,e)];l(s,t)||(W(S,e,U(c(s,t))),V(p,e))}))),(v||L)&&!C(g)){const t=[...S];l(t,g)||(u(e,O(c(t,g))),v=1)}v&&w(t,[e]),z(p,(t=>w(s,[e,t])))}),Y(o),m(a,Y)),I},delIndexDefinition:e=>(g(e),I),getStore:n,getIndexIds:o,forEachIndex:e=>a(((t,s)=>e(t,(e=>p(t,e,s))))),forEachSlice:(e,t)=>p(e,t,d(e)),hasIndex:r,hasSlice:(e,t)=>x(d(e),t),getTableId:i,getSliceIds:e=>P(d(e)),getSliceRowIds:(e,t)=>J(B(d(e),t)),addSliceIdsListener:(e,s)=>L(s,t,[e]),addSliceRowIdsListener:(e,t,n)=>L(n,s,[e,t]),delListener:e=>(v(e),I),destroy:f,getListenerStats:()=>({})};return oe(I)})),he=O([["avg",[(e,t)=>h(e)/t,(e,t,s)=>e+(t-e)/(s+1),(e,t,s)=>e+(e-t)/(s-1),(e,t,s,n)=>e+(t-s)/n]],["max",[e=>y(...e),(e,t)=>y(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:y(t,e)]],["min",[e=>R(...e),(e,t)=>R(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:R(t,e)]],["sum",[e=>h(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),ge=Z((e=>{const t=O(),[s,n,o,a,r,i,d,l,c,u]=X(e,M,(e=>isNaN(e)||C(e)||!0===e||!1===e||""===e?void 0:1*e)),[h,g,f]=ee((()=>L)),L={setMetricDefinition:(e,s,n,o,a,r,c)=>{const u=k(n)?[n,a,r,c]:B(he,n)??B(he,"sum");return l(e,s,((s,n,o,a,r,l)=>{let c=i(e),h=A(a);const[f,L,w,v]=u;l=l||C(c),z(n,(([e,t])=>{l||(c=C(e)?L?.(c,t,h++):C(t)?w?.(c,e,h--):v?.(c,t,e,h)),l=l||C(c)})),s(),D(a)?c=void 0:l&&(c=f(J(a),A(a))),T(c)||(c=void 0);const p=i(e);c!=p&&(d(e,c),g(t,[e],c,p))}),Y(o,1)),L},delMetricDefinition:e=>(c(e),L),getStore:s,getMetricIds:n,forEachMetric:o,hasMetric:a,getTableId:r,getMetric:i,addMetricListener:(e,s)=>h(s,t,[e]),delListener:e=>(f(e),L),destroy:u,getListenerStats:()=>({})};return oe(L)})),fe=(e,t,s,n,o)=>{let a,r=0;const i={load:async s=>{if(2!=r){r=1;const n=await t();C(n)||""==n?e.setTables(s):e.setJson(n),r=0}return i},startAutoLoad:async e=>(i.stopAutoLoad(),await i.load(e),n(i.load),i),stopAutoLoad:()=>(o(),i),save:async()=>(1!=r&&(r=2,await s(e.getJson()),r=0),i),startAutoSave:async()=>(await i.stopAutoSave().save(),a=e.addTablesListener((()=>i.save())),i),stopAutoSave:()=>(m(a,e.delListener),i),getStore:()=>e,destroy:()=>i.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return oe(i)},Le=globalThis.window,we=(e,t,s)=>{let n;return fe(e,(async()=>s.getItem(t)),(async e=>s.setItem(t,e)),(e=>{n=n=>{n.storageArea===s&&n.key===t&&e()},Le.addEventListener("storage",n)}),(()=>{Le.removeEventListener("storage",n),n=void 0}))},ve=(e,t)=>we(e,t,localStorage),pe=(e,t)=>we(e,t,sessionStorage),Ie=(s,n)=>{let o;return fe(s,(async()=>{try{return await e.readFile(n,"utf8")}catch{}}),(async t=>{try{await e.writeFile(n,t,"utf8")}catch{}}),(e=>{o=t(n,e)}),(()=>{o?.close(),o=void 0}))},Se=e=>e.headers.get("ETag"),ye=(e,t,s,n)=>{let o,a;return fe(e,(async()=>{const e=await fetch(t);return a=Se(e),e.text()}),(async e=>await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:e})),(e=>{o=setInterval((async()=>{const s=await fetch(t,{method:"HEAD"}),n=Se(s);C(a)||C(n)||n==a||(a=n,e())}),1e3*n)}),(()=>{m(o,clearInterval),o=void 0}))},Re=Z((e=>{const t=O(),s=O(),n=O(),o=O(),[a,r,i,d,l,c,u,h,g,f]=X(e,(()=>[O(),O(),O(),O()]),(e=>C(e)?void 0:e+"")),[L,w,v]=ee((()=>y)),p=(e,t,s)=>m(c(e),(([n,,o])=>{if(!x(o,t)){const a=U();if(l(e)!=S(e))V(a,t);else{let e=t;for(;!C(e)&&!x(a,e);)V(a,e),e=B(n,e)}if(s)return a;W(o,t,a)}return B(o,t)})),I=(e,t)=>m(c(e),(([,,e])=>W(e,t))),S=e=>B(t,e),y={setRelationshipDefinition:(e,a,r,i)=>(W(t,e,r),h(e,a,((t,a)=>{const r=U(),i=U(),d=U(),[l,u]=c(e);z(a,(([t,s],n)=>{C(t)||(V(i,t),m(B(u,t),(e=>{N(e,n),D(e)&&W(u,t)}))),C(s)||(V(i,s),x(u,s)||W(u,s,U()),V(B(u,s),n)),V(r,n),W(l,n,s),H(B(o,e),(t=>{x(p(e,t),n)&&V(d,t)}))})),t(),z(r,(t=>w(s,[e,t]))),z(i,(t=>w(n,[e,t]))),z(d,(t=>{I(e,t),w(o,[e,t])}))}),Y(i)),y),delRelationshipDefinition:e=>(W(t,e),g(e),y),getStore:a,getRelationshipIds:r,forEachRelationship:t=>i((s=>t(s,(t=>e.forEachRow(l(s),t))))),hasRelationship:d,getLocalTableId:l,getRemoteTableId:S,getRemoteRowId:(e,t)=>B(c(e)?.[0],t),getLocalRowIds:(e,t)=>J(B(c(e)?.[1],t)),getLinkedRowIds:(e,t)=>C(c(e))?[t]:J(p(e,t,!0)),addRemoteRowIdListener:(e,t,n)=>L(n,s,[e,t]),addLocalRowIdsListener:(e,t,s)=>L(s,n,[e,t]),addLinkedRowIdsListener:(e,t,s)=>(p(e,t),L(s,o,[e,t])),delListener:e=>(I(...v(e)),y),destroy:f,getListenerStats:()=>({})};return oe(y)})),Te=(e,t,s,n=W)=>{const o=(a=P(e),r=e=>!ae(t,e),a.filter(r));var a,r;return u(se(t),(n=>s(e,n,t[n]))),u(o,(t=>n(e,t))),e},be=e=>{const t=s(e);return E(t)||t==a&&T(e)?t:void 0},Ce=(e,t,s)=>C(e)||!(e=>b(e,te)&&e.constructor==te)(e)||de(e)||ne(e)?(s?.(),!1):(ie(e,((s,n)=>{t(s,n)||re(e,n)})),!de(e)),me=(e,t,s)=>W(e,t,B(e,t)==-s?void 0:s),Ee=()=>{let e,t=0,s=0;const n=O(),o=O(),r=O(),l=O(),c=O(),h=O(),g=O(),f=O(),L=j(U),w=j(U),p=j(),y=j(),R=j(),T=j(),b=j(),M=j(),[A,J,N,X]=ee((()=>Be)),Y=(t,s)=>(!e||x(h,s)||ye(s))&&Ce(t,((e,t)=>Z(s,t,e)),(()=>ye(s))),Z=(e,t,s,n)=>Ce(n?s:_(s,e,t),((n,o)=>m($(e,t,o,n),(e=>(s[o]=e,!0)),(()=>!1))),(()=>ye(e,t))),$=(t,s,n,o)=>e?m(B(B(h,t),n),(e=>be(o)!=e.type?ye(t,s,n,o,e.default):o),(()=>ye(t,s,n,o))):C(be(o))?ye(t,s,n,o):o,_=(e,t,s)=>(m(B(g,t),(([n,o])=>{z(n,((t,s)=>{ae(e,s)||(e[s]=t)})),z(o,(n=>{ae(e,n)||ye(t,s,n)}))})),e),te=e=>Te(h,e,((e,t,s)=>{const n=O(),o=U();Te(q(h,t,O()),s,((e,t,s)=>{W(e,t,s),m(s.default,(e=>W(n,t,e)),(()=>V(o,t)))})),W(g,t,[n,o])}),((e,t)=>{W(h,t),W(g,t)})),se=e=>Te(f,e,((e,t,s)=>ne(t,s)),((e,t)=>fe(t))),ne=(e,t)=>Te(q(f,e,O(),(()=>ve(e,1))),t,((t,s,n)=>le(e,t,s,n)),((t,s)=>Le(e,t,s))),le=(e,t,s,n,o)=>Te(q(t,s,O(),(()=>pe(e,s,1))),n,((t,n,o)=>ce(e,s,t,n,o)),((n,a)=>we(e,t,s,n,a,o))),ce=(e,t,s,n,o)=>{x(s,n)||Ie(e,t,n,1);const a=B(s,n);o!==a&&(Se(e,t,n,a,o),W(s,n,o))},ue=(e,t,s,n,o)=>m(B(t,s),(t=>ce(e,s,t,n,o)),(()=>le(e,t,s,_({[n]:o},e,s)))),he=e=>{const s=""+t++;return x(e,s)?he(e):s},ge=e=>B(f,e)??ne(e,{}),fe=e=>ne(e,{}),Le=(e,t,s)=>le(e,t,s,{},!0),we=(e,t,s,n,o,a)=>{const r=B(B(g,e)?.[0],o);if(!C(r)&&!a)return ce(e,s,n,o,r);const i=t=>{Se(e,s,t,B(n,t)),Ie(e,s,t,-1),W(n,t)};C(r)?i(o):H(n,i),D(n)&&(pe(e,s,-1),D(W(t,s))&&(ve(e,-1),W(f,e)))},ve=(e,t)=>me(n,e,t),pe=(e,t,s)=>me(q(o,e,O()),t,s),Ie=(e,t,s,n)=>me(q(q(r,e,O()),t,O()),s,n),Se=(e,t,s,n,o)=>q(q(q(l,e,O()),t,O()),s,[n])[1]=o,ye=(e,t,s,n,o)=>(v(q(q(q(c,e,O()),t,O()),s,[]),n),o),Re=(e,t,s)=>m(B(B(B(l,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...i(Fe(e,t,s))])),Ee=e=>D(c)||D(M[e])?0:z(e?K(c,Q):c,((t,s)=>z(t,((t,n)=>z(t,((t,o)=>J(M[e],[s,n,o],t))))))),ke=e=>{if(!D(l)){const t=D(T[e])&&D(y[e])&&D(w[e]),s=D(b[e])&&D(R[e])&&D(p[e])&&D(L[e]);if(!t||!s){const a=e?[K(n),Q(o),K(r,Q),K(l,Q)]:[n,o,r,l];if(t||(z(a[2],((t,s)=>z(t,((t,n)=>{D(t)||J(T[e],[s,n])})))),z(a[1],((t,s)=>{D(t)||J(y[e],[s])})),D(a[0])||J(w[e])),!s){let t;z(a[3],((s,n)=>{let o;z(s,((s,a)=>{let r;z(s,(([s,i],d)=>{i!==s&&(J(b[e],[n,a,d],i,s,Re),t=o=r=1)})),r&&J(R[e],[n,a],Re)})),o&&J(p[e],[n],Re)})),t&&J(L[e],[],Re)}}}},Me=e=>(Pe(e),Be),Ae=()=>G(f,(e=>G(e,G))),xe=()=>P(f),De=e=>P(B(f,e)),Je=(e,t)=>P(B(B(f,e),t)),Fe=(e,t,s)=>B(B(B(f,e),t),s),ze=e=>Me((()=>(e=>Ce(e,Y,ye))(e)?se(e):0)),Ne=(e,t,s,n)=>Me((()=>m($(e,t,s,k(n)?n(Fe(e,t,s)):n),(n=>ue(e,ge(e),t,s,n))))),Oe=()=>Me((()=>se({}))),je=(e,t,s,n)=>Me((()=>m(B(f,e),(o=>m(B(o,t),(a=>x(a,s)?we(e,o,t,a,s,n):0)))))),Pe=(e,t)=>{if(-1==s)return;s++;const a=e?.();return s--,0==s&&(s=1,Ee(1),ke(1),s=-1,t?.(G(l,(e=>G(e,(e=>G(e,(e=>[...e]),(([e,t])=>e===t))),de)),de),G(c,(e=>G(e,G))))&&(s=1,z(l,((e,t)=>z(e,((e,s)=>z(e,(([e],n)=>C(e)?je(t,s,n,!0):Ne(t,s,n,e))))))),s=-1),Ee(0),ke(0),s=0,u([l,c,n,o,r],F)),a},Be={getTables:Ae,getTableIds:xe,getTable:e=>G(B(f,e),G),getRowIds:De,getRow:(e,t)=>G(B(B(f,e),t)),getCellIds:Je,getCell:Fe,hasTables:()=>!D(f),hasTable:e=>x(f,e),hasRow:(e,t)=>x(B(f,e),t),hasCell:(e,t,s)=>x(B(B(f,e),t),s),getJson:()=>I(f),getSchemaJson:()=>I(h),setTables:ze,setTable:(e,t)=>Me((()=>Y(t,e)?ne(e,t):0)),setRow:(e,t,s)=>Me((()=>Z(e,t,s)?le(e,ge(e),t,s):0)),addRow:(e,t)=>Pe((()=>{let s;return Z(e,s,t)&&le(e,ge(e),s=he(B(f,e)),t),s})),setPartialRow:(e,t,s)=>Me((()=>{if(Z(e,t,s,1)){const n=ge(e);ie(s,((s,o)=>ue(e,n,t,o,s)))}})),setCell:Ne,setJson:e=>{try{"{}"===e?Oe():ze(S(e))}catch{}return Be},setSchema:t=>Me((()=>{if((e=(e=>Ce(e,(e=>Ce(e,(e=>{if(!Ce(e,((e,t)=>d(["type","default"],t))))return!1;const t=e.type;return!(!E(t)&&t!=a||(be(e.default)!=t&&re(e,"default"),0))})))))(t))&&(te(t),!D(f))){const e=Ae();Oe(),ze(e)}})),delTables:Oe,delTable:e=>Me((()=>x(f,e)?fe(e):0)),delRow:(e,t)=>Me((()=>m(B(f,e),(s=>x(s,t)?Le(e,s,t):0)))),delCell:je,delSchema:()=>Me((()=>{te({}),e=!1})),transaction:Pe,forEachTable:e=>z(f,((t,s)=>e(s,(e=>z(t,((t,s)=>e(s,(e=>H(t,e))))))))),forEachRow:(e,t)=>z(B(f,e),((e,s)=>t(s,(t=>H(e,t))))),forEachCell:(e,t,s)=>H(B(B(f,e),t),s),addTablesListener:(e,t)=>A(e,L[t?1:0]),addTableIdsListener:(e,t)=>A(e,w[t?1:0]),addTableListener:(e,t,s)=>A(t,p[s?1:0],[e]),addRowIdsListener:(e,t,s)=>A(t,y[s?1:0],[e]),addRowListener:(e,t,s,n)=>A(s,R[n?1:0],[e,t]),addCellIdsListener:(e,t,s,n)=>A(s,T[n?1:0],[e,t]),addCellListener:(e,t,s,n,o)=>A(n,b[o?1:0],[e,t,s]),addInvalidCellListener:(e,t,s,n,o)=>A(n,M[o?1:0],[e,t,s]),callListener:e=>(X(e,[xe,De,Je],(e=>C(e[2])?[]:i(Fe(...e)))),Be),delListener:e=>(N(e),Be),getListenerStats:()=>({})};return oe(Be)};export{le as createCheckpoints,fe as createCustomPersister,Ie as createFilePersister,ue as createIndexes,ve as createLocalPersister,ge as createMetrics,Re as createRelationships,ye as createRemotePersister,pe as createSessionPersister,Ee as createStore,ce as defaultSorter};
1
+ import{promises as e,watch as t}from"fs";const s=e=>typeof e,n=s(""),o=s(!0),a=s(0),r=s(s),i=e=>[e,e],d=(e,t)=>e.includes(t),l=(e,t)=>e.every(((s,n)=>0==n||t(e[n-1],s)<=0)),c=(e,t)=>e.sort(t),u=(e,t)=>e.forEach(t),h=e=>L(e,((e,t)=>e+t),0),g=e=>e.length,f=e=>0==g(e),L=(e,t,s)=>e.reduce(t,s),w=e=>e.slice(1),p=(e,t)=>e.push(t),v=e=>e.pop(),I=e=>JSON.stringify(e,((e,t)=>b(t,Map)?L([...t],((e,[t,s])=>(e[t]=s,e)),{}):t)),S=JSON.parse,y=Math.max,R=Math.min,T=isFinite,b=(e,t)=>e instanceof t,C=e=>null==e,m=(e,t,s)=>C(e)?s?.():t(e),E=e=>e==n||e==o,k=e=>s(e)==r,M=()=>{},A=e=>e.size,x=(e,t)=>e?.has(t)??!1,D=e=>C(e)||0==A(e),J=e=>[...e?.values()??[]],F=e=>e.clear(),z=(e,t)=>e?.forEach(t),N=(e,t)=>e?.delete(t),O=e=>new Map(e),j=(e=O)=>[e(),e()],P=e=>[...e?.keys()??[]],B=(e,t)=>e?.get(t),H=(e,t)=>z(e,((e,s)=>t(s,e))),W=(e,t,s)=>C(s)?(N(e,t),e):e?.set(t,s),q=(e,t,s)=>(x(e,t)||e.set(t,s()),B(e,t)),G=(e,t,s)=>{const n={},o=t??(e=>e);return z(e,((e,t)=>m(o(e),(e=>s?.(e)?0:n[t]=e)))),n},K=(e,t)=>{const s=O(),n=t??(e=>e);return z(e,((e,t)=>s.set(t,n(e)))),s},Q=e=>K(e,K),U=e=>new Set(e),V=(e,t)=>e?.add(t),X=(e,t,s)=>{const n=e.hasRow,o=O(),a=O(),r=O(),i=O(),d=O(),l=t=>m(B(d,t),(s=>{z(s,e.delListener),W(d,t)})),c=e=>{W(o,e),W(a,e),W(r,e),W(i,e),l(e)};return[()=>e,()=>P(o),e=>H(a,e),e=>x(a,e),e=>B(o,e),e=>B(a,e),(e,t)=>W(a,e,t),(c,h,g,f,L)=>{const w=O(),p=O();W(o,c,h),x(a,c)||(W(a,c,t()),W(r,c,O()),W(i,c,O()));const v=B(r,c),I=B(i,c),S=t=>{const o=s=>e.getCell(h,t,s),a=B(v,t),r=n(h,t)?s(f(o,t)):void 0;if(a!=r&&W(w,t,[a,r]),!C(L)){const e=B(I,t),s=n(h,t)?L(o,t):void 0;e!=s&&W(p,t,s)}},y=e=>{g((()=>{z(w,(([,e],t)=>W(v,t,e))),z(p,((e,t)=>W(I,t,e)))}),w,p,v,I,e),F(w),F(p)};H(v,S),e.hasTable(h)&&u(e.getRowIds(h),(e=>{x(v,e)||S(e)})),y(!0),l(c),W(d,c,U([e.addRowListener(h,null,((e,t,s)=>S(s))),e.addTableListener(h,(()=>y()))]))},c,()=>H(d,c)]},Y=(e,t)=>s(e)==n?t=>t(e):e??(()=>t??""),Z=e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))},$=(e,t,s)=>g(s)<2?V(f(s)?e:q(e,s[0],U),t):$(q(e,s[0],O),t,w(s)),_=e=>{const t=(s,n,...o)=>m(s,(s=>f(o)?e(s,n):u([o[0],null],(e=>t(B(s,e),n,...w(o))))));return t},ee=e=>{let t,s=0;const n=[],o=O();return[(a,r,i=[])=>{t??=e();const d=v(n)??""+s++;return W(o,d,[a,r,i]),$(r,d,i),d},(e,s=[],...n)=>_(z)(e,(e=>m(B(o,e),(([e])=>e(t,...s,...n)))),...s),e=>m(B(o,e),(([,t,s])=>(_(N)(t,e,...s),W(o,e),g(n)<1e3&&p(n,e),s)),(()=>[])),(e,s,n)=>m(B(o,e),(([e,,o])=>{const a=(...r)=>{const i=g(r);i==g(o)?e(t,...r,...n(r)):C(o[i])?u(s[i](...r),(e=>a(...r,e))):a(...r,o[i])};a()}))]},te=Object,se=te.keys,ne=te.isFrozen,oe=te.freeze,ae=(e,t)=>!C(((e,t)=>m(e,(e=>e[t])))(e,t)),re=(e,t)=>delete e[t],ie=(e,t)=>u(te.entries(e),(([e,s])=>t(s,e))),de=e=>f(se(e)),le=Z((e=>{let t,s,n,o=100,a=O(),r=1;const i=U(),l=O(),[c,h,L]=ee((()=>G)),w=O(),I=O(),S=[],y=[],R=(t,s)=>{r=0,e.transaction((()=>z(B(w,s),((s,n)=>z(s,((s,o)=>z(s,((s,a)=>C(s[t])?e.delCell(n,o,a,!0):e.setCell(n,o,a,s[t]))))))))),r=1},T=e=>{W(w,e),W(I,e),h(l,[e])},b=(e,t)=>u(((e,t)=>e.splice(0,t))(e,t??g(e)),T),E=()=>b(S,g(S)-o),k=e.addCellListener(null,null,null,((e,s,o,i,d,l)=>{if(r){m(t,(()=>{p(S,t),E(),b(y),t=void 0,n=1}));const e=q(a,s,O),r=q(e,o,O),c=q(r,i,(()=>[l,void 0]));c[1]=d,c[0]===d&&D(W(r,i))&&D(W(e,o))&&D(W(a,s))&&(t=v(S),n=1),F()}})),M=(e="")=>(C(t)&&(t=""+s++,W(w,t,a),j(t,e),a=O(),n=1),t),A=()=>{f(S)||(y.unshift(M()),R(0,t),t=v(S),n=1)},J=()=>{f(y)||(p(S,t),t=y.shift(),R(1,t),n=1)},F=()=>{n&&(h(i),n=0)},N=e=>{const t=M(e);return F(),t},j=(e,t)=>(P(e)&&B(I,e)!==t&&(W(I,e,t),h(l,[e])),G),P=e=>x(w,e),G={setSize:e=>(o=e,E(),G),addCheckpoint:N,setCheckpoint:j,getStore:()=>e,getCheckpointIds:()=>[[...S],t,[...y]],forEachCheckpoint:e=>H(I,e),hasCheckpoint:P,getCheckpoint:e=>B(I,e),goBackward:()=>(A(),F(),G),goForward:()=>(J(),F(),G),goTo:e=>{const s=d(S,e)?A:d(y,e)?J:null;for(;!C(s)&&e!=t;)s();return F(),G},addCheckpointIdsListener:e=>c(e,i),addCheckpointListener:(e,t)=>c(t,l,[e]),delListener:e=>(L(e),G),clear:()=>(b(S),b(y),C(t)||T(t),t=void 0,s=0,N(),G),destroy:()=>{e.delListener(k)},getListenerStats:()=>({})};return oe(G.clear())})),ce=(e,t)=>e<t?-1:1,ue=Z((e=>{const t=O(),s=O(),[n,o,a,r,i,d,u,h,g,f]=X(e,O,(e=>C(e)?"":e+"")),[L,w,p]=ee((()=>I)),v=(t,s,n)=>{const o=i(t);z(n,((t,n)=>s(n,(s=>z(t,(t=>s(t,(s=>e.forEachCell(o,t,s)))))))))},I={setIndexDefinition:(e,n,o,a,r,i=ce)=>{const g=C(r)?void 0:([e],[t])=>r(e,t);return h(e,n,((n,o,r,h,f,L)=>{let p=0;const v=U(),I=U(),S=d(e);if(z(o,(([e,t],s)=>{C(e)||(V(v,e),m(B(S,e),(t=>{N(t,s),D(t)&&(W(S,e),p=1)}))),C(t)||(V(v,t),x(S,t)||(W(S,t,U()),p=1),V(B(S,t),s),C(a)||V(I,t))})),n(),D(f)||(L?H(S,(e=>V(I,e))):H(r,(e=>m(B(h,e),(e=>V(I,e))))),z(I,(e=>{const t=(t,s)=>i(B(f,t),B(f,s),e),s=[...B(S,e)];l(s,t)||(W(S,e,U(c(s,t))),V(v,e))}))),(p||L)&&!C(g)){const t=[...S];l(t,g)||(u(e,O(c(t,g))),p=1)}p&&w(t,[e]),z(v,(t=>w(s,[e,t])))}),Y(o),m(a,Y)),I},delIndexDefinition:e=>(g(e),I),getStore:n,getIndexIds:o,forEachIndex:e=>a(((t,s)=>e(t,(e=>v(t,e,s))))),forEachSlice:(e,t)=>v(e,t,d(e)),hasIndex:r,hasSlice:(e,t)=>x(d(e),t),getTableId:i,getSliceIds:e=>P(d(e)),getSliceRowIds:(e,t)=>J(B(d(e),t)),addSliceIdsListener:(e,s)=>L(s,t,[e]),addSliceRowIdsListener:(e,t,n)=>L(n,s,[e,t]),delListener:e=>(p(e),I),destroy:f,getListenerStats:()=>({})};return oe(I)})),he=O([["avg",[(e,t)=>h(e)/t,(e,t,s)=>e+(t-e)/(s+1),(e,t,s)=>e+(e-t)/(s-1),(e,t,s,n)=>e+(t-s)/n]],["max",[e=>y(...e),(e,t)=>y(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:y(t,e)]],["min",[e=>R(...e),(e,t)=>R(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:R(t,e)]],["sum",[e=>h(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),ge=Z((e=>{const t=O(),[s,n,o,a,r,i,d,l,c,u]=X(e,M,(e=>isNaN(e)||C(e)||!0===e||!1===e||""===e?void 0:1*e)),[h,g,f]=ee((()=>L)),L={setMetricDefinition:(e,s,n,o,a,r,c)=>{const u=k(n)?[n,a,r,c]:B(he,n)??B(he,"sum");return l(e,s,((s,n,o,a,r,l)=>{let c=i(e),h=A(a);const[f,L,w,p]=u;l=l||C(c),z(n,(([e,t])=>{l||(c=C(e)?L?.(c,t,h++):C(t)?w?.(c,e,h--):p?.(c,t,e,h)),l=l||C(c)})),s(),D(a)?c=void 0:l&&(c=f(J(a),A(a))),T(c)||(c=void 0);const v=i(e);c!=v&&(d(e,c),g(t,[e],c,v))}),Y(o,1)),L},delMetricDefinition:e=>(c(e),L),getStore:s,getMetricIds:n,forEachMetric:o,hasMetric:a,getTableId:r,getMetric:i,addMetricListener:(e,s)=>h(s,t,[e]),delListener:e=>(f(e),L),destroy:u,getListenerStats:()=>({})};return oe(L)})),fe=(e,t,s,n,o)=>{let a,r=0;const i={load:async s=>{if(2!=r){r=1;const n=await t();C(n)||""==n?e.setTables(s):e.setJson(n),r=0}return i},startAutoLoad:async e=>(i.stopAutoLoad(),await i.load(e),n(i.load),i),stopAutoLoad:()=>(o(),i),save:async()=>(1!=r&&(r=2,await s(e.getJson()),r=0),i),startAutoSave:async()=>(await i.stopAutoSave().save(),a=e.addTablesListener((()=>i.save())),i),stopAutoSave:()=>(m(a,e.delListener),i),getStore:()=>e,destroy:()=>i.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return oe(i)},Le=globalThis.window,we=(e,t,s)=>{let n;return fe(e,(async()=>s.getItem(t)),(async e=>s.setItem(t,e)),(e=>{n=n=>{n.storageArea===s&&n.key===t&&e()},Le.addEventListener("storage",n)}),(()=>{Le.removeEventListener("storage",n),n=void 0}))},pe=(e,t)=>we(e,t,localStorage),ve=(e,t)=>we(e,t,sessionStorage),Ie=(s,n)=>{let o;return fe(s,(async()=>{try{return await e.readFile(n,"utf8")}catch{}}),(async t=>{try{await e.writeFile(n,t,"utf8")}catch{}}),(e=>{o=t(n,e)}),(()=>{o?.close(),o=void 0}))},Se=e=>e.headers.get("ETag"),ye=(e,t,s,n)=>{let o,a;return fe(e,(async()=>{const e=await fetch(t);return a=Se(e),e.text()}),(async e=>await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:e})),(e=>{o=setInterval((async()=>{const s=await fetch(t,{method:"HEAD"}),n=Se(s);C(a)||C(n)||n==a||(a=n,e())}),1e3*n)}),(()=>{m(o,clearInterval),o=void 0}))},Re=Z((e=>{const t=O(),s=O(),n=O(),o=O(),[a,r,i,d,l,c,u,h,g,f]=X(e,(()=>[O(),O(),O(),O()]),(e=>C(e)?void 0:e+"")),[L,w,p]=ee((()=>y)),v=(e,t,s)=>m(c(e),(([n,,o])=>{if(!x(o,t)){const a=U();if(l(e)!=S(e))V(a,t);else{let e=t;for(;!C(e)&&!x(a,e);)V(a,e),e=B(n,e)}if(s)return a;W(o,t,a)}return B(o,t)})),I=(e,t)=>m(c(e),(([,,e])=>W(e,t))),S=e=>B(t,e),y={setRelationshipDefinition:(e,a,r,i)=>(W(t,e,r),h(e,a,((t,a)=>{const r=U(),i=U(),d=U(),[l,u]=c(e);z(a,(([t,s],n)=>{C(t)||(V(i,t),m(B(u,t),(e=>{N(e,n),D(e)&&W(u,t)}))),C(s)||(V(i,s),x(u,s)||W(u,s,U()),V(B(u,s),n)),V(r,n),W(l,n,s),H(B(o,e),(t=>{x(v(e,t),n)&&V(d,t)}))})),t(),z(r,(t=>w(s,[e,t]))),z(i,(t=>w(n,[e,t]))),z(d,(t=>{I(e,t),w(o,[e,t])}))}),Y(i)),y),delRelationshipDefinition:e=>(W(t,e),g(e),y),getStore:a,getRelationshipIds:r,forEachRelationship:t=>i((s=>t(s,(t=>e.forEachRow(l(s),t))))),hasRelationship:d,getLocalTableId:l,getRemoteTableId:S,getRemoteRowId:(e,t)=>B(c(e)?.[0],t),getLocalRowIds:(e,t)=>J(B(c(e)?.[1],t)),getLinkedRowIds:(e,t)=>C(c(e))?[t]:J(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(...p(e)),y),destroy:f,getListenerStats:()=>({})};return oe(y)})),Te=(e,t,s,n=W)=>{const o=(a=P(e),r=e=>!ae(t,e),a.filter(r));var a,r;return u(se(t),(n=>s(e,n,t[n]))),u(o,(t=>n(e,t))),e},be=e=>{const t=s(e);return E(t)||t==a&&T(e)?t:void 0},Ce=(e,t,s)=>C(e)||!(e=>b(e,te)&&e.constructor==te)(e)||de(e)||ne(e)?(s?.(),!1):(ie(e,((s,n)=>{t(s,n)||re(e,n)})),!de(e)),me=(e,t,s)=>W(e,t,B(e,t)==-s?void 0:s),Ee=()=>{let e,t=0,s=0;const n=O(),o=O(),r=O(),l=O(),c=O(),h=O(),g=O(),f=O(),L=j(U),w=j(U),v=j(),y=j(),R=j(),T=j(),b=j(),M=j(),[A,J,N,X]=ee((()=>Be)),Y=(t,s)=>(!e||x(h,s)||ye(s))&&Ce(t,((e,t)=>Z(s,t,e)),(()=>ye(s))),Z=(e,t,s,n)=>Ce(n?s:_(s,e,t),((n,o)=>m($(e,t,o,n),(e=>(s[o]=e,!0)),(()=>!1))),(()=>ye(e,t))),$=(t,s,n,o)=>e?m(B(B(h,t),n),(e=>be(o)!=e.type?ye(t,s,n,o,e.default):o),(()=>ye(t,s,n,o))):C(be(o))?ye(t,s,n,o):o,_=(e,t,s)=>(m(B(g,t),(([n,o])=>{z(n,((t,s)=>{ae(e,s)||(e[s]=t)})),z(o,(n=>{ae(e,n)||ye(t,s,n)}))})),e),te=e=>Te(h,e,((e,t,s)=>{const n=O(),o=U();Te(q(h,t,O),s,((e,t,s)=>{W(e,t,s),m(s.default,(e=>W(n,t,e)),(()=>V(o,t)))})),W(g,t,[n,o])}),((e,t)=>{W(h,t),W(g,t)})),se=e=>Te(f,e,((e,t,s)=>ne(t,s)),((e,t)=>fe(t))),ne=(e,t)=>Te(q(f,e,(()=>(pe(e,1),O()))),t,((t,s,n)=>le(e,t,s,n)),((t,s)=>Le(e,t,s))),le=(e,t,s,n,o)=>Te(q(t,s,(()=>(ve(e,s,1),O()))),n,((t,n,o)=>ce(e,s,t,n,o)),((n,a)=>we(e,t,s,n,a,o))),ce=(e,t,s,n,o)=>{x(s,n)||Ie(e,t,n,1);const a=B(s,n);o!==a&&(Se(e,t,n,a,o),W(s,n,o))},ue=(e,t,s,n,o)=>m(B(t,s),(t=>ce(e,s,t,n,o)),(()=>le(e,t,s,_({[n]:o},e,s)))),he=e=>{const s=""+t++;return x(e,s)?he(e):s},ge=e=>B(f,e)??ne(e,{}),fe=e=>ne(e,{}),Le=(e,t,s)=>le(e,t,s,{},!0),we=(e,t,s,n,o,a)=>{const r=B(B(g,e)?.[0],o);if(!C(r)&&!a)return ce(e,s,n,o,r);const i=t=>{Se(e,s,t,B(n,t)),Ie(e,s,t,-1),W(n,t)};C(r)?i(o):H(n,i),D(n)&&(ve(e,s,-1),D(W(t,s))&&(pe(e,-1),W(f,e)))},pe=(e,t)=>me(n,e,t),ve=(e,t,s)=>me(q(o,e,O),t,s),Ie=(e,t,s,n)=>me(q(q(r,e,O),t,O),s,n),Se=(e,t,s,n,o)=>q(q(q(l,e,O),t,O),s,(()=>[n,0]))[1]=o,ye=(e,t,s,n,o)=>(p(q(q(q(c,e,O),t,O),s,(()=>[])),n),o),Re=(e,t,s)=>m(B(B(B(l,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...i(Fe(e,t,s))])),Ee=e=>D(c)||D(M[e])?0:z(e?K(c,Q):c,((t,s)=>z(t,((t,n)=>z(t,((t,o)=>J(M[e],[s,n,o],t))))))),ke=e=>{if(!D(l)){const t=D(T[e])&&D(y[e])&&D(w[e]),s=D(b[e])&&D(R[e])&&D(v[e])&&D(L[e]);if(!t||!s){const a=e?[K(n),Q(o),K(r,Q),K(l,Q)]:[n,o,r,l];if(t||(z(a[2],((t,s)=>z(t,((t,n)=>{D(t)||J(T[e],[s,n])})))),z(a[1],((t,s)=>{D(t)||J(y[e],[s])})),D(a[0])||J(w[e])),!s){let t;z(a[3],((s,n)=>{let o;z(s,((s,a)=>{let r;z(s,(([s,i],d)=>{i!==s&&(J(b[e],[n,a,d],i,s,Re),t=o=r=1)})),r&&J(R[e],[n,a],Re)})),o&&J(v[e],[n],Re)})),t&&J(L[e],[],Re)}}}},Me=e=>(Pe(e),Be),Ae=()=>G(f,(e=>G(e,G))),xe=()=>P(f),De=e=>P(B(f,e)),Je=(e,t)=>P(B(B(f,e),t)),Fe=(e,t,s)=>B(B(B(f,e),t),s),ze=e=>Me((()=>(e=>Ce(e,Y,ye))(e)?se(e):0)),Ne=(e,t,s,n)=>Me((()=>m($(e,t,s,k(n)?n(Fe(e,t,s)):n),(n=>ue(e,ge(e),t,s,n))))),Oe=()=>Me((()=>se({}))),je=(e,t,s,n)=>Me((()=>m(B(f,e),(o=>m(B(o,t),(a=>x(a,s)?we(e,o,t,a,s,n):0)))))),Pe=(e,t)=>{if(-1==s)return;s++;const a=e?.();return s--,0==s&&(s=1,Ee(1),ke(1),s=-1,t?.(G(l,(e=>G(e,(e=>G(e,(e=>[...e]),(([e,t])=>e===t))),de)),de),G(c,(e=>G(e,G))))&&(s=1,z(l,((e,t)=>z(e,((e,s)=>z(e,(([e],n)=>C(e)?je(t,s,n,!0):Ne(t,s,n,e))))))),s=-1),Ee(0),ke(0),s=0,u([l,c,n,o,r],F)),a},Be={getTables:Ae,getTableIds:xe,getTable:e=>G(B(f,e),G),getRowIds:De,getRow:(e,t)=>G(B(B(f,e),t)),getCellIds:Je,getCell:Fe,hasTables:()=>!D(f),hasTable:e=>x(f,e),hasRow:(e,t)=>x(B(f,e),t),hasCell:(e,t,s)=>x(B(B(f,e),t),s),getJson:()=>I(f),getSchemaJson:()=>I(h),setTables:ze,setTable:(e,t)=>Me((()=>Y(t,e)?ne(e,t):0)),setRow:(e,t,s)=>Me((()=>Z(e,t,s)?le(e,ge(e),t,s):0)),addRow:(e,t)=>Pe((()=>{let s;return Z(e,s,t)&&le(e,ge(e),s=he(B(f,e)),t),s})),setPartialRow:(e,t,s)=>Me((()=>{if(Z(e,t,s,1)){const n=ge(e);ie(s,((s,o)=>ue(e,n,t,o,s)))}})),setCell:Ne,setJson:e=>{try{"{}"===e?Oe():ze(S(e))}catch{}return Be},setSchema:t=>Me((()=>{if((e=(e=>Ce(e,(e=>Ce(e,(e=>{if(!Ce(e,((e,t)=>d(["type","default"],t))))return!1;const t=e.type;return!(!E(t)&&t!=a||(be(e.default)!=t&&re(e,"default"),0))})))))(t))&&(te(t),!D(f))){const e=Ae();Oe(),ze(e)}})),delTables:Oe,delTable:e=>Me((()=>x(f,e)?fe(e):0)),delRow:(e,t)=>Me((()=>m(B(f,e),(s=>x(s,t)?Le(e,s,t):0)))),delCell:je,delSchema:()=>Me((()=>{te({}),e=!1})),transaction:Pe,forEachTable:e=>z(f,((t,s)=>e(s,(e=>z(t,((t,s)=>e(s,(e=>H(t,e))))))))),forEachRow:(e,t)=>z(B(f,e),((e,s)=>t(s,(t=>H(e,t))))),forEachCell:(e,t,s)=>H(B(B(f,e),t),s),addTablesListener:(e,t)=>A(e,L[t?1:0]),addTableIdsListener:(e,t)=>A(e,w[t?1:0]),addTableListener:(e,t,s)=>A(t,v[s?1:0],[e]),addRowIdsListener:(e,t,s)=>A(t,y[s?1:0],[e]),addRowListener:(e,t,s,n)=>A(s,R[n?1:0],[e,t]),addCellIdsListener:(e,t,s,n)=>A(s,T[n?1:0],[e,t]),addCellListener:(e,t,s,n,o)=>A(n,b[o?1:0],[e,t,s]),addInvalidCellListener:(e,t,s,n,o)=>A(n,M[o?1:0],[e,t,s]),callListener:e=>(X(e,[xe,De,Je],(e=>C(e[2])?[]:i(Fe(...e)))),Be),delListener:e=>(N(e),Be),getListenerStats:()=>({})};return oe(Be)};export{le as createCheckpoints,fe as createCustomPersister,Ie as createFilePersister,ue as createIndexes,pe as createLocalPersister,ge as createMetrics,Re as createRelationships,ye as createRemotePersister,ve as createSessionPersister,Ee as createStore,ce as defaultSorter};
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),r=e=>e.slice(1),i=(e,t)=>e.push(t),c=e=>e.pop(),l=e=>null==e,d=(e,t,n)=>l(e)?n?.():t(e),a=(e,t)=>e?.has(t)??!1,u=e=>l(e)||0==(e=>e.size)(e),p=(e,t)=>e?.forEach(t),h=(e,t)=>e?.delete(t),f=e=>new Map(e),C=(e,t)=>e?.get(t),g=(e,t,n)=>l(n)?(h(e,t),e):e?.set(t,n),k=(e,t,n,o)=>(a(e,t)||(o?.(n),e.set(t,n)),C(e,t)),v=e=>new Set(e),y=(e,t,n)=>o(n)<2?((e,t)=>e?.add(t))(s(n)?e:k(e,n[0],v()),t):y(k(e,n[0],f()),t,r(n)),L=e=>{const t=(o,i,...c)=>d(o,(o=>s(c)?e(o,i):n([c[0],null],(e=>t(C(o,e),i,...r(c))))));return t},b=Object.freeze,w=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{let r,w,S,T=100,j=f(),x=1;const z=v(),E=f(),[M,m,B]=(e=>{let t,s=0;const r=[],a=f();return[(n,o,i=[])=>{t??=e();const l=c(r)??""+s++;return g(a,l,[n,o,i]),y(o,l,i),l},(e,n=[],...o)=>L(p)(e,(e=>d(C(a,e),(([e])=>e(t,...n,...o)))),...n),e=>d(C(a,e),(([,t,n])=>(L(h)(t,e,...n),g(a,e),o(r)<1e3&&i(r,e),n)),(()=>[])),(e,s,r)=>d(C(a,e),(([e,,i])=>{const c=(...d)=>{const a=o(d);a==o(i)?e(t,...d,...r(d)):l(i[a])?n(s[a](...d),(e=>c(...d,e))):c(...d,i[a])};c()}))]})((()=>U)),I=f(),O=f(),_=[],F=[],P=(t,n)=>{x=0,e.transaction((()=>p(C(I,n),((n,o)=>p(n,((n,s)=>p(n,((n,r)=>l(n[t])?e.delCell(o,s,r,!0):e.setCell(o,s,r,n[t]))))))))),x=1},W=e=>{g(I,e),g(O,e),m(E,[e])},q=(e,t)=>n(((e,t)=>e.splice(0,t))(e,t??o(e)),W),A=()=>q(_,o(_)-T),D=e.addCellListener(null,null,null,((e,t,n,o,s,l)=>{if(x){d(r,(()=>{i(_,r),A(),q(F),r=void 0,S=1}));const e=k(j,t,f()),a=k(e,n,f()),p=k(a,o,[void 0,void 0],(e=>e[0]=l));p[1]=s,p[0]===p[1]&&u(g(a,o))&&u(g(e,n))&&u(g(j,t))&&(r=c(_),S=1),K()}})),G=(e="")=>(l(r)&&(r=""+w++,g(I,r,j),Q(r,e),j=f(),S=1),r),H=()=>{s(_)||(F.unshift(G()),P(0,r),r=c(_),S=1)},J=()=>{s(F)||(i(_,r),r=F.shift(),P(1,r),S=1)},K=()=>{S&&(m(z),S=0)},N=e=>{const t=G(e);return K(),t},Q=(e,t)=>(R(e)&&C(O,e)!==t&&(g(O,e,t),m(E,[e])),U),R=e=>a(I,e),U={setSize:e=>(T=e,A(),U),addCheckpoint:N,setCheckpoint:Q,getStore:()=>e,getCheckpointIds:()=>[[..._],r,[...F]],forEachCheckpoint:e=>{return t=e,p(O,((e,n)=>t(n,e)));var t},hasCheckpoint:R,getCheckpoint:e=>C(O,e),goBackward:()=>(H(),K(),U),goForward:()=>(J(),K(),U),goTo:e=>{const n=t(_,e)?H:t(F,e)?J:null;for(;!l(n)&&e!=r;)n();return K(),U},addCheckpointIdsListener:e=>M(e,z),addCheckpointListener:(e,t)=>M(t,E,[e]),delListener:e=>(B(e),U),clear:()=>(q(_),q(F),l(r)||W(r),r=void 0,w=0,N(),U),destroy:()=>{e.delListener(D)},getListenerStats:()=>({})};return b(U.clear())}));e.createCheckpoints=w,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,t)=>e.push(t),c=e=>e.pop(),l=e=>null==e,d=(e,t,n)=>l(e)?n?.():t(e),a=(e,t)=>e?.has(t)??!1,u=e=>l(e)||0==(e=>e.size)(e),p=(e,t)=>e?.forEach(t),h=(e,t)=>e?.delete(t),f=e=>new Map(e),C=(e,t)=>e?.get(t),g=(e,t,n)=>l(n)?(h(e,t),e):e?.set(t,n),k=(e,t,n)=>(a(e,t)||e.set(t,n()),C(e,t)),y=e=>new Set(e),v=(e,t,n)=>o(n)<2?((e,t)=>e?.add(t))(s(n)?e:k(e,n[0],y),t):v(k(e,n[0],f),t,r(n)),L=e=>{const t=(o,i,...c)=>d(o,(o=>s(c)?e(o,i):n([c[0],null],(e=>t(C(o,e),i,...r(c))))));return t},b=Object.freeze,w=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{let r,w,S,T=100,j=f(),x=1;const z=y(),E=f(),[M,m,B]=(e=>{let t,s=0;const r=[],a=f();return[(n,o,i=[])=>{t??=e();const l=c(r)??""+s++;return g(a,l,[n,o,i]),v(o,l,i),l},(e,n=[],...o)=>L(p)(e,(e=>d(C(a,e),(([e])=>e(t,...n,...o)))),...n),e=>d(C(a,e),(([,t,n])=>(L(h)(t,e,...n),g(a,e),o(r)<1e3&&i(r,e),n)),(()=>[])),(e,s,r)=>d(C(a,e),(([e,,i])=>{const c=(...d)=>{const a=o(d);a==o(i)?e(t,...d,...r(d)):l(i[a])?n(s[a](...d),(e=>c(...d,e))):c(...d,i[a])};c()}))]})((()=>U)),I=f(),O=f(),_=[],F=[],P=(t,n)=>{x=0,e.transaction((()=>p(C(I,n),((n,o)=>p(n,((n,s)=>p(n,((n,r)=>l(n[t])?e.delCell(o,s,r,!0):e.setCell(o,s,r,n[t]))))))))),x=1},W=e=>{g(I,e),g(O,e),m(E,[e])},q=(e,t)=>n(((e,t)=>e.splice(0,t))(e,t??o(e)),W),A=()=>q(_,o(_)-T),D=e.addCellListener(null,null,null,((e,t,n,o,s,l)=>{if(x){d(r,(()=>{i(_,r),A(),q(F),r=void 0,S=1}));const e=k(j,t,f),a=k(e,n,f),p=k(a,o,(()=>[l,void 0]));p[1]=s,p[0]===s&&u(g(a,o))&&u(g(e,n))&&u(g(j,t))&&(r=c(_),S=1),K()}})),G=(e="")=>(l(r)&&(r=""+w++,g(I,r,j),Q(r,e),j=f(),S=1),r),H=()=>{s(_)||(F.unshift(G()),P(0,r),r=c(_),S=1)},J=()=>{s(F)||(i(_,r),r=F.shift(),P(1,r),S=1)},K=()=>{S&&(m(z),S=0)},N=e=>{const t=G(e);return K(),t},Q=(e,t)=>(R(e)&&C(O,e)!==t&&(g(O,e,t),m(E,[e])),U),R=e=>a(I,e),U={setSize:e=>(T=e,A(),U),addCheckpoint:N,setCheckpoint:Q,getStore:()=>e,getCheckpointIds:()=>[[..._],r,[...F]],forEachCheckpoint:e=>{return t=e,p(O,((e,n)=>t(n,e)));var t},hasCheckpoint:R,getCheckpoint:e=>C(O,e),goBackward:()=>(H(),K(),U),goForward:()=>(J(),K(),U),goTo:e=>{const n=t(_,e)?H:t(F,e)?J:null;for(;!l(n)&&e!=r;)n();return K(),U},addCheckpointIdsListener:e=>M(e,z),addCheckpointListener:(e,t)=>M(t,E,[e]),delListener:e=>(B(e),U),clear:()=>(q(_),q(F),l(r)||W(r),r=void 0,w=0,N(),U),destroy:()=>{e.delListener(D)},getListenerStats:()=>({})};return b(U.clear())}));e.createCheckpoints=w,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),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={});
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)=>(f(e,t)||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,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={});
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)=>(g(e,t)||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,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={});
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)=>(l(e,t)||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
package/lib/umd/store.js CHANGED
@@ -1 +1 @@
1
- var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,s=t(""),n=t(!0),r=t(0),l=t(t),o="type",a="default",d=e=>[e,e],i=(e,t)=>e.forEach(t),c=e=>e.length,f=e=>0==c(e),u=e=>e.slice(1),h=(e,t)=>e.push(t),b=e=>JSON.stringify(e,((e,t)=>{return g(t,Map)?(s=[...t],n=(e,[t,s])=>(e[t]=s,e),r={},s.reduce(n,r)):t;var s,n,r})),p=JSON.parse,T=isFinite,g=(e,t)=>e instanceof t,y=e=>null==e,w=(e,t,s)=>y(e)?s?.():t(e),L=e=>e==s||e==n,R=(e,t)=>e?.has(t)??!1,C=e=>y(e)||0==(e=>e.size)(e),S=e=>e.clear(),v=(e,t)=>e?.forEach(t),I=(e,t)=>e?.delete(t),m=e=>new Map(e),E=(e=m)=>[e(),e()],J=e=>[...e?.keys()??[]],O=(e,t)=>e?.get(t),j=(e,t)=>v(e,((e,s)=>t(s,e))),x=(e,t,s)=>y(s)?(I(e,t),e):e?.set(t,s),z=(e,t,s,n)=>(R(e,t)||(n?.(s),e.set(t,s)),O(e,t)),M=(e,t,s)=>{const n={},r=t??(e=>e);return v(e,((e,t)=>w(r(e),(e=>s?.(e)?0:n[t]=e)))),n},k=(e,t)=>{const s=m(),n=t??(e=>e);return v(e,((e,t)=>s.set(t,n(e)))),s},F=e=>k(e,k),N=Object,P=N.keys,_=N.isFrozen,B=N.freeze,q=(e,t)=>!y(((e,t)=>w(e,(e=>e[t])))(e,t)),A=(e,t)=>delete e[t],D=(e,t)=>i(N.entries(e),(([e,s])=>t(s,e))),G=e=>f(P(e)),H=e=>new Set(e),K=(e,t)=>e?.add(t),Q=(e,t,s)=>c(s)<2?K(f(s)?e:z(e,s[0],H()),t):Q(z(e,s[0],m()),t,u(s)),U=e=>{const t=(s,n,...r)=>w(s,(s=>f(r)?e(s,n):i([r[0],null],(e=>t(O(s,e),n,...u(r))))));return t},V=(e,t,s,n=x)=>{const r=(l=J(e),o=e=>!q(t,e),l.filter(o));var l,o;return i(P(t),(n=>s(e,n,t[n]))),i(r,(t=>n(e,t))),e},W=e=>{const s=t(e);return L(s)||s==r&&T(e)?s:void 0},X=(e,t,s)=>y(e)||!(e=>g(e,N)&&e.constructor==N)(e)||G(e)||_(e)?(s?.(),!1):(D(e,((s,n)=>{t(s,n)||A(e,n)})),!G(e)),Y=(e,t,s)=>x(e,t,O(e,t)==-s?void 0:s);e.createStore=()=>{let e,s=0,n=0;const f=m(),u=m(),T=m(),g=m(),N=m(),P=m(),_=m(),Z=m(),$=E(H),ee=E(H),te=E(),se=E(),ne=E(),re=E(),le=E(),oe=E(),[ae,de,ie,ce]=(e=>{let t,s=0;const n=[],r=m();return[(l,o,a=[])=>{t??=e();const d=n.pop()??""+s++;return x(r,d,[l,o,a]),Q(o,d,a),d},(e,s=[],...n)=>U(v)(e,(e=>w(O(r,e),(([e])=>e(t,...s,...n)))),...s),e=>w(O(r,e),(([,t,s])=>(U(I)(t,e,...s),x(r,e),c(n)<1e3&&h(n,e),s)),(()=>[])),(e,s,n)=>w(O(r,e),(([e,,r])=>{const l=(...o)=>{const a=c(o);a==c(r)?e(t,...o,...n(o)):y(r[a])?i(s[a](...o),(e=>l(...o,e))):l(...o,r[a])};l()}))]})((()=>Ke)),fe=(t,s)=>(!e||R(P,s)||je(s))&&X(t,((e,t)=>ue(s,t,e)),(()=>je(s))),ue=(e,t,s,n)=>X(n?s:be(s,e,t),((n,r)=>w(he(e,t,r,n),(e=>(s[r]=e,!0)),(()=>!1))),(()=>je(e,t))),he=(t,s,n,r)=>e?w(O(O(P,t),n),(e=>W(r)!=e.type?je(t,s,n,r,e.default):r),(()=>je(t,s,n,r))):y(W(r))?je(t,s,n,r):r,be=(e,t,s)=>(w(O(_,t),(([n,r])=>{v(n,((t,s)=>{q(e,s)||(e[s]=t)})),v(r,(n=>{q(e,n)||je(t,s,n)}))})),e),pe=e=>V(P,e,((e,t,s)=>{const n=m(),r=H();V(z(P,t,m()),s,((e,t,s)=>{x(e,t,s),w(s.default,(e=>x(n,t,e)),(()=>K(r,t)))})),x(_,t,[n,r])}),((e,t)=>{x(P,t),x(_,t)})),Te=e=>V(Z,e,((e,t,s)=>ge(t,s)),((e,t)=>Se(t))),ge=(e,t)=>V(z(Z,e,m(),(()=>me(e,1))),t,((t,s,n)=>ye(e,t,s,n)),((t,s)=>ve(e,t,s))),ye=(e,t,s,n,r)=>V(z(t,s,m(),(()=>Ee(e,s,1))),n,((t,n,r)=>we(e,s,t,n,r)),((n,l)=>Ie(e,t,s,n,l,r))),we=(e,t,s,n,r)=>{R(s,n)||Je(e,t,n,1);const l=O(s,n);r!==l&&(Oe(e,t,n,l,r),x(s,n,r))},Le=(e,t,s,n,r)=>w(O(t,s),(t=>we(e,s,t,n,r)),(()=>ye(e,t,s,be({[n]:r},e,s)))),Re=e=>{const t=""+s++;return R(e,t)?Re(e):t},Ce=e=>O(Z,e)??ge(e,{}),Se=e=>ge(e,{}),ve=(e,t,s)=>ye(e,t,s,{},!0),Ie=(e,t,s,n,r,l)=>{const o=O(O(_,e)?.[0],r);if(!y(o)&&!l)return we(e,s,n,r,o);const a=t=>{Oe(e,s,t,O(n,t)),Je(e,s,t,-1),x(n,t)};y(o)?a(r):j(n,a),C(n)&&(Ee(e,s,-1),C(x(t,s))&&(me(e,-1),x(Z,e)))},me=(e,t)=>Y(f,e,t),Ee=(e,t,s)=>Y(z(u,e,m()),t,s),Je=(e,t,s,n)=>Y(z(z(T,e,m()),t,m()),s,n),Oe=(e,t,s,n,r)=>z(z(z(g,e,m()),t,m()),s,[n])[1]=r,je=(e,t,s,n,r)=>(h(z(z(z(N,e,m()),t,m()),s,[]),n),r),xe=(e,t,s)=>w(O(O(O(g,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...d(Be(e,t,s))])),ze=e=>C(N)||C(oe[e])?0:v(e?k(N,F):N,((t,s)=>v(t,((t,n)=>v(t,((t,r)=>de(oe[e],[s,n,r],t))))))),Me=e=>{if(!C(g)){const t=C(re[e])&&C(se[e])&&C(ee[e]),s=C(le[e])&&C(ne[e])&&C(te[e])&&C($[e]);if(!t||!s){const n=e?[k(f),F(u),k(T,F),k(g,F)]:[f,u,T,g];if(t||(v(n[2],((t,s)=>v(t,((t,n)=>{C(t)||de(re[e],[s,n])})))),v(n[1],((t,s)=>{C(t)||de(se[e],[s])})),C(n[0])||de(ee[e])),!s){let t;v(n[3],((s,n)=>{let r;v(s,((s,l)=>{let o;v(s,(([s,a],d)=>{a!==s&&(de(le[e],[n,l,d],a,s,xe),t=r=o=1)})),o&&de(ne[e],[n,l],xe)})),r&&de(te[e],[n],xe)})),t&&de($[e],[],xe)}}}},ke=e=>(He(e),Ke),Fe=()=>M(Z,(e=>M(e,M))),Ne=()=>J(Z),Pe=e=>J(O(Z,e)),_e=(e,t)=>J(O(O(Z,e),t)),Be=(e,t,s)=>O(O(O(Z,e),t),s),qe=e=>ke((()=>(e=>X(e,fe,je))(e)?Te(e):0)),Ae=(e,s,n,r)=>ke((()=>w(he(e,s,n,t(r)==l?r(Be(e,s,n)):r),(t=>Le(e,Ce(e),s,n,t))))),De=()=>ke((()=>Te({}))),Ge=(e,t,s,n)=>ke((()=>w(O(Z,e),(r=>w(O(r,t),(l=>R(l,s)?Ie(e,r,t,l,s,n):0)))))),He=(e,t)=>{if(-1==n)return;n++;const s=e?.();return n--,0==n&&(n=1,ze(1),Me(1),n=-1,t?.(M(g,(e=>M(e,(e=>M(e,(e=>[...e]),(([e,t])=>e===t))),G)),G),M(N,(e=>M(e,M))))&&(n=1,v(g,((e,t)=>v(e,((e,s)=>v(e,(([e],n)=>y(e)?Ge(t,s,n,!0):Ae(t,s,n,e))))))),n=-1),ze(0),Me(0),n=0,i([g,N,f,u,T],S)),s},Ke={getTables:Fe,getTableIds:Ne,getTable:e=>M(O(Z,e),M),getRowIds:Pe,getRow:(e,t)=>M(O(O(Z,e),t)),getCellIds:_e,getCell:Be,hasTables:()=>!C(Z),hasTable:e=>R(Z,e),hasRow:(e,t)=>R(O(Z,e),t),hasCell:(e,t,s)=>R(O(O(Z,e),t),s),getJson:()=>b(Z),getSchemaJson:()=>b(P),setTables:qe,setTable:(e,t)=>ke((()=>fe(t,e)?ge(e,t):0)),setRow:(e,t,s)=>ke((()=>ue(e,t,s)?ye(e,Ce(e),t,s):0)),addRow:(e,t)=>He((()=>{let s;return ue(e,s,t)&&ye(e,Ce(e),s=Re(O(Z,e)),t),s})),setPartialRow:(e,t,s)=>ke((()=>{if(ue(e,t,s,1)){const n=Ce(e);D(s,((s,r)=>Le(e,n,t,r,s)))}})),setCell:Ae,setJson:e=>{try{"{}"===e?De():qe(p(e))}catch{}return Ke},setSchema:t=>ke((()=>{if((e=(e=>X(e,(e=>X(e,(e=>{if(!X(e,((e,t)=>[o,a].includes(t))))return!1;const t=e.type;return!(!L(t)&&t!=r||(W(e.default)!=t&&A(e,a),0))})))))(t))&&(pe(t),!C(Z))){const e=Fe();De(),qe(e)}})),delTables:De,delTable:e=>ke((()=>R(Z,e)?Se(e):0)),delRow:(e,t)=>ke((()=>w(O(Z,e),(s=>R(s,t)?ve(e,s,t):0)))),delCell:Ge,delSchema:()=>ke((()=>{pe({}),e=!1})),transaction:He,forEachTable:e=>v(Z,((t,s)=>e(s,(e=>v(t,((t,s)=>e(s,(e=>j(t,e))))))))),forEachRow:(e,t)=>v(O(Z,e),((e,s)=>t(s,(t=>j(e,t))))),forEachCell:(e,t,s)=>j(O(O(Z,e),t),s),addTablesListener:(e,t)=>ae(e,$[t?1:0]),addTableIdsListener:(e,t)=>ae(e,ee[t?1:0]),addTableListener:(e,t,s)=>ae(t,te[s?1:0],[e]),addRowIdsListener:(e,t,s)=>ae(t,se[s?1:0],[e]),addRowListener:(e,t,s,n)=>ae(s,ne[n?1:0],[e,t]),addCellIdsListener:(e,t,s,n)=>ae(s,re[n?1:0],[e,t]),addCellListener:(e,t,s,n,r)=>ae(n,le[r?1:0],[e,t,s]),addInvalidCellListener:(e,t,s,n,r)=>ae(n,oe[r?1:0],[e,t,s]),callListener:e=>(ce(e,[Ne,Pe,_e],(e=>y(e[2])?[]:d(Be(...e)))),Ke),delListener:e=>(ie(e),Ke),getListenerStats:()=>({})};return B(Ke)},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).TinyBaseStore={});
1
+ var e,t;e=this,t=function(e){"use strict";const t=e=>typeof e,s=t(""),n=t(!0),r=t(0),l=t(t),o="type",a="default",d=e=>[e,e],i=(e,t)=>e.forEach(t),c=e=>e.length,f=e=>0==c(e),u=e=>e.slice(1),h=(e,t)=>e.push(t),b=e=>JSON.stringify(e,((e,t)=>{return g(t,Map)?(s=[...t],n=(e,[t,s])=>(e[t]=s,e),r={},s.reduce(n,r)):t;var s,n,r})),p=JSON.parse,T=isFinite,g=(e,t)=>e instanceof t,y=e=>null==e,w=(e,t,s)=>y(e)?s?.():t(e),L=e=>e==s||e==n,R=(e,t)=>e?.has(t)??!1,C=e=>y(e)||0==(e=>e.size)(e),S=e=>e.clear(),v=(e,t)=>e?.forEach(t),I=(e,t)=>e?.delete(t),m=e=>new Map(e),E=(e=m)=>[e(),e()],J=e=>[...e?.keys()??[]],O=(e,t)=>e?.get(t),j=(e,t)=>v(e,((e,s)=>t(s,e))),x=(e,t,s)=>y(s)?(I(e,t),e):e?.set(t,s),z=(e,t,s)=>(R(e,t)||e.set(t,s()),O(e,t)),M=(e,t,s)=>{const n={},r=t??(e=>e);return v(e,((e,t)=>w(r(e),(e=>s?.(e)?0:n[t]=e)))),n},k=(e,t)=>{const s=m(),n=t??(e=>e);return v(e,((e,t)=>s.set(t,n(e)))),s},F=e=>k(e,k),N=Object,P=N.keys,_=N.isFrozen,B=N.freeze,q=(e,t)=>!y(((e,t)=>w(e,(e=>e[t])))(e,t)),A=(e,t)=>delete e[t],D=(e,t)=>i(N.entries(e),(([e,s])=>t(s,e))),G=e=>f(P(e)),H=e=>new Set(e),K=(e,t)=>e?.add(t),Q=(e,t,s)=>c(s)<2?K(f(s)?e:z(e,s[0],H),t):Q(z(e,s[0],m),t,u(s)),U=e=>{const t=(s,n,...r)=>w(s,(s=>f(r)?e(s,n):i([r[0],null],(e=>t(O(s,e),n,...u(r))))));return t},V=(e,t,s,n=x)=>{const r=(l=J(e),o=e=>!q(t,e),l.filter(o));var l,o;return i(P(t),(n=>s(e,n,t[n]))),i(r,(t=>n(e,t))),e},W=e=>{const s=t(e);return L(s)||s==r&&T(e)?s:void 0},X=(e,t,s)=>y(e)||!(e=>g(e,N)&&e.constructor==N)(e)||G(e)||_(e)?(s?.(),!1):(D(e,((s,n)=>{t(s,n)||A(e,n)})),!G(e)),Y=(e,t,s)=>x(e,t,O(e,t)==-s?void 0:s);e.createStore=()=>{let e,s=0,n=0;const f=m(),u=m(),T=m(),g=m(),N=m(),P=m(),_=m(),Z=m(),$=E(H),ee=E(H),te=E(),se=E(),ne=E(),re=E(),le=E(),oe=E(),[ae,de,ie,ce]=(e=>{let t,s=0;const n=[],r=m();return[(l,o,a=[])=>{t??=e();const d=n.pop()??""+s++;return x(r,d,[l,o,a]),Q(o,d,a),d},(e,s=[],...n)=>U(v)(e,(e=>w(O(r,e),(([e])=>e(t,...s,...n)))),...s),e=>w(O(r,e),(([,t,s])=>(U(I)(t,e,...s),x(r,e),c(n)<1e3&&h(n,e),s)),(()=>[])),(e,s,n)=>w(O(r,e),(([e,,r])=>{const l=(...o)=>{const a=c(o);a==c(r)?e(t,...o,...n(o)):y(r[a])?i(s[a](...o),(e=>l(...o,e))):l(...o,r[a])};l()}))]})((()=>Ke)),fe=(t,s)=>(!e||R(P,s)||je(s))&&X(t,((e,t)=>ue(s,t,e)),(()=>je(s))),ue=(e,t,s,n)=>X(n?s:be(s,e,t),((n,r)=>w(he(e,t,r,n),(e=>(s[r]=e,!0)),(()=>!1))),(()=>je(e,t))),he=(t,s,n,r)=>e?w(O(O(P,t),n),(e=>W(r)!=e.type?je(t,s,n,r,e.default):r),(()=>je(t,s,n,r))):y(W(r))?je(t,s,n,r):r,be=(e,t,s)=>(w(O(_,t),(([n,r])=>{v(n,((t,s)=>{q(e,s)||(e[s]=t)})),v(r,(n=>{q(e,n)||je(t,s,n)}))})),e),pe=e=>V(P,e,((e,t,s)=>{const n=m(),r=H();V(z(P,t,m),s,((e,t,s)=>{x(e,t,s),w(s.default,(e=>x(n,t,e)),(()=>K(r,t)))})),x(_,t,[n,r])}),((e,t)=>{x(P,t),x(_,t)})),Te=e=>V(Z,e,((e,t,s)=>ge(t,s)),((e,t)=>Se(t))),ge=(e,t)=>V(z(Z,e,(()=>(me(e,1),m()))),t,((t,s,n)=>ye(e,t,s,n)),((t,s)=>ve(e,t,s))),ye=(e,t,s,n,r)=>V(z(t,s,(()=>(Ee(e,s,1),m()))),n,((t,n,r)=>we(e,s,t,n,r)),((n,l)=>Ie(e,t,s,n,l,r))),we=(e,t,s,n,r)=>{R(s,n)||Je(e,t,n,1);const l=O(s,n);r!==l&&(Oe(e,t,n,l,r),x(s,n,r))},Le=(e,t,s,n,r)=>w(O(t,s),(t=>we(e,s,t,n,r)),(()=>ye(e,t,s,be({[n]:r},e,s)))),Re=e=>{const t=""+s++;return R(e,t)?Re(e):t},Ce=e=>O(Z,e)??ge(e,{}),Se=e=>ge(e,{}),ve=(e,t,s)=>ye(e,t,s,{},!0),Ie=(e,t,s,n,r,l)=>{const o=O(O(_,e)?.[0],r);if(!y(o)&&!l)return we(e,s,n,r,o);const a=t=>{Oe(e,s,t,O(n,t)),Je(e,s,t,-1),x(n,t)};y(o)?a(r):j(n,a),C(n)&&(Ee(e,s,-1),C(x(t,s))&&(me(e,-1),x(Z,e)))},me=(e,t)=>Y(f,e,t),Ee=(e,t,s)=>Y(z(u,e,m),t,s),Je=(e,t,s,n)=>Y(z(z(T,e,m),t,m),s,n),Oe=(e,t,s,n,r)=>z(z(z(g,e,m),t,m),s,(()=>[n,0]))[1]=r,je=(e,t,s,n,r)=>(h(z(z(z(N,e,m),t,m),s,(()=>[])),n),r),xe=(e,t,s)=>w(O(O(O(g,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...d(Be(e,t,s))])),ze=e=>C(N)||C(oe[e])?0:v(e?k(N,F):N,((t,s)=>v(t,((t,n)=>v(t,((t,r)=>de(oe[e],[s,n,r],t))))))),Me=e=>{if(!C(g)){const t=C(re[e])&&C(se[e])&&C(ee[e]),s=C(le[e])&&C(ne[e])&&C(te[e])&&C($[e]);if(!t||!s){const n=e?[k(f),F(u),k(T,F),k(g,F)]:[f,u,T,g];if(t||(v(n[2],((t,s)=>v(t,((t,n)=>{C(t)||de(re[e],[s,n])})))),v(n[1],((t,s)=>{C(t)||de(se[e],[s])})),C(n[0])||de(ee[e])),!s){let t;v(n[3],((s,n)=>{let r;v(s,((s,l)=>{let o;v(s,(([s,a],d)=>{a!==s&&(de(le[e],[n,l,d],a,s,xe),t=r=o=1)})),o&&de(ne[e],[n,l],xe)})),r&&de(te[e],[n],xe)})),t&&de($[e],[],xe)}}}},ke=e=>(He(e),Ke),Fe=()=>M(Z,(e=>M(e,M))),Ne=()=>J(Z),Pe=e=>J(O(Z,e)),_e=(e,t)=>J(O(O(Z,e),t)),Be=(e,t,s)=>O(O(O(Z,e),t),s),qe=e=>ke((()=>(e=>X(e,fe,je))(e)?Te(e):0)),Ae=(e,s,n,r)=>ke((()=>w(he(e,s,n,t(r)==l?r(Be(e,s,n)):r),(t=>Le(e,Ce(e),s,n,t))))),De=()=>ke((()=>Te({}))),Ge=(e,t,s,n)=>ke((()=>w(O(Z,e),(r=>w(O(r,t),(l=>R(l,s)?Ie(e,r,t,l,s,n):0)))))),He=(e,t)=>{if(-1==n)return;n++;const s=e?.();return n--,0==n&&(n=1,ze(1),Me(1),n=-1,t?.(M(g,(e=>M(e,(e=>M(e,(e=>[...e]),(([e,t])=>e===t))),G)),G),M(N,(e=>M(e,M))))&&(n=1,v(g,((e,t)=>v(e,((e,s)=>v(e,(([e],n)=>y(e)?Ge(t,s,n,!0):Ae(t,s,n,e))))))),n=-1),ze(0),Me(0),n=0,i([g,N,f,u,T],S)),s},Ke={getTables:Fe,getTableIds:Ne,getTable:e=>M(O(Z,e),M),getRowIds:Pe,getRow:(e,t)=>M(O(O(Z,e),t)),getCellIds:_e,getCell:Be,hasTables:()=>!C(Z),hasTable:e=>R(Z,e),hasRow:(e,t)=>R(O(Z,e),t),hasCell:(e,t,s)=>R(O(O(Z,e),t),s),getJson:()=>b(Z),getSchemaJson:()=>b(P),setTables:qe,setTable:(e,t)=>ke((()=>fe(t,e)?ge(e,t):0)),setRow:(e,t,s)=>ke((()=>ue(e,t,s)?ye(e,Ce(e),t,s):0)),addRow:(e,t)=>He((()=>{let s;return ue(e,s,t)&&ye(e,Ce(e),s=Re(O(Z,e)),t),s})),setPartialRow:(e,t,s)=>ke((()=>{if(ue(e,t,s,1)){const n=Ce(e);D(s,((s,r)=>Le(e,n,t,r,s)))}})),setCell:Ae,setJson:e=>{try{"{}"===e?De():qe(p(e))}catch{}return Ke},setSchema:t=>ke((()=>{if((e=(e=>X(e,(e=>X(e,(e=>{if(!X(e,((e,t)=>[o,a].includes(t))))return!1;const t=e.type;return!(!L(t)&&t!=r||(W(e.default)!=t&&A(e,a),0))})))))(t))&&(pe(t),!C(Z))){const e=Fe();De(),qe(e)}})),delTables:De,delTable:e=>ke((()=>R(Z,e)?Se(e):0)),delRow:(e,t)=>ke((()=>w(O(Z,e),(s=>R(s,t)?ve(e,s,t):0)))),delCell:Ge,delSchema:()=>ke((()=>{pe({}),e=!1})),transaction:He,forEachTable:e=>v(Z,((t,s)=>e(s,(e=>v(t,((t,s)=>e(s,(e=>j(t,e))))))))),forEachRow:(e,t)=>v(O(Z,e),((e,s)=>t(s,(t=>j(e,t))))),forEachCell:(e,t,s)=>j(O(O(Z,e),t),s),addTablesListener:(e,t)=>ae(e,$[t?1:0]),addTableIdsListener:(e,t)=>ae(e,ee[t?1:0]),addTableListener:(e,t,s)=>ae(t,te[s?1:0],[e]),addRowIdsListener:(e,t,s)=>ae(t,se[s?1:0],[e]),addRowListener:(e,t,s,n)=>ae(s,ne[n?1:0],[e,t]),addCellIdsListener:(e,t,s,n)=>ae(s,re[n?1:0],[e,t]),addCellListener:(e,t,s,n,r)=>ae(n,le[r?1:0],[e,t,s]),addInvalidCellListener:(e,t,s,n,r)=>ae(n,oe[r?1:0],[e,t,s]),callListener:e=>(ce(e,[Ne,Pe,_e],(e=>y(e[2])?[]:d(Be(...e)))),Ke),delListener:e=>(ie(e),Ke),getListenerStats:()=>({})};return B(Ke)},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).TinyBaseStore={});
Binary file
@@ -1 +1 @@
1
- var e,t;e=this,t=function(e,t){"use strict";const s=e=>typeof e,n="",o=s(n),r=s(!0),a=s(0),i=s(s),d="type",l="default",c="utf8",u=e=>[e,e],f=(e,t)=>e.includes(t),h=(e,t)=>e.every(((s,n)=>0==n||t(e[n-1],s)<=0)),g=(e,t)=>e.sort(t),p=(e,t)=>e.forEach(t),L=e=>I(e,((e,t)=>e+t),0),w=e=>e.length,v=e=>0==w(e),I=(e,t,s)=>e.reduce(t,s),y=e=>e.slice(1),S=(e,t)=>e.push(t),R=e=>e.pop(),T=e=>JSON.stringify(e,((e,t)=>E(t,Map)?I([...t],((e,[t,s])=>(e[t]=s,e)),{}):t)),b=JSON.parse,C=Math.max,m=Math.min,k=isFinite,E=(e,t)=>e instanceof t,M=e=>null==e,x=(e,t,s)=>M(e)?s?.():t(e),A=e=>e==o||e==r,P=e=>s(e)==i,D=()=>{},J=e=>e.size,F=(e,t)=>e?.has(t)??!1,O=e=>M(e)||0==J(e),j=e=>[...e?.values()??[]],z=e=>e.clear(),N=(e,t)=>e?.forEach(t),B=(e,t)=>e?.delete(t),_=e=>new Map(e),q=(e=_)=>[e(),e()],H=e=>[...e?.keys()??[]],W=(e,t)=>e?.get(t),G=(e,t)=>N(e,((e,s)=>t(s,e))),K=(e,t,s)=>M(s)?(B(e,t),e):e?.set(t,s),Q=(e,t,s,n)=>(F(e,t)||(n?.(s),e.set(t,s)),W(e,t)),U=(e,t,s)=>{const n={},o=t??(e=>e);return N(e,((e,t)=>x(o(e),(e=>s?.(e)?0:n[t]=e)))),n},V=(e,t)=>{const s=_(),n=t??(e=>e);return N(e,((e,t)=>s.set(t,n(e)))),s},X=e=>V(e,V),Y=e=>new Set(e),Z=(e,t)=>e?.add(t),$=(e,t,s)=>{const n=e.hasRow,o=_(),r=_(),a=_(),i=_(),d=_(),l=t=>x(W(d,t),(s=>{N(s,e.delListener),K(d,t)})),c=e=>{K(o,e),K(r,e),K(a,e),K(i,e),l(e)};return[()=>e,()=>H(o),e=>G(r,e),e=>F(r,e),e=>W(o,e),e=>W(r,e),(e,t)=>K(r,e,t),(c,u,f,h,g)=>{const L=_(),w=_();K(o,c,u),F(r,c)||(K(r,c,t()),K(a,c,_()),K(i,c,_()));const v=W(a,c),I=W(i,c),y=t=>{const o=s=>e.getCell(u,t,s),r=W(v,t),a=n(u,t)?s(h(o,t)):void 0;if(r!=a&&K(L,t,[r,a]),!M(g)){const e=W(I,t),s=n(u,t)?g(o,t):void 0;e!=s&&K(w,t,s)}},S=e=>{f((()=>{N(L,(([,e],t)=>K(v,t,e))),N(w,((e,t)=>K(I,t,e)))}),L,w,v,I,e),z(L),z(w)};G(v,y),e.hasTable(u)&&p(e.getRowIds(u),(e=>{F(v,e)||y(e)})),S(!0),l(c),K(d,c,Y([e.addRowListener(u,null,((e,t,s)=>y(s))),e.addTableListener(u,(()=>S()))]))},c,()=>G(d,c)]},ee=(e,t)=>s(e)==o?t=>t(e):e??(()=>t??n),te=e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))},se=(e,t,s)=>w(s)<2?Z(v(s)?e:Q(e,s[0],Y()),t):se(Q(e,s[0],_()),t,y(s)),ne=e=>{const t=(s,n,...o)=>x(s,(s=>v(o)?e(s,n):p([o[0],null],(e=>t(W(s,e),n,...y(o))))));return t},oe=e=>{let t,s=0;const n=[],o=_();return[(r,a,i=[])=>{t??=e();const d=R(n)??""+s++;return K(o,d,[r,a,i]),se(a,d,i),d},(e,s=[],...n)=>ne(N)(e,(e=>x(W(o,e),(([e])=>e(t,...s,...n)))),...s),e=>x(W(o,e),(([,t,s])=>(ne(B)(t,e,...s),K(o,e),w(n)<1e3&&S(n,e),s)),(()=>[])),(e,s,n)=>x(W(o,e),(([e,,o])=>{const r=(...a)=>{const i=w(a);i==w(o)?e(t,...a,...n(a)):M(o[i])?p(s[i](...a),(e=>r(...a,e))):r(...a,o[i])};r()}))]},re=Object,ae=re.keys,ie=re.isFrozen,de=re.freeze,le=(e,t)=>!M(((e,t)=>x(e,(e=>e[t])))(e,t)),ce=(e,t)=>delete e[t],ue=(e,t)=>p(re.entries(e),(([e,s])=>t(s,e))),fe=e=>v(ae(e)),he=te((e=>{let t,s,n,o=100,r=_(),a=1;const i=Y(),d=_(),[l,c,u]=oe((()=>z)),h=_(),g=_(),L=[],I=[],y=(t,s)=>{a=0,e.transaction((()=>N(W(h,s),((s,n)=>N(s,((s,o)=>N(s,((s,r)=>M(s[t])?e.delCell(n,o,r,!0):e.setCell(n,o,r,s[t]))))))))),a=1},T=e=>{K(h,e),K(g,e),c(d,[e])},b=(e,t)=>p(((e,t)=>e.splice(0,t))(e,t??w(e)),T),C=()=>b(L,w(L)-o),m=e.addCellListener(null,null,null,((e,s,o,i,d,l)=>{if(a){x(t,(()=>{S(L,t),C(),b(I),t=void 0,n=1}));const e=Q(r,s,_()),a=Q(e,o,_()),c=Q(a,i,[void 0,void 0],(e=>e[0]=l));c[1]=d,c[0]===c[1]&&O(K(a,i))&&O(K(e,o))&&O(K(r,s))&&(t=R(L),n=1),P()}})),k=(e="")=>(M(t)&&(t=""+s++,K(h,t,r),J(t,e),r=_(),n=1),t),E=()=>{v(L)||(I.unshift(k()),y(0,t),t=R(L),n=1)},A=()=>{v(I)||(S(L,t),t=I.shift(),y(1,t),n=1)},P=()=>{n&&(c(i),n=0)},D=e=>{const t=k(e);return P(),t},J=(e,t)=>(j(e)&&W(g,e)!==t&&(K(g,e,t),c(d,[e])),z),j=e=>F(h,e),z={setSize:e=>(o=e,C(),z),addCheckpoint:D,setCheckpoint:J,getStore:()=>e,getCheckpointIds:()=>[[...L],t,[...I]],forEachCheckpoint:e=>G(g,e),hasCheckpoint:j,getCheckpoint:e=>W(g,e),goBackward:()=>(E(),P(),z),goForward:()=>(A(),P(),z),goTo:e=>{const s=f(L,e)?E:f(I,e)?A:null;for(;!M(s)&&e!=t;)s();return P(),z},addCheckpointIdsListener:e=>l(e,i),addCheckpointListener:(e,t)=>l(t,d,[e]),delListener:e=>(u(e),z),clear:()=>(b(L),b(I),M(t)||T(t),t=void 0,s=0,D(),z),destroy:()=>{e.delListener(m)},getListenerStats:()=>({})};return de(z.clear())})),ge=(e,t)=>e<t?-1:1,pe=te((e=>{const t=_(),s=_(),[o,r,a,i,d,l,c,u,f,p]=$(e,_,(e=>M(e)?n:e+n)),[L,w,v]=oe((()=>y)),I=(t,s,n)=>{const o=d(t);N(n,((t,n)=>s(n,(s=>N(t,(t=>s(t,(s=>e.forEachCell(o,t,s)))))))))},y={setIndexDefinition:(e,n,o,r,a,i=ge)=>{const d=M(a)?void 0:([e],[t])=>a(e,t);return u(e,n,((n,o,a,u,f,p)=>{let L=0;const v=Y(),I=Y(),y=l(e);if(N(o,(([e,t],s)=>{M(e)||(Z(v,e),x(W(y,e),(t=>{B(t,s),O(t)&&(K(y,e),L=1)}))),M(t)||(Z(v,t),F(y,t)||(K(y,t,Y()),L=1),Z(W(y,t),s),M(r)||Z(I,t))})),n(),O(f)||(p?G(y,(e=>Z(I,e))):G(a,(e=>x(W(u,e),(e=>Z(I,e))))),N(I,(e=>{const t=(t,s)=>i(W(f,t),W(f,s),e),s=[...W(y,e)];h(s,t)||(K(y,e,Y(g(s,t))),Z(v,e))}))),(L||p)&&!M(d)){const t=[...y];h(t,d)||(c(e,_(g(t,d))),L=1)}L&&w(t,[e]),N(v,(t=>w(s,[e,t])))}),ee(o),x(r,ee)),y},delIndexDefinition:e=>(f(e),y),getStore:o,getIndexIds:r,forEachIndex:e=>a(((t,s)=>e(t,(e=>I(t,e,s))))),forEachSlice:(e,t)=>I(e,t,l(e)),hasIndex:i,hasSlice:(e,t)=>F(l(e),t),getTableId:d,getSliceIds:e=>H(l(e)),getSliceRowIds:(e,t)=>j(W(l(e),t)),addSliceIdsListener:(e,s)=>L(s,t,[e]),addSliceRowIdsListener:(e,t,n)=>L(n,s,[e,t]),delListener:e=>(v(e),y),destroy:p,getListenerStats:()=>({})};return de(y)})),Le=_([["avg",[(e,t)=>L(e)/t,(e,t,s)=>e+(t-e)/(s+1),(e,t,s)=>e+(e-t)/(s-1),(e,t,s,n)=>e+(t-s)/n]],["max",[e=>C(...e),(e,t)=>C(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:C(t,e)]],["min",[e=>m(...e),(e,t)=>m(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:m(t,e)]],["sum",[e=>L(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),we=te((e=>{const t=_(),[s,o,r,a,i,d,l,c,u,f]=$(e,D,(e=>isNaN(e)||M(e)||!0===e||!1===e||e===n?void 0:1*e)),[h,g,p]=oe((()=>L)),L={setMetricDefinition:(e,s,n,o,r,a,i)=>{const u=P(n)?[n,r,a,i]:W(Le,n)??W(Le,"sum");return c(e,s,((s,n,o,r,a,i)=>{let c=d(e),f=J(r);const[h,p,L,w]=u;i=i||M(c),N(n,(([e,t])=>{i||(c=M(e)?p?.(c,t,f++):M(t)?L?.(c,e,f--):w?.(c,t,e,f)),i=i||M(c)})),s(),O(r)?c=void 0:i&&(c=h(j(r),J(r))),k(c)||(c=void 0);const v=d(e);c!=v&&(l(e,c),g(t,[e],c,v))}),ee(o,1)),L},delMetricDefinition:e=>(u(e),L),getStore:s,getMetricIds:o,forEachMetric:r,hasMetric:a,getTableId:i,getMetric:d,addMetricListener:(e,s)=>h(s,t,[e]),delListener:e=>(p(e),L),destroy:f,getListenerStats:()=>({})};return de(L)})),ve=(e,t,s,n,o)=>{let r,a=0;const i={load:async s=>{if(2!=a){a=1;const n=await t();M(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:()=>(x(r,e.delListener),i),getStore:()=>e,destroy:()=>i.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return de(i)},Ie="storage",ye=globalThis.window,Se=(e,t,s)=>{let n;return ve(e,(async()=>s.getItem(t)),(async e=>s.setItem(t,e)),(e=>{n=n=>{n.storageArea===s&&n.key===t&&e()},ye.addEventListener(Ie,n)}),(()=>{ye.removeEventListener(Ie,n),n=void 0}))},Re=e=>e.headers.get("ETag"),Te=te((e=>{const t=_(),s=_(),o=_(),r=_(),[a,i,d,l,c,u,f,h,g,p]=$(e,(()=>[_(),_(),_(),_()]),(e=>M(e)?void 0:e+n)),[L,w,v]=oe((()=>R)),I=(e,t,s)=>x(u(e),(([n,,o])=>{if(!F(o,t)){const r=Y();if(c(e)!=S(e))Z(r,t);else{let e=t;for(;!M(e)&&!F(r,e);)Z(r,e),e=W(n,e)}if(s)return r;K(o,t,r)}return W(o,t)})),y=(e,t)=>x(u(e),(([,,e])=>K(e,t))),S=e=>W(t,e),R={setRelationshipDefinition:(e,n,a,i)=>(K(t,e,a),h(e,n,((t,n)=>{const a=Y(),i=Y(),d=Y(),[l,c]=u(e);N(n,(([t,s],n)=>{M(t)||(Z(i,t),x(W(c,t),(e=>{B(e,n),O(e)&&K(c,t)}))),M(s)||(Z(i,s),F(c,s)||K(c,s,Y()),Z(W(c,s),n)),Z(a,n),K(l,n,s),G(W(r,e),(t=>{F(I(e,t),n)&&Z(d,t)}))})),t(),N(a,(t=>w(s,[e,t]))),N(i,(t=>w(o,[e,t]))),N(d,(t=>{y(e,t),w(r,[e,t])}))}),ee(i)),R),delRelationshipDefinition:e=>(K(t,e),g(e),R),getStore:a,getRelationshipIds:i,forEachRelationship:t=>d((s=>t(s,(t=>e.forEachRow(c(s),t))))),hasRelationship:l,getLocalTableId:c,getRemoteTableId:S,getRemoteRowId:(e,t)=>W(u(e)?.[0],t),getLocalRowIds:(e,t)=>j(W(u(e)?.[1],t)),getLinkedRowIds:(e,t)=>M(u(e))?[t]:j(I(e,t,!0)),addRemoteRowIdListener:(e,t,n)=>L(n,s,[e,t]),addLocalRowIdsListener:(e,t,s)=>L(s,o,[e,t]),addLinkedRowIdsListener:(e,t,s)=>(I(e,t),L(s,r,[e,t])),delListener:e=>(y(...v(e)),R),destroy:p,getListenerStats:()=>({})};return de(R)})),be=(e,t,s,n=K)=>{const o=(r=H(e),a=e=>!le(t,e),r.filter(a));var r,a;return p(ae(t),(n=>s(e,n,t[n]))),p(o,(t=>n(e,t))),e},Ce=e=>{const t=s(e);return A(t)||t==a&&k(e)?t:void 0},me=(e,t,s)=>M(e)||!(e=>E(e,re)&&e.constructor==re)(e)||fe(e)||ie(e)?(s?.(),!1):(ue(e,((s,n)=>{t(s,n)||ce(e,n)})),!fe(e)),ke=(e,t,s)=>K(e,t,W(e,t)==-s?void 0:s);e.createCheckpoints=he,e.createCustomPersister=ve,e.createFilePersister=(e,s)=>{let n;return ve(e,(async()=>{try{return await t.promises.readFile(s,c)}catch{}}),(async e=>{try{await t.promises.writeFile(s,e,c)}catch{}}),(e=>{n=t.watch(s,e)}),(()=>{n?.close(),n=void 0}))},e.createIndexes=pe,e.createLocalPersister=(e,t)=>Se(e,t,localStorage),e.createMetrics=we,e.createRelationships=Te,e.createRemotePersister=(e,t,s,n)=>{let o,r;return ve(e,(async()=>{const e=await fetch(t);return r=Re(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=Re(s);M(r)||M(n)||n==r||(r=n,e())}),1e3*n)}),(()=>{x(o,clearInterval),o=void 0}))},e.createSessionPersister=(e,t)=>Se(e,t,sessionStorage),e.createStore=()=>{let e,t=0,s=0;const n=_(),o=_(),r=_(),i=_(),c=_(),h=_(),g=_(),L=_(),w=q(Y),v=q(Y),I=q(),y=q(),R=q(),C=q(),m=q(),k=q(),[E,D,J,j]=oe((()=>qe)),B=(t,s)=>(!e||F(h,s)||Te(s))&&me(t,((e,t)=>$(s,t,e)),(()=>Te(s))),$=(e,t,s,n)=>me(n?s:te(s,e,t),((n,o)=>x(ee(e,t,o,n),(e=>(s[o]=e,!0)),(()=>!1))),(()=>Te(e,t))),ee=(t,s,n,o)=>e?x(W(W(h,t),n),(e=>Ce(o)!=e.type?Te(t,s,n,o,e.default):o),(()=>Te(t,s,n,o))):M(Ce(o))?Te(t,s,n,o):o,te=(e,t,s)=>(x(W(g,t),(([n,o])=>{N(n,((t,s)=>{le(e,s)||(e[s]=t)})),N(o,(n=>{le(e,n)||Te(t,s,n)}))})),e),se=e=>be(h,e,((e,t,s)=>{const n=_(),o=Y();be(Q(h,t,_()),s,((e,t,s)=>{K(e,t,s),x(s.default,(e=>K(n,t,e)),(()=>Z(o,t)))})),K(g,t,[n,o])}),((e,t)=>{K(h,t),K(g,t)})),ne=e=>be(L,e,((e,t,s)=>re(t,s)),((e,t)=>Le(t))),re=(e,t)=>be(Q(L,e,_(),(()=>Ie(e,1))),t,((t,s,n)=>ae(e,t,s,n)),((t,s)=>we(e,t,s))),ae=(e,t,s,n,o)=>be(Q(t,s,_(),(()=>ye(e,s,1))),n,((t,n,o)=>ie(e,s,t,n,o)),((n,r)=>ve(e,t,s,n,r,o))),ie=(e,t,s,n,o)=>{F(s,n)||Se(e,t,n,1);const r=W(s,n);o!==r&&(Re(e,t,n,r,o),K(s,n,o))},he=(e,t,s,n,o)=>x(W(t,s),(t=>ie(e,s,t,n,o)),(()=>ae(e,t,s,te({[n]:o},e,s)))),ge=e=>{const s=""+t++;return F(e,s)?ge(e):s},pe=e=>W(L,e)??re(e,{}),Le=e=>re(e,{}),we=(e,t,s)=>ae(e,t,s,{},!0),ve=(e,t,s,n,o,r)=>{const a=W(W(g,e)?.[0],o);if(!M(a)&&!r)return ie(e,s,n,o,a);const i=t=>{Re(e,s,t,W(n,t)),Se(e,s,t,-1),K(n,t)};M(a)?i(o):G(n,i),O(n)&&(ye(e,s,-1),O(K(t,s))&&(Ie(e,-1),K(L,e)))},Ie=(e,t)=>ke(n,e,t),ye=(e,t,s)=>ke(Q(o,e,_()),t,s),Se=(e,t,s,n)=>ke(Q(Q(r,e,_()),t,_()),s,n),Re=(e,t,s,n,o)=>Q(Q(Q(i,e,_()),t,_()),s,[n])[1]=o,Te=(e,t,s,n,o)=>(S(Q(Q(Q(c,e,_()),t,_()),s,[]),n),o),Ee=(e,t,s)=>x(W(W(W(i,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...u(Oe(e,t,s))])),Me=e=>O(c)||O(k[e])?0:N(e?V(c,X):c,((t,s)=>N(t,((t,n)=>N(t,((t,o)=>D(k[e],[s,n,o],t))))))),xe=e=>{if(!O(i)){const t=O(C[e])&&O(y[e])&&O(v[e]),s=O(m[e])&&O(R[e])&&O(I[e])&&O(w[e]);if(!t||!s){const a=e?[V(n),X(o),V(r,X),V(i,X)]:[n,o,r,i];if(t||(N(a[2],((t,s)=>N(t,((t,n)=>{O(t)||D(C[e],[s,n])})))),N(a[1],((t,s)=>{O(t)||D(y[e],[s])})),O(a[0])||D(v[e])),!s){let t;N(a[3],((s,n)=>{let o;N(s,((s,r)=>{let a;N(s,(([s,i],d)=>{i!==s&&(D(m[e],[n,r,d],i,s,Ee),t=o=a=1)})),a&&D(R[e],[n,r],Ee)})),o&&D(I[e],[n],Ee)})),t&&D(w[e],[],Ee)}}}},Ae=e=>(_e(e),qe),Pe=()=>U(L,(e=>U(e,U))),De=()=>H(L),Je=e=>H(W(L,e)),Fe=(e,t)=>H(W(W(L,e),t)),Oe=(e,t,s)=>W(W(W(L,e),t),s),je=e=>Ae((()=>(e=>me(e,B,Te))(e)?ne(e):0)),ze=(e,t,s,n)=>Ae((()=>x(ee(e,t,s,P(n)?n(Oe(e,t,s)):n),(n=>he(e,pe(e),t,s,n))))),Ne=()=>Ae((()=>ne({}))),Be=(e,t,s,n)=>Ae((()=>x(W(L,e),(o=>x(W(o,t),(r=>F(r,s)?ve(e,o,t,r,s,n):0)))))),_e=(e,t)=>{if(-1==s)return;s++;const a=e?.();return s--,0==s&&(s=1,Me(1),xe(1),s=-1,t?.(U(i,(e=>U(e,(e=>U(e,(e=>[...e]),(([e,t])=>e===t))),fe)),fe),U(c,(e=>U(e,U))))&&(s=1,N(i,((e,t)=>N(e,((e,s)=>N(e,(([e],n)=>M(e)?Be(t,s,n,!0):ze(t,s,n,e))))))),s=-1),Me(0),xe(0),s=0,p([i,c,n,o,r],z)),a},qe={getTables:Pe,getTableIds:De,getTable:e=>U(W(L,e),U),getRowIds:Je,getRow:(e,t)=>U(W(W(L,e),t)),getCellIds:Fe,getCell:Oe,hasTables:()=>!O(L),hasTable:e=>F(L,e),hasRow:(e,t)=>F(W(L,e),t),hasCell:(e,t,s)=>F(W(W(L,e),t),s),getJson:()=>T(L),getSchemaJson:()=>T(h),setTables:je,setTable:(e,t)=>Ae((()=>B(t,e)?re(e,t):0)),setRow:(e,t,s)=>Ae((()=>$(e,t,s)?ae(e,pe(e),t,s):0)),addRow:(e,t)=>_e((()=>{let s;return $(e,s,t)&&ae(e,pe(e),s=ge(W(L,e)),t),s})),setPartialRow:(e,t,s)=>Ae((()=>{if($(e,t,s,1)){const n=pe(e);ue(s,((s,o)=>he(e,n,t,o,s)))}})),setCell:ze,setJson:e=>{try{"{}"===e?Ne():je(b(e))}catch{}return qe},setSchema:t=>Ae((()=>{if((e=(e=>me(e,(e=>me(e,(e=>{if(!me(e,((e,t)=>f([d,l],t))))return!1;const t=e.type;return!(!A(t)&&t!=a||(Ce(e.default)!=t&&ce(e,l),0))})))))(t))&&(se(t),!O(L))){const e=Pe();Ne(),je(e)}})),delTables:Ne,delTable:e=>Ae((()=>F(L,e)?Le(e):0)),delRow:(e,t)=>Ae((()=>x(W(L,e),(s=>F(s,t)?we(e,s,t):0)))),delCell:Be,delSchema:()=>Ae((()=>{se({}),e=!1})),transaction:_e,forEachTable:e=>N(L,((t,s)=>e(s,(e=>N(t,((t,s)=>e(s,(e=>G(t,e))))))))),forEachRow:(e,t)=>N(W(L,e),((e,s)=>t(s,(t=>G(e,t))))),forEachCell:(e,t,s)=>G(W(W(L,e),t),s),addTablesListener:(e,t)=>E(e,w[t?1:0]),addTableIdsListener:(e,t)=>E(e,v[t?1:0]),addTableListener:(e,t,s)=>E(t,I[s?1:0],[e]),addRowIdsListener:(e,t,s)=>E(t,y[s?1:0],[e]),addRowListener:(e,t,s,n)=>E(s,R[n?1:0],[e,t]),addCellIdsListener:(e,t,s,n)=>E(s,C[n?1:0],[e,t]),addCellListener:(e,t,s,n,o)=>E(n,m[o?1:0],[e,t,s]),addInvalidCellListener:(e,t,s,n,o)=>E(n,k[o?1:0],[e,t,s]),callListener:e=>(j(e,[De,Je,Fe],(e=>M(e[2])?[]:u(Oe(...e)))),qe),delListener:e=>(J(e),qe),getListenerStats:()=>({})};return de(qe)},e.defaultSorter=ge,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("fs")):"function"==typeof define&&define.amd?define(["exports","fs"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBase={},e.fs);
1
+ var e,t;e=this,t=function(e,t){"use strict";const s=e=>typeof e,n="",o=s(n),r=s(!0),a=s(0),i=s(s),d="type",l="default",c="utf8",u=e=>[e,e],f=(e,t)=>e.includes(t),h=(e,t)=>e.every(((s,n)=>0==n||t(e[n-1],s)<=0)),g=(e,t)=>e.sort(t),p=(e,t)=>e.forEach(t),L=e=>I(e,((e,t)=>e+t),0),w=e=>e.length,v=e=>0==w(e),I=(e,t,s)=>e.reduce(t,s),y=e=>e.slice(1),S=(e,t)=>e.push(t),R=e=>e.pop(),T=e=>JSON.stringify(e,((e,t)=>E(t,Map)?I([...t],((e,[t,s])=>(e[t]=s,e)),{}):t)),b=JSON.parse,C=Math.max,m=Math.min,k=isFinite,E=(e,t)=>e instanceof t,M=e=>null==e,x=(e,t,s)=>M(e)?s?.():t(e),A=e=>e==o||e==r,P=e=>s(e)==i,D=()=>{},J=e=>e.size,F=(e,t)=>e?.has(t)??!1,O=e=>M(e)||0==J(e),j=e=>[...e?.values()??[]],z=e=>e.clear(),N=(e,t)=>e?.forEach(t),B=(e,t)=>e?.delete(t),_=e=>new Map(e),q=(e=_)=>[e(),e()],H=e=>[...e?.keys()??[]],W=(e,t)=>e?.get(t),G=(e,t)=>N(e,((e,s)=>t(s,e))),K=(e,t,s)=>M(s)?(B(e,t),e):e?.set(t,s),Q=(e,t,s)=>(F(e,t)||e.set(t,s()),W(e,t)),U=(e,t,s)=>{const n={},o=t??(e=>e);return N(e,((e,t)=>x(o(e),(e=>s?.(e)?0:n[t]=e)))),n},V=(e,t)=>{const s=_(),n=t??(e=>e);return N(e,((e,t)=>s.set(t,n(e)))),s},X=e=>V(e,V),Y=e=>new Set(e),Z=(e,t)=>e?.add(t),$=(e,t,s)=>{const n=e.hasRow,o=_(),r=_(),a=_(),i=_(),d=_(),l=t=>x(W(d,t),(s=>{N(s,e.delListener),K(d,t)})),c=e=>{K(o,e),K(r,e),K(a,e),K(i,e),l(e)};return[()=>e,()=>H(o),e=>G(r,e),e=>F(r,e),e=>W(o,e),e=>W(r,e),(e,t)=>K(r,e,t),(c,u,f,h,g)=>{const L=_(),w=_();K(o,c,u),F(r,c)||(K(r,c,t()),K(a,c,_()),K(i,c,_()));const v=W(a,c),I=W(i,c),y=t=>{const o=s=>e.getCell(u,t,s),r=W(v,t),a=n(u,t)?s(h(o,t)):void 0;if(r!=a&&K(L,t,[r,a]),!M(g)){const e=W(I,t),s=n(u,t)?g(o,t):void 0;e!=s&&K(w,t,s)}},S=e=>{f((()=>{N(L,(([,e],t)=>K(v,t,e))),N(w,((e,t)=>K(I,t,e)))}),L,w,v,I,e),z(L),z(w)};G(v,y),e.hasTable(u)&&p(e.getRowIds(u),(e=>{F(v,e)||y(e)})),S(!0),l(c),K(d,c,Y([e.addRowListener(u,null,((e,t,s)=>y(s))),e.addTableListener(u,(()=>S()))]))},c,()=>G(d,c)]},ee=(e,t)=>s(e)==o?t=>t(e):e??(()=>t??n),te=e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))},se=(e,t,s)=>w(s)<2?Z(v(s)?e:Q(e,s[0],Y),t):se(Q(e,s[0],_),t,y(s)),ne=e=>{const t=(s,n,...o)=>x(s,(s=>v(o)?e(s,n):p([o[0],null],(e=>t(W(s,e),n,...y(o))))));return t},oe=e=>{let t,s=0;const n=[],o=_();return[(r,a,i=[])=>{t??=e();const d=R(n)??""+s++;return K(o,d,[r,a,i]),se(a,d,i),d},(e,s=[],...n)=>ne(N)(e,(e=>x(W(o,e),(([e])=>e(t,...s,...n)))),...s),e=>x(W(o,e),(([,t,s])=>(ne(B)(t,e,...s),K(o,e),w(n)<1e3&&S(n,e),s)),(()=>[])),(e,s,n)=>x(W(o,e),(([e,,o])=>{const r=(...a)=>{const i=w(a);i==w(o)?e(t,...a,...n(a)):M(o[i])?p(s[i](...a),(e=>r(...a,e))):r(...a,o[i])};r()}))]},re=Object,ae=re.keys,ie=re.isFrozen,de=re.freeze,le=(e,t)=>!M(((e,t)=>x(e,(e=>e[t])))(e,t)),ce=(e,t)=>delete e[t],ue=(e,t)=>p(re.entries(e),(([e,s])=>t(s,e))),fe=e=>v(ae(e)),he=te((e=>{let t,s,n,o=100,r=_(),a=1;const i=Y(),d=_(),[l,c,u]=oe((()=>z)),h=_(),g=_(),L=[],I=[],y=(t,s)=>{a=0,e.transaction((()=>N(W(h,s),((s,n)=>N(s,((s,o)=>N(s,((s,r)=>M(s[t])?e.delCell(n,o,r,!0):e.setCell(n,o,r,s[t]))))))))),a=1},T=e=>{K(h,e),K(g,e),c(d,[e])},b=(e,t)=>p(((e,t)=>e.splice(0,t))(e,t??w(e)),T),C=()=>b(L,w(L)-o),m=e.addCellListener(null,null,null,((e,s,o,i,d,l)=>{if(a){x(t,(()=>{S(L,t),C(),b(I),t=void 0,n=1}));const e=Q(r,s,_),a=Q(e,o,_),c=Q(a,i,(()=>[l,void 0]));c[1]=d,c[0]===d&&O(K(a,i))&&O(K(e,o))&&O(K(r,s))&&(t=R(L),n=1),P()}})),k=(e="")=>(M(t)&&(t=""+s++,K(h,t,r),J(t,e),r=_(),n=1),t),E=()=>{v(L)||(I.unshift(k()),y(0,t),t=R(L),n=1)},A=()=>{v(I)||(S(L,t),t=I.shift(),y(1,t),n=1)},P=()=>{n&&(c(i),n=0)},D=e=>{const t=k(e);return P(),t},J=(e,t)=>(j(e)&&W(g,e)!==t&&(K(g,e,t),c(d,[e])),z),j=e=>F(h,e),z={setSize:e=>(o=e,C(),z),addCheckpoint:D,setCheckpoint:J,getStore:()=>e,getCheckpointIds:()=>[[...L],t,[...I]],forEachCheckpoint:e=>G(g,e),hasCheckpoint:j,getCheckpoint:e=>W(g,e),goBackward:()=>(E(),P(),z),goForward:()=>(A(),P(),z),goTo:e=>{const s=f(L,e)?E:f(I,e)?A:null;for(;!M(s)&&e!=t;)s();return P(),z},addCheckpointIdsListener:e=>l(e,i),addCheckpointListener:(e,t)=>l(t,d,[e]),delListener:e=>(u(e),z),clear:()=>(b(L),b(I),M(t)||T(t),t=void 0,s=0,D(),z),destroy:()=>{e.delListener(m)},getListenerStats:()=>({})};return de(z.clear())})),ge=(e,t)=>e<t?-1:1,pe=te((e=>{const t=_(),s=_(),[o,r,a,i,d,l,c,u,f,p]=$(e,_,(e=>M(e)?n:e+n)),[L,w,v]=oe((()=>y)),I=(t,s,n)=>{const o=d(t);N(n,((t,n)=>s(n,(s=>N(t,(t=>s(t,(s=>e.forEachCell(o,t,s)))))))))},y={setIndexDefinition:(e,n,o,r,a,i=ge)=>{const d=M(a)?void 0:([e],[t])=>a(e,t);return u(e,n,((n,o,a,u,f,p)=>{let L=0;const v=Y(),I=Y(),y=l(e);if(N(o,(([e,t],s)=>{M(e)||(Z(v,e),x(W(y,e),(t=>{B(t,s),O(t)&&(K(y,e),L=1)}))),M(t)||(Z(v,t),F(y,t)||(K(y,t,Y()),L=1),Z(W(y,t),s),M(r)||Z(I,t))})),n(),O(f)||(p?G(y,(e=>Z(I,e))):G(a,(e=>x(W(u,e),(e=>Z(I,e))))),N(I,(e=>{const t=(t,s)=>i(W(f,t),W(f,s),e),s=[...W(y,e)];h(s,t)||(K(y,e,Y(g(s,t))),Z(v,e))}))),(L||p)&&!M(d)){const t=[...y];h(t,d)||(c(e,_(g(t,d))),L=1)}L&&w(t,[e]),N(v,(t=>w(s,[e,t])))}),ee(o),x(r,ee)),y},delIndexDefinition:e=>(f(e),y),getStore:o,getIndexIds:r,forEachIndex:e=>a(((t,s)=>e(t,(e=>I(t,e,s))))),forEachSlice:(e,t)=>I(e,t,l(e)),hasIndex:i,hasSlice:(e,t)=>F(l(e),t),getTableId:d,getSliceIds:e=>H(l(e)),getSliceRowIds:(e,t)=>j(W(l(e),t)),addSliceIdsListener:(e,s)=>L(s,t,[e]),addSliceRowIdsListener:(e,t,n)=>L(n,s,[e,t]),delListener:e=>(v(e),y),destroy:p,getListenerStats:()=>({})};return de(y)})),Le=_([["avg",[(e,t)=>L(e)/t,(e,t,s)=>e+(t-e)/(s+1),(e,t,s)=>e+(e-t)/(s-1),(e,t,s,n)=>e+(t-s)/n]],["max",[e=>C(...e),(e,t)=>C(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:C(t,e)]],["min",[e=>m(...e),(e,t)=>m(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:m(t,e)]],["sum",[e=>L(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),we=te((e=>{const t=_(),[s,o,r,a,i,d,l,c,u,f]=$(e,D,(e=>isNaN(e)||M(e)||!0===e||!1===e||e===n?void 0:1*e)),[h,g,p]=oe((()=>L)),L={setMetricDefinition:(e,s,n,o,r,a,i)=>{const u=P(n)?[n,r,a,i]:W(Le,n)??W(Le,"sum");return c(e,s,((s,n,o,r,a,i)=>{let c=d(e),f=J(r);const[h,p,L,w]=u;i=i||M(c),N(n,(([e,t])=>{i||(c=M(e)?p?.(c,t,f++):M(t)?L?.(c,e,f--):w?.(c,t,e,f)),i=i||M(c)})),s(),O(r)?c=void 0:i&&(c=h(j(r),J(r))),k(c)||(c=void 0);const v=d(e);c!=v&&(l(e,c),g(t,[e],c,v))}),ee(o,1)),L},delMetricDefinition:e=>(u(e),L),getStore:s,getMetricIds:o,forEachMetric:r,hasMetric:a,getTableId:i,getMetric:d,addMetricListener:(e,s)=>h(s,t,[e]),delListener:e=>(p(e),L),destroy:f,getListenerStats:()=>({})};return de(L)})),ve=(e,t,s,n,o)=>{let r,a=0;const i={load:async s=>{if(2!=a){a=1;const n=await t();M(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:()=>(x(r,e.delListener),i),getStore:()=>e,destroy:()=>i.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return de(i)},Ie="storage",ye=globalThis.window,Se=(e,t,s)=>{let n;return ve(e,(async()=>s.getItem(t)),(async e=>s.setItem(t,e)),(e=>{n=n=>{n.storageArea===s&&n.key===t&&e()},ye.addEventListener(Ie,n)}),(()=>{ye.removeEventListener(Ie,n),n=void 0}))},Re=e=>e.headers.get("ETag"),Te=te((e=>{const t=_(),s=_(),o=_(),r=_(),[a,i,d,l,c,u,f,h,g,p]=$(e,(()=>[_(),_(),_(),_()]),(e=>M(e)?void 0:e+n)),[L,w,v]=oe((()=>R)),I=(e,t,s)=>x(u(e),(([n,,o])=>{if(!F(o,t)){const r=Y();if(c(e)!=S(e))Z(r,t);else{let e=t;for(;!M(e)&&!F(r,e);)Z(r,e),e=W(n,e)}if(s)return r;K(o,t,r)}return W(o,t)})),y=(e,t)=>x(u(e),(([,,e])=>K(e,t))),S=e=>W(t,e),R={setRelationshipDefinition:(e,n,a,i)=>(K(t,e,a),h(e,n,((t,n)=>{const a=Y(),i=Y(),d=Y(),[l,c]=u(e);N(n,(([t,s],n)=>{M(t)||(Z(i,t),x(W(c,t),(e=>{B(e,n),O(e)&&K(c,t)}))),M(s)||(Z(i,s),F(c,s)||K(c,s,Y()),Z(W(c,s),n)),Z(a,n),K(l,n,s),G(W(r,e),(t=>{F(I(e,t),n)&&Z(d,t)}))})),t(),N(a,(t=>w(s,[e,t]))),N(i,(t=>w(o,[e,t]))),N(d,(t=>{y(e,t),w(r,[e,t])}))}),ee(i)),R),delRelationshipDefinition:e=>(K(t,e),g(e),R),getStore:a,getRelationshipIds:i,forEachRelationship:t=>d((s=>t(s,(t=>e.forEachRow(c(s),t))))),hasRelationship:l,getLocalTableId:c,getRemoteTableId:S,getRemoteRowId:(e,t)=>W(u(e)?.[0],t),getLocalRowIds:(e,t)=>j(W(u(e)?.[1],t)),getLinkedRowIds:(e,t)=>M(u(e))?[t]:j(I(e,t,!0)),addRemoteRowIdListener:(e,t,n)=>L(n,s,[e,t]),addLocalRowIdsListener:(e,t,s)=>L(s,o,[e,t]),addLinkedRowIdsListener:(e,t,s)=>(I(e,t),L(s,r,[e,t])),delListener:e=>(y(...v(e)),R),destroy:p,getListenerStats:()=>({})};return de(R)})),be=(e,t,s,n=K)=>{const o=(r=H(e),a=e=>!le(t,e),r.filter(a));var r,a;return p(ae(t),(n=>s(e,n,t[n]))),p(o,(t=>n(e,t))),e},Ce=e=>{const t=s(e);return A(t)||t==a&&k(e)?t:void 0},me=(e,t,s)=>M(e)||!(e=>E(e,re)&&e.constructor==re)(e)||fe(e)||ie(e)?(s?.(),!1):(ue(e,((s,n)=>{t(s,n)||ce(e,n)})),!fe(e)),ke=(e,t,s)=>K(e,t,W(e,t)==-s?void 0:s);e.createCheckpoints=he,e.createCustomPersister=ve,e.createFilePersister=(e,s)=>{let n;return ve(e,(async()=>{try{return await t.promises.readFile(s,c)}catch{}}),(async e=>{try{await t.promises.writeFile(s,e,c)}catch{}}),(e=>{n=t.watch(s,e)}),(()=>{n?.close(),n=void 0}))},e.createIndexes=pe,e.createLocalPersister=(e,t)=>Se(e,t,localStorage),e.createMetrics=we,e.createRelationships=Te,e.createRemotePersister=(e,t,s,n)=>{let o,r;return ve(e,(async()=>{const e=await fetch(t);return r=Re(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=Re(s);M(r)||M(n)||n==r||(r=n,e())}),1e3*n)}),(()=>{x(o,clearInterval),o=void 0}))},e.createSessionPersister=(e,t)=>Se(e,t,sessionStorage),e.createStore=()=>{let e,t=0,s=0;const n=_(),o=_(),r=_(),i=_(),c=_(),h=_(),g=_(),L=_(),w=q(Y),v=q(Y),I=q(),y=q(),R=q(),C=q(),m=q(),k=q(),[E,D,J,j]=oe((()=>qe)),B=(t,s)=>(!e||F(h,s)||Te(s))&&me(t,((e,t)=>$(s,t,e)),(()=>Te(s))),$=(e,t,s,n)=>me(n?s:te(s,e,t),((n,o)=>x(ee(e,t,o,n),(e=>(s[o]=e,!0)),(()=>!1))),(()=>Te(e,t))),ee=(t,s,n,o)=>e?x(W(W(h,t),n),(e=>Ce(o)!=e.type?Te(t,s,n,o,e.default):o),(()=>Te(t,s,n,o))):M(Ce(o))?Te(t,s,n,o):o,te=(e,t,s)=>(x(W(g,t),(([n,o])=>{N(n,((t,s)=>{le(e,s)||(e[s]=t)})),N(o,(n=>{le(e,n)||Te(t,s,n)}))})),e),se=e=>be(h,e,((e,t,s)=>{const n=_(),o=Y();be(Q(h,t,_),s,((e,t,s)=>{K(e,t,s),x(s.default,(e=>K(n,t,e)),(()=>Z(o,t)))})),K(g,t,[n,o])}),((e,t)=>{K(h,t),K(g,t)})),ne=e=>be(L,e,((e,t,s)=>re(t,s)),((e,t)=>Le(t))),re=(e,t)=>be(Q(L,e,(()=>(Ie(e,1),_()))),t,((t,s,n)=>ae(e,t,s,n)),((t,s)=>we(e,t,s))),ae=(e,t,s,n,o)=>be(Q(t,s,(()=>(ye(e,s,1),_()))),n,((t,n,o)=>ie(e,s,t,n,o)),((n,r)=>ve(e,t,s,n,r,o))),ie=(e,t,s,n,o)=>{F(s,n)||Se(e,t,n,1);const r=W(s,n);o!==r&&(Re(e,t,n,r,o),K(s,n,o))},he=(e,t,s,n,o)=>x(W(t,s),(t=>ie(e,s,t,n,o)),(()=>ae(e,t,s,te({[n]:o},e,s)))),ge=e=>{const s=""+t++;return F(e,s)?ge(e):s},pe=e=>W(L,e)??re(e,{}),Le=e=>re(e,{}),we=(e,t,s)=>ae(e,t,s,{},!0),ve=(e,t,s,n,o,r)=>{const a=W(W(g,e)?.[0],o);if(!M(a)&&!r)return ie(e,s,n,o,a);const i=t=>{Re(e,s,t,W(n,t)),Se(e,s,t,-1),K(n,t)};M(a)?i(o):G(n,i),O(n)&&(ye(e,s,-1),O(K(t,s))&&(Ie(e,-1),K(L,e)))},Ie=(e,t)=>ke(n,e,t),ye=(e,t,s)=>ke(Q(o,e,_),t,s),Se=(e,t,s,n)=>ke(Q(Q(r,e,_),t,_),s,n),Re=(e,t,s,n,o)=>Q(Q(Q(i,e,_),t,_),s,(()=>[n,0]))[1]=o,Te=(e,t,s,n,o)=>(S(Q(Q(Q(c,e,_),t,_),s,(()=>[])),n),o),Ee=(e,t,s)=>x(W(W(W(i,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...u(Oe(e,t,s))])),Me=e=>O(c)||O(k[e])?0:N(e?V(c,X):c,((t,s)=>N(t,((t,n)=>N(t,((t,o)=>D(k[e],[s,n,o],t))))))),xe=e=>{if(!O(i)){const t=O(C[e])&&O(y[e])&&O(v[e]),s=O(m[e])&&O(R[e])&&O(I[e])&&O(w[e]);if(!t||!s){const a=e?[V(n),X(o),V(r,X),V(i,X)]:[n,o,r,i];if(t||(N(a[2],((t,s)=>N(t,((t,n)=>{O(t)||D(C[e],[s,n])})))),N(a[1],((t,s)=>{O(t)||D(y[e],[s])})),O(a[0])||D(v[e])),!s){let t;N(a[3],((s,n)=>{let o;N(s,((s,r)=>{let a;N(s,(([s,i],d)=>{i!==s&&(D(m[e],[n,r,d],i,s,Ee),t=o=a=1)})),a&&D(R[e],[n,r],Ee)})),o&&D(I[e],[n],Ee)})),t&&D(w[e],[],Ee)}}}},Ae=e=>(_e(e),qe),Pe=()=>U(L,(e=>U(e,U))),De=()=>H(L),Je=e=>H(W(L,e)),Fe=(e,t)=>H(W(W(L,e),t)),Oe=(e,t,s)=>W(W(W(L,e),t),s),je=e=>Ae((()=>(e=>me(e,B,Te))(e)?ne(e):0)),ze=(e,t,s,n)=>Ae((()=>x(ee(e,t,s,P(n)?n(Oe(e,t,s)):n),(n=>he(e,pe(e),t,s,n))))),Ne=()=>Ae((()=>ne({}))),Be=(e,t,s,n)=>Ae((()=>x(W(L,e),(o=>x(W(o,t),(r=>F(r,s)?ve(e,o,t,r,s,n):0)))))),_e=(e,t)=>{if(-1==s)return;s++;const a=e?.();return s--,0==s&&(s=1,Me(1),xe(1),s=-1,t?.(U(i,(e=>U(e,(e=>U(e,(e=>[...e]),(([e,t])=>e===t))),fe)),fe),U(c,(e=>U(e,U))))&&(s=1,N(i,((e,t)=>N(e,((e,s)=>N(e,(([e],n)=>M(e)?Be(t,s,n,!0):ze(t,s,n,e))))))),s=-1),Me(0),xe(0),s=0,p([i,c,n,o,r],z)),a},qe={getTables:Pe,getTableIds:De,getTable:e=>U(W(L,e),U),getRowIds:Je,getRow:(e,t)=>U(W(W(L,e),t)),getCellIds:Fe,getCell:Oe,hasTables:()=>!O(L),hasTable:e=>F(L,e),hasRow:(e,t)=>F(W(L,e),t),hasCell:(e,t,s)=>F(W(W(L,e),t),s),getJson:()=>T(L),getSchemaJson:()=>T(h),setTables:je,setTable:(e,t)=>Ae((()=>B(t,e)?re(e,t):0)),setRow:(e,t,s)=>Ae((()=>$(e,t,s)?ae(e,pe(e),t,s):0)),addRow:(e,t)=>_e((()=>{let s;return $(e,s,t)&&ae(e,pe(e),s=ge(W(L,e)),t),s})),setPartialRow:(e,t,s)=>Ae((()=>{if($(e,t,s,1)){const n=pe(e);ue(s,((s,o)=>he(e,n,t,o,s)))}})),setCell:ze,setJson:e=>{try{"{}"===e?Ne():je(b(e))}catch{}return qe},setSchema:t=>Ae((()=>{if((e=(e=>me(e,(e=>me(e,(e=>{if(!me(e,((e,t)=>f([d,l],t))))return!1;const t=e.type;return!(!A(t)&&t!=a||(Ce(e.default)!=t&&ce(e,l),0))})))))(t))&&(se(t),!O(L))){const e=Pe();Ne(),je(e)}})),delTables:Ne,delTable:e=>Ae((()=>F(L,e)?Le(e):0)),delRow:(e,t)=>Ae((()=>x(W(L,e),(s=>F(s,t)?we(e,s,t):0)))),delCell:Be,delSchema:()=>Ae((()=>{se({}),e=!1})),transaction:_e,forEachTable:e=>N(L,((t,s)=>e(s,(e=>N(t,((t,s)=>e(s,(e=>G(t,e))))))))),forEachRow:(e,t)=>N(W(L,e),((e,s)=>t(s,(t=>G(e,t))))),forEachCell:(e,t,s)=>G(W(W(L,e),t),s),addTablesListener:(e,t)=>E(e,w[t?1:0]),addTableIdsListener:(e,t)=>E(e,v[t?1:0]),addTableListener:(e,t,s)=>E(t,I[s?1:0],[e]),addRowIdsListener:(e,t,s)=>E(t,y[s?1:0],[e]),addRowListener:(e,t,s,n)=>E(s,R[n?1:0],[e,t]),addCellIdsListener:(e,t,s,n)=>E(s,C[n?1:0],[e,t]),addCellListener:(e,t,s,n,o)=>E(n,m[o?1:0],[e,t,s]),addInvalidCellListener:(e,t,s,n,o)=>E(n,k[o?1:0],[e,t,s]),callListener:e=>(j(e,[De,Je,Fe],(e=>M(e[2])?[]:u(Oe(...e)))),qe),delListener:e=>(J(e),qe),getListenerStats:()=>({})};return de(qe)},e.defaultSorter=ge,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("fs")):"function"==typeof define&&define.amd?define(["exports","fs"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBase={},e.fs);
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tinybase",
3
- "version": "1.2.0-beta.1",
3
+ "version": "1.2.2",
4
4
  "author": "jamesgpearce",
5
5
  "repository": "github:tinyplex/tinybase",
6
6
  "license": "MIT",
@@ -56,37 +56,37 @@
56
56
  "publishPackage": "gulp publishPackage"
57
57
  },
58
58
  "devDependencies": {
59
- "@babel/cli": "^7.17.0",
60
- "@babel/core": "^7.17.2",
59
+ "@babel/cli": "^7.17.6",
60
+ "@babel/core": "^7.17.5",
61
61
  "@babel/preset-env": "^7.16.11",
62
62
  "@babel/preset-react": "^7.16.7",
63
63
  "@babel/preset-typescript": "^7.16.7",
64
- "@rollup/plugin-replace": "^3.1.0",
64
+ "@rollup/plugin-replace": "^4.0.0",
65
65
  "@types/asciichart": "^1.5.6",
66
66
  "@types/expect-puppeteer": "^4.4.7",
67
67
  "@types/http-server": "^0.12.1",
68
- "@types/jest": "^27.4.0",
68
+ "@types/jest": "^27.4.1",
69
69
  "@types/jest-environment-puppeteer": "^5.0.0",
70
70
  "@types/less": "^3.0.3",
71
- "@types/puppeteer": "^5.4.4",
71
+ "@types/puppeteer": "^5.4.5",
72
72
  "@types/react": "^17.0.39",
73
- "@types/react-dom": "^17.0.11",
73
+ "@types/react-dom": "^17.0.13",
74
74
  "@types/react-test-renderer": "^17.0.1",
75
75
  "@types/tmp": "^0.2.3",
76
- "@typescript-eslint/eslint-plugin": "^5.11.0",
77
- "@typescript-eslint/parser": "^5.11.0",
76
+ "@typescript-eslint/eslint-plugin": "^5.14.0",
77
+ "@typescript-eslint/parser": "^5.14.0",
78
78
  "asciichart": "^1.5.25",
79
79
  "babel-eslint": "^10.1.0",
80
80
  "babel-jest": "^27.5.1",
81
81
  "babel-preset-minify": "^0.5.1",
82
82
  "country-flag-emoji-json": "^2.0.0",
83
- "cspell": "^5.18.4",
84
- "esbuild": "^0.14.21",
85
- "eslint": "^8.9.0",
86
- "eslint-config-prettier": "^8.3.0",
87
- "eslint-plugin-jest": "^26.1.0",
88
- "eslint-plugin-jsdoc": "^37.9.1",
89
- "eslint-plugin-react": "^7.28.0",
83
+ "cspell": "^5.18.5",
84
+ "esbuild": "^0.14.25",
85
+ "eslint": "^8.10.0",
86
+ "eslint-config-prettier": "^8.5.0",
87
+ "eslint-plugin-jest": "^26.1.1",
88
+ "eslint-plugin-jsdoc": "^37.9.7",
89
+ "eslint-plugin-react": "^7.29.3",
90
90
  "eslint-plugin-react-hooks": "^4.3.0",
91
91
  "gulp": "^4.0.2",
92
92
  "gulp-gzip": "^1.4.2",
@@ -96,19 +96,19 @@
96
96
  "jest-puppeteer": "^6.1.0",
97
97
  "less": "^4.1.2",
98
98
  "prettier": "^2.5.1",
99
- "puppeteer": "^13.3.1",
99
+ "puppeteer": "^13.5.0",
100
100
  "react": "^17.0.2",
101
101
  "react-dom": "^17.0.2",
102
102
  "react-test-renderer": "^17.0.2",
103
- "rollup": "^2.67.2",
103
+ "rollup": "^2.70.0",
104
104
  "rollup-plugin-esbuild": "^4.8.2",
105
105
  "rollup-plugin-gzip": "^3.0.0",
106
106
  "rollup-plugin-prettier": "^2.2.2",
107
107
  "rollup-plugin-terser": "^7.0.2",
108
- "tinydocs": "^0.1.10",
108
+ "tinydocs": "^0.1.11",
109
109
  "tmp": "^0.2.1",
110
- "ts-unused-exports": "^7.0.3",
111
- "typescript": "4.5.5"
110
+ "ts-unused-exports": "^8.0.0",
111
+ "typescript": "4.6.2"
112
112
  },
113
113
  "peerDependencies": {
114
114
  "react": "^17.0.2"
package/readme.md CHANGED
@@ -192,4 +192,4 @@ console.log(store.getCell('pets', 'felix', 'sold'));
192
192
  // -> false
193
193
  ```
194
194
 
195
- <section><h2 id="did-we-say-tiny">Did we say tiny?</h2><p>If you use the basic <a href="https://tinybase.org/api/store"><code>store</code></a> module alone, you&#x27;ll only add a gzipped <em>2.9kB</em> to your app. You can incrementally add the other modules as you need more functionality, or get it all for <em>5.9kB</em>. The <code>ui-react</code> adaptor is just another <em>2.6kB</em>, and everything is fast.</p><p>Life&#x27;s easy when you have zero dependencies.</p><p>Read more about how TinyBase is structured in the <a href="https://tinybase.org/guides/how-tinybase-is-built/architecture">Architecture</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th width="30%"> </th><th>.js.gz</th><th>.js</th><th>debug.js</th><th>.d.ts</th></tr><tr><th class="right"><a href="https://tinybase.org/api/store">store</a></th><td>2.9kB</td><td>6.5kB</td><td>27.4kB</td><td>102.0kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/indexes">indexes</a></th><td>1.6kB</td><td>3.2kB</td><td>14.1kB</td><td>32.9kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/metrics">metrics</a></th><td>1.5kB</td><td>3.1kB</td><td>12.6kB</td><td>29.1kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/relationships">relationships</a></th><td>1.6kB</td><td>3.2kB</td><td>14.8kB</td><td>42.1kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/checkpoints">checkpoints</a></th><td>1.3kB</td><td>2.5kB</td><td>10.4kB</td><td>33.0kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/persisters">persisters</a></th><td>0.8kB</td><td>1.6kB</td><td>4.9kB</td><td>26.7kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/common">common</a></th><td>0.1kB</td><td>0.1kB</td><td>0.1kB</td><td>3.5kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/tinybase">tinybase</a></th><td>5.9kB</td><td>14.0kB</td><td>59.1kB</td><td>0.3kB</td></tr></tbody></table></div><section><h2 id="well-tested-and-documented">Well tested and documented.</h2><p>TinyBase has <em>100.0%</em> test coverage, including the code throughout the documentation - even on this page! The guides, demos, and API examples are designed to make it as easy as possible to get up and running.</p><p>Read more about how TinyBase is tested in the Unit <a href="https://tinybase.org/guides/how-tinybase-is-built/testing">Testing</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th width="30%"> </th><th>Total</th><th>Tested</th><th>Coverage</th></tr><tr><th class="right">Lines</th><td>985</td><td>985</td><td>100.0%</td></tr><tr><th class="right">Statements</th><td>1,074</td><td>1,074</td><td>100.0%</td></tr><tr><th class="right">Functions</th><td>411</td><td>411</td><td>100.0%</td></tr><tr><th class="right">Branches</th><td>359</td><td>359</td><td>100.0%</td></tr><tr><th class="right">Tests</th><td colspan="3">1,776</td></tr><tr><th class="right">Assertions</th><td colspan="3">8,848</td></tr></tbody></table></div><hr><p><a id="start" href="https://tinybase.org/guides/the-basics/getting-started">Get started</a></p><p><a href="https://tinybase.org/demos">Try the demos</a></p><p><a href="https://tinybase.org/api/store/interfaces/store/store/">Read the docs</a></p><hr><section><h2 id="follow">Follow</h2><ul><li>News and updates on <a href="https://twitter.com/tinybasejs">Twitter</a> and <a href="https://facebook.com/tinybasejs">Facebook</a>.</li><li><a href="https://github.com/tinyplex/tinybase/issues">Issues</a> and <a href="https://github.com/tinyplex/tinybase/releases">release notes</a> on <a href="https://github.com/tinyplex/tinybase">GitHub</a></li><li>Packages on <a href="https://www.npmjs.com/package/tinybase/v/1.2.0-beta.1">NPM</a>.</li></ul></section><section><h2 id="about">About</h2><p>Building TinyBase was an interesting exercise in API design, minification, and documentation. It&#x27;s not <a href="https://www.linkedin.com/in/jamespearce">my day job</a>, but I do intend to maintain it, so please provide feedback. I could not have done this without these great <a href="https://tinybase.org/guides/how-tinybase-is-built/credits/#giants">projects</a> and <a href="https://tinybase.org/guides/how-tinybase-is-built/credits/#and-friends">friends</a>, and I hope you enjoy using it!</p></section>
195
+ <section><h2 id="did-we-say-tiny">Did we say tiny?</h2><p>If you use the basic <a href="https://tinybase.org/api/store"><code>store</code></a> module alone, you&#x27;ll only add a gzipped <em>2.9kB</em> to your app. You can incrementally add the other modules as you need more functionality, or get it all for <em>5.9kB</em>. The <code>ui-react</code> adaptor is just another <em>2.6kB</em>, and everything is fast.</p><p>Life&#x27;s easy when you have zero dependencies.</p><p>Read more about how TinyBase is structured in the <a href="https://tinybase.org/guides/how-tinybase-is-built/architecture">Architecture</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th width="30%"> </th><th>.js.gz</th><th>.js</th><th>debug.js</th><th>.d.ts</th></tr><tr><th class="right"><a href="https://tinybase.org/api/store">store</a></th><td>2.9kB</td><td>6.5kB</td><td>27.4kB</td><td>102.0kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/indexes">indexes</a></th><td>1.6kB</td><td>3.2kB</td><td>14.1kB</td><td>32.9kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/metrics">metrics</a></th><td>1.5kB</td><td>3.1kB</td><td>12.6kB</td><td>29.1kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/relationships">relationships</a></th><td>1.6kB</td><td>3.2kB</td><td>14.8kB</td><td>42.1kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/checkpoints">checkpoints</a></th><td>1.3kB</td><td>2.5kB</td><td>10.3kB</td><td>33.0kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/persisters">persisters</a></th><td>0.8kB</td><td>1.6kB</td><td>4.9kB</td><td>26.7kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/common">common</a></th><td>0.1kB</td><td>0.1kB</td><td>0.1kB</td><td>3.5kB</td></tr><tr><th class="right"><a href="https://tinybase.org/api/tinybase">tinybase</a></th><td>5.9kB</td><td>14.0kB</td><td>59.0kB</td><td>0.3kB</td></tr></tbody></table></div><section><h2 id="well-tested-and-documented">Well tested and documented.</h2><p>TinyBase has <em>100.0%</em> test coverage, including the code throughout the documentation - even on this page! The guides, demos, and API examples are designed to make it as easy as possible to get up and running.</p><p>Read more about how TinyBase is tested in the Unit <a href="https://tinybase.org/guides/how-tinybase-is-built/testing">Testing</a> guide.</p></section><div class="table"><table class="fixed"><tbody><tr><th width="30%"> </th><th>Total</th><th>Tested</th><th>Coverage</th></tr><tr><th class="right">Lines</th><td>987</td><td>987</td><td>100.0%</td></tr><tr><th class="right">Statements</th><td>1,077</td><td>1,077</td><td>100.0%</td></tr><tr><th class="right">Functions</th><td>413</td><td>413</td><td>100.0%</td></tr><tr><th class="right">Branches</th><td>359</td><td>359</td><td>100.0%</td></tr><tr><th class="right">Tests</th><td colspan="3">1,776</td></tr><tr><th class="right">Assertions</th><td colspan="3">8,848</td></tr></tbody></table></div><hr><p><a id="start" href="https://tinybase.org/guides/the-basics/getting-started">Get started</a></p><p><a href="https://tinybase.org/demos">Try the demos</a></p><p><a href="https://tinybase.org/api/store/interfaces/store/store/">Read the docs</a></p><hr><section><h2 id="follow">Follow</h2><ul><li>News and updates on <a href="https://twitter.com/tinybasejs">Twitter</a> and <a href="https://facebook.com/tinybasejs">Facebook</a>.</li><li><a href="https://github.com/tinyplex/tinybase/issues">Issues</a> and <a href="https://github.com/tinyplex/tinybase/releases">release notes</a> on <a href="https://github.com/tinyplex/tinybase">GitHub</a></li><li>Packages on <a href="https://www.npmjs.com/package/tinybase/v/1.2.2">NPM</a>.</li></ul></section><section><h2 id="about">About</h2><p>Building TinyBase was an interesting exercise in API design, minification, and documentation. It&#x27;s not <a href="https://www.linkedin.com/in/jamespearce">my day job</a>, but I do intend to maintain it, so please provide feedback. I could not have done this without these great <a href="https://tinybase.org/guides/how-tinybase-is-built/credits/#giants">projects</a> and <a href="https://tinybase.org/guides/how-tinybase-is-built/credits/#and-friends">friends</a>, and I hope you enjoy using it!</p></section>