@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexDBFileSystemAdapter.js","sourceRoot":"","sources":["../../src/attachments/IndexDBFileSystemAdapter.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { TriggerClaimManager } from '@powersync/common';
1
+ import { TriggerClaimManager } from '@powersync/shared-internals';
2
2
  /**
3
3
  * @internal
4
4
  * @experimental
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavigatorTriggerClaimManager.js","sourceRoot":"","sources":["../../src/db/NavigatorTriggerClaimManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D;;;GAGG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAwB;IAClE,KAAK,CAAC,WAAW,CAAC,UAAkB;QAClC,OAAO,IAAI,OAAO,CAAC,CAAC,eAAe,EAAE,EAAE;YACrC,iBAAiB,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;gBACjD,MAAM,IAAI,OAAO,CAAO,CAAC,WAAW,EAAE,EAAE;oBACtC,eAAe,CAAC,KAAK,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC7C,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,UAAkB;QACjC,MAAM,YAAY,GAAG,MAAM,iBAAiB,EAAE,CAAC,KAAK,EAAE,CAAC;QACvD,OAAO,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,IAAI,CAAC;IACpF,CAAC;CACF,CAAC"}
@@ -0,0 +1,66 @@
1
+ import { type PowerSyncBackendConnector, type PowerSyncCloseOptions, BasePowerSyncDatabaseOptions, DatabaseSource, DBAdapter, PowerSyncDatabaseConstructor, CommonPowerSyncDatabase } from '@powersync/common';
2
+ import { BasePowerSyncDatabase, CreateSyncImplementationOptions, Mutex, StreamingSyncImplementation, TriggerManagerConfig } from '@powersync/shared-internals';
3
+ import { WebSpecificOpenOptions, WebSQLOpenOptions } from './adapters/options.js';
4
+ export type WebPowerSyncDatabaseOptions = BasePowerSyncDatabaseOptions & DatabaseSource<WebSQLOpenOptions> & WebSpecificOptions;
5
+ export interface WebSpecificOptions {
6
+ sync?: WebSyncOptions;
7
+ /**
8
+ * Broadcast logs from shared workers, such as the shared sync worker,
9
+ * to individual tabs. This defaults to true.
10
+ */
11
+ broadcastLogs?: boolean;
12
+ }
13
+ export interface WebSyncOptions {
14
+ /**
15
+ * Allows you to override the default sync worker.
16
+ *
17
+ * You can either provide a path to the worker script
18
+ * or a factory method that returns a worker.
19
+ */
20
+ worker?: string | URL | (() => SharedWorker);
21
+ /**
22
+ * The log level for logs from the sync worker.
23
+ *
24
+ * Defaults to {@link LogLevels.info}.
25
+ */
26
+ logLevel?: number;
27
+ }
28
+ /**
29
+ * @internal Use {@link PowerSyncDatabase} instead, this class is only used by other SDKs also needing web support.
30
+ */
31
+ export declare class WebPowerSyncDatabase extends BasePowerSyncDatabase<WebPowerSyncDatabaseOptions> {
32
+ static SHARED_MUTEX: Mutex;
33
+ protected resolvedOpenOptions: WebSpecificOpenOptions;
34
+ protected enableBroadcastLogs: boolean;
35
+ constructor(options: WebPowerSyncDatabaseOptions);
36
+ _initialize(): Promise<void>;
37
+ protected generateTriggerManagerConfig(): TriggerManagerConfig;
38
+ protected openDBAdapter(): DBAdapter;
39
+ /**
40
+ * Closes the database connection.
41
+ * By default the sync stream client is only disconnected if
42
+ * multiple tabs are not enabled.
43
+ */
44
+ close(options?: PowerSyncCloseOptions): Promise<void>;
45
+ protected loadVersion(): Promise<void>;
46
+ protected resolveOfflineSyncStatus(): Promise<void>;
47
+ protected runExclusive<T>(cb: () => Promise<T>): Promise<T>;
48
+ protected generateSyncStreamImplementation(connector: PowerSyncBackendConnector, options: CreateSyncImplementationOptions): StreamingSyncImplementation;
49
+ }
50
+ /**
51
+ * A PowerSync database which provides SQLite functionality
52
+ * which is automatically synced.
53
+ *
54
+ * @example
55
+ * ```typescript
56
+ * export const db = new PowerSyncDatabase({
57
+ * schema: AppSchema,
58
+ * database: {
59
+ * dbFilename: 'example.db'
60
+ * }
61
+ * });
62
+ * ```
63
+ */
64
+ export declare const PowerSyncDatabase: PowerSyncDatabaseConstructor<WebPowerSyncDatabaseOptions>;
65
+ export interface PowerSyncDatabase extends CommonPowerSyncDatabase {
66
+ }
@@ -1,58 +1,26 @@
1
- import { AbstractPowerSyncDatabase, SqliteBucketStorage, isDBAdapter, isSQLOpenFactory, Mutex } from '@powersync/common';
1
+ import { LogLevels } from '@powersync/common';
2
+ import { BasePowerSyncDatabase, Mutex, openDatabase } from '@powersync/shared-internals';
2
3
  import { getNavigatorLocks } from '../shared/navigator.js';
