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.
Files changed (578) hide show
  1. package/README.md +37 -8
  2. package/dist/desktop/adapters/appstate.d.ts +2 -0
  3. package/dist/desktop/adapters/appstate.d.ts.map +1 -0
  4. package/dist/desktop/adapters/appstate.js +10 -0
  5. package/dist/desktop/adapters/crypto.d.ts +3 -0
  6. package/dist/desktop/adapters/crypto.d.ts.map +1 -0
  7. package/dist/desktop/adapters/crypto.js +16 -0
  8. package/dist/{core → desktop/core}/schemaManager/index.d.ts +1 -1
  9. package/dist/desktop/core/schemaManager/index.d.ts.map +1 -0
  10. package/dist/{core → desktop/core}/schemaManager/index.js +3 -3
  11. package/dist/{hooks/supastashData/index.d.ts → desktop/hooks/supastashData.d.ts} +2 -2
  12. package/dist/desktop/hooks/supastashData.d.ts.map +1 -0
  13. package/dist/desktop/hooks/supastashData.js +139 -0
  14. package/dist/{hooks → desktop/hooks}/supastashLogic.d.ts +1 -1
  15. package/dist/desktop/hooks/supastashLogic.d.ts.map +1 -0
  16. package/dist/{hooks → desktop/hooks}/supastashLogic.js +11 -12
  17. package/dist/{hooks/syncEngine/index.d.ts → desktop/hooks/syncEngine.d.ts} +1 -1
  18. package/dist/desktop/hooks/syncEngine.d.ts.map +1 -0
  19. package/dist/desktop/hooks/syncEngine.js +233 -0
  20. package/dist/desktop/index.d.ts +28 -0
  21. package/dist/desktop/index.d.ts.map +1 -0
  22. package/dist/desktop/index.js +21 -0
  23. package/dist/{hooks/supastashData → desktop/utils/fetchData}/eventQueues.d.ts +2 -2
  24. package/dist/desktop/utils/fetchData/eventQueues.d.ts.map +1 -0
  25. package/dist/{hooks/supastashData → desktop/utils/fetchData}/eventQueues.js +3 -3
  26. package/dist/{hooks/supastashData → desktop/utils/fetchData}/fetchCalls.d.ts +1 -1
  27. package/dist/desktop/utils/fetchData/fetchCalls.d.ts.map +1 -0
  28. package/dist/{hooks/supastashData → desktop/utils/fetchData}/fetchCalls.js +5 -5
  29. package/dist/desktop/utils/fetchData/initialFetch.d.ts +3 -0
  30. package/dist/desktop/utils/fetchData/initialFetch.d.ts.map +1 -0
  31. package/dist/{utils → desktop/utils}/fetchData/initialFetch.js +2 -2
  32. package/dist/{utils → desktop/utils}/fetchData/receiveData.d.ts +1 -1
  33. package/dist/desktop/utils/fetchData/receiveData.d.ts.map +1 -0
  34. package/dist/{utils → desktop/utils}/fetchData/receiveData.js +7 -7
  35. package/dist/desktop/utils/query/index.d.ts +73 -0
  36. package/dist/desktop/utils/query/index.d.ts.map +1 -0
  37. package/dist/desktop/utils/query/index.js +139 -0
  38. package/dist/desktop/utils/schema/wipeTables.d.ts.map +1 -0
  39. package/dist/{utils → desktop/utils}/schema/wipeTables.js +4 -4
  40. package/dist/desktop/utils/sync/pullFromRemote/fetchOlder.d.ts +44 -0
  41. package/dist/desktop/utils/sync/pullFromRemote/fetchOlder.d.ts.map +1 -0
  42. package/dist/desktop/utils/sync/pullFromRemote/fetchOlder.js +55 -0
  43. package/dist/desktop/utils/sync/pullFromRemote/fetchOlderHelpers.d.ts +33 -0
  44. package/dist/desktop/utils/sync/pullFromRemote/fetchOlderHelpers.d.ts.map +1 -0
  45. package/dist/desktop/utils/sync/pullFromRemote/fetchOlderHelpers.js +104 -0
  46. package/dist/desktop/utils/sync/pullFromRemote/index.d.ts.map +1 -0
  47. package/dist/{hooks/syncEngine → desktop/utils/sync}/pullFromRemote/index.js +7 -7
  48. package/dist/{utils → desktop/utils}/sync/pullFromRemote/pullData.d.ts +3 -4
  49. package/dist/desktop/utils/sync/pullFromRemote/pullData.d.ts.map +1 -0
  50. package/dist/{utils → desktop/utils}/sync/pullFromRemote/pullData.js +10 -15
  51. package/dist/desktop/utils/sync/pullFromRemote/updateLocalDb.d.ts +46 -0
  52. package/dist/desktop/utils/sync/pullFromRemote/updateLocalDb.d.ts.map +1 -0
  53. package/dist/desktop/utils/sync/pullFromRemote/updateLocalDb.js +284 -0
  54. package/dist/desktop/utils/sync/pushLocal/index.d.ts.map +1 -0
  55. package/dist/{hooks/syncEngine → desktop/utils/sync}/pushLocal/index.js +8 -11
  56. package/dist/desktop/utils/sync/pushLocal/sendUnsyncedToSupabase.d.ts.map +1 -0
  57. package/dist/{utils → desktop/utils}/sync/pushLocal/sendUnsyncedToSupabase.js +5 -8
  58. package/dist/{utils → desktop/utils}/sync/pushLocal/uploadChunk.d.ts +1 -1
  59. package/dist/desktop/utils/sync/pushLocal/uploadChunk.d.ts.map +1 -0
  60. package/dist/{utils → desktop/utils}/sync/pushLocal/uploadChunk.js +8 -12
  61. package/dist/{utils → desktop/utils}/sync/pushLocal/uploadHelpers.d.ts +2 -2
  62. package/dist/desktop/utils/sync/pushLocal/uploadHelpers.d.ts.map +1 -0
  63. package/dist/{utils → desktop/utils}/sync/pushLocal/uploadHelpers.js +7 -7
  64. package/dist/{utils → desktop/utils}/sync/status/filterKey.d.ts +3 -3
  65. package/dist/desktop/utils/sync/status/filterKey.d.ts.map +1 -0
  66. package/dist/desktop/utils/sync/status/filterKey.js +48 -0
  67. package/dist/desktop/utils/sync/status/repo.d.ts +10 -0
  68. package/dist/desktop/utils/sync/status/repo.d.ts.map +1 -0
  69. package/dist/{utils → desktop/utils}/sync/status/repo.js +31 -25
  70. package/dist/{utils → desktop/utils}/sync/status/services.d.ts +6 -7
  71. package/dist/desktop/utils/sync/status/services.d.ts.map +1 -0
  72. package/dist/{utils → desktop/utils}/sync/status/services.js +4 -9
  73. package/dist/{utils → desktop/utils}/sync/status/syncStatus.d.ts +6 -8
  74. package/dist/desktop/utils/sync/status/syncStatus.d.ts.map +1 -0
  75. package/dist/{utils → desktop/utils}/sync/status/syncStatus.js +14 -6
  76. package/dist/index.d.ts +18 -23
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +12 -21
  79. package/dist/native/core/schemaManager/index.d.ts +40 -0
  80. package/dist/native/core/schemaManager/index.d.ts.map +1 -0
  81. package/dist/native/core/schemaManager/index.js +141 -0
  82. package/dist/native/hooks/supastashData.d.ts +67 -0
  83. package/dist/native/hooks/supastashData.d.ts.map +1 -0
  84. package/dist/{hooks/supastashData/index.js → native/hooks/supastashData.js} +23 -13
  85. package/dist/native/hooks/supastashLogic.d.ts +19 -0
  86. package/dist/native/hooks/supastashLogic.d.ts.map +1 -0
  87. package/dist/native/hooks/supastashLogic.js +101 -0
  88. package/dist/native/hooks/syncEngine.d.ts +28 -0
  89. package/dist/native/hooks/syncEngine.d.ts.map +1 -0
  90. package/dist/{hooks/syncEngine/index.js → native/hooks/syncEngine.js} +18 -18
  91. package/dist/native/index.d.ts +28 -0
  92. package/dist/native/index.d.ts.map +1 -0
  93. package/dist/native/index.js +21 -0
  94. package/dist/native/utils/fetchData/eventQueues.d.ts +5 -0
  95. package/dist/native/utils/fetchData/eventQueues.d.ts.map +1 -0
  96. package/dist/native/utils/fetchData/eventQueues.js +52 -0
  97. package/dist/native/utils/fetchData/fetchCalls.d.ts +9 -0
  98. package/dist/native/utils/fetchData/fetchCalls.d.ts.map +1 -0
  99. package/dist/native/utils/fetchData/fetchCalls.js +88 -0
  100. package/dist/native/utils/fetchData/initialFetch.d.ts +3 -0
  101. package/dist/native/utils/fetchData/initialFetch.d.ts.map +1 -0
  102. package/dist/native/utils/fetchData/initialFetch.js +21 -0
  103. package/dist/native/utils/fetchData/receiveData.d.ts +3 -0
  104. package/dist/native/utils/fetchData/receiveData.d.ts.map +1 -0
  105. package/dist/native/utils/fetchData/receiveData.js +39 -0
  106. package/dist/native/utils/query/index.d.ts +73 -0
  107. package/dist/native/utils/query/index.d.ts.map +1 -0
  108. package/dist/native/utils/query/index.js +139 -0
  109. package/dist/native/utils/schema/wipeTables.d.ts +98 -0
  110. package/dist/native/utils/schema/wipeTables.d.ts.map +1 -0
  111. package/dist/native/utils/schema/wipeTables.js +188 -0
  112. package/dist/native/utils/sync/pullFromRemote/fetchOlder.d.ts +44 -0
  113. package/dist/native/utils/sync/pullFromRemote/fetchOlder.d.ts.map +1 -0
  114. package/dist/native/utils/sync/pullFromRemote/fetchOlder.js +55 -0
  115. package/dist/native/utils/sync/pullFromRemote/fetchOlderHelpers.d.ts +33 -0
  116. package/dist/native/utils/sync/pullFromRemote/fetchOlderHelpers.d.ts.map +1 -0
  117. package/dist/native/utils/sync/pullFromRemote/fetchOlderHelpers.js +104 -0
  118. package/dist/native/utils/sync/pullFromRemote/index.d.ts +5 -0
  119. package/dist/native/utils/sync/pullFromRemote/index.d.ts.map +1 -0
  120. package/dist/native/utils/sync/pullFromRemote/index.js +73 -0
  121. package/dist/native/utils/sync/pullFromRemote/pullData.d.ts +21 -0
  122. package/dist/native/utils/sync/pullFromRemote/pullData.d.ts.map +1 -0
  123. package/dist/native/utils/sync/pullFromRemote/pullData.js +80 -0
  124. package/dist/native/utils/sync/pullFromRemote/updateLocalDb.d.ts +46 -0
  125. package/dist/native/utils/sync/pullFromRemote/updateLocalDb.d.ts.map +1 -0
  126. package/dist/native/utils/sync/pullFromRemote/updateLocalDb.js +278 -0
  127. package/dist/native/utils/sync/pushLocal/index.d.ts +5 -0
  128. package/dist/native/utils/sync/pushLocal/index.d.ts.map +1 -0
  129. package/dist/native/utils/sync/pushLocal/index.js +101 -0
  130. package/dist/native/utils/sync/pushLocal/sendUnsyncedToSupabase.d.ts +6 -0
  131. package/dist/native/utils/sync/pushLocal/sendUnsyncedToSupabase.d.ts.map +1 -0
  132. package/dist/native/utils/sync/pushLocal/sendUnsyncedToSupabase.js +57 -0
  133. package/dist/native/utils/sync/pushLocal/uploadChunk.d.ts +8 -0
  134. package/dist/native/utils/sync/pushLocal/uploadChunk.d.ts.map +1 -0
  135. package/dist/native/utils/sync/pushLocal/uploadChunk.js +173 -0
  136. package/dist/native/utils/sync/pushLocal/uploadHelpers.d.ts +41 -0
  137. package/dist/native/utils/sync/pushLocal/uploadHelpers.d.ts.map +1 -0
  138. package/dist/native/utils/sync/pushLocal/uploadHelpers.js +243 -0
  139. package/dist/native/utils/sync/status/filterKey.d.ts +15 -0
  140. package/dist/native/utils/sync/status/filterKey.d.ts.map +1 -0
  141. package/dist/{utils → native/utils}/sync/status/filterKey.js +5 -16
  142. package/dist/native/utils/sync/status/repo.d.ts +10 -0
  143. package/dist/native/utils/sync/status/repo.d.ts.map +1 -0
  144. package/dist/native/utils/sync/status/repo.js +97 -0
  145. package/dist/native/utils/sync/status/services.d.ts +31 -0
  146. package/dist/native/utils/sync/status/services.d.ts.map +1 -0
  147. package/dist/native/utils/sync/status/services.js +107 -0
  148. package/dist/native/utils/sync/status/syncStatus.d.ts +109 -0
  149. package/dist/native/utils/sync/status/syncStatus.d.ts.map +1 -0
  150. package/dist/native/utils/sync/status/syncStatus.js +161 -0
  151. package/dist/shared/constants/syncDefaults.d.ts.map +1 -0
  152. package/dist/{core → shared/core}/config/index.d.ts +2 -0
  153. package/dist/shared/core/config/index.d.ts.map +1 -0
  154. package/dist/{core → shared/core}/config/index.js +9 -1
  155. package/dist/shared/core/platform/appState.d.ts +12 -0
  156. package/dist/shared/core/platform/appState.d.ts.map +1 -0
  157. package/dist/shared/core/platform/appState.js +11 -0
  158. package/dist/shared/db/adapters/expo_sqlite.d.ts +3 -0
  159. package/dist/shared/db/adapters/expo_sqlite.d.ts.map +1 -0
  160. package/dist/shared/db/adapters/expo_sqlite.js +72 -0
  161. package/dist/shared/db/adapters/rn_nitro.d.ts +3 -0
  162. package/dist/shared/db/adapters/rn_nitro.d.ts.map +1 -0
  163. package/dist/shared/db/adapters/rn_nitro.js +111 -0
  164. package/dist/shared/db/adapters/rn_sqlite_storage.d.ts +3 -0
  165. package/dist/shared/db/adapters/rn_sqlite_storage.d.ts.map +1 -0
  166. package/dist/shared/db/adapters/rn_sqlite_storage.js +93 -0
  167. package/dist/shared/db/adapters/tauri.d.ts +3 -0
  168. package/dist/shared/db/adapters/tauri.d.ts.map +1 -0
  169. package/dist/shared/db/adapters/tauri.js +100 -0
  170. package/dist/shared/db/dbErrorMsg.d.ts.map +1 -0
  171. package/dist/{db → shared/db}/dbErrorMsg.js +7 -0
  172. package/dist/{db → shared/db}/dbInitializer.d.ts +1 -1
  173. package/dist/shared/db/dbInitializer.d.ts.map +1 -0
  174. package/dist/{db → shared/db}/dbInitializer.js +28 -15
  175. package/dist/shared/db/normalizer.d.ts +6 -0
  176. package/dist/shared/db/normalizer.d.ts.map +1 -0
  177. package/dist/shared/db/normalizer.js +26 -0
  178. package/dist/{hooks → shared/hooks}/supastashFilters/index.d.ts +3 -3
  179. package/dist/shared/hooks/supastashFilters/index.d.ts.map +1 -0
  180. package/dist/{hooks → shared/hooks}/supastashFilters/index.js +6 -4
  181. package/dist/{hooks → shared/hooks}/syncStatus/index.d.ts +1 -1
  182. package/dist/shared/hooks/syncStatus/index.d.ts.map +1 -0
  183. package/dist/shared/store/localCache.d.ts.map +1 -0
  184. package/dist/shared/store/sharedDb.d.ts +6 -0
  185. package/dist/shared/store/sharedDb.d.ts.map +1 -0
  186. package/dist/shared/store/sharedDb.js +17 -0
  187. package/dist/shared/store/syncCalls.d.ts.map +1 -0
  188. package/dist/{store → shared/store}/syncStatus.d.ts +1 -1
  189. package/dist/shared/store/syncStatus.d.ts.map +1 -0
  190. package/dist/shared/store/tableFilters.d.ts +5 -0
  191. package/dist/shared/store/tableFilters.d.ts.map +1 -0
  192. package/dist/shared/store/tableSchemaData.d.ts.map +1 -0
  193. package/dist/shared/store/tx.d.ts +3 -0
  194. package/dist/shared/store/tx.d.ts.map +1 -0
  195. package/dist/shared/store/tx.js +1 -0
  196. package/dist/shared/types/adapters.types.d.ts +8 -0
  197. package/dist/{types → shared/types}/expoSqlite.types.d.ts +3 -13
  198. package/dist/{types → shared/types}/index.d.ts +1 -1
  199. package/dist/shared/types/index.d.ts.map +1 -0
  200. package/dist/{types → shared/types}/liteQuery.types.d.ts +2 -2
  201. package/dist/{types → shared/types}/query.types.d.ts +24 -1
  202. package/dist/{types → shared/types}/realtimeData.types.d.ts +8 -4
  203. package/dist/{types → shared/types}/supastashConfig.types.d.ts +263 -8
  204. package/dist/{types → shared/types}/syncEngine.types.d.ts +49 -7
  205. package/dist/shared/utils/connection.d.ts.map +1 -0
  206. package/dist/{utils → shared/utils}/connection.js +6 -6
  207. package/dist/shared/utils/errorHandler.d.ts +6 -0
  208. package/dist/shared/utils/errorHandler.d.ts.map +1 -0
  209. package/dist/shared/utils/errorHandler.js +8 -0
  210. package/dist/shared/utils/events/eventBus.d.ts.map +1 -0
  211. package/dist/shared/utils/fetchData/addPayloadToUI.d.ts.map +1 -0
  212. package/dist/shared/utils/fetchData/createTable.d.ts.map +1 -0
  213. package/dist/shared/utils/fetchData/createTable.js +38 -0
  214. package/dist/shared/utils/fetchData/dataState.d.ts.map +1 -0
  215. package/dist/{hooks/supastashData → shared/utils/fetchData}/dataState.js +1 -1
  216. package/dist/shared/utils/fetchData/deleteData.d.ts.map +1 -0
  217. package/dist/{utils → shared/utils}/fetchData/deleteData.js +8 -5
  218. package/dist/{utils → shared/utils}/fetchData/fetchLocalData.d.ts +2 -2
  219. package/dist/shared/utils/fetchData/fetchLocalData.d.ts.map +1 -0
  220. package/dist/shared/utils/fetchData/getKeyType.d.ts.map +1 -0
  221. package/dist/shared/utils/fetchData/liteHelpers.d.ts +6 -0
  222. package/dist/shared/utils/fetchData/liteHelpers.d.ts.map +1 -0
  223. package/dist/shared/utils/fetchData/liteHelpers.js +92 -0
  224. package/dist/shared/utils/fetchData/realTimeCall.d.ts.map +1 -0
  225. package/dist/{utils → shared/utils}/fetchData/realTimeCall.js +2 -2
  226. package/dist/shared/utils/fetchData/realTimeManager.d.ts.map +1 -0
  227. package/dist/shared/utils/fetchData/registerSub.d.ts +4 -0
  228. package/dist/shared/utils/fetchData/registerSub.d.ts.map +1 -0
  229. package/dist/{hooks/supastashData → shared/utils/fetchData}/registerSub.js +3 -3
  230. package/dist/shared/utils/fetchData/setDataInBatches.d.ts.map +1 -0
  231. package/dist/shared/utils/fetchData/snapShot.d.ts.map +1 -0
  232. package/dist/shared/utils/fetchData/validatePayload.d.ts.map +1 -0
  233. package/dist/shared/utils/genUUID.d.ts.map +1 -0
  234. package/dist/shared/utils/getSafeValues.d.ts.map +1 -0
  235. package/dist/shared/utils/getTableSchema.d.ts.map +1 -0
  236. package/dist/{utils → shared/utils}/logs.d.ts +1 -0
  237. package/dist/shared/utils/logs.d.ts.map +1 -0
  238. package/dist/{utils → shared/utils}/logs.js +6 -1
  239. package/dist/{utils → shared/utils}/query/builder/crud.d.ts +5 -5
  240. package/dist/shared/utils/query/builder/crud.d.ts.map +1 -0
  241. package/dist/{utils → shared/utils}/query/builder/filters.d.ts +36 -12
  242. package/dist/shared/utils/query/builder/filters.d.ts.map +1 -0
  243. package/dist/{utils → shared/utils}/query/builder/filters.js +33 -1
  244. package/dist/{utils → shared/utils}/query/builder/index.d.ts +29 -1
  245. package/dist/shared/utils/query/builder/index.d.ts.map +1 -0
  246. package/dist/shared/utils/query/builder/index.js +138 -0
  247. package/dist/shared/utils/query/builder/mainQuery.d.ts.map +1 -0
  248. package/dist/{utils → shared/utils}/query/builder/mainQuery.js +17 -2
  249. package/dist/shared/utils/query/helpers/localDb/getLocalMethod.d.ts +15 -0
  250. package/dist/shared/utils/query/helpers/localDb/getLocalMethod.d.ts.map +1 -0
  251. package/dist/{utils → shared/utils}/query/helpers/localDb/getLocalMethod.js +7 -6
  252. package/dist/{utils → shared/utils}/query/helpers/localDb/insertMany.d.ts +3 -0
  253. package/dist/shared/utils/query/helpers/localDb/insertMany.d.ts.map +1 -0
  254. package/dist/{utils → shared/utils}/query/helpers/localDb/insertMany.js +10 -3
  255. package/dist/shared/utils/query/helpers/localDb/localQueryBuilder.d.ts +34 -0
  256. package/dist/shared/utils/query/helpers/localDb/localQueryBuilder.d.ts.map +1 -0
  257. package/dist/{utils → shared/utils}/query/helpers/localDb/localQueryBuilder.js +17 -10
  258. package/dist/{utils → shared/utils}/query/helpers/localDb/upsertMany.d.ts +3 -0
  259. package/dist/shared/utils/query/helpers/localDb/upsertMany.d.ts.map +1 -0
  260. package/dist/{utils → shared/utils}/query/helpers/localDb/upsertMany.js +9 -2
  261. package/dist/shared/utils/query/helpers/mainQueryHelpers.d.ts.map +1 -0
  262. package/dist/{utils → shared/utils}/query/helpers/mainQueryHelpers.js +39 -9
  263. package/dist/shared/utils/query/helpers/queryValidator.d.ts.map +1 -0
  264. package/dist/shared/utils/query/helpers/queueRemote.d.ts.map +1 -0
  265. package/dist/{utils → shared/utils}/query/helpers/queueRemote.js +36 -27
  266. package/dist/shared/utils/query/helpers/remoteDb/queryFilterBuilder.d.ts.map +1 -0
  267. package/dist/shared/utils/query/helpers/remoteDb/queryUtils.d.ts.map +1 -0
  268. package/dist/shared/utils/query/localDbQuery/delete.d.ts +22 -0
  269. package/dist/shared/utils/query/localDbQuery/delete.d.ts.map +1 -0
  270. package/dist/{utils → shared/utils}/query/localDbQuery/delete.js +16 -5
  271. package/dist/shared/utils/query/localDbQuery/index.d.ts.map +1 -0
  272. package/dist/shared/utils/query/localDbQuery/index.js +15 -0
  273. package/dist/shared/utils/query/localDbQuery/insert.d.ts +10 -0
  274. package/dist/shared/utils/query/localDbQuery/insert.d.ts.map +1 -0
  275. package/dist/{utils → shared/utils}/query/localDbQuery/insert.js +8 -5
  276. package/dist/{utils → shared/utils}/query/localDbQuery/select.d.ts +2 -2
  277. package/dist/shared/utils/query/localDbQuery/select.d.ts.map +1 -0
  278. package/dist/{utils → shared/utils}/query/localDbQuery/select.js +5 -2
  279. package/dist/shared/utils/query/localDbQuery/update.d.ts +11 -0
  280. package/dist/shared/utils/query/localDbQuery/update.d.ts.map +1 -0
  281. package/dist/{utils → shared/utils}/query/localDbQuery/update.js +7 -4
  282. package/dist/shared/utils/query/localDbQuery/upsert.d.ts +9 -0
  283. package/dist/shared/utils/query/localDbQuery/upsert.d.ts.map +1 -0
  284. package/dist/{utils → shared/utils}/query/localDbQuery/upsert.js +8 -3
  285. package/dist/shared/utils/query/remoteQuery/supabaseQuery.d.ts.map +1 -0
  286. package/dist/{utils → shared/utils}/query/remoteQuery/supabaseQuery.js +5 -2
  287. package/dist/shared/utils/refreshScreenCalls.d.ts.map +1 -0
  288. package/dist/shared/utils/reusedHelpers.d.ts +8 -0
  289. package/dist/shared/utils/reusedHelpers.d.ts.map +1 -0
  290. package/dist/shared/utils/reusedHelpers.js +162 -0
  291. package/dist/shared/utils/schema/createSyncStatus.d.ts +19 -0
  292. package/dist/shared/utils/schema/createSyncStatus.d.ts.map +1 -0
  293. package/dist/{utils → shared/utils}/schema/createSyncStatus.js +30 -3
  294. package/dist/shared/utils/serializer.d.ts.map +1 -0
  295. package/dist/shared/utils/supabaseClientErr.d.ts.map +1 -0
  296. package/dist/shared/utils/supastashMode.d.ts.map +1 -0
  297. package/dist/shared/utils/sync/getAllTables.d.ts.map +1 -0
  298. package/dist/{utils → shared/utils}/sync/getAllTables.js +1 -1
  299. package/dist/shared/utils/sync/pullFromRemote/getLastCreatedInfo.d.ts.map +1 -0
  300. package/dist/shared/utils/sync/pullFromRemote/getLastDeletedInfo.d.ts.map +1 -0
  301. package/dist/shared/utils/sync/pullFromRemote/getLastPulledInfo.d.ts.map +1 -0
  302. package/dist/{utils → shared/utils}/sync/pullFromRemote/helpers.d.ts +10 -7
  303. package/dist/shared/utils/sync/pullFromRemote/helpers.d.ts.map +1 -0
  304. package/dist/{utils → shared/utils}/sync/pullFromRemote/helpers.js +20 -14
  305. package/dist/shared/utils/sync/pullFromRemote/runLimitedConcurrency.d.ts.map +1 -0
  306. package/dist/{utils → shared/utils}/sync/pullFromRemote/runLimitedConcurrency.js +1 -1
  307. package/dist/shared/utils/sync/pullFromRemote/stringifyFields.d.ts.map +1 -0
  308. package/dist/{utils → shared/utils}/sync/pullFromRemote/updateFilter.d.ts +1 -1
  309. package/dist/shared/utils/sync/pullFromRemote/updateFilter.d.ts.map +1 -0
  310. package/dist/{utils → shared/utils}/sync/pullFromRemote/updateFilter.js +5 -3
  311. package/dist/shared/utils/sync/pullFromRemote/validateFilters.d.ts +3 -0
  312. package/dist/shared/utils/sync/pullFromRemote/validateFilters.d.ts.map +1 -0
  313. package/dist/shared/utils/sync/pullFromRemote/validateFilters.js +49 -0
  314. package/dist/shared/utils/sync/pushLocal/deleteChunks.d.ts.map +1 -0
  315. package/dist/{utils → shared/utils}/sync/pushLocal/deleteChunks.js +7 -5
  316. package/dist/shared/utils/sync/pushLocal/getAllUnsyncedData.d.ts.map +1 -0
  317. package/dist/shared/utils/sync/pushLocal/getAllUnsyncedData.js +53 -0
  318. package/dist/shared/utils/sync/pushLocal/normalize.d.ts.map +1 -0
  319. package/dist/shared/utils/sync/pushLocal/parseFields.d.ts.map +1 -0
  320. package/dist/{utils → shared/utils}/sync/queryStatus.d.ts +1 -1
  321. package/dist/shared/utils/sync/queryStatus.d.ts.map +1 -0
  322. package/dist/shared/utils/sync/refreshTables.d.ts.map +1 -0
  323. package/dist/shared/utils/sync/registration/syncCalls.d.ts.map +1 -0
  324. package/dist/{utils → shared/utils}/sync/registration/syncCalls.js +1 -1
  325. package/dist/shared/utils/sync/status/remoteSchema.d.ts +4 -0
  326. package/dist/shared/utils/sync/status/remoteSchema.d.ts.map +1 -0
  327. package/dist/shared/utils/sync/status/remoteSchema.js +140 -0
  328. package/dist/shared/utils/sync/status/syncUpdate.d.ts.map +1 -0
  329. package/dist/shared/utils/tableValidator.d.ts.map +1 -0
  330. package/package.json +29 -12
  331. package/dist/constants/syncDefaults.d.ts.map +0 -1
  332. package/dist/core/config/index.d.ts.map +0 -1
  333. package/dist/core/schemaManager/index.d.ts.map +0 -1
  334. package/dist/db/adapters/expo_sqlite.d.ts +0 -3
  335. package/dist/db/adapters/expo_sqlite.d.ts.map +0 -1
  336. package/dist/db/adapters/expo_sqlite.js +0 -24
  337. package/dist/db/adapters/rn_nitro.d.ts +0 -3
  338. package/dist/db/adapters/rn_nitro.d.ts.map +0 -1
  339. package/dist/db/adapters/rn_nitro.js +0 -34
  340. package/dist/db/adapters/rn_sqlite_storage.d.ts +0 -3
  341. package/dist/db/adapters/rn_sqlite_storage.d.ts.map +0 -1
  342. package/dist/db/adapters/rn_sqlite_storage.js +0 -25
  343. package/dist/db/dbErrorMsg.d.ts.map +0 -1
  344. package/dist/db/dbInitializer.d.ts.map +0 -1
  345. package/dist/hooks/supastashData/addPayloadToUI.d.ts.map +0 -1
  346. package/dist/hooks/supastashData/dataState.d.ts.map +0 -1
  347. package/dist/hooks/supastashData/eventQueues.d.ts.map +0 -1
  348. package/dist/hooks/supastashData/fetchCalls.d.ts.map +0 -1
  349. package/dist/hooks/supastashData/index.d.ts.map +0 -1
  350. package/dist/hooks/supastashData/realtimeSubscription.d.ts +0 -5
  351. package/dist/hooks/supastashData/realtimeSubscription.d.ts.map +0 -1
  352. package/dist/hooks/supastashData/realtimeSubscription.js +0 -96
  353. package/dist/hooks/supastashData/registerSub.d.ts +0 -4
  354. package/dist/hooks/supastashData/registerSub.d.ts.map +0 -1
  355. package/dist/hooks/supastashFilters/index.d.ts.map +0 -1
  356. package/dist/hooks/supastashLiteQuery/fetchCalls.d.ts +0 -1
  357. package/dist/hooks/supastashLiteQuery/fetchCalls.d.ts.map +0 -1
  358. package/dist/hooks/supastashLiteQuery/fetchCalls.js +0 -122
  359. package/dist/hooks/supastashLiteQuery/index.d.ts +0 -53
  360. package/dist/hooks/supastashLiteQuery/index.d.ts.map +0 -1
  361. package/dist/hooks/supastashLiteQuery/index.js +0 -117
  362. package/dist/hooks/supastashLiteQuery/loadCacheOnMount.d.ts +0 -1
  363. package/dist/hooks/supastashLiteQuery/loadCacheOnMount.d.ts.map +0 -1
  364. package/dist/hooks/supastashLiteQuery/loadCacheOnMount.js +0 -1
  365. package/dist/hooks/supastashLogic.d.ts.map +0 -1
  366. package/dist/hooks/syncEngine/index.d.ts.map +0 -1
  367. package/dist/hooks/syncEngine/pullFromRemote/index.d.ts.map +0 -1
  368. package/dist/hooks/syncEngine/pushLocal/index.d.ts.map +0 -1
  369. package/dist/hooks/syncStatus/index.d.ts.map +0 -1
  370. package/dist/store/localCache.d.ts.map +0 -1
  371. package/dist/store/syncCalls.d.ts.map +0 -1
  372. package/dist/store/syncStatus.d.ts.map +0 -1
  373. package/dist/store/tableFilters.d.ts +0 -5
  374. package/dist/store/tableFilters.d.ts.map +0 -1
  375. package/dist/store/tableSchemaData.d.ts.map +0 -1
  376. package/dist/types/index.d.ts.map +0 -1
  377. package/dist/types/supastashFilters.types.d.ts +0 -3
  378. package/dist/utils/connection.d.ts.map +0 -1
  379. package/dist/utils/createIndexes.d.ts +0 -9
  380. package/dist/utils/createIndexes.d.ts.map +0 -1
  381. package/dist/utils/createIndexes.js +0 -74
  382. package/dist/utils/events/eventBus.d.ts.map +0 -1
  383. package/dist/utils/fetchData/buildFilter.d.ts +0 -4
  384. package/dist/utils/fetchData/buildFilter.d.ts.map +0 -1
  385. package/dist/utils/fetchData/buildFilter.js +0 -58
  386. package/dist/utils/fetchData/createTable.d.ts.map +0 -1
  387. package/dist/utils/fetchData/createTable.js +0 -81
  388. package/dist/utils/fetchData/deleteData.d.ts.map +0 -1
  389. package/dist/utils/fetchData/fetchLocalData.d.ts.map +0 -1
  390. package/dist/utils/fetchData/getKeyType.d.ts.map +0 -1
  391. package/dist/utils/fetchData/initialFetch.d.ts +0 -3
  392. package/dist/utils/fetchData/initialFetch.d.ts.map +0 -1
  393. package/dist/utils/fetchData/liteHelpers.d.ts +0 -6
  394. package/dist/utils/fetchData/liteHelpers.d.ts.map +0 -1
  395. package/dist/utils/fetchData/liteHelpers.js +0 -197
  396. package/dist/utils/fetchData/liteReducer.d.ts +0 -3
  397. package/dist/utils/fetchData/liteReducer.d.ts.map +0 -1
  398. package/dist/utils/fetchData/liteReducer.js +0 -103
  399. package/dist/utils/fetchData/realTimeCall.d.ts.map +0 -1
  400. package/dist/utils/fetchData/realTimeManager.d.ts.map +0 -1
  401. package/dist/utils/fetchData/receiveData.d.ts.map +0 -1
  402. package/dist/utils/fetchData/setDataInBatches.d.ts.map +0 -1
  403. package/dist/utils/fetchData/snapShot.d.ts.map +0 -1
  404. package/dist/utils/fetchData/validatePayload.d.ts.map +0 -1
  405. package/dist/utils/genUUID.d.ts.map +0 -1
  406. package/dist/utils/getSafeValues.d.ts.map +0 -1
  407. package/dist/utils/getTableSchema.d.ts.map +0 -1
  408. package/dist/utils/logs.d.ts.map +0 -1
  409. package/dist/utils/query/builder/crud.d.ts.map +0 -1
  410. package/dist/utils/query/builder/filters.d.ts.map +0 -1
  411. package/dist/utils/query/builder/index.d.ts.map +0 -1
  412. package/dist/utils/query/builder/index.js +0 -62
  413. package/dist/utils/query/builder/mainQuery.d.ts.map +0 -1
  414. package/dist/utils/query/helpers/localDb/getLocalMethod.d.ts +0 -15
  415. package/dist/utils/query/helpers/localDb/getLocalMethod.d.ts.map +0 -1
  416. package/dist/utils/query/helpers/localDb/insertMany.d.ts.map +0 -1
  417. package/dist/utils/query/helpers/localDb/localQueryBuilder.d.ts +0 -34
  418. package/dist/utils/query/helpers/localDb/localQueryBuilder.d.ts.map +0 -1
  419. package/dist/utils/query/helpers/localDb/upsertMany.d.ts.map +0 -1
  420. package/dist/utils/query/helpers/mainQueryHelpers.d.ts.map +0 -1
  421. package/dist/utils/query/helpers/queryValidator.d.ts.map +0 -1
  422. package/dist/utils/query/helpers/queueRemote.d.ts.map +0 -1
  423. package/dist/utils/query/helpers/remoteDb/queryFilterBuilder.d.ts.map +0 -1
  424. package/dist/utils/query/helpers/remoteDb/queryUtils.d.ts.map +0 -1
  425. package/dist/utils/query/localDbQuery/delete.d.ts +0 -16
  426. package/dist/utils/query/localDbQuery/delete.d.ts.map +0 -1
  427. package/dist/utils/query/localDbQuery/index.d.ts.map +0 -1
  428. package/dist/utils/query/localDbQuery/index.js +0 -15
  429. package/dist/utils/query/localDbQuery/insert.d.ts +0 -10
  430. package/dist/utils/query/localDbQuery/insert.d.ts.map +0 -1
  431. package/dist/utils/query/localDbQuery/select.d.ts.map +0 -1
  432. package/dist/utils/query/localDbQuery/update.d.ts +0 -11
  433. package/dist/utils/query/localDbQuery/update.d.ts.map +0 -1
  434. package/dist/utils/query/localDbQuery/upsert.d.ts +0 -9
  435. package/dist/utils/query/localDbQuery/upsert.d.ts.map +0 -1
  436. package/dist/utils/query/remoteQuery/supabaseQuery.d.ts.map +0 -1
  437. package/dist/utils/refreshScreenCalls.d.ts.map +0 -1
  438. package/dist/utils/schema/createSyncStatus.d.ts +0 -17
  439. package/dist/utils/schema/createSyncStatus.d.ts.map +0 -1
  440. package/dist/utils/schema/wipeTables.d.ts.map +0 -1
  441. package/dist/utils/serializer.d.ts.map +0 -1
  442. package/dist/utils/supabaseClientErr.d.ts.map +0 -1
  443. package/dist/utils/supastashMode.d.ts.map +0 -1
  444. package/dist/utils/sync/getAllTables.d.ts.map +0 -1
  445. package/dist/utils/sync/pullFromRemote/getLastCreatedInfo.d.ts.map +0 -1
  446. package/dist/utils/sync/pullFromRemote/getLastDeletedInfo.d.ts.map +0 -1
  447. package/dist/utils/sync/pullFromRemote/getLastPulledInfo.d.ts.map +0 -1
  448. package/dist/utils/sync/pullFromRemote/helpers.d.ts.map +0 -1
  449. package/dist/utils/sync/pullFromRemote/pullData.d.ts.map +0 -1
  450. package/dist/utils/sync/pullFromRemote/pullDeletedData.d.ts +0 -12
  451. package/dist/utils/sync/pullFromRemote/pullDeletedData.d.ts.map +0 -1
  452. package/dist/utils/sync/pullFromRemote/pullDeletedData.js +0 -51
  453. package/dist/utils/sync/pullFromRemote/runLimitedConcurrency.d.ts.map +0 -1
  454. package/dist/utils/sync/pullFromRemote/stringifyFields.d.ts.map +0 -1
  455. package/dist/utils/sync/pullFromRemote/updateFilter.d.ts.map +0 -1
  456. package/dist/utils/sync/pullFromRemote/updateLocalDb.d.ts +0 -14
  457. package/dist/utils/sync/pullFromRemote/updateLocalDb.d.ts.map +0 -1
  458. package/dist/utils/sync/pullFromRemote/updateLocalDb.js +0 -200
  459. package/dist/utils/sync/pullFromRemote/validateFilters.d.ts +0 -5
  460. package/dist/utils/sync/pullFromRemote/validateFilters.d.ts.map +0 -1
  461. package/dist/utils/sync/pullFromRemote/validateFilters.js +0 -103
  462. package/dist/utils/sync/pushLocal/deleteChunks.d.ts.map +0 -1
  463. package/dist/utils/sync/pushLocal/getAllUnsyncedData.d.ts.map +0 -1
  464. package/dist/utils/sync/pushLocal/getAllUnsyncedData.js +0 -85
  465. package/dist/utils/sync/pushLocal/normalize.d.ts.map +0 -1
  466. package/dist/utils/sync/pushLocal/parseFields.d.ts.map +0 -1
  467. package/dist/utils/sync/pushLocal/sendUnsyncedToSupabase.d.ts.map +0 -1
  468. package/dist/utils/sync/pushLocal/uploadChunk.d.ts.map +0 -1
  469. package/dist/utils/sync/pushLocal/uploadHelpers.d.ts.map +0 -1
  470. package/dist/utils/sync/queryStatus.d.ts.map +0 -1
  471. package/dist/utils/sync/refreshTables.d.ts.map +0 -1
  472. package/dist/utils/sync/registration/syncCalls.d.ts.map +0 -1
  473. package/dist/utils/sync/status/filterKey.d.ts.map +0 -1
  474. package/dist/utils/sync/status/repo.d.ts +0 -10
  475. package/dist/utils/sync/status/repo.d.ts.map +0 -1
  476. package/dist/utils/sync/status/services.d.ts.map +0 -1
  477. package/dist/utils/sync/status/syncStatus.d.ts.map +0 -1
  478. package/dist/utils/sync/status/syncUpdate.d.ts.map +0 -1
  479. package/dist/utils/syncStatus.d.ts +0 -69
  480. package/dist/utils/syncStatus.d.ts.map +0 -1
  481. package/dist/utils/syncStatus.js +0 -129
  482. package/dist/utils/syncUpdate.d.ts +0 -7
  483. package/dist/utils/syncUpdate.d.ts.map +0 -1
  484. package/dist/utils/syncUpdate.js +0 -18
  485. package/dist/utils/tableValidator.d.ts.map +0 -1
  486. package/dist/utils/toggleSupastashMode.d.ts +0 -28
  487. package/dist/utils/toggleSupastashMode.d.ts.map +0 -1
  488. package/dist/utils/toggleSupastashMode.js +0 -46
  489. /package/dist/{utils → desktop/utils}/schema/wipeTables.d.ts +0 -0
  490. /package/dist/{hooks/syncEngine → desktop/utils/sync}/pullFromRemote/index.d.ts +0 -0
  491. /package/dist/{hooks/syncEngine → desktop/utils/sync}/pushLocal/index.d.ts +0 -0
  492. /package/dist/{utils → desktop/utils}/sync/pushLocal/sendUnsyncedToSupabase.d.ts +0 -0
  493. /package/dist/{constants → shared/constants}/syncDefaults.d.ts +0 -0
  494. /package/dist/{constants → shared/constants}/syncDefaults.js +0 -0
  495. /package/dist/{db → shared/db}/dbErrorMsg.d.ts +0 -0
  496. /package/dist/{hooks → shared/hooks}/syncStatus/index.js +0 -0
  497. /package/dist/{store → shared/store}/localCache.d.ts +0 -0
  498. /package/dist/{store → shared/store}/localCache.js +0 -0
  499. /package/dist/{store → shared/store}/syncCalls.d.ts +0 -0
  500. /package/dist/{store → shared/store}/syncCalls.js +0 -0
  501. /package/dist/{store → shared/store}/syncStatus.js +0 -0
  502. /package/dist/{store → shared/store}/tableFilters.js +0 -0
  503. /package/dist/{store → shared/store}/tableSchemaData.d.ts +0 -0
  504. /package/dist/{store → shared/store}/tableSchemaData.js +0 -0
  505. /package/dist/{types → shared/types}/index.js +0 -0
  506. /package/dist/{types → shared/types}/rnNitroSqlite.types.d.ts +0 -0
  507. /package/dist/{types → shared/types}/rnSqliteStorage.types.d.ts +0 -0
  508. /package/dist/{types → shared/types}/schemaManager.types.d.ts +0 -0
  509. /package/dist/{utils → shared/utils}/connection.d.ts +0 -0
  510. /package/dist/{utils → shared/utils}/events/eventBus.d.ts +0 -0
  511. /package/dist/{utils → shared/utils}/events/eventBus.js +0 -0
  512. /package/dist/{hooks/supastashData → shared/utils/fetchData}/addPayloadToUI.d.ts +0 -0
  513. /package/dist/{hooks/supastashData → shared/utils/fetchData}/addPayloadToUI.js +0 -0
  514. /package/dist/{utils → shared/utils}/fetchData/createTable.d.ts +0 -0
  515. /package/dist/{hooks/supastashData → shared/utils/fetchData}/dataState.d.ts +0 -0
  516. /package/dist/{utils → shared/utils}/fetchData/deleteData.d.ts +0 -0
  517. /package/dist/{utils → shared/utils}/fetchData/fetchLocalData.js +0 -0
  518. /package/dist/{utils → shared/utils}/fetchData/getKeyType.d.ts +0 -0
  519. /package/dist/{utils → shared/utils}/fetchData/getKeyType.js +0 -0
  520. /package/dist/{utils → shared/utils}/fetchData/realTimeCall.d.ts +0 -0
  521. /package/dist/{utils → shared/utils}/fetchData/realTimeManager.d.ts +0 -0
  522. /package/dist/{utils → shared/utils}/fetchData/realTimeManager.js +0 -0
  523. /package/dist/{utils → shared/utils}/fetchData/setDataInBatches.d.ts +0 -0
  524. /package/dist/{utils → shared/utils}/fetchData/setDataInBatches.js +0 -0
  525. /package/dist/{utils → shared/utils}/fetchData/snapShot.d.ts +0 -0
  526. /package/dist/{utils → shared/utils}/fetchData/snapShot.js +0 -0
  527. /package/dist/{utils → shared/utils}/fetchData/validatePayload.d.ts +0 -0
  528. /package/dist/{utils → shared/utils}/fetchData/validatePayload.js +0 -0
  529. /package/dist/{utils → shared/utils}/genUUID.d.ts +0 -0
  530. /package/dist/{utils → shared/utils}/genUUID.js +0 -0
  531. /package/dist/{utils → shared/utils}/getSafeValues.d.ts +0 -0
  532. /package/dist/{utils → shared/utils}/getSafeValues.js +0 -0
  533. /package/dist/{utils → shared/utils}/getTableSchema.d.ts +0 -0
  534. /package/dist/{utils → shared/utils}/getTableSchema.js +0 -0
  535. /package/dist/{utils → shared/utils}/query/builder/crud.js +0 -0
  536. /package/dist/{utils → shared/utils}/query/builder/mainQuery.d.ts +0 -0
  537. /package/dist/{utils → shared/utils}/query/helpers/mainQueryHelpers.d.ts +0 -0
  538. /package/dist/{utils → shared/utils}/query/helpers/queryValidator.d.ts +0 -0
  539. /package/dist/{utils → shared/utils}/query/helpers/queryValidator.js +0 -0
  540. /package/dist/{utils → shared/utils}/query/helpers/queueRemote.d.ts +0 -0
  541. /package/dist/{utils → shared/utils}/query/helpers/remoteDb/queryFilterBuilder.d.ts +0 -0
  542. /package/dist/{utils → shared/utils}/query/helpers/remoteDb/queryFilterBuilder.js +0 -0
  543. /package/dist/{utils → shared/utils}/query/helpers/remoteDb/queryUtils.d.ts +0 -0
  544. /package/dist/{utils → shared/utils}/query/helpers/remoteDb/queryUtils.js +0 -0
  545. /package/dist/{utils → shared/utils}/query/localDbQuery/index.d.ts +0 -0
  546. /package/dist/{utils → shared/utils}/query/remoteQuery/supabaseQuery.d.ts +0 -0
  547. /package/dist/{utils → shared/utils}/refreshScreenCalls.d.ts +0 -0
  548. /package/dist/{utils → shared/utils}/refreshScreenCalls.js +0 -0
  549. /package/dist/{utils → shared/utils}/serializer.d.ts +0 -0
  550. /package/dist/{utils → shared/utils}/serializer.js +0 -0
  551. /package/dist/{utils → shared/utils}/supabaseClientErr.d.ts +0 -0
  552. /package/dist/{utils → shared/utils}/supabaseClientErr.js +0 -0
  553. /package/dist/{utils → shared/utils}/supastashMode.d.ts +0 -0
  554. /package/dist/{utils → shared/utils}/supastashMode.js +0 -0
  555. /package/dist/{utils → shared/utils}/sync/getAllTables.d.ts +0 -0
  556. /package/dist/{utils → shared/utils}/sync/pullFromRemote/getLastCreatedInfo.d.ts +0 -0
  557. /package/dist/{utils → shared/utils}/sync/pullFromRemote/getLastCreatedInfo.js +0 -0
  558. /package/dist/{utils → shared/utils}/sync/pullFromRemote/getLastDeletedInfo.d.ts +0 -0
  559. /package/dist/{utils → shared/utils}/sync/pullFromRemote/getLastDeletedInfo.js +0 -0
  560. /package/dist/{utils → shared/utils}/sync/pullFromRemote/getLastPulledInfo.d.ts +0 -0
  561. /package/dist/{utils → shared/utils}/sync/pullFromRemote/getLastPulledInfo.js +0 -0
  562. /package/dist/{utils → shared/utils}/sync/pullFromRemote/runLimitedConcurrency.d.ts +0 -0
  563. /package/dist/{utils → shared/utils}/sync/pullFromRemote/stringifyFields.d.ts +0 -0
  564. /package/dist/{utils → shared/utils}/sync/pullFromRemote/stringifyFields.js +0 -0
  565. /package/dist/{utils → shared/utils}/sync/pushLocal/deleteChunks.d.ts +0 -0
  566. /package/dist/{utils → shared/utils}/sync/pushLocal/getAllUnsyncedData.d.ts +0 -0
  567. /package/dist/{utils → shared/utils}/sync/pushLocal/normalize.d.ts +0 -0
  568. /package/dist/{utils → shared/utils}/sync/pushLocal/normalize.js +0 -0
  569. /package/dist/{utils → shared/utils}/sync/pushLocal/parseFields.d.ts +0 -0
  570. /package/dist/{utils → shared/utils}/sync/pushLocal/parseFields.js +0 -0
  571. /package/dist/{utils → shared/utils}/sync/queryStatus.js +0 -0
  572. /package/dist/{utils → shared/utils}/sync/refreshTables.d.ts +0 -0
  573. /package/dist/{utils → shared/utils}/sync/refreshTables.js +0 -0
  574. /package/dist/{utils → shared/utils}/sync/registration/syncCalls.d.ts +0 -0
  575. /package/dist/{utils → shared/utils}/sync/status/syncUpdate.d.ts +0 -0
  576. /package/dist/{utils → shared/utils}/sync/status/syncUpdate.js +0 -0
  577. /package/dist/{utils → shared/utils}/tableValidator.d.ts +0 -0
  578. /package/dist/{utils → shared/utils}/tableValidator.js +0 -0
