@powersync/web 0.0.0-dev-20260708104358 → 0.0.0-dev-20260917074240

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 (267) hide show
  1. package/README.md +1 -11
  2. package/bin/powersync.cjs +1 -1
  3. package/dist/index.react_native_web.js +2095 -0
  4. package/dist/index.react_native_web.js.map +1 -0
  5. package/dist/worker/AccessHandlePoolVFS-BPUHfZME.js +2 -0
  6. package/dist/worker/AccessHandlePoolVFS-BPUHfZME.js.map +1 -0
  7. package/dist/worker/FacadeVFS-d1ZDvud7.js +2 -0
  8. package/dist/worker/FacadeVFS-d1ZDvud7.js.map +1 -0
  9. package/dist/worker/IDBBatchAtomicVFS-DbkDb777.js +2 -0
  10. package/dist/worker/IDBBatchAtomicVFS-DbkDb777.js.map +1 -0
  11. package/dist/worker/MemoryVFS-DVJL5F8j.js +2 -0
  12. package/dist/worker/MemoryVFS-DVJL5F8j.js.map +1 -0
  13. package/dist/worker/OPFSCoopSyncVFS-BgTiWPfa.js +2 -0
  14. package/dist/worker/OPFSCoopSyncVFS-BgTiWPfa.js.map +1 -0
  15. package/dist/worker/OPFSWriteAheadVFS-Rt5CGCZP.js +2 -0
  16. package/dist/worker/OPFSWriteAheadVFS-Rt5CGCZP.js.map +1 -0
  17. package/dist/worker/assets/mc-wa-sqlite-BHScYYZw.wasm +0 -0
  18. package/dist/worker/assets/mc-wa-sqlite-async-DdlQmAUV.wasm +0 -0
  19. package/dist/worker/assets/wa-sqlite-CIxTmRHQ.wasm +0 -0
  20. package/dist/worker/assets/wa-sqlite-async-zc68fxQq.wasm +0 -0
  21. package/dist/worker/mc-wa-sqlite-PubB6u8c.js +2 -0
  22. package/dist/worker/mc-wa-sqlite-PubB6u8c.js.map +1 -0
  23. package/dist/worker/mc-wa-sqlite-async-DJG_ANKO.js +2 -0
  24. package/dist/worker/mc-wa-sqlite-async-DJG_ANKO.js.map +1 -0
  25. package/dist/worker/wa-sqlite-D1_4mGs8.js +2 -0
  26. package/dist/worker/wa-sqlite-D1_4mGs8.js.map +1 -0
  27. package/dist/worker/wa-sqlite-async-BxkwNY-2.js +2 -0
  28. package/dist/worker/wa-sqlite-async-BxkwNY-2.js.map +1 -0
  29. package/dist/worker/websockets-Q8W_lerF.js +9 -0
  30. package/dist/worker/websockets-Q8W_lerF.js.map +1 -0
  31. package/dist/worker/worker.js +7 -0
  32. package/dist/worker/worker.js.map +1 -0
  33. package/lib/attachments/IndexDBFileSystemAdapter.js.map +1 -0
  34. package/lib/{src/db → db}/NavigatorTriggerClaimManager.d.ts +1 -1
  35. package/lib/db/NavigatorTriggerClaimManager.js.map +1 -0
  36. package/lib/db/PowerSyncDatabase.d.ts +66 -0
  37. package/lib/{src/db → db}/PowerSyncDatabase.js +60 -79
  38. package/lib/db/PowerSyncDatabase.js.map +1 -0
  39. package/lib/db/adapters/AsyncWebAdapter.d.ts +32 -0
  40. package/lib/{src/db → db}/adapters/AsyncWebAdapter.js +18 -69
  41. package/lib/db/adapters/AsyncWebAdapter.js.map +1 -0
  42. package/lib/db/adapters/SSRDBAdapter.d.ts +17 -0
  43. package/lib/db/adapters/SSRDBAdapter.js +37 -0
  44. package/lib/db/adapters/SSRDBAdapter.js.map +1 -0
  45. package/lib/{src/db → db}/adapters/WebDBAdapter.d.ts +1 -1
  46. package/lib/db/adapters/WebDBAdapter.js.map +1 -0
  47. package/lib/db/adapters/acquireFromPool.d.ts +7 -0
  48. package/lib/db/adapters/acquireFromPool.js +60 -0
  49. package/lib/db/adapters/acquireFromPool.js.map +1 -0
  50. package/lib/db/adapters/memory-pool/client.d.ts +70 -0
  51. package/lib/db/adapters/memory-pool/client.js +269 -0
  52. package/lib/db/adapters/memory-pool/client.js.map +1 -0
  53. package/lib/db/adapters/memory-pool/shared.d.ts +51 -0
  54. package/lib/db/adapters/memory-pool/shared.js +16 -0
  55. package/lib/db/adapters/memory-pool/shared.js.map +1 -0
  56. package/lib/db/adapters/memory-pool/vfs.d.ts +19 -0
  57. package/lib/db/adapters/memory-pool/vfs.js +247 -0
  58. package/lib/db/adapters/memory-pool/vfs.js.map +1 -0
  59. package/lib/db/adapters/memory-pool/worker.js +45 -0
  60. package/lib/db/adapters/memory-pool/worker.js.map +1 -0
  61. package/lib/db/adapters/options.d.ts +94 -0
  62. package/lib/db/adapters/options.js +6 -0
  63. package/lib/db/adapters/options.js.map +1 -0
  64. package/lib/db/adapters/resolveAndValidateOptions.d.ts +13 -0
  65. package/lib/db/adapters/resolveAndValidateOptions.js +41 -0
  66. package/lib/db/adapters/resolveAndValidateOptions.js.map +1 -0
  67. package/lib/{src/db → db}/adapters/wa-sqlite/ConcurrentConnection.d.ts +3 -4
  68. package/lib/{src/db → db}/adapters/wa-sqlite/ConcurrentConnection.js +2 -2
  69. package/lib/db/adapters/wa-sqlite/ConcurrentConnection.js.map +1 -0
  70. package/lib/{src/db → db}/adapters/wa-sqlite/DatabaseClient.d.ts +4 -4
  71. package/lib/{src/db → db}/adapters/wa-sqlite/DatabaseClient.js +11 -37
  72. package/lib/db/adapters/wa-sqlite/DatabaseClient.js.map +1 -0
  73. package/lib/{src/db → db}/adapters/wa-sqlite/DatabaseServer.d.ts +5 -5
  74. package/lib/{src/db → db}/adapters/wa-sqlite/DatabaseServer.js +14 -7
  75. package/lib/db/adapters/wa-sqlite/DatabaseServer.js.map +1 -0
  76. package/lib/{src/db → db}/adapters/wa-sqlite/RawSqliteConnection.d.ts +30 -12
  77. package/lib/{src/db → db}/adapters/wa-sqlite/RawSqliteConnection.js +70 -16
  78. package/lib/db/adapters/wa-sqlite/RawSqliteConnection.js.map +1 -0
  79. package/lib/db/adapters/wa-sqlite/StatementCache.d.ts +16 -0
  80. package/lib/db/adapters/wa-sqlite/StatementCache.js +44 -0
  81. package/lib/db/adapters/wa-sqlite/StatementCache.js.map +1 -0
  82. package/lib/db/adapters/wa-sqlite/WASQLiteOpenFactory.d.ts +18 -0
  83. package/lib/db/adapters/wa-sqlite/WASQLiteOpenFactory.js +140 -0
  84. package/lib/db/adapters/wa-sqlite/WASQLiteOpenFactory.js.map +1 -0
  85. package/lib/{src/db → db}/adapters/wa-sqlite/vfs.d.ts +9 -2
  86. package/lib/{src/db → db}/adapters/wa-sqlite/vfs.js +6 -6
  87. package/lib/db/adapters/wa-sqlite/vfs.js.map +1 -0
  88. package/lib/{src/db → db}/sync/SSRWebStreamingSyncImplementation.d.ts +5 -16
  89. package/lib/{src/db → db}/sync/SSRWebStreamingSyncImplementation.js +7 -23
  90. package/lib/db/sync/SSRWebStreamingSyncImplementation.js.map +1 -0
  91. package/lib/{src/db → db}/sync/SharedWebStreamingSyncImplementation.d.ts +15 -15
  92. package/lib/{src/db → db}/sync/SharedWebStreamingSyncImplementation.js +38 -70
  93. package/lib/db/sync/SharedWebStreamingSyncImplementation.js.map +1 -0
  94. package/lib/db/sync/TabLocalStreamingSyncImplementation.d.ts +19 -0
  95. package/lib/db/sync/TabLocalStreamingSyncImplementation.js +70 -0
  96. package/lib/db/sync/TabLocalStreamingSyncImplementation.js.map +1 -0
  97. package/lib/db/sync/WebRemote.d.ts +10 -0
  98. package/lib/db/sync/WebRemote.js +33 -0
  99. package/lib/db/sync/WebRemote.js.map +1 -0
  100. package/lib/{src/db → db}/sync/WebStreamingSyncImplementation.d.ts +2 -4
  101. package/lib/{src/db → db}/sync/WebStreamingSyncImplementation.js +3 -2
  102. package/lib/db/sync/WebStreamingSyncImplementation.js.map +1 -0
  103. package/lib/db/sync/userAgent.js.map +1 -0
  104. package/lib/{src/index.d.ts → index.d.ts} +1 -3
  105. package/lib/{src/index.js → index.js} +1 -3
  106. package/lib/index.js.map +1 -0
  107. package/lib/shared/navigator.js.map +1 -0
  108. package/lib/shared/tab_close_signal.js.map +1 -0
  109. package/lib/worker/SharedWorkerConnectionRequest.d.ts +5 -0
  110. package/lib/worker/SharedWorkerConnectionRequest.js +2 -0
  111. package/lib/worker/SharedWorkerConnectionRequest.js.map +1 -0
  112. package/lib/worker/client.d.ts +17 -0
  113. package/lib/worker/client.js +90 -0
  114. package/lib/worker/client.js.map +1 -0
  115. package/lib/worker/db/MultiDatabaseServer.d.ts +21 -0
  116. package/lib/{src/worker → worker}/db/MultiDatabaseServer.js +45 -24
  117. package/lib/worker/db/MultiDatabaseServer.js.map +1 -0
  118. package/lib/worker/sync/AbstractSharedSyncClientProvider.d.ts +14 -0
  119. package/lib/worker/sync/AbstractSharedSyncClientProvider.js.map +1 -0
  120. package/lib/worker/sync/BroadcastLogger.d.ts +27 -0
  121. package/lib/worker/sync/BroadcastLogger.js +65 -0
  122. package/lib/worker/sync/BroadcastLogger.js.map +1 -0
  123. package/lib/{src/worker → worker}/sync/SharedSyncImplementation.d.ts +14 -25
  124. package/lib/{src/worker → worker}/sync/SharedSyncImplementation.js +140 -107
  125. package/lib/worker/sync/SharedSyncImplementation.js.map +1 -0
  126. package/lib/{src/worker → worker}/sync/WorkerClient.d.ts +4 -4
  127. package/lib/{src/worker → worker}/sync/WorkerClient.js +5 -5
  128. package/lib/worker/sync/WorkerClient.js.map +1 -0
  129. package/lib/worker/worker.d.ts +1 -0
  130. package/lib/worker/worker.js +34 -0
  131. package/lib/worker/worker.js.map +1 -0
  132. package/package.json +31 -32
  133. package/src/db/NavigatorTriggerClaimManager.ts +1 -1
  134. package/src/db/PowerSyncDatabase.ts +96 -144
  135. package/src/db/adapters/AsyncWebAdapter.ts +29 -86
  136. package/src/db/adapters/SSRDBAdapter.ts +14 -64
  137. package/src/db/adapters/WebDBAdapter.ts +1 -1
  138. package/src/db/adapters/acquireFromPool.ts +73 -0
  139. package/src/db/adapters/memory-pool/client.ts +367 -0
  140. package/src/db/adapters/memory-pool/shared.ts +79 -0
  141. package/src/db/adapters/memory-pool/vfs.ts +293 -0
  142. package/src/db/adapters/memory-pool/worker.ts +53 -0
  143. package/src/db/adapters/options.ts +108 -0
  144. package/src/db/adapters/resolveAndValidateOptions.ts +49 -0
  145. package/src/db/adapters/wa-sqlite/ConcurrentConnection.ts +4 -5
  146. package/src/db/adapters/wa-sqlite/DatabaseClient.ts +20 -56
  147. package/src/db/adapters/wa-sqlite/DatabaseServer.ts +18 -12
  148. package/src/db/adapters/wa-sqlite/RawSqliteConnection.ts +108 -30
  149. package/src/db/adapters/wa-sqlite/StatementCache.ts +50 -0
  150. package/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.ts +82 -125
  151. package/src/db/adapters/wa-sqlite/vfs.ts +13 -8
  152. package/src/db/sync/SSRWebStreamingSyncImplementation.ts +8 -36
  153. package/src/db/sync/SharedWebStreamingSyncImplementation.ts +47 -82
  154. package/src/db/sync/TabLocalStreamingSyncImplementation.ts +90 -0
  155. package/src/db/sync/WebRemote.ts +23 -26
  156. package/src/db/sync/WebStreamingSyncImplementation.ts +4 -5
  157. package/src/index.ts +1 -3
  158. package/src/worker/SharedWorkerConnectionRequest.ts +6 -0
  159. package/src/worker/client.ts +121 -0
  160. package/src/worker/db/MultiDatabaseServer.ts +59 -33
  161. package/src/worker/sync/AbstractSharedSyncClientProvider.ts +5 -10
  162. package/src/worker/sync/BroadcastLogger.ts +35 -103
  163. package/src/worker/sync/SharedSyncImplementation.ts +197 -138
  164. package/src/worker/sync/WorkerClient.ts +8 -8
  165. package/src/worker/worker.ts +38 -0
  166. package/dist/2075a31bb151adbb9767.wasm +0 -0
  167. package/dist/3322bc84de986b63c2cd.wasm +0 -0
  168. package/dist/8e97452e297be23b5e50.wasm +0 -0
  169. package/dist/fbc178b70d530e8ce02b.wasm +0 -0
  170. package/dist/index.umd.js +0 -7821
  171. package/dist/index.umd.js.map +0 -1
  172. package/dist/worker/SharedSyncImplementation.umd.js +0 -16139
  173. package/dist/worker/SharedSyncImplementation.umd.js.map +0 -1
  174. package/dist/worker/WASQLiteDB.umd.js +0 -17434
  175. package/dist/worker/WASQLiteDB.umd.js.map +0 -1
  176. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_mc-wa-s-9af0a7.umd.js +0 -31
  177. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_mc-wa-s-9af0a7.umd.js.map +0 -1
  178. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_mc-wa-s-bbf5a9.umd.js +0 -31
  179. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_mc-wa-s-bbf5a9.umd.js.map +0 -1
  180. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_wa-sqli-c26e0f.umd.js +0 -31
  181. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_wa-sqli-c26e0f.umd.js.map +0 -1
  182. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_wa-sqlite_mjs.umd.js +0 -31
  183. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_wa-sqlite_mjs.umd.js.map +0 -1
  184. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-2fb422.umd.js +0 -3562
  185. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-2fb422.umd.js.map +0 -1
  186. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-833585.umd.js +0 -1400
  187. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-833585.umd.js.map +0 -1
  188. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-96fb23.umd.js +0 -2478
  189. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-96fb23.umd.js.map +0 -1
  190. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-c89911.umd.js +0 -1681
  191. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-c89911.umd.js.map +0 -1
  192. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-ec4eb1.umd.js +0 -1820
  193. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-ec4eb1.umd.js.map +0 -1
  194. package/lib/package.json +0 -91
  195. package/lib/src/attachments/IndexDBFileSystemAdapter.js.map +0 -1
  196. package/lib/src/db/NavigatorTriggerClaimManager.js.map +0 -1
  197. package/lib/src/db/PowerSyncDatabase.d.ts +0 -78
  198. package/lib/src/db/PowerSyncDatabase.js.map +0 -1
  199. package/lib/src/db/adapters/AbstractWebPowerSyncDatabaseOpenFactory.d.ts +0 -23
  200. package/lib/src/db/adapters/AbstractWebPowerSyncDatabaseOpenFactory.js +0 -27
  201. package/lib/src/db/adapters/AbstractWebPowerSyncDatabaseOpenFactory.js.map +0 -1
  202. package/lib/src/db/adapters/AsyncWebAdapter.d.ts +0 -50
  203. package/lib/src/db/adapters/AsyncWebAdapter.js.map +0 -1
  204. package/lib/src/db/adapters/SSRDBAdapter.d.ts +0 -30
  205. package/lib/src/db/adapters/SSRDBAdapter.js +0 -69
  206. package/lib/src/db/adapters/SSRDBAdapter.js.map +0 -1
  207. package/lib/src/db/adapters/WebDBAdapter.js.map +0 -1
  208. package/lib/src/db/adapters/wa-sqlite/ConcurrentConnection.js.map +0 -1
  209. package/lib/src/db/adapters/wa-sqlite/DatabaseClient.js.map +0 -1
  210. package/lib/src/db/adapters/wa-sqlite/DatabaseServer.js.map +0 -1
  211. package/lib/src/db/adapters/wa-sqlite/RawSqliteConnection.js.map +0 -1
  212. package/lib/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.d.ts +0 -45
  213. package/lib/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.js +0 -146
  214. package/lib/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.js.map +0 -1
  215. package/lib/src/db/adapters/wa-sqlite/WASQLitePowerSyncDatabaseOpenFactory.d.ts +0 -15
  216. package/lib/src/db/adapters/wa-sqlite/WASQLitePowerSyncDatabaseOpenFactory.js +0 -22
  217. package/lib/src/db/adapters/wa-sqlite/WASQLitePowerSyncDatabaseOpenFactory.js.map +0 -1
  218. package/lib/src/db/adapters/wa-sqlite/vfs.js.map +0 -1
  219. package/lib/src/db/adapters/web-sql-flags.d.ts +0 -92
  220. package/lib/src/db/adapters/web-sql-flags.js +0 -37
  221. package/lib/src/db/adapters/web-sql-flags.js.map +0 -1
  222. package/lib/src/db/sync/SSRWebStreamingSyncImplementation.js.map +0 -1
  223. package/lib/src/db/sync/SharedWebStreamingSyncImplementation.js.map +0 -1
  224. package/lib/src/db/sync/WebRemote.d.ts +0 -7
  225. package/lib/src/db/sync/WebRemote.js +0 -33
  226. package/lib/src/db/sync/WebRemote.js.map +0 -1
  227. package/lib/src/db/sync/WebStreamingSyncImplementation.js.map +0 -1
  228. package/lib/src/db/sync/userAgent.js.map +0 -1
  229. package/lib/src/index.js.map +0 -1
  230. package/lib/src/shared/navigator.js.map +0 -1
  231. package/lib/src/shared/tab_close_signal.js.map +0 -1
  232. package/lib/src/worker/db/MultiDatabaseServer.d.ts +0 -17
  233. package/lib/src/worker/db/MultiDatabaseServer.js.map +0 -1
  234. package/lib/src/worker/db/WASQLiteDB.worker.d.ts +0 -4
  235. package/lib/src/worker/db/WASQLiteDB.worker.js +0 -31
  236. package/lib/src/worker/db/WASQLiteDB.worker.js.map +0 -1
  237. package/lib/src/worker/db/open-worker-database.d.ts +0 -14
  238. package/lib/src/worker/db/open-worker-database.js +0 -53
  239. package/lib/src/worker/db/open-worker-database.js.map +0 -1
  240. package/lib/src/worker/sync/AbstractSharedSyncClientProvider.d.ts +0 -19
  241. package/lib/src/worker/sync/AbstractSharedSyncClientProvider.js.map +0 -1
  242. package/lib/src/worker/sync/BroadcastLogger.d.ts +0 -47
  243. package/lib/src/worker/sync/BroadcastLogger.js +0 -129
  244. package/lib/src/worker/sync/BroadcastLogger.js.map +0 -1
  245. package/lib/src/worker/sync/SharedSyncImplementation.js.map +0 -1
  246. package/lib/src/worker/sync/SharedSyncImplementation.worker.js +0 -12
  247. package/lib/src/worker/sync/SharedSyncImplementation.worker.js.map +0 -1
  248. package/lib/src/worker/sync/WorkerClient.js.map +0 -1
  249. package/lib/tsconfig.tsbuildinfo +0 -1
  250. package/src/db/adapters/AbstractWebPowerSyncDatabaseOpenFactory.ts +0 -47
  251. package/src/db/adapters/wa-sqlite/WASQLitePowerSyncDatabaseOpenFactory.ts +0 -24
  252. package/src/db/adapters/web-sql-flags.ts +0 -141
  253. package/src/worker/db/WASQLiteDB.worker.ts +0 -35
  254. package/src/worker/db/open-worker-database.ts +0 -62
  255. package/src/worker/sync/SharedSyncImplementation.worker.ts +0 -14
  256. /package/lib/{src/attachments → attachments}/IndexDBFileSystemAdapter.d.ts +0 -0
  257. /package/lib/{src/attachments → attachments}/IndexDBFileSystemAdapter.js +0 -0
  258. /package/lib/{src/db → db}/NavigatorTriggerClaimManager.js +0 -0
  259. /package/lib/{src/db → db}/adapters/WebDBAdapter.js +0 -0
  260. /package/lib/{src/worker/sync/SharedSyncImplementation.worker.d.ts → db/adapters/memory-pool/worker.d.ts} +0 -0
  261. /package/lib/{src/db → db}/sync/userAgent.d.ts +0 -0
  262. /package/lib/{src/db → db}/sync/userAgent.js +0 -0
  263. /package/lib/{src/shared → shared}/navigator.d.ts +0 -0
  264. /package/lib/{src/shared → shared}/navigator.js +0 -0
  265. /package/lib/{src/shared → shared}/tab_close_signal.d.ts +0 -0
  266. /package/lib/{src/shared → shared}/tab_close_signal.js +0 -0
  267. /package/lib/{src/worker → worker}/sync/AbstractSharedSyncClientProvider.js +0 -0
