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
@@ -11,9 +11,18 @@ const isArray = (thing) => Array.isArray(thing);
11
11
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
12
12
  const size = (arrayOrString) => arrayOrString.length;
13
13
  const test = (regex, subject) => regex.test(subject);
14
+ const noop = () => {};
14
15
  const errorNew = (message) => {
15
16
  throw new Error(message);
16
17
  };
18
+ const tryCatch = async (action, then1, then2) => {
19
+ try {
20
+ return await action();
21
+ } catch (error) {
22
+ /* istanbul ignore next */
23
+ then1?.(error);
24
+ }
25
+ };
17
26
 
18
27
  const arrayForEach = (array, cb) => array.forEach(cb);
19
28
  const arrayClear = (array, to) => array.splice(0, to);
@@ -276,12 +285,7 @@ const createCustomPersister = (
276
285
  while (
277
286
  !isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
278
287
  ) {
279
- try {
280
- await action();
281
- } catch (error) {
282
- /* istanbul ignore next */
283
- onIgnoredError?.(error);
284
- }
288
+ await tryCatch(action, onIgnoredError);
285
289
  }
286
290
  mapSet(scheduleRunning, scheduleId, 0);
287
291
  }
@@ -301,21 +305,23 @@ const createCustomPersister = (
301
305
  setStatus(1 /* Loading */);
302
306
  loads++;
303
307
  await schedule(async () => {
304
- try {
305
- const content = await getPersisted();
306
- if (isArray(content)) {
307
- setContentOrChanges(content);
308
- } else if (initialContent) {
309
- setDefaultContent(initialContent);
310
- } else {
311
- errorNew(`Content is not an array: ${content}`);
312
- }
313
- } catch (error) {
314
- onIgnoredError?.(error);
315
- if (initialContent) {
316
- setDefaultContent(initialContent);
317
- }
318
- }
308
+ await tryCatch(
309
+ async () => {
310
+ const content = await getPersisted();
311
+ if (isArray(content)) {
312
+ setContentOrChanges(content);
313
+ } else if (initialContent) {
314
+ setDefaultContent(initialContent);
315
+ } else {
316
+ errorNew(`Content is not an array: ${content}`);
317
+ }
318
+ },
319
+ () => {
320
+ if (initialContent) {
321
+ setDefaultContent(initialContent);
322
+ }
323
+ },
324
+ );
319
325
  setStatus(0 /* Idle */);
320
326
  });
321
327
  }
