tinybase 9.4.0-beta.1 → 9.4.0
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 +4 -0
- package/@types/persisters/persister-durable-object-sql-storage/index.d.ts +9 -2
- package/@types/persisters/persister-durable-object-sql-storage/with-schemas/index.d.ts +9 -2
- package/@types/persisters/with-schemas/index.d.ts +4 -0
- package/@types/queries/index.d.ts +4 -0
- package/@types/queries/with-schemas/index.d.ts +4 -0
- package/@types/synchronizers/synchronizer-ws-client/index.d.ts +7 -3
- package/@types/synchronizers/synchronizer-ws-client/with-schemas/index.d.ts +7 -3
- package/@types/synchronizers/synchronizer-ws-server/index.d.ts +9 -3
- package/@types/synchronizers/synchronizer-ws-server/with-schemas/index.d.ts +9 -3
- package/@types/synchronizers/synchronizer-ws-server-simple/index.d.ts +6 -3
- package/@types/synchronizers/synchronizer-ws-server-simple/with-schemas/index.d.ts +6 -3
- package/@types/ui-react-dom/index.d.ts +10 -10
- package/@types/ui-react-dom/with-schemas/index.d.ts +10 -10
- package/@types/ui-react-dom-charts/index.d.ts +7 -7
- package/@types/ui-react-dom-charts/with-schemas/index.d.ts +7 -7
- package/@types/ui-react-inspector/index.d.ts +1 -1
- package/@types/ui-react-inspector/with-schemas/index.d.ts +1 -1
- package/@types/ui-solid-dom/index.d.ts +10 -10
- package/@types/ui-solid-dom/with-schemas/index.d.ts +10 -10
- package/@types/ui-solid-inspector/index.d.ts +1 -1
- package/@types/ui-solid-inspector/with-schemas/index.d.ts +1 -1
- package/@types/ui-svelte-dom/index.d.ts +10 -10
- package/@types/ui-svelte-dom/with-schemas/index.d.ts +10 -10
- package/@types/ui-svelte-inspector/index.d.ts +1 -1
- package/@types/ui-svelte-inspector/with-schemas/index.d.ts +1 -1
- package/index.js +191 -74
- package/min/index.js +1 -1
- package/min/index.js.gz +0 -0
- package/min/omni/index.js +1 -1
- package/min/omni/index.js.gz +0 -0
- package/min/omni/with-schemas/index.js +1 -1
- package/min/omni/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-sql-storage/index.js +1 -1
- package/min/persisters/persister-durable-object-sql-storage/index.js.gz +0 -0
- package/min/persisters/persister-durable-object-sql-storage/with-schemas/index.js +1 -1
- package/min/persisters/persister-durable-object-sql-storage/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-react-native-mmkv/index.js +1 -1
- package/min/persisters/persister-react-native-mmkv/index.js.gz +0 -0
- package/min/persisters/persister-react-native-mmkv/with-schemas/index.js +1 -1
- package/min/persisters/persister-react-native-mmkv/with-schemas/index.js.gz +0 -0
- package/min/persisters/persister-react-native-sqlite/index.js +1 -1
- package/min/persisters/persister-react-native-sqlite/index.js.gz +0 -0
- package/min/persisters/persister-react-native-sqlite/with-schemas/index.js +1 -1
- package/min/persisters/persister-react-native-sqlite/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/queries/index.js +1 -1
- package/min/queries/index.js.gz +0 -0
- package/min/queries/with-schemas/index.js +1 -1
- package/min/queries/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/ui-solid-inspector/index.js +1 -1
- package/min/ui-solid-inspector/index.js.gz +0 -0
- package/min/ui-solid-inspector/with-schemas/index.js +1 -1
- package/min/ui-solid-inspector/with-schemas/index.js.gz +0 -0
- package/min/ui-svelte-inspector/index.js +1 -1
- package/min/ui-svelte-inspector/index.js.gz +0 -0
- package/min/ui-svelte-inspector/with-schemas/index.js +1 -1
- package/min/ui-svelte-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/omni/index.js +606 -179
- package/omni/with-schemas/index.js +606 -179
- package/package.json +12 -8
- package/persisters/index.js +49 -10
- package/persisters/persister-automerge/index.js +29 -5
- package/persisters/persister-automerge/with-schemas/index.js +29 -5
- package/persisters/persister-browser/index.js +29 -5
- package/persisters/persister-browser/with-schemas/index.js +29 -5
- package/persisters/persister-cr-sqlite-wasm/index.js +29 -5
- package/persisters/persister-cr-sqlite-wasm/with-schemas/index.js +29 -5
- package/persisters/persister-durable-object-sql-storage/index.js +44 -8
- package/persisters/persister-durable-object-sql-storage/with-schemas/index.js +44 -8
- package/persisters/persister-durable-object-storage/index.js +31 -5
- package/persisters/persister-durable-object-storage/with-schemas/index.js +31 -5
- package/persisters/persister-electric-sql/index.js +29 -5
- package/persisters/persister-electric-sql/with-schemas/index.js +29 -5
- package/persisters/persister-expo-sqlite/index.js +29 -5
- package/persisters/persister-expo-sqlite/with-schemas/index.js +29 -5
- package/persisters/persister-file/index.js +31 -5
- package/persisters/persister-file/with-schemas/index.js +31 -5
- package/persisters/persister-indexed-db/index.js +29 -5
- package/persisters/persister-indexed-db/with-schemas/index.js +29 -5
- package/persisters/persister-libsql/index.js +29 -5
- package/persisters/persister-libsql/with-schemas/index.js +29 -5
- package/persisters/persister-partykit-client/index.js +31 -5
- package/persisters/persister-partykit-client/with-schemas/index.js +31 -5
- package/persisters/persister-pglite/index.js +49 -10
- package/persisters/persister-pglite/with-schemas/index.js +49 -10
- package/persisters/persister-postgres/index.js +49 -10
- package/persisters/persister-postgres/with-schemas/index.js +49 -10
- package/persisters/persister-powersync/index.js +29 -5
- package/persisters/persister-powersync/with-schemas/index.js +29 -5
- package/persisters/persister-react-native-mmkv/index.js +31 -5
- package/persisters/persister-react-native-mmkv/with-schemas/index.js +31 -5
- package/persisters/persister-react-native-sqlite/index.js +29 -5
- package/persisters/persister-react-native-sqlite/with-schemas/index.js +29 -5
- package/persisters/persister-remote/index.js +31 -5
- package/persisters/persister-remote/with-schemas/index.js +31 -5
- package/persisters/persister-sqlite-bun/index.js +29 -5
- package/persisters/persister-sqlite-bun/with-schemas/index.js +29 -5
- package/persisters/persister-sqlite-wasm/index.js +29 -5
- package/persisters/persister-sqlite-wasm/with-schemas/index.js +29 -5
- package/persisters/persister-sqlite3/index.js +29 -5
- package/persisters/persister-sqlite3/with-schemas/index.js +29 -5
- package/persisters/persister-yjs/index.js +29 -5
- package/persisters/persister-yjs/with-schemas/index.js +29 -5
- package/persisters/with-schemas/index.js +49 -10
- package/queries/index.js +205 -74
- package/queries/with-schemas/index.js +205 -74
- package/readme.md +14 -14
- package/releases.md +84 -67
- package/synchronizers/index.js +31 -5
- package/synchronizers/synchronizer-broadcast-channel/index.js +39 -13
- package/synchronizers/synchronizer-broadcast-channel/with-schemas/index.js +39 -13
- package/synchronizers/synchronizer-local/index.js +31 -5
- package/synchronizers/synchronizer-local/with-schemas/index.js +31 -5
- package/synchronizers/synchronizer-ws-client/index.js +220 -61
- package/synchronizers/synchronizer-ws-client/with-schemas/index.js +220 -61
- package/synchronizers/synchronizer-ws-server/index.js +253 -73
- package/synchronizers/synchronizer-ws-server/with-schemas/index.js +253 -73
- package/synchronizers/synchronizer-ws-server-durable-object/index.js +88 -40
- package/synchronizers/synchronizer-ws-server-durable-object/with-schemas/index.js +88 -40
- package/synchronizers/synchronizer-ws-server-simple/index.js +184 -60
- package/synchronizers/synchronizer-ws-server-simple/with-schemas/index.js +184 -60
- package/synchronizers/with-schemas/index.js +31 -5
- package/ui-react-inspector/index.js +29 -5
- package/ui-react-inspector/with-schemas/index.js +29 -5
- package/ui-solid-inspector/index.js +29 -5
- package/ui-solid-inspector/with-schemas/index.js +29 -5
- package/ui-svelte-inspector/index.js +29 -5
- package/ui-svelte-inspector/with-schemas/index.js +29 -5
- package/with-schemas/index.js +191 -74
package/synchronizers/index.js
CHANGED
|
@@ -188,6 +188,8 @@ const tryCatch = async (action, onError) => {
|
|
|
188
188
|
onError?.(error);
|
|
189
189
|
}
|
|
190
190
|
};
|
|
191
|
+
const tryCatchIgnore = (action, onIgnoredError) =>
|
|
192
|
+
tryCatch(action, (error) => void tryCatch(() => onIgnoredError?.(error)));
|
|
191
193
|
const tryCatchSync = (action, onError) => {
|
|
192
194
|
try {
|
|
193
195
|
return action();
|
|
@@ -665,11 +667,35 @@ const createCustomPersister = (
|
|
|
665
667
|
initialContent,
|
|
666
668
|
startSaveFirst = false,
|
|
667
669
|
) => {
|
|
668
|
-
const [call1, call2] = startSaveFirst
|
|
669
|
-
? [startAutoSave, startAutoLoad]
|
|
670
|
-
: [startAutoLoad, startAutoSave];
|
|
671
|
-
|
|
672
|
-
|
|
670
|
+
const [call1, call2, stop1, stop2] = startSaveFirst
|
|
671
|
+
? [startAutoSave, startAutoLoad, stopAutoSave, stopAutoLoad]
|
|
672
|
+
: [startAutoLoad, startAutoSave, stopAutoLoad, stopAutoSave];
|
|
673
|
+
const start1 = call1(initialContent);
|
|
674
|
+
const generation1 = startSaveFirst
|
|
675
|
+
? autoSaveGeneration
|
|
676
|
+
: autoLoadGeneration;
|
|
677
|
+
await start1;
|
|
678
|
+
const start2 = call2(initialContent);
|
|
679
|
+
const generation2 = startSaveFirst
|
|
680
|
+
? autoLoadGeneration
|
|
681
|
+
: autoSaveGeneration;
|
|
682
|
+
try {
|
|
683
|
+
await start2;
|
|
684
|
+
} catch (error) {
|
|
685
|
+
if (
|
|
686
|
+
generation2 ==
|
|
687
|
+
(startSaveFirst ? autoLoadGeneration : autoSaveGeneration)
|
|
688
|
+
) {
|
|
689
|
+
await tryCatchIgnore(stop2);
|
|
690
|
+
}
|
|
691
|
+
if (
|
|
692
|
+
generation1 ==
|
|
693
|
+
(startSaveFirst ? autoSaveGeneration : autoLoadGeneration)
|
|
694
|
+
) {
|
|
695
|
+
await tryCatchIgnore(stop1);
|
|
696
|
+
}
|
|
697
|
+
throw error;
|
|
698
|
+
}
|
|
673
699
|
return persister;
|
|
674
700
|
};
|
|
675
701
|
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
@@ -188,6 +188,8 @@ const tryCatch = async (action, onError) => {
|
|
|
188
188
|
onError?.(error);
|
|
189
189
|
}
|
|
190
190
|
};
|
|
191
|
+
const tryCatchIgnore = (action, onIgnoredError) =>
|
|
192
|
+
tryCatch(action, (error) => void tryCatch(() => onIgnoredError?.(error)));
|
|
191
193
|
const tryCatchSync = (action, onError) => {
|
|
192
194
|
try {
|
|
193
195
|
return action();
|
|
@@ -250,6 +252,14 @@ const isHlc = (hlc, maxLogicalTime) =>
|
|
|
250
252
|
hlc == EMPTY_STRING ||
|
|
251
253
|
(isString(hlc) && test(HLC, hlc) && decodeHlcTime(hlc) <= maxLogicalTime);
|
|
252
254
|
|
|
255
|
+
const setNew = (entryOrEntries) =>
|
|
256
|
+
new Set(
|
|
257
|
+
isArray(entryOrEntries) || isUndefined(entryOrEntries)
|
|
258
|
+
? entryOrEntries
|
|
259
|
+
: [entryOrEntries],
|
|
260
|
+
);
|
|
261
|
+
const setAdd = (set, value) => set?.add(value);
|
|
262
|
+
|
|
253
263
|
const MAX_PENDING_REQUESTS = 100;
|
|
254
264
|
const isHash = (hash) =>
|
|
255
265
|
isNumber(hash) &&
|
|
@@ -331,14 +341,6 @@ const getPoolFunctions = () => {
|
|
|
331
341
|
];
|
|
332
342
|
};
|
|
333
343
|
|
|
334
|
-
const setNew = (entryOrEntries) =>
|
|
335
|
-
new Set(
|
|
336
|
-
isArray(entryOrEntries) || isUndefined(entryOrEntries)
|
|
337
|
-
? entryOrEntries
|
|
338
|
-
: [entryOrEntries],
|
|
339
|
-
);
|
|
340
|
-
const setAdd = (set, value) => set?.add(value);
|
|
341
|
-
|
|
342
344
|
const getWildcardedLeaves = (deepIdSet, path = [EMPTY_STRING]) => {
|
|
343
345
|
const leaves = [];
|
|
344
346
|
const deep = (node, p) =>
|
|
@@ -763,11 +765,35 @@ const createCustomPersister = (
|
|
|
763
765
|
initialContent,
|
|
764
766
|
startSaveFirst = false,
|
|
765
767
|
) => {
|
|
766
|
-
const [call1, call2] = startSaveFirst
|
|
767
|
-
? [startAutoSave, startAutoLoad]
|
|
768
|
-
: [startAutoLoad, startAutoSave];
|
|
769
|
-
|
|
770
|
-
|
|
768
|
+
const [call1, call2, stop1, stop2] = startSaveFirst
|
|
769
|
+
? [startAutoSave, startAutoLoad, stopAutoSave, stopAutoLoad]
|
|
770
|
+
: [startAutoLoad, startAutoSave, stopAutoLoad, stopAutoSave];
|
|
771
|
+
const start1 = call1(initialContent);
|
|
772
|
+
const generation1 = startSaveFirst
|
|
773
|
+
? autoSaveGeneration
|
|
774
|
+
: autoLoadGeneration;
|
|
775
|
+
await start1;
|
|
776
|
+
const start2 = call2(initialContent);
|
|
777
|
+
const generation2 = startSaveFirst
|
|
778
|
+
? autoLoadGeneration
|
|
779
|
+
: autoSaveGeneration;
|
|
780
|
+
try {
|
|
781
|
+
await start2;
|
|
782
|
+
} catch (error) {
|
|
783
|
+
if (
|
|
784
|
+
generation2 ==
|
|
785
|
+
(startSaveFirst ? autoLoadGeneration : autoSaveGeneration)
|
|
786
|
+
) {
|
|
787
|
+
await tryCatchIgnore(stop2);
|
|
788
|
+
}
|
|
789
|
+
if (
|
|
790
|
+
generation1 ==
|
|
791
|
+
(startSaveFirst ? autoSaveGeneration : autoLoadGeneration)
|
|
792
|
+
) {
|
|
793
|
+
await tryCatchIgnore(stop1);
|
|
794
|
+
}
|
|
795
|
+
throw error;
|
|
796
|
+
}
|
|
771
797
|
return persister;
|
|
772
798
|
};
|
|
773
799
|
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
@@ -188,6 +188,8 @@ const tryCatch = async (action, onError) => {
|
|
|
188
188
|
onError?.(error);
|
|
189
189
|
}
|
|
190
190
|
};
|
|
191
|
+
const tryCatchIgnore = (action, onIgnoredError) =>
|
|
192
|
+
tryCatch(action, (error) => void tryCatch(() => onIgnoredError?.(error)));
|
|
191
193
|
const tryCatchSync = (action, onError) => {
|
|
192
194
|
try {
|
|
193
195
|
return action();
|
|
@@ -250,6 +252,14 @@ const isHlc = (hlc, maxLogicalTime) =>
|
|
|
250
252
|
hlc == EMPTY_STRING ||
|
|
251
253
|
(isString(hlc) && test(HLC, hlc) && decodeHlcTime(hlc) <= maxLogicalTime);
|
|
252
254
|
|
|
255
|
+
const setNew = (entryOrEntries) =>
|
|
256
|
+
new Set(
|
|
257
|
+
isArray(entryOrEntries) || isUndefined(entryOrEntries)
|
|
258
|
+
? entryOrEntries
|
|
259
|
+
: [entryOrEntries],
|
|
260
|
+
);
|
|
261
|
+
const setAdd = (set, value) => set?.add(value);
|
|
262
|
+
|
|
253
263
|
const MAX_PENDING_REQUESTS = 100;
|
|
254
264
|
const isHash = (hash) =>
|
|
255
265
|
isNumber(hash) &&
|
|
@@ -331,14 +341,6 @@ const getPoolFunctions = () => {
|
|
|
331
341
|
];
|
|
332
342
|
};
|
|
333
343
|
|
|
334
|
-
const setNew = (entryOrEntries) =>
|
|
335
|
-
new Set(
|
|
336
|
-
isArray(entryOrEntries) || isUndefined(entryOrEntries)
|
|
337
|
-
? entryOrEntries
|
|
338
|
-
: [entryOrEntries],
|
|
339
|
-
);
|
|
340
|
-
const setAdd = (set, value) => set?.add(value);
|
|
341
|
-
|
|
342
344
|
const getWildcardedLeaves = (deepIdSet, path = [EMPTY_STRING]) => {
|
|
343
345
|
const leaves = [];
|
|
344
346
|
const deep = (node, p) =>
|
|
@@ -763,11 +765,35 @@ const createCustomPersister = (
|
|
|
763
765
|
initialContent,
|
|
764
766
|
startSaveFirst = false,
|
|
765
767
|
) => {
|
|
766
|
-
const [call1, call2] = startSaveFirst
|
|
767
|
-
? [startAutoSave, startAutoLoad]
|
|
768
|
-
: [startAutoLoad, startAutoSave];
|
|
769
|
-
|
|
770
|
-
|
|
768
|
+
const [call1, call2, stop1, stop2] = startSaveFirst
|
|
769
|
+
? [startAutoSave, startAutoLoad, stopAutoSave, stopAutoLoad]
|
|
770
|
+
: [startAutoLoad, startAutoSave, stopAutoLoad, stopAutoSave];
|
|
771
|
+
const start1 = call1(initialContent);
|
|
772
|
+
const generation1 = startSaveFirst
|
|
773
|
+
? autoSaveGeneration
|
|
774
|
+
: autoLoadGeneration;
|
|
775
|
+
await start1;
|
|
776
|
+
const start2 = call2(initialContent);
|
|
777
|
+
const generation2 = startSaveFirst
|
|
778
|
+
? autoLoadGeneration
|
|
779
|
+
: autoSaveGeneration;
|
|
780
|
+
try {
|
|
781
|
+
await start2;
|
|
782
|
+
} catch (error) {
|
|
783
|
+
if (
|
|
784
|
+
generation2 ==
|
|
785
|
+
(startSaveFirst ? autoLoadGeneration : autoSaveGeneration)
|
|
786
|
+
) {
|
|
787
|
+
await tryCatchIgnore(stop2);
|
|
788
|
+
}
|
|
789
|
+
if (
|
|
790
|
+
generation1 ==
|
|
791
|
+
(startSaveFirst ? autoSaveGeneration : autoLoadGeneration)
|
|
792
|
+
) {
|
|
793
|
+
await tryCatchIgnore(stop1);
|
|
794
|
+
}
|
|
795
|
+
throw error;
|
|
796
|
+
}
|
|
771
797
|
return persister;
|
|
772
798
|
};
|
|
773
799
|
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
@@ -197,6 +197,8 @@ const tryCatch = async (action, onError) => {
|
|
|
197
197
|
onError?.(error);
|
|
198
198
|
}
|
|
199
199
|
};
|
|
200
|
+
const tryCatchIgnore = (action, onIgnoredError) =>
|
|
201
|
+
tryCatch(action, (error) => void tryCatch(() => onIgnoredError?.(error)));
|
|
200
202
|
const tryCatchSync = (action, onError) => {
|
|
201
203
|
try {
|
|
202
204
|
return action();
|
|
@@ -666,11 +668,35 @@ const createCustomPersister = (
|
|
|
666
668
|
initialContent,
|
|
667
669
|
startSaveFirst = false,
|
|
668
670
|
) => {
|
|
669
|
-
const [call1, call2] = startSaveFirst
|
|
670
|
-
? [startAutoSave, startAutoLoad]
|
|
671
|
-
: [startAutoLoad, startAutoSave];
|
|
672
|
-
|
|
673
|
-
|
|
671
|
+
const [call1, call2, stop1, stop2] = startSaveFirst
|
|
672
|
+
? [startAutoSave, startAutoLoad, stopAutoSave, stopAutoLoad]
|
|
673
|
+
: [startAutoLoad, startAutoSave, stopAutoLoad, stopAutoSave];
|
|
674
|
+
const start1 = call1(initialContent);
|
|
675
|
+
const generation1 = startSaveFirst
|
|
676
|
+
? autoSaveGeneration
|
|
677
|
+
: autoLoadGeneration;
|
|
678
|
+
await start1;
|
|
679
|
+
const start2 = call2(initialContent);
|
|
680
|
+
const generation2 = startSaveFirst
|
|
681
|
+
? autoLoadGeneration
|
|
682
|
+
: autoSaveGeneration;
|
|
683
|
+
try {
|
|
684
|
+
await start2;
|
|
685
|
+
} catch (error) {
|
|
686
|
+
if (
|
|
687
|
+
generation2 ==
|
|
688
|
+
(startSaveFirst ? autoLoadGeneration : autoSaveGeneration)
|
|
689
|
+
) {
|
|
690
|
+
await tryCatchIgnore(stop2);
|
|
691
|
+
}
|
|
692
|
+
if (
|
|
693
|
+
generation1 ==
|
|
694
|
+
(startSaveFirst ? autoSaveGeneration : autoLoadGeneration)
|
|
695
|
+
) {
|
|
696
|
+
await tryCatchIgnore(stop1);
|
|
697
|
+
}
|
|
698
|
+
throw error;
|
|
699
|
+
}
|
|
674
700
|
return persister;
|
|
675
701
|
};
|
|
676
702
|
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
@@ -197,6 +197,8 @@ const tryCatch = async (action, onError) => {
|
|
|
197
197
|
onError?.(error);
|
|
198
198
|
}
|
|
199
199
|
};
|
|
200
|
+
const tryCatchIgnore = (action, onIgnoredError) =>
|
|
201
|
+
tryCatch(action, (error) => void tryCatch(() => onIgnoredError?.(error)));
|
|
200
202
|
const tryCatchSync = (action, onError) => {
|
|
201
203
|
try {
|
|
202
204
|
return action();
|
|
@@ -666,11 +668,35 @@ const createCustomPersister = (
|
|
|
666
668
|
initialContent,
|
|
667
669
|
startSaveFirst = false,
|
|
668
670
|
) => {
|
|
669
|
-
const [call1, call2] = startSaveFirst
|
|
670
|
-
? [startAutoSave, startAutoLoad]
|
|
671
|
-
: [startAutoLoad, startAutoSave];
|
|
672
|
-
|
|
673
|
-
|
|
671
|
+
const [call1, call2, stop1, stop2] = startSaveFirst
|
|
672
|
+
? [startAutoSave, startAutoLoad, stopAutoSave, stopAutoLoad]
|
|
673
|
+
: [startAutoLoad, startAutoSave, stopAutoLoad, stopAutoSave];
|
|
674
|
+
const start1 = call1(initialContent);
|
|
675
|
+
const generation1 = startSaveFirst
|
|
676
|
+
? autoSaveGeneration
|
|
677
|
+
: autoLoadGeneration;
|
|
678
|
+
await start1;
|
|
679
|
+
const start2 = call2(initialContent);
|
|
680
|
+
const generation2 = startSaveFirst
|
|
681
|
+
? autoLoadGeneration
|
|
682
|
+
: autoSaveGeneration;
|
|
683
|
+
try {
|
|
684
|
+
await start2;
|
|
685
|
+
} catch (error) {
|
|
686
|
+
if (
|
|
687
|
+
generation2 ==
|
|
688
|
+
(startSaveFirst ? autoLoadGeneration : autoSaveGeneration)
|
|
689
|
+
) {
|
|
690
|
+
await tryCatchIgnore(stop2);
|
|
691
|
+
}
|
|
692
|
+
if (
|
|
693
|
+
generation1 ==
|
|
694
|
+
(startSaveFirst ? autoSaveGeneration : autoLoadGeneration)
|
|
695
|
+
) {
|
|
696
|
+
await tryCatchIgnore(stop1);
|
|
697
|
+
}
|
|
698
|
+
throw error;
|
|
699
|
+
}
|
|
674
700
|
return persister;
|
|
675
701
|
};
|
|
676
702
|
const stopAutoPersisting = async (stopSaveFirst = false) => {
|