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.
- package/@types/persisters/index.d.ts +83 -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 +159 -0
- package/@types/persisters/persister-sqlite-bun/with-schemas/index.d.ts +178 -0
- 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 +87 -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 -0
- package/min/persisters/persister-sqlite-bun/index.js.gz +0 -0
- package/min/persisters/persister-sqlite-bun/with-schemas/index.js +1 -0
- 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 +46 -6
- 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 +1171 -0
- package/persisters/persister-sqlite-bun/with-schemas/index.js +1171 -0
- 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
|
@@ -15,6 +15,14 @@ const test = (regex, subject) => regex.test(subject);
|
|
|
15
15
|
const errorNew = (message) => {
|
|
16
16
|
throw new Error(message);
|
|
17
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
|
+
};
|
|
18
26
|
|
|
19
27
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
20
28
|
const arrayClear = (array, to) => array.splice(0, to);
|
|
@@ -250,12 +258,7 @@ const createCustomPersister = (
|
|
|
250
258
|
while (
|
|
251
259
|
!isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
|
|
252
260
|
) {
|
|
253
|
-
|
|
254
|
-
await action();
|
|
255
|
-
} catch (error) {
|
|
256
|
-
/* istanbul ignore next */
|
|
257
|
-
onIgnoredError?.(error);
|
|
258
|
-
}
|
|
261
|
+
await tryCatch(action, onIgnoredError);
|
|
259
262
|
}
|
|
260
263
|
mapSet(scheduleRunning, scheduleId, 0);
|
|
261
264
|
}
|
|
@@ -275,21 +278,23 @@ const createCustomPersister = (
|
|
|
275
278
|
setStatus(1 /* Loading */);
|
|
276
279
|
loads++;
|
|
277
280
|
await schedule(async () => {
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
281
|
+
await tryCatch(
|
|
282
|
+
async () => {
|
|
283
|
+
const content = await getPersisted();
|
|
284
|
+
if (isArray(content)) {
|
|
285
|
+
setContentOrChanges(content);
|
|
286
|
+
} else if (initialContent) {
|
|
287
|
+
setDefaultContent(initialContent);
|
|
288
|
+
} else {
|
|
289
|
+
errorNew(`Content is not an array: ${content}`);
|
|
290
|
+
}
|
|
291
|
+
},
|
|
292
|
+
() => {
|
|
293
|
+
if (initialContent) {
|
|
294
|
+
setDefaultContent(initialContent);
|
|
295
|
+
}
|
|
296
|
+
},
|
|
297
|
+
);
|
|
293
298
|
setStatus(0 /* Idle */);
|
|
294
299
|
});
|
|
295
300
|
}
|
|
@@ -298,29 +303,33 @@ const createCustomPersister = (
|
|
|
298
303
|
const startAutoLoad = async (initialContent) => {
|
|
299
304
|
stopAutoLoad();
|
|
300
305
|
await load(initialContent);
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
306
|
+
await tryCatch(
|
|
307
|
+
async () =>
|
|
308
|
+
(autoLoadHandle = await addPersisterListener(
|
|
309
|
+
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
|
+
)),
|
|
323
|
+
onIgnoredError,
|
|
324
|
+
);
|
|
319
325
|
return persister;
|
|
320
326
|
};
|
|
321
|
-
const stopAutoLoad = () => {
|
|
327
|
+
const stopAutoLoad = async () => {
|
|
322
328
|
if (autoLoadHandle) {
|
|
323
|
-
|
|
329
|
+
await tryCatch(
|
|
330
|
+
() => delPersisterListener(autoLoadHandle),
|
|
331
|
+
onIgnoredError,
|
|
332
|
+
);
|
|
324
333
|
autoLoadHandle = void 0;
|
|
325
334
|
}
|
|
326
335
|
return persister;
|
|
@@ -332,12 +341,7 @@ const createCustomPersister = (
|
|
|
332
341
|
setStatus(2 /* Saving */);
|
|
333
342
|
saves++;
|
|
334
343
|
await schedule(async () => {
|
|
335
|
-
|
|
336
|
-
await setPersisted(getContent, changes);
|
|
337
|
-
} catch (error) {
|
|
338
|
-
/* istanbul ignore next */
|
|
339
|
-
onIgnoredError?.(error);
|
|
340
|
-
}
|
|
344
|
+
await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
|
|
341
345
|
setStatus(0 /* Idle */);
|
|
342
346
|
});
|
|
343
347
|
}
|
|
@@ -354,7 +358,7 @@ const createCustomPersister = (
|
|
|
354
358
|
});
|
|
355
359
|
return persister;
|
|
356
360
|
};
|
|
357
|
-
const stopAutoSave = () => {
|
|
361
|
+
const stopAutoSave = async () => {
|
|
358
362
|
if (autoSaveListenerId) {
|
|
359
363
|
store.delListener(autoSaveListenerId);
|
|
360
364
|
autoSaveListenerId = void 0;
|
|
@@ -375,9 +379,10 @@ const createCustomPersister = (
|
|
|
375
379
|
return persister;
|
|
376
380
|
};
|
|
377
381
|
const getStore = () => store;
|
|
378
|
-
const destroy = () => {
|
|
382
|
+
const destroy = async () => {
|
|
379
383
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
380
|
-
|
|
384
|
+
await persister.stopAutoLoad();
|
|
385
|
+
return await persister.stopAutoSave();
|
|
381
386
|
};
|
|
382
387
|
const getStats = () => ({loads, saves});
|
|
383
388
|
const persister = {
|
|
@@ -15,6 +15,14 @@ const test = (regex, subject) => regex.test(subject);
|
|
|
15
15
|
const errorNew = (message) => {
|
|
16
16
|
throw new Error(message);
|
|
17
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
|
+
};
|
|
18
26
|
|
|
19
27
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
20
28
|
const arrayClear = (array, to) => array.splice(0, to);
|
|
@@ -250,12 +258,7 @@ const createCustomPersister = (
|
|
|
250
258
|
while (
|
|
251
259
|
!isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
|
|
252
260
|
) {
|
|
253
|
-
|
|
254
|
-
await action();
|
|
255
|
-
} catch (error) {
|
|
256
|
-
/* istanbul ignore next */
|
|
257
|
-
onIgnoredError?.(error);
|
|
258
|
-
}
|
|
261
|
+
await tryCatch(action, onIgnoredError);
|
|
259
262
|
}
|
|
260
263
|
mapSet(scheduleRunning, scheduleId, 0);
|
|
261
264
|
}
|
|
@@ -275,21 +278,23 @@ const createCustomPersister = (
|
|
|
275
278
|
setStatus(1 /* Loading */);
|
|
276
279
|
loads++;
|
|
277
280
|
await schedule(async () => {
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
281
|
+
await tryCatch(
|
|
282
|
+
async () => {
|
|
283
|
+
const content = await getPersisted();
|
|
284
|
+
if (isArray(content)) {
|
|
285
|
+
setContentOrChanges(content);
|
|
286
|
+
} else if (initialContent) {
|
|
287
|
+
setDefaultContent(initialContent);
|
|
288
|
+
} else {
|
|
289
|
+
errorNew(`Content is not an array: ${content}`);
|
|
290
|
+
}
|
|
291
|
+
},
|
|
292
|
+
() => {
|
|
293
|
+
if (initialContent) {
|
|
294
|
+
setDefaultContent(initialContent);
|
|
295
|
+
}
|
|
296
|
+
},
|
|
297
|
+
);
|
|
293
298
|
setStatus(0 /* Idle */);
|
|
294
299
|
});
|
|
295
300
|
}
|
|
@@ -298,29 +303,33 @@ const createCustomPersister = (
|
|
|
298
303
|
const startAutoLoad = async (initialContent) => {
|
|
299
304
|
stopAutoLoad();
|
|
300
305
|
await load(initialContent);
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
306
|
+
await tryCatch(
|
|
307
|
+
async () =>
|
|
308
|
+
(autoLoadHandle = await addPersisterListener(
|
|
309
|
+
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
|
+
)),
|
|
323
|
+
onIgnoredError,
|
|
324
|
+
);
|
|
319
325
|
return persister;
|
|
320
326
|
};
|
|
321
|
-
const stopAutoLoad = () => {
|
|
327
|
+
const stopAutoLoad = async () => {
|
|
322
328
|
if (autoLoadHandle) {
|
|
323
|
-
|
|
329
|
+
await tryCatch(
|
|
330
|
+
() => delPersisterListener(autoLoadHandle),
|
|
331
|
+
onIgnoredError,
|
|
332
|
+
);
|
|
324
333
|
autoLoadHandle = void 0;
|
|
325
334
|
}
|
|
326
335
|
return persister;
|
|
@@ -332,12 +341,7 @@ const createCustomPersister = (
|
|
|
332
341
|
setStatus(2 /* Saving */);
|
|
333
342
|
saves++;
|
|
334
343
|
await schedule(async () => {
|
|
335
|
-
|
|
336
|
-
await setPersisted(getContent, changes);
|
|
337
|
-
} catch (error) {
|
|
338
|
-
/* istanbul ignore next */
|
|
339
|
-
onIgnoredError?.(error);
|
|
340
|
-
}
|
|
344
|
+
await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
|
|
341
345
|
setStatus(0 /* Idle */);
|
|
342
346
|
});
|
|
343
347
|
}
|
|
@@ -354,7 +358,7 @@ const createCustomPersister = (
|
|
|
354
358
|
});
|
|
355
359
|
return persister;
|
|
356
360
|
};
|
|
357
|
-
const stopAutoSave = () => {
|
|
361
|
+
const stopAutoSave = async () => {
|
|
358
362
|
if (autoSaveListenerId) {
|
|
359
363
|
store.delListener(autoSaveListenerId);
|
|
360
364
|
autoSaveListenerId = void 0;
|
|
@@ -375,9 +379,10 @@ const createCustomPersister = (
|
|
|
375
379
|
return persister;
|
|
376
380
|
};
|
|
377
381
|
const getStore = () => store;
|
|
378
|
-
const destroy = () => {
|
|
382
|
+
const destroy = async () => {
|
|
379
383
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
380
|
-
|
|
384
|
+
await persister.stopAutoLoad();
|
|
385
|
+
return await persister.stopAutoSave();
|
|
381
386
|
};
|
|
382
387
|
const getStats = () => ({loads, saves});
|
|
383
388
|
const persister = {
|