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
@@ -14,6 +14,14 @@ const test = (regex, subject) => regex.test(subject);
14
14
  const errorNew = (message) => {
15
15
  throw new Error(message);
16
16
  };
17
+ const tryCatch = async (action, then1, then2) => {
18
+ try {
19
+ return await action();
20
+ } catch (error) {
21
+ /* istanbul ignore next */
22
+ then1?.(error);
23
+ }
24
+ };
17
25
 
18
26
  const arrayForEach = (array, cb) => array.forEach(cb);
19
27
  const arrayClear = (array, to) => array.splice(0, to);
@@ -249,12 +257,7 @@ const createCustomPersister = (
249
257
  while (
250
258
  !isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
251
259
  ) {
252
- try {
253
- await action();
254
- } catch (error) {
255
- /* istanbul ignore next */
256
- onIgnoredError?.(error);
257
- }
260
+ await tryCatch(action, onIgnoredError);
258
261
  }
259
262
  mapSet(scheduleRunning, scheduleId, 0);
260
263
  }
@@ -274,21 +277,23 @@ const createCustomPersister = (
274
277
  setStatus(1 /* Loading */);
275
278
  loads++;
276
279
  await schedule(async () => {
277
- try {
278
- const content = await getPersisted();
279
- if (isArray(content)) {
280
- setContentOrChanges(content);
281
- } else if (initialContent) {
282
- setDefaultContent(initialContent);
283
- } else {
284
- errorNew(`Content is not an array: ${content}`);
285
- }
286
- } catch (error) {
287
- onIgnoredError?.(error);
288
- if (initialContent) {
289
- setDefaultContent(initialContent);
290
- }
291
- }
280
+ await tryCatch(
281
+ async () => {
282
+ const content = await getPersisted();
283
+ if (isArray(content)) {
284
+ setContentOrChanges(content);
285
+ } else if (initialContent) {
286
+ setDefaultContent(initialContent);
287
+ } else {
288
+ errorNew(`Content is not an array: ${content}`);
289
+ }
290
+ },
291
+ () => {
292
+ if (initialContent) {
293
+ setDefaultContent(initialContent);
294
+ }
295
+ },
296
+ );
292
297
  setStatus(0 /* Idle */);
293
298
  });
294
299
  }