package/README.md CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/supastash.svg)](https://www.npmjs.com/package/supastash)
4
4
 
5
- **Offline-First Sync Engine for Supabase + React Native**
5
+ **Offline-First Sync Engine for Supabase + React Native & Desktop**
6
6
 
7
- > Supastash syncs your Supabase data with SQLite — live, offline, and conflict-safe. No boilerplate. Built for React Native and Expo.
7
+ > Supastash syncs your Supabase data with SQLite — live, offline, and conflict-safe. No boilerplate. Built for React Native, Expo, and (experimentally) Tauri desktop apps.
8
8
 
9
9
  ---
10
10
 
@@ -15,6 +15,21 @@
15
15
 
16
16
  ---
17
17
 
18
+ > 🔴 **NEW — Replication Mode**
19
+ >
20
+ > Improves sync ordering and prevents missed updates in distributed offline systems.
21
+ > ⚠️ Must read if your app supports multiple devices or long offline sessions.
22
+ >
23
+ > 👉 Learn more: https://0xzekea.github.io/supastash/docs/replication-mode
24
+
25
+ > 🖥️ **NEW (v0.2.1+, experimental) — Desktop Support via Tauri**
26
+ >
27
+ > Supastash now works in Tauri desktop apps using the `tauri-plugin-sql` adapter.
28
+ > Same sync engine, same API — now available beyond mobile.
29
+ > ⚠️ Desktop support is experimental. Expect rough edges and breaking changes.
30
+
31
+ ---
32
+
18
33
  ## ✨ Features
19
34
 
20
35
  - 🔁 **Two-way sync** (Supabase ↔ SQLite)
@@ -25,6 +40,7 @@
25
40
  - `expo-sqlite`
26
41
  - `react-native-nitro-sqlite`
27
42
  - `react-native-sqlite-storage` (beta)
43
+ - `tauri-plugin-sql` (desktop, experimental)
28
44
 
29
45
  - 🧠 Built-in:
30
46
 
@@ -51,6 +67,14 @@ npm install @supabase/supabase-js \
51
67
  react-native
52
68
  ```
53
69
 
70
+ > **Breaking change (v0.2.1+):** You must now pass `networkAdapter: NetInfo` explicitly in `configureSupastash`. Import it as:
71
+ >
72
+ > ```ts
73
+ > import * as NetInfo from "@react-native-community/netinfo"; // React Native only
74
+ > ```
75
+ >
76
+ > For Tauri desktop apps, `networkAdapter` is not required — network detection is handled natively.
77
+
54
78
  ### 🧱 Choose a SQLite Adapter
55
79
 
56
80
  Choose **only one**, based on your stack:
@@ -66,7 +90,7 @@ npm install react-native-nitro-sqlite
66
90
  npm install react-native-sqlite-storage
67
91
  ```
68
92
 
69
- > Match with `sqliteClientType`: `"expo"`, `"rn-nitro"`, or `"rn-storage"`
93
+ > Match with `sqliteClientType`: `"expo"`, `"rn-nitro"`, `"rn-storage"`, or `"tauri"` (experimental)
70
94
 
71
95
  ---
72
96
 
@@ -79,20 +103,22 @@ npm install react-native-sqlite-storage
79
103
  import { configureSupastash, defineLocalSchema } from "supastash";
80
104
  import { supabase } from "./supabase";
81
105
  import { openDatabaseAsync } from "expo-sqlite"; // or your adapter
106
+ import * as NetInfo from "@react-native-community/netinfo"; // react-native only
82
107
 
83
108
  configureSupastash({
84
109
  supabaseClient: supabase,
85
110
  dbName: "supastash_db",
86
111
  sqliteClient: { openDatabaseAsync },
87
112
  sqliteClientType: "expo",
113
+ networkAdapter: NetInfo,
88
114
 
89
115
  onSchemaInit: () => {
90
116
  defineLocalSchema("users", {
91
117
  id: "TEXT PRIMARY KEY",
92
118
  name: "TEXT",
93
119
  email: "TEXT",
94
- created_at: "TIMESTAMP",
95
- updated_at: "TIMESTAMP",
120
+ created_at: "TEXT NOT NULL",
121
+ updated_at: "TEXT NOT NULL",
96
122
  });
97
123
  },
98
124
 
@@ -173,9 +199,12 @@ useSupastashFilters({
173
199
  - Your Supabase tables must have:
174
200
 
175
201
  - A primary key `id` (string or UUID)
176
- - `timestamptz` columns for `created_at`, `updated_at`, and `deleted_at`
177
202
 
178
- - Run this SQL in Supabase to allow schema reflection:
203
+ - `timestamptz` columns for `created_at`, `updated_at`, and `deleted_at`
204
+ - If using `replicationMode: "server-side"`(Recommended), you must also add:
205
+ - `arrived_at timestamptz NOT NULL DEFAULT now()`
206
+ - A server trigger to enforce `arrived_at` updates
207
+ - Run this SQL in Supabase to allow schema reflection:
179
208
 
180
209
  ```sql
181
210
  create or replace function get_table_schema(table_name text)
@@ -206,7 +235,7 @@ const { data: orders } = useSupatashData("orders", {
206
235
 
207
236
  ## 🔄 How Sync Works
208
237
 
209
- - Tracks rows using `updated_at`, `deleted_at`, and `created_at`
238
+ - Tracks rows using a replication cursor (`updated_at` by default, or `arrived_at` in server-side mode)
210
239
  - Batches changes in background and retries failed ones
211
240
  - Local cache backed by Supabase
212
241
  - Runs pull/push jobs efficiently using staged task pipelines
@@ -0,0 +1,2 @@
1
+ export declare const subscribeToAppVisibility: (cb: () => void) => (() => void) | undefined;
2
+ //# sourceMappingURL=appstate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appstate.d.ts","sourceRoot":"","sources":["../../../src/desktop/adapters/appstate.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB,GAAI,IAAI,MAAM,IAAI,6BAQtD,CAAC"}
@@ -0,0 +1,10 @@
1
+ export const subscribeToAppVisibility = (cb) => {
2
+ if (typeof document !== "undefined") {
3
+ const handler = () => {
4
+ if (document.visibilityState === "visible")
5
+ cb();
6
+ };
7
+ document.addEventListener("visibilitychange", handler);
8
+ return () => document.removeEventListener("visibilitychange", handler);
9
+ }
10
+ };
@@ -0,0 +1,3 @@
1
+ import { CryptoAdapter } from "../../shared/types/adapters.types";
2
+ export declare const webCryptoAdapter: CryptoAdapter;
3
+ //# sourceMappingURL=crypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../src/desktop/adapters/crypto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAElE,eAAO,MAAM,gBAAgB,EAAE,aAmB9B,CAAC"}
@@ -0,0 +1,16 @@
1
+ export const webCryptoAdapter = {
2
+ async sha256(input) {
3
+ // Web Crypto (preferred)
4
+ if (globalThis.crypto?.subtle) {
5
+ const encoder = new TextEncoder();
6
+ const data = encoder.encode(input);
7
+ const hashBuffer = await crypto.subtle.digest("SHA-256", data);
8
+ return Array.from(new Uint8Array(hashBuffer))
9
+ .map((b) => b.toString(16).padStart(2, "0"))
10
+ .join("");
11
+ }
12
+ // Node fallback
13
+ const { createHash } = await import("crypto");
14
+ return createHash("sha256").update(input).digest("hex");
15
+ },
16
+ };
@@ -1,4 +1,4 @@
1
- import { LocalSchemaDefinition } from "../../types/schemaManager.types";
1
+ import { LocalSchemaDefinition } from "../../../shared/types/schemaManager.types";
2
2
  /**
3
3
  * 🧱 defineLocalSchema
4
4
  *
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/desktop/core/schemaManager/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAMlF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,qBAAqB,EAC7B,oBAAoB,UAAQ,iBAyF7B"}
@@ -1,6 +1,6 @@
1
- import { getSupastashDb } from "../../db/dbInitializer";
2
- import { clearSchemaCache } from "../../utils/getTableSchema";
3
- import log, { logError } from "../../utils/logs";
1
+ import { getSupastashDb } from "../../../shared/db/dbInitializer";
2
+ import { clearSchemaCache } from "../../../shared/utils/getTableSchema";
3
+ import log, { logError } from "../../../shared/utils/logs";
4
4
  import { resetSupastashSyncStatus } from "../../utils/sync/status/services";
5
5
  /**
6
6
  * 🧱 defineLocalSchema
@@ -1,4 +1,4 @@
1
- import { RealtimeOptions, SupastashDataResult } from "../../types/realtimeData.types";
1
+ import { RealtimeOptions, SupastashDataResult } from "../../shared/types/realtimeData.types";
2
2
  /**
3
3
  * @description
4
4
  * React hook to sync and subscribe to local-first data from a Supabase table using Supastash.
@@ -64,4 +64,4 @@ import { RealtimeOptions, SupastashDataResult } from "../../types/realtimeData.t
64
64
  * }
65
65
  */
66
66
  export declare function useSupastashData<R = any>(table: string, options?: RealtimeOptions): SupastashDataResult<R>;
67
- //# sourceMappingURL=index.d.ts.map
67
+ //# sourceMappingURL=supastashData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supastashData.d.ts","sourceRoot":"","sources":["../../../src/desktop/hooks/supastashData.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,eAAe,EACf,mBAAmB,EAEpB,MAAM,uCAAuC,CAAC;AAY/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,GAAG,GAAG,EACtC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,eAAoB,GAC5B,mBAAmB,CAAC,CAAC,CAAC,CA6GxB"}
@@ -0,0 +1,139 @@
1
+ import { useEffect, useMemo, useRef } from "react";
2
+ import { localCache } from "../../shared/store/localCache";
3
+ import { supastashEventBus } from "../../shared/utils/events/eventBus";
4
+ import useDataState from "../../shared/utils/fetchData/dataState";
5
+ import useRealtimeData from "../../shared/utils/fetchData/realTimeCall";
6
+ import { ReusedHelpers } from "../../shared/utils/reusedHelpers";
7
+ import { isTrulyNullish } from "../../shared/utils/serializer";
8
+ import { subscribeToAppVisibility } from "../adapters/appstate";
9
+ import useEventQueues from "../utils/fetchData/eventQueues";
10
+ import { fetchCalls } from "../utils/fetchData/fetchCalls";
11
+ const tableSubscriptions = new Map();
12
+ /**
13
+ * @description
14
+ * React hook to sync and subscribe to local-first data from a Supabase table using Supastash.
15
+ *
16
+ * Use `useSupastashData` when you want:
17
+ * - Offline-first reads from local SQLite.
18
+ * - Optional realtime syncing via Supabase `postgres_changes`.
19
+ * - Batching, lazy loading, and event-driven updates.
20
+ *
21
+ * @example
22
+ * ```tsx
23
+ * const { data, dataMap, trigger, cancel } = useSupastashData("users", {
24
+ * shouldFetch: !!session?.user,
25
+ * lazy: true,
26
+ * limit: 100,
27
+ * orderBy: "created_at",
28
+ * orderDesc: true,
29
+ * sqlFilter: [
30
+ * { column: "user_id", operator: "eq", value: 1 },
31
+ * { column: "is_active", operator: "eq", value: true },
32
+ * ],
33
+ * onInsert: (user) => console.log("New user:", user),
34
+ * });
35
+ *
36
+ * useEffect(() => {
37
+ * trigger(); // Manually start sync
38
+ * }, []);
39
+ * ```
40
+ *
41
+ * @param table - Name of the table (must match local SQLite schema).
42
+ * @param options - Configuration object.
43
+ *
44
+ * ## Fetch Options
45
+ * @param options.shouldFetch - If false, disables initial fetch. Defaults to `true`.
46
+ * @param options.lazy - If true, skips auto-fetch. Call `trigger()` manually.
47
+ * @param options.limit - Max records to load. Defaults to `200`.
48
+ * @param options.orderBy - Column to sort by. Defaults to `"created_at"`.
49
+ * @param options.orderDesc - If true, sorts descending. Defaults to `true`.
50
+ * @param options.sqlFilter - Optional SQL-level filters (`WHERE` clause).
51
+ * @param options.useFilterWhileSyncing - Applies filter during sync. Defaults to `true`.
52
+ * @param options.extraMapKey - Additional field to group `dataMap` by.
53
+ * @param options.clearCacheOnMount - Clears in-memory cache on mount. Defaults to `false`.
54
+ *
55
+ * ## Realtime Options
56
+ * @param options.realtime - Enables Supabase `postgres_changes` subscription. Defaults to `true`.
57
+ * @param options.filter - Realtime filter (column/operator/value).
58
+ * @param options.flushIntervalMs - Flush interval (in ms) for UI updates. Defaults to `100`.
59
+ *
60
+ * ## Event Callbacks
61
+ * @param options.onInsert - Called on `INSERT` event.
62
+ * @param options.onUpdate - Called on `UPDATE` event.
63
+ * @param options.onDelete - Called on `DELETE` event.
64
+ * @param options.onInsertAndUpdate - Called on both `INSERT` and `UPDATE`.
65
+ * @param options.onPushToRemote - Called after pushing a local change to Supabase.
66
+ *
67
+ * @returns {
68
+ * data: Array of records,
69
+ * dataMap: Map of records by ID,
70
+ * groupedBy: Optional maps grouped by field,
71
+ * trigger: Manually trigger sync,
72
+ * cancel: Cancel pending fetch or
73
+ * isFetching: Whether the data is being fetched
74
+ * }
75
+ */
76
+ export function useSupastashData(table, options = {}) {
77
+ const { filter, lazy = false, flushIntervalMs = 100, shouldFetch = true, realtime = true, clearCacheOnMount = false, } = options;
78
+ const hasTriggeredRef = useRef(false);
79
+ const unsub = useRef(null);
80
+ const { dataMap, data, groupedBy, } = useDataState(table);
81
+ const queueHandler = useEventQueues(table, options, flushIntervalMs);
82
+ const { triggerRefresh, trigger, cancel, initialFetchAndSync, isFetching } = fetchCalls(table, options, hasTriggeredRef);
83
+ const subKey = useMemo(() => `${table}:${ReusedHelpers.buildFilterString(filter)}`, [table, filter]);
84
+ const isAnyNullish = useMemo(() => {
85
+ if (!options.sqlFilter?.length)
86
+ return false;
87
+ const check = (filter) => {
88
+ if (!filter || typeof filter !== "object")
89
+ return false;
90
+ if ("or" in filter) {
91
+ return filter.or?.some(check) ?? false;
92
+ }
93
+ return isTrulyNullish(filter.value) && filter.operator !== "is";
94
+ };
95
+ return options.sqlFilter.some(check);
96
+ }, [options.sqlFilter]);
97
+ useEffect(() => {
98
+ let unsubscribeVisibility;
99
+ const handler = () => {
100
+ if (!isAnyNullish) {
101
+ void initialFetchAndSync();
102
+ }
103
+ };
104
+ if (!shouldFetch || (lazy && !hasTriggeredRef.current))
105
+ return;
106
+ if (!tableSubscriptions.get(subKey)) {
107
+ tableSubscriptions.set(subKey, true);
108
+ if (!isAnyNullish) {
109
+ initialFetchAndSync();
110
+ }
111
+ unsubscribeVisibility = subscribeToAppVisibility(handler);
112
+ supastashEventBus.on(`refresh:${table}`, triggerRefresh);
113
+ supastashEventBus.on(`refresh:all`, triggerRefresh);
114
+ }
115
+ else {
116
+ initialFetchAndSync();
117
+ }
118
+ return () => {
119
+ supastashEventBus.off?.(`refresh:${table}`, triggerRefresh);
120
+ supastashEventBus.off?.(`refresh:all`, triggerRefresh);
121
+ unsub.current?.();
122
+ tableSubscriptions.delete(subKey);
123
+ if (clearCacheOnMount) {
124
+ localCache.delete(table);
125
+ }
126
+ unsubscribeVisibility?.();
127
+ };
128
+ }, [lazy, shouldFetch, subKey, isAnyNullish]);
129
+ // TEMP
130
+ useRealtimeData(table, queueHandler, options, hasTriggeredRef.current, realtime);
131
+ return useMemo(() => ({
132
+ data,
133
+ dataMap,
134
+ trigger,
135
+ cancel,
136
+ groupedBy,
137
+ isFetching,
138
+ }), [data, isFetching]);
139
+ }
@@ -1,4 +1,4 @@
1
- import { SupastashHookReturn } from "../types/supastashConfig.types";
1
+ import { SupastashHookReturn } from "../../shared/types/supastashConfig.types";
2
2
  /**
3
3
  * React hook to initialize and manage Supastash.
4
4
  *
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supastashLogic.d.ts","sourceRoot":"","sources":["../../../src/desktop/hooks/supastashLogic.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAO/E;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAAC,IAAI,GAAE,OAAe,GAAG,mBAAmB,CAkFvE"}
@@ -1,13 +1,13 @@
1
1
  import { useEffect, useRef, useState } from "react";
2
- import { getSupastashConfig } from "../core/config";
3
- import { supastashDbErrorMsg } from "../db/dbErrorMsg";
4
- import { useSyncEngine } from "../hooks/syncEngine";
5
- import { localCache } from "../store/localCache";
6
- import { filterTracker, tableFilters, tableFiltersUsed, } from "../store/tableFilters";
7
- import { supastashEventBus } from "../utils/events/eventBus";
8
- import { logError, logWarn } from "../utils/logs";
9
- import { createSyncStatusTable } from "../utils/schema/createSyncStatus";
10
- import { supabaseClientErr } from "../utils/supabaseClientErr";
2
+ import { getSupastashConfig } from "../../shared/core/config";
3
+ import { supastashDbErrorMsg } from "../../shared/db/dbErrorMsg";
4
+ import { localCache } from "../../shared/store/localCache";
5
+ import { filterTracker, tableFilters, tableFiltersUsed, } from "../../shared/store/tableFilters";
6
+ import { supastashEventBus } from "../../shared/utils/events/eventBus";
7
+ import { logError, logWarn } from "../../shared/utils/logs";
8
+ import { createSyncStatusTable } from "../../shared/utils/schema/createSyncStatus";
9
+ import { supabaseClientErr } from "../../shared/utils/supabaseClientErr";
10
+ import { useSyncEngine } from "./syncEngine";
11
11
  /**
12
12
  * React hook to initialize and manage Supastash.
13
13
  *
@@ -58,13 +58,12 @@ export function useSupastash(lazy = false) {
58
58
  if (config.onSchemaInit) {
59
59
  await config.onSchemaInit();
60
60
  }
61
+ // If init fails, db will not be ready
62
+ setDbReady(true);
61
63
  }
62
64
  catch (error) {
63
65
  logError(`[Supastash] Error initializing: ${error}`);
64
66
  }
65
- finally {
66
- setDbReady(true);
67
- }
68
67
  }
69
68
  init();
70
69
  return () => {
@@ -25,4 +25,4 @@ export declare function syncTable(table: string): Promise<void>;
25
25
  * Force a global sync pass now (push then pull if due).
26
26
  */
27
27
  export declare function syncAllTables(): Promise<void>;
28
- //# sourceMappingURL=index.d.ts.map
28
+ //# sourceMappingURL=syncEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncEngine.d.ts","sourceRoot":"","sources":["../../../src/desktop/hooks/syncEngine.ts"],"names":[],"mappings":"AA6BA;;;;;GAKG;AACH,wBAAsB,OAAO,CAAC,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCnE;AAuDD;;;;;GAKG;AACH,wBAAgB,aAAa;;;EA2D5B;AAMD;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgC5D;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAEnD"}
@@ -0,0 +1,233 @@
1
+ import { useEffect, useRef } from "react";
2
+ import { getSupastashConfig } from "../../shared/core/config";
3
+ import { syncCalls } from "../../shared/store/syncCalls";
4
+ import { isSyncGateClosed } from "../../shared/store/syncStatus";
5
+ import { tableFilters } from "../../shared/store/tableFilters";
6
+ import { isOnline } from "../../shared/utils/connection";
7
+ import log from "../../shared/utils/logs";
8
+ import { subscribeToAppVisibility } from "../adapters/appstate";
9
+ import { pullFromRemote as doPullFromRemote } from "../utils/sync/pullFromRemote";
10
+ import { updateLocalDb } from "../utils/sync/pullFromRemote/updateLocalDb";
11
+ import { pushLocalData as doPushLocalData } from "../utils/sync/pushLocal";
12
+ import { pushLocalDataToRemote } from "../utils/sync/pushLocal/sendUnsyncedToSupabase";
13
+ // -----------------------------
14
+ // Module-scoped state & tunables
15
+ // -----------------------------
16
+ let isSyncing = false;
17
+ let isPushing = false;
18
+ let isPulling = false;
19
+ let lastPullAt = 0;
20
+ let lastPushAt = 0;
21
+ const MIN_FOREGROUND_GAP = 5000; // ms
22
+ // -----------------------------
23
+ // Core orchestration
24
+ // -----------------------------
25
+ /**
26
+ * Push then (optionally) pull.
27
+ * - Single flight across entire app via module-scoped flags.
28
+ * - Both directions gated on connectivity.
29
+ * - "force" ignores pull cadence timing.
30
+ */
31
+ export async function syncAll(force = false) {
32
+ const isGateClosed = isSyncGateClosed();
33
+ if (isGateClosed)
34
+ return;
35
+ if (isSyncing)
36
+ return;
37
+ if (!(await isOnline()))
38
+ return;
39
+ // If in ghost mode, don't sync
40
+ const cfg = getSupastashConfig();
41
+ if (cfg.supastashMode === "ghost")
42
+ return;
43
+ isSyncing = true;
44
+ const started = Date.now();
45
+ try {
46
+ // PUSH
47
+ if (cfg.syncEngine?.push) {
48
+ await pushLocalDataSafe();
49
+ }
50
+ // PULL
51
+ if (cfg.syncEngine?.pull) {
52
+ const pullInterval = cfg.pollingInterval?.pull ?? 30000;
53
+ const now = Date.now();
54
+ const due = force || now - lastPullAt >= pullInterval;
55
+ if (due) {
56
+ await pullFromRemoteSafe();
57
+ lastPullAt = now;
58
+ }
59
+ }
60
+ }
61
+ catch (e) {
62
+ log("[Supastash] Error in syncAll", {
63
+ msg: String(e),
64
+ code: e?.code ?? e?.name ?? "UNKNOWN",
65
+ });
66
+ }
67
+ finally {
68
+ isSyncing = false;
69
+ log(`[Supastash] syncAll finished in ${Date.now() - started}ms`);
70
+ }
71
+ }
72
+ // -----------------------------
73
+ // Directional helpers
74
+ // -----------------------------
75
+ async function pushLocalDataSafe() {
76
+ if (isPushing)
77
+ return;
78
+ if (!(await isOnline()))
79
+ return;
80
+ const cfg = getSupastashConfig();
81
+ if (!cfg.syncEngine?.push)
82
+ return;
83
+ // If in ghost mode, don't push
84
+ if (cfg.supastashMode === "ghost")
85
+ return;
86
+ isPushing = true;
87
+ try {
88
+ await doPushLocalData();
89
+ lastPushAt = Date.now();
90
+ }
91
+ catch (e) {
92
+ log("[Supastash] push error", {
93
+ msg: String(e),
94
+ code: e?.code ?? e?.name ?? "UNKNOWN",
95
+ });
96
+ }
97
+ finally {
98
+ isPushing = false;
99
+ }
100
+ }
101
+ async function pullFromRemoteSafe() {
102
+ if (isPulling)
103
+ return;
104
+ if (!(await isOnline()))
105
+ return;
106
+ // If in ghost mode, don't pull
107
+ const cfg = getSupastashConfig();
108
+ if (cfg.supastashMode === "ghost")
109
+ return;
110
+ if (!cfg.syncEngine?.pull)
111
+ return;
112
+ isPulling = true;
113
+ try {
114
+ await doPullFromRemote();
115
+ lastPullAt = Date.now();
116
+ }
117
+ catch (e) {
118
+ log("[Supastash] pull error", {
119
+ msg: String(e),
120
+ code: e?.code ?? e?.name ?? "UNKNOWN",
121
+ });
122
+ }
123
+ finally {
124
+ isPulling = false;
125
+ }
126
+ }
127
+ // -----------------------------
128
+ // React hook: timer & lifecycle management
129
+ // -----------------------------
130
+ /**
131
+ * Hook to start/stop the periodic sync engine.
132
+ * - Staggers push & pull timers.
133
+ * - Debounced foreground trigger.
134
+ * - Shares module-level single-flight guards with syncAll().
135
+ */
136
+ export function useSyncEngine() {
137
+ // Timers & lifecycle
138
+ const intervalRefPush = useRef(null);
139
+ const intervalRefPull = useRef(null);
140
+ const unsubscribeVisibility = useRef(undefined);
141
+ // Debounce foreground re-entry
142
+ const lastForeground = useRef(0);
143
+ function startSync() {
144
+ if (intervalRefPush.current || intervalRefPull.current) {
145
+ return;
146
+ }
147
+ // Kick a one-shot global sync on start
148
+ void syncAll(true);
149
+ const cfg = getSupastashConfig();
150
+ const pushEvery = cfg.pollingInterval?.push ?? 30000;
151
+ const pullEvery = cfg.pollingInterval?.pull ?? 30000;
152
+ // Push ticker
153
+ intervalRefPush.current = setInterval(() => {
154
+ void pushLocalDataSafe();
155
+ }, pushEvery);
156
+ // Pull ticker
157
+ intervalRefPull.current = setInterval(() => {
158
+ void pullFromRemoteSafe();
159
+ }, pullEvery + 500);
160
+ // Foreground trigger
161
+ unsubscribeVisibility.current = subscribeToAppVisibility(() => {
162
+ if (document.visibilityState === "visible") {
163
+ const now = Date.now();
164
+ if (now - lastForeground.current < MIN_FOREGROUND_GAP)
165
+ return;
166
+ lastForeground.current = now;
167
+ void syncAll(true);
168
+ }
169
+ });
170
+ }
171
+ function stopSync() {
172
+ if (intervalRefPush.current) {
173
+ clearInterval(intervalRefPush.current);
174
+ intervalRefPush.current = null;
175
+ }
176
+ if (intervalRefPull.current) {
177
+ clearInterval(intervalRefPull.current);
178
+ intervalRefPull.current = null;
179
+ }
180
+ unsubscribeVisibility.current?.();
181
+ unsubscribeVisibility.current = undefined;
182
+ }
183
+ // Auto-cleanup if the hook lives in a component lifecycle
184
+ useEffect(() => stopSync, []);
185
+ return { startSync, stopSync };
186
+ }
187
+ // -----------------------------
188
+ // Manual triggers
189
+ // -----------------------------
190
+ /**
191
+ * Manually sync a single table (pull then push for that table).
192
+ * - Uses table-specific handlers from syncCalls if provided.
193
+ * - Respects configured filters when enabled.
194
+ */
195
+ export async function syncTable(table) {
196
+ if (!(await isOnline()))
197
+ return;
198
+ const cfg = getSupastashConfig();
199
+ const { useFiltersFromStore = true } = cfg?.syncEngine || {};
200
+ const filter = useFiltersFromStore ? tableFilters.get(table) : undefined;
201
+ // Pull
202
+ if (cfg.syncEngine?.pull) {
203
+ try {
204
+ await updateLocalDb(table, filter, syncCalls.get(table)?.pull);
205
+ }
206
+ catch (e) {
207
+ log("[Supastash] syncTable pull error", {
208
+ table,
209
+ msg: String(e),
210
+ code: e?.code ?? e?.name ?? "UNKNOWN",
211
+ });
212
+ }
213
+ }
214
+ // Push (use table handler if present)
215
+ if (cfg.syncEngine?.push) {
216
+ try {
217
+ await pushLocalDataToRemote(table, syncCalls.get(table)?.push);
218
+ }
219
+ catch (e) {
220
+ log("[Supastash] syncTable push error", {
221
+ table,
222
+ msg: String(e),
223
+ code: e?.code ?? e?.name ?? "UNKNOWN",
224
+ });
225
+ }
226
+ }
227
+ }
228
+ /**
229
+ * Force a global sync pass now (push then pull if due).
230
+ */
231
+ export async function syncAllTables() {
232
+ await syncAll(true);
233
+ }
@@ -0,0 +1,28 @@
1
+ export { configureSupastash, getSupastashConfig } from "../shared/core/config";
2
+ export { getSupastashDb } from "../shared/db/dbInitializer";
3
+ export { useSupastashFilters } from "../shared/hooks/supastashFilters";
4
+ export { useSupastashSyncStatus } from "../shared/hooks/syncStatus";
5
+ export { closeSyncGate, isSyncGateClosed, openSyncGate, } from "../shared/store/syncStatus";
6
+ export { supastashEventBus } from "../shared/utils/events/eventBus";
7
+ export { supastash } from "../shared/utils/query/builder";
8
+ export { refreshScreen } from "../shared/utils/refreshScreenCalls";
9
+ export { getSupastashRuntimeMode, reinitializeSupastash, } from "../shared/utils/supastashMode";
10
+ export { getAllTables } from "../shared/utils/sync/getAllTables";
11
+ export { updateFilters } from "../shared/utils/sync/pullFromRemote/updateFilter";
12
+ export { refreshAllTables, refreshTable, refreshTableWithPayload, } from "../shared/utils/sync/refreshTables";
13
+ export { clearSyncCalls, getAllSyncTables, getSyncCall, registerSyncCall, unregisterSyncCall, } from "../shared/utils/sync/registration/syncCalls";
14
+ export { defineLocalSchema } from "./core/schemaManager";
15
+ export { useSupastashData } from "./hooks/supastashData";
16
+ export { useSupastash } from "./hooks/supastashLogic";
17
+ export { syncAllTables, syncTable } from "./hooks/syncEngine";
18
+ export { dropAllTables, dropTable, wipeAllTables, wipeOldDataForAllTables, wipeOldDataForATable, wipeTable, } from "./utils/schema/wipeTables";
19
+ export { fetchOlderPage } from "./utils/sync/pullFromRemote/fetchOlder";
20
+ export { updateLocalDb, upsertChunkData, upsertData, } from "./utils/sync/pullFromRemote/updateLocalDb";
21
+ export { clearAllLocalDeleteLog, clearAllLocalSyncLog, clearLocalDeleteLog, clearLocalSyncLog, clearSyncLog, getLocalDeleteLog, getSyncLog, resetSyncLog, setLocalDeleteLog, setLocalSyncLog, setSyncLog, } from "./utils/sync/status/syncStatus";
22
+ export type { CrudMethods } from "../shared/types/query.types";
23
+ export type { RealtimeOptions, SupastashDataResult, SupastashFilter, } from "../shared/types/realtimeData.types";
24
+ export type { ExpoSQLiteClient, RNSqliteNitroClient, RNStorageSQLiteClient, SupastashConfig, SupastashHookReturn, SupastashSQLiteClientTypes, SupastashSQLiteDatabase, SupastashSQLiteExecutor, TauriSQLiteClient, } from "../shared/types/supastashConfig.types";
25
+ export type { LocalSchemaDefinition } from "../shared/types/schemaManager.types";
26
+ export type { SyncInfo } from "../shared/types/syncEngine.types";
27
+ export type { SupastashClient, SupastashTransactionClient, } from "../shared/utils/query/builder";
28
+ //# sourceMappingURL=index.d.ts.map