@@ -324,28 +330,33 @@ const createCustomPersister = (
324
330
  const startAutoLoad = async (initialContent) => {
325
331
  stopAutoLoad();
326
332
  await load(initialContent);
327
- try {
328
- autoLoadHandle = await addPersisterListener(async (content, changes) => {
329
- if (changes || content) {
330
- /* istanbul ignore else */
331
- if (status != 2 /* Saving */) {
332
- setStatus(1 /* Loading */);
333
- loads++;
334
- setContentOrChanges(changes ?? content);
335
- setStatus(0 /* Idle */);
336
- }
337
- } else {
338
- await load();
339
- }
340
- });
341
- } catch (error) {
342
- /* istanbul ignore next */
343
- onIgnoredError?.(error);
344
- }
333
+ await tryCatch(
334
+ async () =>
335
+ (autoLoadHandle = await addPersisterListener(
336
+ async (content, changes) => {
337
+ if (changes || content) {
338
+ /* istanbul ignore else */
339
+ if (status != 2 /* Saving */) {
340
+ setStatus(1 /* Loading */);
341
+ loads++;
342
+ setContentOrChanges(changes ?? content);
343
+ setStatus(0 /* Idle */);
344
+ }
345
+ } else {
346
+ await load();
347
+ }
348
+ },
349
+ )),
350
+ onIgnoredError,
351
+ );
345
352
  return persister;
346
353
  };
347
- const stopAutoLoad = () => {
354
+ const stopAutoLoad = async () => {
348
355
  if (autoLoadHandle) {
356
+ await tryCatch(
357
+ () => delPersisterListener(autoLoadHandle),
358
+ onIgnoredError,
359
+ );
349
360
  autoLoadHandle = void 0;
350
361
  }
351
362
  return persister;
@@ -357,12 +368,7 @@ const createCustomPersister = (
357
368
  setStatus(2 /* Saving */);
358
369
  saves++;
359
370
  await schedule(async () => {
360
- try {
361
- await setPersisted(getContent, changes);
362
- } catch (error) {
363
- /* istanbul ignore next */
364
- onIgnoredError?.(error);
365
- }
371
+ await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
366
372
  setStatus(0 /* Idle */);
367
373
  });
368
374
  }
@@ -379,7 +385,7 @@ const createCustomPersister = (
379
385
  });
380
386
  return persister;
381
387
  };
382
- const stopAutoSave = () => {
388
+ const stopAutoSave = async () => {
383
389
  if (autoSaveListenerId) {
384
390
  store.delListener(autoSaveListenerId);
385
391
  autoSaveListenerId = void 0;
@@ -400,9 +406,10 @@ const createCustomPersister = (
400
406
  return persister;
401
407
  };
402
408
  const getStore = () => store;
403
- const destroy = () => {
409
+ const destroy = async () => {
404
410
  arrayClear(mapGet(scheduleActions, scheduleId));
405
- return stopAutoLoad().stopAutoSave();
411
+ await persister.stopAutoLoad();
412
+ return await persister.stopAutoSave();
406
413
  };
407
414
  const getStats = () => ({loads, saves});
408
415
  const persister = {
@@ -521,14 +528,12 @@ const createDurableObjectStoragePersister = (
521
528
  );
522
529
  await storage.put(mapToObj(keysToSet));
523
530
  };
524
- const addPersisterListener = () => {};
525
- const delPersisterListener = () => {};
526
531
  return createCustomPersister(
527
532
  store,
528
533
  getPersisted,
529
534
  setPersisted,
530
- addPersisterListener,
531
- delPersisterListener,
535
+ noop,
536
+ noop,
532
537
  onIgnoredError,
533
538
  2,
534
539
  // MergeableStoreOnly,
@@ -11,9 +11,18 @@ const isArray = (thing) => Array.isArray(thing);
11
11
  const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
12
12
  const size = (arrayOrString) => arrayOrString.length;
13
13
  const test = (regex, subject) => regex.test(subject);
14
+ const noop = () => {};
14
15
  const errorNew = (message) => {
15
16
  throw new Error(message);
16
17
  };
18
+ const tryCatch = async (action, then1, then2) => {
19
+ try {
20
+ return await action();
21
+ } catch (error) {
22
+ /* istanbul ignore next */
23
+ then1?.(error);
24
+ }
25
+ };
17
26
 
18
27
  const arrayForEach = (array, cb) => array.forEach(cb);
19
28
  const arrayClear = (array, to) => array.splice(0, to);
@@ -276,12 +285,7 @@ const createCustomPersister = (
276
285
  while (
277
286
  !isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
278
287
  ) {
279
- try {
280
- await action();
281
- } catch (error) {
282
- /* istanbul ignore next */
283
- onIgnoredError?.(error);
284
- }
288
+ await tryCatch(action, onIgnoredError);
285
289
  }
286
290
  mapSet(scheduleRunning, scheduleId, 0);
287
291
  }
@@ -301,21 +305,23 @@ const createCustomPersister = (
301
305
  setStatus(1 /* Loading */);
302
306
  loads++;
303
307
  await schedule(async () => {
304
- try {
305
- const content = await getPersisted();
306
- if (isArray(content)) {
307
- setContentOrChanges(content);
308
- } else if (initialContent) {
309
- setDefaultContent(initialContent);
310
- } else {
311
- errorNew(`Content is not an array: ${content}`);
312
- }
313
- } catch (error) {
314
- onIgnoredError?.(error);
315
- if (initialContent) {
316
- setDefaultContent(initialContent);
317
- }
318
- }
308
+ await tryCatch(
309
+ async () => {
310
+ const content = await getPersisted();
311
+ if (isArray(content)) {
312
+ setContentOrChanges(content);
313
+ } else if (initialContent) {
314
+ setDefaultContent(initialContent);
315
+ } else {
316
+ errorNew(`Content is not an array: ${content}`);
317
+ }
318
+ },
319
+ () => {
320
+ if (initialContent) {
321
+ setDefaultContent(initialContent);
322
+ }
323
+ },
324
+ );
319
325
  setStatus(0 /* Idle */);
320
326
  });
321
327
  }
@@ -324,28 +330,33 @@ const createCustomPersister = (
324
330
  const startAutoLoad = async (initialContent) => {
325
331
  stopAutoLoad();
326
332
  await load(initialContent);
327
- try {
328
- autoLoadHandle = await addPersisterListener(async (content, changes) => {
329
- if (changes || content) {
330
- /* istanbul ignore else */
331
- if (status != 2 /* Saving */) {
332
- setStatus(1 /* Loading */);
333
- loads++;
334
- setContentOrChanges(changes ?? content);
335
- setStatus(0 /* Idle */);
336
- }
337
- } else {
338
- await load();
339
- }
340
- });
341
- } catch (error) {
342
- /* istanbul ignore next */
343
- onIgnoredError?.(error);
344
- }
333
+ await tryCatch(
334
+ async () =>
335
+ (autoLoadHandle = await addPersisterListener(
336
+ async (content, changes) => {
337
+ if (changes || content) {
338
+ /* istanbul ignore else */
339
+ if (status != 2 /* Saving */) {
340
+ setStatus(1 /* Loading */);
341
+ loads++;
342
+ setContentOrChanges(changes ?? content);
343
+ setStatus(0 /* Idle */);
344
+ }
345
+ } else {
346
+ await load();
347
+ }
348
+ },
349
+ )),
350
+ onIgnoredError,
351
+ );
345
352
  return persister;
346
353
  };
347
- const stopAutoLoad = () => {
354
+ const stopAutoLoad = async () => {
348
355
  if (autoLoadHandle) {
356
+ await tryCatch(
357
+ () => delPersisterListener(autoLoadHandle),
358
+ onIgnoredError,
359
+ );
349
360
  autoLoadHandle = void 0;
350
361
  }
351
362
  return persister;
@@ -357,12 +368,7 @@ const createCustomPersister = (
357
368
  setStatus(2 /* Saving */);
358
369
  saves++;
359
370
  await schedule(async () => {
360
- try {
361
- await setPersisted(getContent, changes);
362
- } catch (error) {
363
- /* istanbul ignore next */
364
- onIgnoredError?.(error);
365
- }
371
+ await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
366
372
  setStatus(0 /* Idle */);
367
373
  });
368
374
  }
@@ -379,7 +385,7 @@ const createCustomPersister = (
379
385
  });
380
386
  return persister;
381
387
  };
382
- const stopAutoSave = () => {
388
+ const stopAutoSave = async () => {
383
389
  if (autoSaveListenerId) {
384
390
  store.delListener(autoSaveListenerId);
385
391
  autoSaveListenerId = void 0;
@@ -400,9 +406,10 @@ const createCustomPersister = (
400
406
  return persister;
401
407
  };
402
408
  const getStore = () => store;
403
- const destroy = () => {
409
+ const destroy = async () => {
404
410
  arrayClear(mapGet(scheduleActions, scheduleId));
405
- return stopAutoLoad().stopAutoSave();
411
+ await persister.stopAutoLoad();
412
+ return await persister.stopAutoSave();
406
413
  };
407
414
  const getStats = () => ({loads, saves});
408
415
  const persister = {
@@ -521,14 +528,12 @@ const createDurableObjectStoragePersister = (
521
528
  );
522
529
  await storage.put(mapToObj(keysToSet));
523
530
  };
524
- const addPersisterListener = () => {};
525
- const delPersisterListener = () => {};
526
531
  return createCustomPersister(
527
532
  store,
528
533
  getPersisted,
529
534
  setPersisted,
530
- addPersisterListener,
531
- delPersisterListener,
535
+ noop,
536
+ noop,
532
537
  onIgnoredError,
533
538
  2,
534
539
  // MergeableStoreOnly,