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
|
@@ -16,6 +16,14 @@ const test = (regex, subject) => regex.test(subject);
|
|
|
16
16
|
const errorNew = (message) => {
|
|
17
17
|
throw new Error(message);
|
|
18
18
|
};
|
|
19
|
+
const tryCatch = async (action, then1, then2) => {
|
|
20
|
+
try {
|
|
21
|
+
return await action();
|
|
22
|
+
} catch (error) {
|
|
23
|
+
/* istanbul ignore next */
|
|
24
|
+
then1?.(error);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
19
27
|
|
|
20
28
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
21
29
|
const arrayClear = (array, to) => array.splice(0, to);
|
|
@@ -251,12 +259,7 @@ const createCustomPersister = (
|
|
|
251
259
|
while (
|
|
252
260
|
!isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
|
|
253
261
|
) {
|
|
254
|
-
|
|
255
|
-
await action();
|
|
256
|
-
} catch (error) {
|
|
257
|
-
/* istanbul ignore next */
|
|
258
|
-
onIgnoredError?.(error);
|
|
259
|
-
}
|
|
262
|
+
await tryCatch(action, onIgnoredError);
|
|
260
263
|
}
|
|
261
264
|
mapSet(scheduleRunning, scheduleId, 0);
|
|
262
265
|
}
|
|
@@ -276,21 +279,23 @@ const createCustomPersister = (
|
|
|
276
279
|
setStatus(1 /* Loading */);
|
|
277
280
|
loads++;
|
|
278
281
|
await schedule(async () => {
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
282
|
+
await tryCatch(
|
|
283
|
+
async () => {
|
|
284
|
+
const content = await getPersisted();
|
|
285
|
+
if (isArray(content)) {
|
|
286
|
+
setContentOrChanges(content);
|
|
287
|
+
} else if (initialContent) {
|
|
288
|
+
setDefaultContent(initialContent);
|
|
289
|
+
} else {
|
|
290
|
+
errorNew(`Content is not an array: ${content}`);
|
|
291
|
+
}
|
|
292
|
+
},
|
|
293
|
+
() => {
|
|
294
|
+
if (initialContent) {
|
|
295
|
+
setDefaultContent(initialContent);
|
|
296
|
+
}
|
|
297
|
+
},
|
|
298
|
+
);
|
|
294
299
|
setStatus(0 /* Idle */);
|
|
295
300
|
});
|
|
296
301
|
}
|
|
@@ -299,29 +304,33 @@ const createCustomPersister = (
|
|
|
299
304
|
const startAutoLoad = async (initialContent) => {
|
|
300
305
|
stopAutoLoad();
|
|
301
306
|
await load(initialContent);
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
307
|
+
await tryCatch(
|
|
308
|
+
async () =>
|
|
309
|
+
(autoLoadHandle = await addPersisterListener(
|
|
310
|
+
async (content, changes) => {
|
|
311
|
+
if (changes || content) {
|
|
312
|
+
/* istanbul ignore else */
|
|
313
|
+
if (status != 2 /* Saving */) {
|
|
314
|
+
setStatus(1 /* Loading */);
|
|
315
|
+
loads++;
|
|
316
|
+
setContentOrChanges(changes ?? content);
|
|
317
|
+
setStatus(0 /* Idle */);
|
|
318
|
+
}
|
|
319
|
+
} else {
|
|
320
|
+
await load();
|
|
321
|
+
}
|
|
322
|
+
},
|
|
323
|
+
)),
|
|
324
|
+
onIgnoredError,
|
|
325
|
+
);
|
|
320
326
|
return persister;
|
|
321
327
|
};
|
|
322
|
-
const stopAutoLoad = () => {
|
|
328
|
+
const stopAutoLoad = async () => {
|
|
323
329
|
if (autoLoadHandle) {
|
|
324
|
-
|
|
330
|
+
await tryCatch(
|
|
331
|
+
() => delPersisterListener(autoLoadHandle),
|
|
332
|
+
onIgnoredError,
|
|
333
|
+
);
|
|
325
334
|
autoLoadHandle = void 0;
|
|
326
335
|
}
|
|
327
336
|
return persister;
|
|
@@ -333,12 +342,7 @@ const createCustomPersister = (
|
|
|
333
342
|
setStatus(2 /* Saving */);
|
|
334
343
|
saves++;
|
|
335
344
|
await schedule(async () => {
|
|
336
|
-
|
|
337
|
-
await setPersisted(getContent, changes);
|
|
338
|
-
} catch (error) {
|
|
339
|
-
/* istanbul ignore next */
|
|
340
|
-
onIgnoredError?.(error);
|
|
341
|
-
}
|
|
345
|
+
await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
|
|
342
346
|
setStatus(0 /* Idle */);
|
|
343
347
|
});
|
|
344
348
|
}
|
|
@@ -355,7 +359,7 @@ const createCustomPersister = (
|
|
|
355
359
|
});
|
|
356
360
|
return persister;
|
|
357
361
|
};
|
|
358
|
-
const stopAutoSave = () => {
|
|
362
|
+
const stopAutoSave = async () => {
|
|
359
363
|
if (autoSaveListenerId) {
|
|
360
364
|
store.delListener(autoSaveListenerId);
|
|
361
365
|
autoSaveListenerId = void 0;
|
|
@@ -376,9 +380,10 @@ const createCustomPersister = (
|
|
|
376
380
|
return persister;
|
|
377
381
|
};
|
|
378
382
|
const getStore = () => store;
|
|
379
|
-
const destroy = () => {
|
|
383
|
+
const destroy = async () => {
|
|
380
384
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
381
|
-
|
|
385
|
+
await persister.stopAutoLoad();
|
|
386
|
+
return await persister.stopAutoSave();
|
|
382
387
|
};
|
|
383
388
|
const getStats = () => ({loads, saves});
|
|
384
389
|
const persister = {
|
|
@@ -450,7 +455,7 @@ const createPartyKitPersister = (
|
|
|
450
455
|
cache: 'no-store',
|
|
451
456
|
})
|
|
452
457
|
).json();
|
|
453
|
-
const getPersisted =
|
|
458
|
+
const getPersisted = getOrSetStore;
|
|
454
459
|
const setPersisted = async (getContent, changes) => {
|
|
455
460
|
if (changes) {
|
|
456
461
|
connection.send(construct(messagePrefix, SET_CHANGES, changes));
|
|
@@ -16,6 +16,14 @@ const test = (regex, subject) => regex.test(subject);
|
|
|
16
16
|
const errorNew = (message) => {
|
|
17
17
|
throw new Error(message);
|
|
18
18
|
};
|
|
19
|
+
const tryCatch = async (action, then1, then2) => {
|
|
20
|
+
try {
|
|
21
|
+
return await action();
|
|
22
|
+
} catch (error) {
|
|
23
|
+
/* istanbul ignore next */
|
|
24
|
+
then1?.(error);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
19
27
|
|
|
20
28
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
21
29
|
const arrayClear = (array, to) => array.splice(0, to);
|
|
@@ -251,12 +259,7 @@ const createCustomPersister = (
|
|
|
251
259
|
while (
|
|
252
260
|
!isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
|
|
253
261
|
) {
|
|
254
|
-
|
|
255
|
-
await action();
|
|
256
|
-
} catch (error) {
|
|
257
|
-
/* istanbul ignore next */
|
|
258
|
-
onIgnoredError?.(error);
|
|
259
|
-
}
|
|
262
|
+
await tryCatch(action, onIgnoredError);
|
|
260
263
|
}
|
|
261
264
|
mapSet(scheduleRunning, scheduleId, 0);
|
|
262
265
|
}
|
|
@@ -276,21 +279,23 @@ const createCustomPersister = (
|
|
|
276
279
|
setStatus(1 /* Loading */);
|
|
277
280
|
loads++;
|
|
278
281
|
await schedule(async () => {
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
282
|
+
await tryCatch(
|
|
283
|
+
async () => {
|
|
284
|
+
const content = await getPersisted();
|
|
285
|
+
if (isArray(content)) {
|
|
286
|
+
setContentOrChanges(content);
|
|
287
|
+
} else if (initialContent) {
|
|
288
|
+
setDefaultContent(initialContent);
|
|
289
|
+
} else {
|
|
290
|
+
errorNew(`Content is not an array: ${content}`);
|
|
291
|
+
}
|
|
292
|
+
},
|
|
293
|
+
() => {
|
|
294
|
+
if (initialContent) {
|
|
295
|
+
setDefaultContent(initialContent);
|
|
296
|
+
}
|
|
297
|
+
},
|
|
298
|
+
);
|
|
294
299
|
setStatus(0 /* Idle */);
|
|
295
300
|
});
|
|
296
301
|
}
|
|
@@ -299,29 +304,33 @@ const createCustomPersister = (
|
|
|
299
304
|
const startAutoLoad = async (initialContent) => {
|
|
300
305
|
stopAutoLoad();
|
|
301
306
|
await load(initialContent);
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
307
|
+
await tryCatch(
|
|
308
|
+
async () =>
|
|
309
|
+
(autoLoadHandle = await addPersisterListener(
|
|
310
|
+
async (content, changes) => {
|
|
311
|
+
if (changes || content) {
|
|
312
|
+
/* istanbul ignore else */
|
|
313
|
+
if (status != 2 /* Saving */) {
|
|
314
|
+
setStatus(1 /* Loading */);
|
|
315
|
+
loads++;
|
|
316
|
+
setContentOrChanges(changes ?? content);
|
|
317
|
+
setStatus(0 /* Idle */);
|
|
318
|
+
}
|
|
319
|
+
} else {
|
|
320
|
+
await load();
|
|
321
|
+
}
|
|
322
|
+
},
|
|
323
|
+
)),
|
|
324
|
+
onIgnoredError,
|
|
325
|
+
);
|
|
320
326
|
return persister;
|
|
321
327
|
};
|
|
322
|
-
const stopAutoLoad = () => {
|
|
328
|
+
const stopAutoLoad = async () => {
|
|
323
329
|
if (autoLoadHandle) {
|
|
324
|
-
|
|
330
|
+
await tryCatch(
|
|
331
|
+
() => delPersisterListener(autoLoadHandle),
|
|
332
|
+
onIgnoredError,
|
|
333
|
+
);
|
|
325
334
|
autoLoadHandle = void 0;
|
|
326
335
|
}
|
|
327
336
|
return persister;
|
|
@@ -333,12 +342,7 @@ const createCustomPersister = (
|
|
|
333
342
|
setStatus(2 /* Saving */);
|
|
334
343
|
saves++;
|
|
335
344
|
await schedule(async () => {
|
|
336
|
-
|
|
337
|
-
await setPersisted(getContent, changes);
|
|
338
|
-
} catch (error) {
|
|
339
|
-
/* istanbul ignore next */
|
|
340
|
-
onIgnoredError?.(error);
|
|
341
|
-
}
|
|
345
|
+
await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
|
|
342
346
|
setStatus(0 /* Idle */);
|
|
343
347
|
});
|
|
344
348
|
}
|
|
@@ -355,7 +359,7 @@ const createCustomPersister = (
|
|
|
355
359
|
});
|
|
356
360
|
return persister;
|
|
357
361
|
};
|
|
358
|
-
const stopAutoSave = () => {
|
|
362
|
+
const stopAutoSave = async () => {
|
|
359
363
|
if (autoSaveListenerId) {
|
|
360
364
|
store.delListener(autoSaveListenerId);
|
|
361
365
|
autoSaveListenerId = void 0;
|
|
@@ -376,9 +380,10 @@ const createCustomPersister = (
|
|
|
376
380
|
return persister;
|
|
377
381
|
};
|
|
378
382
|
const getStore = () => store;
|
|
379
|
-
const destroy = () => {
|
|
383
|
+
const destroy = async () => {
|
|
380
384
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
381
|
-
|
|
385
|
+
await persister.stopAutoLoad();
|
|
386
|
+
return await persister.stopAutoSave();
|
|
382
387
|
};
|
|
383
388
|
const getStats = () => ({loads, saves});
|
|
384
389
|
const persister = {
|
|
@@ -450,7 +455,7 @@ const createPartyKitPersister = (
|
|
|
450
455
|
cache: 'no-store',
|
|
451
456
|
})
|
|
452
457
|
).json();
|
|
453
|
-
const getPersisted =
|
|
458
|
+
const getPersisted = getOrSetStore;
|
|
454
459
|
const setPersisted = async (getContent, changes) => {
|
|
455
460
|
if (changes) {
|
|
456
461
|
connection.send(construct(messagePrefix, SET_CHANGES, changes));
|