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
@@ -20,10 +20,19 @@ const isArray = (thing) => Array.isArray(thing);
20
20
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
21
21
  const size = (arrayOrString) => arrayOrString.length;
22
22
  const test = (regex, subject) => regex.test(subject);
23
+ const noop = () => {};
23
24
  const promiseNew = (resolver) => new promise(resolver);
24
25
  const errorNew = (message) => {
25
26
  throw new Error(message);
26
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
+ };
27
36
 
28
37
  const arrayForEach = (array, cb) => array.forEach(cb);
29
38
  const arrayMap = (array, cb) => array.map(cb);
@@ -313,9 +322,7 @@ const createCustomPersister = (
313
322
  while (
314
323
  !isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
315
324
  ) {
316
- try {
317
- await action();
318
- } catch (error) {}
325
+ await tryCatch(action, onIgnoredError);
319
326
  }
320
327
  mapSet(scheduleRunning, scheduleId, 0);
321
328
  }
@@ -335,20 +342,23 @@ const createCustomPersister = (
335
342
  setStatus(1 /* Loading */);
336
343
  loads++;
337
344
  await schedule(async () => {
338
- try {
339
- const content = await getPersisted();
340
- if (isArray(content)) {
341
- setContentOrChanges(content);
342
- } else if (initialContent) {
343
- setDefaultContent(initialContent);
344
- } else {
345
- errorNew(`Content is not an array: ${content}`);
346
- }
347
- } catch (error) {
348
- if (initialContent) {
349
- setDefaultContent(initialContent);
350
- }
351
- }
345
+ await tryCatch(
346
+ async () => {
347
+ const content = await getPersisted();
348
+ if (isArray(content)) {
349
+ setContentOrChanges(content);
350
+ } else if (initialContent) {
351
+ setDefaultContent(initialContent);
352
+ } else {
353
+ errorNew(`Content is not an array: ${content}`);
354
+ }
355
+ },
356
+ () => {
357
+ if (initialContent) {
358
+ setDefaultContent(initialContent);
359
+ }
360
+ },
361
+ );
352
362
  setStatus(0 /* Idle */);
353
363
  });
354
364
  }
