supastash 0.1.62 → 0.2.1
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/README.md +37 -8
- package/dist/desktop/adapters/appstate.d.ts +2 -0
- package/dist/desktop/adapters/appstate.d.ts.map +1 -0
- package/dist/desktop/adapters/appstate.js +10 -0
- package/dist/desktop/adapters/crypto.d.ts +3 -0
- package/dist/desktop/adapters/crypto.d.ts.map +1 -0
- package/dist/desktop/adapters/crypto.js +16 -0
- package/dist/{core → desktop/core}/schemaManager/index.d.ts +1 -1
- package/dist/desktop/core/schemaManager/index.d.ts.map +1 -0
- package/dist/{core → desktop/core}/schemaManager/index.js +3 -3
- package/dist/{hooks/supastashData/index.d.ts → desktop/hooks/supastashData.d.ts} +2 -2
- package/dist/desktop/hooks/supastashData.d.ts.map +1 -0
- package/dist/desktop/hooks/supastashData.js +139 -0
- package/dist/{hooks → desktop/hooks}/supastashLogic.d.ts +1 -1
- package/dist/desktop/hooks/supastashLogic.d.ts.map +1 -0
- package/dist/{hooks → desktop/hooks}/supastashLogic.js +11 -12
- package/dist/{hooks/syncEngine/index.d.ts → desktop/hooks/syncEngine.d.ts} +1 -1
- package/dist/desktop/hooks/syncEngine.d.ts.map +1 -0
- package/dist/desktop/hooks/syncEngine.js +233 -0
- package/dist/desktop/index.d.ts +28 -0
- package/dist/desktop/index.d.ts.map +1 -0
- package/dist/desktop/index.js +21 -0
- package/dist/{hooks/supastashData → desktop/utils/fetchData}/eventQueues.d.ts +2 -2
- package/dist/desktop/utils/fetchData/eventQueues.d.ts.map +1 -0
- package/dist/{hooks/supastashData → desktop/utils/fetchData}/eventQueues.js +3 -3
- package/dist/{hooks/supastashData → desktop/utils/fetchData}/fetchCalls.d.ts +1 -1
- package/dist/desktop/utils/fetchData/fetchCalls.d.ts.map +1 -0
- package/dist/{hooks/supastashData → desktop/utils/fetchData}/fetchCalls.js +5 -5
- package/dist/desktop/utils/fetchData/initialFetch.d.ts +3 -0
- package/dist/desktop/utils/fetchData/initialFetch.d.ts.map +1 -0
- package/dist/{utils → desktop/utils}/fetchData/initialFetch.js +2 -2
- package/dist/{utils → desktop/utils}/fetchData/receiveData.d.ts +1 -1
- package/dist/desktop/utils/fetchData/receiveData.d.ts.map +1 -0
- package/dist/{utils → desktop/utils}/fetchData/receiveData.js +7 -7
- package/dist/desktop/utils/query/index.d.ts +73 -0
- package/dist/desktop/utils/query/index.d.ts.map +1 -0
- package/dist/desktop/utils/query/index.js +139 -0
- package/dist/desktop/utils/schema/wipeTables.d.ts.map +1 -0
- package/dist/{utils → desktop/utils}/schema/wipeTables.js +4 -4
- package/dist/desktop/utils/sync/pullFromRemote/fetchOlder.d.ts +44 -0
- package/dist/desktop/utils/sync/pullFromRemote/fetchOlder.d.ts.map +1 -0
- package/dist/desktop/utils/sync/pullFromRemote/fetchOlder.js +55 -0
- package/dist/desktop/utils/sync/pullFromRemote/fetchOlderHelpers.d.ts +33 -0
- package/dist/desktop/utils/sync/pullFromRemote/fetchOlderHelpers.d.ts.map +1 -0
- package/dist/desktop/utils/sync/pullFromRemote/fetchOlderHelpers.js +104 -0
- package/dist/desktop/utils/sync/pullFromRemote/index.d.ts.map +1 -0
- package/dist/{hooks/syncEngine → desktop/utils/sync}/pullFromRemote/index.js +7 -7
- package/dist/{utils → desktop/utils}/sync/pullFromRemote/pullData.d.ts +3 -4
- package/dist/desktop/utils/sync/pullFromRemote/pullData.d.ts.map +1 -0
- package/dist/{utils → desktop/utils}/sync/pullFromRemote/pullData.js +10 -15
- package/dist/desktop/utils/sync/pullFromRemote/updateLocalDb.d.ts +46 -0
- package/dist/desktop/utils/sync/pullFromRemote/updateLocalDb.d.ts.map +1 -0
- package/dist/desktop/utils/sync/pullFromRemote/updateLocalDb.js +284 -0
- package/dist/desktop/utils/sync/pushLocal/index.d.ts.map +1 -0
- package/dist/{hooks/syncEngine → desktop/utils/sync}/pushLocal/index.js +8 -11
- package/dist/desktop/utils/sync/pushLocal/sendUnsyncedToSupabase.d.ts.map +1 -0
- package/dist/{utils → desktop/utils}/sync/pushLocal/sendUnsyncedToSupabase.js +5 -8
- package/dist/{utils → desktop/utils}/sync/pushLocal/uploadChunk.d.ts +1 -1
- package/dist/desktop/utils/sync/pushLocal/uploadChunk.d.ts.map +1 -0
- package/dist/{utils → desktop/utils}/sync/pushLocal/uploadChunk.js +8 -12
- package/dist/{utils → desktop/utils}/sync/pushLocal/uploadHelpers.d.ts +2 -2
- package/dist/desktop/utils/sync/pushLocal/uploadHelpers.d.ts.map +1 -0
- package/dist/{utils → desktop/utils}/sync/pushLocal/uploadHelpers.js +7 -7
- package/dist/{utils → desktop/utils}/sync/status/filterKey.d.ts +3 -3
- package/dist/desktop/utils/sync/status/filterKey.d.ts.map +1 -0
- package/dist/desktop/utils/sync/status/filterKey.js +48 -0
- package/dist/desktop/utils/sync/status/repo.d.ts +10 -0
- package/dist/desktop/utils/sync/status/repo.d.ts.map +1 -0
- package/dist/{utils → desktop/utils}/sync/status/repo.js +31 -25
- package/dist/{utils → desktop/utils}/sync/status/services.d.ts +6 -7
- package/dist/desktop/utils/sync/status/services.d.ts.map +1 -0
- package/dist/{utils → desktop/utils}/sync/status/services.js +4 -9
- package/dist/{utils → desktop/utils}/sync/status/syncStatus.d.ts +6 -8
- package/dist/desktop/utils/sync/status/syncStatus.d.ts.map +1 -0
- package/dist/{utils → desktop/utils}/sync/status/syncStatus.js +14 -6
- package/dist/index.d.ts +18 -23
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -21
- package/dist/native/core/schemaManager/index.d.ts +40 -0
- package/dist/native/core/schemaManager/index.d.ts.map +1 -0
- package/dist/native/core/schemaManager/index.js +141 -0
- package/dist/native/hooks/supastashData.d.ts +67 -0
- package/dist/native/hooks/supastashData.d.ts.map +1 -0
- package/dist/{hooks/supastashData/index.js → native/hooks/supastashData.js} +23 -13
- package/dist/native/hooks/supastashLogic.d.ts +19 -0
- package/dist/native/hooks/supastashLogic.d.ts.map +1 -0
- package/dist/native/hooks/supastashLogic.js +101 -0
- package/dist/native/hooks/syncEngine.d.ts +28 -0
- package/dist/native/hooks/syncEngine.d.ts.map +1 -0
- package/dist/{hooks/syncEngine/index.js → native/hooks/syncEngine.js} +18 -18
- package/dist/native/index.d.ts +28 -0
- package/dist/native/index.d.ts.map +1 -0
- package/dist/native/index.js +21 -0
- package/dist/native/utils/fetchData/eventQueues.d.ts +5 -0
- package/dist/native/utils/fetchData/eventQueues.d.ts.map +1 -0
- package/dist/native/utils/fetchData/eventQueues.js +52 -0
- package/dist/native/utils/fetchData/fetchCalls.d.ts +9 -0
- package/dist/native/utils/fetchData/fetchCalls.d.ts.map +1 -0
- package/dist/native/utils/fetchData/fetchCalls.js +88 -0
- package/dist/native/utils/fetchData/initialFetch.d.ts +3 -0
- package/dist/native/utils/fetchData/initialFetch.d.ts.map +1 -0
- package/dist/native/utils/fetchData/initialFetch.js +21 -0
- package/dist/native/utils/fetchData/receiveData.d.ts +3 -0
- package/dist/native/utils/fetchData/receiveData.d.ts.map +1 -0
- package/dist/native/utils/fetchData/receiveData.js +39 -0
- package/dist/native/utils/query/index.d.ts +73 -0
- package/dist/native/utils/query/index.d.ts.map +1 -0
- package/dist/native/utils/query/index.js +139 -0
- package/dist/native/utils/schema/wipeTables.d.ts +98 -0
- package/dist/native/utils/schema/wipeTables.d.ts.map +1 -0
- package/dist/native/utils/schema/wipeTables.js +188 -0
- package/dist/native/utils/sync/pullFromRemote/fetchOlder.d.ts +44 -0
- package/dist/native/utils/sync/pullFromRemote/fetchOlder.d.ts.map +1 -0
- package/dist/native/utils/sync/pullFromRemote/fetchOlder.js +55 -0
- package/dist/native/utils/sync/pullFromRemote/fetchOlderHelpers.d.ts +33 -0
- package/dist/native/utils/sync/pullFromRemote/fetchOlderHelpers.d.ts.map +1 -0
- package/dist/native/utils/sync/pullFromRemote/fetchOlderHelpers.js +104 -0
- package/dist/native/utils/sync/pullFromRemote/index.d.ts +5 -0
- package/dist/native/utils/sync/pullFromRemote/index.d.ts.map +1 -0
- package/dist/native/utils/sync/pullFromRemote/index.js +73 -0
- package/dist/native/utils/sync/pullFromRemote/pullData.d.ts +21 -0
- package/dist/native/utils/sync/pullFromRemote/pullData.d.ts.map +1 -0
- package/dist/native/utils/sync/pullFromRemote/pullData.js +80 -0
- package/dist/native/utils/sync/pullFromRemote/updateLocalDb.d.ts +46 -0
- package/dist/native/utils/sync/pullFromRemote/updateLocalDb.d.ts.map +1 -0
- package/dist/native/utils/sync/pullFromRemote/updateLocalDb.js +278 -0
- package/dist/native/utils/sync/pushLocal/index.d.ts +5 -0
- package/dist/native/utils/sync/pushLocal/index.d.ts.map +1 -0
- package/dist/native/utils/sync/pushLocal/index.js +101 -0
- package/dist/native/utils/sync/pushLocal/sendUnsyncedToSupabase.d.ts +6 -0
- package/dist/native/utils/sync/pushLocal/sendUnsyncedToSupabase.d.ts.map +1 -0
- package/dist/native/utils/sync/pushLocal/sendUnsyncedToSupabase.js +57 -0
- package/dist/native/utils/sync/pushLocal/uploadChunk.d.ts +8 -0
- package/dist/native/utils/sync/pushLocal/uploadChunk.d.ts.map +1 -0
- package/dist/native/utils/sync/pushLocal/uploadChunk.js +173 -0
- package/dist/native/utils/sync/pushLocal/uploadHelpers.d.ts +41 -0
- package/dist/native/utils/sync/pushLocal/uploadHelpers.d.ts.map +1 -0
- package/dist/native/utils/sync/pushLocal/uploadHelpers.js +243 -0
- package/dist/native/utils/sync/status/filterKey.d.ts +15 -0
- package/dist/native/utils/sync/status/filterKey.d.ts.map +1 -0
- package/dist/{utils → native/utils}/sync/status/filterKey.js +5 -16
- package/dist/native/utils/sync/status/repo.d.ts +10 -0
- package/dist/native/utils/sync/status/repo.d.ts.map +1 -0
- package/dist/native/utils/sync/status/repo.js +97 -0
- package/dist/native/utils/sync/status/services.d.ts +31 -0
- package/dist/native/utils/sync/status/services.d.ts.map +1 -0
- package/dist/native/utils/sync/status/services.js +107 -0
- package/dist/native/utils/sync/status/syncStatus.d.ts +109 -0
- package/dist/native/utils/sync/status/syncStatus.d.ts.map +1 -0
- package/dist/native/utils/sync/status/syncStatus.js +161 -0
- package/dist/shared/constants/syncDefaults.d.ts.map +1 -0
- package/dist/{core → shared/core}/config/index.d.ts +2 -0
- package/dist/shared/core/config/index.d.ts.map +1 -0
- package/dist/{core → shared/core}/config/index.js +9 -1
- package/dist/shared/core/platform/appState.d.ts +12 -0
- package/dist/shared/core/platform/appState.d.ts.map +1 -0
- package/dist/shared/core/platform/appState.js +11 -0
- package/dist/shared/db/adapters/expo_sqlite.d.ts +3 -0
- package/dist/shared/db/adapters/expo_sqlite.d.ts.map +1 -0
- package/dist/shared/db/adapters/expo_sqlite.js +72 -0
- package/dist/shared/db/adapters/rn_nitro.d.ts +3 -0
- package/dist/shared/db/adapters/rn_nitro.d.ts.map +1 -0
- package/dist/shared/db/adapters/rn_nitro.js +111 -0
- package/dist/shared/db/adapters/rn_sqlite_storage.d.ts +3 -0
- package/dist/shared/db/adapters/rn_sqlite_storage.d.ts.map +1 -0
- package/dist/shared/db/adapters/rn_sqlite_storage.js +93 -0
- package/dist/shared/db/adapters/tauri.d.ts +3 -0
- package/dist/shared/db/adapters/tauri.d.ts.map +1 -0
- package/dist/shared/db/adapters/tauri.js +100 -0
- package/dist/shared/db/dbErrorMsg.d.ts.map +1 -0
- package/dist/{db → shared/db}/dbErrorMsg.js +7 -0
- package/dist/{db → shared/db}/dbInitializer.d.ts +1 -1
- package/dist/shared/db/dbInitializer.d.ts.map +1 -0
- package/dist/{db → shared/db}/dbInitializer.js +28 -15
- package/dist/shared/db/normalizer.d.ts +6 -0
- package/dist/shared/db/normalizer.d.ts.map +1 -0
- package/dist/shared/db/normalizer.js +26 -0
- package/dist/{hooks → shared/hooks}/supastashFilters/index.d.ts +3 -3
- package/dist/shared/hooks/supastashFilters/index.d.ts.map +1 -0
- package/dist/{hooks → shared/hooks}/supastashFilters/index.js +6 -4
- package/dist/{hooks → shared/hooks}/syncStatus/index.d.ts +1 -1
- package/dist/shared/hooks/syncStatus/index.d.ts.map +1 -0
- package/dist/shared/store/localCache.d.ts.map +1 -0
- package/dist/shared/store/sharedDb.d.ts +6 -0
- package/dist/shared/store/sharedDb.d.ts.map +1 -0
- package/dist/shared/store/sharedDb.js +17 -0
- package/dist/shared/store/syncCalls.d.ts.map +1 -0
- package/dist/{store → shared/store}/syncStatus.d.ts +1 -1
- package/dist/shared/store/syncStatus.d.ts.map +1 -0
- package/dist/shared/store/tableFilters.d.ts +5 -0
- package/dist/shared/store/tableFilters.d.ts.map +1 -0
- package/dist/shared/store/tableSchemaData.d.ts.map +1 -0
- package/dist/shared/store/tx.d.ts +3 -0
- package/dist/shared/store/tx.d.ts.map +1 -0
- package/dist/shared/store/tx.js +1 -0
- package/dist/shared/types/adapters.types.d.ts +8 -0
- package/dist/{types → shared/types}/expoSqlite.types.d.ts +3 -13
- package/dist/{types → shared/types}/index.d.ts +1 -1
- package/dist/shared/types/index.d.ts.map +1 -0
- package/dist/{types → shared/types}/liteQuery.types.d.ts +2 -2
- package/dist/{types → shared/types}/query.types.d.ts +24 -1
- package/dist/{types → shared/types}/realtimeData.types.d.ts +8 -4
- package/dist/{types → shared/types}/supastashConfig.types.d.ts +263 -8
- package/dist/{types → shared/types}/syncEngine.types.d.ts +49 -7
- package/dist/shared/utils/connection.d.ts.map +1 -0
- package/dist/{utils → shared/utils}/connection.js +6 -6
- package/dist/shared/utils/errorHandler.d.ts +6 -0
- package/dist/shared/utils/errorHandler.d.ts.map +1 -0
- package/dist/shared/utils/errorHandler.js +8 -0
- package/dist/shared/utils/events/eventBus.d.ts.map +1 -0
- package/dist/shared/utils/fetchData/addPayloadToUI.d.ts.map +1 -0
- package/dist/shared/utils/fetchData/createTable.d.ts.map +1 -0
- package/dist/shared/utils/fetchData/createTable.js +38 -0
- package/dist/shared/utils/fetchData/dataState.d.ts.map +1 -0
- package/dist/{hooks/supastashData → shared/utils/fetchData}/dataState.js +1 -1
- package/dist/shared/utils/fetchData/deleteData.d.ts.map +1 -0
- package/dist/{utils → shared/utils}/fetchData/deleteData.js +8 -5
- package/dist/{utils → shared/utils}/fetchData/fetchLocalData.d.ts +2 -2
- package/dist/shared/utils/fetchData/fetchLocalData.d.ts.map +1 -0
- package/dist/shared/utils/fetchData/getKeyType.d.ts.map +1 -0
- package/dist/shared/utils/fetchData/liteHelpers.d.ts +6 -0
- package/dist/shared/utils/fetchData/liteHelpers.d.ts.map +1 -0
- package/dist/shared/utils/fetchData/liteHelpers.js +92 -0
- package/dist/shared/utils/fetchData/realTimeCall.d.ts.map +1 -0
- package/dist/{utils → shared/utils}/fetchData/realTimeCall.js +2 -2
- package/dist/shared/utils/fetchData/realTimeManager.d.ts.map +1 -0
- package/dist/shared/utils/fetchData/registerSub.d.ts +4 -0
- package/dist/shared/utils/fetchData/registerSub.d.ts.map +1 -0
- package/dist/{hooks/supastashData → shared/utils/fetchData}/registerSub.js +3 -3
- package/dist/shared/utils/fetchData/setDataInBatches.d.ts.map +1 -0
- package/dist/shared/utils/fetchData/snapShot.d.ts.map +1 -0
- package/dist/shared/utils/fetchData/validatePayload.d.ts.map +1 -0
- package/dist/shared/utils/genUUID.d.ts.map +1 -0
- package/dist/shared/utils/getSafeValues.d.ts.map +1 -0
- package/dist/shared/utils/getTableSchema.d.ts.map +1 -0
- package/dist/{utils → shared/utils}/logs.d.ts +1 -0
- package/dist/shared/utils/logs.d.ts.map +1 -0
- package/dist/{utils → shared/utils}/logs.js +6 -1
- package/dist/{utils → shared/utils}/query/builder/crud.d.ts +5 -5
- package/dist/shared/utils/query/builder/crud.d.ts.map +1 -0
- package/dist/{utils → shared/utils}/query/builder/filters.d.ts +36 -12
- package/dist/shared/utils/query/builder/filters.d.ts.map +1 -0
- package/dist/{utils → shared/utils}/query/builder/filters.js +33 -1
- package/dist/{utils → shared/utils}/query/builder/index.d.ts +29 -1
- package/dist/shared/utils/query/builder/index.d.ts.map +1 -0
- package/dist/shared/utils/query/builder/index.js +138 -0
- package/dist/shared/utils/query/builder/mainQuery.d.ts.map +1 -0
- package/dist/{utils → shared/utils}/query/builder/mainQuery.js +17 -2
- package/dist/shared/utils/query/helpers/localDb/getLocalMethod.d.ts +15 -0
- package/dist/shared/utils/query/helpers/localDb/getLocalMethod.d.ts.map +1 -0
- package/dist/{utils → shared/utils}/query/helpers/localDb/getLocalMethod.js +7 -6
- package/dist/{utils → shared/utils}/query/helpers/localDb/insertMany.d.ts +3 -0
- package/dist/shared/utils/query/helpers/localDb/insertMany.d.ts.map +1 -0
- package/dist/{utils → shared/utils}/query/helpers/localDb/insertMany.js +10 -3
- package/dist/shared/utils/query/helpers/localDb/localQueryBuilder.d.ts +34 -0
- package/dist/shared/utils/query/helpers/localDb/localQueryBuilder.d.ts.map +1 -0
- package/dist/{utils → shared/utils}/query/helpers/localDb/localQueryBuilder.js +17 -10
- package/dist/{utils → shared/utils}/query/helpers/localDb/upsertMany.d.ts +3 -0
- package/dist/shared/utils/query/helpers/localDb/upsertMany.d.ts.map +1 -0
- package/dist/{utils → shared/utils}/query/helpers/localDb/upsertMany.js +9 -2
- package/dist/shared/utils/query/helpers/mainQueryHelpers.d.ts.map +1 -0
- package/dist/{utils → shared/utils}/query/helpers/mainQueryHelpers.js +39 -9
- package/dist/shared/utils/query/helpers/queryValidator.d.ts.map +1 -0
- package/dist/shared/utils/query/helpers/queueRemote.d.ts.map +1 -0
- package/dist/{utils → shared/utils}/query/helpers/queueRemote.js +36 -27
- package/dist/shared/utils/query/helpers/remoteDb/queryFilterBuilder.d.ts.map +1 -0
- package/dist/shared/utils/query/helpers/remoteDb/queryUtils.d.ts.map +1 -0
- package/dist/shared/utils/query/localDbQuery/delete.d.ts +22 -0
- package/dist/shared/utils/query/localDbQuery/delete.d.ts.map +1 -0
- package/dist/{utils → shared/utils}/query/localDbQuery/delete.js +16 -5
- package/dist/shared/utils/query/localDbQuery/index.d.ts.map +1 -0
- package/dist/shared/utils/query/localDbQuery/index.js +15 -0
- package/dist/shared/utils/query/localDbQuery/insert.d.ts +10 -0
- package/dist/shared/utils/query/localDbQuery/insert.d.ts.map +1 -0
- package/dist/{utils → shared/utils}/query/localDbQuery/insert.js +8 -5
- package/dist/{utils → shared/utils}/query/localDbQuery/select.d.ts +2 -2
- package/dist/shared/utils/query/localDbQuery/select.d.ts.map +1 -0
- package/dist/{utils → shared/utils}/query/localDbQuery/select.js +5 -2
- package/dist/shared/utils/query/localDbQuery/update.d.ts +11 -0
- package/dist/shared/utils/query/localDbQuery/update.d.ts.map +1 -0
- package/dist/{utils → shared/utils}/query/localDbQuery/update.js +7 -4
- package/dist/shared/utils/query/localDbQuery/upsert.d.ts +9 -0
- package/dist/shared/utils/query/localDbQuery/upsert.d.ts.map +1 -0
- package/dist/{utils → shared/utils}/query/localDbQuery/upsert.js +8 -3
- package/dist/shared/utils/query/remoteQuery/supabaseQuery.d.ts.map +1 -0
- package/dist/{utils → shared/utils}/query/remoteQuery/supabaseQuery.js +5 -2
- package/dist/shared/utils/refreshScreenCalls.d.ts.map +1 -0
- package/dist/shared/utils/reusedHelpers.d.ts +8 -0
- package/dist/shared/utils/reusedHelpers.d.ts.map +1 -0
- package/dist/shared/utils/reusedHelpers.js +162 -0
- package/dist/shared/utils/schema/createSyncStatus.d.ts +19 -0
- package/dist/shared/utils/schema/createSyncStatus.d.ts.map +1 -0
- package/dist/{utils → shared/utils}/schema/createSyncStatus.js +30 -3
- package/dist/shared/utils/serializer.d.ts.map +1 -0
- package/dist/shared/utils/supabaseClientErr.d.ts.map +1 -0
- package/dist/shared/utils/supastashMode.d.ts.map +1 -0
- package/dist/shared/utils/sync/getAllTables.d.ts.map +1 -0
- package/dist/{utils → shared/utils}/sync/getAllTables.js +1 -1
- package/dist/shared/utils/sync/pullFromRemote/getLastCreatedInfo.d.ts.map +1 -0
- package/dist/shared/utils/sync/pullFromRemote/getLastDeletedInfo.d.ts.map +1 -0
- package/dist/shared/utils/sync/pullFromRemote/getLastPulledInfo.d.ts.map +1 -0
- package/dist/{utils → shared/utils}/sync/pullFromRemote/helpers.d.ts +10 -7
- package/dist/shared/utils/sync/pullFromRemote/helpers.d.ts.map +1 -0
- package/dist/{utils → shared/utils}/sync/pullFromRemote/helpers.js +20 -14
- package/dist/shared/utils/sync/pullFromRemote/runLimitedConcurrency.d.ts.map +1 -0
- package/dist/{utils → shared/utils}/sync/pullFromRemote/runLimitedConcurrency.js +1 -1
- package/dist/shared/utils/sync/pullFromRemote/stringifyFields.d.ts.map +1 -0
- package/dist/{utils → shared/utils}/sync/pullFromRemote/updateFilter.d.ts +1 -1
- package/dist/shared/utils/sync/pullFromRemote/updateFilter.d.ts.map +1 -0
- package/dist/{utils → shared/utils}/sync/pullFromRemote/updateFilter.js +5 -3
- package/dist/shared/utils/sync/pullFromRemote/validateFilters.d.ts +3 -0
- package/dist/shared/utils/sync/pullFromRemote/validateFilters.d.ts.map +1 -0
- package/dist/shared/utils/sync/pullFromRemote/validateFilters.js +49 -0
- package/dist/shared/utils/sync/pushLocal/deleteChunks.d.ts.map +1 -0
- package/dist/{utils → shared/utils}/sync/pushLocal/deleteChunks.js +7 -5
- package/dist/shared/utils/sync/pushLocal/getAllUnsyncedData.d.ts.map +1 -0
- package/dist/shared/utils/sync/pushLocal/getAllUnsyncedData.js +53 -0
- package/dist/shared/utils/sync/pushLocal/normalize.d.ts.map +1 -0
- package/dist/shared/utils/sync/pushLocal/parseFields.d.ts.map +1 -0
- package/dist/{utils → shared/utils}/sync/queryStatus.d.ts +1 -1
- package/dist/shared/utils/sync/queryStatus.d.ts.map +1 -0
- package/dist/shared/utils/sync/refreshTables.d.ts.map +1 -0
- package/dist/shared/utils/sync/registration/syncCalls.d.ts.map +1 -0
- package/dist/{utils → shared/utils}/sync/registration/syncCalls.js +1 -1
- package/dist/shared/utils/sync/status/remoteSchema.d.ts +4 -0
- package/dist/shared/utils/sync/status/remoteSchema.d.ts.map +1 -0
- package/dist/shared/utils/sync/status/remoteSchema.js +140 -0
- package/dist/shared/utils/sync/status/syncUpdate.d.ts.map +1 -0
- package/dist/shared/utils/tableValidator.d.ts.map +1 -0
- package/package.json +29 -12
- package/dist/constants/syncDefaults.d.ts.map +0 -1
- package/dist/core/config/index.d.ts.map +0 -1
- package/dist/core/schemaManager/index.d.ts.map +0 -1
- package/dist/db/adapters/expo_sqlite.d.ts +0 -3
- package/dist/db/adapters/expo_sqlite.d.ts.map +0 -1
- package/dist/db/adapters/expo_sqlite.js +0 -24
- package/dist/db/adapters/rn_nitro.d.ts +0 -3
- package/dist/db/adapters/rn_nitro.d.ts.map +0 -1
- package/dist/db/adapters/rn_nitro.js +0 -34
- package/dist/db/adapters/rn_sqlite_storage.d.ts +0 -3
- package/dist/db/adapters/rn_sqlite_storage.d.ts.map +0 -1
- package/dist/db/adapters/rn_sqlite_storage.js +0 -25
- package/dist/db/dbErrorMsg.d.ts.map +0 -1
- package/dist/db/dbInitializer.d.ts.map +0 -1
- package/dist/hooks/supastashData/addPayloadToUI.d.ts.map +0 -1
- package/dist/hooks/supastashData/dataState.d.ts.map +0 -1
- package/dist/hooks/supastashData/eventQueues.d.ts.map +0 -1
- package/dist/hooks/supastashData/fetchCalls.d.ts.map +0 -1
- package/dist/hooks/supastashData/index.d.ts.map +0 -1
- package/dist/hooks/supastashData/realtimeSubscription.d.ts +0 -5
- package/dist/hooks/supastashData/realtimeSubscription.d.ts.map +0 -1
- package/dist/hooks/supastashData/realtimeSubscription.js +0 -96
- package/dist/hooks/supastashData/registerSub.d.ts +0 -4
- package/dist/hooks/supastashData/registerSub.d.ts.map +0 -1
- package/dist/hooks/supastashFilters/index.d.ts.map +0 -1
- package/dist/hooks/supastashLiteQuery/fetchCalls.d.ts +0 -1
- package/dist/hooks/supastashLiteQuery/fetchCalls.d.ts.map +0 -1
- package/dist/hooks/supastashLiteQuery/fetchCalls.js +0 -122
- package/dist/hooks/supastashLiteQuery/index.d.ts +0 -53
- package/dist/hooks/supastashLiteQuery/index.d.ts.map +0 -1
- package/dist/hooks/supastashLiteQuery/index.js +0 -117
- package/dist/hooks/supastashLiteQuery/loadCacheOnMount.d.ts +0 -1
- package/dist/hooks/supastashLiteQuery/loadCacheOnMount.d.ts.map +0 -1
- package/dist/hooks/supastashLiteQuery/loadCacheOnMount.js +0 -1
- package/dist/hooks/supastashLogic.d.ts.map +0 -1
- package/dist/hooks/syncEngine/index.d.ts.map +0 -1
- package/dist/hooks/syncEngine/pullFromRemote/index.d.ts.map +0 -1
- package/dist/hooks/syncEngine/pushLocal/index.d.ts.map +0 -1
- package/dist/hooks/syncStatus/index.d.ts.map +0 -1
- package/dist/store/localCache.d.ts.map +0 -1
- package/dist/store/syncCalls.d.ts.map +0 -1
- package/dist/store/syncStatus.d.ts.map +0 -1
- package/dist/store/tableFilters.d.ts +0 -5
- package/dist/store/tableFilters.d.ts.map +0 -1
- package/dist/store/tableSchemaData.d.ts.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/supastashFilters.types.d.ts +0 -3
- package/dist/utils/connection.d.ts.map +0 -1
- package/dist/utils/createIndexes.d.ts +0 -9
- package/dist/utils/createIndexes.d.ts.map +0 -1
- package/dist/utils/createIndexes.js +0 -74
- package/dist/utils/events/eventBus.d.ts.map +0 -1
- package/dist/utils/fetchData/buildFilter.d.ts +0 -4
- package/dist/utils/fetchData/buildFilter.d.ts.map +0 -1
- package/dist/utils/fetchData/buildFilter.js +0 -58
- package/dist/utils/fetchData/createTable.d.ts.map +0 -1
- package/dist/utils/fetchData/createTable.js +0 -81
- package/dist/utils/fetchData/deleteData.d.ts.map +0 -1
- package/dist/utils/fetchData/fetchLocalData.d.ts.map +0 -1
- package/dist/utils/fetchData/getKeyType.d.ts.map +0 -1
- package/dist/utils/fetchData/initialFetch.d.ts +0 -3
- package/dist/utils/fetchData/initialFetch.d.ts.map +0 -1
- package/dist/utils/fetchData/liteHelpers.d.ts +0 -6
- package/dist/utils/fetchData/liteHelpers.d.ts.map +0 -1
- package/dist/utils/fetchData/liteHelpers.js +0 -197
- package/dist/utils/fetchData/liteReducer.d.ts +0 -3
- package/dist/utils/fetchData/liteReducer.d.ts.map +0 -1
- package/dist/utils/fetchData/liteReducer.js +0 -103
- package/dist/utils/fetchData/realTimeCall.d.ts.map +0 -1
- package/dist/utils/fetchData/realTimeManager.d.ts.map +0 -1
- package/dist/utils/fetchData/receiveData.d.ts.map +0 -1
- package/dist/utils/fetchData/setDataInBatches.d.ts.map +0 -1
- package/dist/utils/fetchData/snapShot.d.ts.map +0 -1
- package/dist/utils/fetchData/validatePayload.d.ts.map +0 -1
- package/dist/utils/genUUID.d.ts.map +0 -1
- package/dist/utils/getSafeValues.d.ts.map +0 -1
- package/dist/utils/getTableSchema.d.ts.map +0 -1
- package/dist/utils/logs.d.ts.map +0 -1
- package/dist/utils/query/builder/crud.d.ts.map +0 -1
- package/dist/utils/query/builder/filters.d.ts.map +0 -1
- package/dist/utils/query/builder/index.d.ts.map +0 -1
- package/dist/utils/query/builder/index.js +0 -62
- package/dist/utils/query/builder/mainQuery.d.ts.map +0 -1
- package/dist/utils/query/helpers/localDb/getLocalMethod.d.ts +0 -15
- package/dist/utils/query/helpers/localDb/getLocalMethod.d.ts.map +0 -1
- package/dist/utils/query/helpers/localDb/insertMany.d.ts.map +0 -1
- package/dist/utils/query/helpers/localDb/localQueryBuilder.d.ts +0 -34
- package/dist/utils/query/helpers/localDb/localQueryBuilder.d.ts.map +0 -1
- package/dist/utils/query/helpers/localDb/upsertMany.d.ts.map +0 -1
- package/dist/utils/query/helpers/mainQueryHelpers.d.ts.map +0 -1
- package/dist/utils/query/helpers/queryValidator.d.ts.map +0 -1
- package/dist/utils/query/helpers/queueRemote.d.ts.map +0 -1
- package/dist/utils/query/helpers/remoteDb/queryFilterBuilder.d.ts.map +0 -1
- package/dist/utils/query/helpers/remoteDb/queryUtils.d.ts.map +0 -1
- package/dist/utils/query/localDbQuery/delete.d.ts +0 -16
- package/dist/utils/query/localDbQuery/delete.d.ts.map +0 -1
- package/dist/utils/query/localDbQuery/index.d.ts.map +0 -1
- package/dist/utils/query/localDbQuery/index.js +0 -15
- package/dist/utils/query/localDbQuery/insert.d.ts +0 -10
- package/dist/utils/query/localDbQuery/insert.d.ts.map +0 -1
- package/dist/utils/query/localDbQuery/select.d.ts.map +0 -1
- package/dist/utils/query/localDbQuery/update.d.ts +0 -11
- package/dist/utils/query/localDbQuery/update.d.ts.map +0 -1
- package/dist/utils/query/localDbQuery/upsert.d.ts +0 -9
- package/dist/utils/query/localDbQuery/upsert.d.ts.map +0 -1
- package/dist/utils/query/remoteQuery/supabaseQuery.d.ts.map +0 -1
- package/dist/utils/refreshScreenCalls.d.ts.map +0 -1
- package/dist/utils/schema/createSyncStatus.d.ts +0 -17
- package/dist/utils/schema/createSyncStatus.d.ts.map +0 -1
- package/dist/utils/schema/wipeTables.d.ts.map +0 -1
- package/dist/utils/serializer.d.ts.map +0 -1
- package/dist/utils/supabaseClientErr.d.ts.map +0 -1
- package/dist/utils/supastashMode.d.ts.map +0 -1
- package/dist/utils/sync/getAllTables.d.ts.map +0 -1
- package/dist/utils/sync/pullFromRemote/getLastCreatedInfo.d.ts.map +0 -1
- package/dist/utils/sync/pullFromRemote/getLastDeletedInfo.d.ts.map +0 -1
- package/dist/utils/sync/pullFromRemote/getLastPulledInfo.d.ts.map +0 -1
- package/dist/utils/sync/pullFromRemote/helpers.d.ts.map +0 -1
- package/dist/utils/sync/pullFromRemote/pullData.d.ts.map +0 -1
- package/dist/utils/sync/pullFromRemote/pullDeletedData.d.ts +0 -12
- package/dist/utils/sync/pullFromRemote/pullDeletedData.d.ts.map +0 -1
- package/dist/utils/sync/pullFromRemote/pullDeletedData.js +0 -51
- package/dist/utils/sync/pullFromRemote/runLimitedConcurrency.d.ts.map +0 -1
- package/dist/utils/sync/pullFromRemote/stringifyFields.d.ts.map +0 -1
- package/dist/utils/sync/pullFromRemote/updateFilter.d.ts.map +0 -1
- package/dist/utils/sync/pullFromRemote/updateLocalDb.d.ts +0 -14
- package/dist/utils/sync/pullFromRemote/updateLocalDb.d.ts.map +0 -1
- package/dist/utils/sync/pullFromRemote/updateLocalDb.js +0 -200
- package/dist/utils/sync/pullFromRemote/validateFilters.d.ts +0 -5
- package/dist/utils/sync/pullFromRemote/validateFilters.d.ts.map +0 -1
- package/dist/utils/sync/pullFromRemote/validateFilters.js +0 -103
- package/dist/utils/sync/pushLocal/deleteChunks.d.ts.map +0 -1
- package/dist/utils/sync/pushLocal/getAllUnsyncedData.d.ts.map +0 -1
- package/dist/utils/sync/pushLocal/getAllUnsyncedData.js +0 -85
- package/dist/utils/sync/pushLocal/normalize.d.ts.map +0 -1
- package/dist/utils/sync/pushLocal/parseFields.d.ts.map +0 -1
- package/dist/utils/sync/pushLocal/sendUnsyncedToSupabase.d.ts.map +0 -1
- package/dist/utils/sync/pushLocal/uploadChunk.d.ts.map +0 -1
- package/dist/utils/sync/pushLocal/uploadHelpers.d.ts.map +0 -1
- package/dist/utils/sync/queryStatus.d.ts.map +0 -1
- package/dist/utils/sync/refreshTables.d.ts.map +0 -1
- package/dist/utils/sync/registration/syncCalls.d.ts.map +0 -1
- package/dist/utils/sync/status/filterKey.d.ts.map +0 -1
- package/dist/utils/sync/status/repo.d.ts +0 -10
- package/dist/utils/sync/status/repo.d.ts.map +0 -1
- package/dist/utils/sync/status/services.d.ts.map +0 -1
- package/dist/utils/sync/status/syncStatus.d.ts.map +0 -1
- package/dist/utils/sync/status/syncUpdate.d.ts.map +0 -1
- package/dist/utils/syncStatus.d.ts +0 -69
- package/dist/utils/syncStatus.d.ts.map +0 -1
- package/dist/utils/syncStatus.js +0 -129
- package/dist/utils/syncUpdate.d.ts +0 -7
- package/dist/utils/syncUpdate.d.ts.map +0 -1
- package/dist/utils/syncUpdate.js +0 -18
- package/dist/utils/tableValidator.d.ts.map +0 -1
- package/dist/utils/toggleSupastashMode.d.ts +0 -28
- package/dist/utils/toggleSupastashMode.d.ts.map +0 -1
- package/dist/utils/toggleSupastashMode.js +0 -46
- /package/dist/{utils → desktop/utils}/schema/wipeTables.d.ts +0 -0
- /package/dist/{hooks/syncEngine → desktop/utils/sync}/pullFromRemote/index.d.ts +0 -0
- /package/dist/{hooks/syncEngine → desktop/utils/sync}/pushLocal/index.d.ts +0 -0
- /package/dist/{utils → desktop/utils}/sync/pushLocal/sendUnsyncedToSupabase.d.ts +0 -0
- /package/dist/{constants → shared/constants}/syncDefaults.d.ts +0 -0
- /package/dist/{constants → shared/constants}/syncDefaults.js +0 -0
- /package/dist/{db → shared/db}/dbErrorMsg.d.ts +0 -0
- /package/dist/{hooks → shared/hooks}/syncStatus/index.js +0 -0
- /package/dist/{store → shared/store}/localCache.d.ts +0 -0
- /package/dist/{store → shared/store}/localCache.js +0 -0
- /package/dist/{store → shared/store}/syncCalls.d.ts +0 -0
- /package/dist/{store → shared/store}/syncCalls.js +0 -0
- /package/dist/{store → shared/store}/syncStatus.js +0 -0
- /package/dist/{store → shared/store}/tableFilters.js +0 -0
- /package/dist/{store → shared/store}/tableSchemaData.d.ts +0 -0
- /package/dist/{store → shared/store}/tableSchemaData.js +0 -0
- /package/dist/{types → shared/types}/index.js +0 -0
- /package/dist/{types → shared/types}/rnNitroSqlite.types.d.ts +0 -0
- /package/dist/{types → shared/types}/rnSqliteStorage.types.d.ts +0 -0
- /package/dist/{types → shared/types}/schemaManager.types.d.ts +0 -0
- /package/dist/{utils → shared/utils}/connection.d.ts +0 -0
- /package/dist/{utils → shared/utils}/events/eventBus.d.ts +0 -0
- /package/dist/{utils → shared/utils}/events/eventBus.js +0 -0
- /package/dist/{hooks/supastashData → shared/utils/fetchData}/addPayloadToUI.d.ts +0 -0
- /package/dist/{hooks/supastashData → shared/utils/fetchData}/addPayloadToUI.js +0 -0
- /package/dist/{utils → shared/utils}/fetchData/createTable.d.ts +0 -0
- /package/dist/{hooks/supastashData → shared/utils/fetchData}/dataState.d.ts +0 -0
- /package/dist/{utils → shared/utils}/fetchData/deleteData.d.ts +0 -0
- /package/dist/{utils → shared/utils}/fetchData/fetchLocalData.js +0 -0
- /package/dist/{utils → shared/utils}/fetchData/getKeyType.d.ts +0 -0
- /package/dist/{utils → shared/utils}/fetchData/getKeyType.js +0 -0
- /package/dist/{utils → shared/utils}/fetchData/realTimeCall.d.ts +0 -0
- /package/dist/{utils → shared/utils}/fetchData/realTimeManager.d.ts +0 -0
- /package/dist/{utils → shared/utils}/fetchData/realTimeManager.js +0 -0
- /package/dist/{utils → shared/utils}/fetchData/setDataInBatches.d.ts +0 -0
- /package/dist/{utils → shared/utils}/fetchData/setDataInBatches.js +0 -0
- /package/dist/{utils → shared/utils}/fetchData/snapShot.d.ts +0 -0
- /package/dist/{utils → shared/utils}/fetchData/snapShot.js +0 -0
- /package/dist/{utils → shared/utils}/fetchData/validatePayload.d.ts +0 -0
- /package/dist/{utils → shared/utils}/fetchData/validatePayload.js +0 -0
- /package/dist/{utils → shared/utils}/genUUID.d.ts +0 -0
- /package/dist/{utils → shared/utils}/genUUID.js +0 -0
- /package/dist/{utils → shared/utils}/getSafeValues.d.ts +0 -0
- /package/dist/{utils → shared/utils}/getSafeValues.js +0 -0
- /package/dist/{utils → shared/utils}/getTableSchema.d.ts +0 -0
- /package/dist/{utils → shared/utils}/getTableSchema.js +0 -0
- /package/dist/{utils → shared/utils}/query/builder/crud.js +0 -0
- /package/dist/{utils → shared/utils}/query/builder/mainQuery.d.ts +0 -0
- /package/dist/{utils → shared/utils}/query/helpers/mainQueryHelpers.d.ts +0 -0
- /package/dist/{utils → shared/utils}/query/helpers/queryValidator.d.ts +0 -0
- /package/dist/{utils → shared/utils}/query/helpers/queryValidator.js +0 -0
- /package/dist/{utils → shared/utils}/query/helpers/queueRemote.d.ts +0 -0
- /package/dist/{utils → shared/utils}/query/helpers/remoteDb/queryFilterBuilder.d.ts +0 -0
- /package/dist/{utils → shared/utils}/query/helpers/remoteDb/queryFilterBuilder.js +0 -0
- /package/dist/{utils → shared/utils}/query/helpers/remoteDb/queryUtils.d.ts +0 -0
- /package/dist/{utils → shared/utils}/query/helpers/remoteDb/queryUtils.js +0 -0
- /package/dist/{utils → shared/utils}/query/localDbQuery/index.d.ts +0 -0
- /package/dist/{utils → shared/utils}/query/remoteQuery/supabaseQuery.d.ts +0 -0
- /package/dist/{utils → shared/utils}/refreshScreenCalls.d.ts +0 -0
- /package/dist/{utils → shared/utils}/refreshScreenCalls.js +0 -0
- /package/dist/{utils → shared/utils}/serializer.d.ts +0 -0
- /package/dist/{utils → shared/utils}/serializer.js +0 -0
- /package/dist/{utils → shared/utils}/supabaseClientErr.d.ts +0 -0
- /package/dist/{utils → shared/utils}/supabaseClientErr.js +0 -0
- /package/dist/{utils → shared/utils}/supastashMode.d.ts +0 -0
- /package/dist/{utils → shared/utils}/supastashMode.js +0 -0
- /package/dist/{utils → shared/utils}/sync/getAllTables.d.ts +0 -0
- /package/dist/{utils → shared/utils}/sync/pullFromRemote/getLastCreatedInfo.d.ts +0 -0
- /package/dist/{utils → shared/utils}/sync/pullFromRemote/getLastCreatedInfo.js +0 -0
- /package/dist/{utils → shared/utils}/sync/pullFromRemote/getLastDeletedInfo.d.ts +0 -0
- /package/dist/{utils → shared/utils}/sync/pullFromRemote/getLastDeletedInfo.js +0 -0
- /package/dist/{utils → shared/utils}/sync/pullFromRemote/getLastPulledInfo.d.ts +0 -0
- /package/dist/{utils → shared/utils}/sync/pullFromRemote/getLastPulledInfo.js +0 -0
- /package/dist/{utils → shared/utils}/sync/pullFromRemote/runLimitedConcurrency.d.ts +0 -0
- /package/dist/{utils → shared/utils}/sync/pullFromRemote/stringifyFields.d.ts +0 -0
- /package/dist/{utils → shared/utils}/sync/pullFromRemote/stringifyFields.js +0 -0
- /package/dist/{utils → shared/utils}/sync/pushLocal/deleteChunks.d.ts +0 -0
- /package/dist/{utils → shared/utils}/sync/pushLocal/getAllUnsyncedData.d.ts +0 -0
- /package/dist/{utils → shared/utils}/sync/pushLocal/normalize.d.ts +0 -0
- /package/dist/{utils → shared/utils}/sync/pushLocal/normalize.js +0 -0
- /package/dist/{utils → shared/utils}/sync/pushLocal/parseFields.d.ts +0 -0
- /package/dist/{utils → shared/utils}/sync/pushLocal/parseFields.js +0 -0
- /package/dist/{utils → shared/utils}/sync/queryStatus.js +0 -0
- /package/dist/{utils → shared/utils}/sync/refreshTables.d.ts +0 -0
- /package/dist/{utils → shared/utils}/sync/refreshTables.js +0 -0
- /package/dist/{utils → shared/utils}/sync/registration/syncCalls.d.ts +0 -0
- /package/dist/{utils → shared/utils}/sync/status/syncUpdate.d.ts +0 -0
- /package/dist/{utils → shared/utils}/sync/status/syncUpdate.js +0 -0
- /package/dist/{utils → shared/utils}/tableValidator.d.ts +0 -0
- /package/dist/{utils → shared/utils}/tableValidator.js +0 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { getSupastashConfig } from "../../../core/config";
|
|
2
|
+
import { txStore } from "../../../store/tx";
|
|
2
3
|
import { logWarn } from "../../logs";
|
|
3
4
|
import { refreshScreen } from "../../refreshScreenCalls";
|
|
4
5
|
import { assignInsertIds, getCommonError, runSyncStrategy, validatePayloadForSingleInsert, } from "../helpers/mainQueryHelpers";
|
|
@@ -22,8 +23,10 @@ export async function queryDb(state) {
|
|
|
22
23
|
payload: updatedPayload,
|
|
23
24
|
type: syncMode,
|
|
24
25
|
};
|
|
26
|
+
if (state.txId && ["localFirst"].includes(updatedState.type)) {
|
|
27
|
+
txStore[state.txId].push(updatedState);
|
|
28
|
+
}
|
|
25
29
|
const { localResult, remoteResult, } = await runSyncStrategy(updatedState);
|
|
26
|
-
localData = localResult?.data;
|
|
27
30
|
const success = !localResult?.error && !remoteResult?.error;
|
|
28
31
|
const commonError = getCommonError(table, method, localResult, remoteResult);
|
|
29
32
|
if (viewRemoteResult) {
|
|
@@ -39,14 +42,26 @@ export async function queryDb(state) {
|
|
|
39
42
|
success,
|
|
40
43
|
});
|
|
41
44
|
}
|
|
45
|
+
const remoteData = remoteResult?.data;
|
|
46
|
+
const localData = localResult?.data;
|
|
47
|
+
const policy = state.fetchPolicy;
|
|
48
|
+
const fetchPolicyData = !policy
|
|
49
|
+
? null
|
|
50
|
+
: policy === "localFirst"
|
|
51
|
+
? localData ?? remoteData
|
|
52
|
+
: remoteData ?? localData;
|
|
53
|
+
const data = fetchPolicyData ??
|
|
54
|
+
(type === "remoteOnly" ? remoteData : localData ?? null);
|
|
42
55
|
return Promise.resolve({
|
|
43
|
-
data
|
|
56
|
+
data,
|
|
44
57
|
error: commonError ?? null,
|
|
45
58
|
success,
|
|
46
59
|
});
|
|
47
60
|
}
|
|
48
61
|
catch (error) {
|
|
49
62
|
logWarn(`[Supastash] ${error instanceof Error ? error.message : String(error)}`);
|
|
63
|
+
if (state.throwOnError)
|
|
64
|
+
throw error;
|
|
50
65
|
if (state.viewRemoteResult) {
|
|
51
66
|
return Promise.resolve({
|
|
52
67
|
remote: null,
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { CrudMethods, MethodReturnTypeMap, SupastashQuery } from "../../../../types/query.types";
|
|
2
|
+
/**
|
|
3
|
+
* Gets method for local db calls
|
|
4
|
+
*
|
|
5
|
+
* @param table - The name of the table to query
|
|
6
|
+
* @param method - The method to call
|
|
7
|
+
* @param select - The columns to select
|
|
8
|
+
* @param payload - The payload to insert
|
|
9
|
+
* @param filters - The filters to apply
|
|
10
|
+
* @param limit - The limit to apply
|
|
11
|
+
* @param isSingle - Whether to return a single row or multiple rows
|
|
12
|
+
* @returns query
|
|
13
|
+
*/
|
|
14
|
+
export default function getLocalMethod<T extends CrudMethods, U extends boolean, R, Z>(state: SupastashQuery<T, U, R>): () => Promise<MethodReturnTypeMap<U, Z>[T]>;
|
|
15
|
+
//# sourceMappingURL=getLocalMethod.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getLocalMethod.d.ts","sourceRoot":"","sources":["../../../../../../src/shared/utils/query/helpers/localDb/getLocalMethod.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAEX,mBAAmB,EACnB,cAAc,EACf,MAAM,+BAA+B,CAAC;AASvC;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CACpC,CAAC,SAAS,WAAW,EACrB,CAAC,SAAS,OAAO,EACjB,CAAC,EACD,CAAC,EACD,KAAK,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,OAAO,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAY7E"}
|
|
@@ -11,13 +11,14 @@ import { buildDelete, buildInsert, buildSelect, buildUpdate, buildUpsert, } from
|
|
|
11
11
|
* @param isSingle - Whether to return a single row or multiple rows
|
|
12
12
|
* @returns query
|
|
13
13
|
*/
|
|
14
|
-
export default function getLocalMethod(
|
|
14
|
+
export default function getLocalMethod(state) {
|
|
15
|
+
const { method } = state;
|
|
15
16
|
const handlers = {
|
|
16
|
-
select: buildSelect(
|
|
17
|
-
insert: buildInsert(
|
|
18
|
-
update: buildUpdate(
|
|
19
|
-
delete: buildDelete(
|
|
20
|
-
upsert: buildUpsert(
|
|
17
|
+
select: buildSelect(state),
|
|
18
|
+
insert: buildInsert(state),
|
|
19
|
+
update: buildUpdate(state),
|
|
20
|
+
delete: buildDelete(state),
|
|
21
|
+
upsert: buildUpsert(state),
|
|
21
22
|
none: async () => null,
|
|
22
23
|
};
|
|
23
24
|
return handlers[method];
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { SyncMode } from "../../../../types/query.types";
|
|
2
|
+
import { SupastashSQLiteExecutor } from "../../../../types/supastashConfig.types";
|
|
2
3
|
interface InsertOptions<R = any> {
|
|
3
4
|
table: string;
|
|
4
5
|
syncMode?: SyncMode;
|
|
5
6
|
nowISO?: string;
|
|
6
7
|
returnInsertedRows?: boolean;
|
|
8
|
+
withTx: boolean;
|
|
9
|
+
tx: SupastashSQLiteExecutor | null;
|
|
7
10
|
}
|
|
8
11
|
export declare function insertMany<R = any>(payload: R[], opts: InsertOptions<R>): Promise<R[] | void>;
|
|
9
12
|
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insertMany.d.ts","sourceRoot":"","sources":["../../../../../../src/shared/utils/query/helpers/localDb/insertMany.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAEL,uBAAuB,EACxB,MAAM,yCAAyC,CAAC;AAIjD,UAAU,aAAa,CAAC,CAAC,GAAG,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,EAAE,EAAE,uBAAuB,GAAG,IAAI,CAAC;CACpC;AAMD,wBAAsB,UAAU,CAAC,CAAC,GAAG,GAAG,EACtC,OAAO,EAAE,CAAC,EAAE,EACZ,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GACrB,OAAO,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CA+GrB"}
|
|
@@ -5,7 +5,6 @@ const MAX_PARAMS = 999;
|
|
|
5
5
|
const CHECK_BATCH = 900;
|
|
6
6
|
const YIELD_EVERY = 500;
|
|
7
7
|
export async function insertMany(payload, opts) {
|
|
8
|
-
const db = await getSupastashDb();
|
|
9
8
|
const { table, syncMode, returnInsertedRows } = opts;
|
|
10
9
|
const timeStamp = opts.nowISO ?? new Date().toISOString();
|
|
11
10
|
assertTableName(table);
|
|
@@ -24,6 +23,7 @@ export async function insertMany(payload, opts) {
|
|
|
24
23
|
idSet.add(id);
|
|
25
24
|
return id;
|
|
26
25
|
});
|
|
26
|
+
const db = opts.tx ?? (await getSupastashDb());
|
|
27
27
|
// 2) Check existing ids in DB (batched; fail-fast)
|
|
28
28
|
for (let i = 0; i < ids.length; i += CHECK_BATCH) {
|
|
29
29
|
const part = ids.slice(i, i + CHECK_BATCH);
|
|
@@ -36,7 +36,7 @@ export async function insertMany(payload, opts) {
|
|
|
36
36
|
}
|
|
37
37
|
// 3) Do inserts in a single transaction
|
|
38
38
|
const insertedIds = [];
|
|
39
|
-
const run = async () => {
|
|
39
|
+
const run = async (db) => {
|
|
40
40
|
for (let i = 0; i < payload.length; i++) {
|
|
41
41
|
const item = payload[i];
|
|
42
42
|
const newPayload = {
|
|
@@ -63,7 +63,14 @@ export async function insertMany(payload, opts) {
|
|
|
63
63
|
}
|
|
64
64
|
};
|
|
65
65
|
try {
|
|
66
|
-
|
|
66
|
+
if (opts.withTx && !opts.tx) {
|
|
67
|
+
await db.withTransaction(async (tx) => {
|
|
68
|
+
await run(tx);
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
await run(opts.tx ?? db);
|
|
73
|
+
}
|
|
67
74
|
}
|
|
68
75
|
catch (e) {
|
|
69
76
|
throw e;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { CrudMethods, SupastashQuery } from "../../../../types/query.types";
|
|
2
|
+
/**
|
|
3
|
+
* Builds a select query
|
|
4
|
+
*
|
|
5
|
+
* @param table - The name of the table to query
|
|
6
|
+
* @param select - The columns to select
|
|
7
|
+
* @param filters - The filters to apply
|
|
8
|
+
* @param limit - The limit to apply
|
|
9
|
+
* @param isSingle - Whether to return a single row or multiple rows
|
|
10
|
+
* @returns query
|
|
11
|
+
*/
|
|
12
|
+
export declare function buildSelect<T extends boolean, R, Z>(state: SupastashQuery<CrudMethods, boolean, R>): () => Promise<T extends true ? import("../../../../types/query.types").PayloadResult<Z> : import("../../../../types/query.types").PayloadListResult<Z>>;
|
|
13
|
+
/**
|
|
14
|
+
* Builds an insert query
|
|
15
|
+
*
|
|
16
|
+
* @param table - The name of the table to insert into
|
|
17
|
+
* @param payload - The payload to insert
|
|
18
|
+
* @returns query
|
|
19
|
+
*/
|
|
20
|
+
export declare function buildInsert<T extends boolean, R, Z>(state: SupastashQuery<CrudMethods, boolean, R>): () => Promise<T extends true ? import("../../../../types/query.types").PayloadResult<Z> : import("../../../../types/query.types").PayloadListResult<Z>>;
|
|
21
|
+
/**
|
|
22
|
+
* Builds an update query
|
|
23
|
+
*
|
|
24
|
+
* @returns query
|
|
25
|
+
*/
|
|
26
|
+
export declare function buildUpdate<T extends boolean, R, Z>(state: SupastashQuery<CrudMethods, boolean, R>): () => Promise<T extends true ? import("../../../../types/query.types").PayloadResult<Z> : import("../../../../types/query.types").PayloadListResult<Z>>;
|
|
27
|
+
/**
|
|
28
|
+
* Builds a delete query
|
|
29
|
+
*
|
|
30
|
+
* @returns query
|
|
31
|
+
*/
|
|
32
|
+
export declare function buildDelete<Z = any>(state: SupastashQuery<CrudMethods, boolean, Z>): () => Promise<import("../../../../types/query.types").SupatashDeleteResult<Z>>;
|
|
33
|
+
export declare function buildUpsert<T extends boolean, R, Z>(state: SupastashQuery<CrudMethods, boolean, R>): () => Promise<T extends true ? import("../../../../types/query.types").PayloadResult<Z> : import("../../../../types/query.types").PayloadListResult<Z>>;
|
|
34
|
+
//# sourceMappingURL=localQueryBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"localQueryBuilder.d.ts","sourceRoot":"","sources":["../../../../../../src/shared/utils/query/helpers/localDb/localQueryBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAO5E;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,EAAE,CAAC,EACjD,KAAK,EAAE,cAAc,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,2JAI/C;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,EAAE,CAAC,EACjD,KAAK,EAAE,cAAc,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,2JAU/C;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,EAAE,CAAC,EACjD,KAAK,EAAE,cAAc,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,2JAG/C;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,GAAG,GAAG,EACjC,KAAK,EAAE,cAAc,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,kFAG/C;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,EAAE,CAAC,EACjD,KAAK,EAAE,cAAc,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,2JAU/C"}
|
|
@@ -13,8 +13,8 @@ import { upsertData } from "../../localDbQuery/upsert";
|
|
|
13
13
|
* @param isSingle - Whether to return a single row or multiple rows
|
|
14
14
|
* @returns query
|
|
15
15
|
*/
|
|
16
|
-
export function buildSelect(
|
|
17
|
-
return async () => await selectData(
|
|
16
|
+
export function buildSelect(state) {
|
|
17
|
+
return async () => await selectData({ ...state, select: state.select || "*" });
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
20
20
|
* Builds an insert query
|
|
@@ -23,30 +23,37 @@ export function buildSelect(table, select, filters, limit, isSingle) {
|
|
|
23
23
|
* @param payload - The payload to insert
|
|
24
24
|
* @returns query
|
|
25
25
|
*/
|
|
26
|
-
export function buildInsert(
|
|
26
|
+
export function buildInsert(state) {
|
|
27
|
+
const payload = state.payload;
|
|
27
28
|
const newPayload = payload
|
|
28
29
|
? Array.isArray(payload)
|
|
29
30
|
? payload
|
|
30
31
|
: [payload]
|
|
31
32
|
: null;
|
|
32
|
-
return async () => await insertData(
|
|
33
|
+
return async () => await insertData({ ...state, payload: newPayload });
|
|
33
34
|
}
|
|
34
35
|
/**
|
|
35
36
|
* Builds an update query
|
|
36
37
|
*
|
|
37
38
|
* @returns query
|
|
38
39
|
*/
|
|
39
|
-
export function buildUpdate(
|
|
40
|
-
return async () => await updateData(
|
|
40
|
+
export function buildUpdate(state) {
|
|
41
|
+
return async () => await updateData(state);
|
|
41
42
|
}
|
|
42
43
|
/**
|
|
43
44
|
* Builds a delete query
|
|
44
45
|
*
|
|
45
46
|
* @returns query
|
|
46
47
|
*/
|
|
47
|
-
export function buildDelete(
|
|
48
|
-
return async () => await deleteData(
|
|
48
|
+
export function buildDelete(state) {
|
|
49
|
+
return async () => await deleteData(state);
|
|
49
50
|
}
|
|
50
|
-
export function buildUpsert(
|
|
51
|
-
|
|
51
|
+
export function buildUpsert(state) {
|
|
52
|
+
const payload = state.payload;
|
|
53
|
+
const newPayload = payload
|
|
54
|
+
? Array.isArray(payload)
|
|
55
|
+
? payload
|
|
56
|
+
: [payload]
|
|
57
|
+
: null;
|
|
58
|
+
return async () => await upsertData({ ...state, payload: newPayload });
|
|
52
59
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { CrudMethods, SupastashQuery, SyncMode } from "../../../../types/query.types";
|
|
2
|
+
import { SupastashSQLiteExecutor } from "../../../../types/supastashConfig.types";
|
|
2
3
|
interface UpsertOptions<R = any> {
|
|
3
4
|
table: string;
|
|
4
5
|
onConflictKeys?: string[];
|
|
@@ -7,6 +8,8 @@ interface UpsertOptions<R = any> {
|
|
|
7
8
|
preserveTimestamp?: boolean;
|
|
8
9
|
returnRows?: boolean;
|
|
9
10
|
yieldEvery?: number;
|
|
11
|
+
withTx: boolean;
|
|
12
|
+
tx: SupastashSQLiteExecutor | null;
|
|
10
13
|
}
|
|
11
14
|
export declare function upsertMany<R = any>(items: R[], opts: UpsertOptions<R>, state: SupastashQuery<CrudMethods, boolean, R>): Promise<R[] | void>;
|
|
12
15
|
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upsertMany.d.ts","sourceRoot":"","sources":["../../../../../../src/shared/utils/query/helpers/localDb/upsertMany.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,WAAW,EACX,cAAc,EACd,QAAQ,EACT,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAKlF,UAAU,aAAa,CAAC,CAAC,GAAG,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,EAAE,EAAE,uBAAuB,GAAG,IAAI,CAAC;CACpC;AAMD,wBAAsB,UAAU,CAAC,CAAC,GAAG,GAAG,EACtC,KAAK,EAAE,CAAC,EAAE,EACV,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EACtB,KAAK,EAAE,cAAc,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,GAC7C,OAAO,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CA0LrB"}
|
|
@@ -35,7 +35,7 @@ export async function upsertMany(items, opts, state) {
|
|
|
35
35
|
}
|
|
36
36
|
const upserted = [];
|
|
37
37
|
const remotePayload = [];
|
|
38
|
-
const run = async () => {
|
|
38
|
+
const run = async (db) => {
|
|
39
39
|
for (let i = 0; i < items.length; i++) {
|
|
40
40
|
const input = items[i] ?? {};
|
|
41
41
|
const row = { ...input };
|
|
@@ -120,7 +120,14 @@ export async function upsertMany(items, opts, state) {
|
|
|
120
120
|
}
|
|
121
121
|
};
|
|
122
122
|
try {
|
|
123
|
-
|
|
123
|
+
if (opts.withTx) {
|
|
124
|
+
await db.withTransaction(async (tx) => {
|
|
125
|
+
await run(tx);
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
await run(opts.tx ?? db);
|
|
130
|
+
}
|
|
124
131
|
const newState = { ...state, payload: remotePayload };
|
|
125
132
|
if (remoteCalls.includes(newState.type)) {
|
|
126
133
|
queueRemoteCall(newState);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mainQueryHelpers.d.ts","sourceRoot":"","sources":["../../../../../src/shared/utils/query/helpers/mainQueryHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACf,MAAM,4BAA4B,CAAC;AAOpC,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,GACZ,IAAI,CAUN;AAED,wBAAgB,eAAe,CAAC,CAAC,EAC/B,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,GACtB,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,GAAG,SAAS,CAc5B;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,WAAW,EAAE,CAAC,EAAE,CAAC,EAC3E,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,WAAW,EACnB,WAAW,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,EAChD,YAAY,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAC7C,CAAC,KAAK,GAAG;IAAE,aAAa,CAAC,EAAE,cAAc,CAAA;CAAE,CAAC,GAAG,IAAI,CAwBrD;AAmDD,wBAAsB,eAAe,CACnC,CAAC,SAAS,WAAW,EACrB,CAAC,SAAS,OAAO,EACjB,CAAC,EACD,CAAC,EAED,KAAK,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAC7B,OAAO,CAAC;IACT,WAAW,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACjD,YAAY,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;CAChD,CAAC,CAiED"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { logWarn } from "../../../utils/logs";
|
|
2
1
|
import { generateUUIDv4 } from "../../genUUID";
|
|
2
|
+
import { logWarn } from "../../logs";
|
|
3
3
|
import { queryLocalDb } from "../localDbQuery";
|
|
4
4
|
import { querySupabase } from "../remoteQuery/supabaseQuery";
|
|
5
5
|
import { queueRemoteCall } from "./queueRemote";
|
|
@@ -46,20 +46,45 @@ export function getCommonError(table, method, localResult, remoteResult) {
|
|
|
46
46
|
}
|
|
47
47
|
return null;
|
|
48
48
|
}
|
|
49
|
-
|
|
50
|
-
const { type } = state;
|
|
49
|
+
async function handleSelect(state) {
|
|
51
50
|
let localResult = null;
|
|
52
51
|
let remoteResult = null;
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
const isEmpty = (result) => result?.error ||
|
|
53
|
+
!result?.data ||
|
|
54
|
+
(Array.isArray(result.data) && result.data.length === 0);
|
|
55
|
+
if (state.fetchPolicy === "localFirst") {
|
|
56
|
+
localResult = await queryLocalDb(state);
|
|
57
|
+
if (isEmpty(localResult)) {
|
|
55
58
|
remoteResult = await querySupabase(state);
|
|
56
|
-
localResult = await queryLocalDb(state);
|
|
57
|
-
return { localResult, remoteResult };
|
|
58
59
|
}
|
|
59
|
-
|
|
60
|
+
return { localResult, remoteResult };
|
|
61
|
+
}
|
|
62
|
+
if (state.fetchPolicy === "remoteFirst") {
|
|
63
|
+
remoteResult = await querySupabase(state);
|
|
64
|
+
if (isEmpty(remoteResult)) {
|
|
60
65
|
localResult = await queryLocalDb(state);
|
|
61
|
-
return { localResult, remoteResult };
|
|
66
|
+
return { localResult, remoteResult: null };
|
|
62
67
|
}
|
|
68
|
+
return { localResult: null, remoteResult };
|
|
69
|
+
}
|
|
70
|
+
if (state.type === "remoteFirst") {
|
|
71
|
+
remoteResult = await querySupabase(state);
|
|
72
|
+
localResult = await queryLocalDb(state);
|
|
73
|
+
return { localResult, remoteResult };
|
|
74
|
+
}
|
|
75
|
+
if (state.type === "remoteOnly") {
|
|
76
|
+
remoteResult = await querySupabase(state);
|
|
77
|
+
return { localResult, remoteResult: null };
|
|
78
|
+
}
|
|
79
|
+
localResult = await queryLocalDb(state);
|
|
80
|
+
return { localResult, remoteResult };
|
|
81
|
+
}
|
|
82
|
+
export async function runSyncStrategy(state) {
|
|
83
|
+
const { type } = state;
|
|
84
|
+
let localResult = null;
|
|
85
|
+
let remoteResult = null;
|
|
86
|
+
if (state.method === "select") {
|
|
87
|
+
return await handleSelect(state);
|
|
63
88
|
}
|
|
64
89
|
const isUpsert = state.method === "upsert";
|
|
65
90
|
switch (type) {
|
|
@@ -71,9 +96,14 @@ export async function runSyncStrategy(state) {
|
|
|
71
96
|
break;
|
|
72
97
|
case "localFirst":
|
|
73
98
|
localResult = await queryLocalDb(state);
|
|
99
|
+
// If we are in a transaction, we don't want to queue a remote call
|
|
100
|
+
// Remote calls are handled write after the transaction is committed
|
|
101
|
+
if (state.txId)
|
|
102
|
+
return { localResult, remoteResult: null };
|
|
74
103
|
if (state.viewRemoteResult) {
|
|
75
104
|
if (isUpsert) {
|
|
76
105
|
logWarn("Cannot view remote result for upserts. Data will still be synced.");
|
|
106
|
+
queueRemoteCall(state);
|
|
77
107
|
return { localResult, remoteResult: null };
|
|
78
108
|
}
|
|
79
109
|
remoteResult = await querySupabase(state);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryValidator.d.ts","sourceRoot":"","sources":["../../../../../src/shared/utils/query/helpers/queryValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEzE;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,OAAO,EAAE,CAAC,EACvE,KAAK,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,QA4C/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queueRemote.d.ts","sourceRoot":"","sources":["../../../../../src/shared/utils/query/helpers/queueRemote.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,WAAW,EACX,cAAc,EACf,MAAM,4BAA4B,CAAC;AAuCpC,wBAAsB,eAAe,CACnC,CAAC,SAAS,WAAW,EACrB,CAAC,SAAS,OAAO,EACjB,CAAC,EACD,KAAK,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAalD"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { getSupastashConfig } from "../../../core/config";
|
|
2
|
-
import { isOnline } from "
|
|
3
|
-
import { log, logWarn } from "../../../utils/logs";
|
|
4
|
-
import { getQueryStatusFromDb } from "../../../utils/sync/queryStatus";
|
|
2
|
+
import { isOnline } from "../../connection";
|
|
5
3
|
import { supastashEventBus } from "../../events/eventBus";
|
|
4
|
+
import { generateUUIDv4 } from "../../genUUID";
|
|
5
|
+
import { log, logWarn } from "../../logs";
|
|
6
|
+
import { getQueryStatusFromDb } from "../../sync/queryStatus";
|
|
6
7
|
import { querySupabase } from "../remoteQuery/supabaseQuery";
|
|
7
8
|
let batchQueue = [];
|
|
8
9
|
let isProcessing = false;
|
|
9
|
-
let batchTimer = null;
|
|
10
|
-
const BATCH_DELAY = 10;
|
|
11
10
|
const MAX_RETRIES = 3;
|
|
12
11
|
const MAX_OFFLINE_RETRIES = 5;
|
|
13
12
|
const retryCount = new Map();
|
|
@@ -24,26 +23,24 @@ function delay(ms) {
|
|
|
24
23
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
25
24
|
}
|
|
26
25
|
function generateOpKey(state) {
|
|
27
|
-
return
|
|
26
|
+
return state.id ? state.id : generateUUIDv4();
|
|
28
27
|
}
|
|
29
|
-
export function queueRemoteCall(state) {
|
|
30
|
-
return new Promise((resolve, reject) => {
|
|
28
|
+
export async function queueRemoteCall(state) {
|
|
29
|
+
return new Promise(async (resolve, reject) => {
|
|
30
|
+
void reject;
|
|
31
31
|
const opKey = generateOpKey(state);
|
|
32
32
|
if (successfulCalls.has(opKey)) {
|
|
33
33
|
resolve(true);
|
|
34
34
|
return;
|
|
35
35
|
}
|
|
36
36
|
batchQueue.push({ state, opKey, resolve, reject });
|
|
37
|
-
|
|
37
|
+
await startWorkerIfNeeded();
|
|
38
38
|
});
|
|
39
39
|
}
|
|
40
|
-
function
|
|
41
|
-
if (
|
|
40
|
+
async function startWorkerIfNeeded() {
|
|
41
|
+
if (isProcessing)
|
|
42
42
|
return;
|
|
43
|
-
|
|
44
|
-
processBatch();
|
|
45
|
-
batchTimer = null;
|
|
46
|
-
}, BATCH_DELAY);
|
|
43
|
+
await processQueue();
|
|
47
44
|
}
|
|
48
45
|
async function executeSupabaseCall(state) {
|
|
49
46
|
const config = getSupastashConfig();
|
|
@@ -51,7 +48,7 @@ async function executeSupabaseCall(state) {
|
|
|
51
48
|
if (!Array.isArray(payload)) {
|
|
52
49
|
return querySupabase(state, true);
|
|
53
50
|
}
|
|
54
|
-
const batchSize = config.supabaseBatchSize ??
|
|
51
|
+
const batchSize = config.supabaseBatchSize ?? 800;
|
|
55
52
|
for (let i = 0; i < payload.length; i += batchSize) {
|
|
56
53
|
const chunk = payload.slice(i, i + batchSize);
|
|
57
54
|
const result = await querySupabase({
|
|
@@ -64,19 +61,21 @@ async function executeSupabaseCall(state) {
|
|
|
64
61
|
}
|
|
65
62
|
return { error: null };
|
|
66
63
|
}
|
|
67
|
-
async function
|
|
68
|
-
if (isProcessing
|
|
64
|
+
async function processQueue() {
|
|
65
|
+
if (isProcessing)
|
|
69
66
|
return;
|
|
70
67
|
isProcessing = true;
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
const { state, opKey, resolve, reject } = call;
|
|
68
|
+
while (batchQueue.length > 0) {
|
|
69
|
+
const call = batchQueue[0];
|
|
70
|
+
const { state, opKey, resolve } = call;
|
|
75
71
|
if (successfulCalls.has(opKey)) {
|
|
72
|
+
batchQueue.shift();
|
|
76
73
|
resolve(true);
|
|
77
74
|
continue;
|
|
78
75
|
}
|
|
79
76
|
try {
|
|
77
|
+
let shouldRemove = false;
|
|
78
|
+
let isSuccess = false;
|
|
80
79
|
while ((retryCount.get(opKey) ?? 0) <= MAX_RETRIES) {
|
|
81
80
|
const isConnected = await isOnline();
|
|
82
81
|
if (!isConnected) {
|
|
@@ -85,11 +84,12 @@ async function processBatch() {
|
|
|
85
84
|
if (offlineRetries > MAX_OFFLINE_RETRIES) {
|
|
86
85
|
if (!seenFailureLog.has(opKey)) {
|
|
87
86
|
seenFailureLog.add(opKey);
|
|
88
|
-
log(`[Supastash] Offline — persisted locally, will retry later: ${
|
|
87
|
+
log(`[Supastash] Offline — persisted locally, will retry later: ${state.table} with ${state.method} `);
|
|
89
88
|
}
|
|
90
89
|
await getQueryStatusFromDb(state.table);
|
|
91
90
|
supastashEventBus.emit("updateSyncStatus");
|
|
92
|
-
|
|
91
|
+
shouldRemove = true;
|
|
92
|
+
isSuccess = false;
|
|
93
93
|
break;
|
|
94
94
|
}
|
|
95
95
|
await delay(1000);
|
|
@@ -101,7 +101,8 @@ async function processBatch() {
|
|
|
101
101
|
successfulCalls.add(opKey);
|
|
102
102
|
retryCount.delete(opKey);
|
|
103
103
|
log(`[Supastash] Synced item on ${state.table} with ${state.method} to supabase`);
|
|
104
|
-
|
|
104
|
+
shouldRemove = true;
|
|
105
|
+
isSuccess = true;
|
|
105
106
|
break;
|
|
106
107
|
}
|
|
107
108
|
else {
|
|
@@ -112,7 +113,8 @@ async function processBatch() {
|
|
|
112
113
|
seenFailureLog.add(opKey);
|
|
113
114
|
logWarn(`[Supastash] Duplicate key on ${state.table} (op=${state.method}) — seems already synced; will retry on next full sync: id=${state.id ?? "-"}`);
|
|
114
115
|
}
|
|
115
|
-
|
|
116
|
+
shouldRemove = true;
|
|
117
|
+
isSuccess = true;
|
|
116
118
|
break;
|
|
117
119
|
}
|
|
118
120
|
if (currentRetries >= MAX_RETRIES) {
|
|
@@ -120,18 +122,25 @@ async function processBatch() {
|
|
|
120
122
|
seenFailureLog.add(opKey);
|
|
121
123
|
logWarn(`[Supastash] Gave up on ${state.table} with ${state.method} after ${MAX_RETRIES} retries — will retry on next sync \nError message: ${error.message}`);
|
|
122
124
|
}
|
|
123
|
-
|
|
125
|
+
shouldRemove = true;
|
|
126
|
+
isSuccess = false;
|
|
124
127
|
break;
|
|
125
128
|
}
|
|
126
129
|
await delay(1000 * (currentRetries + 1));
|
|
127
130
|
}
|
|
128
131
|
}
|
|
132
|
+
if (shouldRemove) {
|
|
133
|
+
batchQueue.shift();
|
|
134
|
+
resolve(isSuccess);
|
|
135
|
+
}
|
|
129
136
|
}
|
|
130
137
|
catch (err) {
|
|
131
138
|
if (!seenFailureLog.has(opKey)) {
|
|
132
139
|
seenFailureLog.add(opKey);
|
|
133
140
|
logWarn(`[Supastash] Unexpected error processing ${opKey} — ${String(err.message ?? err)}`);
|
|
134
141
|
}
|
|
142
|
+
batchQueue.shift();
|
|
143
|
+
resolve(false);
|
|
135
144
|
}
|
|
136
145
|
}
|
|
137
146
|
isProcessing = false;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryFilterBuilder.d.ts","sourceRoot":"","sources":["../../../../../../src/shared/utils/query/helpers/remoteDb/queryFilterBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAG5D;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI;;;EAqD7D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryUtils.d.ts","sourceRoot":"","sources":["../../../../../../src/shared/utils/query/helpers/remoteDb/queryUtils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,EAAE,EAAE,MAAM,GACT,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,CAuBnE"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { CrudMethods, FilterCalls, SupastashQuery, SupatashDeleteResult } from "../../../types/query.types";
|
|
2
|
+
import { SupastashSQLiteExecutor } from "../../../types/supastashConfig.types";
|
|
3
|
+
/**
|
|
4
|
+
* Soft delete: Sets `deleted_at` timestamp based on provided filters.
|
|
5
|
+
* @param table - The name of the table to delete from
|
|
6
|
+
* @param filters - The filters to apply to the delete query
|
|
7
|
+
* @returns The result of the delete query
|
|
8
|
+
*/
|
|
9
|
+
export declare function deleteData<Z = any>(state: SupastashQuery<CrudMethods, boolean, Z>): Promise<SupatashDeleteResult<Z>>;
|
|
10
|
+
/**
|
|
11
|
+
* Hard delete: Permanently removes a row by its `id`.
|
|
12
|
+
* @param table - The name of the table to delete from
|
|
13
|
+
* @param id - The id of the row to delete
|
|
14
|
+
* @returns The result of the delete query
|
|
15
|
+
*/
|
|
16
|
+
export declare function permanentlyDeleteData<R = any>({ table, filters, tx, throwOnError, }: {
|
|
17
|
+
table: string;
|
|
18
|
+
filters: FilterCalls[] | null;
|
|
19
|
+
tx: SupastashSQLiteExecutor | null;
|
|
20
|
+
throwOnError?: boolean;
|
|
21
|
+
}): Promise<SupatashDeleteResult<R>>;
|
|
22
|
+
//# sourceMappingURL=delete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../../../src/shared/utils/query/localDbQuery/delete.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,WAAW,EACX,cAAc,EACd,oBAAoB,EACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAK/E;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,CAAC,GAAG,GAAG,EACtC,KAAK,EAAE,cAAc,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,GAC7C,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAuClC;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,CAAC,GAAG,GAAG,EAAE,EACnD,KAAK,EACL,OAAO,EACP,EAAE,EACF,YAAmB,GACpB,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAC9B,EAAE,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAmBnC"}
|
|
@@ -8,25 +8,34 @@ import { buildWhereClause } from "../helpers/remoteDb/queryFilterBuilder";
|
|
|
8
8
|
* @param filters - The filters to apply to the delete query
|
|
9
9
|
* @returns The result of the delete query
|
|
10
10
|
*/
|
|
11
|
-
export async function deleteData(
|
|
11
|
+
export async function deleteData(state) {
|
|
12
|
+
const { table, filters, tx, type: syncMode } = state;
|
|
12
13
|
await assertTableExists(table);
|
|
13
14
|
const { clause, values: filterValues } = buildWhereClause(filters ?? []);
|
|
14
15
|
try {
|
|
15
|
-
const db = await getSupastashDb();
|
|
16
|
+
const db = tx ?? (await getSupastashDb());
|
|
16
17
|
const timeStamp = new Date().toISOString();
|
|
17
18
|
const itemsToBeDeleted = await db.getAllAsync(`SELECT * FROM ${table} ${clause}`, filterValues);
|
|
18
19
|
await db.runAsync(`UPDATE ${table} SET deleted_at = ?, updated_at = ?, synced_at = NULL ${clause}`, [timeStamp, timeStamp, ...filterValues]);
|
|
19
20
|
if (syncMode === "localOnly" || syncMode === "remoteFirst") {
|
|
20
|
-
permanentlyDeleteData(
|
|
21
|
+
await permanentlyDeleteData({
|
|
22
|
+
table,
|
|
23
|
+
filters,
|
|
24
|
+
tx,
|
|
25
|
+
throwOnError: state.throwOnError,
|
|
26
|
+
});
|
|
21
27
|
}
|
|
22
28
|
return { error: null, data: itemsToBeDeleted };
|
|
23
29
|
}
|
|
24
30
|
catch (error) {
|
|
25
31
|
logError(`[Supastash] ${error}`);
|
|
32
|
+
if (state.throwOnError)
|
|
33
|
+
throw error;
|
|
26
34
|
return {
|
|
27
35
|
error: {
|
|
28
36
|
message: error instanceof Error ? error.message : String(error),
|
|
29
37
|
},
|
|
38
|
+
data: null,
|
|
30
39
|
};
|
|
31
40
|
}
|
|
32
41
|
}
|
|
@@ -36,16 +45,18 @@ export async function deleteData(table, filters, syncMode) {
|
|
|
36
45
|
* @param id - The id of the row to delete
|
|
37
46
|
* @returns The result of the delete query
|
|
38
47
|
*/
|
|
39
|
-
export async function permanentlyDeleteData(table, filters) {
|
|
48
|
+
export async function permanentlyDeleteData({ table, filters, tx, throwOnError = true, }) {
|
|
40
49
|
await assertTableExists(table);
|
|
41
50
|
try {
|
|
42
|
-
const db = await getSupastashDb();
|
|
51
|
+
const db = tx ?? (await getSupastashDb());
|
|
43
52
|
const { clause, values: filterValues } = buildWhereClause(filters ?? []);
|
|
44
53
|
await db.runAsync(`DELETE FROM ${table} ${clause}`, filterValues);
|
|
45
54
|
return { error: null };
|
|
46
55
|
}
|
|
47
56
|
catch (error) {
|
|
48
57
|
logError(`[Supastash] ${error}`);
|
|
58
|
+
if (throwOnError)
|
|
59
|
+
throw error;
|
|
49
60
|
return {
|
|
50
61
|
error: {
|
|
51
62
|
message: error instanceof Error ? error.message : String(error),
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/shared/utils/query/localDbQuery/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,cAAc,EACf,MAAM,4BAA4B,CAAC;AAGpC;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,CAAC,SAAS,WAAW,EACrB,CAAC,SAAS,OAAO,EACjB,CAAC,EACD,CAAC,EACD,KAAK,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAYvE"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import getLocalMethod from "../helpers/localDb/getLocalMethod";
|
|
2
|
+
/**
|
|
3
|
+
* Queries the local database
|
|
4
|
+
* @param state - The state of the query
|
|
5
|
+
* @returns The result of the query
|
|
6
|
+
*/
|
|
7
|
+
export async function queryLocalDb(state) {
|
|
8
|
+
const { method } = state;
|
|
9
|
+
if (!method) {
|
|
10
|
+
throw new Error("[Supastash] Method is required for local call");
|
|
11
|
+
}
|
|
12
|
+
const query = getLocalMethod(state);
|
|
13
|
+
const result = await query();
|
|
14
|
+
return result;
|
|
15
|
+
}
|