@@ -51,7 +51,7 @@ async function syncModuleFactory(encryptionKey) {
51
51
  /**
52
52
  * @internal
53
53
  */
54
- export async function loadModuleAndVfs({ vfs, dbFilename, encryptionKey }) {
54
+ export async function loadModuleAndVfs({ vfs, filename, encryptionKey }) {
55
55
  let moduleFactory = syncModuleFactory;
56
56
  let resolveVfs;
57
57
  switch (vfs) {
@@ -60,32 +60,32 @@ export async function loadModuleAndVfs({ vfs, dbFilename, encryptionKey }) {
60
60
  const { IDBBatchAtomicVFS } = await import('@journeyapps/wa-sqlite/src/examples/IDBBatchAtomicVFS.js');
61
61
  resolveVfs = (module) => {
62
62
  // @ts-expect-error The types for this static method are missing upstream
63
- return IDBBatchAtomicVFS.create(dbFilename, module, { lockPolicy: 'exclusive' });
63
+ return IDBBatchAtomicVFS.create(filename, module, { lockPolicy: 'exclusive' });
64
64
  };
65
65
  break;
66
66
  }
67
67
  case WASQLiteVFS.AccessHandlePoolVFS: {
68
68
  // @ts-expect-error The types for this import are missing upstream
69
69
  const { AccessHandlePoolVFS } = await import('@journeyapps/wa-sqlite/src/examples/AccessHandlePoolVFS.js');
70
- resolveVfs = (module) => AccessHandlePoolVFS.create(dbFilename, module);
70
+ resolveVfs = (module) => AccessHandlePoolVFS.create(filename, module);
71
71
  break;
72
72
  }
73
73
  case WASQLiteVFS.OPFSCoopSyncVFS: {
74
74
  // @ts-expect-error The types for this import are missing upstream
75
75
  const { OPFSCoopSyncVFS } = await import('@journeyapps/wa-sqlite/src/examples/OPFSCoopSyncVFS.js');
76
- resolveVfs = (module) => OPFSCoopSyncVFS.create(dbFilename, module);
76
+ resolveVfs = (module) => OPFSCoopSyncVFS.create(filename, module);
77
77
  break;
78
78
  }
79
79
  case WASQLiteVFS.OPFSWriteAheadVFS: {
80
80
  // @ts-expect-error The types for this import are missing upstream
81
81
  const { OPFSWriteAheadVFS } = await import('@journeyapps/wa-sqlite/src/examples/OPFSWriteAheadVFS.js');
82
- resolveVfs = (module) => OPFSWriteAheadVFS.create(dbFilename, module, {});
82
+ resolveVfs = (module) => OPFSWriteAheadVFS.create(filename, module, {});
83
83
  break;
84
84
  }
85
85
  case WASQLiteVFS.InMemoryVfs: {
86
86
  const { MemoryVFS } = await import('@journeyapps/wa-sqlite/src/examples/MemoryVFS.js');
87
87
  // @ts-expect-error The types for this static method are missing upstream
88
- resolveVfs = (module) => MemoryVFS.create(dbFilename, module);
88
+ resolveVfs = (module) => MemoryVFS.create(filename, module);
89
89
  break;
90
90
  }
91
91
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vfs.js","sourceRoot":"","sources":["../../../../src/db/adapters/wa-sqlite/vfs.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,16 @@
1
- import { AbstractStreamingSyncImplementationOptions, BaseObserver, LockOptions, Mutex, PowerSyncConnectionOptions, StreamingSyncImplementation, SyncStatus, SyncStatusOptions } from '@powersync/common';
1
+ import { BaseObserver, SyncStatus } from '@powersync/common';
2
+ import { Mutex, StreamingSyncImplementation, LockOptions } from '@powersync/shared-internals';
2
3
  export declare class SSRStreamingSyncImplementation extends BaseObserver implements StreamingSyncImplementation {
3
4
  syncMutex: Mutex;
4
5
  crudMutex: Mutex;
5
6
  isConnected: boolean;
6
7
  lastSyncedAt?: Date | undefined;
7
- syncStatus: SyncStatus;
8
- constructor(options: AbstractStreamingSyncImplementationOptions);
8
+ constructor();
9
9
  obtainLock<T>(lockOptions: LockOptions<T>): Promise<T>;
10
10
  /**
11
11
  * This is a no-op in SSR mode
12
12
  */
13
- connect(options?: PowerSyncConnectionOptions): Promise<void>;
13
+ connect(): Promise<void>;
14
14
  dispose(): Promise<void>;
15
15
  /**
16
16
  * This is a no-op in SSR mode
@@ -20,22 +20,10 @@ export declare class SSRStreamingSyncImplementation extends BaseObserver impleme
20
20
  * This SSR Mode implementation is immediately ready.
21
21
  */
22
22
  waitForReady(): Promise<void>;
23
- /**
24
- * This will never resolve in SSR Mode.
25
- */
26
- waitForStatus(status: SyncStatusOptions): Promise<void>;
27
23
  /**
28
24
  * This will never resolve in SSR Mode.
29
25
  */
30
26
  waitUntilStatusMatches(_predicate: (status: SyncStatus) => boolean): Promise<void>;
31
- /**
32
- * Returns a placeholder checkpoint. This should not be used.
33
- */
34
- getWriteCheckpoint(): Promise<string>;
35
- /**
36
- * The SSR mode adapter will never complete syncing.
37
- */
38
- hasCompletedSync(): Promise<boolean>;
39
27
  /**
40
28
  * This is a no-op in SSR mode.
41
29
  */
@@ -48,4 +36,5 @@ export declare class SSRStreamingSyncImplementation extends BaseObserver impleme
48
36
  * No-op in SSR mode.
49
37
  */
50
38
  markConnectionMayHaveChanged(): void;
39
+ requestCheckpoint(): Promise<bigint>;
51
40
  }
@@ -1,15 +1,14 @@
1
- import { BaseObserver, LockType, Mutex, SyncStatus } from '@powersync/common';
1
+ import { BaseObserver } from '@powersync/common';
2
+ import { Mutex, LockType } from '@powersync/shared-internals';
2
3
  export class SSRStreamingSyncImplementation extends BaseObserver {
3
4
  syncMutex;
4
5
  crudMutex;
5
6
  isConnected;
6
7
  lastSyncedAt;
7
- syncStatus;
8
- constructor(options) {
8
+ constructor() {
9
9
  super();
10
10
  this.syncMutex = new Mutex();
11
11
  this.crudMutex = new Mutex();
12
- this.syncStatus = new SyncStatus({});
13
12
  this.isConnected = false;
14
13
  }
15
14
  obtainLock(lockOptions) {
@@ -19,7 +18,7 @@ export class SSRStreamingSyncImplementation extends BaseObserver {
19
18
  /**
20
19
  * This is a no-op in SSR mode
21
20
  */
22
- async connect(options) { }
21
+ async connect() { }
23
22
  async dispose() { }
24
23
  /**
25
24
  * This is a no-op in SSR mode
@@ -29,30 +28,12 @@ export class SSRStreamingSyncImplementation extends BaseObserver {
29
28
  * This SSR Mode implementation is immediately ready.
30
29
  */
31
30
  async waitForReady() { }
32
- /**
33
- * This will never resolve in SSR Mode.
34
- */
35
- async waitForStatus(status) {
36
- return this.waitUntilStatusMatches(() => false);
37
- }
38
31
  /**
39
32
  * This will never resolve in SSR Mode.
40
33
  */
41
34
  waitUntilStatusMatches(_predicate) {
42
35
  return new Promise(() => { });
43
36
  }
44
- /**
45
- * Returns a placeholder checkpoint. This should not be used.
46
- */
47
- async getWriteCheckpoint() {
48
- return '1';
49
- }
50
- /**
51
- * The SSR mode adapter will never complete syncing.
52
- */
53
- async hasCompletedSync() {
54
- return false;
55
- }
56
37
  /**
57
38
  * This is a no-op in SSR mode.
58
39
  */
@@ -65,5 +46,8 @@ export class SSRStreamingSyncImplementation extends BaseObserver {
65
46
  * No-op in SSR mode.
66
47
  */
67
48
  markConnectionMayHaveChanged() { }
49
+ requestCheckpoint() {
50
+ throw new Error('Sub sync implementation does not support request checkpoints');
51
+ }
68
52
  }
69
53
  //# sourceMappingURL=SSRWebStreamingSyncImplementation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SSRWebStreamingSyncImplementation.js","sourceRoot":"","sources":["../../../src/db/sync/SSRWebStreamingSyncImplementation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAc,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,KAAK,EAA4C,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAExG,MAAM,OAAO,8BAA+B,SAAQ,YAAY;IAC9D,SAAS,CAAQ;IACjB,SAAS,CAAQ;IAEjB,WAAW,CAAU;IACrB,YAAY,CAAoB;IAEhC;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,IAAI,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,UAAU,CAAI,WAA2B;QACvC,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;QAClF,OAAO,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,KAAmB,CAAC;IAEjC,KAAK,CAAC,OAAO,KAAI,CAAC;IAElB;;OAEG;IACH,KAAK,CAAC,UAAU,KAAmB,CAAC;IAEpC;;OAEG;IACH,KAAK,CAAC,YAAY,KAAI,CAAC;IAEvB;;OAEG;IACH,sBAAsB,CAAC,UAA2C;QAChE,OAAO,IAAI,OAAO,CAAO,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,iBAAiB,KAAI,CAAC;IAEtB;;OAEG;IACH,mBAAmB,KAAU,CAAC;IAE9B;;OAEG;IACH,4BAA4B,KAAU,CAAC;IAEvC,iBAAiB;QACf,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAClF,CAAC;CACF"}
@@ -1,34 +1,32 @@
1
- import { PowerSyncConnectionOptions, PowerSyncCredentials, SubscribedStream, SyncStatusOptions } from '@powersync/common';
1
+ import { LogRecord, PowerSyncCredentials } from '@powersync/common';
2
2
  import * as Comlink from 'comlink';
3
3
  import { AbstractSharedSyncClientProvider } from '../../worker/sync/AbstractSharedSyncClientProvider.js';
4
4
  import { WorkerClient } from '../../worker/sync/WorkerClient.js';
5
5
  import { WebDBAdapter } from '../adapters/WebDBAdapter.js';
6
6
  import { WebStreamingSyncImplementation, WebStreamingSyncImplementationOptions } from './WebStreamingSyncImplementation.js';
7
+ import { SubscribedStream, SyncStatusJson, ResolvedSyncOptions } from '@powersync/shared-internals';
8
+ import { WorkerConnection } from '../../worker/client.js';
7
9
  /**
8
10
  * The shared worker will trigger methods on this side of the message port
9
11
  * via this client provider.
10
12
  */
11
13
  declare class SharedSyncClientProvider extends AbstractSharedSyncClientProvider {
12
14
  protected options: WebStreamingSyncImplementationOptions;
13
- statusChanged: (status: SyncStatusOptions) => void;
15
+ statusChanged: (status: SyncStatusJson) => void;
14
16
  protected webDB: WebDBAdapter;
15
- constructor(options: WebStreamingSyncImplementationOptions, statusChanged: (status: SyncStatusOptions) => void, webDB: WebDBAdapter);
17
+ constructor(options: WebStreamingSyncImplementationOptions, statusChanged: (status: SyncStatusJson) => void, webDB: WebDBAdapter);
16
18
  getDBWorkerPort(): Promise<MessagePort>;
17
19
  invalidateCredentials(): void;
18
20
  fetchCredentials(): Promise<PowerSyncCredentials | null>;
19
21
  uploadCrud(): Promise<void>;
20
- get logger(): import("@powersync/common").ILogger | undefined;
21
- trace(...x: any[]): void;
22
- debug(...x: any[]): void;
23
- info(...x: any[]): void;
24
- log(...x: any[]): void;
25
- warn(...x: any[]): void;
26
- error(...x: any[]): void;
27
- time(label: string): void;
28
- timeEnd(label: string): void;
22
+ postCheckpointRequest(clientId: string, requestId: string): Promise<string | null>;
23
+ get logger(): import("@powersync/common").PowerSyncLogger;
24
+ log(record: LogRecord): void;
29
25
  }
30
26
  export interface SharedWebStreamingSyncImplementationOptions extends WebStreamingSyncImplementationOptions {
27
+ logLevel: number;
31
28
  db: WebDBAdapter;
29
+ enableBroadcastLogs: boolean;
32
30
  }
33
31
  /**
34
32
  * The local part of the sync implementation on the web, which talks to a sync implementation hosted in a shared worker.
@@ -36,21 +34,23 @@ export interface SharedWebStreamingSyncImplementationOptions extends WebStreamin
36
34
  export declare class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplementation {
37
35
  protected syncManager: Comlink.Remote<WorkerClient>;
38
36
  protected clientProvider: SharedSyncClientProvider;
39
- protected messagePort: MessagePort;
37
+ protected worker: WorkerConnection;
40
38
  protected isInitialized: Promise<void>;
41
39
  protected dbAdapter: WebDBAdapter;
42
40
  private abortOnClose;
41
+ private logLevel;
42
+ private enableBroadcastLogs;
43
43
  constructor(options: SharedWebStreamingSyncImplementationOptions);
44
44
  protected _init(): Promise<void>;
45
45
  /**
46
46
  * Starts the sync process, this effectively acts as a call to
47
47
  * `connect` if not yet connected.
48
48
  */
49
- connect(options?: PowerSyncConnectionOptions): Promise<void>;
49
+ connect(options: ResolvedSyncOptions): Promise<void>;
50
50
  disconnect(): Promise<void>;
51
- getWriteCheckpoint(): Promise<string>;
52
51
  dispose(): Promise<void>;
53
52
  waitForReady(): Promise<void>;
53
+ requestCheckpoint(): Promise<bigint>;
54
54
  updateSubscriptions(subscriptions: SubscribedStream[]): void;
55
55
  }
56
56
  export {};
@@ -1,9 +1,9 @@
1
1
  import * as Comlink from 'comlink';
2
2
  import { AbstractSharedSyncClientProvider } from '../../worker/sync/AbstractSharedSyncClientProvider.js';
3
3
  import { SharedSyncClientEvent } from '../../worker/sync/SharedSyncImplementation.js';
4
- import { DEFAULT_CACHE_SIZE_KB, TemporaryStorageOption, resolveWebSQLFlags } from '../adapters/web-sql-flags.js';
5
4
  import { WebStreamingSyncImplementation } from './WebStreamingSyncImplementation.js';
6
5
  import { generateTabCloseSignal } from '../../shared/tab_close_signal.js';
6
+ import { connectToExistingWorker, connectToWorker } from '../../worker/client.js';
7
7
  /**
8
8
  * The shared worker will trigger methods on this side of the message port
9
9
  * via this client provider.
@@ -48,32 +48,14 @@ class SharedSyncClientProvider extends AbstractSharedSyncClientProvider {
48
48
  */
49
49
  await this.options.uploadCrud();
50
50
  }
51
+ async postCheckpointRequest(clientId, requestId) {
52
+ return await this.options.postCheckpointRequest(clientId, requestId);
53
+ }
51
54
  get logger() {
52
55
  return this.options.logger;
53
56
  }
54
- trace(...x) {
55
- this.logger?.trace(...x);
56
- }
57
- debug(...x) {
58
- this.logger?.debug(...x);
59
- }
60
- info(...x) {
61
- this.logger?.info(...x);
62
- }
63
- log(...x) {
64
- this.logger?.log(...x);
65
- }
66
- warn(...x) {
67
- this.logger?.warn(...x);
68
- }
69
- error(...x) {
70
- this.logger?.error(...x);
71
- }
72
- time(label) {
73
- this.logger?.time(label);
74
- }
75
- timeEnd(label) {
76
- this.logger?.timeEnd(label);
57
+ log(record) {
58
+ this.logger.log(record);
77
59
  }
78
60
  }
79
61
  /**
@@ -82,57 +64,44 @@ class SharedSyncClientProvider extends AbstractSharedSyncClientProvider {
82
64
  export class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplementation {
83
65
  syncManager;
84
66
  clientProvider;
85
- messagePort;
67
+ worker;
86
68
  isInitialized;
87
69
  dbAdapter;
88
70
  abortOnClose = new AbortController();
71
+ logLevel;
72
+ enableBroadcastLogs;
89
73
  constructor(options) {
90
74
  super(options);
91
75
  this.dbAdapter = options.db;
92
- /**
93
- * Configure or connect to the shared sync worker.
94
- * This worker will manage all syncing operations remotely.
95
- */
96
- const resolvedWorkerOptions = {
97
- dbFilename: this.options.identifier,
98
- temporaryStorage: TemporaryStorageOption.MEMORY,
99
- cacheSizeKb: DEFAULT_CACHE_SIZE_KB,
100
- ...options,
101
- flags: resolveWebSQLFlags(options.flags)
102
- };
76
+ this.logLevel = options.logLevel;
77
+ this.enableBroadcastLogs = options.enableBroadcastLogs;
103
78
  const syncWorker = options.sync?.worker;
104
- if (syncWorker) {
105
- if (typeof syncWorker === 'function') {
106
- this.messagePort = syncWorker(resolvedWorkerOptions).port;
107
- }
108
- else {
109
- this.messagePort = new SharedWorker(`${syncWorker}`, {
110
- /* @vite-ignore */
111
- name: `shared-sync-${this.webOptions.identifier}`
112
- }).port;
113
- }
79
+ if (typeof syncWorker === 'function') {
80
+ this.worker = connectToExistingWorker(syncWorker(), options.logger, 'sync');
114
81
  }
115
82
  else {
116
- this.messagePort = new SharedWorker(new URL('../../worker/sync/SharedSyncImplementation.worker.js', import.meta.url), {
117
- /* @vite-ignore */
118
- name: `shared-sync-${this.webOptions.identifier}`,
119
- type: 'module'
120
- }).port;
83
+ this.worker = connectToWorker({
84
+ service: 'sync',
85
+ databaseIdentifier: this.webOptions.identifier,
86
+ shared: true,
87
+ customWorker: syncWorker,
88
+ loggerForErrors: options.logger
89
+ });
121
90
  }
122
91
  /**
123
92
  * Pass along any sync status updates to this listener
124
93
  */
125
- this.clientProvider = new SharedSyncClientProvider(this.webOptions, (status) => {
126
- this.updateSyncStatus(status);
94
+ this.clientProvider = new SharedSyncClientProvider(this.webOptions, ({ core, dataFlow }) => {
95
+ this.updateSyncStatus(core, dataFlow);
127
96
  }, options.db);
128
- this.syncManager = Comlink.wrap(this.messagePort);
97
+ this.syncManager = Comlink.wrap(this.worker.endpoint);
129
98
  /**
130
99
  * The sync worker will call this client provider when it needs
131
100
  * to fetch credentials or upload data.
132
101
  * This performs bi-directional method calling.
133
102
  */
134
- Comlink.expose(this.clientProvider, this.messagePort);
135
- this.syncManager.setLogLevel(this.logger.getLevel());
103
+ Comlink.expose(this.clientProvider, this.worker.endpoint);
104
+ this.syncManager.setLogLevel(this.logLevel);
136
105
  this.triggerCrudUpload = this.syncManager.triggerCrudUpload;
137
106
  /**
138
107
  * Opens MessagePort to the existing shared DB worker.
@@ -159,16 +128,14 @@ export class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplem
159
128
  const closeSignal = await generateTabCloseSignal(this.abortOnClose.signal);
160
129
  // Awaiting here ensures the worker is waiting for the lock
161
130
  await this.syncManager.addLockBasedCloseSignal(closeSignal);
162
- const { crudUploadThrottleMs, identifier, retryDelayMs } = this.options;
163
- const flags = { ...this.webOptions.flags, workers: undefined };
131
+ const { identifier } = this.options;
164
132
  await this.syncManager.setParams({
165
133
  dbParams: this.dbAdapter.getConfiguration(),
166
134
  streamOptions: {
167
- crudUploadThrottleMs,
168
135
  identifier,
169
- retryDelayMs,
170
- flags: flags
171
- }
136
+ serializedSchema: this.options.serializedSchema
137
+ },
138
+ enableBroadcastLogs: this.enableBroadcastLogs
172
139
  }, this.options.subscriptions);
173
140
  }
174
141
  /**
@@ -177,21 +144,19 @@ export class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplem
177
144
  */
178
145
  async connect(options) {
179
146
  await this.waitForReady();
180
- return this.syncManager.connect(options);
147
+ return this.syncManager.connect(options, this.options.serializedSchema);
181
148
  }
182
149
  async disconnect() {
183
150
  await this.waitForReady();
184
151
  return this.syncManager.disconnect();
185
152
  }
186
- async getWriteCheckpoint() {
187
- await this.waitForReady();
188
- return this.syncManager.getWriteCheckpoint();
189
- }
190
153
  async dispose() {
191
154
  await this.waitForReady();
192
155
  await new Promise((resolve) => {
156
+ // This will always be a message port since we use shared workers.
157
+ const messagePort = this.worker.endpoint;
193
158
  // Listen for the close acknowledgment from the worker
194
- this.messagePort.addEventListener('message', (event) => {
159
+ messagePort.addEventListener('message', (event) => {
195
160
  const payload = event.data;
196
161
  if (payload?.event === SharedSyncClientEvent.CLOSE_ACK) {
197
162
  resolve();
@@ -202,17 +167,20 @@ export class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplem
202
167
  event: SharedSyncClientEvent.CLOSE_CLIENT,
203
168
  data: {}
204
169
  };
205
- this.messagePort.postMessage(closeMessagePayload);
170
+ messagePort.postMessage(closeMessagePayload);
206
171
  });
207
172
  await super.dispose();
208
173
  this.abortOnClose.abort();
209
174
  // Release the proxy
210
175
  this.syncManager[Comlink.releaseProxy]();
211
- this.messagePort.close();
176
+ this.worker.close();
212
177
  }
213
178
  async waitForReady() {
214
179
  return this.isInitialized;
215
180
  }
181
+ requestCheckpoint() {
182
+ return this.syncManager.requestCheckpoint();
183
+ }
216
184
  updateSubscriptions(subscriptions) {
217
185
  this.syncManager.updateSubscriptions(subscriptions);
218
186
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SharedWebStreamingSyncImplementation.js","sourceRoot":"","sources":["../../../src/db/sync/SharedWebStreamingSyncImplementation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,gCAAgC,EAAE,MAAM,uDAAuD,CAAC;AACzG,OAAO,EAA2B,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AAG/G,OAAO,EACL,8BAA8B,EAE/B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAE1E,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAoB,MAAM,wBAAwB,CAAC;AAEpG;;;GAGG;AACH,MAAM,wBAAyB,SAAQ,gCAAgC;IAEzD;IACH;IACG;IAHZ,YACY,OAA8C,EACjD,aAA+C,EAC5C,KAAmB;QAE7B,KAAK,EAAE,CAAC;QAJE,YAAO,GAAP,OAAO,CAAuC;QACjD,kBAAa,GAAb,aAAa,CAAkC;QAC5C,UAAK,GAAL,KAAK,CAAc;IAG/B,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;QACpD,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,qBAAqB;QACnB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QAC/D,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QACD;;;;;WAKG;QACH,OAAO;YACL,QAAQ,EAAE,WAAW,CAAC,QAAQ;YAC9B,KAAK,EAAE,WAAW,CAAC,KAAK;SACzB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU;QACd;;;WAGG;QACH,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;IAClC,CAAC;IAEQ,KAAK,CAAC,qBAAqB,CAAC,QAAgB,EAAE,SAAiB;QACtE,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,GAAG,CAAC,MAAiB;QACnB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;CACF;AAQD;;GAEG;AACH,MAAM,OAAO,oCAAqC,SAAQ,8BAA8B;IAC5E,WAAW,CAA+B;IAC1C,cAAc,CAA2B;IACzC,MAAM,CAAmB;IAEzB,aAAa,CAAgB;IAC7B,SAAS,CAAe;IAC1B,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,QAAQ,CAAS;IACjB,mBAAmB,CAAU;IAErC,YAAY,OAAoD;QAC9D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;QAEvD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;QACxC,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,GAAG,uBAAuB,CAAC,UAAU,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9E,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC;gBAC5B,OAAO,EAAE,MAAM;gBACf,kBAAkB,EAAE,IAAI,CAAC,UAAU,CAAC,UAAW;gBAC/C,MAAM,EAAE,IAAI;gBACZ,YAAY,EAAE,UAAU;gBACxB,eAAe,EAAE,OAAO,CAAC,MAAM;aAChC,CAAC,CAAC;QACL,CAAC;QAED;;WAEG;QACH,IAAI,CAAC,cAAc,GAAG,IAAI,wBAAwB,CAChD,IAAI,CAAC,UAAU,EACf,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;YACrB,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACxC,CAAC,EACD,OAAO,CAAC,EAAE,CACX,CAAC;QAEF,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAe,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACpE;;;;WAIG;QACH,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAE1D,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE5C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC;QAE5D;;;;;WAKG;QAEH,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IACpC,CAAC;IAES,KAAK,CAAC,KAAK;QACnB;;;;;;;;;;;;WAYG;QACH,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC3E,2DAA2D;QAC3D,MAAM,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;QAE5D,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAEpC,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAC9B;YACE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE;YAC3C,aAAa,EAAE;gBACb,UAAU;gBACV,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB;aAChD;YACD,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;SAC9C,EACD,IAAI,CAAC,OAAO,CAAC,aAAa,CAC3B,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,OAA4B;QACxC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAE1B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,kEAAkE;YAClE,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,QAAuB,CAAC;YAExD,sDAAsD;YACtD,WAAW,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;gBAChD,MAAM,OAAO,GAAG,KAAK,CAAC,IAA+B,CAAC;gBACtD,IAAI,OAAO,EAAE,KAAK,KAAK,qBAAqB,CAAC,SAAS,EAAE,CAAC;oBACvD,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,oFAAoF;YACpF,MAAM,mBAAmB,GAA4B;gBACnD,KAAK,EAAE,qBAAqB,CAAC,YAAY;gBACzC,IAAI,EAAE,EAAE;aACT,CAAC;YACF,WAAW,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QAEtB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAE1B,oBAAoB;QACpB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;IAC9C,CAAC;IAED,mBAAmB,CAAC,aAAiC;QACnD,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;IACtD,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ import { LockOptions, SubscribedStream } from '@powersync/shared-internals';
2
+ import { WebStreamingSyncImplementation, WebStreamingSyncImplementationOptions } from './WebStreamingSyncImplementation.js';
3
+ /**
4
+ * When multi-tab support is disabled and we don't use a shared worker for sync, only a single tab will be able to
5
+ * acquire the sync navigator lock and start a sync iteration.
6
+ *
7
+ * To be able to provide _some_ multi-tab support in that configuration, this utility:
8
+ *
9
+ * 1. Sends sync status updates from the syncing tab to others.
10
+ * 2. Allows other tabs to send notifications when their active sync stream subscriptions update, allowing the active
11
+ * tab to take those subscriptions into account.
12
+ */
13
+ export declare class TabLocalStreamingSyncImplementation extends WebStreamingSyncImplementation {
14
+ #private;
15
+ constructor(options: WebStreamingSyncImplementationOptions);
16
+ updateSubscriptions(subscriptions: SubscribedStream[]): void;
17
+ obtainLock<T>({ callback, type, signal }: LockOptions<T>): Promise<T>;
18
+ dispose(): Promise<void>;
19
+ }
@@ -0,0 +1,70 @@
1
+ import { LockType } from '@powersync/shared-internals';
2
+ import { WebStreamingSyncImplementation } from './WebStreamingSyncImplementation.js';
3
+ /**
4
+ * When multi-tab support is disabled and we don't use a shared worker for sync, only a single tab will be able to
5
+ * acquire the sync navigator lock and start a sync iteration.
6
+ *
7
+ * To be able to provide _some_ multi-tab support in that configuration, this utility:
8
+ *
9
+ * 1. Sends sync status updates from the syncing tab to others.
10
+ * 2. Allows other tabs to send notifications when their active sync stream subscriptions update, allowing the active
11
+ * tab to take those subscriptions into account.
12
+ */
13
+ export class TabLocalStreamingSyncImplementation extends WebStreamingSyncImplementation {
14
+ #statusUpdated;
15
+ #subscriptionsChanged;
16
+ #hasSyncLock = false;
17
+ constructor(options) {
18
+ super(options);
19
+ const identifier = options.identifier;
20
+ this.#statusUpdated = new BroadcastChannel(`sync-status-${identifier}`);
21
+ this.#subscriptionsChanged = new BroadcastChannel(`subscription-change-${identifier}`);
22
+ this.#statusUpdated.onmessage = (event) => {
23
+ if (event.data == 'ping') {
24
+ this.#sendStatus(this.syncStatus);
25
+ return;
26
+ }
27
+ const { core, dataFlow } = event.data;
28
+ this.updateSyncStatus(core, dataFlow);
29
+ };
30
+ // Request other tabs to share their sync status.
31
+ this.#statusUpdated.postMessage('ping');
32
+ this.#subscriptionsChanged.onmessage = () => {
33
+ // We can't update activeStreams since we don't know when another tab referencing them is closed. However,
34
+ // clients will update an internal table listing streams after subscribing, and updateSubscriptions() will
35
+ // scan that table.
36
+ super.updateSubscriptions(this.activeStreams);
37
+ };
38
+ this.registerListener({
39
+ statusChanged: (status) => this.#sendStatus(status)
40
+ });
41
+ }
42
+ #sendStatus(status) {
43
+ // Don't share sync status if this is not the tab currently syncing.
44
+ if (this.#hasSyncLock) {
45
+ this.#statusUpdated.postMessage(status.toJSON());
46
+ }
47
+ }
48
+ updateSubscriptions(subscriptions) {
49
+ super.updateSubscriptions(subscriptions);
50
+ this.#subscriptionsChanged.postMessage('');
51
+ }
52
+ obtainLock({ callback, type, signal }) {
53
+ const wrappedCallback = async () => {
54
+ this.#hasSyncLock = true;
55
+ try {
56
+ return await callback();
57
+ }
58
+ finally {
59
+ this.#hasSyncLock = false;
60
+ }
61
+ };
62
+ return super.obtainLock({ callback: type == LockType.SYNC ? wrappedCallback : callback, type, signal });
63
+ }
64
+ async dispose() {
65
+ this.#statusUpdated.close();
66
+ this.#subscriptionsChanged.close();
67
+ await super.dispose();
68
+ }
69
+ }
70
+ //# sourceMappingURL=TabLocalStreamingSyncImplementation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabLocalStreamingSyncImplementation.js","sourceRoot":"","sources":["../../../src/db/sync/TabLocalStreamingSyncImplementation.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EAIT,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,8BAA8B,EAE/B,MAAM,qCAAqC,CAAC;AAE7C;;;;;;;;;GASG;AACH,MAAM,OAAO,mCAAoC,SAAQ,8BAA8B;IACrF,cAAc,CAAmB;IACjC,qBAAqB,CAAmB;IACxC,YAAY,GAAG,KAAK,CAAC;IAErB,YAAY,OAA8C;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACtC,IAAI,CAAC,cAAc,GAAG,IAAI,gBAAgB,CAAC,eAAe,UAAU,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,qBAAqB,GAAG,IAAI,gBAAgB,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC;QAEvF,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,KAAK,EAAE,EAAE;YACxC,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;gBACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAClC,OAAO;YACT,CAAC;YAED,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,IAAsB,CAAC;YACxD,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACxC,CAAC,CAAC;QAEF,iDAAiD;QACjD,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,qBAAqB,CAAC,SAAS,GAAG,GAAG,EAAE;YAC1C,0GAA0G;YAC1G,0GAA0G;YAC1G,mBAAmB;YACnB,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChD,CAAC,CAAC;QAEF,IAAI,CAAC,gBAAgB,CAAC;YACpB,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;SACpD,CAAC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,MAA0B;QACpC,oEAAoE;QACpE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAEQ,mBAAmB,CAAC,aAAiC;QAC5D,KAAK,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;QACzC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAC7C,CAAC;IAEQ,UAAU,CAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAkB;QAC/D,MAAM,eAAe,GAAG,KAAK,IAAgB,EAAE;YAC7C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YAEzB,IAAI,CAAC;gBACH,OAAO,MAAM,QAAQ,EAAE,CAAC;YAC1B,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC;QAEF,OAAO,KAAK,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1G,CAAC;IAEQ,KAAK,CAAC,OAAO;QACpB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC;QACnC,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ import { PowerSyncLogger } from '@powersync/common';
2
+ import { AbstractRemote, FetchOptions, RemoteConnector } from '@powersync/shared-internals';
3
+ import type { WebSocketSyncStreamPlatform, WebSocketSupport } from '@powersync/shared-internals/websockets';
4
+ export declare class WebRemote extends AbstractRemote {
5
+ protected connector: RemoteConnector;
6
+ constructor(connector: RemoteConnector, logger: PowerSyncLogger);
7
+ protected fetch({ resource, request }: FetchOptions): Promise<Response>;
8
+ protected loadWebSocketSupport(platform: WebSocketSyncStreamPlatform): Promise<WebSocketSupport>;
9
+ getUserAgent(): string;
10
+ }
@@ -0,0 +1,33 @@
1
+ import { LogLevels } from '@powersync/common';
2
+ import { AbstractRemote } from '@powersync/shared-internals';
3
+ import { getUserAgentInfo } from './userAgent.js';
4
+ export class WebRemote extends AbstractRemote {
5
+ connector;
6
+ constructor(connector, logger) {
7
+ super(connector, logger);
8
+ this.connector = connector;
9
+ }
10
+ fetch({ resource, request }) {
11
+ return fetch(resource, request);
12
+ }
13
+ async loadWebSocketSupport(platform) {
14
+ if (!websockets) {
15
+ // loadWebSocketSupport being called concurrently is safe, the import resolves to the same module in that case.
16
+ const module = await import('@powersync/shared-internals/websockets');
17
+ websockets = new module.WebSocketSupport(platform);
18
+ }
19
+ return websockets;
20
+ }
21
+ getUserAgent() {
22
+ let ua = [super.getUserAgent(), `powersync-web`];
23
+ try {
24
+ ua.push(...getUserAgentInfo());
25
+ }
26
+ catch (error) {
27
+ this.logger.log({ level: LogLevels.warn, message: 'Failed to get user agent info', error });
28
+ }
29
+ return ua.join(' ');
30
+ }
31
+ }
32
+ let websockets;
33
+ //# sourceMappingURL=WebRemote.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebRemote.js","sourceRoot":"","sources":["../../../src/db/sync/WebRemote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAmB,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAiC,MAAM,6BAA6B,CAAC;AAE5F,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGlD,MAAM,OAAO,SAAU,SAAQ,cAAc;IAE/B;IADZ,YACY,SAA0B,EACpC,MAAuB;QAEvB,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAHf,cAAS,GAAT,SAAS,CAAiB;IAItC,CAAC;IAES,KAAK,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAgB;QACjD,OAAO,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;IAES,KAAK,CAAC,oBAAoB,CAAC,QAAqC;QACxE,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,+GAA+G;YAC/G,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,wCAAwC,CAAC,CAAC;YACtE,UAAU,GAAG,IAAI,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,YAAY;QACV,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,eAAe,CAAC,CAAC;QACjD,IAAI,CAAC;YACH,EAAE,CAAC,IAAI,CAAC,GAAG,gBAAgB,EAAE,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,+BAA+B,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9F,CAAC;QACD,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;CACF;AAED,IAAI,UAAwC,CAAC"}
@@ -1,9 +1,7 @@
1
- import { AbstractStreamingSyncImplementation, AbstractStreamingSyncImplementationOptions, LockOptions } from '@powersync/common';
2
- import { ResolvedWebSQLOpenOptions, WebSQLFlags } from '../adapters/web-sql-flags.js';
1
+ import { AbstractStreamingSyncImplementation, AbstractStreamingSyncImplementationOptions, LockOptions } from '@powersync/shared-internals';
3
2
  export interface WebStreamingSyncImplementationOptions extends AbstractStreamingSyncImplementationOptions {
4
- flags?: WebSQLFlags;
5
3
  sync?: {
6
- worker?: string | URL | ((options: ResolvedWebSQLOpenOptions) => SharedWorker);
4
+ worker?: string | URL | (() => SharedWorker);
7
5
  };
8
6
  }
9
7
  export declare class WebStreamingSyncImplementation extends AbstractStreamingSyncImplementation {
@@ -1,4 +1,5 @@
1
- import { AbstractStreamingSyncImplementation, LockType } from '@powersync/common';
1
+ import { LogLevels } from '@powersync/common';
2
+ import { AbstractStreamingSyncImplementation, LockType } from '@powersync/shared-internals';
2
3
  import { getNavigatorLocks } from '../../shared/navigator.js';
3
4
  export class WebStreamingSyncImplementation extends AbstractStreamingSyncImplementation {
4
5
  constructor(options) {
@@ -11,7 +12,7 @@ export class WebStreamingSyncImplementation extends AbstractStreamingSyncImpleme
11
12
  async obtainLock(lockOptions) {
12
13
  const identifier = `streaming-sync-${lockOptions.type}-${this.webOptions.identifier}`;
13
14
  if (lockOptions.type == LockType.SYNC) {
14
- this.logger.debug('requesting lock for ', identifier);
15
+ this.logger.log({ level: LogLevels.debug, message: `requesting lock for ${identifier}` });
15
16
  }
16
17
  return getNavigatorLocks().request(identifier, { signal: lockOptions.signal }, lockOptions.callback);
17
18
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebStreamingSyncImplementation.js","sourceRoot":"","sources":["../../../src/db/sync/WebStreamingSyncImplementation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EACL,mCAAmC,EAGnC,QAAQ,EACT,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAQ9D,MAAM,OAAO,8BAA+B,SAAQ,mCAAmC;IACrF,YAAY,OAA8C;QACxD,0DAA0D;QAC1D,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,OAAgD,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,UAAU,CAAI,WAA2B;QAC7C,MAAM,UAAU,GAAG,kBAAkB,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QACtF,IAAI,WAAW,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,uBAAuB,UAAU,EAAE,EAAE,CAAC,CAAC;QAC5F,CAAC;QACD,OAAO,iBAAiB,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IACvG,CAAC;CACF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userAgent.js","sourceRoot":"","sources":["../../../src/db/sync/userAgent.ts"],"names":[],"mappings":"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"}