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,5 +1,5 @@
|
|
|
1
|
-
import { PayloadData } from "
|
|
2
|
-
import {
|
|
1
|
+
import { PayloadData } from "../../../../shared/types/query.types";
|
|
2
|
+
import { SupastashFilter } from "../../../../shared/types/realtimeData.types";
|
|
3
3
|
/**
|
|
4
4
|
* Pulls data from the remote database for a given table
|
|
5
5
|
* @param table - The table to pull data from
|
|
@@ -7,13 +7,12 @@ import { RealtimeFilter } from "../../../types/realtimeData.types";
|
|
|
7
7
|
*/
|
|
8
8
|
export declare function pullData({ table, filters, batchId, }: {
|
|
9
9
|
table: string;
|
|
10
|
-
filters?:
|
|
10
|
+
filters?: SupastashFilter[];
|
|
11
11
|
batchId: string;
|
|
12
12
|
}): Promise<{
|
|
13
13
|
data: PayloadData[];
|
|
14
14
|
deletedIds: string[];
|
|
15
15
|
timestamps: {
|
|
16
|
-
createdMax: string | null;
|
|
17
16
|
updatedMax: string | null;
|
|
18
17
|
deletedMax: string | null;
|
|
19
18
|
updatedMaxPk: string | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pullData.d.ts","sourceRoot":"","sources":["../../../../../src/desktop/utils/sync/pullFromRemote/pullData.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAW9E;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,EAC7B,KAAK,EACL,OAAO,EACP,OAAO,GACR,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC;IACV,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE;QACV,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;KAC7B,CAAC;CACH,GAAG,IAAI,CAAC,CAmFR"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { getSupastashConfig } from "
|
|
2
|
-
import { getSupastashDb } from "
|
|
3
|
-
import log, { logWarn } from "
|
|
4
|
-
import { supabaseClientErr } from "
|
|
5
|
-
import {
|
|
1
|
+
import { getSupastashConfig } from "../../../../shared/core/config";
|
|
2
|
+
import { getSupastashDb } from "../../../../shared/db/dbInitializer";
|
|
3
|
+
import log, { logWarn } from "../../../../shared/utils/logs";
|
|
4
|
+
import { supabaseClientErr } from "../../../../shared/utils/supabaseClientErr";
|
|
5
|
+
import { logNoUpdates, pageThrough, returnMaxDate, } from "../../../../shared/utils/sync/pullFromRemote/helpers";
|
|
6
|
+
import { SyncInfoUpdater } from "../../../../shared/utils/sync/queryStatus";
|
|
6
7
|
import { computeFilterKey } from "../status/filterKey";
|
|
7
8
|
import { selectSyncStatus } from "../status/repo";
|
|
8
|
-
import { logNoUpdates, pageThrough, returnMaxDate } from "./helpers";
|
|
9
9
|
/**
|
|
10
10
|
* Pulls data from the remote database for a given table
|
|
11
11
|
* @param table - The table to pull data from
|
|
@@ -29,8 +29,10 @@ export async function pullData({ table, filters, batchId, }) {
|
|
|
29
29
|
});
|
|
30
30
|
const db = await getSupastashDb();
|
|
31
31
|
const syncStatus = await selectSyncStatus(db, table, filters);
|
|
32
|
+
const cfg = getSupastashConfig();
|
|
33
|
+
const tsCol = cfg.replicationMode === "server-side" ? "arrived_at" : "updated_at";
|
|
32
34
|
const updatedRows = await pageThrough({
|
|
33
|
-
tsCol
|
|
35
|
+
tsCol,
|
|
34
36
|
since: syncStatus.last_synced_at,
|
|
35
37
|
table,
|
|
36
38
|
filters,
|
|
@@ -39,7 +41,6 @@ export async function pullData({ table, filters, batchId, }) {
|
|
|
39
41
|
});
|
|
40
42
|
const updatedData = [];
|
|
41
43
|
let deletedIds = [];
|
|
42
|
-
let createdMax = null;
|
|
43
44
|
let updatedMax = null;
|
|
44
45
|
let deletedMax = null;
|
|
45
46
|
for (const r of updatedRows) {
|
|
@@ -47,15 +48,10 @@ export async function pullData({ table, filters, batchId, }) {
|
|
|
47
48
|
logWarn(`[Supastash] Skipped row without id from "${table}"`);
|
|
48
49
|
continue;
|
|
49
50
|
}
|
|
50
|
-
createdMax = returnMaxDate({
|
|
51
|
-
row: r,
|
|
52
|
-
prevMax: createdMax,
|
|
53
|
-
col: "created_at",
|
|
54
|
-
});
|
|
55
51
|
updatedMax = returnMaxDate({
|
|
56
52
|
row: r,
|
|
57
53
|
prevMax: updatedMax,
|
|
58
|
-
col:
|
|
54
|
+
col: tsCol,
|
|
59
55
|
});
|
|
60
56
|
// If the row is deleted, add the id to the deleted ids and update the deleted max
|
|
61
57
|
if (r.deleted_at) {
|
|
@@ -75,7 +71,6 @@ export async function pullData({ table, filters, batchId, }) {
|
|
|
75
71
|
return null;
|
|
76
72
|
}
|
|
77
73
|
const timestamps = {
|
|
78
|
-
createdMax: createdMax?.value ?? null,
|
|
79
74
|
updatedMax: updatedMax?.value ?? null,
|
|
80
75
|
deletedMax: deletedMax?.value ?? null,
|
|
81
76
|
updatedMaxPk: updatedMax?.pk ?? null,
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { SupastashFilter } from "../../../../shared/types/realtimeData.types";
|
|
2
|
+
import { UpsertDataParams } from "../../../../shared/types/syncEngine.types";
|
|
3
|
+
/**
|
|
4
|
+
* Updates the local database with the remote changes
|
|
5
|
+
* @param table - The table to update
|
|
6
|
+
*/
|
|
7
|
+
export declare function updateLocalDb(table: string, filters?: SupastashFilter[], onReceiveData?: (payload: any) => Promise<void>): Promise<void>;
|
|
8
|
+
/**
|
|
9
|
+
* Upserts a record into the local database
|
|
10
|
+
* @param table - The table to upsert the record into
|
|
11
|
+
* @param record - The record to upsert
|
|
12
|
+
* @param exists - Whether the record already exists in the database
|
|
13
|
+
*/
|
|
14
|
+
export declare function upsertData({ tx, table, record, doesExist, }: UpsertDataParams): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
• Bulk upserts records into a local SQLite table using a batched, conflict-aware strategy.
|
|
17
|
+
•
|
|
18
|
+
• This function:
|
|
19
|
+
• • Fetches existing id and updated_at values in bulk to avoid per-row queries
|
|
20
|
+
• • Filters incoming records to only include new or more recent entries
|
|
21
|
+
• • Performs batched INSERT ... ON CONFLICT(id) DO UPDATE operations
|
|
22
|
+
• while respecting SQLite parameter limits
|
|
23
|
+
• • Updates synced_at for successfully written records
|
|
24
|
+
•
|
|
25
|
+
• Designed for high-performance sync scenarios in offline-first apps.
|
|
26
|
+
•
|
|
27
|
+
• Key guarantees:
|
|
28
|
+
• • Avoids N+1 query patterns (no per-row existence checks)
|
|
29
|
+
• • Minimizes disk I/O pressure via batching
|
|
30
|
+
• • Safe for large datasets when used with chunking
|
|
31
|
+
•
|
|
32
|
+
• Notes:
|
|
33
|
+
• • Assumes id is the primary or unique key
|
|
34
|
+
• • Requires updated_at for conflict resolution (falls back if missing)
|
|
35
|
+
• • Respects SQLite parameter limit (~999 variables per query)
|
|
36
|
+
•
|
|
37
|
+
• @param tx Optional transaction instance. If not provided, a connection is used directly.
|
|
38
|
+
• @param table Target table name
|
|
39
|
+
• @param records Array of records to upsert
|
|
40
|
+
*/
|
|
41
|
+
export declare function upsertChunkData({ tx, table, records, }: {
|
|
42
|
+
tx?: any;
|
|
43
|
+
table: string;
|
|
44
|
+
records: any[];
|
|
45
|
+
}): Promise<void>;
|
|
46
|
+
//# sourceMappingURL=updateLocalDb.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateLocalDb.d.ts","sourceRoot":"","sources":["../../../../../src/desktop/utils/sync/pullFromRemote/updateLocalDb.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAiB7E;;;GAGG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,eAAe,EAAE,EAC3B,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,iBAsGhD;AAID;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,EAC/B,EAAE,EACF,KAAK,EACL,MAAM,EACN,SAAS,GACV,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqElC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;EAyBE;AACF,wBAAsB,eAAe,CAAC,EACpC,EAAE,EACF,KAAK,EACL,OAAO,GACR,EAAE;IACD,EAAE,CAAC,EAAE,GAAG,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,GAAG,EAAE,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgGhB"}
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
import { getSupastashConfig } from "../../../../shared/core/config";
|
|
2
|
+
import { getSupastashDb } from "../../../../shared/db/dbInitializer";
|
|
3
|
+
import { DEFAULT_RECEIVED_DATA_COMPLETED, RECEIVED_DATA_COMPLETED_MAP, } from "../../../../shared/store/syncStatus";
|
|
4
|
+
import { generateUUIDv4 } from "../../../../shared/utils/genUUID";
|
|
5
|
+
import { getTableSchema } from "../../../../shared/utils/getTableSchema";
|
|
6
|
+
import log, { logError, logWarn } from "../../../../shared/utils/logs";
|
|
7
|
+
import { refreshScreen } from "../../../../shared/utils/refreshScreenCalls";
|
|
8
|
+
import { deleteReceivedDataCompleted } from "../../../../shared/utils/sync/pullFromRemote/helpers";
|
|
9
|
+
import { stringifyValue } from "../../../../shared/utils/sync/pullFromRemote/stringifyFields";
|
|
10
|
+
import { SyncInfoUpdater } from "../../../../shared/utils/sync/queryStatus";
|
|
11
|
+
import { updateLocalSyncedAt } from "../../../../shared/utils/sync/status/syncUpdate";
|
|
12
|
+
import { setSupastashSyncStatus } from "../status/services";
|
|
13
|
+
import { pullData } from "./pullData";
|
|
14
|
+
let isInSync = new Map();
|
|
15
|
+
const DEFAULT_DATE = "1970-01-01T00:00:00Z";
|
|
16
|
+
const BATCH_SIZE = 500;
|
|
17
|
+
const CHUNK_SIZE = 999;
|
|
18
|
+
/**
|
|
19
|
+
* Updates the local database with the remote changes
|
|
20
|
+
* @param table - The table to update
|
|
21
|
+
*/
|
|
22
|
+
export async function updateLocalDb(table, filters, onReceiveData) {
|
|
23
|
+
if (isInSync.get(table))
|
|
24
|
+
return;
|
|
25
|
+
const cfg = getSupastashConfig();
|
|
26
|
+
if (cfg.supastashMode === "ghost")
|
|
27
|
+
return;
|
|
28
|
+
isInSync.set(table, true);
|
|
29
|
+
const batchId = generateUUIDv4();
|
|
30
|
+
try {
|
|
31
|
+
const db = await getSupastashDb();
|
|
32
|
+
// Initialize the batch completed map
|
|
33
|
+
RECEIVED_DATA_COMPLETED_MAP[batchId] = {
|
|
34
|
+
arrived_at: DEFAULT_RECEIVED_DATA_COMPLETED,
|
|
35
|
+
updated_at: DEFAULT_RECEIVED_DATA_COMPLETED,
|
|
36
|
+
};
|
|
37
|
+
let refreshNeeded = false;
|
|
38
|
+
while (true) {
|
|
39
|
+
const dataResult = await pullData({ table, filters, batchId });
|
|
40
|
+
if (!dataResult)
|
|
41
|
+
break;
|
|
42
|
+
const data = dataResult?.data;
|
|
43
|
+
const timestamps = dataResult.timestamps;
|
|
44
|
+
const deletedIds = dataResult.deletedIds;
|
|
45
|
+
const deletedIdSet = new Set(deletedIds ?? []);
|
|
46
|
+
SyncInfoUpdater.setUnsyncedDataCount({
|
|
47
|
+
amount: data?.length ?? 0,
|
|
48
|
+
type: "pull",
|
|
49
|
+
table,
|
|
50
|
+
});
|
|
51
|
+
SyncInfoUpdater.setUnsyncedDeletedCount({
|
|
52
|
+
amount: deletedIds?.length ?? 0,
|
|
53
|
+
type: "pull",
|
|
54
|
+
table,
|
|
55
|
+
});
|
|
56
|
+
refreshNeeded = !!data?.length || !!deletedIds?.length;
|
|
57
|
+
// Delete records that are no longer in the remote data
|
|
58
|
+
await db.withTransaction(async (tx) => {
|
|
59
|
+
if (deletedIds && deletedIds.length > 0) {
|
|
60
|
+
const ids = deletedIds;
|
|
61
|
+
for (let i = 0; i < ids.length; i += CHUNK_SIZE) {
|
|
62
|
+
const slice = ids.slice(i, i + CHUNK_SIZE);
|
|
63
|
+
const placeholders = slice.map(() => "?").join(", ");
|
|
64
|
+
await tx.runAsync(`DELETE FROM ${table} WHERE id IN (${placeholders})`, slice);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// Get the local stamp of the records
|
|
68
|
+
let localStamp = new Map();
|
|
69
|
+
if (data?.length) {
|
|
70
|
+
const ids = data.map((r) => r.id).filter(Boolean);
|
|
71
|
+
for (let i = 0; i < ids.length; i += CHUNK_SIZE) {
|
|
72
|
+
const slice = ids.slice(i, i + CHUNK_SIZE);
|
|
73
|
+
const placeholders = slice.map(() => "?").join(", ");
|
|
74
|
+
const rows = await db.getAllAsync(`SELECT id, updated_at FROM ${table} WHERE id IN (${placeholders})`, slice);
|
|
75
|
+
for (const row of rows ?? []) {
|
|
76
|
+
localStamp.set(row.id, row.updated_at ?? null);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Update local database with remote changes
|
|
81
|
+
if (data?.length) {
|
|
82
|
+
await upsertChunkData({
|
|
83
|
+
tx,
|
|
84
|
+
table,
|
|
85
|
+
records: data,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
if (timestamps) {
|
|
90
|
+
await setSupastashSyncStatus(table, filters, {
|
|
91
|
+
lastSyncedAt: timestamps.updatedMax,
|
|
92
|
+
lastDeletedAt: timestamps.deletedMax,
|
|
93
|
+
lastSyncedAtPk: timestamps.updatedMaxPk,
|
|
94
|
+
filterNamespace: "global",
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
const completedSet = RECEIVED_DATA_COMPLETED_MAP[batchId];
|
|
98
|
+
if (Object.values(completedSet ?? {}).every(Boolean)) {
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (refreshNeeded)
|
|
103
|
+
refreshScreen(table);
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
logWarn(`[Supastash] Error updating local db for ${table}`, error);
|
|
107
|
+
throw error;
|
|
108
|
+
}
|
|
109
|
+
finally {
|
|
110
|
+
isInSync.delete(table);
|
|
111
|
+
deleteReceivedDataCompleted(batchId);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
const warned = new Map();
|
|
115
|
+
/**
|
|
116
|
+
* Upserts a record into the local database
|
|
117
|
+
* @param table - The table to upsert the record into
|
|
118
|
+
* @param record - The record to upsert
|
|
119
|
+
* @param exists - Whether the record already exists in the database
|
|
120
|
+
*/
|
|
121
|
+
export async function upsertData({ tx, table, record, doesExist, }) {
|
|
122
|
+
if (!record?.id)
|
|
123
|
+
return;
|
|
124
|
+
let itemExists = !!doesExist;
|
|
125
|
+
const cfg = getSupastashConfig();
|
|
126
|
+
if (cfg.supastashMode === "ghost")
|
|
127
|
+
return;
|
|
128
|
+
if (doesExist === undefined) {
|
|
129
|
+
const { doesExist: exists } = await checkIfRecordExistsAndIsNewer(table, record);
|
|
130
|
+
itemExists = exists;
|
|
131
|
+
}
|
|
132
|
+
try {
|
|
133
|
+
const db = tx ?? (await getSupastashDb());
|
|
134
|
+
const columns = await getTableSchema(table);
|
|
135
|
+
const recordToSave = {
|
|
136
|
+
...record,
|
|
137
|
+
synced_at: new Date().toISOString(),
|
|
138
|
+
};
|
|
139
|
+
if (getSupastashConfig().debugMode) {
|
|
140
|
+
const unknownKeys = Object.keys(record).filter((key) => !columns.includes(key));
|
|
141
|
+
if (unknownKeys.length > 0 && !warned.get(table)) {
|
|
142
|
+
warned.set(table, true);
|
|
143
|
+
logWarn(`⚠️ [Supastash] '${table}' payload contains keys not in local schema: ${unknownKeys.join(", ")}. ` + `They will be ignored locally.`);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
// Prep for upsert
|
|
147
|
+
const keys = columns;
|
|
148
|
+
const placeholders = keys.map(() => "?").join(", ");
|
|
149
|
+
const updateColumns = keys.filter((key) => key !== "id");
|
|
150
|
+
const updateParts = updateColumns.map((key) => `${key} = ?`);
|
|
151
|
+
const updatePlaceholders = updateParts.join(", ");
|
|
152
|
+
const values = keys.map((key) => stringifyValue(recordToSave[key]));
|
|
153
|
+
const updateValues = updateColumns.map((key) => stringifyValue(recordToSave[key]));
|
|
154
|
+
if (itemExists) {
|
|
155
|
+
// Update existing record
|
|
156
|
+
await db.runAsync(`UPDATE ${table} SET ${updatePlaceholders} WHERE id = ?`, [...updateValues, record.id]);
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
// Insert new record
|
|
160
|
+
await db.runAsync(`INSERT INTO ${table} (${keys.join(", ")}) VALUES (${placeholders})`, values);
|
|
161
|
+
}
|
|
162
|
+
await updateLocalSyncedAt(table, [record.id]);
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
logError(`[Supastash] Error upserting data for ${table}`, error);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
• Bulk upserts records into a local SQLite table using a batched, conflict-aware strategy.
|
|
170
|
+
•
|
|
171
|
+
• This function:
|
|
172
|
+
• • Fetches existing id and updated_at values in bulk to avoid per-row queries
|
|
173
|
+
• • Filters incoming records to only include new or more recent entries
|
|
174
|
+
• • Performs batched INSERT ... ON CONFLICT(id) DO UPDATE operations
|
|
175
|
+
• while respecting SQLite parameter limits
|
|
176
|
+
• • Updates synced_at for successfully written records
|
|
177
|
+
•
|
|
178
|
+
• Designed for high-performance sync scenarios in offline-first apps.
|
|
179
|
+
•
|
|
180
|
+
• Key guarantees:
|
|
181
|
+
• • Avoids N+1 query patterns (no per-row existence checks)
|
|
182
|
+
• • Minimizes disk I/O pressure via batching
|
|
183
|
+
• • Safe for large datasets when used with chunking
|
|
184
|
+
•
|
|
185
|
+
• Notes:
|
|
186
|
+
• • Assumes id is the primary or unique key
|
|
187
|
+
• • Requires updated_at for conflict resolution (falls back if missing)
|
|
188
|
+
• • Respects SQLite parameter limit (~999 variables per query)
|
|
189
|
+
•
|
|
190
|
+
• @param tx Optional transaction instance. If not provided, a connection is used directly.
|
|
191
|
+
• @param table Target table name
|
|
192
|
+
• @param records Array of records to upsert
|
|
193
|
+
*/
|
|
194
|
+
export async function upsertChunkData({ tx, table, records, }) {
|
|
195
|
+
if (!records?.length)
|
|
196
|
+
return;
|
|
197
|
+
const cfg = getSupastashConfig();
|
|
198
|
+
if (cfg.supastashMode === "ghost")
|
|
199
|
+
return;
|
|
200
|
+
const db = tx ?? (await getSupastashDb());
|
|
201
|
+
const columns = await getTableSchema(table);
|
|
202
|
+
const syncedAt = new Date().toISOString();
|
|
203
|
+
if (cfg.debugMode) {
|
|
204
|
+
const unknownKeys = Object.keys(records[0]).filter((key) => !columns.includes(key));
|
|
205
|
+
if (unknownKeys.length > 0 && !warned.get(table)) {
|
|
206
|
+
warned.set(table, true);
|
|
207
|
+
logWarn(`⚠️ [Supastash] '${table}' payload contains keys not in local schema: ${unknownKeys.join(", ")}. ` + `They will be ignored locally.`);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
// Step 1: Fetch existing id + updated_at for all incoming ids in bulk
|
|
211
|
+
const incomingIds = records.map((r) => r.id).filter(Boolean);
|
|
212
|
+
const localStamp = new Map();
|
|
213
|
+
for (let i = 0; i < incomingIds.length; i += CHUNK_SIZE) {
|
|
214
|
+
const slice = incomingIds.slice(i, i + CHUNK_SIZE);
|
|
215
|
+
const placeholders = slice.map(() => "?").join(", ");
|
|
216
|
+
const rows = await db.getAllAsync(`SELECT id, updated_at FROM ${table} WHERE id IN (${placeholders})`, slice);
|
|
217
|
+
console.log("rows", rows.length);
|
|
218
|
+
for (const row of rows ?? []) {
|
|
219
|
+
localStamp.set(row.id, row.updated_at ?? null);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
// Step 2: Keep only records that are new or have a newer remote updated_at
|
|
223
|
+
const toUpsert = records.filter((record) => {
|
|
224
|
+
if (!record?.id)
|
|
225
|
+
return false;
|
|
226
|
+
const remoteUpdated = record.updated_at;
|
|
227
|
+
if (!remoteUpdated)
|
|
228
|
+
return false;
|
|
229
|
+
const localUpdated = localStamp.get(record.id);
|
|
230
|
+
if (!localUpdated)
|
|
231
|
+
return true;
|
|
232
|
+
return new Date(remoteUpdated) > new Date(localUpdated);
|
|
233
|
+
});
|
|
234
|
+
console.log("toUpsert", toUpsert.length);
|
|
235
|
+
if (!toUpsert.length)
|
|
236
|
+
return;
|
|
237
|
+
// Step 3: Build INSERT … ON CONFLICT(id) DO UPDATE in param-limit-safe chunks
|
|
238
|
+
const colList = columns.join(", ");
|
|
239
|
+
const updateSet = columns
|
|
240
|
+
.filter((key) => key !== "id")
|
|
241
|
+
.map((key) => `${key} = excluded.${key}`)
|
|
242
|
+
.join(", ");
|
|
243
|
+
const paramsPerRow = columns.length;
|
|
244
|
+
const rowsPerChunk = Math.max(1, Math.floor(999 / paramsPerRow));
|
|
245
|
+
const successfulIds = [];
|
|
246
|
+
for (let i = 0; i < toUpsert.length; i += rowsPerChunk) {
|
|
247
|
+
const chunk = toUpsert.slice(i, i + rowsPerChunk);
|
|
248
|
+
const rowPlaceholders = chunk
|
|
249
|
+
.map(() => `(${columns.map(() => "?").join(", ")})`)
|
|
250
|
+
.join(", ");
|
|
251
|
+
const values = [];
|
|
252
|
+
for (const record of chunk) {
|
|
253
|
+
const recordToSave = { ...record, synced_at: syncedAt };
|
|
254
|
+
for (const col of columns) {
|
|
255
|
+
values.push(stringifyValue(recordToSave[col]));
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
try {
|
|
259
|
+
await db.runAsync(`INSERT INTO ${table} (${colList}) VALUES ${rowPlaceholders} ON CONFLICT(id) DO UPDATE SET ${updateSet}`, values);
|
|
260
|
+
for (const record of chunk) {
|
|
261
|
+
successfulIds.push(record.id);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
catch (error) {
|
|
265
|
+
logError(`[Supastash] Error upserting chunk for ${table}`, error);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
if (successfulIds.length) {
|
|
269
|
+
await updateLocalSyncedAt(table, successfulIds);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
async function checkIfRecordExistsAndIsNewer(table, item) {
|
|
273
|
+
if (!item?.id)
|
|
274
|
+
return { doesExist: false, newer: false };
|
|
275
|
+
const db = await getSupastashDb();
|
|
276
|
+
const record = await db.getFirstAsync(`SELECT id, updated_at FROM ${table} WHERE id = ?`, [item.id]);
|
|
277
|
+
if (record &&
|
|
278
|
+
new Date(record.updated_at || DEFAULT_DATE) >=
|
|
279
|
+
new Date(item.updated_at || DEFAULT_DATE)) {
|
|
280
|
+
log(`Skipping ${table}:${record.id} - local is newer`);
|
|
281
|
+
return { doesExist: true, newer: false };
|
|
282
|
+
}
|
|
283
|
+
return { doesExist: !!record, newer: true };
|
|
284
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/desktop/utils/sync/pushLocal/index.ts"],"names":[],"mappings":"AAaA;;GAEG;AACH,wBAAsB,aAAa,kBAiGlC"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { getSupastashConfig } from "
|
|
2
|
-
import { syncCalls } from "
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { pushLocalDataToRemote } from "
|
|
8
|
-
import { SyncInfoUpdater } from "../../../utils/sync/queryStatus";
|
|
1
|
+
import { getSupastashConfig } from "../../../../shared/core/config";
|
|
2
|
+
import { syncCalls } from "../../../../shared/store/syncCalls";
|
|
3
|
+
import log from "../../../../shared/utils/logs";
|
|
4
|
+
import { getAllTables } from "../../../../shared/utils/sync/getAllTables";
|
|
5
|
+
import { runLimitedConcurrency } from "../../../../shared/utils/sync/pullFromRemote/runLimitedConcurrency";
|
|
6
|
+
import { SyncInfoUpdater } from "../../../../shared/utils/sync/queryStatus";
|
|
7
|
+
import { pushLocalDataToRemote } from "./sendUnsyncedToSupabase";
|
|
9
8
|
let emptyPassCount = 0;
|
|
10
9
|
let lastEmptyPassAt = 0;
|
|
11
10
|
const tablePushLock = new Map();
|
|
@@ -21,8 +20,6 @@ export async function pushLocalData() {
|
|
|
21
20
|
log("[Supastash] No tables found");
|
|
22
21
|
return;
|
|
23
22
|
}
|
|
24
|
-
if (!(await isOnline()))
|
|
25
|
-
return;
|
|
26
23
|
const excludeTables = getSupastashConfig()?.excludeTables?.push || [];
|
|
27
24
|
const tablesToPush = tables.filter((table) => !excludeTables?.includes(table));
|
|
28
25
|
numberOfTables = tablesToPush.length;
|
|
@@ -59,7 +56,7 @@ export async function pushLocalData() {
|
|
|
59
56
|
});
|
|
60
57
|
}
|
|
61
58
|
catch (e) {
|
|
62
|
-
const msg = e?.code ?? e?.name ?? String(e);
|
|
59
|
+
const msg = e?.message ?? e?.code ?? e?.name ?? String(e);
|
|
63
60
|
SyncInfoUpdater.markLogError({
|
|
64
61
|
type: "push",
|
|
65
62
|
table,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sendUnsyncedToSupabase.d.ts","sourceRoot":"","sources":["../../../../../src/desktop/utils/sync/pushLocal/sendUnsyncedToSupabase.ts"],"names":[],"mappings":"AAYA;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,MAAM,EACb,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,EACrD,MAAM,CAAC,EAAE,MAAM,EAAE,gCA+ClB"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { getSupastashConfig } from "
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { getAllDeletedData, getAllUnsyncedData } from "./getAllUnsyncedData";
|
|
1
|
+
import { getSupastashConfig } from "../../../../shared/core/config";
|
|
2
|
+
import { refreshScreen } from "../../../../shared/utils/refreshScreenCalls";
|
|
3
|
+
import { deleteData } from "../../../../shared/utils/sync/pushLocal/deleteChunks";
|
|
4
|
+
import { getAllDeletedData, getAllUnsyncedData, } from "../../../../shared/utils/sync/pushLocal/getAllUnsyncedData";
|
|
5
|
+
import { SyncInfoUpdater } from "../../../../shared/utils/sync/queryStatus";
|
|
7
6
|
import { uploadData } from "./uploadChunk";
|
|
8
7
|
let isInSync = new Map();
|
|
9
8
|
/**
|
|
@@ -16,8 +15,6 @@ export async function pushLocalDataToRemote(table, onPushToRemote, noSync) {
|
|
|
16
15
|
const cfg = getSupastashConfig();
|
|
17
16
|
if (cfg.supastashMode === "ghost")
|
|
18
17
|
return false;
|
|
19
|
-
if (!(await isOnline()))
|
|
20
|
-
return false;
|
|
21
18
|
isInSync.set(table, true);
|
|
22
19
|
try {
|
|
23
20
|
const data = await getAllUnsyncedData(table);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uploadChunk.d.ts","sourceRoot":"","sources":["../../../../../src/desktop/utils/sync/pushLocal/uploadChunk.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAgMnE;;;;GAIG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,WAAW,EAAE,EAC9B,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,iBAetD"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import { DEFAULT_CHUNK_SIZE } from "
|
|
2
|
-
import { getSupastashConfig } from "
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import { setQueryStatus, SyncInfoUpdater } from "
|
|
8
|
-
import { enforceTimestamps } from "./normalize";
|
|
1
|
+
import { DEFAULT_CHUNK_SIZE } from "../../../../shared/constants/syncDefaults";
|
|
2
|
+
import { getSupastashConfig } from "../../../../shared/core/config";
|
|
3
|
+
import { normalizeForSupabase } from "../../../../shared/utils/getSafeValues";
|
|
4
|
+
import log from "../../../../shared/utils/logs";
|
|
5
|
+
import { supabaseClientErr } from "../../../../shared/utils/supabaseClientErr";
|
|
6
|
+
import { enforceTimestamps } from "../../../../shared/utils/sync/pushLocal/normalize";
|
|
7
|
+
import { setQueryStatus, SyncInfoUpdater, } from "../../../../shared/utils/sync/queryStatus";
|
|
9
8
|
import { backoff, batchUpsert, fetchRemoteHeadsChunked, filterRowsByUpdatedAt, handleRowFailure, markSynced, rpcUpsert, rpcUpsertSingle, singleUpsert, } from "./uploadHelpers";
|
|
10
9
|
/**
|
|
11
10
|
* Uploads a chunk of data to the remote database
|
|
@@ -23,9 +22,6 @@ async function uploadChunk(table, chunk, onPushToRemote) {
|
|
|
23
22
|
if (!supabase) {
|
|
24
23
|
throw new Error(supabaseClientErr);
|
|
25
24
|
}
|
|
26
|
-
const online = await isOnline();
|
|
27
|
-
if (!online)
|
|
28
|
-
return;
|
|
29
25
|
let errorCount = 0;
|
|
30
26
|
let lastError = null;
|
|
31
27
|
let pending = [];
|
|
@@ -165,7 +161,7 @@ export async function uploadData(table, unsyncedRecords, onPushToRemote) {
|
|
|
165
161
|
const supabase = cfg.supabaseClient;
|
|
166
162
|
if (!supabase)
|
|
167
163
|
throw new Error("[Supastash] Supabase client not configured");
|
|
168
|
-
const cleaned = unsyncedRecords.map(({ synced_at, deleted_at, ...rest }) => enforceTimestamps(normalizeForSupabase(rest)));
|
|
164
|
+
const cleaned = unsyncedRecords.map(({ synced_at, deleted_at, arrived_at, ...rest }) => enforceTimestamps(normalizeForSupabase(rest)));
|
|
169
165
|
for (let i = 0; i < cleaned.length; i += DEFAULT_CHUNK_SIZE) {
|
|
170
166
|
const chunk = cleaned.slice(i, i + DEFAULT_CHUNK_SIZE);
|
|
171
167
|
await uploadChunk(table, chunk, onPushToRemote);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { SupastashConfig } from "
|
|
2
|
-
import { RowLike } from "
|
|
1
|
+
import { SupastashConfig } from "../../../../shared/types/supastashConfig.types";
|
|
2
|
+
import { RowLike } from "../../../../shared/types/syncEngine.types";
|
|
3
3
|
export declare function classifyFailure(cfg: SupastashConfig<any>, code?: string | number): "HTTP" | "UNKNOWN" | "NON_RETRYABLE" | "FK_BLOCK" | "RETRYABLE";
|
|
4
4
|
declare function batchUpsert(table: string, rows: RowLike[], supabase: any): Promise<any>;
|
|
5
5
|
declare function singleUpsert(table: string, row: RowLike, supabase: any): Promise<any>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uploadHelpers.d.ts","sourceRoot":"","sources":["../../../../../src/desktop/utils/sync/pushLocal/uploadHelpers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,MAAM,2CAA2C,CAAC;AAOpE,wBAAgB,eAAe,CAC7B,GAAG,EAAE,eAAe,CAAC,GAAG,CAAC,EACzB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,mEAWvB;AAED,iBAAe,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,GAAG,gBAEvE;AAED,iBAAe,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,gBAErE;AAED,iBAAe,OAAO,CAAC,QAAQ,EAAE,MAAM,iBAOtC;AAmBD,iBAAe,SAAS,CAAC,EACvB,KAAK,EACL,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,QAAQ,EAAE,GAAG,CAAC;CACf;;;;;;;GA+CA;AAED,iBAAe,eAAe,CAAC,EAC7B,KAAK,EACL,GAAG,EACH,QAAQ,EACR,SAAS,GACV,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;IACb,QAAQ,EAAE,GAAG,CAAC;IACd,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;;;;;;GAaA;AAMD,iBAAe,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,iBAIrD;AAWD,iBAAS,qBAAqB,CAC5B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,OAAO,EAAE,EAChB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,aAiCjC;AAMD,iBAAe,gBAAgB,CAC7B,GAAG,EAAE,eAAe,CAAC,GAAG,CAAC,EACzB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,GAAG,GACZ,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,CAkDvC;AAgBD,OAAO,EACL,OAAO,EACP,WAAW,EACX,qBAAqB,EACrB,gBAAgB,EAChB,UAAU,EACV,SAAS,EACT,eAAe,EACf,YAAY,GACb,CAAC;AAEF;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,GAAG,iBAkBd;AASD,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EAAE,EACb,QAAQ,EAAE,GAAG,gCAcd"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { getSupastashConfig } from "
|
|
2
|
-
import { getSupastashDb } from "
|
|
3
|
-
import { supastashEventBus } from "
|
|
4
|
-
import log, { logWarn } from "
|
|
1
|
+
import { getSupastashConfig } from "../../../../shared/core/config";
|
|
2
|
+
import { getSupastashDb } from "../../../../shared/db/dbInitializer";
|
|
3
|
+
import { supastashEventBus } from "../../../../shared/utils/events/eventBus";
|
|
4
|
+
import log, { logWarn } from "../../../../shared/utils/logs";
|
|
5
|
+
import { setQueryStatus } from "../../../../shared/utils/sync/queryStatus";
|
|
6
|
+
import { updateLocalSyncedAt } from "../../../../shared/utils/sync/status/syncUpdate";
|
|
5
7
|
import { upsertData } from "../pullFromRemote/updateLocalDb";
|
|
6
|
-
import { setQueryStatus } from "../queryStatus";
|
|
7
|
-
import { updateLocalSyncedAt } from "../status/syncUpdate";
|
|
8
8
|
export function classifyFailure(cfg, code) {
|
|
9
9
|
const p = cfg.syncPolicy ?? {};
|
|
10
10
|
const n = Number(code);
|
|
@@ -220,7 +220,7 @@ export async function rewindAndDropLocal(table, rowId, supabase) {
|
|
|
220
220
|
}
|
|
221
221
|
}
|
|
222
222
|
async function replaceLocalWithServer(table, serverRow) {
|
|
223
|
-
await upsertData(table, serverRow);
|
|
223
|
+
await upsertData({ table, record: serverRow });
|
|
224
224
|
await updateLocalSyncedAt(table, [serverRow.id]);
|
|
225
225
|
setQueryStatus(serverRow.id, table, "success");
|
|
226
226
|
supastashEventBus.emit("updateSyncStatus");
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SupastashFilter } from "../../../../shared/types/realtimeData.types";
|
|
2
2
|
/**
|
|
3
3
|
* Canonicalizes a set of filters
|
|
4
4
|
* @param filters - The filters to canonicalize
|
|
5
5
|
* @returns The canonicalized filters
|
|
6
6
|
*/
|
|
7
|
-
export declare function canonicalizeFilters(filters?:
|
|
7
|
+
export declare function canonicalizeFilters(filters?: SupastashFilter[] | null): string;
|
|
8
8
|
/**
|
|
9
9
|
* Computes the filter key for a given set of filters
|
|
10
10
|
* @param filters - The filters to compute the key for
|
|
11
11
|
* @param ns - The namespace to use for the key
|
|
12
12
|
* @returns The computed filter key
|
|
13
13
|
*/
|
|
14
|
-
export declare function computeFilterKey(filters?:
|
|
14
|
+
export declare function computeFilterKey(filters?: SupastashFilter[] | null, ns?: string): Promise<string>;
|
|
15
15
|
//# sourceMappingURL=filterKey.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filterKey.d.ts","sourceRoot":"","sources":["../../../../../src/desktop/utils/sync/status/filterKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAc9E;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,CAAC,EAAE,eAAe,EAAE,GAAG,IAAI,GACjC,MAAM,CAuBR;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,CAAC,EAAE,eAAe,EAAE,GAAG,IAAI,EAClC,EAAE,SAAW,mBAKd"}
|