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
@@ -10,6 +10,14 @@ const test = (regex, subject) => regex.test(subject);
10
10
  const errorNew = (message) => {
11
11
  throw new Error(message);
12
12
  };
13
+ const tryCatch = async (action, then1, then2) => {
14
+ try {
15
+ return await action();
16
+ } catch (error) {
17
+ /* istanbul ignore next */
18
+ then1?.(error);
19
+ }
20
+ };
13
21
 
14
22
  const arrayForEach = (array, cb) => array.forEach(cb);
15
23
  const arrayMap = (array, cb) => array.map(cb);
@@ -257,12 +265,7 @@ const createCustomPersister = (
257
265
  while (
258
266
  !isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
259
267
  ) {
260
- try {
261
- await action();
262
- } catch (error) {
263
- /* istanbul ignore next */
264
- onIgnoredError?.(error);
265
- }
268
+ await tryCatch(action, onIgnoredError);
266
269
  }
267
270
  mapSet(scheduleRunning, scheduleId, 0);
268
271
  }
@@ -282,21 +285,23 @@ const createCustomPersister = (
282
285
  setStatus(1 /* Loading */);
283
286
  loads++;
284
287
  await schedule(async () => {
285
- try {
286
- const content = await getPersisted();
287
- if (isArray(content)) {
288
- setContentOrChanges(content);
289
- } else if (initialContent) {
290
- setDefaultContent(initialContent);
291
- } else {
292
- errorNew(`Content is not an array: ${content}`);
293
- }
294
- } catch (error) {
295
- onIgnoredError?.(error);
296
- if (initialContent) {
297
- setDefaultContent(initialContent);
298
- }
299
- }
288
+ await tryCatch(
289
+ async () => {
290
+ const content = await getPersisted();
291
+ if (isArray(content)) {
292
+ setContentOrChanges(content);
293
+ } else if (initialContent) {
294
+ setDefaultContent(initialContent);
295
+ } else {
296
+ errorNew(`Content is not an array: ${content}`);
297
+ }
298
+ },
299
+ () => {
300
+ if (initialContent) {
301
+ setDefaultContent(initialContent);
302
+ }
303
+ },
304
+ );
300
305
  setStatus(0 /* Idle */);
301
306
  });
302
307
  }
