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.
- package/@types/persisters/index.d.ts +82 -40
- package/@types/persisters/persister-automerge/index.d.ts +4 -4
- package/@types/persisters/persister-automerge/with-schemas/index.d.ts +4 -4
- package/@types/persisters/persister-browser/index.d.ts +4 -4
- package/@types/persisters/persister-browser/with-schemas/index.d.ts +4 -4
- package/@types/persisters/persister-cr-sqlite-wasm/index.d.ts +3 -3
- package/@types/persisters/persister-cr-sqlite-wasm/with-schemas/index.d.ts +3 -3
- package/@types/persisters/persister-electric-sql/index.d.ts +3 -3
- package/@types/persisters/persister-electric-sql/with-schemas/index.d.ts +3 -3
- package/@types/persisters/persister-expo-sqlite/index.d.ts +3 -3
- package/@types/persisters/persister-expo-sqlite/with-schemas/index.d.ts +3 -3
- package/@types/persisters/persister-file/index.d.ts +2 -2
- package/@types/persisters/persister-file/with-schemas/index.d.ts +2 -2
- package/@types/persisters/persister-indexed-db/index.d.ts +2 -2
- package/@types/persisters/persister-indexed-db/with-schemas/index.d.ts +2 -2
- package/@types/persisters/persister-libsql/index.d.ts +3 -3
- package/@types/persisters/persister-libsql/with-schemas/index.d.ts +3 -3
- package/@types/persisters/persister-partykit-client/index.d.ts +2 -2
- package/@types/persisters/persister-partykit-client/with-schemas/index.d.ts +2 -2
- package/@types/persisters/persister-pglite/index.d.ts +3 -3
- package/@types/persisters/persister-pglite/with-schemas/index.d.ts +3 -3
- package/@types/persisters/persister-postgres/index.d.ts +3 -3
- package/@types/persisters/persister-postgres/with-schemas/index.d.ts +3 -3
- package/@types/persisters/persister-powersync/index.d.ts +3 -3
- package/@types/persisters/persister-powersync/with-schemas/index.d.ts +3 -3
- package/@types/persisters/persister-remote/index.d.ts +2 -2
- package/@types/persisters/persister-remote/with-schemas/index.d.ts +2 -2
- package/@types/persisters/persister-sqlite-bun/index.d.ts +3 -3
- package/@types/persisters/persister-sqlite-bun/with-schemas/index.d.ts +3 -3
- package/@types/persisters/persister-sqlite-wasm/index.d.ts +3 -3
- package/@types/persisters/persister-sqlite-wasm/with-schemas/index.d.ts +3 -3
- package/@types/persisters/persister-sqlite3/index.d.ts +3 -3
- package/@types/persisters/persister-sqlite3/with-schemas/index.d.ts +3 -3
- package/@types/persisters/persister-yjs/index.d.ts +4 -4
- package/@types/persisters/persister-yjs/with-schemas/index.d.ts +4 -4
- package/@types/persisters/with-schemas/index.d.ts +86 -42
- package/@types/synchronizers/index.d.ts +18 -16
- package/@types/synchronizers/synchronizer-broadcast-channel/index.d.ts +3 -3
- package/@types/synchronizers/synchronizer-broadcast-channel/with-schemas/index.d.ts +3 -3
- package/@types/synchronizers/synchronizer-local/index.d.ts +2 -2
- package/@types/synchronizers/synchronizer-local/with-schemas/index.d.ts +2 -2
- package/@types/synchronizers/synchronizer-ws-client/index.d.ts +5 -5
- package/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.ts +5 -5
- package/@types/synchronizers/synchronizer-ws-server/index.d.ts +37 -37
- package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.ts +37 -37
- package/@types/synchronizers/synchronizer-ws-server-simple/index.d.ts +7 -7
- package/@types/synchronizers/synchronizer-ws-server-simple/with-schemas/index.d.ts +7 -7
- package/@types/synchronizers/with-schemas/index.d.ts +18 -16
- package/@types/ui-react/index.d.ts +2 -2
- package/@types/ui-react/with-schemas/index.d.ts +2 -2
- package/index.js +23 -17
- package/mergeable-store/index.js +23 -17
- package/mergeable-store/with-schemas/index.js +23 -17
- package/min/index.js +1 -1
- package/min/index.js.gz +0 -0
- package/min/mergeable-store/index.js +1 -1
- package/min/mergeable-store/index.js.gz +0 -0
- package/min/mergeable-store/with-schemas/index.js +1 -1
- package/min/mergeable-store/with-schemas/index.js.gz +0 -0
- package/min/persisters/index.js +1 -1
- package/min/persisters/index.js.gz +0 -0
- package/min/persisters/persister-automerge/index.js +1 -1
- package/min/persisters/persister-automerge/index.js.gz +0 -0
- package/min/persisters/persister-automerge/with-schemas/index.js +1 -1
- package/min/persisters/persister-automerge/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-browser/index.js +1 -1
- package/min/persisters/persister-browser/index.js.gz +0 -0
- package/min/persisters/persister-browser/with-schemas/index.js +1 -1
- package/min/persisters/persister-browser/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-cr-sqlite-wasm/index.js +1 -1
- package/min/persisters/persister-cr-sqlite-wasm/index.js.gz +0 -0
- package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +1 -1
- package/min/persisters/persister-cr-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-durable-object-storage/index.js +1 -1
- package/min/persisters/persister-durable-object-storage/index.js.gz +0 -0
- package/min/persisters/persister-durable-object-storage/with-schemas/index.js +1 -1
- package/min/persisters/persister-durable-object-storage/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-electric-sql/index.js +1 -1
- package/min/persisters/persister-electric-sql/index.js.gz +0 -0
- package/min/persisters/persister-electric-sql/with-schemas/index.js +1 -1
- package/min/persisters/persister-electric-sql/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-expo-sqlite/index.js +1 -1
- package/min/persisters/persister-expo-sqlite/index.js.gz +0 -0
- package/min/persisters/persister-expo-sqlite/with-schemas/index.js +1 -1
- package/min/persisters/persister-expo-sqlite/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-file/index.js +1 -1
- package/min/persisters/persister-file/index.js.gz +0 -0
- package/min/persisters/persister-file/with-schemas/index.js +1 -1
- package/min/persisters/persister-file/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-indexed-db/index.js +1 -1
- package/min/persisters/persister-indexed-db/index.js.gz +0 -0
- package/min/persisters/persister-indexed-db/with-schemas/index.js +1 -1
- package/min/persisters/persister-indexed-db/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-libsql/index.js +1 -1
- package/min/persisters/persister-libsql/index.js.gz +0 -0
- package/min/persisters/persister-libsql/with-schemas/index.js +1 -1
- package/min/persisters/persister-libsql/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-partykit-client/index.js +1 -1
- package/min/persisters/persister-partykit-client/index.js.gz +0 -0
- package/min/persisters/persister-partykit-client/with-schemas/index.js +1 -1
- package/min/persisters/persister-partykit-client/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-pglite/index.js +1 -1
- package/min/persisters/persister-pglite/index.js.gz +0 -0
- package/min/persisters/persister-pglite/with-schemas/index.js +1 -1
- package/min/persisters/persister-pglite/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-postgres/index.js +1 -1
- package/min/persisters/persister-postgres/index.js.gz +0 -0
- package/min/persisters/persister-postgres/with-schemas/index.js +1 -1
- package/min/persisters/persister-postgres/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-powersync/index.js +1 -1
- package/min/persisters/persister-powersync/index.js.gz +0 -0
- package/min/persisters/persister-powersync/with-schemas/index.js +1 -1
- package/min/persisters/persister-powersync/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-remote/index.js +1 -1
- package/min/persisters/persister-remote/index.js.gz +0 -0
- package/min/persisters/persister-remote/with-schemas/index.js +1 -1
- package/min/persisters/persister-remote/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-bun/index.js +1 -1
- package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite-bun/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-wasm/index.js +1 -1
- package/min/persisters/persister-sqlite-wasm/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-wasm/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite-wasm/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-sqlite3/index.js +1 -1
- package/min/persisters/persister-sqlite3/index.js.gz +0 -0
- package/min/persisters/persister-sqlite3/with-schemas/index.js +1 -1
- package/min/persisters/persister-sqlite3/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-yjs/index.js +1 -1
- package/min/persisters/persister-yjs/index.js.gz +0 -0
- package/min/persisters/persister-yjs/with-schemas/index.js +1 -1
- package/min/persisters/persister-yjs/with-schemas/index.js.gz +0 -0
- package/min/persisters/with-schemas/index.js +1 -1
- package/min/persisters/with-schemas/index.js.gz +0 -0
- package/min/store/index.js +1 -1
- package/min/store/index.js.gz +0 -0
- package/min/store/with-schemas/index.js +1 -1
- package/min/store/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/index.js +1 -1
- package/min/synchronizers/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-broadcast-channel/index.js +1 -1
- package/min/synchronizers/synchronizer-broadcast-channel/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-local/index.js +1 -1
- package/min/synchronizers/synchronizer-local/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-local/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-local/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-client/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-client/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-client/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server-durable-object/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-durable-object/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server-simple/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-simple/index.js.gz +0 -0
- package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +1 -1
- package/min/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js.gz +0 -0
- package/min/synchronizers/with-schemas/index.js +1 -1
- package/min/synchronizers/with-schemas/index.js.gz +0 -0
- package/min/ui-react-inspector/index.js +1 -1
- package/min/ui-react-inspector/index.js.gz +0 -0
- package/min/ui-react-inspector/with-schemas/index.js +1 -1
- package/min/ui-react-inspector/with-schemas/index.js.gz +0 -0
- package/min/with-schemas/index.js +1 -1
- package/min/with-schemas/index.js.gz +0 -0
- package/package.json +8 -4
- package/persisters/index.js +293 -161
- package/persisters/persister-automerge/index.js +55 -50
- package/persisters/persister-automerge/with-schemas/index.js +55 -50
- package/persisters/persister-browser/index.js +56 -55
- package/persisters/persister-browser/with-schemas/index.js +56 -55
- package/persisters/persister-cr-sqlite-wasm/index.js +181 -134
- package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +181 -134
- package/persisters/persister-durable-object-storage/index.js +58 -53
- package/persisters/persister-durable-object-storage/with-schemas/index.js +58 -53
- package/persisters/persister-electric-sql/index.js +181 -134
- package/persisters/persister-electric-sql/with-schemas/index.js +181 -134
- package/persisters/persister-expo-sqlite/index.js +181 -134
- package/persisters/persister-expo-sqlite/with-schemas/index.js +181 -134
- package/persisters/persister-file/index.js +55 -50
- package/persisters/persister-file/with-schemas/index.js +55 -50
- package/persisters/persister-indexed-db/index.js +82 -78
- package/persisters/persister-indexed-db/with-schemas/index.js +82 -78
- package/persisters/persister-libsql/index.js +182 -135
- package/persisters/persister-libsql/with-schemas/index.js +182 -135
- package/persisters/persister-partykit-client/index.js +56 -51
- package/persisters/persister-partykit-client/with-schemas/index.js +56 -51
- package/persisters/persister-pglite/index.js +299 -173
- package/persisters/persister-pglite/with-schemas/index.js +299 -173
- package/persisters/persister-postgres/index.js +296 -171
- package/persisters/persister-postgres/with-schemas/index.js +296 -171
- package/persisters/persister-powersync/index.js +189 -138
- package/persisters/persister-powersync/with-schemas/index.js +189 -138
- package/persisters/persister-remote/index.js +55 -50
- package/persisters/persister-remote/with-schemas/index.js +55 -50
- package/persisters/persister-sqlite-bun/index.js +182 -135
- package/persisters/persister-sqlite-bun/with-schemas/index.js +182 -135
- package/persisters/persister-sqlite-wasm/index.js +182 -135
- package/persisters/persister-sqlite-wasm/with-schemas/index.js +182 -135
- package/persisters/persister-sqlite3/index.js +181 -134
- package/persisters/persister-sqlite3/with-schemas/index.js +181 -134
- package/persisters/persister-yjs/index.js +55 -50
- package/persisters/persister-yjs/with-schemas/index.js +55 -50
- package/persisters/with-schemas/index.js +293 -161
- package/readme.md +2 -2
- package/releases.md +29 -1
- package/store/index.js +20 -15
- package/store/with-schemas/index.js +20 -15
- package/synchronizers/index.js +68 -63
- package/synchronizers/synchronizer-broadcast-channel/index.js +68 -63
- package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +68 -63
- package/synchronizers/synchronizer-local/index.js +68 -63
- package/synchronizers/synchronizer-local/with-schemas/index.js +68 -63
- package/synchronizers/synchronizer-ws-client/index.js +68 -63
- package/synchronizers/synchronizer-ws-client/with-schemas/index.js +68 -63
- package/synchronizers/synchronizer-ws-server/index.js +79 -70
- package/synchronizers/synchronizer-ws-server/with-schemas/index.js +79 -70
- package/synchronizers/synchronizer-ws-server-durable-object/index.js +69 -51
- package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +69 -51
- package/synchronizers/synchronizer-ws-server-simple/index.js +1 -1
- package/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +1 -1
- package/synchronizers/with-schemas/index.js +68 -63
- package/ui-react-inspector/index.js +68 -60
- package/ui-react-inspector/with-schemas/index.js +68 -60
- 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 arrayMap = (array, cb) => array.map(cb);
|
|
@@ -259,12 +267,7 @@ const createCustomPersister = (
|
|
|
259
267
|
while (
|
|
260
268
|
!isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
|
|
261
269
|
) {
|
|
262
|
-
|
|
263
|
-
await action();
|
|
264
|
-
} catch (error) {
|
|
265
|
-
/* istanbul ignore next */
|
|
266
|
-
onIgnoredError?.(error);
|
|
267
|
-
}
|
|
270
|
+
await tryCatch(action, onIgnoredError);
|
|
268
271
|
}
|
|
269
272
|
mapSet(scheduleRunning, scheduleId, 0);
|
|
270
273
|
}
|
|
@@ -284,21 +287,23 @@ const createCustomPersister = (
|
|
|
284
287
|
setStatus(1 /* Loading */);
|
|
285
288
|
loads++;
|
|
286
289
|
await schedule(async () => {
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
290
|
+
await tryCatch(
|
|
291
|
+
async () => {
|
|
292
|
+
const content = await getPersisted();
|
|
293
|
+
if (isArray(content)) {
|
|
294
|
+
setContentOrChanges(content);
|
|
295
|
+
} else if (initialContent) {
|
|
296
|
+
setDefaultContent(initialContent);
|
|
297
|
+
} else {
|
|
298
|
+
errorNew(`Content is not an array: ${content}`);
|
|
299
|
+
}
|
|
300
|
+
},
|
|
301
|
+
() => {
|
|
302
|
+
if (initialContent) {
|
|
303
|
+
setDefaultContent(initialContent);
|
|
304
|
+
}
|
|
305
|
+
},
|
|
306
|
+
);
|
|
302
307
|
setStatus(0 /* Idle */);
|
|
303
308
|
});
|
|
304
309
|
}
|
|
@@ -307,29 +312,33 @@ const createCustomPersister = (
|
|
|
307
312
|
const startAutoLoad = async (initialContent) => {
|
|
308
313
|
stopAutoLoad();
|
|
309
314
|
await load(initialContent);
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
315
|
+
await tryCatch(
|
|
316
|
+
async () =>
|
|
317
|
+
(autoLoadHandle = await addPersisterListener(
|
|
318
|
+
async (content, changes) => {
|
|
319
|
+
if (changes || content) {
|
|
320
|
+
/* istanbul ignore else */
|
|
321
|
+
if (status != 2 /* Saving */) {
|
|
322
|
+
setStatus(1 /* Loading */);
|
|
323
|
+
loads++;
|
|
324
|
+
setContentOrChanges(changes ?? content);
|
|
325
|
+
setStatus(0 /* Idle */);
|
|
326
|
+
}
|
|
327
|
+
} else {
|
|
328
|
+
await load();
|
|
329
|
+
}
|
|
330
|
+
},
|
|
331
|
+
)),
|
|
332
|
+
onIgnoredError,
|
|
333
|
+
);
|
|
328
334
|
return persister;
|
|
329
335
|
};
|
|
330
|
-
const stopAutoLoad = () => {
|
|
336
|
+
const stopAutoLoad = async () => {
|
|
331
337
|
if (autoLoadHandle) {
|
|
332
|
-
|
|
338
|
+
await tryCatch(
|
|
339
|
+
() => delPersisterListener(autoLoadHandle),
|
|
340
|
+
onIgnoredError,
|
|
341
|
+
);
|
|
333
342
|
autoLoadHandle = void 0;
|
|
334
343
|
}
|
|
335
344
|
return persister;
|
|
@@ -341,12 +350,7 @@ const createCustomPersister = (
|
|
|
341
350
|
setStatus(2 /* Saving */);
|
|
342
351
|
saves++;
|
|
343
352
|
await schedule(async () => {
|
|
344
|
-
|
|
345
|
-
await setPersisted(getContent, changes);
|
|
346
|
-
} catch (error) {
|
|
347
|
-
/* istanbul ignore next */
|
|
348
|
-
onIgnoredError?.(error);
|
|
349
|
-
}
|
|
353
|
+
await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
|
|
350
354
|
setStatus(0 /* Idle */);
|
|
351
355
|
});
|
|
352
356
|
}
|
|
@@ -363,7 +367,7 @@ const createCustomPersister = (
|
|
|
363
367
|
});
|
|
364
368
|
return persister;
|
|
365
369
|
};
|
|
366
|
-
const stopAutoSave = () => {
|
|
370
|
+
const stopAutoSave = async () => {
|
|
367
371
|
if (autoSaveListenerId) {
|
|
368
372
|
store.delListener(autoSaveListenerId);
|
|
369
373
|
autoSaveListenerId = void 0;
|
|
@@ -384,9 +388,10 @@ const createCustomPersister = (
|
|
|
384
388
|
return persister;
|
|
385
389
|
};
|
|
386
390
|
const getStore = () => store;
|
|
387
|
-
const destroy = () => {
|
|
391
|
+
const destroy = async () => {
|
|
388
392
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
389
|
-
|
|
393
|
+
await persister.stopAutoLoad();
|
|
394
|
+
return await persister.stopAutoSave();
|
|
390
395
|
};
|
|
391
396
|
const getStats = () => ({loads, saves});
|
|
392
397
|
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 arrayMap = (array, cb) => array.map(cb);
|
|
@@ -259,12 +267,7 @@ const createCustomPersister = (
|
|
|
259
267
|
while (
|
|
260
268
|
!isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
|
|
261
269
|
) {
|
|
262
|
-
|
|
263
|
-
await action();
|
|
264
|
-
} catch (error) {
|
|
265
|
-
/* istanbul ignore next */
|
|
266
|
-
onIgnoredError?.(error);
|
|
267
|
-
}
|
|
270
|
+
await tryCatch(action, onIgnoredError);
|
|
268
271
|
}
|
|
269
272
|
mapSet(scheduleRunning, scheduleId, 0);
|
|
270
273
|
}
|
|
@@ -284,21 +287,23 @@ const createCustomPersister = (
|
|
|
284
287
|
setStatus(1 /* Loading */);
|
|
285
288
|
loads++;
|
|
286
289
|
await schedule(async () => {
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
290
|
+
await tryCatch(
|
|
291
|
+
async () => {
|
|
292
|
+
const content = await getPersisted();
|
|
293
|
+
if (isArray(content)) {
|
|
294
|
+
setContentOrChanges(content);
|
|
295
|
+
} else if (initialContent) {
|
|
296
|
+
setDefaultContent(initialContent);
|
|
297
|
+
} else {
|
|
298
|
+
errorNew(`Content is not an array: ${content}`);
|
|
299
|
+
}
|
|
300
|
+
},
|
|
301
|
+
() => {
|
|
302
|
+
if (initialContent) {
|
|
303
|
+
setDefaultContent(initialContent);
|
|
304
|
+
}
|
|
305
|
+
},
|
|
306
|
+
);
|
|
302
307
|
setStatus(0 /* Idle */);
|
|
303
308
|
});
|
|
304
309
|
}
|
|
@@ -307,29 +312,33 @@ const createCustomPersister = (
|
|
|
307
312
|
const startAutoLoad = async (initialContent) => {
|
|
308
313
|
stopAutoLoad();
|
|
309
314
|
await load(initialContent);
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
315
|
+
await tryCatch(
|
|
316
|
+
async () =>
|
|
317
|
+
(autoLoadHandle = await addPersisterListener(
|
|
318
|
+
async (content, changes) => {
|
|
319
|
+
if (changes || content) {
|
|
320
|
+
/* istanbul ignore else */
|
|
321
|
+
if (status != 2 /* Saving */) {
|
|
322
|
+
setStatus(1 /* Loading */);
|
|
323
|
+
loads++;
|
|
324
|
+
setContentOrChanges(changes ?? content);
|
|
325
|
+
setStatus(0 /* Idle */);
|
|
326
|
+
}
|
|
327
|
+
} else {
|
|
328
|
+
await load();
|
|
329
|
+
}
|
|
330
|
+
},
|
|
331
|
+
)),
|
|
332
|
+
onIgnoredError,
|
|
333
|
+
);
|
|
328
334
|
return persister;
|
|
329
335
|
};
|
|
330
|
-
const stopAutoLoad = () => {
|
|
336
|
+
const stopAutoLoad = async () => {
|
|
331
337
|
if (autoLoadHandle) {
|
|
332
|
-
|
|
338
|
+
await tryCatch(
|
|
339
|
+
() => delPersisterListener(autoLoadHandle),
|
|
340
|
+
onIgnoredError,
|
|
341
|
+
);
|
|
333
342
|
autoLoadHandle = void 0;
|
|
334
343
|
}
|
|
335
344
|
return persister;
|
|
@@ -341,12 +350,7 @@ const createCustomPersister = (
|
|
|
341
350
|
setStatus(2 /* Saving */);
|
|
342
351
|
saves++;
|
|
343
352
|
await schedule(async () => {
|
|
344
|
-
|
|
345
|
-
await setPersisted(getContent, changes);
|
|
346
|
-
} catch (error) {
|
|
347
|
-
/* istanbul ignore next */
|
|
348
|
-
onIgnoredError?.(error);
|
|
349
|
-
}
|
|
353
|
+
await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
|
|
350
354
|
setStatus(0 /* Idle */);
|
|
351
355
|
});
|
|
352
356
|
}
|
|
@@ -363,7 +367,7 @@ const createCustomPersister = (
|
|
|
363
367
|
});
|
|
364
368
|
return persister;
|
|
365
369
|
};
|
|
366
|
-
const stopAutoSave = () => {
|
|
370
|
+
const stopAutoSave = async () => {
|
|
367
371
|
if (autoSaveListenerId) {
|
|
368
372
|
store.delListener(autoSaveListenerId);
|
|
369
373
|
autoSaveListenerId = void 0;
|
|
@@ -384,9 +388,10 @@ const createCustomPersister = (
|
|
|
384
388
|
return persister;
|
|
385
389
|
};
|
|
386
390
|
const getStore = () => store;
|
|
387
|
-
const destroy = () => {
|
|
391
|
+
const destroy = async () => {
|
|
388
392
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
389
|
-
|
|
393
|
+
await persister.stopAutoLoad();
|
|
394
|
+
return await persister.stopAutoSave();
|
|
390
395
|
};
|
|
391
396
|
const getStats = () => ({loads, saves});
|
|
392
397
|
const persister = {
|