3
4
  import { NAVIGATOR_TRIGGER_CLAIM_MANAGER } from './NavigatorTriggerClaimManager.js';
4
5
  import { WASQLiteOpenFactory } from './adapters/wa-sqlite/WASQLiteOpenFactory.js';
5
- import { DEFAULT_WEB_SQL_FLAGS, isServerSide, resolveWebSQLFlags } from './adapters/web-sql-flags.js';
6
6
  import { SSRStreamingSyncImplementation } from './sync/SSRWebStreamingSyncImplementation.js';
7
7
  import { SharedWebStreamingSyncImplementation } from './sync/SharedWebStreamingSyncImplementation.js';
8
8
  import { WebRemote } from './sync/WebRemote.js';
9
- import { WebStreamingSyncImplementation } from './sync/WebStreamingSyncImplementation.js';
10
9
  import { AsyncDbAdapter } from './adapters/AsyncWebAdapter.js';
11
- export const DEFAULT_POWERSYNC_FLAGS = {
12
- ...DEFAULT_WEB_SQL_FLAGS,
13
- externallyUnload: false
14
- };
15
- export const resolveWebPowerSyncFlags = (flags) => {
16
- return {
17
- ...DEFAULT_POWERSYNC_FLAGS,
18
- ...flags,
19
- ...resolveWebSQLFlags(flags)
20
- };
21
- };
10
+ import { resolveAndValidateOptions } from './adapters/resolveAndValidateOptions.js';
11
+ import { TabLocalStreamingSyncImplementation } from './sync/TabLocalStreamingSyncImplementation.js';
22
12
  /**
23
- * Asserts that the database options are valid for custom database constructors.
13
+ * @internal Use {@link PowerSyncDatabase} instead, this class is only used by other SDKs also needing web support.
24
14
  */
