tinybase 6.1.0-beta.5 → 6.2.0-beta.0
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/@types/persisters/index.d.ts +82 -0
- package/@types/persisters/with-schemas/index.d.ts +91 -0
- package/@types/store/index.d.ts +123 -1
- package/@types/store/with-schemas/index.d.ts +159 -24
- package/@types/ui-react/index.d.ts +120 -0
- package/@types/ui-react/with-schemas/index.d.ts +179 -37
- package/index.js +73 -53
- package/mergeable-store/index.js +73 -53
- package/mergeable-store/with-schemas/index.js +73 -53
- package/min/index.js +1 -1
- package/min/index.js.gz +0 -0
- package/min/mergeable-store/index.js +1 -1
- package/min/mergeable-store/index.js.gz +0 -0
- package/min/mergeable-store/with-schemas/index.js +1 -1
- package/min/mergeable-store/with-schemas/index.js.gz +0 -0
- package/min/persisters/index.js +1 -1
- package/min/persisters/index.js.gz +0 -0
- package/min/persisters/persister-automerge/index.js +1 -1
- package/min/persisters/persister-automerge/index.js.gz +0 -0
- package/min/persisters/persister-automerge/with-schemas/index.js +1 -1
- package/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-browser/index.js +1 -1
- package/min/persisters/persister-browser/index.js.gz +0 -0
- package/min/persisters/persister-browser/with-schemas/index.js +1 -1
- package/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
- package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
- package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
- package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-durable-object-storage/index.js +1 -1
- package/min/persisters/persister-durable-object-storage/index.js.gz +0 -0
- package/min/persisters/persister-durable-object-storage/with-schemas/index.js +1 -1
- package/min/persisters/persister-durable-object-storage/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-electric-sql/index.js +1 -1
- package/min/persisters/persister-electric-sql/index.js.gz +0 -0
- package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
- package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-expo-sqlite/index.js +1 -1
- package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
- package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
- package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-file/index.js +1 -1
- package/min/persisters/persister-file/index.js.gz +0 -0
- package/min/persisters/persister-file/with-schemas/index.js +1 -1
- package/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-indexed-db/index.js +1 -1
- package/min/persisters/persister-indexed-db/index.js.gz +0 -0
- package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
- package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-libsql/index.js +1 -1
- package/min/persisters/persister-libsql/index.js.gz +0 -0
- package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
- package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-partykit-client/index.js +1 -1
- package/min/persisters/persister-partykit-client/index.js.gz +0 -0
- package/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
- package/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-pglite/index.js +1 -1
- package/min/persisters/persister-pglite/index.js.gz +0 -0
- package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
- package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-postgres/index.js +1 -1
- package/min/persisters/persister-postgres/index.js.gz +0 -0
- package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
- package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-powersync/index.js +1 -1
- package/min/persisters/persister-powersync/index.js.gz +0 -0
- package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
- package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-remote/index.js +1 -1
- package/min/persisters/persister-remote/index.js.gz +0 -0
- package/min/persisters/persister-remote/with-schemas/index.js +1 -1
- package/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-bun/index.js +1 -1
- package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite-bun/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-wasm/index.js +1 -1
- package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite3/index.js +1 -1
- package/min/persisters/persister-sqlite3/index.js.gz +0 -0
- package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-yjs/index.js +1 -1
- package/min/persisters/persister-yjs/index.js.gz +0 -0
- package/min/persisters/persister-yjs/with-schemas/index.js +1 -1
- package/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
- package/min/persisters/with-schemas/index.js +1 -1
- package/min/persisters/with-schemas/index.js.gz +0 -0
- package/min/store/index.js +1 -1
- package/min/store/index.js.gz +0 -0
- package/min/store/with-schemas/index.js +1 -1
- package/min/store/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/index.js +1 -1
- package/min/synchronizers/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
- package/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-local/index.js +1 -1
- package/min/synchronizers/synchronizer-local/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-client/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server-durable-object/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-durable-object/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/with-schemas/index.js +1 -1
- package/min/synchronizers/with-schemas/index.js.gz +0 -0
- package/min/ui-react/index.js +1 -1
- package/min/ui-react/index.js.gz +0 -0
- package/min/ui-react/with-schemas/index.js +1 -1
- package/min/ui-react/with-schemas/index.js.gz +0 -0
- package/min/ui-react-inspector/index.js +1 -1
- package/min/ui-react-inspector/index.js.gz +0 -0
- package/min/ui-react-inspector/with-schemas/index.js +1 -1
- package/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
- package/min/with-schemas/index.js +1 -1
- package/min/with-schemas/index.js.gz +0 -0
- package/package.json +6 -6
- package/persisters/index.js +33 -8
- package/persisters/persister-automerge/index.js +23 -3
- package/persisters/persister-automerge/with-schemas/index.js +23 -3
- package/persisters/persister-browser/index.js +23 -3
- package/persisters/persister-browser/with-schemas/index.js +23 -3
- package/persisters/persister-cr-sqlite-wasm/index.js +33 -8
- package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +33 -8
- package/persisters/persister-durable-object-storage/index.js +23 -3
- package/persisters/persister-durable-object-storage/with-schemas/index.js +23 -3
- package/persisters/persister-electric-sql/index.js +33 -8
- package/persisters/persister-electric-sql/with-schemas/index.js +33 -8
- package/persisters/persister-expo-sqlite/index.js +33 -8
- package/persisters/persister-expo-sqlite/with-schemas/index.js +33 -8
- package/persisters/persister-file/index.js +23 -3
- package/persisters/persister-file/with-schemas/index.js +23 -3
- package/persisters/persister-indexed-db/index.js +23 -3
- package/persisters/persister-indexed-db/with-schemas/index.js +23 -3
- package/persisters/persister-libsql/index.js +33 -8
- package/persisters/persister-libsql/with-schemas/index.js +33 -8
- package/persisters/persister-partykit-client/index.js +23 -3
- package/persisters/persister-partykit-client/with-schemas/index.js +23 -3
- package/persisters/persister-pglite/index.js +33 -8
- package/persisters/persister-pglite/with-schemas/index.js +33 -8
- package/persisters/persister-postgres/index.js +33 -8
- package/persisters/persister-postgres/with-schemas/index.js +33 -8
- package/persisters/persister-powersync/index.js +33 -8
- package/persisters/persister-powersync/with-schemas/index.js +33 -8
- package/persisters/persister-remote/index.js +23 -3
- package/persisters/persister-remote/with-schemas/index.js +23 -3
- package/persisters/persister-sqlite-bun/index.js +33 -8
- package/persisters/persister-sqlite-bun/with-schemas/index.js +33 -8
- package/persisters/persister-sqlite-wasm/index.js +33 -8
- package/persisters/persister-sqlite-wasm/with-schemas/index.js +33 -8
- package/persisters/persister-sqlite3/index.js +33 -8
- package/persisters/persister-sqlite3/with-schemas/index.js +33 -8
- package/persisters/persister-yjs/index.js +23 -3
- package/persisters/persister-yjs/with-schemas/index.js +23 -3
- package/persisters/with-schemas/index.js +33 -8
- package/readme.md +17 -17
- package/releases.md +60 -36
- package/store/index.js +73 -53
- package/store/with-schemas/index.js +73 -53
- package/synchronizers/index.js +27 -9
- package/synchronizers/synchronizer-broadcast-channel/index.js +27 -9
- package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +27 -9
- package/synchronizers/synchronizer-local/index.js +27 -9
- package/synchronizers/synchronizer-local/with-schemas/index.js +27 -9
- package/synchronizers/synchronizer-ws-client/index.js +27 -9
- package/synchronizers/synchronizer-ws-client/with-schemas/index.js +27 -9
- package/synchronizers/synchronizer-ws-server/index.js +27 -9
- package/synchronizers/synchronizer-ws-server/with-schemas/index.js +27 -9
- package/synchronizers/synchronizer-ws-server-durable-object/index.js +27 -9
- package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +27 -9
- package/synchronizers/with-schemas/index.js +27 -9
- package/ui-react/index.js +84 -20
- package/ui-react/with-schemas/index.js +84 -20
- package/ui-react-dom/index.js +1 -1
- package/ui-react-dom/with-schemas/index.js +1 -1
- package/ui-react-inspector/index.js +97 -57
- package/ui-react-inspector/with-schemas/index.js +97 -57
- package/with-schemas/index.js +73 -53
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const EMPTY_STRING = '';
|
|
2
|
+
const DOT = '.';
|
|
2
3
|
const UTF8 = 'utf8';
|
|
3
4
|
const OPEN = 'open';
|
|
4
5
|
const MESSAGE = 'message';
|
|
@@ -428,6 +429,25 @@ const createCustomPersister = (
|
|
|
428
429
|
return persister;
|
|
429
430
|
};
|
|
430
431
|
const isAutoSaving = () => !isUndefined(autoSaveListenerId);
|
|
432
|
+
const startAutoPersisting = async (
|
|
433
|
+
initialContent,
|
|
434
|
+
startSaveFirst = false,
|
|
435
|
+
) => {
|
|
436
|
+
const [call1, call2] = startSaveFirst
|
|
437
|
+
? [startAutoSave, startAutoLoad]
|
|
438
|
+
: [startAutoLoad, startAutoSave];
|
|
439
|
+
await call1(initialContent);
|
|
440
|
+
await call2(initialContent);
|
|
441
|
+
return persister;
|
|
442
|
+
};
|
|
443
|
+
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
444
|
+
const [call1, call2] = stopSaveFirst
|
|
445
|
+
? [stopAutoSave, stopAutoLoad]
|
|
446
|
+
: [stopAutoLoad, stopAutoSave];
|
|
447
|
+
await call1();
|
|
448
|
+
await call2();
|
|
449
|
+
return persister;
|
|
450
|
+
};
|
|
431
451
|
const getStatus = () => status;
|
|
432
452
|
const addStatusListener = (listener) =>
|
|
433
453
|
addListener(listener, statusListeners);
|
|
@@ -441,10 +461,9 @@ const createCustomPersister = (
|
|
|
441
461
|
return persister;
|
|
442
462
|
};
|
|
443
463
|
const getStore = () => store;
|
|
444
|
-
const destroy =
|
|
464
|
+
const destroy = () => {
|
|
445
465
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
446
|
-
|
|
447
|
-
return await persister.stopAutoSave();
|
|
466
|
+
return stopAutoPersisting();
|
|
448
467
|
};
|
|
449
468
|
const getStats = () => ({loads, saves});
|
|
450
469
|
const persister = {
|
|
@@ -456,6 +475,8 @@ const createCustomPersister = (
|
|
|
456
475
|
startAutoSave,
|
|
457
476
|
stopAutoSave,
|
|
458
477
|
isAutoSaving,
|
|
478
|
+
startAutoPersisting,
|
|
479
|
+
stopAutoPersisting,
|
|
459
480
|
getStatus,
|
|
460
481
|
addStatusListener,
|
|
461
482
|
delListener,
|
|
@@ -492,7 +513,7 @@ const createCustomSynchronizer = (
|
|
|
492
513
|
};
|
|
493
514
|
const request = async (toClientId, message, body, transactionId) =>
|
|
494
515
|
promiseNew((resolve, reject) => {
|
|
495
|
-
const requestId = transactionId +
|
|
516
|
+
const requestId = transactionId + DOT + getUniqueId(4);
|
|
496
517
|
const timeout = startTimeout(() => {
|
|
497
518
|
collDel(pendingRequests, requestId);
|
|
498
519
|
reject(
|
|
@@ -610,14 +631,11 @@ const createCustomSynchronizer = (
|
|
|
610
631
|
const delPersisterListener = () => (persisterListener = void 0);
|
|
611
632
|
const startSync = async (initialContent) => {
|
|
612
633
|
syncing = 1;
|
|
613
|
-
return await (
|
|
614
|
-
await persister.startAutoLoad(initialContent)
|
|
615
|
-
).startAutoSave();
|
|
634
|
+
return await persister.startAutoPersisting(initialContent);
|
|
616
635
|
};
|
|
617
636
|
const stopSync = async () => {
|
|
618
637
|
syncing = 0;
|
|
619
|
-
await persister.
|
|
620
|
-
await persister.stopAutoSave();
|
|
638
|
+
await persister.stopAutoPersisting();
|
|
621
639
|
return persister;
|
|
622
640
|
};
|
|
623
641
|
const destroy = async () => {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const EMPTY_STRING = '';
|
|
2
|
+
const DOT = '.';
|
|
2
3
|
const UTF8 = 'utf8';
|
|
3
4
|
const OPEN = 'open';
|
|
4
5
|
const MESSAGE = 'message';
|
|
@@ -428,6 +429,25 @@ const createCustomPersister = (
|
|
|
428
429
|
return persister;
|
|
429
430
|
};
|
|
430
431
|
const isAutoSaving = () => !isUndefined(autoSaveListenerId);
|
|
432
|
+
const startAutoPersisting = async (
|
|
433
|
+
initialContent,
|
|
434
|
+
startSaveFirst = false,
|
|
435
|
+
) => {
|
|
436
|
+
const [call1, call2] = startSaveFirst
|
|
437
|
+
? [startAutoSave, startAutoLoad]
|
|
438
|
+
: [startAutoLoad, startAutoSave];
|
|
439
|
+
await call1(initialContent);
|
|
440
|
+
await call2(initialContent);
|
|
441
|
+
return persister;
|
|
442
|
+
};
|
|
443
|
+
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
444
|
+
const [call1, call2] = stopSaveFirst
|
|
445
|
+
? [stopAutoSave, stopAutoLoad]
|
|
446
|
+
: [stopAutoLoad, stopAutoSave];
|
|
447
|
+
await call1();
|
|
448
|
+
await call2();
|
|
449
|
+
return persister;
|
|
450
|
+
};
|
|
431
451
|
const getStatus = () => status;
|
|
432
452
|
const addStatusListener = (listener) =>
|
|
433
453
|
addListener(listener, statusListeners);
|
|
@@ -441,10 +461,9 @@ const createCustomPersister = (
|
|
|
441
461
|
return persister;
|
|
442
462
|
};
|
|
443
463
|
const getStore = () => store;
|
|
444
|
-
const destroy =
|
|
464
|
+
const destroy = () => {
|
|
445
465
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
446
|
-
|
|
447
|
-
return await persister.stopAutoSave();
|
|
466
|
+
return stopAutoPersisting();
|
|
448
467
|
};
|
|
449
468
|
const getStats = () => ({loads, saves});
|
|
450
469
|
const persister = {
|
|
@@ -456,6 +475,8 @@ const createCustomPersister = (
|
|
|
456
475
|
startAutoSave,
|
|
457
476
|
stopAutoSave,
|
|
458
477
|
isAutoSaving,
|
|
478
|
+
startAutoPersisting,
|
|
479
|
+
stopAutoPersisting,
|
|
459
480
|
getStatus,
|
|
460
481
|
addStatusListener,
|
|
461
482
|
delListener,
|
|
@@ -492,7 +513,7 @@ const createCustomSynchronizer = (
|
|
|
492
513
|
};
|
|
493
514
|
const request = async (toClientId, message, body, transactionId) =>
|
|
494
515
|
promiseNew((resolve, reject) => {
|
|
495
|
-
const requestId = transactionId +
|
|
516
|
+
const requestId = transactionId + DOT + getUniqueId(4);
|
|
496
517
|
const timeout = startTimeout(() => {
|
|
497
518
|
collDel(pendingRequests, requestId);
|
|
498
519
|
reject(
|
|
@@ -610,14 +631,11 @@ const createCustomSynchronizer = (
|
|
|
610
631
|
const delPersisterListener = () => (persisterListener = void 0);
|
|
611
632
|
const startSync = async (initialContent) => {
|
|
612
633
|
syncing = 1;
|
|
613
|
-
return await (
|
|
614
|
-
await persister.startAutoLoad(initialContent)
|
|
615
|
-
).startAutoSave();
|
|
634
|
+
return await persister.startAutoPersisting(initialContent);
|
|
616
635
|
};
|
|
617
636
|
const stopSync = async () => {
|
|
618
637
|
syncing = 0;
|
|
619
|
-
await persister.
|
|
620
|
-
await persister.stopAutoSave();
|
|
638
|
+
await persister.stopAutoPersisting();
|
|
621
639
|
return persister;
|
|
622
640
|
};
|
|
623
641
|
const destroy = async () => {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const EMPTY_STRING = '';
|
|
2
|
+
const DOT = '.';
|
|
2
3
|
const UTF8 = 'utf8';
|
|
3
4
|
const MESSAGE = 'message';
|
|
4
5
|
const ERROR = 'error';
|
|
@@ -440,6 +441,25 @@ const createCustomPersister = (
|
|
|
440
441
|
return persister;
|
|
441
442
|
};
|
|
442
443
|
const isAutoSaving = () => !isUndefined(autoSaveListenerId);
|
|
444
|
+
const startAutoPersisting = async (
|
|
445
|
+
initialContent,
|
|
446
|
+
startSaveFirst = false,
|
|
447
|
+
) => {
|
|
448
|
+
const [call1, call2] = startSaveFirst
|
|
449
|
+
? [startAutoSave, startAutoLoad]
|
|
450
|
+
: [startAutoLoad, startAutoSave];
|
|
451
|
+
await call1(initialContent);
|
|
452
|
+
await call2(initialContent);
|
|
453
|
+
return persister;
|
|
454
|
+
};
|
|
455
|
+
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
456
|
+
const [call1, call2] = stopSaveFirst
|
|
457
|
+
? [stopAutoSave, stopAutoLoad]
|
|
458
|
+
: [stopAutoLoad, stopAutoSave];
|
|
459
|
+
await call1();
|
|
460
|
+
await call2();
|
|
461
|
+
return persister;
|
|
462
|
+
};
|
|
443
463
|
const getStatus = () => status;
|
|
444
464
|
const addStatusListener = (listener) =>
|
|
445
465
|
addListener(listener, statusListeners);
|
|
@@ -453,10 +473,9 @@ const createCustomPersister = (
|
|
|
453
473
|
return persister;
|
|
454
474
|
};
|
|
455
475
|
const getStore = () => store;
|
|
456
|
-
const destroy =
|
|
476
|
+
const destroy = () => {
|
|
457
477
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
458
|
-
|
|
459
|
-
return await persister.stopAutoSave();
|
|
478
|
+
return stopAutoPersisting();
|
|
460
479
|
};
|
|
461
480
|
const getStats = () => ({loads, saves});
|
|
462
481
|
const persister = {
|
|
@@ -468,6 +487,8 @@ const createCustomPersister = (
|
|
|
468
487
|
startAutoSave,
|
|
469
488
|
stopAutoSave,
|
|
470
489
|
isAutoSaving,
|
|
490
|
+
startAutoPersisting,
|
|
491
|
+
stopAutoPersisting,
|
|
471
492
|
getStatus,
|
|
472
493
|
addStatusListener,
|
|
473
494
|
delListener,
|
|
@@ -503,7 +524,7 @@ const createCustomSynchronizer = (
|
|
|
503
524
|
};
|
|
504
525
|
const request = async (toClientId, message, body, transactionId) =>
|
|
505
526
|
promiseNew((resolve, reject) => {
|
|
506
|
-
const requestId = transactionId +
|
|
527
|
+
const requestId = transactionId + DOT + getUniqueId(4);
|
|
507
528
|
const timeout = startTimeout(() => {
|
|
508
529
|
collDel(pendingRequests, requestId);
|
|
509
530
|
reject(
|
|
@@ -621,14 +642,11 @@ const createCustomSynchronizer = (
|
|
|
621
642
|
const delPersisterListener = () => (persisterListener = void 0);
|
|
622
643
|
const startSync = async (initialContent) => {
|
|
623
644
|
syncing = 1;
|
|
624
|
-
return await (
|
|
625
|
-
await persister.startAutoLoad(initialContent)
|
|
626
|
-
).startAutoSave();
|
|
645
|
+
return await persister.startAutoPersisting(initialContent);
|
|
627
646
|
};
|
|
628
647
|
const stopSync = async () => {
|
|
629
648
|
syncing = 0;
|
|
630
|
-
await persister.
|
|
631
|
-
await persister.stopAutoSave();
|
|
649
|
+
await persister.stopAutoPersisting();
|
|
632
650
|
return persister;
|
|
633
651
|
};
|
|
634
652
|
const destroy = async () => {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const EMPTY_STRING = '';
|
|
2
|
+
const DOT = '.';
|
|
2
3
|
const UTF8 = 'utf8';
|
|
3
4
|
const MESSAGE = 'message';
|
|
4
5
|
const ERROR = 'error';
|
|
@@ -440,6 +441,25 @@ const createCustomPersister = (
|
|
|
440
441
|
return persister;
|
|
441
442
|
};
|
|
442
443
|
const isAutoSaving = () => !isUndefined(autoSaveListenerId);
|
|
444
|
+
const startAutoPersisting = async (
|
|
445
|
+
initialContent,
|
|
446
|
+
startSaveFirst = false,
|
|
447
|
+
) => {
|
|
448
|
+
const [call1, call2] = startSaveFirst
|
|
449
|
+
? [startAutoSave, startAutoLoad]
|
|
450
|
+
: [startAutoLoad, startAutoSave];
|
|
451
|
+
await call1(initialContent);
|
|
452
|
+
await call2(initialContent);
|
|
453
|
+
return persister;
|
|
454
|
+
};
|
|
455
|
+
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
456
|
+
const [call1, call2] = stopSaveFirst
|
|
457
|
+
? [stopAutoSave, stopAutoLoad]
|
|
458
|
+
: [stopAutoLoad, stopAutoSave];
|
|
459
|
+
await call1();
|
|
460
|
+
await call2();
|
|
461
|
+
return persister;
|
|
462
|
+
};
|
|
443
463
|
const getStatus = () => status;
|
|
444
464
|
const addStatusListener = (listener) =>
|
|
445
465
|
addListener(listener, statusListeners);
|
|
@@ -453,10 +473,9 @@ const createCustomPersister = (
|
|
|
453
473
|
return persister;
|
|
454
474
|
};
|
|
455
475
|
const getStore = () => store;
|
|
456
|
-
const destroy =
|
|
476
|
+
const destroy = () => {
|
|
457
477
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
458
|
-
|
|
459
|
-
return await persister.stopAutoSave();
|
|
478
|
+
return stopAutoPersisting();
|
|
460
479
|
};
|
|
461
480
|
const getStats = () => ({loads, saves});
|
|
462
481
|
const persister = {
|
|
@@ -468,6 +487,8 @@ const createCustomPersister = (
|
|
|
468
487
|
startAutoSave,
|
|
469
488
|
stopAutoSave,
|
|
470
489
|
isAutoSaving,
|
|
490
|
+
startAutoPersisting,
|
|
491
|
+
stopAutoPersisting,
|
|
471
492
|
getStatus,
|
|
472
493
|
addStatusListener,
|
|
473
494
|
delListener,
|
|
@@ -503,7 +524,7 @@ const createCustomSynchronizer = (
|
|
|
503
524
|
};
|
|
504
525
|
const request = async (toClientId, message, body, transactionId) =>
|
|
505
526
|
promiseNew((resolve, reject) => {
|
|
506
|
-
const requestId = transactionId +
|
|
527
|
+
const requestId = transactionId + DOT + getUniqueId(4);
|
|
507
528
|
const timeout = startTimeout(() => {
|
|
508
529
|
collDel(pendingRequests, requestId);
|
|
509
530
|
reject(
|
|
@@ -621,14 +642,11 @@ const createCustomSynchronizer = (
|
|
|
621
642
|
const delPersisterListener = () => (persisterListener = void 0);
|
|
622
643
|
const startSync = async (initialContent) => {
|
|
623
644
|
syncing = 1;
|
|
624
|
-
return await (
|
|
625
|
-
await persister.startAutoLoad(initialContent)
|
|
626
|
-
).startAutoSave();
|
|
645
|
+
return await persister.startAutoPersisting(initialContent);
|
|
627
646
|
};
|
|
628
647
|
const stopSync = async () => {
|
|
629
648
|
syncing = 0;
|
|
630
|
-
await persister.
|
|
631
|
-
await persister.stopAutoSave();
|
|
649
|
+
await persister.stopAutoPersisting();
|
|
632
650
|
return persister;
|
|
633
651
|
};
|
|
634
652
|
const destroy = async () => {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {DurableObject} from 'cloudflare:workers';
|
|
2
2
|
|
|
3
3
|
const EMPTY_STRING = '';
|
|
4
|
+
const DOT = '.';
|
|
4
5
|
const UNDEFINED = '\uFFFC';
|
|
5
6
|
const strMatch = (str, regex) => str?.match(regex);
|
|
6
7
|
const strSplit = (str, separator = EMPTY_STRING, limit) =>
|
|
@@ -430,6 +431,25 @@ const createCustomPersister = (
|
|
|
430
431
|
return persister;
|
|
431
432
|
};
|
|
432
433
|
const isAutoSaving = () => !isUndefined(autoSaveListenerId);
|
|
434
|
+
const startAutoPersisting = async (
|
|
435
|
+
initialContent,
|
|
436
|
+
startSaveFirst = false,
|
|
437
|
+
) => {
|
|
438
|
+
const [call1, call2] = startSaveFirst
|
|
439
|
+
? [startAutoSave, startAutoLoad]
|
|
440
|
+
: [startAutoLoad, startAutoSave];
|
|
441
|
+
await call1(initialContent);
|
|
442
|
+
await call2(initialContent);
|
|
443
|
+
return persister;
|
|
444
|
+
};
|
|
445
|
+
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
446
|
+
const [call1, call2] = stopSaveFirst
|
|
447
|
+
? [stopAutoSave, stopAutoLoad]
|
|
448
|
+
: [stopAutoLoad, stopAutoSave];
|
|
449
|
+
await call1();
|
|
450
|
+
await call2();
|
|
451
|
+
return persister;
|
|
452
|
+
};
|
|
433
453
|
const getStatus = () => status;
|
|
434
454
|
const addStatusListener = (listener) =>
|
|
435
455
|
addListener(listener, statusListeners);
|
|
@@ -443,10 +463,9 @@ const createCustomPersister = (
|
|
|
443
463
|
return persister;
|
|
444
464
|
};
|
|
445
465
|
const getStore = () => store;
|
|
446
|
-
const destroy =
|
|
466
|
+
const destroy = () => {
|
|
447
467
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
448
|
-
|
|
449
|
-
return await persister.stopAutoSave();
|
|
468
|
+
return stopAutoPersisting();
|
|
450
469
|
};
|
|
451
470
|
const getStats = () => ({loads, saves});
|
|
452
471
|
const persister = {
|
|
@@ -458,6 +477,8 @@ const createCustomPersister = (
|
|
|
458
477
|
startAutoSave,
|
|
459
478
|
stopAutoSave,
|
|
460
479
|
isAutoSaving,
|
|
480
|
+
startAutoPersisting,
|
|
481
|
+
stopAutoPersisting,
|
|
461
482
|
getStatus,
|
|
462
483
|
addStatusListener,
|
|
463
484
|
delListener,
|
|
@@ -493,7 +514,7 @@ const createCustomSynchronizer = (
|
|
|
493
514
|
};
|
|
494
515
|
const request = async (toClientId, message, body, transactionId) =>
|
|
495
516
|
promiseNew((resolve, reject) => {
|
|
496
|
-
const requestId = transactionId +
|
|
517
|
+
const requestId = transactionId + DOT + getUniqueId(4);
|
|
497
518
|
const timeout = startTimeout(() => {
|
|
498
519
|
collDel(pendingRequests, requestId);
|
|
499
520
|
reject(
|
|
@@ -611,14 +632,11 @@ const createCustomSynchronizer = (
|
|
|
611
632
|
const delPersisterListener = () => (persisterListener = void 0);
|
|
612
633
|
const startSync = async (initialContent) => {
|
|
613
634
|
syncing = 1;
|
|
614
|
-
return await (
|
|
615
|
-
await persister.startAutoLoad(initialContent)
|
|
616
|
-
).startAutoSave();
|
|
635
|
+
return await persister.startAutoPersisting(initialContent);
|
|
617
636
|
};
|
|
618
637
|
const stopSync = async () => {
|
|
619
638
|
syncing = 0;
|
|
620
|
-
await persister.
|
|
621
|
-
await persister.stopAutoSave();
|
|
639
|
+
await persister.stopAutoPersisting();
|
|
622
640
|
return persister;
|
|
623
641
|
};
|
|
624
642
|
const destroy = async () => {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {DurableObject} from 'cloudflare:workers';
|
|
2
2
|
|
|
3
3
|
const EMPTY_STRING = '';
|
|
4
|
+
const DOT = '.';
|
|
4
5
|
const UNDEFINED = '\uFFFC';
|
|
5
6
|
const strMatch = (str, regex) => str?.match(regex);
|
|
6
7
|
const strSplit = (str, separator = EMPTY_STRING, limit) =>
|
|
@@ -430,6 +431,25 @@ const createCustomPersister = (
|
|
|
430
431
|
return persister;
|
|
431
432
|
};
|
|
432
433
|
const isAutoSaving = () => !isUndefined(autoSaveListenerId);
|
|
434
|
+
const startAutoPersisting = async (
|
|
435
|
+
initialContent,
|
|
436
|
+
startSaveFirst = false,
|
|
437
|
+
) => {
|
|
438
|
+
const [call1, call2] = startSaveFirst
|
|
439
|
+
? [startAutoSave, startAutoLoad]
|
|
440
|
+
: [startAutoLoad, startAutoSave];
|
|
441
|
+
await call1(initialContent);
|
|
442
|
+
await call2(initialContent);
|
|
443
|
+
return persister;
|
|
444
|
+
};
|
|
445
|
+
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
446
|
+
const [call1, call2] = stopSaveFirst
|
|
447
|
+
? [stopAutoSave, stopAutoLoad]
|
|
448
|
+
: [stopAutoLoad, stopAutoSave];
|
|
449
|
+
await call1();
|
|
450
|
+
await call2();
|
|
451
|
+
return persister;
|
|
452
|
+
};
|
|
433
453
|
const getStatus = () => status;
|
|
434
454
|
const addStatusListener = (listener) =>
|
|
435
455
|
addListener(listener, statusListeners);
|
|
@@ -443,10 +463,9 @@ const createCustomPersister = (
|
|
|
443
463
|
return persister;
|
|
444
464
|
};
|
|
445
465
|
const getStore = () => store;
|
|
446
|
-
const destroy =
|
|
466
|
+
const destroy = () => {
|
|
447
467
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
448
|
-
|
|
449
|
-
return await persister.stopAutoSave();
|
|
468
|
+
return stopAutoPersisting();
|
|
450
469
|
};
|
|
451
470
|
const getStats = () => ({loads, saves});
|
|
452
471
|
const persister = {
|
|
@@ -458,6 +477,8 @@ const createCustomPersister = (
|
|
|
458
477
|
startAutoSave,
|
|
459
478
|
stopAutoSave,
|
|
460
479
|
isAutoSaving,
|
|
480
|
+
startAutoPersisting,
|
|
481
|
+
stopAutoPersisting,
|
|
461
482
|
getStatus,
|
|
462
483
|
addStatusListener,
|
|
463
484
|
delListener,
|
|
@@ -493,7 +514,7 @@ const createCustomSynchronizer = (
|
|
|
493
514
|
};
|
|
494
515
|
const request = async (toClientId, message, body, transactionId) =>
|
|
495
516
|
promiseNew((resolve, reject) => {
|
|
496
|
-
const requestId = transactionId +
|
|
517
|
+
const requestId = transactionId + DOT + getUniqueId(4);
|
|
497
518
|
const timeout = startTimeout(() => {
|
|
498
519
|
collDel(pendingRequests, requestId);
|
|
499
520
|
reject(
|
|
@@ -611,14 +632,11 @@ const createCustomSynchronizer = (
|
|
|
611
632
|
const delPersisterListener = () => (persisterListener = void 0);
|
|
612
633
|
const startSync = async (initialContent) => {
|
|
613
634
|
syncing = 1;
|
|
614
|
-
return await (
|
|
615
|
-
await persister.startAutoLoad(initialContent)
|
|
616
|
-
).startAutoSave();
|
|
635
|
+
return await persister.startAutoPersisting(initialContent);
|
|
617
636
|
};
|
|
618
637
|
const stopSync = async () => {
|
|
619
638
|
syncing = 0;
|
|
620
|
-
await persister.
|
|
621
|
-
await persister.stopAutoSave();
|
|
639
|
+
await persister.stopAutoPersisting();
|
|
622
640
|
return persister;
|
|
623
641
|
};
|
|
624
642
|
const destroy = async () => {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const EMPTY_STRING = '';
|
|
2
|
+
const DOT = '.';
|
|
2
3
|
const strSplit = (str, separator = EMPTY_STRING, limit) =>
|
|
3
4
|
str.split(separator, limit);
|
|
4
5
|
|
|
@@ -399,6 +400,25 @@ const createCustomPersister = (
|
|
|
399
400
|
return persister;
|
|
400
401
|
};
|
|
401
402
|
const isAutoSaving = () => !isUndefined(autoSaveListenerId);
|
|
403
|
+
const startAutoPersisting = async (
|
|
404
|
+
initialContent,
|
|
405
|
+
startSaveFirst = false,
|
|
406
|
+
) => {
|
|
407
|
+
const [call1, call2] = startSaveFirst
|
|
408
|
+
? [startAutoSave, startAutoLoad]
|
|
409
|
+
: [startAutoLoad, startAutoSave];
|
|
410
|
+
await call1(initialContent);
|
|
411
|
+
await call2(initialContent);
|
|
412
|
+
return persister;
|
|
413
|
+
};
|
|
414
|
+
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
415
|
+
const [call1, call2] = stopSaveFirst
|
|
416
|
+
? [stopAutoSave, stopAutoLoad]
|
|
417
|
+
: [stopAutoLoad, stopAutoSave];
|
|
418
|
+
await call1();
|
|
419
|
+
await call2();
|
|
420
|
+
return persister;
|
|
421
|
+
};
|
|
402
422
|
const getStatus = () => status;
|
|
403
423
|
const addStatusListener = (listener) =>
|
|
404
424
|
addListener(listener, statusListeners);
|
|
@@ -412,10 +432,9 @@ const createCustomPersister = (
|
|
|
412
432
|
return persister;
|
|
413
433
|
};
|
|
414
434
|
const getStore = () => store;
|
|
415
|
-
const destroy =
|
|
435
|
+
const destroy = () => {
|
|
416
436
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
417
|
-
|
|
418
|
-
return await persister.stopAutoSave();
|
|
437
|
+
return stopAutoPersisting();
|
|
419
438
|
};
|
|
420
439
|
const getStats = () => ({loads, saves});
|
|
421
440
|
const persister = {
|
|
@@ -427,6 +446,8 @@ const createCustomPersister = (
|
|
|
427
446
|
startAutoSave,
|
|
428
447
|
stopAutoSave,
|
|
429
448
|
isAutoSaving,
|
|
449
|
+
startAutoPersisting,
|
|
450
|
+
stopAutoPersisting,
|
|
430
451
|
getStatus,
|
|
431
452
|
addStatusListener,
|
|
432
453
|
delListener,
|
|
@@ -473,7 +494,7 @@ const createCustomSynchronizer = (
|
|
|
473
494
|
};
|
|
474
495
|
const request = async (toClientId, message, body, transactionId) =>
|
|
475
496
|
promiseNew((resolve, reject) => {
|
|
476
|
-
const requestId = transactionId +
|
|
497
|
+
const requestId = transactionId + DOT + getUniqueId(4);
|
|
477
498
|
const timeout = startTimeout(() => {
|
|
478
499
|
collDel(pendingRequests, requestId);
|
|
479
500
|
reject(
|
|
@@ -591,14 +612,11 @@ const createCustomSynchronizer = (
|
|
|
591
612
|
const delPersisterListener = () => (persisterListener = void 0);
|
|
592
613
|
const startSync = async (initialContent) => {
|
|
593
614
|
syncing = 1;
|
|
594
|
-
return await (
|
|
595
|
-
await persister.startAutoLoad(initialContent)
|
|
596
|
-
).startAutoSave();
|
|
615
|
+
return await persister.startAutoPersisting(initialContent);
|
|
597
616
|
};
|
|
598
617
|
const stopSync = async () => {
|
|
599
618
|
syncing = 0;
|
|
600
|
-
await persister.
|
|
601
|
-
await persister.stopAutoSave();
|
|
619
|
+
await persister.stopAutoPersisting();
|
|
602
620
|
return persister;
|
|
603
621
|
};
|
|
604
622
|
const destroy = async () => {
|
package/ui-react/index.js
CHANGED
|
@@ -294,6 +294,39 @@ const useCheckpointAction = (checkpointsOrCheckpointsId, action, arg) => {
|
|
|
294
294
|
[checkpoints, action, arg],
|
|
295
295
|
);
|
|
296
296
|
};
|
|
297
|
+
const useSortedRowIdsImpl = (
|
|
298
|
+
tableId,
|
|
299
|
+
cellId,
|
|
300
|
+
descending,
|
|
301
|
+
offset,
|
|
302
|
+
limit,
|
|
303
|
+
storeOrStoreId,
|
|
304
|
+
) =>
|
|
305
|
+
useListenable(
|
|
306
|
+
SORTED_ROW_IDS,
|
|
307
|
+
useStoreOrStoreById(storeOrStoreId),
|
|
308
|
+
1 /* Array */,
|
|
309
|
+
[tableId, cellId, descending, offset, limit],
|
|
310
|
+
);
|
|
311
|
+
const useSortedRowIdsListenerImpl = (
|
|
312
|
+
tableId,
|
|
313
|
+
cellId,
|
|
314
|
+
descending,
|
|
315
|
+
offset,
|
|
316
|
+
limit,
|
|
317
|
+
listener,
|
|
318
|
+
listenerDeps,
|
|
319
|
+
mutator,
|
|
320
|
+
storeOrStoreId,
|
|
321
|
+
) =>
|
|
322
|
+
useListener(
|
|
323
|
+
SORTED_ROW_IDS,
|
|
324
|
+
useStoreOrStoreById(storeOrStoreId),
|
|
325
|
+
listener,
|
|
326
|
+
listenerDeps,
|
|
327
|
+
[tableId, cellId, descending, offset, limit],
|
|
328
|
+
mutator,
|
|
329
|
+
);
|
|
297
330
|
const useCreateStore = (create, createDeps = EMPTY_ARRAY) =>
|
|
298
331
|
useMemo(create, createDeps);
|
|
299
332
|
const useStoreIds = () => useThingIds(Offsets.Store);
|
|
@@ -350,18 +383,31 @@ const useRowIds = (tableId, storeOrStoreId) =>
|
|
|
350
383
|
tableId,
|
|
351
384
|
]);
|
|
352
385
|
const useSortedRowIds = (
|
|
353
|
-
|
|
354
|
-
|
|
386
|
+
tableIdOrArgs,
|
|
387
|
+
cellIdOrStoreOrStoreId,
|
|
355
388
|
descending,
|
|
356
|
-
offset
|
|
389
|
+
offset,
|
|
357
390
|
limit,
|
|
358
391
|
storeOrStoreId,
|
|
359
392
|
) =>
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
393
|
+
useSortedRowIdsImpl(
|
|
394
|
+
...(isObject(tableIdOrArgs)
|
|
395
|
+
? [
|
|
396
|
+
tableIdOrArgs.tableId,
|
|
397
|
+
tableIdOrArgs.cellId,
|
|
398
|
+
tableIdOrArgs.descending ?? false,
|
|
399
|
+
tableIdOrArgs.offset ?? 0,
|
|
400
|
+
tableIdOrArgs.limit,
|
|
401
|
+
cellIdOrStoreOrStoreId,
|
|
402
|
+
]
|
|
403
|
+
: [
|
|
404
|
+
tableIdOrArgs,
|
|
405
|
+
cellIdOrStoreOrStoreId,
|
|
406
|
+
descending,
|
|
407
|
+
offset,
|
|
408
|
+
limit,
|
|
409
|
+
storeOrStoreId,
|
|
410
|
+
]),
|
|
365
411
|
);
|
|
366
412
|
const useHasRow = (tableId, rowId, storeOrStoreId) =>
|
|
367
413
|
useListenable(ROW, useStoreOrStoreById(storeOrStoreId), 4 /* Boolean */, [
|
|
@@ -733,23 +779,40 @@ const useRowIdsListener = (
|
|
|
733
779
|
mutator,
|
|
734
780
|
);
|
|
735
781
|
const useSortedRowIdsListener = (
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
782
|
+
tableIdOrArgs,
|
|
783
|
+
cellIdOrListener,
|
|
784
|
+
descendingOrListenerDeps,
|
|
785
|
+
offsetOrMutator,
|
|
786
|
+
limitOrStoreOrStoreId,
|
|
741
787
|
listener,
|
|
742
788
|
listenerDeps,
|
|
743
789
|
mutator,
|
|
744
790
|
storeOrStoreId,
|
|
745
791
|
) =>
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
792
|
+
useSortedRowIdsListenerImpl(
|
|
793
|
+
...(isObject(tableIdOrArgs)
|
|
794
|
+
? [
|
|
795
|
+
tableIdOrArgs.tableId,
|
|
796
|
+
tableIdOrArgs.cellId,
|
|
797
|
+
tableIdOrArgs.descending ?? false,
|
|
798
|
+
tableIdOrArgs.offset ?? 0,
|
|
799
|
+
tableIdOrArgs.limit,
|
|
800
|
+
cellIdOrListener,
|
|
801
|
+
descendingOrListenerDeps,
|
|
802
|
+
offsetOrMutator,
|
|
803
|
+
limitOrStoreOrStoreId,
|
|
804
|
+
]
|
|
805
|
+
: [
|
|
806
|
+
tableIdOrArgs,
|
|
807
|
+
cellIdOrListener,
|
|
808
|
+
descendingOrListenerDeps,
|
|
809
|
+
offsetOrMutator,
|
|
810
|
+
limitOrStoreOrStoreId,
|
|
811
|
+
listener,
|
|
812
|
+
listenerDeps,
|
|
813
|
+
mutator,
|
|
814
|
+
storeOrStoreId,
|
|
815
|
+
]),
|
|
753
816
|
);
|
|
754
817
|
const useHasRowListener = (
|
|
755
818
|
tableId,
|
|
@@ -2231,6 +2294,7 @@ export {
|
|
|
2231
2294
|
useSliceRowIdsListener,
|
|
2232
2295
|
useSortedRowIds,
|
|
2233
2296
|
useSortedRowIdsListener,
|
|
2297
|
+
useSortedRowIdsListenerImpl,
|
|
2234
2298
|
useStartTransactionListener,
|
|
2235
2299
|
useStore,
|
|
2236
2300
|
useStoreIds,
|