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
|
@@ -19,6 +19,14 @@ const promiseNew = (resolver) => new promise(resolver);
|
|
|
19
19
|
const errorNew = (message) => {
|
|
20
20
|
throw new Error(message);
|
|
21
21
|
};
|
|
22
|
+
const tryCatch = async (action, then1, then2) => {
|
|
23
|
+
try {
|
|
24
|
+
return await action();
|
|
25
|
+
} catch (error) {
|
|
26
|
+
/* istanbul ignore next */
|
|
27
|
+
then1?.(error);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
22
30
|
|
|
23
31
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
24
32
|
const arrayMap = (array, cb) => array.map(cb);
|
|
@@ -285,12 +293,7 @@ const createCustomPersister = (
|
|
|
285
293
|
while (
|
|
286
294
|
!isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
|
|
287
295
|
) {
|
|
288
|
-
|
|
289
|
-
await action();
|
|
290
|
-
} catch (error) {
|
|
291
|
-
/* istanbul ignore next */
|
|
292
|
-
onIgnoredError?.(error);
|
|
293
|
-
}
|
|
296
|
+
await tryCatch(action, onIgnoredError);
|
|
294
297
|
}
|
|
295
298
|
mapSet(scheduleRunning, scheduleId, 0);
|
|
296
299
|
}
|
|
@@ -310,21 +313,23 @@ const createCustomPersister = (
|
|
|
310
313
|
setStatus(1 /* Loading */);
|
|
311
314
|
loads++;
|
|
312
315
|
await schedule(async () => {
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
316
|
+
await tryCatch(
|
|
317
|
+
async () => {
|
|
318
|
+
const content = await getPersisted();
|
|
319
|
+
if (isArray(content)) {
|
|
320
|
+
setContentOrChanges(content);
|
|
321
|
+
} else if (initialContent) {
|
|
322
|
+
setDefaultContent(initialContent);
|
|
323
|
+
} else {
|
|
324
|
+
errorNew(`Content is not an array: ${content}`);
|
|
325
|
+
}
|
|
326
|
+
},
|
|
327
|
+
() => {
|
|
328
|
+
if (initialContent) {
|
|
329
|
+
setDefaultContent(initialContent);
|
|
330
|
+
}
|
|
331
|
+
},
|
|
332
|
+
);
|
|
328
333
|
setStatus(0 /* Idle */);
|
|
329
334
|
});
|
|
330
335
|
}
|
|
@@ -333,29 +338,33 @@ const createCustomPersister = (
|
|
|
333
338
|
const startAutoLoad = async (initialContent) => {
|
|
334
339
|
stopAutoLoad();
|
|
335
340
|
await load(initialContent);
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
341
|
+
await tryCatch(
|
|
342
|
+
async () =>
|
|
343
|
+
(autoLoadHandle = await addPersisterListener(
|
|
344
|
+
async (content, changes) => {
|
|
345
|
+
if (changes || content) {
|
|
346
|
+
/* istanbul ignore else */
|
|
347
|
+
if (status != 2 /* Saving */) {
|
|
348
|
+
setStatus(1 /* Loading */);
|
|
349
|
+
loads++;
|
|
350
|
+
setContentOrChanges(changes ?? content);
|
|
351
|
+
setStatus(0 /* Idle */);
|
|
352
|
+
}
|
|
353
|
+
} else {
|
|
354
|
+
await load();
|
|
355
|
+
}
|
|
356
|
+
},
|
|
357
|
+
)),
|
|
358
|
+
onIgnoredError,
|
|
359
|
+
);
|
|
354
360
|
return persister;
|
|
355
361
|
};
|
|
356
|
-
const stopAutoLoad = () => {
|
|
362
|
+
const stopAutoLoad = async () => {
|
|
357
363
|
if (autoLoadHandle) {
|
|
358
|
-
|
|
364
|
+
await tryCatch(
|
|
365
|
+
() => delPersisterListener(autoLoadHandle),
|
|
366
|
+
onIgnoredError,
|
|
367
|
+
);
|
|
359
368
|
autoLoadHandle = void 0;
|
|
360
369
|
}
|
|
361
370
|
return persister;
|
|
@@ -367,12 +376,7 @@ const createCustomPersister = (
|
|
|
367
376
|
setStatus(2 /* Saving */);
|
|
368
377
|
saves++;
|
|
369
378
|
await schedule(async () => {
|
|
370
|
-
|
|
371
|
-
await setPersisted(getContent, changes);
|
|
372
|
-
} catch (error) {
|
|
373
|
-
/* istanbul ignore next */
|
|
374
|
-
onIgnoredError?.(error);
|
|
375
|
-
}
|
|
379
|
+
await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
|
|
376
380
|
setStatus(0 /* Idle */);
|
|
377
381
|
});
|
|
378
382
|
}
|
|
@@ -389,7 +393,7 @@ const createCustomPersister = (
|
|
|
389
393
|
});
|
|
390
394
|
return persister;
|
|
391
395
|
};
|
|
392
|
-
const stopAutoSave = () => {
|
|
396
|
+
const stopAutoSave = async () => {
|
|
393
397
|
if (autoSaveListenerId) {
|
|
394
398
|
store.delListener(autoSaveListenerId);
|
|
395
399
|
autoSaveListenerId = void 0;
|
|
@@ -410,9 +414,10 @@ const createCustomPersister = (
|
|
|
410
414
|
return persister;
|
|
411
415
|
};
|
|
412
416
|
const getStore = () => store;
|
|
413
|
-
const destroy = () => {
|
|
417
|
+
const destroy = async () => {
|
|
414
418
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
415
|
-
|
|
419
|
+
await persister.stopAutoLoad();
|
|
420
|
+
return await persister.stopAutoSave();
|
|
416
421
|
};
|
|
417
422
|
const getStats = () => ({loads, saves});
|
|
418
423
|
const persister = {
|
|
@@ -440,7 +445,7 @@ const createCustomSynchronizer = (
|
|
|
440
445
|
store,
|
|
441
446
|
send,
|
|
442
447
|
registerReceive,
|
|
443
|
-
|
|
448
|
+
extraDestroy,
|
|
444
449
|
requestTimeoutSeconds,
|
|
445
450
|
onSend,
|
|
446
451
|
onReceive,
|
|
@@ -494,12 +499,12 @@ const createCustomSynchronizer = (
|
|
|
494
499
|
});
|
|
495
500
|
tablesStamp[1] = getLatestTime(tablesStamp[1], tablesTime2);
|
|
496
501
|
};
|
|
497
|
-
const getChangesFromOtherStore =
|
|
502
|
+
const getChangesFromOtherStore = (
|
|
498
503
|
otherClientId = null,
|
|
499
504
|
otherContentHashes,
|
|
500
505
|
transactionId = getTransactionId(),
|
|
501
|
-
) =>
|
|
502
|
-
|
|
506
|
+
) =>
|
|
507
|
+
tryCatch(async () => {
|
|
503
508
|
if (isUndefined(otherContentHashes)) {
|
|
504
509
|
[otherContentHashes, otherClientId, transactionId] = await request(
|
|
505
510
|
null,
|
|
@@ -558,10 +563,7 @@ const createCustomSynchronizer = (
|
|
|
558
563
|
)[0],
|
|
559
564
|
1,
|
|
560
565
|
];
|
|
561
|
-
}
|
|
562
|
-
onIgnoredError?.(error);
|
|
563
|
-
}
|
|
564
|
-
};
|
|
566
|
+
}, onIgnoredError);
|
|
565
567
|
const getPersisted = async () => {
|
|
566
568
|
const changes = await getChangesFromOtherStore();
|
|
567
569
|
return changes && (!objIsEmpty(changes[0][0]) || !objIsEmpty(changes[1][0]))
|
|
@@ -585,13 +587,16 @@ const createCustomSynchronizer = (
|
|
|
585
587
|
await persister.startAutoLoad(initialContent)
|
|
586
588
|
).startAutoSave();
|
|
587
589
|
};
|
|
588
|
-
const stopSync = () => {
|
|
590
|
+
const stopSync = async () => {
|
|
589
591
|
syncing = 0;
|
|
590
|
-
|
|
592
|
+
await persister.stopAutoLoad();
|
|
593
|
+
await persister.stopAutoSave();
|
|
594
|
+
return persister;
|
|
591
595
|
};
|
|
592
|
-
const destroy = () => {
|
|
593
|
-
|
|
594
|
-
|
|
596
|
+
const destroy = async () => {
|
|
597
|
+
await persister.stopSync();
|
|
598
|
+
extraDestroy();
|
|
599
|
+
return persister;
|
|
595
600
|
};
|
|
596
601
|
const getSynchronizerStats = () => ({sends, receives});
|
|
597
602
|
const persister = createCustomPersister(
|
|
@@ -25,6 +25,14 @@ const promiseNew = (resolver) => new promise(resolver);
|
|
|
25
25
|
const errorNew = (message) => {
|
|
26
26
|
throw new Error(message);
|
|
27
27
|
};
|
|
28
|
+
const tryCatch = async (action, then1, then2) => {
|
|
29
|
+
try {
|
|
30
|
+
return await action();
|
|
31
|
+
} catch (error) {
|
|
32
|
+
/* istanbul ignore next */
|
|
33
|
+
then1?.(error);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
28
36
|
|
|
29
37
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
30
38
|
const arrayMap = (array, cb) => array.map(cb);
|
|
@@ -312,12 +320,7 @@ const createCustomPersister = (
|
|
|
312
320
|
while (
|
|
313
321
|
!isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
|
|
314
322
|
) {
|
|
315
|
-
|
|
316
|
-
await action();
|
|
317
|
-
} catch (error) {
|
|
318
|
-
/* istanbul ignore next */
|
|
319
|
-
onIgnoredError?.(error);
|
|
320
|
-
}
|
|
323
|
+
await tryCatch(action, onIgnoredError);
|
|
321
324
|
}
|
|
322
325
|
mapSet(scheduleRunning, scheduleId, 0);
|
|
323
326
|
}
|
|
@@ -337,21 +340,23 @@ const createCustomPersister = (
|
|
|
337
340
|
setStatus(1 /* Loading */);
|
|
338
341
|
loads++;
|
|
339
342
|
await schedule(async () => {
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
343
|
+
await tryCatch(
|
|
344
|
+
async () => {
|
|
345
|
+
const content = await getPersisted();
|
|
346
|
+
if (isArray(content)) {
|
|
347
|
+
setContentOrChanges(content);
|
|
348
|
+
} else if (initialContent) {
|
|
349
|
+
setDefaultContent(initialContent);
|
|
350
|
+
} else {
|
|
351
|
+
errorNew(`Content is not an array: ${content}`);
|
|
352
|
+
}
|
|
353
|
+
},
|
|
354
|
+
() => {
|
|
355
|
+
if (initialContent) {
|
|
356
|
+
setDefaultContent(initialContent);
|
|
357
|
+
}
|
|
358
|
+
},
|
|
359
|
+
);
|
|
355
360
|
setStatus(0 /* Idle */);
|
|
356
361
|
});
|
|
357
362
|
}
|
|
@@ -360,29 +365,33 @@ const createCustomPersister = (
|
|
|
360
365
|
const startAutoLoad = async (initialContent) => {
|
|
361
366
|
stopAutoLoad();
|
|
362
367
|
await load(initialContent);
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
368
|
+
await tryCatch(
|
|
369
|
+
async () =>
|
|
370
|
+
(autoLoadHandle = await addPersisterListener(
|
|
371
|
+
async (content, changes) => {
|
|
372
|
+
if (changes || content) {
|
|
373
|
+
/* istanbul ignore else */
|
|
374
|
+
if (status != 2 /* Saving */) {
|
|
375
|
+
setStatus(1 /* Loading */);
|
|
376
|
+
loads++;
|
|
377
|
+
setContentOrChanges(changes ?? content);
|
|
378
|
+
setStatus(0 /* Idle */);
|
|
379
|
+
}
|
|
380
|
+
} else {
|
|
381
|
+
await load();
|
|
382
|
+
}
|
|
383
|
+
},
|
|
384
|
+
)),
|
|
385
|
+
onIgnoredError,
|
|
386
|
+
);
|
|
381
387
|
return persister;
|
|
382
388
|
};
|
|
383
|
-
const stopAutoLoad = () => {
|
|
389
|
+
const stopAutoLoad = async () => {
|
|
384
390
|
if (autoLoadHandle) {
|
|
385
|
-
|
|
391
|
+
await tryCatch(
|
|
392
|
+
() => delPersisterListener(autoLoadHandle),
|
|
393
|
+
onIgnoredError,
|
|
394
|
+
);
|
|
386
395
|
autoLoadHandle = void 0;
|
|
387
396
|
}
|
|
388
397
|
return persister;
|
|
@@ -394,12 +403,7 @@ const createCustomPersister = (
|
|
|
394
403
|
setStatus(2 /* Saving */);
|
|
395
404
|
saves++;
|
|
396
405
|
await schedule(async () => {
|
|
397
|
-
|
|
398
|
-
await setPersisted(getContent, changes);
|
|
399
|
-
} catch (error) {
|
|
400
|
-
/* istanbul ignore next */
|
|
401
|
-
onIgnoredError?.(error);
|
|
402
|
-
}
|
|
406
|
+
await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
|
|
403
407
|
setStatus(0 /* Idle */);
|
|
404
408
|
});
|
|
405
409
|
}
|
|
@@ -416,7 +420,7 @@ const createCustomPersister = (
|
|
|
416
420
|
});
|
|
417
421
|
return persister;
|
|
418
422
|
};
|
|
419
|
-
const stopAutoSave = () => {
|
|
423
|
+
const stopAutoSave = async () => {
|
|
420
424
|
if (autoSaveListenerId) {
|
|
421
425
|
store.delListener(autoSaveListenerId);
|
|
422
426
|
autoSaveListenerId = void 0;
|
|
@@ -437,9 +441,10 @@ const createCustomPersister = (
|
|
|
437
441
|
return persister;
|
|
438
442
|
};
|
|
439
443
|
const getStore = () => store;
|
|
440
|
-
const destroy = () => {
|
|
444
|
+
const destroy = async () => {
|
|
441
445
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
442
|
-
|
|
446
|
+
await persister.stopAutoLoad();
|
|
447
|
+
return await persister.stopAutoSave();
|
|
443
448
|
};
|
|
444
449
|
const getStats = () => ({loads, saves});
|
|
445
450
|
const persister = {
|
|
@@ -467,7 +472,7 @@ const createCustomSynchronizer = (
|
|
|
467
472
|
store,
|
|
468
473
|
send,
|
|
469
474
|
registerReceive,
|
|
470
|
-
|
|
475
|
+
extraDestroy,
|
|
471
476
|
requestTimeoutSeconds,
|
|
472
477
|
onSend,
|
|
473
478
|
onReceive,
|
|
@@ -521,12 +526,12 @@ const createCustomSynchronizer = (
|
|
|
521
526
|
});
|
|
522
527
|
tablesStamp[1] = getLatestTime(tablesStamp[1], tablesTime2);
|
|
523
528
|
};
|
|
524
|
-
const getChangesFromOtherStore =
|
|
529
|
+
const getChangesFromOtherStore = (
|
|
525
530
|
otherClientId = null,
|
|
526
531
|
otherContentHashes,
|
|
527
532
|
transactionId = getTransactionId(),
|
|
528
|
-
) =>
|
|
529
|
-
|
|
533
|
+
) =>
|
|
534
|
+
tryCatch(async () => {
|
|
530
535
|
if (isUndefined(otherContentHashes)) {
|
|
531
536
|
[otherContentHashes, otherClientId, transactionId] = await request(
|
|
532
537
|
null,
|
|
@@ -585,10 +590,7 @@ const createCustomSynchronizer = (
|
|
|
585
590
|
)[0],
|
|
586
591
|
1,
|
|
587
592
|
];
|
|
588
|
-
}
|
|
589
|
-
onIgnoredError?.(error);
|
|
590
|
-
}
|
|
591
|
-
};
|
|
593
|
+
}, onIgnoredError);
|
|
592
594
|
const getPersisted = async () => {
|
|
593
595
|
const changes = await getChangesFromOtherStore();
|
|
594
596
|
return changes && (!objIsEmpty(changes[0][0]) || !objIsEmpty(changes[1][0]))
|
|
@@ -612,13 +614,16 @@ const createCustomSynchronizer = (
|
|
|
612
614
|
await persister.startAutoLoad(initialContent)
|
|
613
615
|
).startAutoSave();
|
|
614
616
|
};
|
|
615
|
-
const stopSync = () => {
|
|
617
|
+
const stopSync = async () => {
|
|
616
618
|
syncing = 0;
|
|
617
|
-
|
|
619
|
+
await persister.stopAutoLoad();
|
|
620
|
+
await persister.stopAutoSave();
|
|
621
|
+
return persister;
|
|
618
622
|
};
|
|
619
|
-
const destroy = () => {
|
|
620
|
-
|
|
621
|
-
|
|
623
|
+
const destroy = async () => {
|
|
624
|
+
await persister.stopSync();
|
|
625
|
+
extraDestroy();
|
|
626
|
+
return persister;
|
|
622
627
|
};
|
|
623
628
|
const getSynchronizerStats = () => ({sends, receives});
|
|
624
629
|
const persister = createCustomPersister(
|
|
@@ -25,6 +25,14 @@ const promiseNew = (resolver) => new promise(resolver);
|
|
|
25
25
|
const errorNew = (message) => {
|
|
26
26
|
throw new Error(message);
|
|
27
27
|
};
|
|
28
|
+
const tryCatch = async (action, then1, then2) => {
|
|
29
|
+
try {
|
|
30
|
+
return await action();
|
|
31
|
+
} catch (error) {
|
|
32
|
+
/* istanbul ignore next */
|
|
33
|
+
then1?.(error);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
28
36
|
|
|
29
37
|
const arrayForEach = (array, cb) => array.forEach(cb);
|
|
30
38
|
const arrayMap = (array, cb) => array.map(cb);
|
|
@@ -312,12 +320,7 @@ const createCustomPersister = (
|
|
|
312
320
|
while (
|
|
313
321
|
!isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
|
|
314
322
|
) {
|
|
315
|
-
|
|
316
|
-
await action();
|
|
317
|
-
} catch (error) {
|
|
318
|
-
/* istanbul ignore next */
|
|
319
|
-
onIgnoredError?.(error);
|
|
320
|
-
}
|
|
323
|
+
await tryCatch(action, onIgnoredError);
|
|
321
324
|
}
|
|
322
325
|
mapSet(scheduleRunning, scheduleId, 0);
|
|
323
326
|
}
|
|
@@ -337,21 +340,23 @@ const createCustomPersister = (
|
|
|
337
340
|
setStatus(1 /* Loading */);
|
|
338
341
|
loads++;
|
|
339
342
|
await schedule(async () => {
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
343
|
+
await tryCatch(
|
|
344
|
+
async () => {
|
|
345
|
+
const content = await getPersisted();
|
|
346
|
+
if (isArray(content)) {
|
|
347
|
+
setContentOrChanges(content);
|
|
348
|
+
} else if (initialContent) {
|
|
349
|
+
setDefaultContent(initialContent);
|
|
350
|
+
} else {
|
|
351
|
+
errorNew(`Content is not an array: ${content}`);
|
|
352
|
+
}
|
|
353
|
+
},
|
|
354
|
+
() => {
|
|
355
|
+
if (initialContent) {
|
|
356
|
+
setDefaultContent(initialContent);
|
|
357
|
+
}
|
|
358
|
+
},
|
|
359
|
+
);
|
|
355
360
|
setStatus(0 /* Idle */);
|
|
356
361
|
});
|
|
357
362
|
}
|
|
@@ -360,29 +365,33 @@ const createCustomPersister = (
|
|
|
360
365
|
const startAutoLoad = async (initialContent) => {
|
|
361
366
|
stopAutoLoad();
|
|
362
367
|
await load(initialContent);
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
368
|
+
await tryCatch(
|
|
369
|
+
async () =>
|
|
370
|
+
(autoLoadHandle = await addPersisterListener(
|
|
371
|
+
async (content, changes) => {
|
|
372
|
+
if (changes || content) {
|
|
373
|
+
/* istanbul ignore else */
|
|
374
|
+
if (status != 2 /* Saving */) {
|
|
375
|
+
setStatus(1 /* Loading */);
|
|
376
|
+
loads++;
|
|
377
|
+
setContentOrChanges(changes ?? content);
|
|
378
|
+
setStatus(0 /* Idle */);
|
|
379
|
+
}
|
|
380
|
+
} else {
|
|
381
|
+
await load();
|
|
382
|
+
}
|
|
383
|
+
},
|
|
384
|
+
)),
|
|
385
|
+
onIgnoredError,
|
|
386
|
+
);
|
|
381
387
|
return persister;
|
|
382
388
|
};
|
|
383
|
-
const stopAutoLoad = () => {
|
|
389
|
+
const stopAutoLoad = async () => {
|
|
384
390
|
if (autoLoadHandle) {
|
|
385
|
-
|
|
391
|
+
await tryCatch(
|
|
392
|
+
() => delPersisterListener(autoLoadHandle),
|
|
393
|
+
onIgnoredError,
|
|
394
|
+
);
|
|
386
395
|
autoLoadHandle = void 0;
|
|
387
396
|
}
|
|
388
397
|
return persister;
|
|
@@ -394,12 +403,7 @@ const createCustomPersister = (
|
|
|
394
403
|
setStatus(2 /* Saving */);
|
|
395
404
|
saves++;
|
|
396
405
|
await schedule(async () => {
|
|
397
|
-
|
|
398
|
-
await setPersisted(getContent, changes);
|
|
399
|
-
} catch (error) {
|
|
400
|
-
/* istanbul ignore next */
|
|
401
|
-
onIgnoredError?.(error);
|
|
402
|
-
}
|
|
406
|
+
await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
|
|
403
407
|
setStatus(0 /* Idle */);
|
|
404
408
|
});
|
|
405
409
|
}
|
|
@@ -416,7 +420,7 @@ const createCustomPersister = (
|
|
|
416
420
|
});
|
|
417
421
|
return persister;
|
|
418
422
|
};
|
|
419
|
-
const stopAutoSave = () => {
|
|
423
|
+
const stopAutoSave = async () => {
|
|
420
424
|
if (autoSaveListenerId) {
|
|
421
425
|
store.delListener(autoSaveListenerId);
|
|
422
426
|
autoSaveListenerId = void 0;
|
|
@@ -437,9 +441,10 @@ const createCustomPersister = (
|
|
|
437
441
|
return persister;
|
|
438
442
|
};
|
|
439
443
|
const getStore = () => store;
|
|
440
|
-
const destroy = () => {
|
|
444
|
+
const destroy = async () => {
|
|
441
445
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
442
|
-
|
|
446
|
+
await persister.stopAutoLoad();
|
|
447
|
+
return await persister.stopAutoSave();
|
|
443
448
|
};
|
|
444
449
|
const getStats = () => ({loads, saves});
|
|
445
450
|
const persister = {
|
|
@@ -467,7 +472,7 @@ const createCustomSynchronizer = (
|
|
|
467
472
|
store,
|
|
468
473
|
send,
|
|
469
474
|
registerReceive,
|
|
470
|
-
|
|
475
|
+
extraDestroy,
|
|
471
476
|
requestTimeoutSeconds,
|
|
472
477
|
onSend,
|
|
473
478
|
onReceive,
|
|
@@ -521,12 +526,12 @@ const createCustomSynchronizer = (
|
|
|
521
526
|
});
|
|
522
527
|
tablesStamp[1] = getLatestTime(tablesStamp[1], tablesTime2);
|
|
523
528
|
};
|
|
524
|
-
const getChangesFromOtherStore =
|
|
529
|
+
const getChangesFromOtherStore = (
|
|
525
530
|
otherClientId = null,
|
|
526
531
|
otherContentHashes,
|
|
527
532
|
transactionId = getTransactionId(),
|
|
528
|
-
) =>
|
|
529
|
-
|
|
533
|
+
) =>
|
|
534
|
+
tryCatch(async () => {
|
|
530
535
|
if (isUndefined(otherContentHashes)) {
|
|
531
536
|
[otherContentHashes, otherClientId, transactionId] = await request(
|
|
532
537
|
null,
|
|
@@ -585,10 +590,7 @@ const createCustomSynchronizer = (
|
|
|
585
590
|
)[0],
|
|
586
591
|
1,
|
|
587
592
|
];
|
|
588
|
-
}
|
|
589
|
-
onIgnoredError?.(error);
|
|
590
|
-
}
|
|
591
|
-
};
|
|
593
|
+
}, onIgnoredError);
|
|
592
594
|
const getPersisted = async () => {
|
|
593
595
|
const changes = await getChangesFromOtherStore();
|
|
594
596
|
return changes && (!objIsEmpty(changes[0][0]) || !objIsEmpty(changes[1][0]))
|
|
@@ -612,13 +614,16 @@ const createCustomSynchronizer = (
|
|
|
612
614
|
await persister.startAutoLoad(initialContent)
|
|
613
615
|
).startAutoSave();
|
|
614
616
|
};
|
|
615
|
-
const stopSync = () => {
|
|
617
|
+
const stopSync = async () => {
|
|
616
618
|
syncing = 0;
|
|
617
|
-
|
|
619
|
+
await persister.stopAutoLoad();
|
|
620
|
+
await persister.stopAutoSave();
|
|
621
|
+
return persister;
|
|
618
622
|
};
|
|
619
|
-
const destroy = () => {
|
|
620
|
-
|
|
621
|
-
|
|
623
|
+
const destroy = async () => {
|
|
624
|
+
await persister.stopSync();
|
|
625
|
+
extraDestroy();
|
|
626
|
+
return persister;
|
|
622
627
|
};
|
|
623
628
|
const getSynchronizerStats = () => ({sends, receives});
|
|
624
629
|
const persister = createCustomPersister(
|