tinybase 6.1.0-beta.4 → 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 +82 -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 +3 -3
  29. package/@types/persisters/persister-sqlite-bun/with-schemas/index.d.ts +3 -3
  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 +86 -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 -1
  119. package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
  120. package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -1
  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 +8 -4
  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 +182 -135
  205. package/persisters/persister-sqlite-bun/with-schemas/index.js +182 -135
  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
@@ -93,6 +93,14 @@ const test = (regex, subject) => regex.test(subject);
93
93
  const errorNew = (message) => {
94
94
  throw new Error(message);
95
95
  };
96
+ const tryCatch = async (action, then1, then2) => {
97
+ try {
98
+ return await action();
99
+ } catch (error) {
100
+ /* istanbul ignore next */
101
+ then1?.(error);
102
+ }
103
+ };
96
104
 
97
105
  const arrayHas = (array, value) => array.includes(value);
98
106
  const arrayEvery = (array, cb) => array.every(cb);
@@ -423,9 +431,7 @@ const createCustomPersister = (
423
431
  while (
424
432
  !isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
425
433
  ) {
426
- try {
427
- await action();
428
- } catch (error) {}
434
+ await tryCatch(action, onIgnoredError);
429
435
  }
430
436
  mapSet(scheduleRunning, scheduleId, 0);
431
437
  }
@@ -445,20 +451,23 @@ const createCustomPersister = (
445
451
  setStatus(1 /* Loading */);
446
452
  loads++;
447
453
  await schedule(async () => {
448
- try {
449
- const content = await getPersisted();
450
- if (isArray(content)) {
451
- setContentOrChanges(content);
452
- } else if (initialContent) {
453
- setDefaultContent(initialContent);
454
- } else {
455
- errorNew(`Content is not an array: ${content}`);
456
- }
457
- } catch (error) {
458
- if (initialContent) {
459
- setDefaultContent(initialContent);
460
- }
461
- }
454
+ await tryCatch(
455
+ async () => {
456
+ const content = await getPersisted();
457
+ if (isArray(content)) {
458
+ setContentOrChanges(content);
459
+ } else if (initialContent) {
460
+ setDefaultContent(initialContent);
461
+ } else {
462
+ errorNew(`Content is not an array: ${content}`);
463
+ }
464
+ },
465
+ () => {
466
+ if (initialContent) {
467
+ setDefaultContent(initialContent);
468
+ }
469
+ },
470
+ );
462
471
  setStatus(0 /* Idle */);
463
472
  });
464
473
  }