@@ -357,26 +367,33 @@ const createCustomPersister = (
357
367
  const startAutoLoad = async (initialContent) => {
358
368
  stopAutoLoad();
359
369
  await load(initialContent);
360
- try {
361
- autoLoadHandle = await addPersisterListener(async (content, changes) => {
362
- if (changes || content) {
363
- /* istanbul ignore else */
364
- if (status != 2 /* Saving */) {
365
- setStatus(1 /* Loading */);
366
- loads++;
367
- setContentOrChanges(changes ?? content);
368
- setStatus(0 /* Idle */);
369
- }
370
- } else {
371
- await load();
372
- }
373
- });
374
- } catch (error) {}
370
+ await tryCatch(
371
+ async () =>
372
+ (autoLoadHandle = await addPersisterListener(
373
+ async (content, changes) => {
374
+ if (changes || content) {
375
+ /* istanbul ignore else */
376
+ if (status != 2 /* Saving */) {
377
+ setStatus(1 /* Loading */);
378
+ loads++;
379
+ setContentOrChanges(changes ?? content);
380
+ setStatus(0 /* Idle */);
381
+ }
382
+ } else {
383
+ await load();
384
+ }
385
+ },
386
+ )),
387
+ onIgnoredError,
388
+ );
375
389
  return persister;
376
390
  };
377
- const stopAutoLoad = () => {
391
+ const stopAutoLoad = async () => {
378
392
  if (autoLoadHandle) {
379
- delPersisterListener(autoLoadHandle);
393
+ await tryCatch(
394
+ () => delPersisterListener(autoLoadHandle),
395
+ onIgnoredError,
396
+ );
380
397
  autoLoadHandle = void 0;
381
398
  }
382
399
  return persister;
@@ -388,9 +405,7 @@ const createCustomPersister = (
388
405
  setStatus(2 /* Saving */);
389
406
  saves++;
390
407
  await schedule(async () => {
391
- try {
392
- await setPersisted(getContent, changes);
393
- } catch (error) {}
408
+ await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
394
409
  setStatus(0 /* Idle */);
395
410
  });
396
411
  }
@@ -407,7 +422,7 @@ const createCustomPersister = (
407
422
  });
408
423
  return persister;
409
424
  };
410
- const stopAutoSave = () => {
425
+ const stopAutoSave = async () => {
411
426
  if (autoSaveListenerId) {
412
427
  store.delListener(autoSaveListenerId);
413
428
  autoSaveListenerId = void 0;
@@ -428,9 +443,10 @@ const createCustomPersister = (
428
443
  return persister;
429
444
  };
430
445
  const getStore = () => store;
431
- const destroy = () => {
446
+ const destroy = async () => {
432
447
  arrayClear(mapGet(scheduleActions, scheduleId));
433
- return stopAutoLoad().stopAutoSave();
448
+ await persister.stopAutoLoad();
449
+ return await persister.stopAutoSave();
434
450
  };
435
451
  const getStats = () => ({loads, saves});
436
452
  const persister = {
@@ -458,7 +474,7 @@ const createCustomSynchronizer = (
458
474
  store,
459
475
  send,
460
476
  registerReceive,
461
- destroyImpl,
477
+ extraDestroy,
462
478
  requestTimeoutSeconds,
463
479
  onSend,
464
480
  onReceive,
@@ -511,12 +527,12 @@ const createCustomSynchronizer = (
511
527
  });
512
528
  tablesStamp[1] = getLatestTime(tablesStamp[1], tablesTime2);
513
529
  };
514
- const getChangesFromOtherStore = async (
530
+ const getChangesFromOtherStore = (
515
531
  otherClientId = null,
516
532
  otherContentHashes,
517
533
  transactionId = getTransactionId(),
518
- ) => {
519
- try {
534
+ ) =>
535
+ tryCatch(async () => {
520
536
  if (isUndefined(otherContentHashes)) {
521
537
  [otherContentHashes, otherClientId, transactionId] = await request(
522
538
  null,
@@ -575,8 +591,7 @@ const createCustomSynchronizer = (
575
591
  )[0],
576
592
  1,
577
593
  ];
578
- } catch (error) {}
579
- };
594
+ }, onIgnoredError);
580
595
  const getPersisted = async () => {
581
596
  const changes = await getChangesFromOtherStore();
582
597
  return changes && (!objIsEmpty(changes[0][0]) || !objIsEmpty(changes[1][0]))
@@ -600,12 +615,15 @@ const createCustomSynchronizer = (
600
615
  await persister.startAutoLoad(initialContent)
601
616
  ).startAutoSave();
602
617
  };
603
- const stopSync = () => {
618
+ const stopSync = async () => {
604
619
  syncing = 0;
605
- return persister.stopAutoLoad().stopAutoSave();
620
+ await persister.stopAutoLoad();
621
+ await persister.stopAutoSave();
622
+ return persister;
606
623
  };
607
- const destroy = () => {
608
- return persister.stopSync();
624
+ const destroy = async () => {
625
+ await persister.stopSync();
626
+ return persister;
609
627
  };
610
628
  const getSynchronizerStats = () => ({sends, receives});
611
629
  const persister = createCustomPersister(
@@ -704,7 +722,7 @@ class WsServerDurableObject extends DurableObject {
704
722
  (receive) =>
705
723
  (this.#serverClientSend = (payload) =>
706
724
  receivePayload(payload, receive)),
707
- () => {},
725
+ noop,
708
726
  1,
709
727
  );
710
728
  await persister.load();
@@ -20,10 +20,19 @@ const isArray = (thing) => Array.isArray(thing);
20
20
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
21
21
  const size = (arrayOrString) => arrayOrString.length;
22
22
  const test = (regex, subject) => regex.test(subject);
23
+ const noop = () => {};
23
24
  const promiseNew = (resolver) => new promise(resolver);
24
25
  const errorNew = (message) => {
25
26
  throw new Error(message);
26
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
+ };
27
36
 
28
37
  const arrayForEach = (array, cb) => array.forEach(cb);
29
38
  const arrayMap = (array, cb) => array.map(cb);
@@ -313,9 +322,7 @@ const createCustomPersister = (
313
322
  while (
314
323
  !isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
315
324
  ) {
316
- try {
317
- await action();
318
- } catch (error) {}
325
+ await tryCatch(action, onIgnoredError);
319
326
  }
320
327
  mapSet(scheduleRunning, scheduleId, 0);
321
328
  }
@@ -335,20 +342,23 @@ const createCustomPersister = (
335
342
  setStatus(1 /* Loading */);
336
343
  loads++;
337
344
  await schedule(async () => {
338
- try {
339
- const content = await getPersisted();
340
- if (isArray(content)) {
341
- setContentOrChanges(content);
342
- } else if (initialContent) {
343
- setDefaultContent(initialContent);
344
- } else {
345
- errorNew(`Content is not an array: ${content}`);
346
- }
347
- } catch (error) {
348
- if (initialContent) {
349
- setDefaultContent(initialContent);
350
- }
351
- }
345
+ await tryCatch(
346
+ async () => {
347
+ const content = await getPersisted();
348
+ if (isArray(content)) {
349
+ setContentOrChanges(content);
350
+ } else if (initialContent) {
351
+ setDefaultContent(initialContent);
352
+ } else {
353
+ errorNew(`Content is not an array: ${content}`);
354
+ }
355
+ },
356
+ () => {
357
+ if (initialContent) {
358
+ setDefaultContent(initialContent);
359
+ }
360
+ },
361
+ );
352
362
  setStatus(0 /* Idle */);
353
363
  });
354
364
  }
@@ -357,26 +367,33 @@ const createCustomPersister = (
357
367
  const startAutoLoad = async (initialContent) => {
358
368
  stopAutoLoad();
359
369
  await load(initialContent);
360
- try {
361
- autoLoadHandle = await addPersisterListener(async (content, changes) => {
362
- if (changes || content) {
363
- /* istanbul ignore else */
364
- if (status != 2 /* Saving */) {
365
- setStatus(1 /* Loading */);
366
- loads++;
367
- setContentOrChanges(changes ?? content);
368
- setStatus(0 /* Idle */);
369
- }
370
- } else {
371
- await load();
372
- }
373
- });
374
- } catch (error) {}
370
+ await tryCatch(
371
+ async () =>
372
+ (autoLoadHandle = await addPersisterListener(
373
+ async (content, changes) => {
374
+ if (changes || content) {
375
+ /* istanbul ignore else */
376
+ if (status != 2 /* Saving */) {
377
+ setStatus(1 /* Loading */);
378
+ loads++;
379
+ setContentOrChanges(changes ?? content);
380
+ setStatus(0 /* Idle */);
381
+ }
382
+ } else {
383
+ await load();
384
+ }
385
+ },
386
+ )),
387
+ onIgnoredError,
388
+ );
375
389
  return persister;
376
390
  };
377
- const stopAutoLoad = () => {
391
+ const stopAutoLoad = async () => {
378
392
  if (autoLoadHandle) {
379
- delPersisterListener(autoLoadHandle);
393
+ await tryCatch(
394
+ () => delPersisterListener(autoLoadHandle),
395
+ onIgnoredError,
396
+ );
380
397
  autoLoadHandle = void 0;
381
398
  }
382
399
  return persister;
@@ -388,9 +405,7 @@ const createCustomPersister = (
388
405
  setStatus(2 /* Saving */);
389
406
  saves++;
390
407
  await schedule(async () => {
391
- try {
392
- await setPersisted(getContent, changes);
393
- } catch (error) {}
408
+ await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
394
409
  setStatus(0 /* Idle */);
395
410
  });
396
411
  }
@@ -407,7 +422,7 @@ const createCustomPersister = (
407
422
  });
408
423
  return persister;
409
424
  };
410
- const stopAutoSave = () => {
425
+ const stopAutoSave = async () => {
411
426
  if (autoSaveListenerId) {
412
427
  store.delListener(autoSaveListenerId);
413
428
  autoSaveListenerId = void 0;
@@ -428,9 +443,10 @@ const createCustomPersister = (
428
443
  return persister;
429
444
  };
430
445
  const getStore = () => store;
431
- const destroy = () => {
446
+ const destroy = async () => {
432
447
  arrayClear(mapGet(scheduleActions, scheduleId));
433
- return stopAutoLoad().stopAutoSave();
448
+ await persister.stopAutoLoad();
449
+ return await persister.stopAutoSave();
434
450
  };
435
451
  const getStats = () => ({loads, saves});
436
452
  const persister = {
@@ -458,7 +474,7 @@ const createCustomSynchronizer = (
458
474
  store,
459
475
  send,
460
476
  registerReceive,
461
- destroyImpl,
477
+ extraDestroy,
462
478
  requestTimeoutSeconds,
463
479
  onSend,
464
480
  onReceive,
@@ -511,12 +527,12 @@ const createCustomSynchronizer = (
511
527
  });
512
528
  tablesStamp[1] = getLatestTime(tablesStamp[1], tablesTime2);
513
529
  };
514
- const getChangesFromOtherStore = async (
530
+ const getChangesFromOtherStore = (
515
531
  otherClientId = null,
516
532
  otherContentHashes,
517
533
  transactionId = getTransactionId(),
518
- ) => {
519
- try {
534
+ ) =>
535
+ tryCatch(async () => {
520
536
  if (isUndefined(otherContentHashes)) {
521
537
  [otherContentHashes, otherClientId, transactionId] = await request(
522
538
  null,
@@ -575,8 +591,7 @@ const createCustomSynchronizer = (
575
591
  )[0],
576
592
  1,
577
593
  ];
578
- } catch (error) {}
579
- };
594
+ }, onIgnoredError);
580
595
  const getPersisted = async () => {
581
596
  const changes = await getChangesFromOtherStore();
582
597
  return changes && (!objIsEmpty(changes[0][0]) || !objIsEmpty(changes[1][0]))
@@ -600,12 +615,15 @@ const createCustomSynchronizer = (
600
615
  await persister.startAutoLoad(initialContent)
601
616
  ).startAutoSave();
602
617
  };
603
- const stopSync = () => {
618
+ const stopSync = async () => {
604
619
  syncing = 0;
605
- return persister.stopAutoLoad().stopAutoSave();
620
+ await persister.stopAutoLoad();
621
+ await persister.stopAutoSave();
622
+ return persister;
606
623
  };
607
- const destroy = () => {
608
- return persister.stopSync();
624
+ const destroy = async () => {
625
+ await persister.stopSync();
626
+ return persister;
609
627
  };
610
628
  const getSynchronizerStats = () => ({sends, receives});
611
629
  const persister = createCustomPersister(
@@ -704,7 +722,7 @@ class WsServerDurableObject extends DurableObject {
704
722
  (receive) =>
705
723
  (this.#serverClientSend = (payload) =>
706
724
  receivePayload(payload, receive)),
707
- () => {},
725
+ noop,
708
726
  1,
709
727
  );
710
728
  await persister.load();
@@ -73,7 +73,7 @@ const createWsServerSimple = (webSocketServer) => {
73
73
  ),
74
74
  );
75
75
  const getWebSocketServer = () => webSocketServer;
76
- const destroy = () => {
76
+ const destroy = async () => {
77
77
  collClear(clientsByPath);
78
78
  webSocketServer.close();
79
79
  };
@@ -73,7 +73,7 @@ const createWsServerSimple = (webSocketServer) => {
73
73
  ),
74
74
  );
75
75
  const getWebSocketServer = () => webSocketServer;
76
- const destroy = () => {
76
+ const destroy = async () => {
77
77
  collClear(clientsByPath);
78
78
  webSocketServer.close();
79
79
  };
@@ -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);
@@ -283,12 +291,7 @@ const createCustomPersister = (
283
291
  while (
284
292
  !isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
285
293
  ) {
286
- try {
287
- await action();
288
- } catch (error) {
289
- /* istanbul ignore next */
290
- onIgnoredError?.(error);
291
- }
294
+ await tryCatch(action, onIgnoredError);
292
295
  }
293
296
  mapSet(scheduleRunning, scheduleId, 0);
294
297
  }
@@ -308,21 +311,23 @@ const createCustomPersister = (
308
311
  setStatus(1 /* Loading */);
309
312
  loads++;
310
313
  await schedule(async () => {
311
- try {
312
- const content = await getPersisted();
313
- if (isArray(content)) {
314
- setContentOrChanges(content);
315
- } else if (initialContent) {
316
- setDefaultContent(initialContent);
317
- } else {
318
- errorNew(`Content is not an array: ${content}`);
319
- }
320
- } catch (error) {
321
- onIgnoredError?.(error);
322
- if (initialContent) {
323
- setDefaultContent(initialContent);
324
- }
325
- }
314
+ await tryCatch(
315
+ async () => {
316
+ const content = await getPersisted();
317
+ if (isArray(content)) {
318
+ setContentOrChanges(content);
319
+ } else if (initialContent) {
320
+ setDefaultContent(initialContent);
321
+ } else {
322
+ errorNew(`Content is not an array: ${content}`);
323
+ }
324
+ },
325
+ () => {
326
+ if (initialContent) {
327
+ setDefaultContent(initialContent);
328
+ }
329
+ },
330
+ );
326
331
  setStatus(0 /* Idle */);
327
332
  });
328
333
  }
@@ -331,29 +336,33 @@ const createCustomPersister = (
331
336
  const startAutoLoad = async (initialContent) => {
332
337
  stopAutoLoad();
333
338
  await load(initialContent);
334
- try {
335
- autoLoadHandle = await addPersisterListener(async (content, changes) => {
336
- if (changes || content) {
337
- /* istanbul ignore else */
338
- if (status != 2 /* Saving */) {
339
- setStatus(1 /* Loading */);
340
- loads++;
341
- setContentOrChanges(changes ?? content);
342
- setStatus(0 /* Idle */);
343
- }
344
- } else {
345
- await load();
346
- }
347
- });
348
- } catch (error) {
349
- /* istanbul ignore next */
350
- onIgnoredError?.(error);
351
- }
339
+ await tryCatch(
340
+ async () =>
341
+ (autoLoadHandle = await addPersisterListener(
342
+ async (content, changes) => {
343
+ if (changes || content) {
344
+ /* istanbul ignore else */
345
+ if (status != 2 /* Saving */) {
346
+ setStatus(1 /* Loading */);
347
+ loads++;
348
+ setContentOrChanges(changes ?? content);
349
+ setStatus(0 /* Idle */);
350
+ }
351
+ } else {
352
+ await load();
353
+ }
354
+ },
355
+ )),
356
+ onIgnoredError,
357
+ );
352
358
  return persister;
353
359
  };
354
- const stopAutoLoad = () => {
360
+ const stopAutoLoad = async () => {
355
361
  if (autoLoadHandle) {
356
- delPersisterListener(autoLoadHandle);
362
+ await tryCatch(
363
+ () => delPersisterListener(autoLoadHandle),
364
+ onIgnoredError,
365
+ );
357
366
  autoLoadHandle = void 0;
358
367
  }
359
368
  return persister;
@@ -365,12 +374,7 @@ const createCustomPersister = (
365
374
  setStatus(2 /* Saving */);
366
375
  saves++;
367
376
  await schedule(async () => {
368
- try {
369
- await setPersisted(getContent, changes);
370
- } catch (error) {
371
- /* istanbul ignore next */
372
- onIgnoredError?.(error);
373
- }
377
+ await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
374
378
  setStatus(0 /* Idle */);
375
379
  });
376
380
  }
@@ -387,7 +391,7 @@ const createCustomPersister = (
387
391
  });
388
392
  return persister;
389
393
  };
390
- const stopAutoSave = () => {
394
+ const stopAutoSave = async () => {
391
395
  if (autoSaveListenerId) {
392
396
  store.delListener(autoSaveListenerId);
393
397
  autoSaveListenerId = void 0;
@@ -408,9 +412,10 @@ const createCustomPersister = (
408
412
  return persister;
409
413
  };
410
414
  const getStore = () => store;
411
- const destroy = () => {
415
+ const destroy = async () => {
412
416
  arrayClear(mapGet(scheduleActions, scheduleId));
413
- return stopAutoLoad().stopAutoSave();
417
+ await persister.stopAutoLoad();
418
+ return await persister.stopAutoSave();
414
419
  };
415
420
  const getStats = () => ({loads, saves});
416
421
  const persister = {
@@ -448,7 +453,7 @@ const createCustomSynchronizer = (
448
453
  store,
449
454
  send,
450
455
  registerReceive,
451
- destroyImpl,
456
+ extraDestroy,
452
457
  requestTimeoutSeconds,
453
458
  onSend,
454
459
  onReceive,
@@ -502,12 +507,12 @@ const createCustomSynchronizer = (
502
507
  });
503
508
  tablesStamp[1] = getLatestTime(tablesStamp[1], tablesTime2);
504
509
  };
505
- const getChangesFromOtherStore = async (
510
+ const getChangesFromOtherStore = (
506
511
  otherClientId = null,
507
512
  otherContentHashes,
508
513
  transactionId = getTransactionId(),
509
- ) => {
510
- try {
514
+ ) =>
515
+ tryCatch(async () => {
511
516
  if (isUndefined(otherContentHashes)) {
512
517
  [otherContentHashes, otherClientId, transactionId] = await request(
513
518
  null,
@@ -566,10 +571,7 @@ const createCustomSynchronizer = (
566
571
  )[0],
567
572
  1,
568
573
  ];
569
- } catch (error) {
570
- onIgnoredError?.(error);
571
- }
572
- };
574
+ }, onIgnoredError);
573
575
  const getPersisted = async () => {
574
576
  const changes = await getChangesFromOtherStore();
575
577
  return changes && (!objIsEmpty(changes[0][0]) || !objIsEmpty(changes[1][0]))
@@ -593,13 +595,16 @@ const createCustomSynchronizer = (
593
595
  await persister.startAutoLoad(initialContent)
594
596
  ).startAutoSave();
595
597
  };
596
- const stopSync = () => {
598
+ const stopSync = async () => {
597
599
  syncing = 0;
598
- return persister.stopAutoLoad().stopAutoSave();
600
+ await persister.stopAutoLoad();
601
+ await persister.stopAutoSave();
602
+ return persister;
599
603
  };
600
- const destroy = () => {
601
- destroyImpl();
602
- return persister.stopSync();
604
+ const destroy = async () => {
605
+ await persister.stopSync();
606
+ extraDestroy();
607
+ return persister;
603
608
  };
604
609
  const getSynchronizerStats = () => ({sends, receives});
605
610
  const persister = createCustomPersister(