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
|
@@ -93,6 +93,14 @@ const test = (regex, subject) => regex.test(subject);
|
|
|
93
93
|
const errorNew = (message) => {
|
|
94
94
|
throw new Error(message);
|
|
95
95
|
};
|
|
96
|
+
const tryCatch = async (action, then1, then2) => {
|
|
97
|
+
try {
|
|
98
|
+
return await action();
|
|
99
|
+
} catch (error) {
|
|
100
|
+
/* istanbul ignore next */
|
|
101
|
+
then1?.(error);
|
|
102
|
+
}
|
|
103
|
+
};
|
|
96
104
|
|
|
97
105
|
const arrayHas = (array, value) => array.includes(value);
|
|
98
106
|
const arrayEvery = (array, cb) => array.every(cb);
|
|
@@ -423,9 +431,7 @@ const createCustomPersister = (
|
|
|
423
431
|
while (
|
|
424
432
|
!isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
|
|
425
433
|
) {
|
|
426
|
-
|
|
427
|
-
await action();
|
|
428
|
-
} catch (error) {}
|
|
434
|
+
await tryCatch(action, onIgnoredError);
|
|
429
435
|
}
|
|
430
436
|
mapSet(scheduleRunning, scheduleId, 0);
|
|
431
437
|
}
|
|
@@ -445,20 +451,23 @@ const createCustomPersister = (
|
|
|
445
451
|
setStatus(1 /* Loading */);
|
|
446
452
|
loads++;
|
|
447
453
|
await schedule(async () => {
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
454
|
+
await tryCatch(
|
|
455
|
+
async () => {
|
|
456
|
+
const content = await getPersisted();
|
|
457
|
+
if (isArray(content)) {
|
|
458
|
+
setContentOrChanges(content);
|
|
459
|
+
} else if (initialContent) {
|
|
460
|
+
setDefaultContent(initialContent);
|
|
461
|
+
} else {
|
|
462
|
+
errorNew(`Content is not an array: ${content}`);
|
|
463
|
+
}
|
|
464
|
+
},
|
|
465
|
+
() => {
|
|
466
|
+
if (initialContent) {
|
|
467
|
+
setDefaultContent(initialContent);
|
|
468
|
+
}
|
|
469
|
+
},
|
|
470
|
+
);
|
|
462
471
|
setStatus(0 /* Idle */);
|
|
463
472
|
});
|
|
464
473
|
}
|
|
@@ -467,26 +476,33 @@ const createCustomPersister = (
|
|
|
467
476
|
const startAutoLoad = async (initialContent) => {
|
|
468
477
|
stopAutoLoad();
|
|
469
478
|
await load(initialContent);
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
479
|
+
await tryCatch(
|
|
480
|
+
async () =>
|
|
481
|
+
(autoLoadHandle = await addPersisterListener(
|
|
482
|
+
async (content, changes) => {
|
|
483
|
+
if (changes || content) {
|
|
484
|
+
/* istanbul ignore else */
|
|
485
|
+
if (status != 2 /* Saving */) {
|
|
486
|
+
setStatus(1 /* Loading */);
|
|
487
|
+
loads++;
|
|
488
|
+
setContentOrChanges(changes ?? content);
|
|
489
|
+
setStatus(0 /* Idle */);
|
|
490
|
+
}
|
|
491
|
+
} else {
|
|
492
|
+
await load();
|
|
493
|
+
}
|
|
494
|
+
},
|
|
495
|
+
)),
|
|
496
|
+
onIgnoredError,
|
|
497
|
+
);
|
|
485
498
|
return persister;
|
|
486
499
|
};
|
|
487
|
-
const stopAutoLoad = () => {
|
|
500
|
+
const stopAutoLoad = async () => {
|
|
488
501
|
if (autoLoadHandle) {
|
|
489
|
-
|
|
502
|
+
await tryCatch(
|
|
503
|
+
() => delPersisterListener(autoLoadHandle),
|
|
504
|
+
onIgnoredError,
|
|
505
|
+
);
|
|
490
506
|
autoLoadHandle = void 0;
|
|
491
507
|
}
|
|
492
508
|
return persister;
|
|
@@ -498,9 +514,7 @@ const createCustomPersister = (
|
|
|
498
514
|
setStatus(2 /* Saving */);
|
|
499
515
|
saves++;
|
|
500
516
|
await schedule(async () => {
|
|
501
|
-
|
|
502
|
-
await setPersisted(getContent, changes);
|
|
503
|
-
} catch (error) {}
|
|
517
|
+
await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
|
|
504
518
|
setStatus(0 /* Idle */);
|
|
505
519
|
});
|
|
506
520
|
}
|
|
@@ -517,7 +531,7 @@ const createCustomPersister = (
|
|
|
517
531
|
});
|
|
518
532
|
return persister;
|
|
519
533
|
};
|
|
520
|
-
const stopAutoSave = () => {
|
|
534
|
+
const stopAutoSave = async () => {
|
|
521
535
|
if (autoSaveListenerId) {
|
|
522
536
|
store.delListener(autoSaveListenerId);
|
|
523
537
|
autoSaveListenerId = void 0;
|
|
@@ -538,9 +552,10 @@ const createCustomPersister = (
|
|
|
538
552
|
return persister;
|
|
539
553
|
};
|
|
540
554
|
const getStore = () => store;
|
|
541
|
-
const destroy = () => {
|
|
555
|
+
const destroy = async () => {
|
|
542
556
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
543
|
-
|
|
557
|
+
await persister.stopAutoLoad();
|
|
558
|
+
return await persister.stopAutoSave();
|
|
544
559
|
};
|
|
545
560
|
const getStats = () => ({loads, saves});
|
|
546
561
|
const persister = {
|
|
@@ -578,11 +593,7 @@ const createStoragePersister = (
|
|
|
578
593
|
const addPersisterListener = (listener) => {
|
|
579
594
|
const storageListener = (event) => {
|
|
580
595
|
if (event.storageArea === storage && event.key === storageName) {
|
|
581
|
-
|
|
582
|
-
listener(jsonParse(event.newValue));
|
|
583
|
-
} catch {
|
|
584
|
-
listener();
|
|
585
|
-
}
|
|
596
|
+
tryCatch(() => listener(jsonParse(event.newValue)), listener);
|
|
586
597
|
}
|
|
587
598
|
};
|
|
588
599
|
WINDOW.addEventListener(STORAGE, storageListener);
|
|
@@ -1466,27 +1477,24 @@ const createStore = () => {
|
|
|
1466
1477
|
);
|
|
1467
1478
|
});
|
|
1468
1479
|
const setTablesJson = (tablesJson) => {
|
|
1469
|
-
|
|
1470
|
-
setOrDelTables(jsonParse(tablesJson));
|
|
1471
|
-
} catch {}
|
|
1480
|
+
tryCatch(() => setOrDelTables(jsonParse(tablesJson)));
|
|
1472
1481
|
return store;
|
|
1473
1482
|
};
|
|
1474
1483
|
const setValuesJson = (valuesJson) => {
|
|
1475
|
-
|
|
1476
|
-
setOrDelValues(jsonParse(valuesJson));
|
|
1477
|
-
} catch {}
|
|
1484
|
+
tryCatch(() => setOrDelValues(jsonParse(valuesJson)));
|
|
1478
1485
|
return store;
|
|
1479
1486
|
};
|
|
1480
1487
|
const setJson = (tablesAndValuesJson) =>
|
|
1481
|
-
fluentTransaction(() =>
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1488
|
+
fluentTransaction(() =>
|
|
1489
|
+
tryCatch(
|
|
1490
|
+
() => {
|
|
1491
|
+
const [tables, values] = jsonParse(tablesAndValuesJson);
|
|
1492
|
+
setOrDelTables(tables);
|
|
1493
|
+
setOrDelValues(values);
|
|
1494
|
+
},
|
|
1495
|
+
() => setTablesJson(tablesAndValuesJson),
|
|
1496
|
+
),
|
|
1497
|
+
);
|
|
1490
1498
|
const setTablesSchema = (tablesSchema) =>
|
|
1491
1499
|
fluentTransaction(() => {
|
|
1492
1500
|
if ((hasTablesSchema = validateTablesSchema(tablesSchema))) {
|
|
@@ -93,6 +93,14 @@ const test = (regex, subject) => regex.test(subject);
|
|
|
93
93
|
const errorNew = (message) => {
|
|
94
94
|
throw new Error(message);
|
|
95
95
|
};
|
|
96
|
+
const tryCatch = async (action, then1, then2) => {
|
|
97
|
+
try {
|
|
98
|
+
return await action();
|
|
99
|
+
} catch (error) {
|
|
100
|
+
/* istanbul ignore next */
|
|
101
|
+
then1?.(error);
|
|
102
|
+
}
|
|
103
|
+
};
|
|
96
104
|
|
|
97
105
|
const arrayHas = (array, value) => array.includes(value);
|
|
98
106
|
const arrayEvery = (array, cb) => array.every(cb);
|
|
@@ -423,9 +431,7 @@ const createCustomPersister = (
|
|
|
423
431
|
while (
|
|
424
432
|
!isUndefined((action = arrayShift(mapGet(scheduleActions, scheduleId))))
|
|
425
433
|
) {
|
|
426
|
-
|
|
427
|
-
await action();
|
|
428
|
-
} catch (error) {}
|
|
434
|
+
await tryCatch(action, onIgnoredError);
|
|
429
435
|
}
|
|
430
436
|
mapSet(scheduleRunning, scheduleId, 0);
|
|
431
437
|
}
|
|
@@ -445,20 +451,23 @@ const createCustomPersister = (
|
|
|
445
451
|
setStatus(1 /* Loading */);
|
|
446
452
|
loads++;
|
|
447
453
|
await schedule(async () => {
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
454
|
+
await tryCatch(
|
|
455
|
+
async () => {
|
|
456
|
+
const content = await getPersisted();
|
|
457
|
+
if (isArray(content)) {
|
|
458
|
+
setContentOrChanges(content);
|
|
459
|
+
} else if (initialContent) {
|
|
460
|
+
setDefaultContent(initialContent);
|
|
461
|
+
} else {
|
|
462
|
+
errorNew(`Content is not an array: ${content}`);
|
|
463
|
+
}
|
|
464
|
+
},
|
|
465
|
+
() => {
|
|
466
|
+
if (initialContent) {
|
|
467
|
+
setDefaultContent(initialContent);
|
|
468
|
+
}
|
|
469
|
+
},
|
|
470
|
+
);
|
|
462
471
|
setStatus(0 /* Idle */);
|
|
463
472
|
});
|
|
464
473
|
}
|
|
@@ -467,26 +476,33 @@ const createCustomPersister = (
|
|
|
467
476
|
const startAutoLoad = async (initialContent) => {
|
|
468
477
|
stopAutoLoad();
|
|
469
478
|
await load(initialContent);
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
479
|
+
await tryCatch(
|
|
480
|
+
async () =>
|
|
481
|
+
(autoLoadHandle = await addPersisterListener(
|
|
482
|
+
async (content, changes) => {
|
|
483
|
+
if (changes || content) {
|
|
484
|
+
/* istanbul ignore else */
|
|
485
|
+
if (status != 2 /* Saving */) {
|
|
486
|
+
setStatus(1 /* Loading */);
|
|
487
|
+
loads++;
|
|
488
|
+
setContentOrChanges(changes ?? content);
|
|
489
|
+
setStatus(0 /* Idle */);
|
|
490
|
+
}
|
|
491
|
+
} else {
|
|
492
|
+
await load();
|
|
493
|
+
}
|
|
494
|
+
},
|
|
495
|
+
)),
|
|
496
|
+
onIgnoredError,
|
|
497
|
+
);
|
|
485
498
|
return persister;
|
|
486
499
|
};
|
|
487
|
-
const stopAutoLoad = () => {
|
|
500
|
+
const stopAutoLoad = async () => {
|
|
488
501
|
if (autoLoadHandle) {
|
|
489
|
-
|
|
502
|
+
await tryCatch(
|
|
503
|
+
() => delPersisterListener(autoLoadHandle),
|
|
504
|
+
onIgnoredError,
|
|
505
|
+
);
|
|
490
506
|
autoLoadHandle = void 0;
|
|
491
507
|
}
|
|
492
508
|
return persister;
|
|
@@ -498,9 +514,7 @@ const createCustomPersister = (
|
|
|
498
514
|
setStatus(2 /* Saving */);
|
|
499
515
|
saves++;
|
|
500
516
|
await schedule(async () => {
|
|
501
|
-
|
|
502
|
-
await setPersisted(getContent, changes);
|
|
503
|
-
} catch (error) {}
|
|
517
|
+
await tryCatch(() => setPersisted(getContent, changes), onIgnoredError);
|
|
504
518
|
setStatus(0 /* Idle */);
|
|
505
519
|
});
|
|
506
520
|
}
|
|
@@ -517,7 +531,7 @@ const createCustomPersister = (
|
|
|
517
531
|
});
|
|
518
532
|
return persister;
|
|
519
533
|
};
|
|
520
|
-
const stopAutoSave = () => {
|
|
534
|
+
const stopAutoSave = async () => {
|
|
521
535
|
if (autoSaveListenerId) {
|
|
522
536
|
store.delListener(autoSaveListenerId);
|
|
523
537
|
autoSaveListenerId = void 0;
|
|
@@ -538,9 +552,10 @@ const createCustomPersister = (
|
|
|
538
552
|
return persister;
|
|
539
553
|
};
|
|
540
554
|
const getStore = () => store;
|
|
541
|
-
const destroy = () => {
|
|
555
|
+
const destroy = async () => {
|
|
542
556
|
arrayClear(mapGet(scheduleActions, scheduleId));
|
|
543
|
-
|
|
557
|
+
await persister.stopAutoLoad();
|
|
558
|
+
return await persister.stopAutoSave();
|
|
544
559
|
};
|
|
545
560
|
const getStats = () => ({loads, saves});
|
|
546
561
|
const persister = {
|
|
@@ -578,11 +593,7 @@ const createStoragePersister = (
|
|
|
578
593
|
const addPersisterListener = (listener) => {
|
|
579
594
|
const storageListener = (event) => {
|
|
580
595
|
if (event.storageArea === storage && event.key === storageName) {
|
|
581
|
-
|
|
582
|
-
listener(jsonParse(event.newValue));
|
|
583
|
-
} catch {
|
|
584
|
-
listener();
|
|
585
|
-
}
|
|
596
|
+
tryCatch(() => listener(jsonParse(event.newValue)), listener);
|
|
586
597
|
}
|
|
587
598
|
};
|
|
588
599
|
WINDOW.addEventListener(STORAGE, storageListener);
|
|
@@ -1466,27 +1477,24 @@ const createStore = () => {
|
|
|
1466
1477
|
);
|
|
1467
1478
|
});
|
|
1468
1479
|
const setTablesJson = (tablesJson) => {
|
|
1469
|
-
|
|
1470
|
-
setOrDelTables(jsonParse(tablesJson));
|
|
1471
|
-
} catch {}
|
|
1480
|
+
tryCatch(() => setOrDelTables(jsonParse(tablesJson)));
|
|
1472
1481
|
return store;
|
|
1473
1482
|
};
|
|
1474
1483
|
const setValuesJson = (valuesJson) => {
|
|
1475
|
-
|
|
1476
|
-
setOrDelValues(jsonParse(valuesJson));
|
|
1477
|
-
} catch {}
|
|
1484
|
+
tryCatch(() => setOrDelValues(jsonParse(valuesJson)));
|
|
1478
1485
|
return store;
|
|
1479
1486
|
};
|
|
1480
1487
|
const setJson = (tablesAndValuesJson) =>
|
|
1481
|
-
fluentTransaction(() =>
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1488
|
+
fluentTransaction(() =>
|
|
1489
|
+
tryCatch(
|
|
1490
|
+
() => {
|
|
1491
|
+
const [tables, values] = jsonParse(tablesAndValuesJson);
|
|
1492
|
+
setOrDelTables(tables);
|
|
1493
|
+
setOrDelValues(values);
|
|
1494
|
+
},
|
|
1495
|
+
() => setTablesJson(tablesAndValuesJson),
|
|
1496
|
+
),
|
|
1497
|
+
);
|
|
1490
1498
|
const setTablesSchema = (tablesSchema) =>
|
|
1491
1499
|
fluentTransaction(() => {
|
|
1492
1500
|
if ((hasTablesSchema = validateTablesSchema(tablesSchema))) {
|
package/with-schemas/index.js
CHANGED
|
@@ -55,6 +55,15 @@ const slice = (arrayOrString, start, end) => arrayOrString.slice(start, end);
|
|
|
55
55
|
const size = (arrayOrString) => arrayOrString.length;
|
|
56
56
|
const test = (regex, subject) => regex.test(subject);
|
|
57
57
|
const getUndefined = () => void 0;
|
|
58
|
+
const noop = () => {};
|
|
59
|
+
const tryCatch = async (action, then1, then2) => {
|
|
60
|
+
try {
|
|
61
|
+
return await action();
|
|
62
|
+
} catch (error) {
|
|
63
|
+
/* istanbul ignore next */
|
|
64
|
+
then1?.(error);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
58
67
|
|
|
59
68
|
const arrayHas = (array, value) => array.includes(value);
|
|
60
69
|
const arrayEvery = (array, cb) => array.every(cb);
|
|
@@ -1951,27 +1960,24 @@ const createStore = () => {
|
|
|
1951
1960
|
);
|
|
1952
1961
|
});
|
|
1953
1962
|
const setTablesJson = (tablesJson) => {
|
|
1954
|
-
|
|
1955
|
-
setOrDelTables(jsonParse(tablesJson));
|
|
1956
|
-
} catch {}
|
|
1963
|
+
tryCatch(() => setOrDelTables(jsonParse(tablesJson)));
|
|
1957
1964
|
return store;
|
|
1958
1965
|
};
|
|
1959
1966
|
const setValuesJson = (valuesJson) => {
|
|
1960
|
-
|
|
1961
|
-
setOrDelValues(jsonParse(valuesJson));
|
|
1962
|
-
} catch {}
|
|
1967
|
+
tryCatch(() => setOrDelValues(jsonParse(valuesJson)));
|
|
1963
1968
|
return store;
|
|
1964
1969
|
};
|
|
1965
1970
|
const setJson = (tablesAndValuesJson) =>
|
|
1966
|
-
fluentTransaction(() =>
|
|
1967
|
-
|
|
1968
|
-
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
1971
|
+
fluentTransaction(() =>
|
|
1972
|
+
tryCatch(
|
|
1973
|
+
() => {
|
|
1974
|
+
const [tables, values] = jsonParse(tablesAndValuesJson);
|
|
1975
|
+
setOrDelTables(tables);
|
|
1976
|
+
setOrDelValues(values);
|
|
1977
|
+
},
|
|
1978
|
+
() => setTablesJson(tablesAndValuesJson),
|
|
1979
|
+
),
|
|
1980
|
+
);
|
|
1975
1981
|
const setTablesSchema = (tablesSchema) =>
|
|
1976
1982
|
fluentTransaction(() => {
|
|
1977
1983
|
if ((hasTablesSchema = validateTablesSchema(tablesSchema))) {
|
|
@@ -2629,8 +2635,8 @@ const createMergeableStore = (uniqueId, getNow) => {
|
|
|
2629
2635
|
stampUpdate(thingsStampMap, incomingThingsTime, thingsHash);
|
|
2630
2636
|
return [thingsTime, oldThingsHash, thingsStampMap[2]];
|
|
2631
2637
|
};
|
|
2632
|
-
const preStartTransaction =
|
|
2633
|
-
const preFinishTransaction =
|
|
2638
|
+
const preStartTransaction = noop;
|
|
2639
|
+
const preFinishTransaction = noop;
|
|
2634
2640
|
const postFinishTransaction = () => {
|
|
2635
2641
|
collClear(touchedCells);
|
|
2636
2642
|
collClear(touchedValues);
|