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.
Files changed (191) hide show
  1. package/@types/persisters/index.d.ts +82 -0
  2. package/@types/persisters/with-schemas/index.d.ts +91 -0
  3. package/@types/store/index.d.ts +123 -1
  4. package/@types/store/with-schemas/index.d.ts +159 -24
  5. package/@types/ui-react/index.d.ts +120 -0
  6. package/@types/ui-react/with-schemas/index.d.ts +179 -37
  7. package/index.js +73 -53
  8. package/mergeable-store/index.js +73 -53
  9. package/mergeable-store/with-schemas/index.js +73 -53
  10. package/min/index.js +1 -1
  11. package/min/index.js.gz +0 -0
  12. package/min/mergeable-store/index.js +1 -1
  13. package/min/mergeable-store/index.js.gz +0 -0
  14. package/min/mergeable-store/with-schemas/index.js +1 -1
  15. package/min/mergeable-store/with-schemas/index.js.gz +0 -0
  16. package/min/persisters/index.js +1 -1
  17. package/min/persisters/index.js.gz +0 -0
  18. package/min/persisters/persister-automerge/index.js +1 -1
  19. package/min/persisters/persister-automerge/index.js.gz +0 -0
  20. package/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  21. package/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  22. package/min/persisters/persister-browser/index.js +1 -1
  23. package/min/persisters/persister-browser/index.js.gz +0 -0
  24. package/min/persisters/persister-browser/with-schemas/index.js +1 -1
  25. package/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
  26. package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  27. package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  28. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  29. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  30. package/min/persisters/persister-durable-object-storage/index.js +1 -1
  31. package/min/persisters/persister-durable-object-storage/index.js.gz +0 -0
  32. package/min/persisters/persister-durable-object-storage/with-schemas/index.js +1 -1
  33. package/min/persisters/persister-durable-object-storage/with-schemas/index.js.gz +0 -0
  34. package/min/persisters/persister-electric-sql/index.js +1 -1
  35. package/min/persisters/persister-electric-sql/index.js.gz +0 -0
  36. package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  37. package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  38. package/min/persisters/persister-expo-sqlite/index.js +1 -1
  39. package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  40. package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  41. package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  42. package/min/persisters/persister-file/index.js +1 -1
  43. package/min/persisters/persister-file/index.js.gz +0 -0
  44. package/min/persisters/persister-file/with-schemas/index.js +1 -1
  45. package/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
  46. package/min/persisters/persister-indexed-db/index.js +1 -1
  47. package/min/persisters/persister-indexed-db/index.js.gz +0 -0
  48. package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
  49. package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
  50. package/min/persisters/persister-libsql/index.js +1 -1
  51. package/min/persisters/persister-libsql/index.js.gz +0 -0
  52. package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  53. package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  54. package/min/persisters/persister-partykit-client/index.js +1 -1
  55. package/min/persisters/persister-partykit-client/index.js.gz +0 -0
  56. package/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
  57. package/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
  58. package/min/persisters/persister-pglite/index.js +1 -1
  59. package/min/persisters/persister-pglite/index.js.gz +0 -0
  60. package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
  61. package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
  62. package/min/persisters/persister-postgres/index.js +1 -1
  63. package/min/persisters/persister-postgres/index.js.gz +0 -0
  64. package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  65. package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  66. package/min/persisters/persister-powersync/index.js +1 -1
  67. package/min/persisters/persister-powersync/index.js.gz +0 -0
  68. package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  69. package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  70. package/min/persisters/persister-remote/index.js +1 -1
  71. package/min/persisters/persister-remote/index.js.gz +0 -0
  72. package/min/persisters/persister-remote/with-schemas/index.js +1 -1
  73. package/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
  74. package/min/persisters/persister-sqlite-bun/index.js +1 -1
  75. package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
  76. package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -1
  77. package/min/persisters/persister-sqlite-bun/with-schemas/index.js.gz +0 -0
  78. package/min/persisters/persister-sqlite-wasm/index.js +1 -1
  79. package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  80. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  81. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  82. package/min/persisters/persister-sqlite3/index.js +1 -1
  83. package/min/persisters/persister-sqlite3/index.js.gz +0 -0
  84. package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  85. package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  86. package/min/persisters/persister-yjs/index.js +1 -1
  87. package/min/persisters/persister-yjs/index.js.gz +0 -0
  88. package/min/persisters/persister-yjs/with-schemas/index.js +1 -1
  89. package/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  90. package/min/persisters/with-schemas/index.js +1 -1
  91. package/min/persisters/with-schemas/index.js.gz +0 -0
  92. package/min/store/index.js +1 -1
  93. package/min/store/index.js.gz +0 -0
  94. package/min/store/with-schemas/index.js +1 -1
  95. package/min/store/with-schemas/index.js.gz +0 -0
  96. package/min/synchronizers/index.js +1 -1
  97. package/min/synchronizers/index.js.gz +0 -0
  98. package/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
  99. package/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  100. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
  101. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  102. package/min/synchronizers/synchronizer-local/index.js +1 -1
  103. package/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  104. package/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  105. package/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  106. package/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  107. package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  108. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  109. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  110. package/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  111. package/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  112. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  113. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  114. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js +1 -1
  115. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js.gz +0 -0
  116. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +1 -1
  117. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js.gz +0 -0
  118. package/min/synchronizers/with-schemas/index.js +1 -1
  119. package/min/synchronizers/with-schemas/index.js.gz +0 -0
  120. package/min/ui-react/index.js +1 -1
  121. package/min/ui-react/index.js.gz +0 -0
  122. package/min/ui-react/with-schemas/index.js +1 -1
  123. package/min/ui-react/with-schemas/index.js.gz +0 -0
  124. package/min/ui-react-inspector/index.js +1 -1
  125. package/min/ui-react-inspector/index.js.gz +0 -0
  126. package/min/ui-react-inspector/with-schemas/index.js +1 -1
  127. package/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  128. package/min/with-schemas/index.js +1 -1
  129. package/min/with-schemas/index.js.gz +0 -0
  130. package/package.json +6 -6
  131. package/persisters/index.js +33 -8
  132. package/persisters/persister-automerge/index.js +23 -3
  133. package/persisters/persister-automerge/with-schemas/index.js +23 -3
  134. package/persisters/persister-browser/index.js +23 -3
  135. package/persisters/persister-browser/with-schemas/index.js +23 -3
  136. package/persisters/persister-cr-sqlite-wasm/index.js +33 -8
  137. package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +33 -8
  138. package/persisters/persister-durable-object-storage/index.js +23 -3
  139. package/persisters/persister-durable-object-storage/with-schemas/index.js +23 -3
  140. package/persisters/persister-electric-sql/index.js +33 -8
  141. package/persisters/persister-electric-sql/with-schemas/index.js +33 -8
  142. package/persisters/persister-expo-sqlite/index.js +33 -8
  143. package/persisters/persister-expo-sqlite/with-schemas/index.js +33 -8
  144. package/persisters/persister-file/index.js +23 -3
  145. package/persisters/persister-file/with-schemas/index.js +23 -3
  146. package/persisters/persister-indexed-db/index.js +23 -3
  147. package/persisters/persister-indexed-db/with-schemas/index.js +23 -3
  148. package/persisters/persister-libsql/index.js +33 -8
  149. package/persisters/persister-libsql/with-schemas/index.js +33 -8
  150. package/persisters/persister-partykit-client/index.js +23 -3
  151. package/persisters/persister-partykit-client/with-schemas/index.js +23 -3
  152. package/persisters/persister-pglite/index.js +33 -8
  153. package/persisters/persister-pglite/with-schemas/index.js +33 -8
  154. package/persisters/persister-postgres/index.js +33 -8
  155. package/persisters/persister-postgres/with-schemas/index.js +33 -8
  156. package/persisters/persister-powersync/index.js +33 -8
  157. package/persisters/persister-powersync/with-schemas/index.js +33 -8
  158. package/persisters/persister-remote/index.js +23 -3
  159. package/persisters/persister-remote/with-schemas/index.js +23 -3
  160. package/persisters/persister-sqlite-bun/index.js +33 -8
  161. package/persisters/persister-sqlite-bun/with-schemas/index.js +33 -8
  162. package/persisters/persister-sqlite-wasm/index.js +33 -8
  163. package/persisters/persister-sqlite-wasm/with-schemas/index.js +33 -8
  164. package/persisters/persister-sqlite3/index.js +33 -8
  165. package/persisters/persister-sqlite3/with-schemas/index.js +33 -8
  166. package/persisters/persister-yjs/index.js +23 -3
  167. package/persisters/persister-yjs/with-schemas/index.js +23 -3
  168. package/persisters/with-schemas/index.js +33 -8
  169. package/readme.md +17 -17
  170. package/releases.md +60 -36
  171. package/store/index.js +73 -53
  172. package/store/with-schemas/index.js +73 -53
  173. package/synchronizers/index.js +27 -9
  174. package/synchronizers/synchronizer-broadcast-channel/index.js +27 -9
  175. package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +27 -9
  176. package/synchronizers/synchronizer-local/index.js +27 -9
  177. package/synchronizers/synchronizer-local/with-schemas/index.js +27 -9
  178. package/synchronizers/synchronizer-ws-client/index.js +27 -9
  179. package/synchronizers/synchronizer-ws-client/with-schemas/index.js +27 -9
  180. package/synchronizers/synchronizer-ws-server/index.js +27 -9
  181. package/synchronizers/synchronizer-ws-server/with-schemas/index.js +27 -9
  182. package/synchronizers/synchronizer-ws-server-durable-object/index.js +27 -9
  183. package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +27 -9
  184. package/synchronizers/with-schemas/index.js +27 -9
  185. package/ui-react/index.js +84 -20
  186. package/ui-react/with-schemas/index.js +84 -20
  187. package/ui-react-dom/index.js +1 -1
  188. package/ui-react-dom/with-schemas/index.js +1 -1
  189. package/ui-react-inspector/index.js +97 -57
  190. package/ui-react-inspector/with-schemas/index.js +97 -57
  191. 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 = async () => {
464
+ const destroy = () => {
445
465
  arrayClear(mapGet(scheduleActions, scheduleId));
446
- await persister.stopAutoLoad();
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 + '.' + getUniqueId(4);
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.stopAutoLoad();
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 = async () => {
464
+ const destroy = () => {
445
465
  arrayClear(mapGet(scheduleActions, scheduleId));
446
- await persister.stopAutoLoad();
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 + '.' + getUniqueId(4);
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.stopAutoLoad();
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 = async () => {
476
+ const destroy = () => {
457
477
  arrayClear(mapGet(scheduleActions, scheduleId));
458
- await persister.stopAutoLoad();
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 + '.' + getUniqueId(4);
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.stopAutoLoad();
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 = async () => {
476
+ const destroy = () => {
457
477
  arrayClear(mapGet(scheduleActions, scheduleId));
458
- await persister.stopAutoLoad();
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 + '.' + getUniqueId(4);
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.stopAutoLoad();
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 = async () => {
466
+ const destroy = () => {
447
467
  arrayClear(mapGet(scheduleActions, scheduleId));
448
- await persister.stopAutoLoad();
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 + '.' + getUniqueId(4);
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.stopAutoLoad();
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 = async () => {
466
+ const destroy = () => {
447
467
  arrayClear(mapGet(scheduleActions, scheduleId));
448
- await persister.stopAutoLoad();
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 + '.' + getUniqueId(4);
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.stopAutoLoad();
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 = async () => {
435
+ const destroy = () => {
416
436
  arrayClear(mapGet(scheduleActions, scheduleId));
417
- await persister.stopAutoLoad();
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 + '.' + getUniqueId(4);
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.stopAutoLoad();
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
- tableId,
354
- cellId,
386
+ tableIdOrArgs,
387
+ cellIdOrStoreOrStoreId,
355
388
  descending,
356
- offset = 0,
389
+ offset,
357
390
  limit,
358
391
  storeOrStoreId,
359
392
  ) =>
360
- useListenable(
361
- SORTED_ROW_IDS,
362
- useStoreOrStoreById(storeOrStoreId),
363
- 1 /* Array */,
364
- [tableId, cellId, descending, offset, limit],
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
- tableId,
737
- cellId,
738
- descending,
739
- offset,
740
- limit,
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
- useListener(
747
- SORTED_ROW_IDS,
748
- useStoreOrStoreById(storeOrStoreId),
749
- listener,
750
- listenerDeps,
751
- [tableId, cellId, descending, offset, limit],
752
- mutator,
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,