tinybase 6.1.0-beta.3 → 6.1.0-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (233) hide show
  1. package/@types/persisters/index.d.ts +83 -40
  2. package/@types/persisters/persister-automerge/index.d.ts +4 -4
  3. package/@types/persisters/persister-automerge/with-schemas/index.d.ts +4 -4
  4. package/@types/persisters/persister-browser/index.d.ts +4 -4
  5. package/@types/persisters/persister-browser/with-schemas/index.d.ts +4 -4
  6. package/@types/persisters/persister-cr-sqlite-wasm/index.d.ts +3 -3
  7. package/@types/persisters/persister-cr-sqlite-wasm/with-schemas/index.d.ts +3 -3
  8. package/@types/persisters/persister-electric-sql/index.d.ts +3 -3
  9. package/@types/persisters/persister-electric-sql/with-schemas/index.d.ts +3 -3
  10. package/@types/persisters/persister-expo-sqlite/index.d.ts +3 -3
  11. package/@types/persisters/persister-expo-sqlite/with-schemas/index.d.ts +3 -3
  12. package/@types/persisters/persister-file/index.d.ts +2 -2
  13. package/@types/persisters/persister-file/with-schemas/index.d.ts +2 -2
  14. package/@types/persisters/persister-indexed-db/index.d.ts +2 -2
  15. package/@types/persisters/persister-indexed-db/with-schemas/index.d.ts +2 -2
  16. package/@types/persisters/persister-libsql/index.d.ts +3 -3
  17. package/@types/persisters/persister-libsql/with-schemas/index.d.ts +3 -3
  18. package/@types/persisters/persister-partykit-client/index.d.ts +2 -2
  19. package/@types/persisters/persister-partykit-client/with-schemas/index.d.ts +2 -2
  20. package/@types/persisters/persister-pglite/index.d.ts +3 -3
  21. package/@types/persisters/persister-pglite/with-schemas/index.d.ts +3 -3
  22. package/@types/persisters/persister-postgres/index.d.ts +3 -3
  23. package/@types/persisters/persister-postgres/with-schemas/index.d.ts +3 -3
  24. package/@types/persisters/persister-powersync/index.d.ts +3 -3
  25. package/@types/persisters/persister-powersync/with-schemas/index.d.ts +3 -3
  26. package/@types/persisters/persister-remote/index.d.ts +2 -2
  27. package/@types/persisters/persister-remote/with-schemas/index.d.ts +2 -2
  28. package/@types/persisters/persister-sqlite-bun/index.d.ts +159 -0
  29. package/@types/persisters/persister-sqlite-bun/with-schemas/index.d.ts +178 -0
  30. package/@types/persisters/persister-sqlite-wasm/index.d.ts +3 -3
  31. package/@types/persisters/persister-sqlite-wasm/with-schemas/index.d.ts +3 -3
  32. package/@types/persisters/persister-sqlite3/index.d.ts +3 -3
  33. package/@types/persisters/persister-sqlite3/with-schemas/index.d.ts +3 -3
  34. package/@types/persisters/persister-yjs/index.d.ts +4 -4
  35. package/@types/persisters/persister-yjs/with-schemas/index.d.ts +4 -4
  36. package/@types/persisters/with-schemas/index.d.ts +87 -42
  37. package/@types/synchronizers/index.d.ts +18 -16
  38. package/@types/synchronizers/synchronizer-broadcast-channel/index.d.ts +3 -3
  39. package/@types/synchronizers/synchronizer-broadcast-channel/with-schemas/index.d.ts +3 -3
  40. package/@types/synchronizers/synchronizer-local/index.d.ts +2 -2
  41. package/@types/synchronizers/synchronizer-local/with-schemas/index.d.ts +2 -2
  42. package/@types/synchronizers/synchronizer-ws-client/index.d.ts +5 -5
  43. package/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.ts +5 -5
  44. package/@types/synchronizers/synchronizer-ws-server/index.d.ts +37 -37
  45. package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.ts +37 -37
  46. package/@types/synchronizers/synchronizer-ws-server-simple/index.d.ts +7 -7
  47. package/@types/synchronizers/synchronizer-ws-server-simple/with-schemas/index.d.ts +7 -7
  48. package/@types/synchronizers/with-schemas/index.d.ts +18 -16
  49. package/@types/ui-react/index.d.ts +2 -2
  50. package/@types/ui-react/with-schemas/index.d.ts +2 -2
  51. package/index.js +23 -17
  52. package/mergeable-store/index.js +23 -17
  53. package/mergeable-store/with-schemas/index.js +23 -17
  54. package/min/index.js +1 -1
  55. package/min/index.js.gz +0 -0
  56. package/min/mergeable-store/index.js +1 -1
  57. package/min/mergeable-store/index.js.gz +0 -0
  58. package/min/mergeable-store/with-schemas/index.js +1 -1
  59. package/min/mergeable-store/with-schemas/index.js.gz +0 -0
  60. package/min/persisters/index.js +1 -1
  61. package/min/persisters/index.js.gz +0 -0
  62. package/min/persisters/persister-automerge/index.js +1 -1
  63. package/min/persisters/persister-automerge/index.js.gz +0 -0
  64. package/min/persisters/persister-automerge/with-schemas/index.js +1 -1
  65. package/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
  66. package/min/persisters/persister-browser/index.js +1 -1
  67. package/min/persisters/persister-browser/index.js.gz +0 -0
  68. package/min/persisters/persister-browser/with-schemas/index.js +1 -1
  69. package/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
  70. package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
  71. package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
  72. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
  73. package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
  74. package/min/persisters/persister-durable-object-storage/index.js +1 -1
  75. package/min/persisters/persister-durable-object-storage/index.js.gz +0 -0
  76. package/min/persisters/persister-durable-object-storage/with-schemas/index.js +1 -1
  77. package/min/persisters/persister-durable-object-storage/with-schemas/index.js.gz +0 -0
  78. package/min/persisters/persister-electric-sql/index.js +1 -1
  79. package/min/persisters/persister-electric-sql/index.js.gz +0 -0
  80. package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
  81. package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
  82. package/min/persisters/persister-expo-sqlite/index.js +1 -1
  83. package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
  84. package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
  85. package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
  86. package/min/persisters/persister-file/index.js +1 -1
  87. package/min/persisters/persister-file/index.js.gz +0 -0
  88. package/min/persisters/persister-file/with-schemas/index.js +1 -1
  89. package/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
  90. package/min/persisters/persister-indexed-db/index.js +1 -1
  91. package/min/persisters/persister-indexed-db/index.js.gz +0 -0
  92. package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
  93. package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
  94. package/min/persisters/persister-libsql/index.js +1 -1
  95. package/min/persisters/persister-libsql/index.js.gz +0 -0
  96. package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
  97. package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
  98. package/min/persisters/persister-partykit-client/index.js +1 -1
  99. package/min/persisters/persister-partykit-client/index.js.gz +0 -0
  100. package/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
  101. package/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
  102. package/min/persisters/persister-pglite/index.js +1 -1
  103. package/min/persisters/persister-pglite/index.js.gz +0 -0
  104. package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
  105. package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
  106. package/min/persisters/persister-postgres/index.js +1 -1
  107. package/min/persisters/persister-postgres/index.js.gz +0 -0
  108. package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
  109. package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
  110. package/min/persisters/persister-powersync/index.js +1 -1
  111. package/min/persisters/persister-powersync/index.js.gz +0 -0
  112. package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
  113. package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
  114. package/min/persisters/persister-remote/index.js +1 -1
  115. package/min/persisters/persister-remote/index.js.gz +0 -0
  116. package/min/persisters/persister-remote/with-schemas/index.js +1 -1
  117. package/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
  118. package/min/persisters/persister-sqlite-bun/index.js +1 -0
  119. package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
  120. package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -0
  121. package/min/persisters/persister-sqlite-bun/with-schemas/index.js.gz +0 -0
  122. package/min/persisters/persister-sqlite-wasm/index.js +1 -1
  123. package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
  124. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
  125. package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
  126. package/min/persisters/persister-sqlite3/index.js +1 -1
  127. package/min/persisters/persister-sqlite3/index.js.gz +0 -0
  128. package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
  129. package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
  130. package/min/persisters/persister-yjs/index.js +1 -1
  131. package/min/persisters/persister-yjs/index.js.gz +0 -0
  132. package/min/persisters/persister-yjs/with-schemas/index.js +1 -1
  133. package/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
  134. package/min/persisters/with-schemas/index.js +1 -1
  135. package/min/persisters/with-schemas/index.js.gz +0 -0
  136. package/min/store/index.js +1 -1
  137. package/min/store/index.js.gz +0 -0
  138. package/min/store/with-schemas/index.js +1 -1
  139. package/min/store/with-schemas/index.js.gz +0 -0
  140. package/min/synchronizers/index.js +1 -1
  141. package/min/synchronizers/index.js.gz +0 -0
  142. package/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
  143. package/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
  144. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
  145. package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
  146. package/min/synchronizers/synchronizer-local/index.js +1 -1
  147. package/min/synchronizers/synchronizer-local/index.js.gz +0 -0
  148. package/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
  149. package/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
  150. package/min/synchronizers/synchronizer-ws-client/index.js +1 -1
  151. package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
  152. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
  153. package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
  154. package/min/synchronizers/synchronizer-ws-server/index.js +1 -1
  155. package/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
  156. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
  157. package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
  158. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js +1 -1
  159. package/min/synchronizers/synchronizer-ws-server-durable-object/index.js.gz +0 -0
  160. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +1 -1
  161. package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js.gz +0 -0
  162. package/min/synchronizers/synchronizer-ws-server-simple/index.js +1 -1
  163. package/min/synchronizers/synchronizer-ws-server-simple/index.js.gz +0 -0
  164. package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +1 -1
  165. package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js.gz +0 -0
  166. package/min/synchronizers/with-schemas/index.js +1 -1
  167. package/min/synchronizers/with-schemas/index.js.gz +0 -0
  168. package/min/ui-react-inspector/index.js +1 -1
  169. package/min/ui-react-inspector/index.js.gz +0 -0
  170. package/min/ui-react-inspector/with-schemas/index.js +1 -1
  171. package/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
  172. package/min/with-schemas/index.js +1 -1
  173. package/min/with-schemas/index.js.gz +0 -0
  174. package/package.json +46 -6
  175. package/persisters/index.js +293 -161
  176. package/persisters/persister-automerge/index.js +55 -50
  177. package/persisters/persister-automerge/with-schemas/index.js +55 -50
  178. package/persisters/persister-browser/index.js +56 -55
  179. package/persisters/persister-browser/with-schemas/index.js +56 -55
  180. package/persisters/persister-cr-sqlite-wasm/index.js +181 -134
  181. package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +181 -134
  182. package/persisters/persister-durable-object-storage/index.js +58 -53
  183. package/persisters/persister-durable-object-storage/with-schemas/index.js +58 -53
  184. package/persisters/persister-electric-sql/index.js +181 -134
  185. package/persisters/persister-electric-sql/with-schemas/index.js +181 -134
  186. package/persisters/persister-expo-sqlite/index.js +181 -134
  187. package/persisters/persister-expo-sqlite/with-schemas/index.js +181 -134
  188. package/persisters/persister-file/index.js +55 -50
  189. package/persisters/persister-file/with-schemas/index.js +55 -50
  190. package/persisters/persister-indexed-db/index.js +82 -78
  191. package/persisters/persister-indexed-db/with-schemas/index.js +82 -78
  192. package/persisters/persister-libsql/index.js +182 -135
  193. package/persisters/persister-libsql/with-schemas/index.js +182 -135
  194. package/persisters/persister-partykit-client/index.js +56 -51
  195. package/persisters/persister-partykit-client/with-schemas/index.js +56 -51
  196. package/persisters/persister-pglite/index.js +299 -173
  197. package/persisters/persister-pglite/with-schemas/index.js +299 -173
  198. package/persisters/persister-postgres/index.js +296 -171
  199. package/persisters/persister-postgres/with-schemas/index.js +296 -171
  200. package/persisters/persister-powersync/index.js +189 -138
  201. package/persisters/persister-powersync/with-schemas/index.js +189 -138
  202. package/persisters/persister-remote/index.js +55 -50
  203. package/persisters/persister-remote/with-schemas/index.js +55 -50
  204. package/persisters/persister-sqlite-bun/index.js +1171 -0
  205. package/persisters/persister-sqlite-bun/with-schemas/index.js +1171 -0
  206. package/persisters/persister-sqlite-wasm/index.js +182 -135
  207. package/persisters/persister-sqlite-wasm/with-schemas/index.js +182 -135
  208. package/persisters/persister-sqlite3/index.js +181 -134
  209. package/persisters/persister-sqlite3/with-schemas/index.js +181 -134
  210. package/persisters/persister-yjs/index.js +55 -50
  211. package/persisters/persister-yjs/with-schemas/index.js +55 -50
  212. package/persisters/with-schemas/index.js +293 -161
  213. package/readme.md +2 -2
  214. package/releases.md +29 -1
  215. package/store/index.js +20 -15
  216. package/store/with-schemas/index.js +20 -15
  217. package/synchronizers/index.js +68 -63
  218. package/synchronizers/synchronizer-broadcast-channel/index.js +68 -63
  219. package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +68 -63
  220. package/synchronizers/synchronizer-local/index.js +68 -63
  221. package/synchronizers/synchronizer-local/with-schemas/index.js +68 -63
  222. package/synchronizers/synchronizer-ws-client/index.js +68 -63
  223. package/synchronizers/synchronizer-ws-client/with-schemas/index.js +68 -63
  224. package/synchronizers/synchronizer-ws-server/index.js +79 -70
  225. package/synchronizers/synchronizer-ws-server/with-schemas/index.js +79 -70
  226. package/synchronizers/synchronizer-ws-server-durable-object/index.js +69 -51
  227. package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +69 -51
  228. package/synchronizers/synchronizer-ws-server-simple/index.js +1 -1
  229. package/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +1 -1
  230. package/synchronizers/with-schemas/index.js +68 -63
  231. package/ui-react-inspector/index.js +68 -60
  232. package/ui-react-inspector/with-schemas/index.js +68 -60
  233. package/with-schemas/index.js +23 -17