25
- function assertValidDatabaseOptions(options) {
26
- if ('database' in options && 'encryptionKey' in options) {
27
- const { database } = options;
28
- if (isSQLOpenFactory(database) || isDBAdapter(database)) {
29
- throw new Error(`Invalid configuration: 'encryptionKey' should only be included inside the database object when using a custom ${isSQLOpenFactory(database) ? 'WASQLiteOpenFactory' : 'WASQLiteDBAdapter'} constructor.`);
30
- }
31
- }
32
- }
33
- /**
34
- * A PowerSync database which provides SQLite functionality
35
- * which is automatically synced.
36
- *
37
- * @example
38
- * ```typescript
39
- * export const db = new PowerSyncDatabase({
40
- * schema: AppSchema,
41
- * database: {
42
- * dbFilename: 'example.db'
43
- * }
44
- * });
45
- * ```
46
- */
47
- export class PowerSyncDatabase extends AbstractPowerSyncDatabase {
48
- options;
15
+ export class WebPowerSyncDatabase extends BasePowerSyncDatabase {
49
16
  static SHARED_MUTEX = new Mutex();
50
- resolvedFlags;
17
+ resolvedOpenOptions;
18
+ enableBroadcastLogs;
51
19
  constructor(options) {
20
+ const resolvedOpenOptions = resolveAndValidateOptions('database' in options ? options.database : {});
52
21
  super(options);
53
- this.options = options;
54
- assertValidDatabaseOptions(options);
55
- this.resolvedFlags = resolveWebPowerSyncFlags(options.flags);
22
+ this.resolvedOpenOptions = resolvedOpenOptions;
23
+ this.enableBroadcastLogs = options.broadcastLogs ?? true;
56
24
  }
57
25
  async _initialize() {
58
26
  if (this.database instanceof AsyncDbAdapter) {
@@ -79,13 +47,14 @@ export class PowerSyncDatabase extends AbstractPowerSyncDatabase {
79
47
  claimManager: NAVIGATOR_TRIGGER_CLAIM_MANAGER
80
48
  };
81
49
  }
82
- openDBAdapter(options) {
83
- const defaultFactory = new WASQLiteOpenFactory({
84
- ...options.database,
85
- flags: resolveWebPowerSyncFlags(options.flags),
86
- encryptionKey: options.encryptionKey
50
+ openDBAdapter() {
51
+ return openDatabase(this.options, (options) => {
52
+ const defaultFactory = new WASQLiteOpenFactory({
53
+ logger: this.logger,
54
+ open: options
55
+ });
56
+ return defaultFactory.openDB();
87
57
  });
88
- return defaultFactory.openDB();
89
58
  }
90
59
  /**
91
60
  * Closes the database connection.
@@ -95,27 +64,24 @@ export class PowerSyncDatabase extends AbstractPowerSyncDatabase {
95
64
  close(options) {
96
65
  return super.close({
97
66
  // Don't disconnect by default if multiple tabs are enabled
98
- disconnect: options?.disconnect ?? !this.resolvedFlags.enableMultiTabs
67
+ disconnect: options?.disconnect ?? !this.resolvedOpenOptions.enableMultiTabs
99
68
  });
100
69
  }
101
70
  async loadVersion() {
102
- if (isServerSide()) {
71
+ if (this.resolvedOpenOptions.ssrMode) {
103
72
  return;
104
73
  }
105
74
  return super.loadVersion();
106
75
  }
107
76
  async resolveOfflineSyncStatus() {
108
- if (isServerSide()) {
77
+ if (this.resolvedOpenOptions.ssrMode) {
109
78
  return;
110
79
  }
111
80
  return super.resolveOfflineSyncStatus();
112
81
  }
113
- generateBucketStorageAdapter() {
114
- return new SqliteBucketStorage(this.database);
115
- }
116
82
  async runExclusive(cb) {
117
- if (this.resolvedFlags.ssrMode) {
118
- return PowerSyncDatabase.SHARED_MUTEX.runExclusive(cb);
83
+ if (this.resolvedOpenOptions.ssrMode) {
84
+ return WebPowerSyncDatabase.SHARED_MUTEX.runExclusive(cb);
119
85
  }
120
86
  return getNavigatorLocks().request(`lock-${this.database.name}`, cb);
121
87
  }
@@ -123,36 +89,51 @@ export class PowerSyncDatabase extends AbstractPowerSyncDatabase {
123
89
  const remote = new WebRemote(connector, this.logger);
124
90
  const syncOptions = {
125
91
  ...this.options,
126
- ...options,
127
- flags: this.resolvedFlags,
128
- adapter: this.bucketStorageAdapter,
129
- remote,
130
- uploadCrud: async () => {
131
- await this.waitForReady();
132
- await connector.uploadData(this);
133
- },
134
- identifier: this.database.name,
135
- logger: this.logger
92
+ ...this.commonSyncOptions(connector, options),
93
+ remote
136
94
  };
137
- switch (true) {
138
- case this.resolvedFlags.ssrMode:
139
- return new SSRStreamingSyncImplementation(syncOptions);
140
- case this.resolvedFlags.enableMultiTabs:
141
- if (!this.resolvedFlags.broadcastLogs) {
142
- const warning = `
95
+ if (this.resolvedOpenOptions.ssrMode) {
96
+ return new SSRStreamingSyncImplementation();
97
+ }
98
+ else if (this.resolvedOpenOptions.enableMultiTabs) {
99
+ if (!this.enableBroadcastLogs) {
100
+ const warning = `
143
101
  Multiple tabs are enabled, but broadcasting of logs is disabled.
144
102
  Logs for shared sync worker will only be available in the shared worker context
145
103
  `;
146
- const logger = this.options.logger;
147
- logger ? logger.warn(warning) : console.warn(warning);
148
- }
104
+ const logger = this.options.logger;
105
+ logger ? logger.log({ level: LogLevels.warn, message: warning }) : console.warn(warning);
106
+ }
107
+ if ('shareConnection' in this.database) {
149
108
  return new SharedWebStreamingSyncImplementation({
150
109
  ...syncOptions,
151
- db: this.database // This should always be the case
110
+ db: this.database, // This should always be the case
111
+ logLevel: this.options.sync?.logLevel ?? LogLevels.info,
112
+ enableBroadcastLogs: this.enableBroadcastLogs
152
113
  });
153
- default:
154
- return new WebStreamingSyncImplementation(syncOptions);
114
+ }
115
+ this.logger.log({
116
+ level: LogLevels.warn,
117
+ message: "Not using a shared sync worker because the database adapter doesn't support it."
118
+ });
155
119
  }
120
+ return new TabLocalStreamingSyncImplementation(syncOptions);
156
121
  }
157
122
  }
123
+ /**
124
+ * A PowerSync database which provides SQLite functionality
125
+ * which is automatically synced.
126
+ *
127
+ * @example
128
+ * ```typescript
129
+ * export const db = new PowerSyncDatabase({
130
+ * schema: AppSchema,
131
+ * database: {
132
+ * dbFilename: 'example.db'
133
+ * }
134
+ * });
135
+ * ```
136
+ */
137
+ // Typed constructor to avoid leaking AbstractPowerSyncDatabase into the public interface
138
+ export const PowerSyncDatabase = WebPowerSyncDatabase;
158
139
  //# sourceMappingURL=PowerSyncDatabase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PowerSyncDatabase.js","sourceRoot":"","sources":["../../src/db/PowerSyncDatabase.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { DBAdapter, DBAdapterListener, DBLockOptions, LockContext } from '@powersync/common';
2
+ import { SharedConnectionWorker, WebDBAdapterConfiguration } from './WebDBAdapter.js';
3
+ import { DatabaseClient } from './wa-sqlite/DatabaseClient.js';
4
+ /**
5
+ * A connection pool implementation delegating to another pool opened asynchronnously.
6
+ */
7
+ export declare class AsyncDbAdapter extends DBAdapter {
8
+ readonly name: string;
9
+ protected readonly state: Promise<PoolState>;
10
+ protected resolvedWriter?: DatabaseClient;
11
+ private readonly pendingListeners;
12
+ constructor(inner: Promise<PoolConnection>, name: string);
13
+ init(): Promise<void>;
14
+ close(): Promise<void>;
15
+ readLock<T>(fn: (tx: LockContext) => Promise<T>, options?: DBLockOptions): Promise<T>;
16
+ writeLock<T>(fn: (tx: LockContext) => Promise<T>, options?: DBLockOptions): Promise<T>;
17
+ refreshSchema(): Promise<void>;
18
+ registerListener(listener: Partial<DBAdapterListener>): () => void;
19
+ shareConnection(): Promise<SharedConnectionWorker>;
20
+ getConfiguration(): WebDBAdapterConfiguration;
21
+ }
22
+ export interface PoolConnection {
23
+ writer: DatabaseClient;
24
+ additionalReaders: DatabaseClient[];
25
+ }
26
+ interface PoolState {
27
+ writer: DatabaseClient;
28
+ withConnection<T>(allowReadOnly: boolean, fn: (tx: LockContext) => Promise<T>, options?: DBLockOptions): Promise<T>;
29
+ close(): Promise<void>;
30
+ refreshSchema(): Promise<void>;
31
+ }
32
+ export {};
@@ -1,13 +1,16 @@
1
- import { DBAdapterDefaultMixin, Mutex, Semaphore } from '@powersync/common';
1
+ import { DBAdapter } from '@powersync/common';
2
+ import { Mutex, Semaphore } from '@powersync/shared-internals';
3
+ import { acquireFromPool } from './acquireFromPool.js';
2
4
  /**
3
5
  * A connection pool implementation delegating to another pool opened asynchronnously.
4
6
  */
5
- class AsyncConnectionPool {
7
+ export class AsyncDbAdapter extends DBAdapter {
6
8
  name;
7
9
  state;
8
10
  resolvedWriter;
9
11
  pendingListeners = new Set();
10
12
  constructor(inner, name) {
13
+ super();
11
14
  this.name = name;
12
15
  this.state = inner.then((client) => {
13
16
  for (const pending of this.pendingListeners) {
@@ -58,6 +61,16 @@ class AsyncConnectionPool {
58
61
  };
59
62
  }
60
63
  }
64
+ async shareConnection() {
65
+ const state = await this.state;
66
+ return state.writer.shareConnection();
67
+ }
68
+ getConfiguration() {
69
+ if (this.resolvedWriter) {
70
+ return this.resolvedWriter.getConfiguration();
71
+ }
72
+ throw new Error('AsyncDbAdapter.getConfiguration() can only be called after initializing it.');
73
+ }
61
74
  }
62
75
  function singleConnectionPoolState(connection) {
63
76
  return {
@@ -83,61 +96,9 @@ function readWritePoolState(writer, readers) {
83
96
  return {
84
97
  writer,
85
98
  async withConnection(allowReadOnly, fn, options) {
86
- const abortController = new AbortController();
87
- const abortSignal = abortController.signal;
88
- let timeout = null;
89
- let release;
90
- if (options?.timeoutMs) {
91
- timeout = setTimeout(() => abortController.abort, options.timeoutMs);
92
- }
93
- try {
94
- if (allowReadOnly) {
95
- let connection;
96
- // Even if we have a pool of read connections, it's typically very small and we assume that most queries are
97
- // reads. So, we want to request any connection from the read pool and the dedicated write connection (which
98
- // can also serve reads). We race for the first connection we can obtain this way, and then abort the other
99
- // request.
100
- [connection, release] = await new Promise((resolve, reject) => {
101
- let didComplete = false;
102
- function complete() {
103
- didComplete = true;
104
- abortController.abort();
105
- }
106
- function completeSuccess(connection, returnFn) {
107
- if (didComplete) {
108
- // We're not going to use this connection, so return it immediately.
109
- returnFn();
110
- }
111
- else {
112
- complete();
113
- resolve([connection, returnFn]);
114
- }
115
- }
116
- function completeError(error) {
117
- // We either have a working connection already, or we've rejected the promise. Either way, we don't need
118
- // to do either thing again.
119
- if (didComplete)
120
- return;
121
- complete();
122
- reject(error);
123
- }
124
- writerMutex.acquire(abortSignal).then((unlock) => completeSuccess(writer, unlock), completeError);
125
- readerSemaphore
126
- .requestOne(abortSignal)
127
- .then(({ item, release }) => completeSuccess(item, release), completeError);
128
- });
129
- return await connection.readLock(fn);
130
- }
131
- else {
132
- return await writerMutex.runExclusive(() => writer.writeLock(fn), abortSignal);
133
- }
134
- }
135
- finally {
136
- if (timeout != null) {
137
- clearTimeout(timeout);
138
- }
139
- release?.();
140
- }
99
+ return acquireFromPool(writerMutex, writer, readerSemaphore, (connection) => {
100
+ return allowReadOnly ? connection.readLock(fn) : connection.writeLock(fn);
101
+ }, options, allowReadOnly);
141
102
  },
142
103
  async close() {
143
104
  await writer.close();
@@ -149,16 +110,4 @@ function readWritePoolState(writer, readers) {
149
110
  }
150
111
  };
151
112
  }
152
- export class AsyncDbAdapter extends DBAdapterDefaultMixin(AsyncConnectionPool) {
153
- async shareConnection() {
154
- const state = await this.state;
155
- return state.writer.shareConnection();
156
- }
157
- getConfiguration() {
158
- if (this.resolvedWriter) {
159
- return this.resolvedWriter.getConfiguration();
160
- }
161
- throw new Error('AsyncDbAdapter.getConfiguration() can only be called after initializing it.');
162
- }
163
- }
164
113
  //# sourceMappingURL=AsyncWebAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsyncWebAdapter.js","sourceRoot":"","sources":["../../../src/db/adapters/AsyncWebAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { DBAdapter, DBLockOptions, LockContext } from '@powersync/common';
2
+ import { Mutex } from '@powersync/shared-internals';
3
+ /**
4
+ * Implements a Mock DB adapter for use in Server Side Rendering (SSR).
5
+ * This adapter will return empty results for queries, which will allow
6
+ * server rendered views to initially generate scaffolding components
7
+ */
8
+ export declare class SSRDBAdapter extends DBAdapter {
9
+ name: string;
10
+ readMutex: Mutex;
11
+ writeMutex: Mutex;
12
+ constructor();
13
+ close(): void;
14
+ readLock<T>(fn: (tx: LockContext) => Promise<T>, options?: DBLockOptions): Promise<T>;
15
+ writeLock<T>(fn: (tx: LockContext) => Promise<T>, options?: DBLockOptions): Promise<T>;
16
+ refreshSchema(): Promise<void>;
17
+ }
@@ -0,0 +1,37 @@
1
+ import { DBAdapter, LockContext } from '@powersync/common';
2
+ import { Mutex } from '@powersync/shared-internals';
3
+ const MOCK_QUERY_RESPONSE = {
4
+ rowsAffected: 0,
5
+ columnNames: [],
6
+ rawRows: []
7
+ };
8
+ /**
9
+ * Implements a Mock DB adapter for use in Server Side Rendering (SSR).
10
+ * This adapter will return empty results for queries, which will allow
11
+ * server rendered views to initially generate scaffolding components
12
+ */
13
+ export class SSRDBAdapter extends DBAdapter {
14
+ name;
15
+ readMutex;
16
+ writeMutex;
17
+ constructor() {
18
+ super();
19
+ this.name = 'SSR DB';
20
+ this.readMutex = new Mutex();
21
+ this.writeMutex = new Mutex();
22
+ }
23
+ close() { }
24
+ async readLock(fn, options) {
25
+ return fn(new StubLockContext());
26
+ }
27
+ async writeLock(fn, options) {
28
+ return fn(new StubLockContext());
29
+ }
30
+ async refreshSchema() { }
31
+ }
32
+ class StubLockContext extends LockContext {
33
+ async executeRaw() {
34
+ return MOCK_QUERY_RESPONSE;
35
+ }
36
+ }
37
+ //# sourceMappingURL=SSRDBAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SSRDBAdapter.js","sourceRoot":"","sources":["../../../src/db/adapters/SSRDBAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAiB,WAAW,EAAkB,MAAM,mBAAmB,CAAC;AAC1F,OAAO,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAEpD,MAAM,mBAAmB,GAAmB;IAC1C,YAAY,EAAE,CAAC;IACf,WAAW,EAAE,EAAE;IACf,OAAO,EAAE,EAAE;CACZ,CAAC;AAEF;;;;GAIG;AACH,MAAM,OAAO,YAAa,SAAQ,SAAS;IACzC,IAAI,CAAS;IACb,SAAS,CAAQ;IACjB,UAAU,CAAQ;IAElB;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,IAAI,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,EAAE,CAAC;IAChC,CAAC;IAED,KAAK,KAAI,CAAC;IAEV,KAAK,CAAC,QAAQ,CAAI,EAAmC,EAAE,OAAuB;QAC5E,OAAO,EAAE,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,SAAS,CAAI,EAAmC,EAAE,OAAuB;QAC7E,OAAO,EAAE,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,aAAa,KAAmB,CAAC;CACxC;AAED,MAAM,eAAgB,SAAQ,WAAW;IACvC,KAAK,CAAC,UAAU;QACd,OAAO,mBAAmB,CAAC;IAC7B,CAAC;CACF"}
@@ -1,5 +1,5 @@
1
1
  import { DBAdapter } from '@powersync/common';
2
- import { ResolvedWebSQLOpenOptions } from './web-sql-flags.js';
2
+ import { ResolvedWebSQLOpenOptions } from './options.js';
3
3
  export type SharedConnectionWorker = {
4
4
  identifier: string;
5
5
  port: MessagePort;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebDBAdapter.js","sourceRoot":"","sources":["../../../src/db/adapters/WebDBAdapter.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import type { DBLockOptions } from '@powersync/common';
2
+ import type { Mutex, Semaphore } from '@powersync/shared-internals';
3
+ /**
4
+ * Internal helper function to acquire a connection from a pool that has a designated writer, additional readers, and
5
+ * also allows dispatching reads to the writer.
6
+ */
7
+ export declare function acquireFromPool<Connection, Res>(writerMutex: Mutex, writer: Connection, readers: Semaphore<Connection> | undefined, callback: (connection: Connection) => Promise<Res>, options: DBLockOptions | undefined, allowReadOnly: boolean): Promise<Res>;
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Internal helper function to acquire a connection from a pool that has a designated writer, additional readers, and
3
+ * also allows dispatching reads to the writer.
4
+ */
5
+ export async function acquireFromPool(writerMutex, writer, readers, callback, options, allowReadOnly) {
6
+ const abortController = new AbortController();
7
+ const abortSignal = abortController.signal;
8
+ let timeout = null;
9
+ let release;
10
+ if (options?.timeoutMs) {
11
+ timeout = setTimeout(() => abortController.abort('requesting database timed out'), options.timeoutMs);
12
+ }
13
+ try {
14
+ if (allowReadOnly) {
15
+ let connection;
16
+ // Even if we have a pool of read connections, it's typically very small and we assume that most queries are
17
+ // reads. So, we want to request any connection from the read pool and the dedicated write connection (which
18
+ // can also serve reads). We race for the first connection we can obtain this way, and then abort the other
19
+ // request.
20
+ [connection, release] = await new Promise((resolve, reject) => {
21
+ let didComplete = false;
22
+ function complete() {
23
+ didComplete = true;
24
+ abortController.abort();
25
+ }
26
+ function completeSuccess(connection, returnFn) {
27
+ if (didComplete) {
28
+ // We're not going to use this connection, so return it immediately.
29
+ returnFn();
30
+ }
31
+ else {
32
+ complete();
33
+ resolve([connection, returnFn]);
34
+ }
35
+ }
36
+ function completeError(error) {
37
+ // We either have a working connection already, or we've rejected the promise. Either way, we don't need
38
+ // to do either thing again.
39
+ if (didComplete)
40
+ return;
41
+ complete();
42
+ reject(error);
43
+ }
44
+ writerMutex.acquire(abortSignal).then((unlock) => completeSuccess(writer, unlock), completeError);
45
+ readers?.requestOne(abortSignal).then(({ item, release }) => completeSuccess(item, release), completeError);
46
+ });
47
+ return await callback(connection);
48
+ }
49
+ else {
50
+ return await writerMutex.runExclusive(() => callback(writer), abortSignal);
51
+ }
52
+ }
53
+ finally {
54
+ if (timeout != null) {
55
+ clearTimeout(timeout);
56
+ }
57
+ release?.();
58
+ }
59
+ }
60
+ //# sourceMappingURL=acquireFromPool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acquireFromPool.js","sourceRoot":"","sources":["../../../src/db/adapters/acquireFromPool.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,WAAkB,EAClB,MAAkB,EAClB,OAA0C,EAC1C,QAAkD,EAClD,OAAkC,EAClC,aAAsB;IAEtB,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IAC9C,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC;IAE3C,IAAI,OAAO,GAAQ,IAAI,CAAC;IACxB,IAAI,OAA6B,CAAC;IAClC,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;QACvB,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,+BAA+B,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACxG,CAAC;IAED,IAAI,CAAC;QACH,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,UAAsB,CAAC;YAE3B,4GAA4G;YAC5G,4GAA4G;YAC5G,2GAA2G;YAC3G,WAAW;YACX,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,MAAM,IAAI,OAAO,CAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACpF,IAAI,WAAW,GAAG,KAAK,CAAC;gBACxB,SAAS,QAAQ;oBACf,WAAW,GAAG,IAAI,CAAC;oBACnB,eAAe,CAAC,KAAK,EAAE,CAAC;gBAC1B,CAAC;gBAED,SAAS,eAAe,CAAC,UAAsB,EAAE,QAAkB;oBACjE,IAAI,WAAW,EAAE,CAAC;wBAChB,oEAAoE;wBACpE,QAAQ,EAAE,CAAC;oBACb,CAAC;yBAAM,CAAC;wBACN,QAAQ,EAAE,CAAC;wBACX,OAAO,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;oBAClC,CAAC;gBACH,CAAC;gBAED,SAAS,aAAa,CAAC,KAAc;oBACnC,wGAAwG;oBACxG,4BAA4B;oBAC5B,IAAI,WAAW;wBAAE,OAAO;oBAExB,QAAQ,EAAE,CAAC;oBACX,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC;gBAED,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC;gBAClG,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC;YAC9G,CAAC,CAAC,CAAC;YAEH,OAAO,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,OAAO,MAAM,WAAW,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;YAAS,CAAC;QACT,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YACpB,YAAY,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;QACD,OAAO,EAAE,EAAE,CAAC;IACd,CAAC;AACH,CAAC"}