@@ -305,29 +310,33 @@ const createCustomPersister = (
305
310
  const startAutoLoad = async (initialContent) => {
306
311
  stopAutoLoad();
307
312
  await load(initialContent);
308
- try {
309
- autoLoadHandle = await addPersisterListener(async (content, changes) => {
310
- if (changes || content) {
311
- /* istanbul ignore else */
312
- if (status != 2 /* Saving */) {
313
- setStatus(1 /* Loading */);
314
- loads++;
315
- setContentOrChanges(changes ?? content);
316
- setStatus(0 /* Idle */);
317
- }
318
- } else {
319
- await load();
320
- }
321
- });
322
- } catch (error) {
323
- /* istanbul ignore next */
324
- onIgnoredError?.(error);
325
- }
313
+ await tryCatch(
314
+ async () =>
315
+ (autoLoadHandle = await addPersisterListener(
316
+ async (content, changes) => {
317
+ if (changes || content) {
318
+ /* istanbul ignore else */
319
+ if (status != 2 /* Saving */) {
320
+ setStatus(1 /* Loading */);
321
+ loads++;
322
+ setContentOrChanges(changes ?? content);
323
+ setStatus(0 /* Idle */);
324
+ }
325
+ } else {
326
+ await load();
327
+ }
328
+ },
329
+ )),
330
+ onIgnoredError,
331
+ );
326
332
  return persister;
327
333
  };
328
- const stopAutoLoad = () => {
334
+ const stopAutoLoad = async () => {
329
335
  if (autoLoadHandle) {
330
- delPersisterListener(autoLoadHandle);
336
+ await tryCatch(
337
+ () => delPersisterListener(autoLoadHandle),
338
+ onIgnoredError,
339
+ );
331
340
  autoLoadHandle = void 0;
332
341
  }
333
342
  return persister;
@@ -339,12 +348,7 @@ const createCustomPersister = (
339
348
  setStatus(2 /* Saving */);
340
349
  saves++;
341
350
  await schedule(async () => {
342
- try {
343
- await setPersisted(getContent, changes);
344
- } catch (error) {
345
- /* istanbul ignore next */
346
- onIgnoredError?.(error);
347
- }
351
+ await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
348
352
  setStatus(0 /* Idle */);
349
353
  });
350
354
  }
@@ -361,7 +365,7 @@ const createCustomPersister = (
361
365
  });
362
366
  return persister;
363
367
  };
364
- const stopAutoSave = () => {
368
+ const stopAutoSave = async () => {
365
369
  if (autoSaveListenerId) {
366
370
  store.delListener(autoSaveListenerId);
367
371
  autoSaveListenerId = void 0;
@@ -382,9 +386,10 @@ const createCustomPersister = (
382
386
  return persister;
383
387
  };
384
388
  const getStore = () => store;
385
- const destroy = () => {
389
+ const destroy = async () => {
386
390
  arrayClear(mapGet(scheduleActions, scheduleId));
387
- return stopAutoLoad().stopAutoSave();
391
+ await persister.stopAutoLoad();
392
+ return await persister.stopAutoSave();
388
393
  };
389
394
  const getStats = () => ({loads, saves});
390
395
  const persister = {
@@ -10,6 +10,14 @@ const test = (regex, subject) => regex.test(subject);
10
10
  const errorNew = (message) => {
11
11
  throw new Error(message);
12
12
  };
13
+ const tryCatch = async (action, then1, then2) => {
14
+ try {
15
+ return await action();
16
+ } catch (error) {
17
+ /* istanbul ignore next */
18
+ then1?.(error);
19
+ }
20
+ };
13
21
 
14
22
  const arrayForEach = (array, cb) => array.forEach(cb);
15
23
  const arrayMap = (array, cb) => array.map(cb);
@@ -257,12 +265,7 @@ const createCustomPersister = (
257
265
  while (
258
266
  !isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
259
267
  ) {
260
- try {
261
- await action();
262
- } catch (error) {
263
- /* istanbul ignore next */
264
- onIgnoredError?.(error);
265
- }
268
+ await tryCatch(action, onIgnoredError);
266
269
  }
267
270
  mapSet(scheduleRunning, scheduleId, 0);
268
271
  }
@@ -282,21 +285,23 @@ const createCustomPersister = (
282
285
  setStatus(1 /* Loading */);
283
286
  loads++;
284
287
  await schedule(async () => {
285
- try {
286
- const content = await getPersisted();
287
- if (isArray(content)) {
288
- setContentOrChanges(content);
289
- } else if (initialContent) {
290
- setDefaultContent(initialContent);
291
- } else {
292
- errorNew(`Content is not an array: ${content}`);
293
- }
294
- } catch (error) {
295
- onIgnoredError?.(error);
296
- if (initialContent) {
297
- setDefaultContent(initialContent);
298
- }
299
- }
288
+ await tryCatch(
289
+ async () => {
290
+ const content = await getPersisted();
291
+ if (isArray(content)) {
292
+ setContentOrChanges(content);
293
+ } else if (initialContent) {
294
+ setDefaultContent(initialContent);
295
+ } else {
296
+ errorNew(`Content is not an array: ${content}`);
297
+ }
298
+ },
299
+ () => {
300
+ if (initialContent) {
301
+ setDefaultContent(initialContent);
302
+ }
303
+ },
304
+ );
300
305
  setStatus(0 /* Idle */);
301
306
  });
302
307
  }
@@ -305,29 +310,33 @@ const createCustomPersister = (
305
310
  const startAutoLoad = async (initialContent) => {
306
311
  stopAutoLoad();
307
312
  await load(initialContent);
308
- try {
309
- autoLoadHandle = await addPersisterListener(async (content, changes) => {
310
- if (changes || content) {
311
- /* istanbul ignore else */
312
- if (status != 2 /* Saving */) {
313
- setStatus(1 /* Loading */);
314
- loads++;
315
- setContentOrChanges(changes ?? content);
316
- setStatus(0 /* Idle */);
317
- }
318
- } else {
319
- await load();
320
- }
321
- });
322
- } catch (error) {
323
- /* istanbul ignore next */
324
- onIgnoredError?.(error);
325
- }
313
+ await tryCatch(
314
+ async () =>
315
+ (autoLoadHandle = await addPersisterListener(
316
+ async (content, changes) => {
317
+ if (changes || content) {
318
+ /* istanbul ignore else */
319
+ if (status != 2 /* Saving */) {
320
+ setStatus(1 /* Loading */);
321
+ loads++;
322
+ setContentOrChanges(changes ?? content);
323
+ setStatus(0 /* Idle */);
324
+ }
325
+ } else {
326
+ await load();
327
+ }
328
+ },
329
+ )),
330
+ onIgnoredError,
331
+ );
326
332
  return persister;
327
333
  };
328
- const stopAutoLoad = () => {
334
+ const stopAutoLoad = async () => {
329
335
  if (autoLoadHandle) {
330
- delPersisterListener(autoLoadHandle);
336
+ await tryCatch(
337
+ () => delPersisterListener(autoLoadHandle),
338
+ onIgnoredError,
339
+ );
331
340
  autoLoadHandle = void 0;
332
341
  }
333
342
  return persister;
@@ -339,12 +348,7 @@ const createCustomPersister = (
339
348
  setStatus(2 /* Saving */);
340
349
  saves++;
341
350
  await schedule(async () => {
342
- try {
343
- await setPersisted(getContent, changes);
344
- } catch (error) {
345
- /* istanbul ignore next */
346
- onIgnoredError?.(error);
347
- }
351
+ await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
348
352
  setStatus(0 /* Idle */);
349
353
  });
350
354
  }
@@ -361,7 +365,7 @@ const createCustomPersister = (
361
365
  });
362
366
  return persister;
363
367
  };
364
- const stopAutoSave = () => {
368
+ const stopAutoSave = async () => {
365
369
  if (autoSaveListenerId) {
366
370
  store.delListener(autoSaveListenerId);
367
371
  autoSaveListenerId = void 0;
@@ -382,9 +386,10 @@ const createCustomPersister = (
382
386
  return persister;
383
387
  };
384
388
  const getStore = () => store;
385
- const destroy = () => {
389
+ const destroy = async () => {
386
390
  arrayClear(mapGet(scheduleActions, scheduleId));
387
- return stopAutoLoad().stopAutoSave();
391
+ await persister.stopAutoLoad();
392
+ return await persister.stopAutoSave();
388
393
  };
389
394
  const getStats = () => ({loads, saves});
390
395
  const persister = {
@@ -12,6 +12,14 @@ const test = (regex, subject) => regex.test(subject);
12
12
  const errorNew = (message) => {
13
13
  throw new Error(message);
14
14
  };
15
+ const tryCatch = async (action, then1, then2) => {
16
+ try {
17
+ return await action();
18
+ } catch (error) {
19
+ /* istanbul ignore next */
20
+ then1?.(error);
21
+ }
22
+ };
15
23
 
16
24
  const arrayForEach = (array, cb) => array.forEach(cb);
17
25
  const arrayClear = (array, to) => array.splice(0, to);
@@ -247,12 +255,7 @@ const createCustomPersister = (
247
255
  while (
248
256
  !isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
249
257
  ) {
250
- try {
251
- await action();
252
- } catch (error) {
253
- /* istanbul ignore next */
254
- onIgnoredError?.(error);
255
- }
258
+ await tryCatch(action, onIgnoredError);
256
259
  }
257
260
  mapSet(scheduleRunning, scheduleId, 0);
258
261
  }
@@ -272,21 +275,23 @@ const createCustomPersister = (
272
275
  setStatus(1 /* Loading */);
273
276
  loads++;
274
277
  await schedule(async () => {
275
- try {
276
- const content = await getPersisted();
277
- if (isArray(content)) {
278
- setContentOrChanges(content);
279
- } else if (initialContent) {
280
- setDefaultContent(initialContent);
281
- } else {
282
- errorNew(`Content is not an array: ${content}`);
283
- }
284
- } catch (error) {
285
- onIgnoredError?.(error);
286
- if (initialContent) {
287
- setDefaultContent(initialContent);
288
- }
289
- }
278
+ await tryCatch(
279
+ async () => {
280
+ const content = await getPersisted();
281
+ if (isArray(content)) {
282
+ setContentOrChanges(content);
283
+ } else if (initialContent) {
284
+ setDefaultContent(initialContent);
285
+ } else {
286
+ errorNew(`Content is not an array: ${content}`);
287
+ }
288
+ },
289
+ () => {
290
+ if (initialContent) {
291
+ setDefaultContent(initialContent);
292
+ }
293
+ },
294
+ );
290
295
  setStatus(0 /* Idle */);
291
296
  });
292
297
  }
@@ -295,29 +300,33 @@ const createCustomPersister = (
295
300
  const startAutoLoad = async (initialContent) => {
296
301
  stopAutoLoad();
297
302
  await load(initialContent);
298
- try {
299
- autoLoadHandle = await addPersisterListener(async (content, changes) => {
300
- if (changes || content) {
301
- /* istanbul ignore else */
302
- if (status != 2 /* Saving */) {
303
- setStatus(1 /* Loading */);
304
- loads++;
305
- setContentOrChanges(changes ?? content);
306
- setStatus(0 /* Idle */);
307
- }
308
- } else {
309
- await load();
310
- }
311
- });
312
- } catch (error) {
313
- /* istanbul ignore next */
314
- onIgnoredError?.(error);
315
- }
303
+ await tryCatch(
304
+ async () =>
305
+ (autoLoadHandle = await addPersisterListener(
306
+ async (content, changes) => {
307
+ if (changes || content) {
308
+ /* istanbul ignore else */
309
+ if (status != 2 /* Saving */) {
310
+ setStatus(1 /* Loading */);
311
+ loads++;
312
+ setContentOrChanges(changes ?? content);
313
+ setStatus(0 /* Idle */);
314
+ }
315
+ } else {
316
+ await load();
317
+ }
318
+ },
319
+ )),
320
+ onIgnoredError,
321
+ );
316
322
  return persister;
317
323
  };
318
- const stopAutoLoad = () => {
324
+ const stopAutoLoad = async () => {
319
325
  if (autoLoadHandle) {
320
- delPersisterListener(autoLoadHandle);
326
+ await tryCatch(
327
+ () => delPersisterListener(autoLoadHandle),
328
+ onIgnoredError,
329
+ );
321
330
  autoLoadHandle = void 0;
322
331
  }
323
332
  return persister;
@@ -329,12 +338,7 @@ const createCustomPersister = (
329
338
  setStatus(2 /* Saving */);
330
339
  saves++;
331
340
  await schedule(async () => {
332
- try {
333
- await setPersisted(getContent, changes);
334
- } catch (error) {
335
- /* istanbul ignore next */
336
- onIgnoredError?.(error);
337
- }
341
+ await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
338
342
  setStatus(0 /* Idle */);
339
343
  });
340
344
  }
@@ -351,7 +355,7 @@ const createCustomPersister = (
351
355
  });
352
356
  return persister;
353
357
  };
354
- const stopAutoSave = () => {
358
+ const stopAutoSave = async () => {
355
359
  if (autoSaveListenerId) {
356
360
  store.delListener(autoSaveListenerId);
357
361
  autoSaveListenerId = void 0;
@@ -372,9 +376,10 @@ const createCustomPersister = (
372
376
  return persister;
373
377
  };
374
378
  const getStore = () => store;
375
- const destroy = () => {
379
+ const destroy = async () => {
376
380
  arrayClear(mapGet(scheduleActions, scheduleId));
377
- return stopAutoLoad().stopAutoSave();
381
+ await persister.stopAutoLoad();
382
+ return await persister.stopAutoSave();
378
383
  };
379
384
  const getStats = () => ({loads, saves});
380
385
  const persister = {
@@ -412,11 +417,7 @@ const createStoragePersister = (
412
417
  const addPersisterListener = (listener) => {
413
418
  const storageListener = (event) => {
414
419
  if (event.storageArea === storage && event.key === storageName) {
415
- try {
416
- listener(jsonParse(event.newValue));
417
- } catch {
418
- listener();
419
- }
420
+ tryCatch(() => listener(jsonParse(event.newValue)), listener);
420
421
  }
421
422
  };
422
423
  WINDOW.addEventListener(STORAGE, storageListener);
@@ -12,6 +12,14 @@ const test = (regex, subject) => regex.test(subject);
12
12
  const errorNew = (message) => {
13
13
  throw new Error(message);
14
14
  };
15
+ const tryCatch = async (action, then1, then2) => {
16
+ try {
17
+ return await action();
18
+ } catch (error) {
19
+ /* istanbul ignore next */
20
+ then1?.(error);
21
+ }
22
+ };
15
23
 
16
24
  const arrayForEach = (array, cb) => array.forEach(cb);
17
25
  const arrayClear = (array, to) => array.splice(0, to);
@@ -247,12 +255,7 @@ const createCustomPersister = (
247
255
  while (
248
256
  !isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
249
257
  ) {
250
- try {
251
- await action();
252
- } catch (error) {
253
- /* istanbul ignore next */
254
- onIgnoredError?.(error);
255
- }
258
+ await tryCatch(action, onIgnoredError);
256
259
  }
257
260
  mapSet(scheduleRunning, scheduleId, 0);
258
261
  }
@@ -272,21 +275,23 @@ const createCustomPersister = (
272
275
  setStatus(1 /* Loading */);
273
276
  loads++;
274
277
  await schedule(async () => {
275
- try {
276
- const content = await getPersisted();
277
- if (isArray(content)) {
278
- setContentOrChanges(content);
279
- } else if (initialContent) {
280
- setDefaultContent(initialContent);
281
- } else {
282
- errorNew(`Content is not an array: ${content}`);
283
- }
284
- } catch (error) {
285
- onIgnoredError?.(error);
286
- if (initialContent) {
287
- setDefaultContent(initialContent);
288
- }
289
- }
278
+ await tryCatch(
279
+ async () => {
280
+ const content = await getPersisted();
281
+ if (isArray(content)) {
282
+ setContentOrChanges(content);
283
+ } else if (initialContent) {
284
+ setDefaultContent(initialContent);
285
+ } else {
286
+ errorNew(`Content is not an array: ${content}`);
287
+ }
288
+ },
289
+ () => {
290
+ if (initialContent) {
291
+ setDefaultContent(initialContent);
292
+ }
293
+ },
294
+ );
290
295
  setStatus(0 /* Idle */);
291
296
  });
292
297
  }
@@ -295,29 +300,33 @@ const createCustomPersister = (
295
300
  const startAutoLoad = async (initialContent) => {
296
301
  stopAutoLoad();
297
302
  await load(initialContent);
298
- try {
299
- autoLoadHandle = await addPersisterListener(async (content, changes) => {
300
- if (changes || content) {
301
- /* istanbul ignore else */
302
- if (status != 2 /* Saving */) {
303
- setStatus(1 /* Loading */);
304
- loads++;
305
- setContentOrChanges(changes ?? content);
306
- setStatus(0 /* Idle */);
307
- }
308
- } else {
309
- await load();
310
- }
311
- });
312
- } catch (error) {
313
- /* istanbul ignore next */
314
- onIgnoredError?.(error);
315
- }
303
+ await tryCatch(
304
+ async () =>
305
+ (autoLoadHandle = await addPersisterListener(
306
+ async (content, changes) => {
307
+ if (changes || content) {
308
+ /* istanbul ignore else */
309
+ if (status != 2 /* Saving */) {
310
+ setStatus(1 /* Loading */);
311
+ loads++;
312
+ setContentOrChanges(changes ?? content);
313
+ setStatus(0 /* Idle */);
314
+ }
315
+ } else {
316
+ await load();
317
+ }
318
+ },
319
+ )),
320
+ onIgnoredError,
321
+ );
316
322
  return persister;
317
323
  };
318
- const stopAutoLoad = () => {
324
+ const stopAutoLoad = async () => {
319
325
  if (autoLoadHandle) {
320
- delPersisterListener(autoLoadHandle);
326
+ await tryCatch(
327
+ () => delPersisterListener(autoLoadHandle),
328
+ onIgnoredError,
329
+ );
321
330
  autoLoadHandle = void 0;
322
331
  }
323
332
  return persister;
@@ -329,12 +338,7 @@ const createCustomPersister = (
329
338
  setStatus(2 /* Saving */);
330
339
  saves++;
331
340
  await schedule(async () => {
332
- try {
333
- await setPersisted(getContent, changes);
334
- } catch (error) {
335
- /* istanbul ignore next */
336
- onIgnoredError?.(error);
337
- }
341
+ await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
338
342
  setStatus(0 /* Idle */);
339
343
  });
340
344
  }
@@ -351,7 +355,7 @@ const createCustomPersister = (
351
355
  });
352
356
  return persister;
353
357
  };
354
- const stopAutoSave = () => {
358
+ const stopAutoSave = async () => {
355
359
  if (autoSaveListenerId) {
356
360
  store.delListener(autoSaveListenerId);
357
361
  autoSaveListenerId = void 0;
@@ -372,9 +376,10 @@ const createCustomPersister = (
372
376
  return persister;
373
377
  };
374
378
  const getStore = () => store;
375
- const destroy = () => {
379
+ const destroy = async () => {
376
380
  arrayClear(mapGet(scheduleActions, scheduleId));
377
- return stopAutoLoad().stopAutoSave();
381
+ await persister.stopAutoLoad();
382
+ return await persister.stopAutoSave();
378
383
  };
379
384
  const getStats = () => ({loads, saves});
380
385
  const persister = {
@@ -412,11 +417,7 @@ const createStoragePersister = (
412
417
  const addPersisterListener = (listener) => {
413
418
  const storageListener = (event) => {
414
419
  if (event.storageArea === storage && event.key === storageName) {
415
- try {
416
- listener(jsonParse(event.newValue));
417
- } catch {
418
- listener();
419
- }
420
+ tryCatch(() => listener(jsonParse(event.newValue)), listener);
420
421
  }
421
422
  };
422
423
  WINDOW.addEventListener(STORAGE, storageListener);