@@ -19,6 +19,14 @@ const promiseNew = (resolver) => new promise(resolver);
19
19
  const errorNew = (message) => {
20
20
  throw new Error(message);
21
21
  };
22
+ const tryCatch = async (action, then1, then2) => {
23
+ try {
24
+ return await action();
25
+ } catch (error) {
26
+ /* istanbul ignore next */
27
+ then1?.(error);
28
+ }
29
+ };
22
30
 
23
31
  const arrayForEach = (array, cb) => array.forEach(cb);
24
32
  const arrayMap = (array, cb) => array.map(cb);
@@ -285,12 +293,7 @@ const createCustomPersister = (
285
293
  while (
286
294
  !isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
287
295
  ) {
288
- try {
289
- await action();
290
- } catch (error) {
291
- /* istanbul ignore next */
292
- onIgnoredError?.(error);
293
- }
296
+ await tryCatch(action, onIgnoredError);
294
297
  }
295
298
  mapSet(scheduleRunning, scheduleId, 0);
296
299
  }
@@ -310,21 +313,23 @@ const createCustomPersister = (
310
313
  setStatus(1 /* Loading */);
311
314
  loads++;
312
315
  await schedule(async () => {
313
- try {
314
- const content = await getPersisted();
315
- if (isArray(content)) {
316
- setContentOrChanges(content);
317
- } else if (initialContent) {
318
- setDefaultContent(initialContent);
319
- } else {
320
- errorNew(`Content is not an array: ${content}`);
321
- }
322
- } catch (error) {
323
- onIgnoredError?.(error);
324
- if (initialContent) {
325
- setDefaultContent(initialContent);
326
- }
327
- }
316
+ await tryCatch(
317
+ async () => {
318
+ const content = await getPersisted();
319
+ if (isArray(content)) {
320
+ setContentOrChanges(content);
321
+ } else if (initialContent) {
322
+ setDefaultContent(initialContent);
323
+ } else {
324
+ errorNew(`Content is not an array: ${content}`);
325
+ }
326
+ },
327
+ () => {
328
+ if (initialContent) {
329
+ setDefaultContent(initialContent);
330
+ }
331
+ },
332
+ );
328
333
  setStatus(0 /* Idle */);
329
334
  });
330
335
  }