@@ -467,26 +476,33 @@ const createCustomPersister = (
467
476
  const startAutoLoad = async (initialContent) => {
468
477
  stopAutoLoad();
469
478
  await load(initialContent);
470
- try {
471
- autoLoadHandle = await addPersisterListener(async (content, changes) => {
472
- if (changes || content) {
473
- /* istanbul ignore else */
474
- if (status != 2 /* Saving */) {
475
- setStatus(1 /* Loading */);
476
- loads++;
477
- setContentOrChanges(changes ?? content);
478
- setStatus(0 /* Idle */);
479
- }
480
- } else {
481
- await load();
482
- }
483
- });
484
- } catch (error) {}
479
+ await tryCatch(
480
+ async () =>
481
+ (autoLoadHandle = await addPersisterListener(
482
+ async (content, changes) => {
483
+ if (changes || content) {
484
+ /* istanbul ignore else */
485
+ if (status != 2 /* Saving */) {
486
+ setStatus(1 /* Loading */);
487
+ loads++;
488
+ setContentOrChanges(changes ?? content);
489
+ setStatus(0 /* Idle */);
490
+ }
491
+ } else {
492
+ await load();
493
+ }
494
+ },
495
+ )),
496
+ onIgnoredError,
497
+ );
485
498
  return persister;
486
499
  };
487
- const stopAutoLoad = () => {
500
+ const stopAutoLoad = async () => {
488
501
  if (autoLoadHandle) {
489
- delPersisterListener(autoLoadHandle);
502
+ await tryCatch(
503
+ () => delPersisterListener(autoLoadHandle),
504
+ onIgnoredError,
505
+ );
490
506
  autoLoadHandle = void 0;
491
507
  }
492
508
  return persister;
@@ -498,9 +514,7 @@ const createCustomPersister = (
498
514
  setStatus(2 /* Saving */);
499
515
  saves++;
500
516
  await schedule(async () => {
501
- try {
502
- await setPersisted(getContent, changes);
503
- } catch (error) {}
517
+ await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
504
518
  setStatus(0 /* Idle */);
505
519
  });
506
520
  }
@@ -517,7 +531,7 @@ const createCustomPersister = (
517
531
  });
518
532
  return persister;
519
533
  };
520
- const stopAutoSave = () => {
534
+ const stopAutoSave = async () => {
521
535
  if (autoSaveListenerId) {
522
536
  store.delListener(autoSaveListenerId);
523
537
  autoSaveListenerId = void 0;
@@ -538,9 +552,10 @@ const createCustomPersister = (
538
552
  return persister;
539
553
  };
540
554
  const getStore = () => store;
541
- const destroy = () => {
555
+ const destroy = async () => {
542
556
  arrayClear(mapGet(scheduleActions, scheduleId));
543
- return stopAutoLoad().stopAutoSave();
557
+ await persister.stopAutoLoad();
558
+ return await persister.stopAutoSave();
544
559
  };
545
560
  const getStats = () => ({loads, saves});
546
561
  const persister = {
@@ -578,11 +593,7 @@ const createStoragePersister = (
578
593
  const addPersisterListener = (listener) => {
579
594
  const storageListener = (event) => {
580
595
  if (event.storageArea === storage && event.key === storageName) {
581
- try {
582
- listener(jsonParse(event.newValue));
583
- } catch {
584
- listener();
585
- }
596
+ tryCatch(() => listener(jsonParse(event.newValue)), listener);
586
597
  }
587
598
  };
588
599
  WINDOW.addEventListener(STORAGE, storageListener);
@@ -1466,27 +1477,24 @@ const createStore = () => {
1466
1477
  );
1467
1478
  });
1468
1479
  const setTablesJson = (tablesJson) => {
1469
- try {
1470
- setOrDelTables(jsonParse(tablesJson));
1471
- } catch {}
1480
+ tryCatch(() => setOrDelTables(jsonParse(tablesJson)));
1472
1481
  return store;
1473
1482
  };
1474
1483
  const setValuesJson = (valuesJson) => {
1475
- try {
1476
- setOrDelValues(jsonParse(valuesJson));
1477
- } catch {}
1484
+ tryCatch(() => setOrDelValues(jsonParse(valuesJson)));
1478
1485
  return store;
1479
1486
  };
1480
1487
  const setJson = (tablesAndValuesJson) =>
1481
- fluentTransaction(() => {
1482
- try {
1483
- const [tables, values] = jsonParse(tablesAndValuesJson);
1484
- setOrDelTables(tables);
1485
- setOrDelValues(values);
1486
- } catch {
1487
- setTablesJson(tablesAndValuesJson);
1488
- }
1489
- });
1488
+ fluentTransaction(() =>
1489
+ tryCatch(
1490
+ () => {
1491
+ const [tables, values] = jsonParse(tablesAndValuesJson);
1492
+ setOrDelTables(tables);
1493
+ setOrDelValues(values);
1494
+ },
1495
+ () => setTablesJson(tablesAndValuesJson),
1496
+ ),
1497
+ );
1490
1498
  const setTablesSchema = (tablesSchema) =>
1491
1499
  fluentTransaction(() => {
1492
1500
  if ((hasTablesSchema = validateTablesSchema(tablesSchema))) {
@@ -93,6 +93,14 @@ const test = (regex, subject) => regex.test(subject);
93
93
  const errorNew = (message) => {
94
94
  throw new Error(message);
95
95
  };
96
+ const tryCatch = async (action, then1, then2) => {
97
+ try {
98
+ return await action();
99
+ } catch (error) {
100
+ /* istanbul ignore next */
101
+ then1?.(error);
102
+ }
103
+ };
96
104
 
97
105
  const arrayHas = (array, value) => array.includes(value);
98
106
  const arrayEvery = (array, cb) => array.every(cb);
@@ -423,9 +431,7 @@ const createCustomPersister = (
423
431
  while (
424
432
  !isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
425
433
  ) {
426
- try {
427
- await action();
428
- } catch (error) {}
434
+ await tryCatch(action, onIgnoredError);
429
435
  }
430
436
  mapSet(scheduleRunning, scheduleId, 0);
431
437
  }
@@ -445,20 +451,23 @@ const createCustomPersister = (
445
451
  setStatus(1 /* Loading */);
446
452
  loads++;
447
453
  await schedule(async () => {
448
- try {
449
- const content = await getPersisted();
450
- if (isArray(content)) {
451
- setContentOrChanges(content);
452
- } else if (initialContent) {
453
- setDefaultContent(initialContent);
454
- } else {
455
- errorNew(`Content is not an array: ${content}`);
456
- }
457
- } catch (error) {
458
- if (initialContent) {
459
- setDefaultContent(initialContent);
460
- }
461
- }
454
+ await tryCatch(
455
+ async () => {
456
+ const content = await getPersisted();
457
+ if (isArray(content)) {
458
+ setContentOrChanges(content);
459
+ } else if (initialContent) {
460
+ setDefaultContent(initialContent);
461
+ } else {
462
+ errorNew(`Content is not an array: ${content}`);
463
+ }
464
+ },
465
+ () => {
466
+ if (initialContent) {
467
+ setDefaultContent(initialContent);
468
+ }
469
+ },
470
+ );
462
471
  setStatus(0 /* Idle */);
463
472
  });
464
473
  }
@@ -467,26 +476,33 @@ const createCustomPersister = (
467
476
  const startAutoLoad = async (initialContent) => {
468
477
  stopAutoLoad();
469
478
  await load(initialContent);
470
- try {
471
- autoLoadHandle = await addPersisterListener(async (content, changes) => {
472
- if (changes || content) {
473
- /* istanbul ignore else */
474
- if (status != 2 /* Saving */) {
475
- setStatus(1 /* Loading */);
476
- loads++;
477
- setContentOrChanges(changes ?? content);
478
- setStatus(0 /* Idle */);
479
- }
480
- } else {
481
- await load();
482
- }
483
- });
484
- } catch (error) {}
479
+ await tryCatch(
480
+ async () =>
481
+ (autoLoadHandle = await addPersisterListener(
482
+ async (content, changes) => {
483
+ if (changes || content) {
484
+ /* istanbul ignore else */
485
+ if (status != 2 /* Saving */) {
486
+ setStatus(1 /* Loading */);
487
+ loads++;
488
+ setContentOrChanges(changes ?? content);
489
+ setStatus(0 /* Idle */);
490
+ }
491
+ } else {
492
+ await load();
493
+ }
494
+ },
495
+ )),
496
+ onIgnoredError,
497
+ );
485
498
  return persister;
486
499
  };
487
- const stopAutoLoad = () => {
500
+ const stopAutoLoad = async () => {
488
501
  if (autoLoadHandle) {
489
- delPersisterListener(autoLoadHandle);
502
+ await tryCatch(
503
+ () => delPersisterListener(autoLoadHandle),
504
+ onIgnoredError,
505
+ );
490
506
  autoLoadHandle = void 0;
491
507
  }
492
508
  return persister;
@@ -498,9 +514,7 @@ const createCustomPersister = (
498
514
  setStatus(2 /* Saving */);
499
515
  saves++;
500
516
  await schedule(async () => {
501
- try {
502
- await setPersisted(getContent, changes);
503
- } catch (error) {}
517
+ await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
504
518
  setStatus(0 /* Idle */);
505
519
  });
506
520
  }
@@ -517,7 +531,7 @@ const createCustomPersister = (
517
531
  });
518
532
  return persister;
519
533
  };
520
- const stopAutoSave = () => {
534
+ const stopAutoSave = async () => {
521
535
  if (autoSaveListenerId) {
522
536
  store.delListener(autoSaveListenerId);
523
537
  autoSaveListenerId = void 0;
@@ -538,9 +552,10 @@ const createCustomPersister = (
538
552
  return persister;
539
553
  };
540
554
  const getStore = () => store;
541
- const destroy = () => {
555
+ const destroy = async () => {
542
556
  arrayClear(mapGet(scheduleActions, scheduleId));
543
- return stopAutoLoad().stopAutoSave();
557
+ await persister.stopAutoLoad();
558
+ return await persister.stopAutoSave();
544
559
  };
545
560
  const getStats = () => ({loads, saves});
546
561
  const persister = {
@@ -578,11 +593,7 @@ const createStoragePersister = (
578
593
  const addPersisterListener = (listener) => {
579
594
  const storageListener = (event) => {
580
595
  if (event.storageArea === storage && event.key === storageName) {
581
- try {
582
- listener(jsonParse(event.newValue));
583
- } catch {
584
- listener();
585
- }
596
+ tryCatch(() => listener(jsonParse(event.newValue)), listener);
586
597
  }
587
598
  };
588
599
  WINDOW.addEventListener(STORAGE, storageListener);
@@ -1466,27 +1477,24 @@ const createStore = () => {
1466
1477
  );
1467
1478
  });
1468
1479
  const setTablesJson = (tablesJson) => {
1469
- try {
1470
- setOrDelTables(jsonParse(tablesJson));
1471
- } catch {}
1480
+ tryCatch(() => setOrDelTables(jsonParse(tablesJson)));
1472
1481
  return store;
1473
1482
  };
1474
1483
  const setValuesJson = (valuesJson) => {
1475
- try {
1476
- setOrDelValues(jsonParse(valuesJson));
1477
- } catch {}
1484
+ tryCatch(() => setOrDelValues(jsonParse(valuesJson)));
1478
1485
  return store;
1479
1486
  };
1480
1487
  const setJson = (tablesAndValuesJson) =>
1481
- fluentTransaction(() => {
1482
- try {
1483
- const [tables, values] = jsonParse(tablesAndValuesJson);
1484
- setOrDelTables(tables);
1485
- setOrDelValues(values);
1486
- } catch {
1487
- setTablesJson(tablesAndValuesJson);
1488
- }
1489
- });
1488
+ fluentTransaction(() =>
1489
+ tryCatch(
1490
+ () => {
1491
+ const [tables, values] = jsonParse(tablesAndValuesJson);
1492
+ setOrDelTables(tables);
1493
+ setOrDelValues(values);
1494
+ },
1495
+ () => setTablesJson(tablesAndValuesJson),
1496
+ ),
1497
+ );
1490
1498
  const setTablesSchema = (tablesSchema) =>
1491
1499
  fluentTransaction(() => {
1492
1500
  if ((hasTablesSchema = validateTablesSchema(tablesSchema))) {
@@ -55,6 +55,15 @@ const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
55
55
  const size = (arrayOrString) => arrayOrString.length;
56
56
  const test = (regex, subject) => regex.test(subject);
57
57
  const getUndefined = () => void 0;
58
+ const noop = () => {};
59
+ const tryCatch = async (action, then1, then2) => {
60
+ try {
61
+ return await action();
62
+ } catch (error) {
63
+ /* istanbul ignore next */
64
+ then1?.(error);
65
+ }
66
+ };
58
67
 
59
68
  const arrayHas = (array, value) => array.includes(value);
60
69
  const arrayEvery = (array, cb) => array.every(cb);
@@ -1951,27 +1960,24 @@ const createStore = () => {
1951
1960
  );
1952
1961
  });
1953
1962
  const setTablesJson = (tablesJson) => {
1954
- try {
1955
- setOrDelTables(jsonParse(tablesJson));
1956
- } catch {}
1963
+ tryCatch(() => setOrDelTables(jsonParse(tablesJson)));
1957
1964
  return store;
1958
1965
  };
1959
1966
  const setValuesJson = (valuesJson) => {
1960
- try {
1961
- setOrDelValues(jsonParse(valuesJson));
1962
- } catch {}
1967
+ tryCatch(() => setOrDelValues(jsonParse(valuesJson)));
1963
1968
  return store;
1964
1969
  };
1965
1970
  const setJson = (tablesAndValuesJson) =>
1966
- fluentTransaction(() => {
1967
- try {
1968
- const [tables, values] = jsonParse(tablesAndValuesJson);
1969
- setOrDelTables(tables);
1970
- setOrDelValues(values);
1971
- } catch {
1972
- setTablesJson(tablesAndValuesJson);
1973
- }
1974
- });
1971
+ fluentTransaction(() =>
1972
+ tryCatch(
1973
+ () => {
1974
+ const [tables, values] = jsonParse(tablesAndValuesJson);
1975
+ setOrDelTables(tables);
1976
+ setOrDelValues(values);
1977
+ },
1978
+ () => setTablesJson(tablesAndValuesJson),
1979
+ ),
1980
+ );
1975
1981
  const setTablesSchema = (tablesSchema) =>
1976
1982
  fluentTransaction(() => {
1977
1983
  if ((hasTablesSchema = validateTablesSchema(tablesSchema))) {
@@ -2629,8 +2635,8 @@ const createMergeableStore = (uniqueId, getNow) => {
2629
2635
  stampUpdate(thingsStampMap, incomingThingsTime, thingsHash);
2630
2636
  return [thingsTime, oldThingsHash, thingsStampMap[2]];
2631
2637
  };
2632
- const preStartTransaction = () => {};
2633
- const preFinishTransaction = () => {};
2638
+ const preStartTransaction = noop;
2639
+ const preFinishTransaction = noop;
2634
2640
  const postFinishTransaction = () => {
2635
2641
  collClear(touchedCells);
2636
2642
  collClear(touchedValues);