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
|
@@ -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)) {
|
package/queries/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const getTypeOf = (thing) => typeof thing;
|
|
2
|
+
const TINYBASE = 'tinybase';
|
|
2
3
|
const EMPTY_STRING = '';
|
|
3
4
|
const STRING = getTypeOf(EMPTY_STRING);
|
|
4
5
|
const BOOLEAN = getTypeOf(true);
|
|
@@ -251,6 +252,20 @@ const getCellOrValueType = (cellOrValue) => {
|
|
|
251
252
|
const encodeIfJson = (value) =>
|
|
252
253
|
isObject(value) || isArray(value) ? JSON_PREFIX + jsonString(value) : value;
|
|
253
254
|
|
|
255
|
+
const ERROR_QUERY_SELECT_ALL_CYCLE = 16;
|
|
256
|
+
const errorNew = (code, details) =>
|
|
257
|
+
new Error(
|
|
258
|
+
TINYBASE +
|
|
259
|
+
':' +
|
|
260
|
+
code +
|
|
261
|
+
(isUndefined(details)
|
|
262
|
+
? EMPTY_STRING
|
|
263
|
+
: /* istanbul ignore next */
|
|
264
|
+
':' + details),
|
|
265
|
+
);
|
|
266
|
+
const errorThrow = (code, details) => {
|
|
267
|
+
throw errorNew(code, details);
|
|
268
|
+
};
|
|
254
269
|
const tryCatchSync = (action, onError) => {
|
|
255
270
|
try {
|
|
256
271
|
return action();
|
|
@@ -470,7 +485,50 @@ const createQueries = getCreateFunction((store) => {
|
|
|
470
485
|
const preStoreListenerIds = mapNew();
|
|
471
486
|
const sourceStoreListenerIds = mapNew();
|
|
472
487
|
const selectAllListenerIds = mapNew();
|
|
488
|
+
const selectAllRetryListenerIds = mapNew();
|
|
489
|
+
const selectAllQuerySources = mapNew();
|
|
473
490
|
const referencedQueryIds = mapNew();
|
|
491
|
+
const assertNoMappedSelectAllCycle = (queryId, nextQuerySources) => {
|
|
492
|
+
const getQuerySources = (sourceQueryId) =>
|
|
493
|
+
sourceQueryId === queryId
|
|
494
|
+
? nextQuerySources
|
|
495
|
+
: mapGet(selectAllQuerySources, sourceQueryId);
|
|
496
|
+
const reachesQuery = (
|
|
497
|
+
sourceQueryId,
|
|
498
|
+
targetQueryId,
|
|
499
|
+
visitedQueryIds = setNew(),
|
|
500
|
+
) => {
|
|
501
|
+
if (sourceQueryId === targetQueryId) {
|
|
502
|
+
return true;
|
|
503
|
+
}
|
|
504
|
+
if (collHas(visitedQueryIds, sourceQueryId)) {
|
|
505
|
+
return false;
|
|
506
|
+
}
|
|
507
|
+
setAdd(visitedQueryIds, sourceQueryId);
|
|
508
|
+
return !collEvery(
|
|
509
|
+
getQuerySources(sourceQueryId),
|
|
510
|
+
(_changesCellId, nextQueryId) =>
|
|
511
|
+
!reachesQuery(nextQueryId, targetQueryId, visitedQueryIds),
|
|
512
|
+
);
|
|
513
|
+
};
|
|
514
|
+
const hasMappedCycle = (sourceQueryId, querySources) =>
|
|
515
|
+
!collEvery(
|
|
516
|
+
querySources,
|
|
517
|
+
(changesCellId, nextQueryId) =>
|
|
518
|
+
!changesCellId || !reachesQuery(nextQueryId, sourceQueryId),
|
|
519
|
+
);
|
|
520
|
+
if (
|
|
521
|
+
hasMappedCycle(queryId, nextQuerySources) ||
|
|
522
|
+
!collEvery(
|
|
523
|
+
selectAllQuerySources,
|
|
524
|
+
(querySources, sourceQueryId) =>
|
|
525
|
+
sourceQueryId === queryId ||
|
|
526
|
+
!hasMappedCycle(sourceQueryId, querySources),
|
|
527
|
+
)
|
|
528
|
+
) {
|
|
529
|
+
errorThrow(ERROR_QUERY_SELECT_ALL_CYCLE);
|
|
530
|
+
}
|
|
531
|
+
};
|
|
474
532
|
const {
|
|
475
533
|
_: [, addListener, callListeners],
|
|
476
534
|
delListener: delListenerImpl,
|
|
@@ -544,6 +602,30 @@ const createQueries = getCreateFunction((store) => {
|
|
|
544
602
|
resetStoreListeners(mapGet(sourceStoreListenerIds, queryId));
|
|
545
603
|
mapSet(sourceStoreListenerIds, queryId);
|
|
546
604
|
};
|
|
605
|
+
const clearSelectAllRetryListeners = (queryId) =>
|
|
606
|
+
ifNotUndefined(
|
|
607
|
+
mapGet(selectAllRetryListenerIds, queryId),
|
|
608
|
+
(listenerIds) => {
|
|
609
|
+
mapForEach(listenerIds, (sourceStore, listenerIdsByTableId) =>
|
|
610
|
+
mapForEach(listenerIdsByTableId, (_sourceTableId, listenerId) =>
|
|
611
|
+
sourceStore.delListener(listenerId),
|
|
612
|
+
),
|
|
613
|
+
);
|
|
614
|
+
mapSet(selectAllRetryListenerIds, queryId);
|
|
615
|
+
},
|
|
616
|
+
);
|
|
617
|
+
const addSelectAllRetryListener = (queryId, sourceStore, sourceTableId) => {
|
|
618
|
+
const listenerIdsByTableId = mapEnsure(
|
|
619
|
+
mapEnsure(selectAllRetryListenerIds, queryId, mapNew),
|
|
620
|
+
sourceStore,
|
|
621
|
+
mapNew,
|
|
622
|
+
);
|
|
623
|
+
mapEnsure(listenerIdsByTableId, sourceTableId, () =>
|
|
624
|
+
sourceStore.addTableListener(sourceTableId, () =>
|
|
625
|
+
setQueryDefinitionImpl(queryId),
|
|
626
|
+
),
|
|
627
|
+
);
|
|
628
|
+
};
|
|
547
629
|
const syncSelectAllListeners = (queryId, nextSources = mapNew()) => {
|
|
548
630
|
const listenerIds = mapEnsure(selectAllListenerIds, queryId, mapNew);
|
|
549
631
|
mapForEach(listenerIds, (sourceStore, listenerIdsByTableId) => {
|
|
@@ -562,7 +644,13 @@ const createQueries = getCreateFunction((store) => {
|
|
|
562
644
|
collForEach(tableIds, (sourceTableId) =>
|
|
563
645
|
mapEnsure(listenerIdsByTableId, sourceTableId, () =>
|
|
564
646
|
sourceStore.addTableCellIdsListener(sourceTableId, () =>
|
|
565
|
-
|
|
647
|
+
tryCatchSync(
|
|
648
|
+
() => setQueryDefinitionImpl(queryId),
|
|
649
|
+
(error) => {
|
|
650
|
+
addSelectAllRetryListener(queryId, sourceStore, sourceTableId);
|
|
651
|
+
throw error;
|
|
652
|
+
},
|
|
653
|
+
),
|
|
566
654
|
),
|
|
567
655
|
),
|
|
568
656
|
);
|
|
@@ -721,6 +809,10 @@ const createQueries = getCreateFunction((store) => {
|
|
|
721
809
|
isFunction(prefixOrMapper)
|
|
722
810
|
? prefixOrMapper
|
|
723
811
|
: (cellId) => (prefixOrMapper ?? EMPTY_STRING) + cellId,
|
|
812
|
+
isFunction(prefixOrMapper) ||
|
|
813
|
+
(!isUndefined(prefixOrMapper) && prefixOrMapper !== EMPTY_STRING)
|
|
814
|
+
? 1
|
|
815
|
+
: 0,
|
|
724
816
|
]);
|
|
725
817
|
};
|
|
726
818
|
const join = (arg1, arg2, arg3, arg4) => {
|
|
@@ -794,28 +886,49 @@ const createQueries = getCreateFunction((store) => {
|
|
|
794
886
|
getSelectedOrGroupedCell(arg1) === arg2,
|
|
795
887
|
);
|
|
796
888
|
build({select, selectAll, join, where, group, having, param});
|
|
797
|
-
resultStore2.delTable(queryId);
|
|
798
|
-
if (isEmpty(selectionEntries)) {
|
|
799
|
-
commit?.();
|
|
800
|
-
return queries;
|
|
801
|
-
}
|
|
802
889
|
const joins = mapNew(joinEntries);
|
|
803
890
|
mapForEach(joins, (joinAlias, [, fromJoinAlias]) =>
|
|
804
891
|
ifNotUndefined(mapGet(joins, fromJoinAlias), ({3: toJoinAliases2}) =>
|
|
805
892
|
isUndefined(joinAlias) ? 0 : arrayPush(toJoinAliases2, joinAlias),
|
|
806
893
|
),
|
|
807
894
|
);
|
|
808
|
-
const
|
|
809
|
-
const hasGroupsOrHavings = !collIsEmpty(groups) || !isEmpty(havings);
|
|
810
|
-
const selectEntries = [];
|
|
811
|
-
const selectAllSources = stagedDefinition[3];
|
|
895
|
+
const isRootSelectAll = (joinedTableId) => isUndefined(joinedTableId);
|
|
812
896
|
const getSelectAllJoin = (joinedTableId) =>
|
|
813
897
|
mapGet(
|
|
814
898
|
joins,
|
|
815
|
-
|
|
816
|
-
? void 0
|
|
817
|
-
: joinedTableId,
|
|
899
|
+
isRootSelectAll(joinedTableId) ? void 0 : joinedTableId,
|
|
818
900
|
);
|
|
901
|
+
const nextSelectAllQuerySources = stagedDefinition[5];
|
|
902
|
+
arrayForEach(
|
|
903
|
+
selectionEntries,
|
|
904
|
+
([selectAll2, selectedOrJoinedTableId, , changesCellId = 0]) =>
|
|
905
|
+
selectAll2
|
|
906
|
+
? ifNotUndefined(
|
|
907
|
+
getSelectAllJoin(selectedOrJoinedTableId),
|
|
908
|
+
([sourceQueryId, , , , , sourceStore]) =>
|
|
909
|
+
sourceStore === store
|
|
910
|
+
? 0
|
|
911
|
+
: mapSet(
|
|
912
|
+
nextSelectAllQuerySources,
|
|
913
|
+
sourceQueryId,
|
|
914
|
+
mapGet(nextSelectAllQuerySources, sourceQueryId) ||
|
|
915
|
+
changesCellId
|
|
916
|
+
? 1
|
|
917
|
+
: 0,
|
|
918
|
+
),
|
|
919
|
+
)
|
|
920
|
+
: 0,
|
|
921
|
+
);
|
|
922
|
+
assertNoMappedSelectAllCycle(queryId, nextSelectAllQuerySources);
|
|
923
|
+
resultStore2.delTable(queryId);
|
|
924
|
+
if (isEmpty(selectionEntries)) {
|
|
925
|
+
commit?.();
|
|
926
|
+
return queries;
|
|
927
|
+
}
|
|
928
|
+
const groups = mapNew(groupEntries);
|
|
929
|
+
const hasGroupsOrHavings = !collIsEmpty(groups) || !isEmpty(havings);
|
|
930
|
+
const selectEntries = [];
|
|
931
|
+
const selectAllSources = stagedDefinition[3];
|
|
819
932
|
arrayForEach(
|
|
820
933
|
selectionEntries,
|
|
821
934
|
([selectAll2, selectedOrJoinedTableId, clauseOrMapper]) => {
|
|
@@ -833,11 +946,7 @@ const createQueries = getCreateFunction((store) => {
|
|
|
833
946
|
(cellId) =>
|
|
834
947
|
arrayPush(selectEntries, [
|
|
835
948
|
clauseOrMapper(cellId),
|
|
836
|
-
|
|
837
|
-
isUndefined(selectedOrJoinedTableId) ||
|
|
838
|
-
selectedOrJoinedTableId === tableId
|
|
839
|
-
? getTableCell(cellId)
|
|
840
|
-
: getTableCell(selectedOrJoinedTableId, cellId),
|
|
949
|
+
getUndefined,
|
|
841
950
|
]),
|
|
842
951
|
);
|
|
843
952
|
},
|
|
@@ -1034,67 +1143,74 @@ const createQueries = getCreateFunction((store) => {
|
|
|
1034
1143
|
joinedCellId,
|
|
1035
1144
|
);
|
|
1036
1145
|
};
|
|
1146
|
+
const writeSelectAllRow = () => {
|
|
1147
|
+
const resultRow = objNew();
|
|
1148
|
+
arrayForEach(
|
|
1149
|
+
selectionEntries,
|
|
1150
|
+
([selectAll2, selectedOrJoinedTableId, clauseOrMapper]) => {
|
|
1151
|
+
if (selectAll2) {
|
|
1152
|
+
ifNotUndefined(
|
|
1153
|
+
getSelectAllJoin(selectedOrJoinedTableId),
|
|
1154
|
+
([realTableId, , , , remoteIdPairs, sourceStore]) => {
|
|
1155
|
+
const sourceRowId = isRootSelectAll(
|
|
1156
|
+
selectedOrJoinedTableId,
|
|
1157
|
+
)
|
|
1158
|
+
? rootRowId
|
|
1159
|
+
: mapGet(remoteIdPairs, rootRowId)?.[0];
|
|
1160
|
+
ifNotUndefined(sourceRowId, (sourceRowId2) =>
|
|
1161
|
+
arrayForEach(
|
|
1162
|
+
arraySort(
|
|
1163
|
+
sourceStore.getCellIds(realTableId, sourceRowId2),
|
|
1164
|
+
),
|
|
1165
|
+
(cellId) =>
|
|
1166
|
+
objSet(
|
|
1167
|
+
resultRow,
|
|
1168
|
+
clauseOrMapper(cellId),
|
|
1169
|
+
sourceStore.getCell(
|
|
1170
|
+
realTableId,
|
|
1171
|
+
sourceRowId2,
|
|
1172
|
+
cellId,
|
|
1173
|
+
),
|
|
1174
|
+
),
|
|
1175
|
+
),
|
|
1176
|
+
);
|
|
1177
|
+
},
|
|
1178
|
+
);
|
|
1179
|
+
} else {
|
|
1180
|
+
const selectedCell = clauseOrMapper(getJoinCell, rootRowId);
|
|
1181
|
+
const selectedCellId = selectedOrJoinedTableId;
|
|
1182
|
+
if (isUndefined(selectedCell)) {
|
|
1183
|
+
objDel(resultRow, selectedCellId);
|
|
1184
|
+
} else {
|
|
1185
|
+
objSet(resultRow, selectedCellId, selectedCell);
|
|
1186
|
+
}
|
|
1187
|
+
}
|
|
1188
|
+
},
|
|
1189
|
+
);
|
|
1190
|
+
if (objIsEmpty(resultRow)) {
|
|
1191
|
+
selectJoinWhereStore.delRow(queryId, rootRowId);
|
|
1192
|
+
} else {
|
|
1193
|
+
selectJoinWhereStore.setRow(queryId, rootRowId, resultRow);
|
|
1194
|
+
}
|
|
1195
|
+
};
|
|
1037
1196
|
selectJoinWhereStore.transaction(() => {
|
|
1038
1197
|
if (!arrayEvery(wheres, (where2) => where2(getJoinCell))) {
|
|
1039
1198
|
selectJoinWhereStore.delRow(queryId, rootRowId);
|
|
1040
1199
|
} else if (hasGroupsOrHavings) {
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
queryId,
|
|
1044
|
-
rootRowId,
|
|
1045
|
-
asCellId,
|
|
1046
|
-
tableCellGetter(getJoinCell, rootRowId),
|
|
1047
|
-
),
|
|
1048
|
-
);
|
|
1049
|
-
} else if (hasSelectAll) {
|
|
1050
|
-
const resultRow = objNew();
|
|
1051
|
-
arrayForEach(
|
|
1052
|
-
selectionEntries,
|
|
1053
|
-
([selectAll2, selectedOrJoinedTableId, clauseOrMapper]) => {
|
|
1054
|
-
if (selectAll2) {
|
|
1055
|
-
ifNotUndefined(
|
|
1056
|
-
getSelectAllJoin(selectedOrJoinedTableId),
|
|
1057
|
-
([realTableId, , , , remoteIdPairs, sourceStore]) => {
|
|
1058
|
-
const sourceRowId =
|
|
1059
|
-
isUndefined(selectedOrJoinedTableId) ||
|
|
1060
|
-
selectedOrJoinedTableId === tableId
|
|
1061
|
-
? rootRowId
|
|
1062
|
-
: mapGet(remoteIdPairs, rootRowId)?.[0];
|
|
1063
|
-
ifNotUndefined(sourceRowId, (sourceRowId2) =>
|
|
1064
|
-
arrayForEach(
|
|
1065
|
-
arraySort(
|
|
1066
|
-
sourceStore.getCellIds(realTableId, sourceRowId2),
|
|
1067
|
-
),
|
|
1068
|
-
(cellId) =>
|
|
1069
|
-
objSet(
|
|
1070
|
-
resultRow,
|
|
1071
|
-
clauseOrMapper(cellId),
|
|
1072
|
-
sourceStore.getCell(
|
|
1073
|
-
realTableId,
|
|
1074
|
-
sourceRowId2,
|
|
1075
|
-
cellId,
|
|
1076
|
-
),
|
|
1077
|
-
),
|
|
1078
|
-
),
|
|
1079
|
-
);
|
|
1080
|
-
},
|
|
1081
|
-
);
|
|
1082
|
-
} else {
|
|
1083
|
-
const selectedCell = clauseOrMapper(getJoinCell, rootRowId);
|
|
1084
|
-
const selectedCellId = selectedOrJoinedTableId;
|
|
1085
|
-
if (isUndefined(selectedCell)) {
|
|
1086
|
-
objDel(resultRow, selectedCellId);
|
|
1087
|
-
} else {
|
|
1088
|
-
objSet(resultRow, selectedCellId, selectedCell);
|
|
1089
|
-
}
|
|
1090
|
-
}
|
|
1091
|
-
},
|
|
1092
|
-
);
|
|
1093
|
-
if (objIsEmpty(resultRow)) {
|
|
1094
|
-
selectJoinWhereStore.delRow(queryId, rootRowId);
|
|
1200
|
+
if (hasSelectAll) {
|
|
1201
|
+
writeSelectAllRow();
|
|
1095
1202
|
} else {
|
|
1096
|
-
|
|
1203
|
+
mapForEach(selects, (asCellId, tableCellGetter) =>
|
|
1204
|
+
selectJoinWhereStore._[5](
|
|
1205
|
+
queryId,
|
|
1206
|
+
rootRowId,
|
|
1207
|
+
asCellId,
|
|
1208
|
+
tableCellGetter(getJoinCell, rootRowId),
|
|
1209
|
+
),
|
|
1210
|
+
);
|
|
1097
1211
|
}
|
|
1212
|
+
} else if (hasSelectAll) {
|
|
1213
|
+
writeSelectAllRow();
|
|
1098
1214
|
} else {
|
|
1099
1215
|
mapForEach(selects, (asCellId, tableCellGetter) =>
|
|
1100
1216
|
selectJoinWhereStore._[5](
|
|
@@ -1224,7 +1340,14 @@ const createQueries = getCreateFunction((store) => {
|
|
|
1224
1340
|
}),
|
|
1225
1341
|
);
|
|
1226
1342
|
const setQueryDefinitionImpl = (queryId, definition) => {
|
|
1227
|
-
const stagedDefinition = [
|
|
1343
|
+
const stagedDefinition = [
|
|
1344
|
+
mapNew(),
|
|
1345
|
+
mapNew(),
|
|
1346
|
+
void 0,
|
|
1347
|
+
mapNew(),
|
|
1348
|
+
setNew(),
|
|
1349
|
+
mapNew(),
|
|
1350
|
+
];
|
|
1228
1351
|
let committed = false;
|
|
1229
1352
|
tryCatchSync(
|
|
1230
1353
|
() =>
|
|
@@ -1246,11 +1369,17 @@ const createQueries = getCreateFunction((store) => {
|
|
|
1246
1369
|
);
|
|
1247
1370
|
mapSet(preStores, queryId, stagedDefinition[2]);
|
|
1248
1371
|
syncSelectAllListeners(queryId, stagedDefinition[3]);
|
|
1372
|
+
clearSelectAllRetryListeners(queryId);
|
|
1249
1373
|
mapSet(
|
|
1250
1374
|
referencedQueryIds,
|
|
1251
1375
|
queryId,
|
|
1252
1376
|
collIsEmpty(stagedDefinition[4]) ? void 0 : stagedDefinition[4],
|
|
1253
1377
|
);
|
|
1378
|
+
mapSet(
|
|
1379
|
+
selectAllQuerySources,
|
|
1380
|
+
queryId,
|
|
1381
|
+
collIsEmpty(stagedDefinition[5]) ? void 0 : stagedDefinition[5],
|
|
1382
|
+
);
|
|
1254
1383
|
committed = true;
|
|
1255
1384
|
}),
|
|
1256
1385
|
(error) => {
|
|
@@ -1301,7 +1430,9 @@ const createQueries = getCreateFunction((store) => {
|
|
|
1301
1430
|
resetPreStores(queryId);
|
|
1302
1431
|
resetSourceStores(queryId);
|
|
1303
1432
|
syncSelectAllListeners(queryId);
|
|
1433
|
+
clearSelectAllRetryListeners(queryId);
|
|
1304
1434
|
mapSet(referencedQueryIds, queryId);
|
|
1435
|
+
mapSet(selectAllQuerySources, queryId);
|
|
1305
1436
|
delDefinition(queryId);
|
|
1306
1437
|
cleanStores();
|
|
1307
1438
|
return queries;
|