tinybase 9.4.0-beta.0 → 9.4.0-beta.2
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 +145 -7
- package/@types/queries/with-schemas/index.d.ts +157 -7
- 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/index.js +315 -22
- 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 +730 -127
- package/omni/with-schemas/index.js +730 -127
- package/package.json +8 -4
- 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 +334 -22
- package/queries/with-schemas/index.js +334 -22
- 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 +315 -22
|
@@ -826,11 +826,35 @@ const createCustomPersister = (
|
|
|
826
826
|
initialContent,
|
|
827
827
|
startSaveFirst = false,
|
|
828
828
|
) => {
|
|
829
|
-
const [call1, call2] = startSaveFirst
|
|
830
|
-
? [startAutoSave, startAutoLoad]
|
|
831
|
-
: [startAutoLoad, startAutoSave];
|
|
832
|
-
|
|
833
|
-
|
|
829
|
+
const [call1, call2, stop1, stop2] = startSaveFirst
|
|
830
|
+
? [startAutoSave, startAutoLoad, stopAutoSave, stopAutoLoad]
|
|
831
|
+
: [startAutoLoad, startAutoSave, stopAutoLoad, stopAutoSave];
|
|
832
|
+
const start1 = call1(initialContent);
|
|
833
|
+
const generation1 = startSaveFirst
|
|
834
|
+
? autoSaveGeneration
|
|
835
|
+
: autoLoadGeneration;
|
|
836
|
+
await start1;
|
|
837
|
+
const start2 = call2(initialContent);
|
|
838
|
+
const generation2 = startSaveFirst
|
|
839
|
+
? autoLoadGeneration
|
|
840
|
+
: autoSaveGeneration;
|
|
841
|
+
try {
|
|
842
|
+
await start2;
|
|
843
|
+
} catch (error) {
|
|
844
|
+
if (
|
|
845
|
+
generation2 ==
|
|
846
|
+
(startSaveFirst ? autoLoadGeneration : autoSaveGeneration)
|
|
847
|
+
) {
|
|
848
|
+
await tryCatchIgnore(stop2);
|
|
849
|
+
}
|
|
850
|
+
if (
|
|
851
|
+
generation1 ==
|
|
852
|
+
(startSaveFirst ? autoSaveGeneration : autoLoadGeneration)
|
|
853
|
+
) {
|
|
854
|
+
await tryCatchIgnore(stop1);
|
|
855
|
+
}
|
|
856
|
+
throw error;
|
|
857
|
+
}
|
|
834
858
|
return persister;
|
|
835
859
|
};
|
|
836
860
|
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
@@ -831,11 +831,35 @@ const createCustomPersister = (
|
|
|
831
831
|
initialContent,
|
|
832
832
|
startSaveFirst = false,
|
|
833
833
|
) => {
|
|
834
|
-
const [call1, call2] = startSaveFirst
|
|
835
|
-
? [startAutoSave, startAutoLoad]
|
|
836
|
-
: [startAutoLoad, startAutoSave];
|
|
837
|
-
|
|
838
|
-
|
|
834
|
+
const [call1, call2, stop1, stop2] = startSaveFirst
|
|
835
|
+
? [startAutoSave, startAutoLoad, stopAutoSave, stopAutoLoad]
|
|
836
|
+
: [startAutoLoad, startAutoSave, stopAutoLoad, stopAutoSave];
|
|
837
|
+
const start1 = call1(initialContent);
|
|
838
|
+
const generation1 = startSaveFirst
|
|
839
|
+
? autoSaveGeneration
|
|
840
|
+
: autoLoadGeneration;
|
|
841
|
+
await start1;
|
|
842
|
+
const start2 = call2(initialContent);
|
|
843
|
+
const generation2 = startSaveFirst
|
|
844
|
+
? autoLoadGeneration
|
|
845
|
+
: autoSaveGeneration;
|
|
846
|
+
try {
|
|
847
|
+
await start2;
|
|
848
|
+
} catch (error) {
|
|
849
|
+
if (
|
|
850
|
+
generation2 ==
|
|
851
|
+
(startSaveFirst ? autoLoadGeneration : autoSaveGeneration)
|
|
852
|
+
) {
|
|
853
|
+
await tryCatchIgnore(stop2);
|
|
854
|
+
}
|
|
855
|
+
if (
|
|
856
|
+
generation1 ==
|
|
857
|
+
(startSaveFirst ? autoSaveGeneration : autoLoadGeneration)
|
|
858
|
+
) {
|
|
859
|
+
await tryCatchIgnore(stop1);
|
|
860
|
+
}
|
|
861
|
+
throw error;
|
|
862
|
+
}
|
|
839
863
|
return persister;
|
|
840
864
|
};
|
|
841
865
|
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
@@ -831,11 +831,35 @@ const createCustomPersister = (
|
|
|
831
831
|
initialContent,
|
|
832
832
|
startSaveFirst = false,
|
|
833
833
|
) => {
|
|
834
|
-
const [call1, call2] = startSaveFirst
|
|
835
|
-
? [startAutoSave, startAutoLoad]
|
|
836
|
-
: [startAutoLoad, startAutoSave];
|
|
837
|
-
|
|
838
|
-
|
|
834
|
+
const [call1, call2, stop1, stop2] = startSaveFirst
|
|
835
|
+
? [startAutoSave, startAutoLoad, stopAutoSave, stopAutoLoad]
|
|
836
|
+
: [startAutoLoad, startAutoSave, stopAutoLoad, stopAutoSave];
|
|
837
|
+
const start1 = call1(initialContent);
|
|
838
|
+
const generation1 = startSaveFirst
|
|
839
|
+
? autoSaveGeneration
|
|
840
|
+
: autoLoadGeneration;
|
|
841
|
+
await start1;
|
|
842
|
+
const start2 = call2(initialContent);
|
|
843
|
+
const generation2 = startSaveFirst
|
|
844
|
+
? autoLoadGeneration
|
|
845
|
+
: autoSaveGeneration;
|
|
846
|
+
try {
|
|
847
|
+
await start2;
|
|
848
|
+
} catch (error) {
|
|
849
|
+
if (
|
|
850
|
+
generation2 ==
|
|
851
|
+
(startSaveFirst ? autoLoadGeneration : autoSaveGeneration)
|
|
852
|
+
) {
|
|
853
|
+
await tryCatchIgnore(stop2);
|
|
854
|
+
}
|
|
855
|
+
if (
|
|
856
|
+
generation1 ==
|
|
857
|
+
(startSaveFirst ? autoSaveGeneration : autoLoadGeneration)
|
|
858
|
+
) {
|
|
859
|
+
await tryCatchIgnore(stop1);
|
|
860
|
+
}
|
|
861
|
+
throw error;
|
|
862
|
+
}
|
|
839
863
|
return persister;
|
|
840
864
|
};
|
|
841
865
|
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
@@ -615,11 +615,35 @@ const createCustomPersister = (
|
|
|
615
615
|
initialContent,
|
|
616
616
|
startSaveFirst = false,
|
|
617
617
|
) => {
|
|
618
|
-
const [call1, call2] = startSaveFirst
|
|
619
|
-
? [startAutoSave, startAutoLoad]
|
|
620
|
-
: [startAutoLoad, startAutoSave];
|
|
621
|
-
|
|
622
|
-
|
|
618
|
+
const [call1, call2, stop1, stop2] = startSaveFirst
|
|
619
|
+
? [startAutoSave, startAutoLoad, stopAutoSave, stopAutoLoad]
|
|
620
|
+
: [startAutoLoad, startAutoSave, stopAutoLoad, stopAutoSave];
|
|
621
|
+
const start1 = call1(initialContent);
|
|
622
|
+
const generation1 = startSaveFirst
|
|
623
|
+
? autoSaveGeneration
|
|
624
|
+
: autoLoadGeneration;
|
|
625
|
+
await start1;
|
|
626
|
+
const start2 = call2(initialContent);
|
|
627
|
+
const generation2 = startSaveFirst
|
|
628
|
+
? autoLoadGeneration
|
|
629
|
+
: autoSaveGeneration;
|
|
630
|
+
try {
|
|
631
|
+
await start2;
|
|
632
|
+
} catch (error) {
|
|
633
|
+
if (
|
|
634
|
+
generation2 ==
|
|
635
|
+
(startSaveFirst ? autoLoadGeneration : autoSaveGeneration)
|
|
636
|
+
) {
|
|
637
|
+
await tryCatchIgnore(stop2);
|
|
638
|
+
}
|
|
639
|
+
if (
|
|
640
|
+
generation1 ==
|
|
641
|
+
(startSaveFirst ? autoSaveGeneration : autoLoadGeneration)
|
|
642
|
+
) {
|
|
643
|
+
await tryCatchIgnore(stop1);
|
|
644
|
+
}
|
|
645
|
+
throw error;
|
|
646
|
+
}
|
|
623
647
|
return persister;
|
|
624
648
|
};
|
|
625
649
|
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
@@ -615,11 +615,35 @@ const createCustomPersister = (
|
|
|
615
615
|
initialContent,
|
|
616
616
|
startSaveFirst = false,
|
|
617
617
|
) => {
|
|
618
|
-
const [call1, call2] = startSaveFirst
|
|
619
|
-
? [startAutoSave, startAutoLoad]
|
|
620
|
-
: [startAutoLoad, startAutoSave];
|
|
621
|
-
|
|
622
|
-
|
|
618
|
+
const [call1, call2, stop1, stop2] = startSaveFirst
|
|
619
|
+
? [startAutoSave, startAutoLoad, stopAutoSave, stopAutoLoad]
|
|
620
|
+
: [startAutoLoad, startAutoSave, stopAutoLoad, stopAutoSave];
|
|
621
|
+
const start1 = call1(initialContent);
|
|
622
|
+
const generation1 = startSaveFirst
|
|
623
|
+
? autoSaveGeneration
|
|
624
|
+
: autoLoadGeneration;
|
|
625
|
+
await start1;
|
|
626
|
+
const start2 = call2(initialContent);
|
|
627
|
+
const generation2 = startSaveFirst
|
|
628
|
+
? autoLoadGeneration
|
|
629
|
+
: autoSaveGeneration;
|
|
630
|
+
try {
|
|
631
|
+
await start2;
|
|
632
|
+
} catch (error) {
|
|
633
|
+
if (
|
|
634
|
+
generation2 ==
|
|
635
|
+
(startSaveFirst ? autoLoadGeneration : autoSaveGeneration)
|
|
636
|
+
) {
|
|
637
|
+
await tryCatchIgnore(stop2);
|
|
638
|
+
}
|
|
639
|
+
if (
|
|
640
|
+
generation1 ==
|
|
641
|
+
(startSaveFirst ? autoSaveGeneration : autoLoadGeneration)
|
|
642
|
+
) {
|
|
643
|
+
await tryCatchIgnore(stop1);
|
|
644
|
+
}
|
|
645
|
+
throw error;
|
|
646
|
+
}
|
|
623
647
|
return persister;
|
|
624
648
|
};
|
|
625
649
|
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
@@ -653,11 +653,35 @@ const createCustomPersister = (
|
|
|
653
653
|
initialContent,
|
|
654
654
|
startSaveFirst = false,
|
|
655
655
|
) => {
|
|
656
|
-
const [call1, call2] = startSaveFirst
|
|
657
|
-
? [startAutoSave, startAutoLoad]
|
|
658
|
-
: [startAutoLoad, startAutoSave];
|
|
659
|
-
|
|
660
|
-
|
|
656
|
+
const [call1, call2, stop1, stop2] = startSaveFirst
|
|
657
|
+
? [startAutoSave, startAutoLoad, stopAutoSave, stopAutoLoad]
|
|
658
|
+
: [startAutoLoad, startAutoSave, stopAutoLoad, stopAutoSave];
|
|
659
|
+
const start1 = call1(initialContent);
|
|
660
|
+
const generation1 = startSaveFirst
|
|
661
|
+
? autoSaveGeneration
|
|
662
|
+
: autoLoadGeneration;
|
|
663
|
+
await start1;
|
|
664
|
+
const start2 = call2(initialContent);
|
|
665
|
+
const generation2 = startSaveFirst
|
|
666
|
+
? autoLoadGeneration
|
|
667
|
+
: autoSaveGeneration;
|
|
668
|
+
try {
|
|
669
|
+
await start2;
|
|
670
|
+
} catch (error) {
|
|
671
|
+
if (
|
|
672
|
+
generation2 ==
|
|
673
|
+
(startSaveFirst ? autoLoadGeneration : autoSaveGeneration)
|
|
674
|
+
) {
|
|
675
|
+
await tryCatchIgnore(stop2);
|
|
676
|
+
}
|
|
677
|
+
if (
|
|
678
|
+
generation1 ==
|
|
679
|
+
(startSaveFirst ? autoSaveGeneration : autoLoadGeneration)
|
|
680
|
+
) {
|
|
681
|
+
await tryCatchIgnore(stop1);
|
|
682
|
+
}
|
|
683
|
+
throw error;
|
|
684
|
+
}
|
|
661
685
|
return persister;
|
|
662
686
|
};
|
|
663
687
|
const stopAutoPersisting = async (stopSaveFirst = false) => {
|
|
@@ -1566,6 +1590,8 @@ const createTabularPersister = (
|
|
|
1566
1590
|
const TABLE_CREATED = 'c';
|
|
1567
1591
|
const DATA_CHANGED = 'd';
|
|
1568
1592
|
const EVENT_REGEX = /^([cd]:)(.+)/;
|
|
1593
|
+
const SIMPLE_TABLE_NAME = /^[A-Za-z0-9_]+$/;
|
|
1594
|
+
const POSTGRES_IDENTIFIER_SIZE = 63;
|
|
1569
1595
|
const listenerResourcesByThing = mapNew();
|
|
1570
1596
|
const createCustomPostgreSqlPersister = (
|
|
1571
1597
|
store,
|
|
@@ -1638,17 +1664,30 @@ const createCustomPostgreSqlPersister = (
|
|
|
1638
1664
|
);
|
|
1639
1665
|
const addDataChangedTriggers = (tableName, dataChangedFunction) =>
|
|
1640
1666
|
promiseAll(
|
|
1641
|
-
arrayMap([INSERT, DELETE, UPDATE], (action, newOrOldOrBoth) =>
|
|
1642
|
-
|
|
1667
|
+
arrayMap([INSERT, DELETE, UPDATE], (action, newOrOldOrBoth) => {
|
|
1668
|
+
const legacyTriggerId = arrayJoin(
|
|
1669
|
+
[TINYBASE, DATA_CHANGED, configHash, tableName, action],
|
|
1670
|
+
'_',
|
|
1671
|
+
);
|
|
1672
|
+
return createTrigger(
|
|
1643
1673
|
OR_REPLACE,
|
|
1644
|
-
|
|
1674
|
+
test(SIMPLE_TABLE_NAME, tableName) &&
|
|
1675
|
+
size(legacyTriggerId) <= POSTGRES_IDENTIFIER_SIZE
|
|
1676
|
+
? escapeId(legacyTriggerId)
|
|
1677
|
+
: escapeIds(
|
|
1678
|
+
TINYBASE,
|
|
1679
|
+
DATA_CHANGED,
|
|
1680
|
+
configHash,
|
|
1681
|
+
action,
|
|
1682
|
+
EMPTY_STRING + getHash(tableName),
|
|
1683
|
+
),
|
|
1645
1684
|
`AFTER ${action} ON${escapeId(tableName)}FOR EACH ROW WHEN(${when(
|
|
1646
1685
|
tableName,
|
|
1647
1686
|
newOrOldOrBoth,
|
|
1648
1687
|
)})`,
|
|
1649
1688
|
dataChangedFunction,
|
|
1650
|
-
)
|
|
1651
|
-
),
|
|
1689
|
+
);
|
|
1690
|
+
}),
|
|
1652
1691
|
);
|
|
1653
1692
|
const dropFunctions = async (functionNames) => {
|
|
1654
1693
|
if (!isEmpty(functionNames)) {
|