@@ -297,29 +302,33 @@ const createCustomPersister = (
297
302
  const startAutoLoad = async (initialContent) => {
298
303
  stopAutoLoad();
299
304
  await load(initialContent);
300
- try {
301
- autoLoadHandle = await addPersisterListener(async (content, changes) => {
302
- if (changes || content) {
303
- /* istanbul ignore else */
304
- if (status != 2 /* Saving */) {
305
- setStatus(1 /* Loading */);
306
- loads++;
307
- setContentOrChanges(changes ?? content);
308
- setStatus(0 /* Idle */);
309
- }
310
- } else {
311
- await load();
312
- }
313
- });
314
- } catch (error) {
315
- /* istanbul ignore next */
316
- onIgnoredError?.(error);
317
- }
305
+ await tryCatch(
306
+ async () =>
307
+ (autoLoadHandle = await addPersisterListener(
308
+ async (content, changes) => {
309
+ if (changes || content) {
310
+ /* istanbul ignore else */
311
+ if (status != 2 /* Saving */) {
312
+ setStatus(1 /* Loading */);
313
+ loads++;
314
+ setContentOrChanges(changes ?? content);
315
+ setStatus(0 /* Idle */);
316
+ }
317
+ } else {
318
+ await load();
319
+ }
320
+ },
321
+ )),
322
+ onIgnoredError,
323
+ );
318
324
  return persister;
319
325
  };
320
- const stopAutoLoad = () => {
326
+ const stopAutoLoad = async () => {
321
327
  if (autoLoadHandle) {
322
- delPersisterListener(autoLoadHandle);
328
+ await tryCatch(
329
+ () => delPersisterListener(autoLoadHandle),
330
+ onIgnoredError,
331
+ );
323
332
  autoLoadHandle = void 0;
324
333
  }
325
334
  return persister;
@@ -331,12 +340,7 @@ const createCustomPersister = (
331
340
  setStatus(2 /* Saving */);
332
341
  saves++;
333
342
  await schedule(async () => {
334
- try {
335
- await setPersisted(getContent, changes);
336
- } catch (error) {
337
- /* istanbul ignore next */
338
- onIgnoredError?.(error);
339
- }
343
+ await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
340
344
  setStatus(0 /* Idle */);
341
345
  });
342
346
  }
@@ -353,7 +357,7 @@ const createCustomPersister = (
353
357
  });
354
358
  return persister;
355
359
  };
356
- const stopAutoSave = () => {
360
+ const stopAutoSave = async () => {
357
361
  if (autoSaveListenerId) {
358
362
  store.delListener(autoSaveListenerId);
359
363
  autoSaveListenerId = void 0;
@@ -374,9 +378,10 @@ const createCustomPersister = (
374
378
  return persister;
375
379
  };
376
380
  const getStore = () => store;
377
- const destroy = () => {
381
+ const destroy = async () => {
378
382
  arrayClear(mapGet(scheduleActions, scheduleId));
379
- return stopAutoLoad().stopAutoSave();
383
+ await persister.stopAutoLoad();
384
+ return await persister.stopAutoSave();
380
385
  };
381
386
  const getStats = () => ({loads, saves});
382
387
  const persister = {
@@ -14,6 +14,14 @@ const test = (regex, subject) => regex.test(subject);
14
14
  const errorNew = (message) => {
15
15
  throw new Error(message);
16
16
  };
17
+ const tryCatch = async (action, then1, then2) => {
18
+ try {
19
+ return await action();
20
+ } catch (error) {
21
+ /* istanbul ignore next */
22
+ then1?.(error);
23
+ }
24
+ };
17
25
 
18
26
  const arrayForEach = (array, cb) => array.forEach(cb);
19
27
  const arrayClear = (array, to) => array.splice(0, to);
@@ -249,12 +257,7 @@ const createCustomPersister = (
249
257
  while (
250
258
  !isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
251
259
  ) {
252
- try {
253
- await action();
254
- } catch (error) {
255
- /* istanbul ignore next */
256
- onIgnoredError?.(error);
257
- }
260
+ await tryCatch(action, onIgnoredError);
258
261
  }
259
262
  mapSet(scheduleRunning, scheduleId, 0);
260
263
  }
@@ -274,21 +277,23 @@ const createCustomPersister = (
274
277
  setStatus(1 /* Loading */);
275
278
  loads++;
276
279
  await schedule(async () => {
277
- try {
278
- const content = await getPersisted();
279
- if (isArray(content)) {
280
- setContentOrChanges(content);
281
- } else if (initialContent) {
282
- setDefaultContent(initialContent);
283
- } else {
284
- errorNew(`Content is not an array: ${content}`);
285
- }
286
- } catch (error) {
287
- onIgnoredError?.(error);
288
- if (initialContent) {
289
- setDefaultContent(initialContent);
290
- }
291
- }
280
+ await tryCatch(
281
+ async () => {
282
+ const content = await getPersisted();
283
+ if (isArray(content)) {
284
+ setContentOrChanges(content);
285
+ } else if (initialContent) {
286
+ setDefaultContent(initialContent);
287
+ } else {
288
+ errorNew(`Content is not an array: ${content}`);
289
+ }
290
+ },
291
+ () => {
292
+ if (initialContent) {
293
+ setDefaultContent(initialContent);
294
+ }
295
+ },
296
+ );
292
297
  setStatus(0 /* Idle */);
293
298
  });
294
299
  }
@@ -297,29 +302,33 @@ const createCustomPersister = (
297
302
  const startAutoLoad = async (initialContent) => {
298
303
  stopAutoLoad();
299
304
  await load(initialContent);
300
- try {
301
- autoLoadHandle = await addPersisterListener(async (content, changes) => {
302
- if (changes || content) {
303
- /* istanbul ignore else */
304
- if (status != 2 /* Saving */) {
305
- setStatus(1 /* Loading */);
306
- loads++;
307
- setContentOrChanges(changes ?? content);
308
- setStatus(0 /* Idle */);
309
- }
310
- } else {
311
- await load();
312
- }
313
- });
314
- } catch (error) {
315
- /* istanbul ignore next */
316
- onIgnoredError?.(error);
317
- }
305
+ await tryCatch(
306
+ async () =>
307
+ (autoLoadHandle = await addPersisterListener(
308
+ async (content, changes) => {
309
+ if (changes || content) {
310
+ /* istanbul ignore else */
311
+ if (status != 2 /* Saving */) {
312
+ setStatus(1 /* Loading */);
313
+ loads++;
314
+ setContentOrChanges(changes ?? content);
315
+ setStatus(0 /* Idle */);
316
+ }
317
+ } else {
318
+ await load();
319
+ }
320
+ },
321
+ )),
322
+ onIgnoredError,
323
+ );
318
324
  return persister;
319
325
  };
320
- const stopAutoLoad = () => {
326
+ const stopAutoLoad = async () => {
321
327
  if (autoLoadHandle) {
322
- delPersisterListener(autoLoadHandle);
328
+ await tryCatch(
329
+ () => delPersisterListener(autoLoadHandle),
330
+ onIgnoredError,
331
+ );
323
332
  autoLoadHandle = void 0;
324
333
  }
325
334
  return persister;
@@ -331,12 +340,7 @@ const createCustomPersister = (
331
340
  setStatus(2 /* Saving */);
332
341
  saves++;
333
342
  await schedule(async () => {
334
- try {
335
- await setPersisted(getContent, changes);
336
- } catch (error) {
337
- /* istanbul ignore next */
338
- onIgnoredError?.(error);
339
- }
343
+ await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
340
344
  setStatus(0 /* Idle */);
341
345
  });
342
346
  }
@@ -353,7 +357,7 @@ const createCustomPersister = (
353
357
  });
354
358
  return persister;
355
359
  };
356
- const stopAutoSave = () => {
360
+ const stopAutoSave = async () => {
357
361
  if (autoSaveListenerId) {
358
362
  store.delListener(autoSaveListenerId);
359
363
  autoSaveListenerId = void 0;
@@ -374,9 +378,10 @@ const createCustomPersister = (
374
378
  return persister;
375
379
  };
376
380
  const getStore = () => store;
377
- const destroy = () => {
381
+ const destroy = async () => {
378
382
  arrayClear(mapGet(scheduleActions, scheduleId));
379
- return stopAutoLoad().stopAutoSave();
383
+ await persister.stopAutoLoad();
384
+ return await persister.stopAutoSave();
380
385
  };
381
386
  const getStats = () => ({loads, saves});
382
387
  const persister = {
@@ -21,6 +21,14 @@ const promiseAll = async (promises) => promise.all(promises);
21
21
  const errorNew = (message) => {
22
22
  throw new Error(message);
23
23
  };
24
+ const tryCatch = async (action, then1, then2) => {
25
+ try {
26
+ return await action();
27
+ } catch (error) {
28
+ /* istanbul ignore next */
29
+ then1?.(error);
30
+ }
31
+ };
24
32
 
25
33
  const arrayForEach = (array, cb) => array.forEach(cb);
26
34
  const arrayMap = (array, cb) => array.map(cb);
@@ -255,12 +263,7 @@ const createCustomPersister = (
255
263
  while (
256
264
  !isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
257
265
  ) {
258
- try {
259
- await action();
260
- } catch (error) {
261
- /* istanbul ignore next */
262
- onIgnoredError?.(error);
263
- }
266
+ await tryCatch(action, onIgnoredError);
264
267
  }
265
268
  mapSet(scheduleRunning, scheduleId, 0);
266
269
  }
@@ -280,21 +283,23 @@ const createCustomPersister = (
280
283
  setStatus(1 /* Loading */);
281
284
  loads++;
282
285
  await schedule(async () => {
283
- try {
284
- const content = await getPersisted();
285
- if (isArray(content)) {
286
- setContentOrChanges(content);
287
- } else if (initialContent) {
288
- setDefaultContent(initialContent);
289
- } else {
290
- errorNew(`Content is not an array: ${content}`);
291
- }
292
- } catch (error) {
293
- onIgnoredError?.(error);
294
- if (initialContent) {
295
- setDefaultContent(initialContent);
296
- }
297
- }
286
+ await tryCatch(
287
+ async () => {
288
+ const content = await getPersisted();
289
+ if (isArray(content)) {
290
+ setContentOrChanges(content);
291
+ } else if (initialContent) {
292
+ setDefaultContent(initialContent);
293
+ } else {
294
+ errorNew(`Content is not an array: ${content}`);
295
+ }
296
+ },
297
+ () => {
298
+ if (initialContent) {
299
+ setDefaultContent(initialContent);
300
+ }
301
+ },
302
+ );
298
303
  setStatus(0 /* Idle */);
299
304
  });
300
305
  }
@@ -303,29 +308,33 @@ const createCustomPersister = (
303
308
  const startAutoLoad = async (initialContent) => {
304
309
  stopAutoLoad();
305
310
  await load(initialContent);
306
- try {
307
- autoLoadHandle = await addPersisterListener(async (content, changes) => {
308
- if (changes || content) {
309
- /* istanbul ignore else */
310
- if (status != 2 /* Saving */) {
311
- setStatus(1 /* Loading */);
312
- loads++;
313
- setContentOrChanges(changes ?? content);
314
- setStatus(0 /* Idle */);
315
- }
316
- } else {
317
- await load();
318
- }
319
- });
320
- } catch (error) {
321
- /* istanbul ignore next */
322
- onIgnoredError?.(error);
323
- }
311
+ await tryCatch(
312
+ async () =>
313
+ (autoLoadHandle = await addPersisterListener(
314
+ async (content, changes) => {
315
+ if (changes || content) {
316
+ /* istanbul ignore else */
317
+ if (status != 2 /* Saving */) {
318
+ setStatus(1 /* Loading */);
319
+ loads++;
320
+ setContentOrChanges(changes ?? content);
321
+ setStatus(0 /* Idle */);
322
+ }
323
+ } else {
324
+ await load();
325
+ }
326
+ },
327
+ )),
328
+ onIgnoredError,
329
+ );
324
330
  return persister;
325
331
  };
326
- const stopAutoLoad = () => {
332
+ const stopAutoLoad = async () => {
327
333
  if (autoLoadHandle) {
328
- delPersisterListener(autoLoadHandle);
334
+ await tryCatch(
335
+ () => delPersisterListener(autoLoadHandle),
336
+ onIgnoredError,
337
+ );
329
338
  autoLoadHandle = void 0;
330
339
  }
331
340
  return persister;
@@ -337,12 +346,7 @@ const createCustomPersister = (
337
346
  setStatus(2 /* Saving */);
338
347
  saves++;
339
348
  await schedule(async () => {
340
- try {
341
- await setPersisted(getContent, changes);
342
- } catch (error) {
343
- /* istanbul ignore next */
344
- onIgnoredError?.(error);
345
- }
349
+ await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
346
350
  setStatus(0 /* Idle */);
347
351
  });
348
352
  }
@@ -359,7 +363,7 @@ const createCustomPersister = (
359
363
  });
360
364
  return persister;
361
365
  };
362
- const stopAutoSave = () => {
366
+ const stopAutoSave = async () => {
363
367
  if (autoSaveListenerId) {
364
368
  store.delListener(autoSaveListenerId);
365
369
  autoSaveListenerId = void 0;
@@ -380,9 +384,10 @@ const createCustomPersister = (
380
384
  return persister;
381
385
  };
382
386
  const getStore = () => store;
383
- const destroy = () => {
387
+ const destroy = async () => {
384
388
  arrayClear(mapGet(scheduleActions, scheduleId));
385
- return stopAutoLoad().stopAutoSave();
389
+ await persister.stopAutoLoad();
390
+ return await persister.stopAutoSave();
386
391
  };
387
392
  const getStats = () => ({loads, saves});
388
393
  const persister = {
@@ -439,34 +444,34 @@ const createIndexedDbPersister = (
439
444
  );
440
445
  request.onupgradeneeded = () =>
441
446
  create &&
442
- arrayMap(OBJECT_STORE_NAMES, (objectStoreName) => {
443
- try {
444
- request.result.createObjectStore(objectStoreName, KEY_PATH);
445
- } catch {}
446
- });
447
- request.onsuccess = async () => {
448
- try {
449
- const transaction = request.result.transaction(
450
- OBJECT_STORE_NAMES,
451
- 'readwrite',
452
- );
453
- const result = await promiseAll(
454
- arrayMap(
447
+ arrayMap(OBJECT_STORE_NAMES, (objectStoreName) =>
448
+ tryCatch(() =>
449
+ request.result.createObjectStore(objectStoreName, KEY_PATH),
450
+ ),
451
+ );
452
+ request.onsuccess = () =>
453
+ tryCatch(
454
+ async () => {
455
+ const transaction = request.result.transaction(
455
456
  OBJECT_STORE_NAMES,
456
- async (objectStoreName, index) =>
457
- await forObjectStore(
457
+ 'readwrite',
458
+ );
459
+ const result = await promiseAll(
460
+ arrayMap(OBJECT_STORE_NAMES, (objectStoreName, index) =>
461
+ forObjectStore(
458
462
  transaction.objectStore(objectStoreName),
459
463
  params[index],
460
464
  ),
461
- ),
462
- );
463
- request.result.close();
464
- resolve(result);
465
- } catch (e) {
466
- request.result.close();
467
- reject(e);
468
- }
469
- };
465
+ ),
466
+ );
467
+ request.result.close();
468
+ resolve(result);
469
+ },
470
+ (error) => {
471
+ request.result.close();
472
+ reject(error);
473
+ },
474
+ );
470
475
  request.onerror = () => reject('indexedDB.open error');
471
476
  });
472
477
  const getPersisted = async () =>
@@ -478,10 +483,9 @@ const createIndexedDbPersister = (
478
483
  ]),
479
484
  ),
480
485
  );
481
- const setPersisted = async (getContent) =>
482
- await forObjectStores(
483
- async (objectStore, content) =>
484
- await objectStoreMatch(objectStore, content),
486
+ const setPersisted = (getContent) =>
487
+ forObjectStores(
488
+ (objectStore, content) => objectStoreMatch(objectStore, content),
485
489
  getContent(),
486
490
  1,
487
491
  );