@@ -333,29 +338,33 @@ const createCustomPersister = (
333
338
  const startAutoLoad = async (initialContent) => {
334
339
  stopAutoLoad();
335
340
  await load(initialContent);
336
- try {
337
- autoLoadHandle = await addPersisterListener(async (content, changes) => {
338
- if (changes || content) {
339
- /* istanbul ignore else */
340
- if (status != 2 /* Saving */) {
341
- setStatus(1 /* Loading */);
342
- loads++;
343
- setContentOrChanges(changes ?? content);
344
- setStatus(0 /* Idle */);
345
- }
346
- } else {
347
- await load();
348
- }
349
- });
350
- } catch (error) {
351
- /* istanbul ignore next */
352
- onIgnoredError?.(error);
353
- }
341
+ await tryCatch(
342
+ async () =>
343
+ (autoLoadHandle = await addPersisterListener(
344
+ async (content, changes) => {
345
+ if (changes || content) {
346
+ /* istanbul ignore else */
347
+ if (status != 2 /* Saving */) {
348
+ setStatus(1 /* Loading */);
349
+ loads++;
350
+ setContentOrChanges(changes ?? content);
351
+ setStatus(0 /* Idle */);
352
+ }
353
+ } else {
354
+ await load();
355
+ }
356
+ },
357
+ )),
358
+ onIgnoredError,
359
+ );
354
360
  return persister;
355
361
  };
356
- const stopAutoLoad = () => {
362
+ const stopAutoLoad = async () => {
357
363
  if (autoLoadHandle) {
358
- delPersisterListener(autoLoadHandle);
364
+ await tryCatch(
365
+ () => delPersisterListener(autoLoadHandle),
366
+ onIgnoredError,
367
+ );
359
368
  autoLoadHandle = void 0;
360
369
  }
361
370
  return persister;
@@ -367,12 +376,7 @@ const createCustomPersister = (
367
376
  setStatus(2 /* Saving */);
368
377
  saves++;
369
378
  await schedule(async () => {
370
- try {
371
- await setPersisted(getContent, changes);
372
- } catch (error) {
373
- /* istanbul ignore next */
374
- onIgnoredError?.(error);
375
- }
379
+ await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
376
380
  setStatus(0 /* Idle */);
377
381
  });
378
382
  }
@@ -389,7 +393,7 @@ const createCustomPersister = (
389
393
  });
390
394
  return persister;
391
395
  };
392
- const stopAutoSave = () => {
396
+ const stopAutoSave = async () => {
393
397
  if (autoSaveListenerId) {
394
398
  store.delListener(autoSaveListenerId);
395
399
  autoSaveListenerId = void 0;
@@ -410,9 +414,10 @@ const createCustomPersister = (
410
414
  return persister;
411
415
  };
412
416
  const getStore = () => store;
413
- const destroy = () => {
417
+ const destroy = async () => {
414
418
  arrayClear(mapGet(scheduleActions, scheduleId));
415
- return stopAutoLoad().stopAutoSave();
419
+ await persister.stopAutoLoad();
420
+ return await persister.stopAutoSave();
416
421
  };
417
422
  const getStats = () => ({loads, saves});
418
423
  const persister = {
@@ -440,7 +445,7 @@ const createCustomSynchronizer = (
440
445
  store,
441
446
  send,
442
447
  registerReceive,
443
- destroyImpl,
448
+ extraDestroy,
444
449
  requestTimeoutSeconds,
445
450
  onSend,
446
451
  onReceive,
@@ -494,12 +499,12 @@ const createCustomSynchronizer = (
494
499
  });
495
500
  tablesStamp[1] = getLatestTime(tablesStamp[1], tablesTime2);
496
501
  };
497
- const getChangesFromOtherStore = async (
502
+ const getChangesFromOtherStore = (
498
503
  otherClientId = null,
499
504
  otherContentHashes,
500
505
  transactionId = getTransactionId(),
501
- ) => {
502
- try {
506
+ ) =>
507
+ tryCatch(async () => {
503
508
  if (isUndefined(otherContentHashes)) {
504
509
  [otherContentHashes, otherClientId, transactionId] = await request(
505
510
  null,
@@ -558,10 +563,7 @@ const createCustomSynchronizer = (
558
563
  )[0],
559
564
  1,
560
565
  ];
561
- } catch (error) {
562
- onIgnoredError?.(error);
563
- }
564
- };
566
+ }, onIgnoredError);
565
567
  const getPersisted = async () => {
566
568
  const changes = await getChangesFromOtherStore();
567
569
  return changes && (!objIsEmpty(changes[0][0]) || !objIsEmpty(changes[1][0]))
@@ -585,13 +587,16 @@ const createCustomSynchronizer = (
585
587
  await persister.startAutoLoad(initialContent)
586
588
  ).startAutoSave();
587
589
  };
588
- const stopSync = () => {
590
+ const stopSync = async () => {
589
591
  syncing = 0;
590
- return persister.stopAutoLoad().stopAutoSave();
592
+ await persister.stopAutoLoad();
593
+ await persister.stopAutoSave();
594
+ return persister;
591
595
  };
592
- const destroy = () => {
593
- destroyImpl();
594
- return persister.stopSync();
596
+ const destroy = async () => {
597
+ await persister.stopSync();
598
+ extraDestroy();
599
+ return persister;
595
600
  };
596
601
  const getSynchronizerStats = () => ({sends, receives});
597
602
  const persister = createCustomPersister(
@@ -25,6 +25,14 @@ const promiseNew = (resolver) => new promise(resolver);
25
25
  const errorNew = (message) => {
26
26
  throw new Error(message);
27
27
  };
28
+ const tryCatch = async (action, then1, then2) => {
29
+ try {
30
+ return await action();
31
+ } catch (error) {
32
+ /* istanbul ignore next */
33
+ then1?.(error);
34
+ }
35
+ };
28
36
 
29
37
  const arrayForEach = (array, cb) => array.forEach(cb);
30
38
  const arrayMap = (array, cb) => array.map(cb);
@@ -312,12 +320,7 @@ const createCustomPersister = (
312
320
  while (
313
321
  !isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
314
322
  ) {
315
- try {
316
- await action();
317
- } catch (error) {
318
- /* istanbul ignore next */
319
- onIgnoredError?.(error);
320
- }
323
+ await tryCatch(action, onIgnoredError);
321
324
  }
322
325
  mapSet(scheduleRunning, scheduleId, 0);
323
326
  }
@@ -337,21 +340,23 @@ const createCustomPersister = (
337
340
  setStatus(1 /* Loading */);
338
341
  loads++;
339
342
  await schedule(async () => {
340
- try {
341
- const content = await getPersisted();
342
- if (isArray(content)) {
343
- setContentOrChanges(content);
344
- } else if (initialContent) {
345
- setDefaultContent(initialContent);
346
- } else {
347
- errorNew(`Content is not an array: ${content}`);
348
- }
349
- } catch (error) {
350
- onIgnoredError?.(error);
351
- if (initialContent) {
352
- setDefaultContent(initialContent);
353
- }
354
- }
343
+ await tryCatch(
344
+ async () => {
345
+ const content = await getPersisted();
346
+ if (isArray(content)) {
347
+ setContentOrChanges(content);
348
+ } else if (initialContent) {
349
+ setDefaultContent(initialContent);
350
+ } else {
351
+ errorNew(`Content is not an array: ${content}`);
352
+ }
353
+ },
354
+ () => {
355
+ if (initialContent) {
356
+ setDefaultContent(initialContent);
357
+ }
358
+ },
359
+ );
355
360
  setStatus(0 /* Idle */);
356
361
  });
357
362
  }
@@ -360,29 +365,33 @@ const createCustomPersister = (
360
365
  const startAutoLoad = async (initialContent) => {
361
366
  stopAutoLoad();
362
367
  await load(initialContent);
363
- try {
364
- autoLoadHandle = await addPersisterListener(async (content, changes) => {
365
- if (changes || content) {
366
- /* istanbul ignore else */
367
- if (status != 2 /* Saving */) {
368
- setStatus(1 /* Loading */);
369
- loads++;
370
- setContentOrChanges(changes ?? content);
371
- setStatus(0 /* Idle */);
372
- }
373
- } else {
374
- await load();
375
- }
376
- });
377
- } catch (error) {
378
- /* istanbul ignore next */
379
- onIgnoredError?.(error);
380
- }
368
+ await tryCatch(
369
+ async () =>
370
+ (autoLoadHandle = await addPersisterListener(
371
+ async (content, changes) => {
372
+ if (changes || content) {
373
+ /* istanbul ignore else */
374
+ if (status != 2 /* Saving */) {
375
+ setStatus(1 /* Loading */);
376
+ loads++;
377
+ setContentOrChanges(changes ?? content);
378
+ setStatus(0 /* Idle */);
379
+ }
380
+ } else {
381
+ await load();
382
+ }
383
+ },
384
+ )),
385
+ onIgnoredError,
386
+ );
381
387
  return persister;
382
388
  };
383
- const stopAutoLoad = () => {
389
+ const stopAutoLoad = async () => {
384
390
  if (autoLoadHandle) {
385
- delPersisterListener(autoLoadHandle);
391
+ await tryCatch(
392
+ () => delPersisterListener(autoLoadHandle),
393
+ onIgnoredError,
394
+ );
386
395
  autoLoadHandle = void 0;
387
396
  }
388
397
  return persister;
@@ -394,12 +403,7 @@ const createCustomPersister = (
394
403
  setStatus(2 /* Saving */);
395
404
  saves++;
396
405
  await schedule(async () => {
397
- try {
398
- await setPersisted(getContent, changes);
399
- } catch (error) {
400
- /* istanbul ignore next */
401
- onIgnoredError?.(error);
402
- }
406
+ await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
403
407
  setStatus(0 /* Idle */);
404
408
  });
405
409
  }
@@ -416,7 +420,7 @@ const createCustomPersister = (
416
420
  });
417
421
  return persister;
418
422
  };
419
- const stopAutoSave = () => {
423
+ const stopAutoSave = async () => {
420
424
  if (autoSaveListenerId) {
421
425
  store.delListener(autoSaveListenerId);
422
426
  autoSaveListenerId = void 0;
@@ -437,9 +441,10 @@ const createCustomPersister = (
437
441
  return persister;
438
442
  };
439
443
  const getStore = () => store;
440
- const destroy = () => {
444
+ const destroy = async () => {
441
445
  arrayClear(mapGet(scheduleActions, scheduleId));
442
- return stopAutoLoad().stopAutoSave();
446
+ await persister.stopAutoLoad();
447
+ return await persister.stopAutoSave();
443
448
  };
444
449
  const getStats = () => ({loads, saves});
445
450
  const persister = {
@@ -467,7 +472,7 @@ const createCustomSynchronizer = (
467
472
  store,
468
473
  send,
469
474
  registerReceive,
470
- destroyImpl,
475
+ extraDestroy,
471
476
  requestTimeoutSeconds,
472
477
  onSend,
473
478
  onReceive,
@@ -521,12 +526,12 @@ const createCustomSynchronizer = (
521
526
  });
522
527
  tablesStamp[1] = getLatestTime(tablesStamp[1], tablesTime2);
523
528
  };
524
- const getChangesFromOtherStore = async (
529
+ const getChangesFromOtherStore = (
525
530
  otherClientId = null,
526
531
  otherContentHashes,
527
532
  transactionId = getTransactionId(),
528
- ) => {
529
- try {
533
+ ) =>
534
+ tryCatch(async () => {
530
535
  if (isUndefined(otherContentHashes)) {
531
536
  [otherContentHashes, otherClientId, transactionId] = await request(
532
537
  null,
@@ -585,10 +590,7 @@ const createCustomSynchronizer = (
585
590
  )[0],
586
591
  1,
587
592
  ];
588
- } catch (error) {
589
- onIgnoredError?.(error);
590
- }
591
- };
593
+ }, onIgnoredError);
592
594
  const getPersisted = async () => {
593
595
  const changes = await getChangesFromOtherStore();
594
596
  return changes && (!objIsEmpty(changes[0][0]) || !objIsEmpty(changes[1][0]))
@@ -612,13 +614,16 @@ const createCustomSynchronizer = (
612
614
  await persister.startAutoLoad(initialContent)
613
615
  ).startAutoSave();
614
616
  };
615
- const stopSync = () => {
617
+ const stopSync = async () => {
616
618
  syncing = 0;
617
- return persister.stopAutoLoad().stopAutoSave();
619
+ await persister.stopAutoLoad();
620
+ await persister.stopAutoSave();
621
+ return persister;
618
622
  };
619
- const destroy = () => {
620
- destroyImpl();
621
- return persister.stopSync();
623
+ const destroy = async () => {
624
+ await persister.stopSync();
625
+ extraDestroy();
626
+ return persister;
622
627
  };
623
628
  const getSynchronizerStats = () => ({sends, receives});
624
629
  const persister = createCustomPersister(
@@ -25,6 +25,14 @@ const promiseNew = (resolver) => new promise(resolver);
25
25
  const errorNew = (message) => {
26
26
  throw new Error(message);
27
27
  };
28
+ const tryCatch = async (action, then1, then2) => {
29
+ try {
30
+ return await action();
31
+ } catch (error) {
32
+ /* istanbul ignore next */
33
+ then1?.(error);
34
+ }
35
+ };
28
36
 
29
37
  const arrayForEach = (array, cb) => array.forEach(cb);
30
38
  const arrayMap = (array, cb) => array.map(cb);
@@ -312,12 +320,7 @@ const createCustomPersister = (
312
320
  while (
313
321
  !isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
314
322
  ) {
315
- try {
316
- await action();
317
- } catch (error) {
318
- /* istanbul ignore next */
319
- onIgnoredError?.(error);
320
- }
323
+ await tryCatch(action, onIgnoredError);
321
324
  }
322
325
  mapSet(scheduleRunning, scheduleId, 0);
323
326
  }
@@ -337,21 +340,23 @@ const createCustomPersister = (
337
340
  setStatus(1 /* Loading */);
338
341
  loads++;
339
342
  await schedule(async () => {
340
- try {
341
- const content = await getPersisted();
342
- if (isArray(content)) {
343
- setContentOrChanges(content);
344
- } else if (initialContent) {
345
- setDefaultContent(initialContent);
346
- } else {
347
- errorNew(`Content is not an array: ${content}`);
348
- }
349
- } catch (error) {
350
- onIgnoredError?.(error);
351
- if (initialContent) {
352
- setDefaultContent(initialContent);
353
- }
354
- }
343
+ await tryCatch(
344
+ async () => {
345
+ const content = await getPersisted();
346
+ if (isArray(content)) {
347
+ setContentOrChanges(content);
348
+ } else if (initialContent) {
349
+ setDefaultContent(initialContent);
350
+ } else {
351
+ errorNew(`Content is not an array: ${content}`);
352
+ }
353
+ },
354
+ () => {
355
+ if (initialContent) {
356
+ setDefaultContent(initialContent);
357
+ }
358
+ },
359
+ );
355
360
  setStatus(0 /* Idle */);
356
361
  });
357
362
  }
@@ -360,29 +365,33 @@ const createCustomPersister = (
360
365
  const startAutoLoad = async (initialContent) => {
361
366
  stopAutoLoad();
362
367
  await load(initialContent);
363
- try {
364
- autoLoadHandle = await addPersisterListener(async (content, changes) => {
365
- if (changes || content) {
366
- /* istanbul ignore else */
367
- if (status != 2 /* Saving */) {
368
- setStatus(1 /* Loading */);
369
- loads++;
370
- setContentOrChanges(changes ?? content);
371
- setStatus(0 /* Idle */);
372
- }
373
- } else {
374
- await load();
375
- }
376
- });
377
- } catch (error) {
378
- /* istanbul ignore next */
379
- onIgnoredError?.(error);
380
- }
368
+ await tryCatch(
369
+ async () =>
370
+ (autoLoadHandle = await addPersisterListener(
371
+ async (content, changes) => {
372
+ if (changes || content) {
373
+ /* istanbul ignore else */
374
+ if (status != 2 /* Saving */) {
375
+ setStatus(1 /* Loading */);
376
+ loads++;
377
+ setContentOrChanges(changes ?? content);
378
+ setStatus(0 /* Idle */);
379
+ }
380
+ } else {
381
+ await load();
382
+ }
383
+ },
384
+ )),
385
+ onIgnoredError,
386
+ );
381
387
  return persister;
382
388
  };
383
- const stopAutoLoad = () => {
389
+ const stopAutoLoad = async () => {
384
390
  if (autoLoadHandle) {
385
- delPersisterListener(autoLoadHandle);
391
+ await tryCatch(
392
+ () => delPersisterListener(autoLoadHandle),
393
+ onIgnoredError,
394
+ );
386
395
  autoLoadHandle = void 0;
387
396
  }
388
397
  return persister;
@@ -394,12 +403,7 @@ const createCustomPersister = (
394
403
  setStatus(2 /* Saving */);
395
404
  saves++;
396
405
  await schedule(async () => {
397
- try {
398
- await setPersisted(getContent, changes);
399
- } catch (error) {
400
- /* istanbul ignore next */
401
- onIgnoredError?.(error);
402
- }
406
+ await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
403
407
  setStatus(0 /* Idle */);
404
408
  });
405
409
  }
@@ -416,7 +420,7 @@ const createCustomPersister = (
416
420
  });
417
421
  return persister;
418
422
  };
419
- const stopAutoSave = () => {
423
+ const stopAutoSave = async () => {
420
424
  if (autoSaveListenerId) {
421
425
  store.delListener(autoSaveListenerId);
422
426
  autoSaveListenerId = void 0;
@@ -437,9 +441,10 @@ const createCustomPersister = (
437
441
  return persister;
438
442
  };
439
443
  const getStore = () => store;
440
- const destroy = () => {
444
+ const destroy = async () => {
441
445
  arrayClear(mapGet(scheduleActions, scheduleId));
442
- return stopAutoLoad().stopAutoSave();
446
+ await persister.stopAutoLoad();
447
+ return await persister.stopAutoSave();
443
448
  };
444
449
  const getStats = () => ({loads, saves});
445
450
  const persister = {
@@ -467,7 +472,7 @@ const createCustomSynchronizer = (
467
472
  store,
468
473
  send,
469
474
  registerReceive,
470
- destroyImpl,
475
+ extraDestroy,
471
476
  requestTimeoutSeconds,
472
477
  onSend,
473
478
  onReceive,
@@ -521,12 +526,12 @@ const createCustomSynchronizer = (
521
526
  });
522
527
  tablesStamp[1] = getLatestTime(tablesStamp[1], tablesTime2);
523
528
  };
524
- const getChangesFromOtherStore = async (
529
+ const getChangesFromOtherStore = (
525
530
  otherClientId = null,
526
531
  otherContentHashes,
527
532
  transactionId = getTransactionId(),
528
- ) => {
529
- try {
533
+ ) =>
534
+ tryCatch(async () => {
530
535
  if (isUndefined(otherContentHashes)) {
531
536
  [otherContentHashes, otherClientId, transactionId] = await request(
532
537
  null,
@@ -585,10 +590,7 @@ const createCustomSynchronizer = (
585
590
  )[0],
586
591
  1,
587
592
  ];
588
- } catch (error) {
589
- onIgnoredError?.(error);
590
- }
591
- };
593
+ }, onIgnoredError);
592
594
  const getPersisted = async () => {
593
595
  const changes = await getChangesFromOtherStore();
594
596
  return changes && (!objIsEmpty(changes[0][0]) || !objIsEmpty(changes[1][0]))
@@ -612,13 +614,16 @@ const createCustomSynchronizer = (
612
614
  await persister.startAutoLoad(initialContent)
613
615
  ).startAutoSave();
614
616
  };
615
- const stopSync = () => {
617
+ const stopSync = async () => {
616
618
  syncing = 0;
617
- return persister.stopAutoLoad().stopAutoSave();
619
+ await persister.stopAutoLoad();
620
+ await persister.stopAutoSave();
621
+ return persister;
618
622
  };
619
- const destroy = () => {
620
- destroyImpl();
621
- return persister.stopSync();
623
+ const destroy = async () => {
624
+ await persister.stopSync();
625
+ extraDestroy();
626
+ return persister;
622
627
  };
623
628
  const getSynchronizerStats = () => ({sends, receives});
624
629
  const persister = createCustomPersister(