tinybase 1.3.3 → 1.3.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/checkpoints.js +1 -1
- package/lib/checkpoints.js.gz +0 -0
- package/lib/common.js +1 -1
- package/lib/common.js.gz +0 -0
- package/lib/debug/checkpoints.js +1 -1
- package/lib/debug/common.js +4 -1
- package/lib/debug/indexes.js +1 -1
- package/lib/debug/metrics.js +1 -1
- package/lib/debug/relationships.js +2 -2
- package/lib/debug/store.d.ts +9 -1
- package/lib/debug/store.js +109 -67
- package/lib/debug/tinybase.js +110 -68
- package/lib/indexes.js +1 -1
- package/lib/indexes.js.gz +0 -0
- package/lib/metrics.js +1 -1
- package/lib/metrics.js.gz +0 -0
- package/lib/relationships.js +1 -1
- package/lib/relationships.js.gz +0 -0
- package/lib/store.d.ts +9 -1
- package/lib/store.js +1 -1
- package/lib/store.js.gz +0 -0
- package/lib/tinybase.js +1 -1
- package/lib/tinybase.js.gz +0 -0
- package/lib/umd/checkpoints.js +1 -1
- package/lib/umd/checkpoints.js.gz +0 -0
- package/lib/umd/common.js +1 -1
- package/lib/umd/common.js.gz +0 -0
- package/lib/umd/indexes.js +1 -1
- package/lib/umd/indexes.js.gz +0 -0
- package/lib/umd/metrics.js +1 -1
- package/lib/umd/metrics.js.gz +0 -0
- package/lib/umd/relationships.js +1 -1
- package/lib/umd/relationships.js.gz +0 -0
- package/lib/umd/store.js +1 -1
- package/lib/umd/store.js.gz +0 -0
- package/lib/umd/tinybase.js +1 -1
- package/lib/umd/tinybase.js.gz +0 -0
- package/package.json +29 -29
- package/readme.md +2 -2
package/lib/debug/tinybase.js
CHANGED
|
@@ -23,6 +23,7 @@ const arrayIsSorted = (array, sorter) =>
|
|
|
23
23
|
);
|
|
24
24
|
const arraySort = (array, sorter) => array.sort(sorter);
|
|
25
25
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
26
|
+
const arrayMap = (array, cb) => array.map(cb);
|
|
26
27
|
const arraySum = (array) => arrayReduce(array, (i, j) => i + j, 0);
|
|
27
28
|
const arrayLength = (array) => array.length;
|
|
28
29
|
const arrayIsEmpty = (array) => arrayLength(array) == 0;
|
|
@@ -83,7 +84,7 @@ const mapSet = (map, key, value) =>
|
|
|
83
84
|
isUndefined(value) ? (collDel(map, key), map) : map?.set(key, value);
|
|
84
85
|
const mapEnsure = (map, key, getDefaultValue) => {
|
|
85
86
|
if (!collHas(map, key)) {
|
|
86
|
-
map
|
|
87
|
+
mapSet(map, key, getDefaultValue());
|
|
87
88
|
}
|
|
88
89
|
return mapGet(map, key);
|
|
89
90
|
};
|
|
@@ -518,6 +519,7 @@ const createCheckpoints = getCreateFunction((store) => {
|
|
|
518
519
|
});
|
|
519
520
|
|
|
520
521
|
const defaultSorter = (sortKey1, sortKey2) => (sortKey1 < sortKey2 ? -1 : 1);
|
|
522
|
+
const id = (key) => EMPTY_STRING + key;
|
|
521
523
|
|
|
522
524
|
const createIndexes = getCreateFunction((store) => {
|
|
523
525
|
const sliceIdsListeners = mapNew();
|
|
@@ -1023,7 +1025,7 @@ const createRelationships = getCreateFunction((store) => {
|
|
|
1023
1025
|
hasRelationship,
|
|
1024
1026
|
getLocalTableId,
|
|
1025
1027
|
getRelationship,
|
|
1026
|
-
|
|
1028
|
+
,
|
|
1027
1029
|
setDefinition,
|
|
1028
1030
|
delDefinition,
|
|
1029
1031
|
destroy,
|
|
@@ -1200,12 +1202,12 @@ const createRelationships = getCreateFunction((store) => {
|
|
|
1200
1202
|
const transformMap = (map, toBeLikeObject, setId, delId = mapSet) => {
|
|
1201
1203
|
const idsToDelete = arrayFilter(
|
|
1202
1204
|
mapKeys(map),
|
|
1203
|
-
(
|
|
1205
|
+
(id2) => !objHas(toBeLikeObject, id2),
|
|
1204
1206
|
);
|
|
1205
|
-
arrayForEach(objIds(toBeLikeObject), (
|
|
1206
|
-
setId(map,
|
|
1207
|
+
arrayForEach(objIds(toBeLikeObject), (id2) =>
|
|
1208
|
+
setId(map, id2, toBeLikeObject[id2]),
|
|
1207
1209
|
);
|
|
1208
|
-
arrayForEach(idsToDelete, (
|
|
1210
|
+
arrayForEach(idsToDelete, (id2) => delId(map, id2));
|
|
1209
1211
|
return map;
|
|
1210
1212
|
};
|
|
1211
1213
|
const getCellType = (cell) => {
|
|
@@ -1219,15 +1221,15 @@ const validate = (obj, validateChild, onInvalidObj) => {
|
|
|
1219
1221
|
onInvalidObj?.();
|
|
1220
1222
|
return false;
|
|
1221
1223
|
}
|
|
1222
|
-
objForEach(obj, (child,
|
|
1223
|
-
if (!validateChild(child,
|
|
1224
|
-
objDel(obj,
|
|
1224
|
+
objForEach(obj, (child, id2) => {
|
|
1225
|
+
if (!validateChild(child, id2)) {
|
|
1226
|
+
objDel(obj, id2);
|
|
1225
1227
|
}
|
|
1226
1228
|
});
|
|
1227
1229
|
return !objIsEmpty(obj);
|
|
1228
1230
|
};
|
|
1229
|
-
const idsChanged = (ids,
|
|
1230
|
-
mapSet(ids,
|
|
1231
|
+
const idsChanged = (ids, id2, added) =>
|
|
1232
|
+
mapSet(ids, id2, mapGet(ids, id2) == -added ? void 0 : added);
|
|
1231
1233
|
const createStore = () => {
|
|
1232
1234
|
let hasSchema;
|
|
1233
1235
|
let cellsTouched;
|
|
@@ -1256,7 +1258,7 @@ const createStore = () => {
|
|
|
1256
1258
|
validate(schema, (tableSchema) =>
|
|
1257
1259
|
validate(tableSchema, (cellSchema) => {
|
|
1258
1260
|
if (
|
|
1259
|
-
!validate(cellSchema, (_child,
|
|
1261
|
+
!validate(cellSchema, (_child, id2) => arrayHas([TYPE, DEFAULT], id2))
|
|
1260
1262
|
) {
|
|
1261
1263
|
return false;
|
|
1262
1264
|
}
|
|
@@ -1402,7 +1404,7 @@ const createStore = () => {
|
|
|
1402
1404
|
),
|
|
1403
1405
|
);
|
|
1404
1406
|
const getNewRowId = (tableMap) => {
|
|
1405
|
-
const rowId =
|
|
1407
|
+
const rowId = EMPTY_STRING + nextRowId++;
|
|
1406
1408
|
if (!collHas(tableMap, rowId)) {
|
|
1407
1409
|
return rowId;
|
|
1408
1410
|
}
|
|
@@ -1553,26 +1555,28 @@ const createStore = () => {
|
|
|
1553
1555
|
}
|
|
1554
1556
|
}
|
|
1555
1557
|
};
|
|
1556
|
-
const fluentTransaction = (actions) => {
|
|
1557
|
-
transaction(actions);
|
|
1558
|
+
const fluentTransaction = (actions, ...args) => {
|
|
1559
|
+
transaction(() => actions(...arrayMap(args, id)));
|
|
1558
1560
|
return store;
|
|
1559
1561
|
};
|
|
1560
1562
|
const getTables = () =>
|
|
1561
1563
|
mapToObj(tablesMap, (table) => mapToObj(table, mapToObj));
|
|
1562
1564
|
const getTableIds = () => mapKeys(tablesMap);
|
|
1563
|
-
const getTable = (tableId) =>
|
|
1564
|
-
|
|
1565
|
+
const getTable = (tableId) =>
|
|
1566
|
+
mapToObj(mapGet(tablesMap, id(tableId)), mapToObj);
|
|
1567
|
+
const getRowIds = (tableId) => mapKeys(mapGet(tablesMap, id(tableId)));
|
|
1565
1568
|
const getRow = (tableId, rowId) =>
|
|
1566
|
-
mapToObj(mapGet(mapGet(tablesMap, tableId), rowId));
|
|
1569
|
+
mapToObj(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)));
|
|
1567
1570
|
const getCellIds = (tableId, rowId) =>
|
|
1568
|
-
mapKeys(mapGet(mapGet(tablesMap, tableId), rowId));
|
|
1571
|
+
mapKeys(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)));
|
|
1569
1572
|
const getCell = (tableId, rowId, cellId) =>
|
|
1570
|
-
mapGet(mapGet(mapGet(tablesMap, tableId), rowId), cellId);
|
|
1573
|
+
mapGet(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)), id(cellId));
|
|
1571
1574
|
const hasTables = () => !collIsEmpty(tablesMap);
|
|
1572
|
-
const hasTable = (tableId) => collHas(tablesMap, tableId);
|
|
1573
|
-
const hasRow = (tableId, rowId) =>
|
|
1575
|
+
const hasTable = (tableId) => collHas(tablesMap, id(tableId));
|
|
1576
|
+
const hasRow = (tableId, rowId) =>
|
|
1577
|
+
collHas(mapGet(tablesMap, id(tableId)), id(rowId));
|
|
1574
1578
|
const hasCell = (tableId, rowId, cellId) =>
|
|
1575
|
-
collHas(mapGet(mapGet(tablesMap, tableId), rowId), cellId);
|
|
1579
|
+
collHas(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)), id(cellId));
|
|
1576
1580
|
const getJson = () => jsonString(tablesMap);
|
|
1577
1581
|
const getSchemaJson = () => jsonString(schemaMap);
|
|
1578
1582
|
const setTables = (tables) =>
|
|
@@ -1580,19 +1584,30 @@ const createStore = () => {
|
|
|
1580
1584
|
validateTables(tables) ? setValidTables(tables) : 0,
|
|
1581
1585
|
);
|
|
1582
1586
|
const setTable = (tableId, table) =>
|
|
1583
|
-
fluentTransaction(
|
|
1584
|
-
|
|
1587
|
+
fluentTransaction(
|
|
1588
|
+
(tableId2) =>
|
|
1589
|
+
validateTable(table, tableId2) ? setValidTable(tableId2, table) : 0,
|
|
1590
|
+
tableId,
|
|
1585
1591
|
);
|
|
1586
1592
|
const setRow = (tableId, rowId, row) =>
|
|
1587
|
-
fluentTransaction(
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1593
|
+
fluentTransaction(
|
|
1594
|
+
(tableId2, rowId2) =>
|
|
1595
|
+
validateRow(id(tableId2), id(rowId2), row)
|
|
1596
|
+
? setValidRow(
|
|
1597
|
+
id(tableId2),
|
|
1598
|
+
getOrCreateTable(id(tableId2)),
|
|
1599
|
+
id(rowId2),
|
|
1600
|
+
row,
|
|
1601
|
+
)
|
|
1602
|
+
: 0,
|
|
1603
|
+
tableId,
|
|
1604
|
+
rowId,
|
|
1591
1605
|
);
|
|
1592
1606
|
const addRow = (tableId, row) =>
|
|
1593
1607
|
transaction(() => {
|
|
1594
1608
|
let rowId = void 0;
|
|
1595
1609
|
if (validateRow(tableId, rowId, row)) {
|
|
1610
|
+
tableId = id(tableId);
|
|
1596
1611
|
setValidRow(
|
|
1597
1612
|
tableId,
|
|
1598
1613
|
getOrCreateTable(tableId),
|
|
@@ -1603,32 +1618,40 @@ const createStore = () => {
|
|
|
1603
1618
|
return rowId;
|
|
1604
1619
|
});
|
|
1605
1620
|
const setPartialRow = (tableId, rowId, partialRow) =>
|
|
1606
|
-
fluentTransaction(
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1621
|
+
fluentTransaction(
|
|
1622
|
+
(tableId2, rowId2) => {
|
|
1623
|
+
if (validateRow(tableId2, rowId2, partialRow, 1)) {
|
|
1624
|
+
const table = getOrCreateTable(tableId2);
|
|
1625
|
+
objForEach(partialRow, (cell, cellId) =>
|
|
1626
|
+
setCellIntoDefaultRow(tableId2, table, rowId2, cellId, cell),
|
|
1627
|
+
);
|
|
1628
|
+
}
|
|
1629
|
+
},
|
|
1630
|
+
tableId,
|
|
1631
|
+
rowId,
|
|
1632
|
+
);
|
|
1614
1633
|
const setCell = (tableId, rowId, cellId, cell) =>
|
|
1615
|
-
fluentTransaction(
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
(validCell) =>
|
|
1624
|
-
setCellIntoDefaultRow(
|
|
1625
|
-
tableId,
|
|
1626
|
-
getOrCreateTable(tableId),
|
|
1627
|
-
rowId,
|
|
1628
|
-
cellId,
|
|
1629
|
-
validCell,
|
|
1634
|
+
fluentTransaction(
|
|
1635
|
+
(tableId2, rowId2, cellId2) =>
|
|
1636
|
+
ifNotUndefined(
|
|
1637
|
+
getValidatedCell(
|
|
1638
|
+
tableId2,
|
|
1639
|
+
rowId2,
|
|
1640
|
+
cellId2,
|
|
1641
|
+
isFunction(cell) ? cell(getCell(tableId2, rowId2, cellId2)) : cell,
|
|
1630
1642
|
),
|
|
1631
|
-
|
|
1643
|
+
(validCell) =>
|
|
1644
|
+
setCellIntoDefaultRow(
|
|
1645
|
+
tableId2,
|
|
1646
|
+
getOrCreateTable(tableId2),
|
|
1647
|
+
rowId2,
|
|
1648
|
+
cellId2,
|
|
1649
|
+
validCell,
|
|
1650
|
+
),
|
|
1651
|
+
),
|
|
1652
|
+
tableId,
|
|
1653
|
+
rowId,
|
|
1654
|
+
cellId,
|
|
1632
1655
|
);
|
|
1633
1656
|
const setJson = (json) => {
|
|
1634
1657
|
try {
|
|
@@ -1649,24 +1672,42 @@ const createStore = () => {
|
|
|
1649
1672
|
});
|
|
1650
1673
|
const delTables = () => fluentTransaction(() => setValidTables({}));
|
|
1651
1674
|
const delTable = (tableId) =>
|
|
1652
|
-
fluentTransaction(
|
|
1653
|
-
|
|
1675
|
+
fluentTransaction(
|
|
1676
|
+
(tableId2) =>
|
|
1677
|
+
collHas(tablesMap, tableId2) ? delValidTable(tableId2) : 0,
|
|
1678
|
+
tableId,
|
|
1654
1679
|
);
|
|
1655
1680
|
const delRow = (tableId, rowId) =>
|
|
1656
|
-
fluentTransaction(
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1681
|
+
fluentTransaction(
|
|
1682
|
+
(tableId2, rowId2) =>
|
|
1683
|
+
ifNotUndefined(mapGet(tablesMap, tableId2), (tableMap) =>
|
|
1684
|
+
collHas(tableMap, rowId2)
|
|
1685
|
+
? delValidRow(tableId2, tableMap, rowId2)
|
|
1686
|
+
: 0,
|
|
1687
|
+
),
|
|
1688
|
+
tableId,
|
|
1689
|
+
rowId,
|
|
1660
1690
|
);
|
|
1661
1691
|
const delCell = (tableId, rowId, cellId, forceDel) =>
|
|
1662
|
-
fluentTransaction(
|
|
1663
|
-
|
|
1664
|
-
ifNotUndefined(mapGet(
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1692
|
+
fluentTransaction(
|
|
1693
|
+
(tableId2, rowId2, cellId2) =>
|
|
1694
|
+
ifNotUndefined(mapGet(tablesMap, tableId2), (tableMap) =>
|
|
1695
|
+
ifNotUndefined(mapGet(tableMap, rowId2), (rowMap) =>
|
|
1696
|
+
collHas(rowMap, cellId2)
|
|
1697
|
+
? delValidCell(
|
|
1698
|
+
tableId2,
|
|
1699
|
+
tableMap,
|
|
1700
|
+
rowId2,
|
|
1701
|
+
rowMap,
|
|
1702
|
+
cellId2,
|
|
1703
|
+
forceDel,
|
|
1704
|
+
)
|
|
1705
|
+
: 0,
|
|
1706
|
+
),
|
|
1668
1707
|
),
|
|
1669
|
-
|
|
1708
|
+
tableId,
|
|
1709
|
+
rowId,
|
|
1710
|
+
cellId,
|
|
1670
1711
|
);
|
|
1671
1712
|
const delSchema = () =>
|
|
1672
1713
|
fluentTransaction(() => {
|
|
@@ -1762,11 +1803,11 @@ const createStore = () => {
|
|
|
1762
1803
|
),
|
|
1763
1804
|
);
|
|
1764
1805
|
const forEachRow = (tableId, rowCallback) =>
|
|
1765
|
-
collForEach(mapGet(tablesMap, tableId), (rowMap, rowId) =>
|
|
1806
|
+
collForEach(mapGet(tablesMap, id(tableId)), (rowMap, rowId) =>
|
|
1766
1807
|
rowCallback(rowId, (cellCallback) => mapForEach(rowMap, cellCallback)),
|
|
1767
1808
|
);
|
|
1768
1809
|
const forEachCell = (tableId, rowId, cellCallback) =>
|
|
1769
|
-
mapForEach(mapGet(mapGet(tablesMap, tableId), rowId), cellCallback);
|
|
1810
|
+
mapForEach(mapGet(mapGet(tablesMap, id(tableId)), id(rowId)), cellCallback);
|
|
1770
1811
|
const addTablesListener = (listener, mutator) =>
|
|
1771
1812
|
addListener(listener, tablesListeners[mutator ? 1 : 0]);
|
|
1772
1813
|
const addTableIdsListener = (listener, mutator) =>
|
|
@@ -1878,4 +1919,5 @@ export {
|
|
|
1878
1919
|
createSessionPersister,
|
|
1879
1920
|
createStore,
|
|
1880
1921
|
defaultSorter,
|
|
1922
|
+
id,
|
|
1881
1923
|
};
|
package/lib/indexes.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=e=>typeof e,t=e(""),
|
|
1
|
+
const e=e=>typeof e,t=e(""),n=(e,t)=>e.every(((n,s)=>0==s||t(e[s-1],n)<=0)),s=(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,n)=>l(e)?n?.():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,n)=>t(n,e))),L=(e,t,n)=>l(n)?(f(e,t),e):e?.set(t,n),x=(e,t,n)=>(a(e,t)||L(e,t,n()),w(e,t)),v=e=>new Set(e),E=(e,t)=>e?.add(t),R=(n,s)=>e(n)==t?e=>e(n):n??(()=>s??""),b=(e,t)=>e<t?-1:1,y=(e,t,n)=>r(n)<2?E(c(n)?e:x(e,n[0],v),t):y(x(e,n[0],g),t,d(n)),T=e=>{const t=(n,s,...r)=>i(n,(n=>c(r)?e(n,s):o([r[0],null],(e=>t(w(n,e),s,...d(r))))));return t},k=Object.freeze,z=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((e=>{const t=g(),c=g(),[d,x,z,C,D,M,j,O,W,m]=((e,t,n)=>{const s=e.hasRow,r=g(),c=g(),d=g(),h=g(),f=g(),x=t=>i(w(f,t),(n=>{I(n,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=n=>e.getCell(S,t,n),r=w(k,t),c=s(S,t)?n(R(o,t)):void 0;if(r!=c&&L(y,t,[r,c]),!l(b)){const e=w(z,t),n=s(S,t)?b(o,t):void 0;e!=n&&L(T,t,n)}},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,n)=>C(n))),e.addTableListener(S,(()=>D()))]))},E,()=>p(f,E)]})(e,g,(e=>l(e)?"":e+"")),[q,A,B]=(e=>{let t,n=0;const s=[],c=g();return[(o,r,d=[])=>{t??=e();const l=s.pop()??""+n++;return L(c,l,[o,r,d]),y(r,l,d),l},(e,n=[],...s)=>T(I)(e,(e=>i(w(c,e),(([e])=>e(t,...n,...s)))),...n),e=>i(w(c,e),(([,t,n])=>(T(f)(t,e,...n),L(c,e),r(s)<1e3&&s.push(e),n)),(()=>[])),(e,n,s)=>i(w(c,e),(([e,,c])=>{const d=(...i)=>{const a=r(i);a==r(c)?e(t,...i,...s(i)):l(c[a])?o(n[a](...i),(e=>d(...i,e))):d(...i,c[a])};d()}))]})((()=>G)),F=(t,n,s)=>{const o=D(t);I(s,((t,s)=>n(s,(n=>I(t,(t=>n(t,(n=>e.forEachCell(o,t,n)))))))))},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],n)=>{l(e)||(E(k,e),i(w(C,e),(t=>{f(t,n),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),n),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,n)=>S(w(b,t),w(b,n),e),o=[...w(C,e)];n(o,t)||(L(C,e,v(s(o,t))),E(k,e))}))),(T||y)&&!l(x)){const t=[...C];n(t,x)||(j(e,g(s(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,n)=>e(t,(e=>F(t,e,n))))),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,n)=>q(n,t,[e]),addSliceRowIdsListener:(e,t,n)=>q(n,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(""),
|
|
1
|
+
const e=e=>typeof e,t=e(""),n=e(e),s=(e,t)=>e.forEach(t),o=e=>c(e,((e,t)=>e+t),0),i=e=>e.length,r=e=>0==i(e),c=(e,t,n)=>e.reduce(t,n),a=e=>e.slice(1),d=Math.max,l=Math.min,u=isFinite,h=e=>null==e,v=(e,t,n)=>h(e)?n?.():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,n)=>t(n,e))),y=(e,t,n)=>h(n)?(w(e,t),e):e?.set(t,n),E=(e,t,n)=>(f(e,t)||y(e,t,n()),b(e,t)),I=e=>new Set(e),R=(n,s)=>e(n)==t?e=>e(n):n??(()=>s??""),S=(e,t,n)=>i(n)<2?((e,t)=>e?.add(t))(r(n)?e:E(e,n[0],I),t):S(E(e,n[0],L),t,a(n)),T=e=>{const t=(n,o,...i)=>v(n,(n=>r(i)?e(n,o):s([i[0],null],(e=>t(b(n,e),o,...a(i))))));return t},k=Object.freeze,z=L([["avg",[(e,t)=>o(e)/t,(e,t,n)=>e+(t-e)/(n+1),(e,t,n)=>e+(e-t)/(n-1),(e,t,n,s)=>e+(t-n)/s]],["max",[e=>d(...e),(e,t)=>d(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:d(t,e)]],["min",[e=>l(...e),(e,t)=>l(t,e),(e,t)=>t==e?void 0:e,(e,t,n)=>n==e?void 0:l(t,e)]],["sum",[e=>o(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,n)=>e-n+t]]]),D=(e=>{const t=new WeakMap;return n=>(t.has(n)||t.set(n,e(n)),t.get(n))})((t=>{const o=L(),[r,c,a,d,l,E,D,N,j,C]=((e,t,n)=>{const o=e.hasRow,i=L(),r=L(),c=L(),a=L(),d=L(),l=t=>v(b(d,t),(n=>{m(n,e.delListener),y(d,t)})),u=e=>{y(i,e),y(r,e),y(c,e),y(a,e),l(e)};return[()=>e,()=>[...i?.keys()??[]],e=>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 s=n=>e.getCell(v,t,n),i=b(S,t),r=o(v,t)?n(M(s,t)):void 0;if(i!=r&&y(E,t,[i,r]),!h(w)){const e=b(T,t),n=o(v,t)?w(s,t):void 0;e!=n&&y(R,t,n)}},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)&&s(e.getRowIds(v),(e=>{f(S,e)||k(e)})),z(!0),l(u),y(d,u,I([e.addRowListener(v,null,((e,t,n)=>k(n))),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,n=0;const o=[],r=L();return[(s,i,c=[])=>{t??=e();const a=o.pop()??""+n++;return y(r,a,[s,i,c]),S(i,a,c),a},(e,n=[],...s)=>T(m)(e,(e=>v(b(r,e),(([e])=>e(t,...n,...s)))),...n),e=>v(b(r,e),(([,t,n])=>(T(w)(t,e,...n),y(r,e),i(o)<1e3&&o.push(e),n)),(()=>[])),(e,n,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])?s(n[d](...a),(e=>c(...a,e))):c(...a,r[d])};c()}))]})((()=>q)),q={setMetricDefinition:(t,s,i,r,c,a,d)=>{const l=e(i)==n?[i,c,a,d]:b(z,i)??b(z,"sum");return N(t,s,((e,n,s,i,r,c)=>{let a=E(t),d=M(i);const[v,g,f,p]=l;var w;c=c||h(a),m(n,(([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
|
package/lib/relationships.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=e=>typeof e,t=e(""),o=(e,t)=>e.forEach(t),s=e=>e.length,n=e=>0==s(e),i=e=>e.slice(1),r=e=>null==e,a=(e,t,o)=>r(e)?o?.():t(e),d=(e,t)=>e?.has(t)??!1,l=e=>[...e?.values()??[]],c=e=>e.clear(),R=(e,t)=>e?.forEach(t),h=(e,t)=>e?.delete(t),f=e=>new Map(e),g=(e,t)=>e?.get(t),u=(e,t)=>R(e,((e,o)=>t(o,e))),w=(e,t,o)=>r(o)?(h(e,t),e):e?.set(t,o),L=(e,t,o)=>(d(e,t)||e
|
|
1
|
+
const e=e=>typeof e,t=e(""),o=(e,t)=>e.forEach(t),s=e=>e.length,n=e=>0==s(e),i=e=>e.slice(1),r=e=>null==e,a=(e,t,o)=>r(e)?o?.():t(e),d=(e,t)=>e?.has(t)??!1,l=e=>[...e?.values()??[]],c=e=>e.clear(),R=(e,t)=>e?.forEach(t),h=(e,t)=>e?.delete(t),f=e=>new Map(e),g=(e,t)=>e?.get(t),u=(e,t)=>R(e,((e,o)=>t(o,e))),w=(e,t,o)=>r(o)?(h(e,t),e):e?.set(t,o),L=(e,t,o)=>(d(e,t)||w(e,t,o()),g(e,t)),p=e=>new Set(e),I=(e,t)=>e?.add(t),b=(o,s)=>e(o)==t?e=>e(o):o??(()=>s??""),v=(e,t,o)=>s(o)<2?I(n(o)?e:L(e,o[0],p),t):v(L(e,o[0],f),t,i(o)),k=e=>{const t=(s,r,...d)=>a(s,(s=>n(d)?e(s,r):o([d[0],null],(e=>t(g(s,e),r,...i(d))))));return t},E=Object.freeze,T=(e=>{const t=new WeakMap;return o=>(t.has(o)||t.set(o,e(o)),t.get(o))})((e=>{const t=f(),n=f(),i=f(),L=f(),[T,m,y,S,z,D,,M,j,x]=((e,t,s)=>{const n=e.hasRow,i=f(),l=f(),h=f(),L=f(),I=f(),b=t=>a(g(I,t),(o=>{R(o,e.delListener),w(I,t)})),v=e=>{w(i,e),w(l,e),w(h,e),w(L,e),b(e)};return[()=>e,()=>[...i?.keys()??[]],e=>u(l,e),e=>d(l,e),e=>g(i,e),e=>g(l,e),(e,t)=>w(l,e,t),(a,v,k,E,T)=>{const m=f(),y=f();w(i,a,v),d(l,a)||(w(l,a,t()),w(h,a,f()),w(L,a,f()));const S=g(h,a),z=g(L,a),D=t=>{const o=o=>e.getCell(v,t,o),i=g(S,t),a=n(v,t)?s(E(o,t)):void 0;if(i!=a&&w(m,t,[i,a]),!r(T)){const e=g(z,t),s=n(v,t)?T(o,t):void 0;e!=s&&w(y,t,s)}},M=e=>{k((()=>{R(m,(([,e],t)=>w(S,t,e))),R(y,((e,t)=>w(z,t,e)))}),m,y,S,z,e),c(m),c(y)};u(S,D),e.hasTable(v)&&o(e.getRowIds(v),(e=>{d(S,e)||D(e)})),M(!0),b(a),w(I,a,p([e.addRowListener(v,null,((e,t,o)=>D(o))),e.addTableListener(v,(()=>M()))]))},v,()=>u(I,v)]})(e,(()=>[f(),f(),f(),f()]),(e=>r(e)?void 0:e+"")),[C,O,W]=(e=>{let t,n=0;const i=[],d=f();return[(o,s,r=[])=>{t??=e();const a=i.pop()??""+n++;return w(d,a,[o,s,r]),v(s,a,r),a},(e,o=[],...s)=>k(R)(e,(e=>a(g(d,e),(([e])=>e(t,...o,...s)))),...o),e=>a(g(d,e),(([,t,o])=>(k(h)(t,e,...o),w(d,e),s(i)<1e3&&i.push(e),o)),(()=>[])),(e,n,i)=>a(g(d,e),(([e,,a])=>{const d=(...l)=>{const c=s(l);c==s(a)?e(t,...l,...i(l)):r(a[c])?o(n[c](...l),(e=>d(...l,e))):d(...l,a[c])};d()}))]})((()=>F)),q=(e,t,o)=>a(D(e),(([s,,n])=>{if(!d(n,t)){const i=p();if(z(e)!=B(e))I(i,t);else{let e=t;for(;!r(e)&&!d(i,e);)I(i,e),e=g(s,e)}if(o)return i;w(n,t,i)}return g(n,t)})),A=(e,t)=>a(D(e),(([,,e])=>w(e,t))),B=e=>g(t,e),F={setRelationshipDefinition:(e,o,s,l)=>(w(t,e,s),M(e,o,((t,o)=>{const s=p(),l=p(),c=p(),[f,b]=D(e);R(o,(([t,o],n)=>{r(t)||(I(l,t),a(g(b,t),(e=>{var o;h(e,n),(r(o=e)||0==(e=>e.size)(o))&&w(b,t)}))),r(o)||(I(l,o),d(b,o)||w(b,o,p()),I(g(b,o),n)),I(s,n),w(f,n,o),u(g(L,e),(t=>{d(q(e,t),n)&&I(c,t)}))})),t(),R(s,(t=>O(n,[e,t]))),R(l,(t=>O(i,[e,t]))),R(c,(t=>{A(e,t),O(L,[e,t])}))}),b(l)),F),delRelationshipDefinition:e=>(w(t,e),j(e),F),getStore:T,getRelationshipIds:m,forEachRelationship:t=>y((o=>t(o,(t=>e.forEachRow(z(o),t))))),hasRelationship:S,getLocalTableId:z,getRemoteTableId:B,getRemoteRowId:(e,t)=>g(D(e)?.[0],t),getLocalRowIds:(e,t)=>l(g(D(e)?.[1],t)),getLinkedRowIds:(e,t)=>r(D(e))?[t]:l(q(e,t,!0)),addRemoteRowIdListener:(e,t,o)=>C(o,n,[e,t]),addLocalRowIdsListener:(e,t,o)=>C(o,i,[e,t]),addLinkedRowIdsListener:(e,t,o)=>(q(e,t),C(o,L,[e,t])),delListener:e=>(A(...W(e)),F),destroy:x,getListenerStats:()=>({})};return E(F)}));export{T as createRelationships};
|
package/lib/relationships.js.gz
CHANGED
|
Binary file
|
package/lib/store.d.ts
CHANGED
|
@@ -390,6 +390,7 @@ export type CellListener = (
|
|
|
390
390
|
* @param cellId The Id of the Cell that was being changed.
|
|
391
391
|
* @param invalidCells An array of the values of the Cell that were invalid.
|
|
392
392
|
* @category Listener
|
|
393
|
+
* @since v1.1.0
|
|
393
394
|
*/
|
|
394
395
|
export type InvalidCellListener = (
|
|
395
396
|
store: Store,
|
|
@@ -521,6 +522,7 @@ export type CellSchema =
|
|
|
521
522
|
* different value and then changed back.
|
|
522
523
|
*
|
|
523
524
|
* @category Transaction
|
|
525
|
+
* @since v1.2.0
|
|
524
526
|
*/
|
|
525
527
|
export type ChangedCells = {
|
|
526
528
|
[tableId: Id]: {
|
|
@@ -543,6 +545,7 @@ export type ChangedCells = {
|
|
|
543
545
|
* change a Cell during the transaction are described.
|
|
544
546
|
*
|
|
545
547
|
* @category Transaction
|
|
548
|
+
* @since v1.2.0
|
|
546
549
|
*/
|
|
547
550
|
export type InvalidCells = {
|
|
548
551
|
[tableId: Id]: {
|
|
@@ -1710,7 +1713,7 @@ export interface Store {
|
|
|
1710
1713
|
*
|
|
1711
1714
|
* @param actions The function to be executed as a transaction.
|
|
1712
1715
|
* @param doRollback An optional callback that should return `true` if you
|
|
1713
|
-
* want to rollback the transaction at the end.
|
|
1716
|
+
* want to rollback the transaction at the end. Since v1.2.0.
|
|
1714
1717
|
* @returns Whatever value the provided transaction function returns.
|
|
1715
1718
|
* @example
|
|
1716
1719
|
* This example makes changes to two Cells, first outside, and secondly
|
|
@@ -1846,6 +1849,7 @@ export interface Store {
|
|
|
1846
1849
|
* // -> 'Fido changed'
|
|
1847
1850
|
* ```
|
|
1848
1851
|
* @category Transaction
|
|
1852
|
+
* @since v1.3.0
|
|
1849
1853
|
*/
|
|
1850
1854
|
startTransaction(): Store;
|
|
1851
1855
|
|
|
@@ -1923,6 +1927,7 @@ export interface Store {
|
|
|
1923
1927
|
* // -> {pets: {fido: {species: 'dog', color: 'brown'}}}
|
|
1924
1928
|
* ```
|
|
1925
1929
|
* @category Transaction
|
|
1930
|
+
* @since v1.3.0
|
|
1926
1931
|
*/
|
|
1927
1932
|
finishTransaction(
|
|
1928
1933
|
doRollback?: (
|
|
@@ -2897,6 +2902,7 @@ export interface Store {
|
|
|
2897
2902
|
* store.delListener(listenerId);
|
|
2898
2903
|
* ```
|
|
2899
2904
|
* @category Listener
|
|
2905
|
+
* @since v1.1.0
|
|
2900
2906
|
*/
|
|
2901
2907
|
addInvalidCellListener(
|
|
2902
2908
|
tableId: IdOrNull,
|
|
@@ -2971,6 +2977,7 @@ export interface Store {
|
|
|
2971
2977
|
* store.delListener(listenerId).delListener(listenerId2);
|
|
2972
2978
|
* ```
|
|
2973
2979
|
* @category Listener
|
|
2980
|
+
* @since v1.3.0
|
|
2974
2981
|
*/
|
|
2975
2982
|
addWillFinishTransactionListener(listener: TransactionListener): Id;
|
|
2976
2983
|
|
|
@@ -3040,6 +3047,7 @@ export interface Store {
|
|
|
3040
3047
|
* store.delListener(listenerId).delListener(listenerId2);
|
|
3041
3048
|
* ```
|
|
3042
3049
|
* @category Listener
|
|
3050
|
+
* @since v1.3.0
|
|
3043
3051
|
*/
|
|
3044
3052
|
addDidFinishTransactionListener(listener: TransactionListener): Id;
|
|
3045
3053
|
|
package/lib/store.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=e=>typeof e,t=e(""),s=e(!0),n=e(0),r=e(e),a=e=>[e,e],l=(e,t)=>e.forEach(t),o=e=>e.length,d=e=>0==o(e),i=e=>e.slice(1),c=(e,t)=>e.push(t),u=e=>JSON.stringify(e,((e,t)=>{return T(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,T=(e,t)=>e instanceof t,b=e=>null==e,g=(e,t,s)=>b(e)?s?.():t(e),L=e=>e==t||e==s,
|
|
1
|
+
const e=e=>typeof e,t=e(""),s=e(!0),n=e(0),r=e(e),a=e=>[e,e],l=(e,t)=>e.forEach(t),o=e=>e.length,d=e=>0==o(e),i=e=>e.slice(1),c=(e,t)=>e.push(t),u=e=>JSON.stringify(e,((e,t)=>{return T(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,T=(e,t)=>e instanceof t,b=e=>null==e,g=(e,t,s)=>b(e)?s?.():t(e),L=e=>e==t||e==s,p=(e,t)=>e?.has(t)??!1,w=e=>b(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)=>b(s)?(y(e,t),e):e?.set(t,s),F=(e,t,s)=>(p(e,t)||m(e,t,s()),E(e,t)),z=(e,t,s)=>{const n={},r=t??(e=>e);return C(e,((e,t)=>g(r(e),(e=>s?.(e)?0:n[t]=e)))),n},O=(e,t)=>{const s=I(),n=t??(e=>e);return C(e,((e,t)=>s.set(t,n(e)))),s},k=e=>O(e,O),M=Object,N=M.keys,j=M.isFrozen,x=M.freeze,D=(e,t)=>!b(((e,t)=>g(e,(e=>e[t])))(e,t)),P=(e,t)=>delete e[t],W=(e,t)=>l(M.entries(e),(([e,s])=>t(s,e))),q=e=>d(N(e)),A=e=>new Set(e),B=(e,t)=>e?.add(t),G=(e,t,s)=>o(s)<2?B(d(s)?e:F(e,s[0],A),t):G(F(e,s[0],I),t,i(s)),H=e=>{const t=(s,n,...r)=>g(s,(s=>d(r)?e(s,n):l([r[0],null],(e=>t(E(s,e),n,...i(r))))));return t},K=e=>""+e,Q=(e,t,s,n=m)=>{const r=(a=v(e),o=e=>!D(t,e),a.filter(o));var a,o;return l(N(t),(n=>s(e,n,t[n]))),l(r,(t=>n(e,t))),e},U=t=>{const s=e(t);return L(s)||s==n&&h(t)?s:void 0},V=(e,t,s)=>b(e)||!(e=>T(e,M)&&e.constructor==M)(e)||q(e)||j(e)?(s?.(),!1):(W(e,((s,n)=>{t(s,n)||P(e,n)})),!q(e)),X=(e,t,s)=>m(e,t,E(e,t)==-s?void 0:s),Y=()=>{let t,s,d=0,i=0;const h=I(),T=I(),M=I(),N=I(),j=I(),Y=I(),Z=I(),$=I(),_=S(A),ee=S(A),te=S(),se=S(),ne=S(),re=S(),ae=S(),le=S(),oe=S(A),[de,ie,ce,ue]=(e=>{let t,s=0;const n=[],r=I();return[(a,l,o=[])=>{t??=e();const d=n.pop()??""+s++;return m(r,d,[a,l,o]),G(l,d,o),d},(e,s=[],...n)=>H(C)(e,(e=>g(E(r,e),(([e])=>e(t,...s,...n)))),...s),e=>g(E(r,e),(([,t,s])=>(H(y)(t,e,...s),m(r,e),o(n)<1e3&&c(n,e),s)),(()=>[])),(e,s,n)=>g(E(r,e),(([e,,r])=>{const a=(...d)=>{const i=o(d);i==o(r)?e(t,...d,...n(d)):b(r[i])?l(s[i](...d),(e=>a(...d,e))):a(...d,r[i])};a()}))]})((()=>Ve)),fe=(e,s)=>(!t||p(Y,s)||Oe(s))&&V(e,((e,t)=>he(s,t,e)),(()=>Oe(s))),he=(e,t,s,n)=>V(n?s:be(s,e,t),((n,r)=>g(Te(e,t,r,n),(e=>(s[r]=e,!0)),(()=>!1))),(()=>Oe(e,t))),Te=(e,s,n,r)=>t?g(E(E(Y,e),n),(t=>U(r)!=t.type?Oe(e,s,n,r,t.default):r),(()=>Oe(e,s,n,r))):b(U(r))?Oe(e,s,n,r):r,be=(e,t,s)=>(g(E(Z,t),(([n,r])=>{C(n,((t,s)=>{D(e,s)||(e[s]=t)})),C(r,(n=>{D(e,n)||Oe(t,s,n)}))})),e),ge=e=>Q(Y,e,((e,t,s)=>{const n=I(),r=A();Q(F(Y,t,I),s,((e,t,s)=>{m(e,t,s),g(s.default,(e=>m(n,t,e)),(()=>B(r,t)))})),m(Z,t,[n,r])}),((e,t)=>{m(Y,t),m(Z,t)})),Le=e=>Q($,e,((e,t,s)=>pe(t,s)),((e,t)=>Se(t))),pe=(e,t)=>Q(F($,e,(()=>(Je(e,1),I()))),t,((t,s,n)=>we(e,t,s,n)),((t,s)=>ve(e,t,s))),we=(e,t,s,n,r)=>Q(F(t,s,(()=>(me(e,s,1),I()))),n,((t,n,r)=>Re(e,s,t,n,r)),((n,a)=>Ee(e,t,s,n,a,r))),Re=(e,t,s,n,r)=>{p(s,n)||Fe(e,t,n,1);const a=E(s,n);r!==a&&(ze(e,t,n,a,r),m(s,n,r))},Ce=(e,t,s,n,r)=>g(E(t,s),(t=>Re(e,s,t,n,r)),(()=>we(e,t,s,be({[n]:r},e,s)))),ye=e=>{const t=""+d++;return p(e,t)?ye(e):t},Ie=e=>E($,e)??pe(e,{}),Se=e=>pe(e,{}),ve=(e,t,s)=>we(e,t,s,{},!0),Ee=(e,t,s,n,r,a)=>{const l=E(E(Z,e)?.[0],r);if(!b(l)&&!a)return Re(e,s,n,r,l);const o=t=>{ze(e,s,t,E(n,t)),Fe(e,s,t,-1),m(n,t)};b(l)?o(r):J(n,o),w(n)&&(me(e,s,-1),w(m(t,s))&&(Je(e,-1),m($,e)))},Je=(e,t)=>X(h,e,t),me=(e,t,s)=>X(F(T,e,I),t,s),Fe=(e,t,s,n)=>X(F(F(M,e,I),t,I),s,n),ze=(e,t,s,n,r)=>F(F(F(N,e,I),t,I),s,(()=>[n,0]))[1]=r,Oe=(e,t,s,n,r)=>(c(F(F(F(j,e,I),t,I),s,(()=>[])),n),r),ke=(e,t,s)=>g(E(E(E(N,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...a(qe(e,t,s))])),Me=e=>w(j)||w(le[e])?0:C(e?O(j,k):j,((t,s)=>C(t,((t,n)=>C(t,((t,r)=>ie(le[e],[s,n,r],t))))))),Ne=e=>{const t=w(re[e])&&w(se[e])&&w(ee[e]),s=w(ae[e])&&w(ne[e])&&w(te[e])&&w(_[e]);if(!t||!s){const n=e?[O(h),k(T),O(M,k),O(N,k)]:[h,T,M,N];if(t||(C(n[2],((t,s)=>C(t,((t,n)=>{w(t)||ie(re[e],[s,n])})))),C(n[1],((t,s)=>{w(t)||ie(se[e],[s])})),w(n[0])||ie(ee[e])),!s){let t;C(n[3],((s,n)=>{let r;C(s,((s,a)=>{let l;C(s,(([s,o],d)=>{o!==s&&(ie(ae[e],[n,a,d],o,s,ke),t=r=l=1)})),l&&ie(ne[e],[n,a],ke)})),r&&ie(te[e],[n],ke)})),t&&ie(_[e],[],ke)}}},je=(e,...t)=>(Ke((()=>{return e(...(s=t,n=K,s.map(n)));var s,n})),Ve),xe=()=>z($,(e=>z(e,z))),De=()=>v($),Pe=e=>v(E($,K(e))),We=(e,t)=>v(E(E($,K(e)),K(t))),qe=(e,t,s)=>E(E(E($,K(e)),K(t)),K(s)),Ae=e=>je((()=>(e=>V(e,fe,Oe))(e)?Le(e):0)),Be=(t,s,n,a)=>je(((t,s,n)=>g(Te(t,s,n,e(a)==r?a(qe(t,s,n)):a),(e=>Ce(t,Ie(t),s,n,e)))),t,s,n),Ge=()=>je((()=>Le({}))),He=(e,t,s,n)=>je(((e,t,s)=>g(E($,e),(r=>g(E(r,t),(a=>p(a,s)?Ee(e,r,t,a,s,n):0))))),e,t,s),Ke=(e,t)=>{if(-1==i)return;Qe();const s=e?.();return Ue(t),s},Qe=()=>(i++,Ve),Ue=e=>(i>0&&(i--,0==i&&(s=!w(N),i=1,Me(1),s&&Ne(1),i=-1,e?.(z(N,(e=>z(e,(e=>z(e,(e=>[...e]),(([e,t])=>e===t))),q)),q),z(j,(e=>z(e,z))))&&(i=1,C(N,((e,t)=>C(e,((e,s)=>C(e,(([e],n)=>b(e)?He(t,s,n,!0):Be(t,s,n,e))))))),i=-1,s=!1),ie(oe[0],[],s),Me(0),s&&Ne(0),ie(oe[1],[],s),i=0,l([N,j,h,T,M],R))),Ve),Ve={getTables:xe,getTableIds:De,getTable:e=>z(E($,K(e)),z),getRowIds:Pe,getRow:(e,t)=>z(E(E($,K(e)),K(t))),getCellIds:We,getCell:qe,hasTables:()=>!w($),hasTable:e=>p($,K(e)),hasRow:(e,t)=>p(E($,K(e)),K(t)),hasCell:(e,t,s)=>p(E(E($,K(e)),K(t)),K(s)),getJson:()=>u($),getSchemaJson:()=>u(Y),setTables:Ae,setTable:(e,t)=>je((e=>fe(t,e)?pe(e,t):0),e),setRow:(e,t,s)=>je(((e,t)=>he(K(e),K(t),s)?we(K(e),Ie(K(e)),K(t),s):0),e,t),addRow:(e,t)=>Ke((()=>{let s;return he(e,s,t)&&(e=K(e),we(e,Ie(e),s=ye(E($,e)),t)),s})),setPartialRow:(e,t,s)=>je(((e,t)=>{if(he(e,t,s,1)){const n=Ie(e);W(s,((s,r)=>Ce(e,n,t,r,s)))}}),e,t),setCell:Be,setJson:e=>{try{"{}"===e?Ge():Ae(f(e))}catch{}return Ve},setSchema:e=>je((()=>{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!(!L(t)&&t!=n||(U(e.default)!=t&&P(e,"default"),0))})))))(e))&&(ge(e),!w($))){const e=xe();Ge(),Ae(e)}})),delTables:Ge,delTable:e=>je((e=>p($,e)?Se(e):0),e),delRow:(e,t)=>je(((e,t)=>g(E($,e),(s=>p(s,t)?ve(e,s,t):0))),e,t),delCell:He,delSchema:()=>je((()=>{ge({}),t=!1})),transaction:Ke,startTransaction:Qe,finishTransaction:Ue,forEachTable:e=>C($,((t,s)=>e(s,(e=>C(t,((t,s)=>e(s,(e=>J(t,e))))))))),forEachRow:(e,t)=>C(E($,K(e)),((e,s)=>t(s,(t=>J(e,t))))),forEachCell:(e,t,s)=>J(E(E($,K(e)),K(t)),s),addTablesListener:(e,t)=>de(e,_[t?1:0]),addTableIdsListener:(e,t)=>de(e,ee[t?1:0]),addTableListener:(e,t,s)=>de(t,te[s?1:0],[e]),addRowIdsListener:(e,t,s)=>de(t,se[s?1:0],[e]),addRowListener:(e,t,s,n)=>de(s,ne[n?1:0],[e,t]),addCellIdsListener:(e,t,s,n)=>de(s,re[n?1:0],[e,t]),addCellListener:(e,t,s,n,r)=>de(n,ae[r?1:0],[e,t,s]),addInvalidCellListener:(e,t,s,n,r)=>de(n,le[r?1:0],[e,t,s]),addWillFinishTransactionListener:e=>de(e,oe[0]),addDidFinishTransactionListener:e=>de(e,oe[1]),callListener:e=>(ue(e,[De,Pe,We],(e=>b(e[2])?[]:a(qe(...e)))),Ve),delListener:e=>(ce(e),Ve),getListenerStats:()=>({})};return x(Ve)};export{Y 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),p=(e,t)=>e.push(t),v=e=>e.pop(),I=e=>JSON.stringify(e,((e,t)=>b(t,Map)?L([...t],((e,[t,s])=>(e[t]=s,e)),{}):t)),S=JSON.parse,y=Math.max,R=Math.min,T=isFinite,b=(e,t)=>e instanceof t,C=e=>null==e,m=(e,t,s)=>C(e)?s?.():t(e),E=e=>e==n||e==o,k=e=>s(e)==r,M=()=>{},A=e=>e.size,x=(e,t)=>e?.has(t)??!1,D=e=>C(e)||0==A(e),F=e=>[...e?.values()??[]],J=e=>e.clear(),z=(e,t)=>e?.forEach(t),N=(e,t)=>e?.delete(t),O=e=>new Map(e),j=(e=O)=>[e(),e()],P=e=>[...e?.keys()??[]],W=(e,t)=>e?.get(t),B=(e,t)=>z(e,((e,s)=>t(s,e))),H=(e,t,s)=>C(s)?(N(e,t),e):e?.set(t,s),q=(e,t,s)=>(x(e,t)||e.set(t,s()),W(e,t)),G=(e,t,s)=>{const n={},o=t??(e=>e);return z(e,((e,t)=>m(o(e),(e=>s?.(e)?0:n[t]=e)))),n},K=(e,t)=>{const s=O(),n=t??(e=>e);return z(e,((e,t)=>s.set(t,n(e)))),s},Q=e=>K(e,K),U=e=>new Set(e),V=(e,t)=>e?.add(t),X=(e,t,s)=>{const n=e.hasRow,o=O(),a=O(),r=O(),i=O(),d=O(),l=t=>m(W(d,t),(s=>{z(s,e.delListener),H(d,t)})),c=e=>{H(o,e),H(a,e),H(r,e),H(i,e),l(e)};return[()=>e,()=>P(o),e=>B(a,e),e=>x(a,e),e=>W(o,e),e=>W(a,e),(e,t)=>H(a,e,t),(c,h,g,f,L)=>{const w=O(),p=O();H(o,c,h),x(a,c)||(H(a,c,t()),H(r,c,O()),H(i,c,O()));const v=W(r,c),I=W(i,c),S=t=>{const o=s=>e.getCell(h,t,s),a=W(v,t),r=n(h,t)?s(f(o,t)):void 0;if(a!=r&&H(w,t,[a,r]),!C(L)){const e=W(I,t),s=n(h,t)?L(o,t):void 0;e!=s&&H(p,t,s)}},y=e=>{g((()=>{z(w,(([,e],t)=>H(v,t,e))),z(p,((e,t)=>H(I,t,e)))}),w,p,v,I,e),J(w),J(p)};B(v,S),e.hasTable(h)&&u(e.getRowIds(h),(e=>{x(v,e)||S(e)})),y(!0),l(c),H(d,c,U([e.addRowListener(h,null,((e,t,s)=>S(s))),e.addTableListener(h,(()=>y()))]))},c,()=>B(d,c)]},Y=(e,t)=>s(e)==n?t=>t(e):e??(()=>t??""),Z=e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))},$=(e,t,s)=>g(s)<2?V(f(s)?e:q(e,s[0],U),t):$(q(e,s[0],O),t,w(s)),_=e=>{const t=(s,n,...o)=>m(s,(s=>f(o)?e(s,n):u([o[0],null],(e=>t(W(s,e),n,...w(o))))));return t},ee=e=>{let t,s=0;const n=[],o=O();return[(a,r,i=[])=>{t??=e();const d=v(n)??""+s++;return H(o,d,[a,r,i]),$(r,d,i),d},(e,s=[],...n)=>_(z)(e,(e=>m(W(o,e),(([e])=>e(t,...s,...n)))),...s),e=>m(W(o,e),(([,t,s])=>(_(N)(t,e,...s),H(o,e),g(n)<1e3&&p(n,e),s)),(()=>[])),(e,s,n)=>m(W(o,e),(([e,,o])=>{const a=(...r)=>{const i=g(r);i==g(o)?e(t,...r,...n(r)):C(o[i])?u(s[i](...r),(e=>a(...r,e))):a(...r,o[i])};a()}))]},te=Object,se=te.keys,ne=te.isFrozen,oe=te.freeze,ae=(e,t)=>!C(((e,t)=>m(e,(e=>e[t])))(e,t)),re=(e,t)=>delete e[t],ie=(e,t)=>u(te.entries(e),(([e,s])=>t(s,e))),de=e=>f(se(e)),le=Z((e=>{let t,s,n,o=100,a=O(),r=1;const i=U(),l=O(),[c,h,L]=ee((()=>G)),w=O(),I=O(),S=[],y=[],R=(t,s)=>{r=0,e.transaction((()=>z(W(w,s),((s,n)=>z(s,((s,o)=>z(s,((s,a)=>C(s[t])?e.delCell(n,o,a,!0):e.setCell(n,o,a,s[t]))))))))),r=1},T=e=>{H(w,e),H(I,e),h(l,[e])},b=(e,t)=>u(((e,t)=>e.splice(0,t))(e,t??g(e)),T),E=()=>b(S,g(S)-o),k=e.addCellListener(null,null,null,((e,s,o,i,d,l)=>{if(r){m(t,(()=>{p(S,t),E(),b(y),t=void 0,n=1}));const e=q(a,s,O),r=q(e,o,O),c=q(r,i,(()=>[l,void 0]));c[1]=d,c[0]===d&&D(H(r,i))&&D(H(e,o))&&D(H(a,s))&&(t=v(S),n=1),J()}})),M=(e="")=>(C(t)&&(t=""+s++,H(w,t,a),j(t,e),a=O(),n=1),t),A=()=>{f(S)||(y.unshift(M()),R(0,t),t=v(S),n=1)},F=()=>{f(y)||(p(S,t),t=y.shift(),R(1,t),n=1)},J=()=>{n&&(h(i),n=0)},N=e=>{const t=M(e);return J(),t},j=(e,t)=>(P(e)&&W(I,e)!==t&&(H(I,e,t),h(l,[e])),G),P=e=>x(w,e),G={setSize:e=>(o=e,E(),G),addCheckpoint:N,setCheckpoint:j,getStore:()=>e,getCheckpointIds:()=>[[...S],t,[...y]],forEachCheckpoint:e=>B(I,e),hasCheckpoint:P,getCheckpoint:e=>W(I,e),goBackward:()=>(A(),J(),G),goForward:()=>(F(),J(),G),goTo:e=>{const s=d(S,e)?A:d(y,e)?F:null;for(;!C(s)&&e!=t;)s();return J(),G},addCheckpointIdsListener:e=>c(e,i),addCheckpointListener:(e,t)=>c(t,l,[e]),delListener:e=>(L(e),G),clear:()=>(b(S),b(y),C(t)||T(t),t=void 0,s=0,N(),G),destroy:()=>{e.delListener(k)},getListenerStats:()=>({})};return oe(G.clear())})),ce=(e,t)=>e<t?-1:1,ue=Z((e=>{const t=O(),s=O(),[n,o,a,r,i,d,u,h,g,f]=X(e,O,(e=>C(e)?"":e+"")),[L,w,p]=ee((()=>I)),v=(t,s,n)=>{const o=i(t);z(n,((t,n)=>s(n,(s=>z(t,(t=>s(t,(s=>e.forEachCell(o,t,s)))))))))},I={setIndexDefinition:(e,n,o,a,r,i=ce)=>{const g=C(r)?void 0:([e],[t])=>r(e,t);return h(e,n,((n,o,r,h,f,L)=>{let p=0;const v=U(),I=U(),S=d(e);if(z(o,(([e,t],s)=>{C(e)||(V(v,e),m(W(S,e),(t=>{N(t,s),D(t)&&(H(S,e),p=1)}))),C(t)||(V(v,t),x(S,t)||(H(S,t,U()),p=1),V(W(S,t),s),C(a)||V(I,t))})),n(),D(f)||(L?B(S,(e=>V(I,e))):B(r,(e=>m(W(h,e),(e=>V(I,e))))),z(I,(e=>{const t=(t,s)=>i(W(f,t),W(f,s),e),s=[...W(S,e)];l(s,t)||(H(S,e,U(c(s,t))),V(v,e))}))),(p||L)&&!C(g)){const t=[...S];l(t,g)||(u(e,O(c(t,g))),p=1)}p&&w(t,[e]),z(v,(t=>w(s,[e,t])))}),Y(o),m(a,Y)),I},delIndexDefinition:e=>(g(e),I),getStore:n,getIndexIds:o,forEachIndex:e=>a(((t,s)=>e(t,(e=>v(t,e,s))))),forEachSlice:(e,t)=>v(e,t,d(e)),hasIndex:r,hasSlice:(e,t)=>x(d(e),t),getTableId:i,getSliceIds:e=>P(d(e)),getSliceRowIds:(e,t)=>F(W(d(e),t)),addSliceIdsListener:(e,s)=>L(s,t,[e]),addSliceRowIdsListener:(e,t,n)=>L(n,s,[e,t]),delListener:e=>(p(e),I),destroy:f,getListenerStats:()=>({})};return oe(I)})),he=O([["avg",[(e,t)=>h(e)/t,(e,t,s)=>e+(t-e)/(s+1),(e,t,s)=>e+(e-t)/(s-1),(e,t,s,n)=>e+(t-s)/n]],["max",[e=>y(...e),(e,t)=>y(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:y(t,e)]],["min",[e=>R(...e),(e,t)=>R(t,e),(e,t)=>t==e?void 0:e,(e,t,s)=>s==e?void 0:R(t,e)]],["sum",[e=>h(e),(e,t)=>e+t,(e,t)=>e-t,(e,t,s)=>e-s+t]]]),ge=Z((e=>{const t=O(),[s,n,o,a,r,i,d,l,c,u]=X(e,M,(e=>isNaN(e)||C(e)||!0===e||!1===e||""===e?void 0:1*e)),[h,g,f]=ee((()=>L)),L={setMetricDefinition:(e,s,n,o,a,r,c)=>{const u=k(n)?[n,a,r,c]:W(he,n)??W(he,"sum");return l(e,s,((s,n,o,a,r,l)=>{let c=i(e),h=A(a);const[f,L,w,p]=u;l=l||C(c),z(n,(([e,t])=>{l||(c=C(e)?L?.(c,t,h++):C(t)?w?.(c,e,h--):p?.(c,t,e,h)),l=l||C(c)})),s(),D(a)?c=void 0:l&&(c=f(F(a),A(a))),T(c)||(c=void 0);const v=i(e);c!=v&&(d(e,c),g(t,[e],c,v))}),Y(o,1)),L},delMetricDefinition:e=>(c(e),L),getStore:s,getMetricIds:n,forEachMetric:o,hasMetric:a,getTableId:r,getMetric:i,addMetricListener:(e,s)=>h(s,t,[e]),delListener:e=>(f(e),L),destroy:u,getListenerStats:()=>({})};return oe(L)})),fe=(e,t,s,n,o)=>{let a,r=0;const i={load:async s=>{if(2!=r){r=1;const n=await t();C(n)||""==n?e.setTables(s):e.setJson(n),r=0}return i},startAutoLoad:async e=>(i.stopAutoLoad(),await i.load(e),n(i.load),i),stopAutoLoad:()=>(o(),i),save:async()=>(1!=r&&(r=2,await s(e.getJson()),r=0),i),startAutoSave:async()=>(await i.stopAutoSave().save(),a=e.addTablesListener((()=>i.save())),i),stopAutoSave:()=>(m(a,e.delListener),i),getStore:()=>e,destroy:()=>i.stopAutoLoad().stopAutoSave(),getStats:()=>({})};return oe(i)},Le=globalThis.window,we=(e,t,s)=>{let n;return fe(e,(async()=>s.getItem(t)),(async e=>s.setItem(t,e)),(e=>{n=n=>{n.storageArea===s&&n.key===t&&e()},Le.addEventListener("storage",n)}),(()=>{Le.removeEventListener("storage",n),n=void 0}))},pe=(e,t)=>we(e,t,localStorage),ve=(e,t)=>we(e,t,sessionStorage),Ie=(s,n)=>{let o;return fe(s,(async()=>{try{return await e.readFile(n,"utf8")}catch{}}),(async t=>{try{await e.writeFile(n,t,"utf8")}catch{}}),(e=>{o=t(n,e)}),(()=>{o?.close(),o=void 0}))},Se=e=>e.headers.get("ETag"),ye=(e,t,s,n)=>{let o,a;return fe(e,(async()=>{const e=await fetch(t);return a=Se(e),e.text()}),(async e=>await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:e})),(e=>{o=setInterval((async()=>{const s=await fetch(t,{method:"HEAD"}),n=Se(s);C(a)||C(n)||n==a||(a=n,e())}),1e3*n)}),(()=>{m(o,clearInterval),o=void 0}))},Re=Z((e=>{const t=O(),s=O(),n=O(),o=O(),[a,r,i,d,l,c,u,h,g,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=W(n,e)}if(s)return a;H(o,t,a)}return W(o,t)})),I=(e,t)=>m(c(e),(([,,e])=>H(e,t))),S=e=>W(t,e),y={setRelationshipDefinition:(e,a,r,i)=>(H(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(W(u,t),(e=>{N(e,n),D(e)&&H(u,t)}))),C(s)||(V(i,s),x(u,s)||H(u,s,U()),V(W(u,s),n)),V(r,n),H(l,n,s),B(W(o,e),(t=>{x(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=>(H(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)=>W(c(e)?.[0],t),getLocalRowIds:(e,t)=>F(W(c(e)?.[1],t)),getLinkedRowIds:(e,t)=>C(c(e))?[t]:F(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=H)=>{const o=(a=P(e),r=e=>!ae(t,e),a.filter(r));var a,r;return u(se(t),(n=>s(e,n,t[n]))),u(o,(t=>n(e,t))),e},be=e=>{const t=s(e);return E(t)||t==a&&T(e)?t:void 0},Ce=(e,t,s)=>C(e)||!(e=>b(e,te)&&e.constructor==te)(e)||de(e)||ne(e)?(s?.(),!1):(ie(e,((s,n)=>{t(s,n)||re(e,n)})),!de(e)),me=(e,t,s)=>H(e,t,W(e,t)==-s?void 0:s),Ee=()=>{let e,t,s=0,n=0;const o=O(),r=O(),l=O(),c=O(),h=O(),g=O(),f=O(),L=O(),w=j(U),v=j(U),y=j(),R=j(),T=j(),b=j(),M=j(),A=j(),F=j(U),[N,X,Y,Z]=ee((()=>Ge)),$=(t,s)=>(!e||x(g,s)||Ee(s))&&Ce(t,((e,t)=>_(s,t,e)),(()=>Ee(s))),_=(e,t,s,n)=>Ce(n?s:se(s,e,t),((n,o)=>m(te(e,t,o,n),(e=>(s[o]=e,!0)),(()=>!1))),(()=>Ee(e,t))),te=(t,s,n,o)=>e?m(W(W(g,t),n),(e=>be(o)!=e.type?Ee(t,s,n,o,e.default):o),(()=>Ee(t,s,n,o))):C(be(o))?Ee(t,s,n,o):o,se=(e,t,s)=>(m(W(f,t),(([n,o])=>{z(n,((t,s)=>{ae(e,s)||(e[s]=t)})),z(o,(n=>{ae(e,n)||Ee(t,s,n)}))})),e),ne=e=>Te(g,e,((e,t,s)=>{const n=O(),o=U();Te(q(g,t,O),s,((e,t,s)=>{H(e,t,s),m(s.default,(e=>H(n,t,e)),(()=>V(o,t)))})),H(f,t,[n,o])}),((e,t)=>{H(g,t),H(f,t)})),le=e=>Te(L,e,((e,t,s)=>ce(t,s)),((e,t)=>we(t))),ce=(e,t)=>Te(q(L,e,(()=>(Ie(e,1),O()))),t,((t,s,n)=>ue(e,t,s,n)),((t,s)=>pe(e,t,s))),ue=(e,t,s,n,o)=>Te(q(t,s,(()=>(Se(e,s,1),O()))),n,((t,n,o)=>he(e,s,t,n,o)),((n,a)=>ve(e,t,s,n,a,o))),he=(e,t,s,n,o)=>{x(s,n)||ye(e,t,n,1);const a=W(s,n);o!==a&&(Re(e,t,n,a,o),H(s,n,o))},ge=(e,t,s,n,o)=>m(W(t,s),(t=>he(e,s,t,n,o)),(()=>ue(e,t,s,se({[n]:o},e,s)))),fe=e=>{const t=""+s++;return x(e,t)?fe(e):t},Le=e=>W(L,e)??ce(e,{}),we=e=>ce(e,{}),pe=(e,t,s)=>ue(e,t,s,{},!0),ve=(e,t,s,n,o,a)=>{const r=W(W(f,e)?.[0],o);if(!C(r)&&!a)return he(e,s,n,o,r);const i=t=>{Re(e,s,t,W(n,t)),ye(e,s,t,-1),H(n,t)};C(r)?i(o):B(n,i),D(n)&&(Se(e,s,-1),D(H(t,s))&&(Ie(e,-1),H(L,e)))},Ie=(e,t)=>me(o,e,t),Se=(e,t,s)=>me(q(r,e,O),t,s),ye=(e,t,s,n)=>me(q(q(l,e,O),t,O),s,n),Re=(e,t,s,n,o)=>q(q(q(c,e,O),t,O),s,(()=>[n,0]))[1]=o,Ee=(e,t,s,n,o)=>(p(q(q(q(h,e,O),t,O),s,(()=>[])),n),o),ke=(e,t,s)=>m(W(W(W(c,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...i(Ne(e,t,s))])),Me=e=>D(h)||D(A[e])?0:z(e?K(h,Q):h,((t,s)=>z(t,((t,n)=>z(t,((t,o)=>X(A[e],[s,n,o],t))))))),Ae=e=>{const t=D(b[e])&&D(R[e])&&D(v[e]),s=D(M[e])&&D(T[e])&&D(y[e])&&D(w[e]);if(!t||!s){const n=e?[K(o),Q(r),K(l,Q),K(c,Q)]:[o,r,l,c];if(t||(z(n[2],((t,s)=>z(t,((t,n)=>{D(t)||X(b[e],[s,n])})))),z(n[1],((t,s)=>{D(t)||X(R[e],[s])})),D(n[0])||X(v[e])),!s){let t;z(n[3],((s,n)=>{let o;z(s,((s,a)=>{let r;z(s,(([s,i],d)=>{i!==s&&(X(M[e],[n,a,d],i,s,ke),t=o=r=1)})),r&&X(T[e],[n,a],ke)})),o&&X(y[e],[n],ke)})),t&&X(w[e],[],ke)}}},xe=e=>(Be(e),Ge),De=()=>G(L,(e=>G(e,G))),Fe=()=>P(L),Je=e=>P(W(L,e)),ze=(e,t)=>P(W(W(L,e),t)),Ne=(e,t,s)=>W(W(W(L,e),t),s),Oe=e=>xe((()=>(e=>Ce(e,$,Ee))(e)?le(e):0)),je=(e,t,s,n)=>xe((()=>m(te(e,t,s,k(n)?n(Ne(e,t,s)):n),(n=>ge(e,Le(e),t,s,n))))),Pe=()=>xe((()=>le({}))),We=(e,t,s,n)=>xe((()=>m(W(L,e),(o=>m(W(o,t),(a=>x(a,s)?ve(e,o,t,a,s,n):0)))))),Be=(e,t)=>{if(-1==n)return;He();const s=e?.();return qe(t),s},He=()=>(n++,Ge),qe=e=>(n>0&&(n--,0==n&&(t=!D(c),n=1,Me(1),t&&Ae(1),n=-1,e?.(G(c,(e=>G(e,(e=>G(e,(e=>[...e]),(([e,t])=>e===t))),de)),de),G(h,(e=>G(e,G))))&&(n=1,z(c,((e,t)=>z(e,((e,s)=>z(e,(([e],n)=>C(e)?We(t,s,n,!0):je(t,s,n,e))))))),n=-1,t=!1),X(F[0],[],t),Me(0),t&&Ae(0),X(F[1],[],t),n=0,u([c,h,o,r,l],J))),Ge),Ge={getTables:De,getTableIds:Fe,getTable:e=>G(W(L,e),G),getRowIds:Je,getRow:(e,t)=>G(W(W(L,e),t)),getCellIds:ze,getCell:Ne,hasTables:()=>!D(L),hasTable:e=>x(L,e),hasRow:(e,t)=>x(W(L,e),t),hasCell:(e,t,s)=>x(W(W(L,e),t),s),getJson:()=>I(L),getSchemaJson:()=>I(g),setTables:Oe,setTable:(e,t)=>xe((()=>$(t,e)?ce(e,t):0)),setRow:(e,t,s)=>xe((()=>_(e,t,s)?ue(e,Le(e),t,s):0)),addRow:(e,t)=>Be((()=>{let s;return _(e,s,t)&&ue(e,Le(e),s=fe(W(L,e)),t),s})),setPartialRow:(e,t,s)=>xe((()=>{if(_(e,t,s,1)){const n=Le(e);ie(s,((s,o)=>ge(e,n,t,o,s)))}})),setCell:je,setJson:e=>{try{"{}"===e?Pe():Oe(S(e))}catch{}return Ge},setSchema:t=>xe((()=>{if((e=(e=>Ce(e,(e=>Ce(e,(e=>{if(!Ce(e,((e,t)=>d(["type","default"],t))))return!1;const t=e.type;return!(!E(t)&&t!=a||(be(e.default)!=t&&re(e,"default"),0))})))))(t))&&(ne(t),!D(L))){const e=De();Pe(),Oe(e)}})),delTables:Pe,delTable:e=>xe((()=>x(L,e)?we(e):0)),delRow:(e,t)=>xe((()=>m(W(L,e),(s=>x(s,t)?pe(e,s,t):0)))),delCell:We,delSchema:()=>xe((()=>{ne({}),e=!1})),transaction:Be,startTransaction:He,finishTransaction:qe,forEachTable:e=>z(L,((t,s)=>e(s,(e=>z(t,((t,s)=>e(s,(e=>B(t,e))))))))),forEachRow:(e,t)=>z(W(L,e),((e,s)=>t(s,(t=>B(e,t))))),forEachCell:(e,t,s)=>B(W(W(L,e),t),s),addTablesListener:(e,t)=>N(e,w[t?1:0]),addTableIdsListener:(e,t)=>N(e,v[t?1:0]),addTableListener:(e,t,s)=>N(t,y[s?1:0],[e]),addRowIdsListener:(e,t,s)=>N(t,R[s?1:0],[e]),addRowListener:(e,t,s,n)=>N(s,T[n?1:0],[e,t]),addCellIdsListener:(e,t,s,n)=>N(s,b[n?1:0],[e,t]),addCellListener:(e,t,s,n,o)=>N(n,M[o?1:0],[e,t,s]),addInvalidCellListener:(e,t,s,n,o)=>N(n,A[o?1:0],[e,t,s]),addWillFinishTransactionListener:e=>N(e,F[0]),addDidFinishTransactionListener:e=>N(e,F[1]),callListener:e=>(Z(e,[Fe,Je,ze],(e=>C(e[2])?[]:i(Ne(...e)))),Ge),delListener:e=>(Y(e),Ge),getListenerStats:()=>({})};return oe(Ge)};export{le as createCheckpoints,fe as createCustomPersister,Ie as createFilePersister,ue as createIndexes,pe as createLocalPersister,ge as createMetrics,Re as createRelationships,ye as createRemotePersister,ve as createSessionPersister,Ee as createStore,ce as defaultSorter};
|
|
1
|
+
import{promises as e,watch as t}from"fs";const s=e=>typeof e,n=s(""),o=s(!0),a=s(0),r=s(s),i=e=>[e,e],d=(e,t)=>e.includes(t),l=(e,t)=>e.every(((s,n)=>0==n||t(e[n-1],s)<=0)),c=(e,t)=>e.sort(t),u=(e,t)=>e.forEach(t),h=e=>L(e,((e,t)=>e+t),0),g=e=>e.length,f=e=>0==g(e),L=(e,t,s)=>e.reduce(t,s),w=e=>e.slice(1),p=(e,t)=>e.push(t),v=e=>e.pop(),I=e=>JSON.stringify(e,((e,t)=>b(t,Map)?L([...t],((e,[t,s])=>(e[t]=s,e)),{}):t)),S=JSON.parse,y=Math.max,R=Math.min,T=isFinite,b=(e,t)=>e instanceof t,C=e=>null==e,m=(e,t,s)=>C(e)?s?.():t(e),E=e=>e==n||e==o,k=e=>s(e)==r,M=()=>{},A=e=>e.size,x=(e,t)=>e?.has(t)??!1,D=e=>C(e)||0==A(e),F=e=>[...e?.values()??[]],J=e=>e.clear(),z=(e,t)=>e?.forEach(t),N=(e,t)=>e?.delete(t),O=e=>new Map(e),j=(e=O)=>[e(),e()],P=e=>[...e?.keys()??[]],W=(e,t)=>e?.get(t),B=(e,t)=>z(e,((e,s)=>t(s,e))),H=(e,t,s)=>C(s)?(N(e,t),e):e?.set(t,s),q=(e,t,s)=>(x(e,t)||H(e,t,s()),W(e,t)),G=(e,t,s)=>{const n={},o=t??(e=>e);return z(e,((e,t)=>m(o(e),(e=>s?.(e)?0:n[t]=e)))),n},K=(e,t)=>{const s=O(),n=t??(e=>e);return z(e,((e,t)=>s.set(t,n(e)))),s},Q=e=>K(e,K),U=e=>new Set(e),V=(e,t)=>e?.add(t),X=(e,t,s)=>{const n=e.hasRow,o=O(),a=O(),r=O(),i=O(),d=O(),l=t=>m(W(d,t),(s=>{z(s,e.delListener),H(d,t)})),c=e=>{H(o,e),H(a,e),H(r,e),H(i,e),l(e)};return[()=>e,()=>P(o),e=>B(a,e),e=>x(a,e),e=>W(o,e),e=>W(a,e),(e,t)=>H(a,e,t),(c,h,g,f,L)=>{const w=O(),p=O();H(o,c,h),x(a,c)||(H(a,c,t()),H(r,c,O()),H(i,c,O()));const v=W(r,c),I=W(i,c),S=t=>{const o=s=>e.getCell(h,t,s),a=W(v,t),r=n(h,t)?s(f(o,t)):void 0;if(a!=r&&H(w,t,[a,r]),!C(L)){const e=W(I,t),s=n(h,t)?L(o,t):void 0;e!=s&&H(p,t,s)}},y=e=>{g((()=>{z(w,(([,e],t)=>H(v,t,e))),z(p,((e,t)=>H(I,t,e)))}),w,p,v,I,e),J(w),J(p)};B(v,S),e.hasTable(h)&&u(e.getRowIds(h),(e=>{x(v,e)||S(e)})),y(!0),l(c),H(d,c,U([e.addRowListener(h,null,((e,t,s)=>S(s))),e.addTableListener(h,(()=>y()))]))},c,()=>B(d,c)]},Y=(e,t)=>s(e)==n?t=>t(e):e??(()=>t??""),Z=e=>{const t=new WeakMap;return s=>(t.has(s)||t.set(s,e(s)),t.get(s))},$=(e,t,s)=>g(s)<2?V(f(s)?e:q(e,s[0],U),t):$(q(e,s[0],O),t,w(s)),_=e=>{const t=(s,n,...o)=>m(s,(s=>f(o)?e(s,n):u([o[0],null],(e=>t(W(s,e),n,...w(o))))));return t},ee=e=>{let t,s=0;const n=[],o=O();return[(a,r,i=[])=>{t??=e();const d=v(n)??""+s++;return H(o,d,[a,r,i]),$(r,d,i),d},(e,s=[],...n)=>_(z)(e,(e=>m(W(o,e),(([e])=>e(t,...s,...n)))),...s),e=>m(W(o,e),(([,t,s])=>(_(N)(t,e,...s),H(o,e),g(n)<1e3&&p(n,e),s)),(()=>[])),(e,s,n)=>m(W(o,e),(([e,,o])=>{const a=(...r)=>{const i=g(r);i==g(o)?e(t,...r,...n(r)):C(o[i])?u(s[i](...r),(e=>a(...r,e))):a(...r,o[i])};a()}))]},te=Object,se=te.keys,ne=te.isFrozen,oe=te.freeze,ae=(e,t)=>!C(((e,t)=>m(e,(e=>e[t])))(e,t)),re=(e,t)=>delete e[t],ie=(e,t)=>u(te.entries(e),(([e,s])=>t(s,e))),de=e=>f(se(e)),le=Z((e=>{let t,s,n,o=100,a=O(),r=1;const i=U(),l=O(),[c,h,L]=ee((()=>G)),w=O(),I=O(),S=[],y=[],R=(t,s)=>{r=0,e.transaction((()=>z(W(w,s),((s,n)=>z(s,((s,o)=>z(s,((s,a)=>C(s[t])?e.delCell(n,o,a,!0):e.setCell(n,o,a,s[t]))))))))),r=1},T=e=>{H(w,e),H(I,e),h(l,[e])},b=(e,t)=>u(((e,t)=>e.splice(0,t))(e,t??g(e)),T),E=()=>b(S,g(S)-o),k=e.addCellListener(null,null,null,((e,s,o,i,d,l)=>{if(r){m(t,(()=>{p(S,t),E(),b(y),t=void 0,n=1}));const e=q(a,s,O),r=q(e,o,O),c=q(r,i,(()=>[l,void 0]));c[1]=d,c[0]===d&&D(H(r,i))&&D(H(e,o))&&D(H(a,s))&&(t=v(S),n=1),J()}})),M=(e="")=>(C(t)&&(t=""+s++,H(w,t,a),j(t,e),a=O(),n=1),t),A=()=>{f(S)||(y.unshift(M()),R(0,t),t=v(S),n=1)},F=()=>{f(y)||(p(S,t),t=y.shift(),R(1,t),n=1)},J=()=>{n&&(h(i),n=0)},N=e=>{const t=M(e);return J(),t},j=(e,t)=>(P(e)&&W(I,e)!==t&&(H(I,e,t),h(l,[e])),G),P=e=>x(w,e),G={setSize:e=>(o=e,E(),G),addCheckpoint:N,setCheckpoint:j,getStore:()=>e,getCheckpointIds:()=>[[...S],t,[...y]],forEachCheckpoint:e=>B(I,e),hasCheckpoint:P,getCheckpoint:e=>W(I,e),goBackward:()=>(A(),J(),G),goForward:()=>(F(),J(),G),goTo:e=>{const s=d(S,e)?A:d(y,e)?F:null;for(;!C(s)&&e!=t;)s();return J(),G},addCheckpointIdsListener:e=>c(e,i),addCheckpointListener:(e,t)=>c(t,l,[e]),delListener:e=>(L(e),G),clear:()=>(b(S),b(y),C(t)||T(t),t=void 0,s=0,N(),G),destroy:()=>{e.delListener(k)},getListenerStats:()=>({})};return oe(G.clear())})),ce=(e,t)=>e<t?-1:1,ue=e=>""+e,he=Z((e=>{const t=O(),s=O(),[n,o,a,r,i,d,u,h,g,f]=X(e,O,(e=>C(e)?"":e+"")),[L,w,p]=ee((()=>I)),v=(t,s,n)=>{const o=i(t);z(n,((t,n)=>s(n,(s=>z(t,(t=>s(t,(s=>e.forEachCell(o,t,s)))))))))},I={setIndexDefinition:(e,n,o,a,r,i=ce)=>{const g=C(r)?void 0:([e],[t])=>r(e,t);return h(e,n,((n,o,r,h,f,L)=>{let p=0;const v=U(),I=U(),S=d(e);if(z(o,(([e,t],s)=>{C(e)||(V(v,e),m(W(S,e),(t=>{N(t,s),D(t)&&(H(S,e),p=1)}))),C(t)||(V(v,t),x(S,t)||(H(S,t,U()),p=1),V(W(S,t),s),C(a)||V(I,t))})),n(),D(f)||(L?B(S,(e=>V(I,e))):B(r,(e=>m(W(h,e),(e=>V(I,e))))),z(I,(e=>{const t=(t,s)=>i(W(f,t),W(f,s),e),s=[...W(S,e)];l(s,t)||(H(S,e,U(c(s,t))),V(v,e))}))),(p||L)&&!C(g)){const t=[...S];l(t,g)||(u(e,O(c(t,g))),p=1)}p&&w(t,[e]),z(v,(t=>w(s,[e,t])))}),Y(o),m(a,Y)),I},delIndexDefinition:e=>(g(e),I),getStore:n,getIndexIds:o,forEachIndex:e=>a(((t,s)=>e(t,(e=>v(t,e,s))))),forEachSlice:(e,t)=>v(e,t,d(e)),hasIndex:r,hasSlice:(e,t)=>x(d(e),t),getTableId:i,getSliceIds:e=>P(d(e)),getSliceRowIds:(e,t)=>F(W(d(e),t)),addSliceIdsListener:(e,s)=>L(s,t,[e]),addSliceRowIdsListener:(e,t,n)=>L(n,s,[e,t]),delListener:e=>(p(e),I),destroy:f,getListenerStats:()=>({})};return oe(I)})),ge=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]]]),fe=Z((e=>{const t=O(),[s,n,o,a,r,i,d,l,c,u]=X(e,M,(e=>isNaN(e)||C(e)||!0===e||!1===e||""===e?void 0:1*e)),[h,g,f]=ee((()=>L)),L={setMetricDefinition:(e,s,n,o,a,r,c)=>{const u=k(n)?[n,a,r,c]:W(ge,n)??W(ge,"sum");return l(e,s,((s,n,o,a,r,l)=>{let c=i(e),h=A(a);const[f,L,w,p]=u;l=l||C(c),z(n,(([e,t])=>{l||(c=C(e)?L?.(c,t,h++):C(t)?w?.(c,e,h--):p?.(c,t,e,h)),l=l||C(c)})),s(),D(a)?c=void 0:l&&(c=f(F(a),A(a))),T(c)||(c=void 0);const v=i(e);c!=v&&(d(e,c),g(t,[e],c,v))}),Y(o,1)),L},delMetricDefinition:e=>(c(e),L),getStore:s,getMetricIds:n,forEachMetric:o,hasMetric:a,getTableId:r,getMetric:i,addMetricListener:(e,s)=>h(s,t,[e]),delListener:e=>(f(e),L),destroy:u,getListenerStats:()=>({})};return oe(L)})),Le=(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)},we=globalThis.window,pe=(e,t,s)=>{let n;return Le(e,(async()=>s.getItem(t)),(async e=>s.setItem(t,e)),(e=>{n=n=>{n.storageArea===s&&n.key===t&&e()},we.addEventListener("storage",n)}),(()=>{we.removeEventListener("storage",n),n=void 0}))},ve=(e,t)=>pe(e,t,localStorage),Ie=(e,t)=>pe(e,t,sessionStorage),Se=(s,n)=>{let o;return Le(s,(async()=>{try{return await e.readFile(n,"utf8")}catch{}}),(async t=>{try{await e.writeFile(n,t,"utf8")}catch{}}),(e=>{o=t(n,e)}),(()=>{o?.close(),o=void 0}))},ye=e=>e.headers.get("ETag"),Re=(e,t,s,n)=>{let o,a;return Le(e,(async()=>{const e=await fetch(t);return a=ye(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=ye(s);C(a)||C(n)||n==a||(a=n,e())}),1e3*n)}),(()=>{m(o,clearInterval),o=void 0}))},Te=Z((e=>{const t=O(),s=O(),n=O(),o=O(),[a,r,i,d,l,c,,u,h,g]=X(e,(()=>[O(),O(),O(),O()]),(e=>C(e)?void 0:e+"")),[f,L,w]=ee((()=>S)),p=(e,t,s)=>m(c(e),(([n,,o])=>{if(!x(o,t)){const a=U();if(l(e)!=I(e))V(a,t);else{let e=t;for(;!C(e)&&!x(a,e);)V(a,e),e=W(n,e)}if(s)return a;H(o,t,a)}return W(o,t)})),v=(e,t)=>m(c(e),(([,,e])=>H(e,t))),I=e=>W(t,e),S={setRelationshipDefinition:(e,a,r,i)=>(H(t,e,r),u(e,a,((t,a)=>{const r=U(),i=U(),d=U(),[l,u]=c(e);z(a,(([t,s],n)=>{C(t)||(V(i,t),m(W(u,t),(e=>{N(e,n),D(e)&&H(u,t)}))),C(s)||(V(i,s),x(u,s)||H(u,s,U()),V(W(u,s),n)),V(r,n),H(l,n,s),B(W(o,e),(t=>{x(p(e,t),n)&&V(d,t)}))})),t(),z(r,(t=>L(s,[e,t]))),z(i,(t=>L(n,[e,t]))),z(d,(t=>{v(e,t),L(o,[e,t])}))}),Y(i)),S),delRelationshipDefinition:e=>(H(t,e),h(e),S),getStore:a,getRelationshipIds:r,forEachRelationship:t=>i((s=>t(s,(t=>e.forEachRow(l(s),t))))),hasRelationship:d,getLocalTableId:l,getRemoteTableId:I,getRemoteRowId:(e,t)=>W(c(e)?.[0],t),getLocalRowIds:(e,t)=>F(W(c(e)?.[1],t)),getLinkedRowIds:(e,t)=>C(c(e))?[t]:F(p(e,t,!0)),addRemoteRowIdListener:(e,t,n)=>f(n,s,[e,t]),addLocalRowIdsListener:(e,t,s)=>f(s,n,[e,t]),addLinkedRowIdsListener:(e,t,s)=>(p(e,t),f(s,o,[e,t])),delListener:e=>(v(...w(e)),S),destroy:g,getListenerStats:()=>({})};return oe(S)})),be=(e,t,s,n=H)=>{const o=(a=P(e),r=e=>!ae(t,e),a.filter(r));var a,r;return u(se(t),(n=>s(e,n,t[n]))),u(o,(t=>n(e,t))),e},Ce=e=>{const t=s(e);return E(t)||t==a&&T(e)?t:void 0},me=(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)),Ee=(e,t,s)=>H(e,t,W(e,t)==-s?void 0:s),ke=()=>{let e,t,s=0,n=0;const o=O(),r=O(),l=O(),c=O(),h=O(),g=O(),f=O(),L=O(),w=j(U),v=j(U),y=j(),R=j(),T=j(),b=j(),M=j(),A=j(),F=j(U),[N,X,Y,Z]=ee((()=>Ke)),$=(t,s)=>(!e||x(g,s)||ke(s))&&me(t,((e,t)=>_(s,t,e)),(()=>ke(s))),_=(e,t,s,n)=>me(n?s:se(s,e,t),((n,o)=>m(te(e,t,o,n),(e=>(s[o]=e,!0)),(()=>!1))),(()=>ke(e,t))),te=(t,s,n,o)=>e?m(W(W(g,t),n),(e=>Ce(o)!=e.type?ke(t,s,n,o,e.default):o),(()=>ke(t,s,n,o))):C(Ce(o))?ke(t,s,n,o):o,se=(e,t,s)=>(m(W(f,t),(([n,o])=>{z(n,((t,s)=>{ae(e,s)||(e[s]=t)})),z(o,(n=>{ae(e,n)||ke(t,s,n)}))})),e),ne=e=>be(g,e,((e,t,s)=>{const n=O(),o=U();be(q(g,t,O),s,((e,t,s)=>{H(e,t,s),m(s.default,(e=>H(n,t,e)),(()=>V(o,t)))})),H(f,t,[n,o])}),((e,t)=>{H(g,t),H(f,t)})),le=e=>be(L,e,((e,t,s)=>ce(t,s)),((e,t)=>pe(t))),ce=(e,t)=>be(q(L,e,(()=>(Se(e,1),O()))),t,((t,s,n)=>he(e,t,s,n)),((t,s)=>ve(e,t,s))),he=(e,t,s,n,o)=>be(q(t,s,(()=>(ye(e,s,1),O()))),n,((t,n,o)=>ge(e,s,t,n,o)),((n,a)=>Ie(e,t,s,n,a,o))),ge=(e,t,s,n,o)=>{x(s,n)||Re(e,t,n,1);const a=W(s,n);o!==a&&(Te(e,t,n,a,o),H(s,n,o))},fe=(e,t,s,n,o)=>m(W(t,s),(t=>ge(e,s,t,n,o)),(()=>he(e,t,s,se({[n]:o},e,s)))),Le=e=>{const t=""+s++;return x(e,t)?Le(e):t},we=e=>W(L,e)??ce(e,{}),pe=e=>ce(e,{}),ve=(e,t,s)=>he(e,t,s,{},!0),Ie=(e,t,s,n,o,a)=>{const r=W(W(f,e)?.[0],o);if(!C(r)&&!a)return ge(e,s,n,o,r);const i=t=>{Te(e,s,t,W(n,t)),Re(e,s,t,-1),H(n,t)};C(r)?i(o):B(n,i),D(n)&&(ye(e,s,-1),D(H(t,s))&&(Se(e,-1),H(L,e)))},Se=(e,t)=>Ee(o,e,t),ye=(e,t,s)=>Ee(q(r,e,O),t,s),Re=(e,t,s,n)=>Ee(q(q(l,e,O),t,O),s,n),Te=(e,t,s,n,o)=>q(q(q(c,e,O),t,O),s,(()=>[n,0]))[1]=o,ke=(e,t,s,n,o)=>(p(q(q(q(h,e,O),t,O),s,(()=>[])),n),o),Me=(e,t,s)=>m(W(W(W(c,e),t),s),(([e,t])=>[!0,e,t]),(()=>[!1,...i(Oe(e,t,s))])),Ae=e=>D(h)||D(A[e])?0:z(e?K(h,Q):h,((t,s)=>z(t,((t,n)=>z(t,((t,o)=>X(A[e],[s,n,o],t))))))),xe=e=>{const t=D(b[e])&&D(R[e])&&D(v[e]),s=D(M[e])&&D(T[e])&&D(y[e])&&D(w[e]);if(!t||!s){const n=e?[K(o),Q(r),K(l,Q),K(c,Q)]:[o,r,l,c];if(t||(z(n[2],((t,s)=>z(t,((t,n)=>{D(t)||X(b[e],[s,n])})))),z(n[1],((t,s)=>{D(t)||X(R[e],[s])})),D(n[0])||X(v[e])),!s){let t;z(n[3],((s,n)=>{let o;z(s,((s,a)=>{let r;z(s,(([s,i],d)=>{i!==s&&(X(M[e],[n,a,d],i,s,Me),t=o=r=1)})),r&&X(T[e],[n,a],Me)})),o&&X(y[e],[n],Me)})),t&&X(w[e],[],Me)}}},De=(e,...t)=>(He((()=>{return e(...(s=t,n=ue,s.map(n)));var s,n})),Ke),Fe=()=>G(L,(e=>G(e,G))),Je=()=>P(L),ze=e=>P(W(L,ue(e))),Ne=(e,t)=>P(W(W(L,ue(e)),ue(t))),Oe=(e,t,s)=>W(W(W(L,ue(e)),ue(t)),ue(s)),je=e=>De((()=>(e=>me(e,$,ke))(e)?le(e):0)),Pe=(e,t,s,n)=>De(((e,t,s)=>m(te(e,t,s,k(n)?n(Oe(e,t,s)):n),(n=>fe(e,we(e),t,s,n)))),e,t,s),We=()=>De((()=>le({}))),Be=(e,t,s,n)=>De(((e,t,s)=>m(W(L,e),(o=>m(W(o,t),(a=>x(a,s)?Ie(e,o,t,a,s,n):0))))),e,t,s),He=(e,t)=>{if(-1==n)return;qe();const s=e?.();return Ge(t),s},qe=()=>(n++,Ke),Ge=e=>(n>0&&(n--,0==n&&(t=!D(c),n=1,Ae(1),t&&xe(1),n=-1,e?.(G(c,(e=>G(e,(e=>G(e,(e=>[...e]),(([e,t])=>e===t))),de)),de),G(h,(e=>G(e,G))))&&(n=1,z(c,((e,t)=>z(e,((e,s)=>z(e,(([e],n)=>C(e)?Be(t,s,n,!0):Pe(t,s,n,e))))))),n=-1,t=!1),X(F[0],[],t),Ae(0),t&&xe(0),X(F[1],[],t),n=0,u([c,h,o,r,l],J))),Ke),Ke={getTables:Fe,getTableIds:Je,getTable:e=>G(W(L,ue(e)),G),getRowIds:ze,getRow:(e,t)=>G(W(W(L,ue(e)),ue(t))),getCellIds:Ne,getCell:Oe,hasTables:()=>!D(L),hasTable:e=>x(L,ue(e)),hasRow:(e,t)=>x(W(L,ue(e)),ue(t)),hasCell:(e,t,s)=>x(W(W(L,ue(e)),ue(t)),ue(s)),getJson:()=>I(L),getSchemaJson:()=>I(g),setTables:je,setTable:(e,t)=>De((e=>$(t,e)?ce(e,t):0),e),setRow:(e,t,s)=>De(((e,t)=>_(ue(e),ue(t),s)?he(ue(e),we(ue(e)),ue(t),s):0),e,t),addRow:(e,t)=>He((()=>{let s;return _(e,s,t)&&(e=ue(e),he(e,we(e),s=Le(W(L,e)),t)),s})),setPartialRow:(e,t,s)=>De(((e,t)=>{if(_(e,t,s,1)){const n=we(e);ie(s,((s,o)=>fe(e,n,t,o,s)))}}),e,t),setCell:Pe,setJson:e=>{try{"{}"===e?We():je(S(e))}catch{}return Ke},setSchema:t=>De((()=>{if((e=(e=>me(e,(e=>me(e,(e=>{if(!me(e,((e,t)=>d(["type","default"],t))))return!1;const t=e.type;return!(!E(t)&&t!=a||(Ce(e.default)!=t&&re(e,"default"),0))})))))(t))&&(ne(t),!D(L))){const e=Fe();We(),je(e)}})),delTables:We,delTable:e=>De((e=>x(L,e)?pe(e):0),e),delRow:(e,t)=>De(((e,t)=>m(W(L,e),(s=>x(s,t)?ve(e,s,t):0))),e,t),delCell:Be,delSchema:()=>De((()=>{ne({}),e=!1})),transaction:He,startTransaction:qe,finishTransaction:Ge,forEachTable:e=>z(L,((t,s)=>e(s,(e=>z(t,((t,s)=>e(s,(e=>B(t,e))))))))),forEachRow:(e,t)=>z(W(L,ue(e)),((e,s)=>t(s,(t=>B(e,t))))),forEachCell:(e,t,s)=>B(W(W(L,ue(e)),ue(t)),s),addTablesListener:(e,t)=>N(e,w[t?1:0]),addTableIdsListener:(e,t)=>N(e,v[t?1:0]),addTableListener:(e,t,s)=>N(t,y[s?1:0],[e]),addRowIdsListener:(e,t,s)=>N(t,R[s?1:0],[e]),addRowListener:(e,t,s,n)=>N(s,T[n?1:0],[e,t]),addCellIdsListener:(e,t,s,n)=>N(s,b[n?1:0],[e,t]),addCellListener:(e,t,s,n,o)=>N(n,M[o?1:0],[e,t,s]),addInvalidCellListener:(e,t,s,n,o)=>N(n,A[o?1:0],[e,t,s]),addWillFinishTransactionListener:e=>N(e,F[0]),addDidFinishTransactionListener:e=>N(e,F[1]),callListener:e=>(Z(e,[Je,ze,Ne],(e=>C(e[2])?[]:i(Oe(...e)))),Ke),delListener:e=>(Y(e),Ke),getListenerStats:()=>({})};return oe(Ke)};export{le as createCheckpoints,Le as createCustomPersister,Se as createFilePersister,he as createIndexes,ve as createLocalPersister,fe as createMetrics,Te as createRelationships,Re as createRemotePersister,Ie as createSessionPersister,ke as createStore,ce as defaultSorter,ue as id};
|
package/lib/tinybase.js.gz
CHANGED
|
Binary file
|
package/lib/umd/checkpoints.js
CHANGED
|
@@ -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)=>(a(e,t)||e
|
|
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)||g(e,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
|
package/lib/umd/common.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e,o;e=this,o=function(e){"use strict";e.defaultSorter=(e,o)=>e<o?-1:1,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?o(exports):"function"==typeof define&&define.amd?define(["exports"],o):o((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseCommon={});
|
|
1
|
+
var e,o;e=this,o=function(e){"use strict";e.defaultSorter=(e,o)=>e<o?-1:1,e.id=e=>""+e,Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof exports&&"undefined"!=typeof module?o(exports):"function"==typeof define&&define.amd?define(["exports"],o):o((e="undefined"!=typeof globalThis?globalThis:e||self).TinyBaseCommon={});
|
package/lib/umd/common.js.gz
CHANGED
|
Binary file
|
package/lib/umd/indexes.js
CHANGED
|
@@ -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)=>(f(e,t)||e
|
|
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)||b(e,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={});
|