@powersync/web 0.0.0-dev-20260503073249 → 0.0.0-dev-20260630141119

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 (201) hide show
  1. package/bin/powersync.cjs +1 -1
  2. package/dist/index.react_native_web.js +1879 -0
  3. package/dist/index.react_native_web.js.map +1 -0
  4. package/dist/worker/AccessHandlePoolVFS-BPUHfZME.js +2 -0
  5. package/dist/worker/AccessHandlePoolVFS-BPUHfZME.js.map +1 -0
  6. package/dist/worker/FacadeVFS-d1ZDvud7.js +2 -0
  7. package/dist/worker/FacadeVFS-d1ZDvud7.js.map +1 -0
  8. package/dist/worker/IDBBatchAtomicVFS-DbkDb777.js +2 -0
  9. package/dist/worker/IDBBatchAtomicVFS-DbkDb777.js.map +1 -0
  10. package/dist/worker/OPFSCoopSyncVFS-DRKedN0p.js +2 -0
  11. package/dist/worker/OPFSCoopSyncVFS-DRKedN0p.js.map +1 -0
  12. package/dist/worker/OPFSWriteAheadVFS-BzodSqNq.js +2 -0
  13. package/dist/worker/OPFSWriteAheadVFS-BzodSqNq.js.map +1 -0
  14. package/dist/worker/mc-wa-sqlite-DiBqIVE5.js +2 -0
  15. package/dist/worker/mc-wa-sqlite-DiBqIVE5.js.map +1 -0
  16. package/dist/worker/mc-wa-sqlite-async-DUEhO9ef.js +2 -0
  17. package/dist/worker/mc-wa-sqlite-async-DUEhO9ef.js.map +1 -0
  18. package/dist/worker/wa-sqlite-BlSx7-_P.js +2 -0
  19. package/dist/worker/wa-sqlite-BlSx7-_P.js.map +1 -0
  20. package/dist/worker/wa-sqlite-async-BdR24Ucf.js +2 -0
  21. package/dist/worker/wa-sqlite-async-BdR24Ucf.js.map +1 -0
  22. package/dist/worker/websockets-Q8W_lerF.js +9 -0
  23. package/dist/worker/websockets-Q8W_lerF.js.map +1 -0
  24. package/dist/worker/worker.js +7 -0
  25. package/dist/worker/worker.js.map +1 -0
  26. package/lib/{src/attachments → attachments}/IndexDBFileSystemAdapter.js +1 -0
  27. package/lib/attachments/IndexDBFileSystemAdapter.js.map +1 -0
  28. package/lib/{src/db → db}/NavigatorTriggerClaimManager.d.ts +1 -1
  29. package/lib/{src/db → db}/NavigatorTriggerClaimManager.js +1 -0
  30. package/lib/db/NavigatorTriggerClaimManager.js.map +1 -0
  31. package/lib/db/PowerSyncDatabase.d.ts +67 -0
  32. package/lib/{src/db → db}/PowerSyncDatabase.js +48 -61
  33. package/lib/db/PowerSyncDatabase.js.map +1 -0
  34. package/lib/db/adapters/AsyncWebAdapter.d.ts +32 -0
  35. package/lib/{src/db → db}/adapters/AsyncWebAdapter.js +15 -14
  36. package/lib/db/adapters/AsyncWebAdapter.js.map +1 -0
  37. package/lib/db/adapters/SSRDBAdapter.d.ts +17 -0
  38. package/lib/db/adapters/SSRDBAdapter.js +37 -0
  39. package/lib/db/adapters/SSRDBAdapter.js.map +1 -0
  40. package/lib/{src/db → db}/adapters/WebDBAdapter.d.ts +1 -1
  41. package/lib/db/adapters/WebDBAdapter.js +2 -0
  42. package/lib/db/adapters/WebDBAdapter.js.map +1 -0
  43. package/lib/db/adapters/options.d.ts +87 -0
  44. package/lib/db/adapters/options.js +6 -0
  45. package/lib/db/adapters/options.js.map +1 -0
  46. package/lib/db/adapters/resolveAndValidateOptions.d.ts +5 -0
  47. package/lib/db/adapters/resolveAndValidateOptions.js +33 -0
  48. package/lib/db/adapters/resolveAndValidateOptions.js.map +1 -0
  49. package/lib/{src/db → db}/adapters/wa-sqlite/ConcurrentConnection.d.ts +3 -4
  50. package/lib/{src/db → db}/adapters/wa-sqlite/ConcurrentConnection.js +3 -2
  51. package/lib/db/adapters/wa-sqlite/ConcurrentConnection.js.map +1 -0
  52. package/lib/{src/db → db}/adapters/wa-sqlite/DatabaseClient.d.ts +4 -4
  53. package/lib/{src/db → db}/adapters/wa-sqlite/DatabaseClient.js +12 -37
  54. package/lib/db/adapters/wa-sqlite/DatabaseClient.js.map +1 -0
  55. package/lib/{src/db → db}/adapters/wa-sqlite/DatabaseServer.d.ts +5 -5
  56. package/lib/{src/db → db}/adapters/wa-sqlite/DatabaseServer.js +12 -7
  57. package/lib/db/adapters/wa-sqlite/DatabaseServer.js.map +1 -0
  58. package/lib/{src/db → db}/adapters/wa-sqlite/RawSqliteConnection.d.ts +22 -12
  59. package/lib/{src/db → db}/adapters/wa-sqlite/RawSqliteConnection.js +12 -10
  60. package/lib/db/adapters/wa-sqlite/RawSqliteConnection.js.map +1 -0
  61. package/lib/db/adapters/wa-sqlite/WASQLiteOpenFactory.d.ts +18 -0
  62. package/lib/db/adapters/wa-sqlite/WASQLiteOpenFactory.js +131 -0
  63. package/lib/db/adapters/wa-sqlite/WASQLiteOpenFactory.js.map +1 -0
  64. package/lib/{src/db → db}/adapters/wa-sqlite/vfs.js +1 -0
  65. package/lib/db/adapters/wa-sqlite/vfs.js.map +1 -0
  66. package/lib/{src/db → db}/sync/SSRWebStreamingSyncImplementation.d.ts +4 -8
  67. package/lib/{src/db → db}/sync/SSRWebStreamingSyncImplementation.js +5 -11
  68. package/lib/db/sync/SSRWebStreamingSyncImplementation.js.map +1 -0
  69. package/lib/{src/db → db}/sync/SharedWebStreamingSyncImplementation.d.ts +13 -15
  70. package/lib/{src/db → db}/sync/SharedWebStreamingSyncImplementation.js +32 -69
  71. package/lib/db/sync/SharedWebStreamingSyncImplementation.js.map +1 -0
  72. package/lib/db/sync/WebRemote.d.ts +10 -0
  73. package/lib/db/sync/WebRemote.js +33 -0
  74. package/lib/db/sync/WebRemote.js.map +1 -0
  75. package/lib/{src/db → db}/sync/WebStreamingSyncImplementation.d.ts +2 -4
  76. package/lib/{src/db → db}/sync/WebStreamingSyncImplementation.js +4 -2
  77. package/lib/db/sync/WebStreamingSyncImplementation.js.map +1 -0
  78. package/lib/{src/db → db}/sync/userAgent.js +1 -0
  79. package/lib/db/sync/userAgent.js.map +1 -0
  80. package/lib/{src/index.d.ts → index.d.ts} +1 -3
  81. package/lib/{src/index.js → index.js} +2 -3
  82. package/lib/index.js.map +1 -0
  83. package/lib/{src/shared → shared}/navigator.js +1 -0
  84. package/lib/shared/navigator.js.map +1 -0
  85. package/lib/{src/shared → shared}/tab_close_signal.js +1 -0
  86. package/lib/shared/tab_close_signal.js.map +1 -0
  87. package/lib/worker/SharedWorkerConnectionRequest.d.ts +5 -0
  88. package/lib/worker/SharedWorkerConnectionRequest.js +2 -0
  89. package/lib/worker/SharedWorkerConnectionRequest.js.map +1 -0
  90. package/lib/worker/client.d.ts +15 -0
  91. package/lib/worker/client.js +77 -0
  92. package/lib/worker/client.js.map +1 -0
  93. package/lib/worker/db/MultiDatabaseServer.d.ts +22 -0
  94. package/lib/{src/worker → worker}/db/MultiDatabaseServer.js +26 -15
  95. package/lib/worker/db/MultiDatabaseServer.js.map +1 -0
  96. package/lib/worker/sync/AbstractSharedSyncClientProvider.d.ts +13 -0
  97. package/lib/{src/worker → worker}/sync/AbstractSharedSyncClientProvider.js +1 -0
  98. package/lib/worker/sync/AbstractSharedSyncClientProvider.js.map +1 -0
  99. package/lib/worker/sync/BroadcastLogger.d.ts +27 -0
  100. package/lib/worker/sync/BroadcastLogger.js +65 -0
  101. package/lib/worker/sync/BroadcastLogger.js.map +1 -0
  102. package/lib/{src/worker → worker}/sync/SharedSyncImplementation.d.ts +11 -17
  103. package/lib/{src/worker → worker}/sync/SharedSyncImplementation.js +43 -51
  104. package/lib/worker/sync/SharedSyncImplementation.js.map +1 -0
  105. package/lib/{src/worker → worker}/sync/WorkerClient.d.ts +3 -4
  106. package/lib/{src/worker → worker}/sync/WorkerClient.js +3 -5
  107. package/lib/worker/sync/WorkerClient.js.map +1 -0
  108. package/lib/worker/worker.js +34 -0
  109. package/lib/worker/worker.js.map +1 -0
  110. package/package.json +23 -33
  111. package/src/db/NavigatorTriggerClaimManager.ts +1 -1
  112. package/src/db/PowerSyncDatabase.ts +80 -122
  113. package/src/db/adapters/AsyncWebAdapter.ts +17 -26
  114. package/src/db/adapters/SSRDBAdapter.ts +14 -64
  115. package/src/db/adapters/WebDBAdapter.ts +1 -1
  116. package/src/db/adapters/options.ts +100 -0
  117. package/src/db/adapters/resolveAndValidateOptions.ts +40 -0
  118. package/src/db/adapters/wa-sqlite/ConcurrentConnection.ts +4 -5
  119. package/src/db/adapters/wa-sqlite/DatabaseClient.ts +20 -56
  120. package/src/db/adapters/wa-sqlite/DatabaseServer.ts +15 -12
  121. package/src/db/adapters/wa-sqlite/RawSqliteConnection.ts +35 -24
  122. package/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.ts +63 -126
  123. package/src/db/sync/SSRWebStreamingSyncImplementation.ts +4 -22
  124. package/src/db/sync/SharedWebStreamingSyncImplementation.ts +38 -81
  125. package/src/db/sync/WebRemote.ts +23 -42
  126. package/src/db/sync/WebStreamingSyncImplementation.ts +4 -5
  127. package/src/index.ts +1 -3
  128. package/src/worker/SharedWorkerConnectionRequest.ts +6 -0
  129. package/src/worker/client.ts +100 -0
  130. package/src/worker/db/MultiDatabaseServer.ts +40 -22
  131. package/src/worker/sync/AbstractSharedSyncClientProvider.ts +4 -10
  132. package/src/worker/sync/BroadcastLogger.ts +35 -103
  133. package/src/worker/sync/SharedSyncImplementation.ts +62 -73
  134. package/src/worker/sync/WorkerClient.ts +4 -8
  135. package/src/worker/worker.ts +38 -0
  136. package/dist/index.umd.js +0 -12277
  137. package/dist/index.umd.js.map +0 -1
  138. package/dist/worker/SharedSyncImplementation.umd.js +0 -16655
  139. package/dist/worker/SharedSyncImplementation.umd.js.map +0 -1
  140. package/dist/worker/WASQLiteDB.umd.js +0 -17810
  141. package/dist/worker/WASQLiteDB.umd.js.map +0 -1
  142. package/dist/worker/node_modules_pnpm_bson_6_10_4_node_modules_bson_lib_bson_mjs.umd.js +0 -4646
  143. package/dist/worker/node_modules_pnpm_bson_6_10_4_node_modules_bson_lib_bson_mjs.umd.js.map +0 -1
  144. 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
  145. 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
  146. 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
  147. 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
  148. 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
  149. 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
  150. 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
  151. 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
  152. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-2fb422.umd.js +0 -3562
  153. 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
  154. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-96fb23.umd.js +0 -2478
  155. 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
  156. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-c89911.umd.js +0 -1681
  157. 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
  158. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-ec4eb1.umd.js +0 -1820
  159. 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
  160. package/lib/package.json +0 -94
  161. package/lib/src/db/PowerSyncDatabase.d.ts +0 -78
  162. package/lib/src/db/adapters/AbstractWebPowerSyncDatabaseOpenFactory.d.ts +0 -23
  163. package/lib/src/db/adapters/AbstractWebPowerSyncDatabaseOpenFactory.js +0 -26
  164. package/lib/src/db/adapters/AsyncWebAdapter.d.ts +0 -50
  165. package/lib/src/db/adapters/SSRDBAdapter.d.ts +0 -30
  166. package/lib/src/db/adapters/SSRDBAdapter.js +0 -68
  167. package/lib/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.d.ts +0 -45
  168. package/lib/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.js +0 -145
  169. package/lib/src/db/adapters/wa-sqlite/WASQLitePowerSyncDatabaseOpenFactory.d.ts +0 -15
  170. package/lib/src/db/adapters/wa-sqlite/WASQLitePowerSyncDatabaseOpenFactory.js +0 -21
  171. package/lib/src/db/adapters/web-sql-flags.d.ts +0 -92
  172. package/lib/src/db/adapters/web-sql-flags.js +0 -36
  173. package/lib/src/db/sync/WebRemote.d.ts +0 -9
  174. package/lib/src/db/sync/WebRemote.js +0 -44
  175. package/lib/src/worker/db/MultiDatabaseServer.d.ts +0 -17
  176. package/lib/src/worker/db/WASQLiteDB.worker.d.ts +0 -4
  177. package/lib/src/worker/db/WASQLiteDB.worker.js +0 -30
  178. package/lib/src/worker/db/open-worker-database.d.ts +0 -14
  179. package/lib/src/worker/db/open-worker-database.js +0 -52
  180. package/lib/src/worker/sync/AbstractSharedSyncClientProvider.d.ts +0 -19
  181. package/lib/src/worker/sync/BroadcastLogger.d.ts +0 -47
  182. package/lib/src/worker/sync/BroadcastLogger.js +0 -128
  183. package/lib/src/worker/sync/SharedSyncImplementation.worker.d.ts +0 -1
  184. package/lib/src/worker/sync/SharedSyncImplementation.worker.js +0 -11
  185. package/lib/tsconfig.tsbuildinfo +0 -1
  186. package/src/db/adapters/AbstractWebPowerSyncDatabaseOpenFactory.ts +0 -47
  187. package/src/db/adapters/wa-sqlite/WASQLitePowerSyncDatabaseOpenFactory.ts +0 -24
  188. package/src/db/adapters/web-sql-flags.ts +0 -141
  189. package/src/worker/db/WASQLiteDB.worker.ts +0 -35
  190. package/src/worker/db/open-worker-database.ts +0 -62
  191. package/src/worker/sync/SharedSyncImplementation.worker.ts +0 -14
  192. /package/dist/{8e97452e297be23b5e50.wasm → worker/assets/mc-wa-sqlite-CnHbhWvs.wasm} +0 -0
  193. /package/dist/{2075a31bb151adbb9767.wasm → worker/assets/mc-wa-sqlite-async-D6idQS2r.wasm} +0 -0
  194. /package/dist/{3322bc84de986b63c2cd.wasm → worker/assets/wa-sqlite-XZW__iJk.wasm} +0 -0
  195. /package/dist/{fbc178b70d530e8ce02b.wasm → worker/assets/wa-sqlite-async-rHzzC98y.wasm} +0 -0
  196. /package/lib/{src/attachments → attachments}/IndexDBFileSystemAdapter.d.ts +0 -0
  197. /package/lib/{src/db → db}/adapters/wa-sqlite/vfs.d.ts +0 -0
  198. /package/lib/{src/db → db}/sync/userAgent.d.ts +0 -0
  199. /package/lib/{src/shared → shared}/navigator.d.ts +0 -0
  200. /package/lib/{src/shared → shared}/tab_close_signal.d.ts +0 -0
  201. /package/lib/{src/db/adapters/WebDBAdapter.js → worker/worker.d.ts} +0 -0
@@ -0,0 +1,34 @@
1
+ import * as Comlink from 'comlink';
2
+ import { createConsoleLogger, LogLevels } from '@powersync/common';
3
+ import { isSharedWorker, MultiDatabaseServer } from './db/MultiDatabaseServer.js';
4
+ import { SharedSyncImplementation } from './sync/SharedSyncImplementation.js';
5
+ import { WorkerClient } from './sync/WorkerClient.js';
6
+ const server = new MultiDatabaseServer(createConsoleLogger({ prefix: 'db-worker', minLevel: LogLevels.trace }));
7
+ const exposedDatabaseFunctions = {
8
+ connect: (config) => server.handleConnection(config),
9
+ connectToExisting: ({ identifier, lockName }) => server.connectToExisting(identifier, lockName)
10
+ };
11
+ if (isSharedWorker) {
12
+ const sharedSyncImplementation = new SharedSyncImplementation();
13
+ // A shared worker can either be an IndexedDB-VFS database server or a shared sync coordinator.
14
+ // To be able to know what service a client is connecting to, we let clients send an inner MessagePort through the
15
+ // top-level port along with a tag describing what they need.
16
+ const _self = self;
17
+ _self.onconnect = (outerEvent) => {
18
+ const port = outerEvent.ports[0];
19
+ port.onmessage = (event) => {
20
+ const { service, port } = event.data;
21
+ if (service === 'database') {
22
+ Comlink.expose(exposedDatabaseFunctions, port);
23
+ }
24
+ else if (service === 'sync') {
25
+ new WorkerClient(sharedSyncImplementation, port);
26
+ }
27
+ };
28
+ };
29
+ }
30
+ else {
31
+ // Dedicated workers are only used for databases, so we don't need an intermediate layer.
32
+ Comlink.expose(exposedDatabaseFunctions);
33
+ }
34
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/worker/worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAEnC,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClF,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAG9E,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAEhH,MAAM,wBAAwB,GAAyB;IACrD,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC;IACpD,iBAAiB,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC;CAChG,CAAC;AAEF,IAAI,cAAc,EAAE,CAAC;IACnB,MAAM,wBAAwB,GAAG,IAAI,wBAAwB,EAAE,CAAC;IAEhE,+FAA+F;IAC/F,kHAAkH;IAClH,6DAA6D;IAC7D,MAAM,KAAK,GAAG,IAA0C,CAAC;IACzD,KAAK,CAAC,SAAS,GAAG,CAAC,UAAwB,EAAE,EAAE;QAC7C,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,CAAC,KAAkD,EAAE,EAAE;YACtE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;YACrC,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;gBAC3B,OAAO,CAAC,MAAM,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;YACjD,CAAC;iBAAM,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;gBAC9B,IAAI,YAAY,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;YACnD,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;KAAM,CAAC;IACN,yFAAyF;IACzF,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAC3C,CAAC"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@powersync/web",
3
- "version": "0.0.0-dev-20260503073249",
3
+ "version": "0.0.0-dev-20260630141119",
4
4
  "description": "PowerSync Web SDK",
5
- "main": "lib/src/index.js",
6
- "module": "lib/src/index.js",
5
+ "main": "lib/index.js",
6
+ "module": "lib/index.js",
7
7
  "type": "module",
8
- "types": "lib/src/index.d.ts",
8
+ "types": "lib/index.d.ts",
9
9
  "bin": {
10
10
  "powersync-web": "bin/powersync.cjs"
11
11
  },
@@ -18,22 +18,14 @@
18
18
  ],
19
19
  "exports": {
20
20
  ".": {
21
- "types": "./lib/src/index.d.ts",
22
- "default": "./lib/src/index.js"
21
+ "types": "./lib/index.d.ts",
22
+ "react-native-web": "./dist/index.react_native_web.js",
23
+ "react-native": "./dist/index.react_native_web.js",
24
+ "default": "./lib/index.js"
23
25
  },
24
- "./umd": {
25
- "types": "./lib/src/index.d.ts",
26
- "default": "./dist/index.umd.js"
27
- },
28
- "./umd/worker/db": {
29
- "types": "./lib/src/index.d.ts",
30
- "import": "./dist/worker/WASQLiteDB.umd.js",
31
- "require": "./dist/worker/WASQLiteDB.umd.js"
32
- },
33
- "./umd/worker/sync": {
34
- "types": "./lib/src/index.d.ts",
35
- "import": "./dist/worker/SharedSyncImplementation.umd.js",
36
- "require": "./dist/worker/SharedSyncImplementation.umd.js"
26
+ "./bundled_worker": {
27
+ "types": "./lib/worker/worker.d.ts",
28
+ "default": "./dist/worker/worker.js"
37
29
  }
38
30
  },
39
31
  "repository": "https://github.com/powersync-ja/powersync-js",
@@ -56,36 +48,34 @@
56
48
  "license": "Apache-2.0",
57
49
  "peerDependencies": {
58
50
  "@journeyapps/wa-sqlite": "^1.5.0",
59
- "@powersync/common": "0.0.0-dev-20260503073249"
51
+ "@powersync/common": "0.0.0-dev-20260630141119",
52
+ "@powersync/shared-internals": "1.0.0"
60
53
  },
61
54
  "dependencies": {
62
- "bson": "^6.10.4",
63
55
  "comlink": "^4.4.2",
64
56
  "commander": "^12.1.0",
65
- "@powersync/common": "0.0.0-dev-20260503073249"
57
+ "@powersync/common": "0.0.0-dev-20260630141119",
58
+ "@powersync/shared-internals": "1.0.0"
66
59
  },
67
60
  "devDependencies": {
68
61
  "@journeyapps/wa-sqlite": "^1.7.0",
69
62
  "@types/uuid": "^9.0.6",
70
- "crypto-browserify": "^3.12.0",
63
+ "bson": "^6.10.4",
71
64
  "glob": "^11.0.0",
72
65
  "p-defer": "^4.0.1",
73
66
  "source-map-loader": "^5.0.0",
74
- "stream-browserify": "^3.0.0",
75
- "terser-webpack-plugin": "^5.3.9",
76
67
  "uuid": "^11.1.0",
77
68
  "vite": "^7.3.1",
78
- "vm-browserify": "^1.1.2",
79
- "webpack": "^5.90.1",
80
- "webpack-cli": "^5.1.4",
81
- "webpack-node-externals": "^3.0.0"
69
+ "rollup": "^4.52.5",
70
+ "@rollup/plugin-node-resolve": "^16.0.3",
71
+ "@rollup/plugin-terser": "^1.0.0",
72
+ "estree-walker": "^3.0.3",
73
+ "magic-string": "^0.30.21"
82
74
  },
83
75
  "scripts": {
84
76
  "build:tsc": "tsc --build",
85
- "build:webpack-main": "webpack",
86
- "build:webpack-workers": "webpack --config webpack.workers.config.js",
87
- "build": "pnpm run build:tsc && pnpm run build:webpack-main && pnpm run build:webpack-workers",
88
- "build:prod": "pnpm run build:tsc --sourceMap false && pnpm run build:webpack-main && pnpm run build:webpack-workers",
77
+ "build": "pnpm run build:tsc && rollup --config",
78
+ "build:prod": "pnpm run build",
89
79
  "clean": "rm -rf lib dist tsconfig.tsbuildinfo",
90
80
  "watch": "tsc --build -w",
91
81
  "test": "pnpm build && vitest",
@@ -1,4 +1,4 @@
1
- import { TriggerClaimManager } from '@powersync/common';
1
+ import { TriggerClaimManager } from '@powersync/shared-internals';
2
2
  import { getNavigatorLocks } from '../shared/navigator.js';
3
3
 
4
4
  /**
@@ -1,32 +1,28 @@
1
1
  import {
2
- AbstractPowerSyncDatabase,
2
+ type PowerSyncBackendConnector,
3
+ type PowerSyncCloseOptions,
4
+ LogLevels,
5
+ BasePowerSyncDatabaseOptions,
6
+ DatabaseSource,
3
7
  DBAdapter,
4
- PowerSyncDatabaseOptions,
5
- PowerSyncDatabaseOptionsWithDBAdapter,
6
- PowerSyncDatabaseOptionsWithOpenFactory,
7
- PowerSyncDatabaseOptionsWithSettings,
8
+ PowerSyncDatabaseConstructor,
9
+ CommonPowerSyncDatabase
10
+ } from '@powersync/common';
11
+ import {
12
+ BasePowerSyncDatabase,
13
+ BucketStorageAdapter,
14
+ CreateSyncImplementationOptions,
15
+ Mutex,
8
16
  SqliteBucketStorage,
9
17
  StreamingSyncImplementation,
10
18
  TriggerManagerConfig,
11
- isDBAdapter,
12
- isSQLOpenFactory,
13
- Mutex,
14
- type BucketStorageAdapter,
15
- type PowerSyncBackendConnector,
16
- type PowerSyncCloseOptions,
17
- type RequiredAdditionalConnectionOptions
18
- } from '@powersync/common';
19
+ openDatabase
20
+ } from '@powersync/shared-internals';
19
21
  import { getNavigatorLocks } from '../shared/navigator.js';
20
22
  import { NAVIGATOR_TRIGGER_CLAIM_MANAGER } from './NavigatorTriggerClaimManager.js';
21
23
  import { WebDBAdapter } from './adapters/WebDBAdapter.js';
22
24
  import { WASQLiteOpenFactory } from './adapters/wa-sqlite/WASQLiteOpenFactory.js';
23
- import {
24
- DEFAULT_WEB_SQL_FLAGS,
25
- ResolvedWebSQLOpenOptions,
26
- WebSQLFlags,
27
- isServerSide,
28
- resolveWebSQLFlags
29
- } from './adapters/web-sql-flags.js';
25
+ import { WebSpecificOpenOptions, WebSQLOpenOptions } from './adapters/options.js';
30
26
  import { SSRStreamingSyncImplementation } from './sync/SSRWebStreamingSyncImplementation.js';
31
27
  import { SharedWebStreamingSyncImplementation } from './sync/SharedWebStreamingSyncImplementation.js';
32
28
  import { WebRemote } from './sync/WebRemote.js';
@@ -35,19 +31,22 @@ import {
35
31
  WebStreamingSyncImplementationOptions
36
32
  } from './sync/WebStreamingSyncImplementation.js';
37
33
  import { AsyncDbAdapter } from './adapters/AsyncWebAdapter.js';
34
+ import { resolveAndValidateOptions } from './adapters/resolveAndValidateOptions.js';
35
+
36
+ export type WebPowerSyncDatabaseOptions = BasePowerSyncDatabaseOptions &
37
+ DatabaseSource<WebSQLOpenOptions> &
38
+ WebSpecificOptions;
39
+
40
+ export interface WebSpecificOptions {
41
+ sync?: WebSyncOptions;
38
42
 
39
- export interface WebPowerSyncFlags extends WebSQLFlags {
40
43
  /**
41
- * @deprecated This flag is no longer used. Navigator locks now handle tab detection automatically.
42
- * Externally unload open PowerSync database instances when the window closes.
43
- * Setting this to `true` requires calling `close` on all open PowerSyncDatabase
44
- * instances before the window unloads
44
+ * Broadcast logs from shared workers, such as the shared sync worker,
45
+ * to individual tabs. This defaults to true.
45
46
  */
46
- externallyUnload?: boolean;
47
+ broadcastLogs?: boolean;
47
48
  }
48
49
 
49
- type WithWebFlags<Base> = Base & { flags?: WebPowerSyncFlags };
50
-
51
50
  export interface WebSyncOptions {
52
51
  /**
53
52
  * Allows you to override the default sync worker.
@@ -55,91 +54,31 @@ export interface WebSyncOptions {
55
54
  * You can either provide a path to the worker script
56
55
  * or a factory method that returns a worker.
57
56
  */
58
- worker?: string | URL | ((options: ResolvedWebSQLOpenOptions) => SharedWorker);
59
- }
57
+ worker?: string | URL | (() => SharedWorker);
60
58
 
61
- type WithWebSyncOptions<Base> = Base & {
62
- sync?: WebSyncOptions;
63
- };
64
-
65
- export interface WebEncryptionOptions {
66
59
  /**
67
- * Encryption key for the database.
68
- * If set, the database will be encrypted using Multiple Ciphers.
60
+ * The log level for logs from the sync worker.
61
+ *
62
+ * Defaults to {@link LogLevels.info}.
69
63
  */
70
- encryptionKey?: string;
71
- }
72
-
73
- type WithWebEncryptionOptions<Base> = Base & WebEncryptionOptions;
74
-
75
- export type WebPowerSyncDatabaseOptionsWithAdapter = WithWebSyncOptions<
76
- WithWebFlags<PowerSyncDatabaseOptionsWithDBAdapter>
77
- >;
78
- export type WebPowerSyncDatabaseOptionsWithOpenFactory = WithWebSyncOptions<
79
- WithWebFlags<PowerSyncDatabaseOptionsWithOpenFactory>
80
- >;
81
- export type WebPowerSyncDatabaseOptionsWithSettings = WithWebSyncOptions<
82
- WithWebFlags<WithWebEncryptionOptions<PowerSyncDatabaseOptionsWithSettings>>
83
- >;
84
-
85
- export type WebPowerSyncDatabaseOptions = WithWebSyncOptions<WithWebFlags<PowerSyncDatabaseOptions>>;
86
-
87
- export const DEFAULT_POWERSYNC_FLAGS: Required<WebPowerSyncFlags> = {
88
- ...DEFAULT_WEB_SQL_FLAGS,
89
- externallyUnload: false
90
- };
91
-
92
- export const resolveWebPowerSyncFlags = (flags?: WebPowerSyncFlags): Required<WebPowerSyncFlags> => {
93
- return {
94
- ...DEFAULT_POWERSYNC_FLAGS,
95
- ...flags,
96
- ...resolveWebSQLFlags(flags)
97
- };
98
- };
99
-
100
- /**
101
- * Asserts that the database options are valid for custom database constructors.
102
- */
103
- function assertValidDatabaseOptions(options: WebPowerSyncDatabaseOptions): void {
104
- if ('database' in options && 'encryptionKey' in options) {
105
- const { database } = options;
106
- if (isSQLOpenFactory(database) || isDBAdapter(database)) {
107
- throw new Error(
108
- `Invalid configuration: 'encryptionKey' should only be included inside the database object when using a custom ${isSQLOpenFactory(database) ? 'WASQLiteOpenFactory' : 'WASQLiteDBAdapter'} constructor.`
109
- );
110
- }
111
- }
64
+ logLevel?: number;
112
65
  }
113
66
 
114
67
  /**
115
- * A PowerSync database which provides SQLite functionality
116
- * which is automatically synced.
117
- *
118
- * @example
119
- * ```typescript
120
- * export const db = new PowerSyncDatabase({
121
- * schema: AppSchema,
122
- * database: {
123
- * dbFilename: 'example.db'
124
- * }
125
- * });
126
- * ```
68
+ * @internal Use {@link PowerSyncDatabase} instead, this class is only used by other SDKs also needing web support.
127
69
  */
128
- export class PowerSyncDatabase extends AbstractPowerSyncDatabase {
70
+ export class WebPowerSyncDatabase extends BasePowerSyncDatabase<WebPowerSyncDatabaseOptions> {
129
71
  static SHARED_MUTEX = new Mutex();
130
72
 
131
- protected resolvedFlags: WebPowerSyncFlags;
73
+ protected resolvedOpenOptions: WebSpecificOpenOptions;
74
+ protected enableBroadcastLogs: boolean;
132
75
 
133
- constructor(options: WebPowerSyncDatabaseOptionsWithAdapter);
134
- constructor(options: WebPowerSyncDatabaseOptionsWithOpenFactory);
135
- constructor(options: WebPowerSyncDatabaseOptionsWithSettings);
136
- constructor(options: WebPowerSyncDatabaseOptions);
137
- constructor(protected options: WebPowerSyncDatabaseOptions) {
138
- super(options);
139
-
140
- assertValidDatabaseOptions(options);
76
+ constructor(options: WebPowerSyncDatabaseOptions) {
77
+ const resolvedOpenOptions = resolveAndValidateOptions('database' in options ? options.database : {});
141
78
 
142
- this.resolvedFlags = resolveWebPowerSyncFlags(options.flags);
79
+ super(options);
80
+ this.resolvedOpenOptions = resolvedOpenOptions;
81
+ this.enableBroadcastLogs = options.broadcastLogs ?? true;
143
82
  }
144
83
 
145
84
  async _initialize(): Promise<void> {
@@ -170,13 +109,14 @@ export class PowerSyncDatabase extends AbstractPowerSyncDatabase {
170
109
  };
171
110
  }
172
111
 
173
- protected openDBAdapter(options: WebPowerSyncDatabaseOptionsWithSettings): DBAdapter {
174
- const defaultFactory = new WASQLiteOpenFactory({
175
- ...options.database,
176
- flags: resolveWebPowerSyncFlags(options.flags),
177
- encryptionKey: options.encryptionKey
112
+ protected override openDBAdapter(): DBAdapter {
113
+ return openDatabase(this.options, (options) => {
114
+ const defaultFactory = new WASQLiteOpenFactory({
115
+ logger: this.logger,
116
+ open: options
117
+ });
118
+ return defaultFactory.openDB();
178
119
  });
179
- return defaultFactory.openDB();
180
120
  }
181
121
 
182
122
  /**
@@ -187,44 +127,43 @@ export class PowerSyncDatabase extends AbstractPowerSyncDatabase {
187
127
  close(options?: PowerSyncCloseOptions): Promise<void> {
188
128
  return super.close({
189
129
  // Don't disconnect by default if multiple tabs are enabled
190
- disconnect: options?.disconnect ?? !this.resolvedFlags.enableMultiTabs
130
+ disconnect: options?.disconnect ?? !this.resolvedOpenOptions.enableMultiTabs
191
131
  });
192
132
  }
193
133
 
194
134
  protected async loadVersion(): Promise<void> {
195
- if (isServerSide()) {
135
+ if (this.resolvedOpenOptions.ssrMode) {
196
136
  return;
197
137
  }
198
138
  return super.loadVersion();
199
139
  }
200
140
 
201
141
  protected async resolveOfflineSyncStatus() {
202
- if (isServerSide()) {
142
+ if (this.resolvedOpenOptions.ssrMode) {
203
143
  return;
204
144
  }
205
145
  return super.resolveOfflineSyncStatus();
206
146
  }
207
147
 
208
148
  protected generateBucketStorageAdapter(): BucketStorageAdapter {
209
- return new SqliteBucketStorage(this.database);
149
+ return new SqliteBucketStorage(this.database, this.logger);
210
150
  }
211
151
 
212
152
  protected async runExclusive<T>(cb: () => Promise<T>) {
213
- if (this.resolvedFlags.ssrMode) {
214
- return PowerSyncDatabase.SHARED_MUTEX.runExclusive(cb);
153
+ if (this.resolvedOpenOptions.ssrMode) {
154
+ return WebPowerSyncDatabase.SHARED_MUTEX.runExclusive(cb);
215
155
  }
216
156
  return getNavigatorLocks().request(`lock-${this.database.name}`, cb);
217
157
  }
218
158
 
219
159
  protected generateSyncStreamImplementation(
220
160
  connector: PowerSyncBackendConnector,
221
- options: RequiredAdditionalConnectionOptions
161
+ options: CreateSyncImplementationOptions
222
162
  ): StreamingSyncImplementation {
223
163
  const remote = new WebRemote(connector, this.logger);
224
164
  const syncOptions: WebStreamingSyncImplementationOptions = {
225
165
  ...(this.options as {}),
226
166
  ...options,
227
- flags: this.resolvedFlags,
228
167
  adapter: this.bucketStorageAdapter,
229
168
  remote,
230
169
  uploadCrud: async () => {
@@ -236,23 +175,42 @@ export class PowerSyncDatabase extends AbstractPowerSyncDatabase {
236
175
  };
237
176
 
238
177
  switch (true) {
239
- case this.resolvedFlags.ssrMode:
240
- return new SSRStreamingSyncImplementation(syncOptions);
241
- case this.resolvedFlags.enableMultiTabs:
242
- if (!this.resolvedFlags.broadcastLogs) {
178
+ case this.resolvedOpenOptions.ssrMode:
179
+ return new SSRStreamingSyncImplementation();
180
+ case this.resolvedOpenOptions.enableMultiTabs:
181
+ if (!this.enableBroadcastLogs) {
243
182
  const warning = `
244
183
  Multiple tabs are enabled, but broadcasting of logs is disabled.
245
184
  Logs for shared sync worker will only be available in the shared worker context
246
185
  `;
247
186
  const logger = this.options.logger;
248
- logger ? logger.warn(warning) : console.warn(warning);
187
+ logger ? logger.log({ level: LogLevels.warn, message: warning }) : console.warn(warning);
249
188
  }
250
189
  return new SharedWebStreamingSyncImplementation({
251
190
  ...syncOptions,
252
- db: this.database as WebDBAdapter // This should always be the case
191
+ db: this.database as WebDBAdapter, // This should always be the case
192
+ logLevel: this.options.sync?.logLevel ?? LogLevels.info,
193
+ enableBroadcastLogs: this.enableBroadcastLogs
253
194
  });
254
195
  default:
255
196
  return new WebStreamingSyncImplementation(syncOptions);
256
197
  }
257
198
  }
258
199
  }
200
+ /**
201
+ * A PowerSync database which provides SQLite functionality
202
+ * which is automatically synced.
203
+ *
204
+ * @example
205
+ * ```typescript
206
+ * export const db = new PowerSyncDatabase({
207
+ * schema: AppSchema,
208
+ * database: {
209
+ * dbFilename: 'example.db'
210
+ * }
211
+ * });
212
+ * ```
213
+ */
214
+ // Typed constructor to avoid leaking AbstractPowerSyncDatabase into the public interface
215
+ export const PowerSyncDatabase: PowerSyncDatabaseConstructor<WebPowerSyncDatabaseOptions> = WebPowerSyncDatabase;
216
+ export interface PowerSyncDatabase extends CommonPowerSyncDatabase {}
@@ -1,13 +1,5 @@
1
- import {
2
- ConnectionPool,
3
- DBAdapterDefaultMixin,
4
- DBAdapterListener,
5
- DBLockOptions,
6
- LockContext,
7
- Mutex,
8
- Semaphore,
9
- UnlockFn
10
- } from '@powersync/common';
1
+ import { DBAdapter, DBAdapterListener, DBLockOptions, LockContext } from '@powersync/common';
2
+ import { Mutex, Semaphore, UnlockFn } from '@powersync/shared-internals';
11
3
  import { SharedConnectionWorker, WebDBAdapter, WebDBAdapterConfiguration } from './WebDBAdapter.js';
12
4
  import { DatabaseClient } from './wa-sqlite/DatabaseClient.js';
13
5
 
@@ -16,7 +8,7 @@ type PendingListener = { listener: Partial<DBAdapterListener>; closeAfterRegiste
16
8
  /**
17
9
  * A connection pool implementation delegating to another pool opened asynchronnously.
18
10
  */
19
- class AsyncConnectionPool implements ConnectionPool {
11
+ export class AsyncDbAdapter extends DBAdapter {
20
12
  protected readonly state: Promise<PoolState>;
21
13
  protected resolvedWriter?: DatabaseClient;
22
14
 
@@ -26,6 +18,7 @@ class AsyncConnectionPool implements ConnectionPool {
26
18
  inner: Promise<PoolConnection>,
27
19
  readonly name: string
28
20
  ) {
21
+ super();
29
22
  this.state = inner.then((client) => {
30
23
  for (const pending of this.pendingListeners) {
31
24
  pending.closeAfterRegisteredOnResolvedPool = client.writer.registerListener(pending.listener);
@@ -81,6 +74,19 @@ class AsyncConnectionPool implements ConnectionPool {
81
74
  };
82
75
  }
83
76
  }
77
+
78
+ async shareConnection(): Promise<SharedConnectionWorker> {
79
+ const state = await this.state;
80
+ return state.writer.shareConnection();
81
+ }
82
+
83
+ getConfiguration(): WebDBAdapterConfiguration {
84
+ if (this.resolvedWriter) {
85
+ return this.resolvedWriter.getConfiguration();
86
+ }
87
+
88
+ throw new Error('AsyncDbAdapter.getConfiguration() can only be called after initializing it.');
89
+ }
84
90
  }
85
91
 
86
92
  export interface PoolConnection {
@@ -190,18 +196,3 @@ function readWritePoolState(writer: DatabaseClient, readers: DatabaseClient[]):
190
196
  }
191
197
  };
192
198
  }
193
-
194
- export class AsyncDbAdapter extends DBAdapterDefaultMixin(AsyncConnectionPool) implements WebDBAdapter {
195
- async shareConnection(): Promise<SharedConnectionWorker> {
196
- const state = await this.state;
197
- return state.writer.shareConnection();
198
- }
199
-
200
- getConfiguration(): WebDBAdapterConfiguration {
201
- if (this.resolvedWriter) {
202
- return this.resolvedWriter.getConfiguration();
203
- }
204
-
205
- throw new Error('AsyncDbAdapter.getConfiguration() can only be called after initializing it.');
206
- }
207
- }
@@ -1,17 +1,10 @@
1
- import {
2
- BaseObserver,
3
- DBAdapterListener,
4
- DBAdapter,
5
- DBLockOptions,
6
- LockContext,
7
- QueryResult,
8
- Transaction,
9
- Mutex,
10
- timeoutSignal
11
- } from '@powersync/common';
1
+ import { DBAdapter, DBLockOptions, LockContext, RawQueryResult } from '@powersync/common';
2
+ import { Mutex } from '@powersync/shared-internals';
12
3
 
13
- const MOCK_QUERY_RESPONSE: QueryResult = {
14
- rowsAffected: 0
4
+ const MOCK_QUERY_RESPONSE: RawQueryResult = {
5
+ rowsAffected: 0,
6
+ columnNames: [],
7
+ rawRows: []
15
8
  };
16
9
 
17
10
  /**
@@ -19,7 +12,7 @@ const MOCK_QUERY_RESPONSE: QueryResult = {
19
12
  * This adapter will return empty results for queries, which will allow
20
13
  * server rendered views to initially generate scaffolding components
21
14
  */
22
- export class SSRDBAdapter extends BaseObserver<DBAdapterListener> implements DBAdapter {
15
+ export class SSRDBAdapter extends DBAdapter {
23
16
  name: string;
24
17
  readMutex: Mutex;
25
18
  writeMutex: Mutex;
@@ -34,61 +27,18 @@ export class SSRDBAdapter extends BaseObserver<DBAdapterListener> implements DBA
34
27
  close() {}
35
28
 
36
29
  async readLock<T>(fn: (tx: LockContext) => Promise<T>, options?: DBLockOptions) {
37
- return this.readMutex.runExclusive(() => fn(this), timeoutSignal(options?.timeoutMs));
38
- }
39
-
40
- async readTransaction<T>(fn: (tx: Transaction) => Promise<T>, options?: DBLockOptions) {
41
- return this.readLock(() => fn(this.generateMockTransactionContext()), options);
30
+ return fn(new StubLockContext());
42
31
  }
43
32
 
44
33
  async writeLock<T>(fn: (tx: LockContext) => Promise<T>, options?: DBLockOptions) {
45
- return this.writeMutex.runExclusive(() => fn(this), timeoutSignal(options?.timeoutMs));
46
- }
47
-
48
- async writeTransaction<T>(fn: (tx: Transaction) => Promise<T>, options?: DBLockOptions) {
49
- return this.writeLock(() => fn(this.generateMockTransactionContext()), options);
50
- }
51
-
52
- async execute(query: string, params?: any[]): Promise<QueryResult> {
53
- return this.writeMutex.runExclusive(async () => MOCK_QUERY_RESPONSE);
54
- }
55
-
56
- async executeRaw(query: string, params?: any[]): Promise<any[][]> {
57
- return this.writeMutex.runExclusive(async () => []);
58
- }
59
-
60
- async executeBatch(query: string, params?: any[][]): Promise<QueryResult> {
61
- return this.writeMutex.runExclusive(async () => MOCK_QUERY_RESPONSE);
34
+ return fn(new StubLockContext());
62
35
  }
63
36
 
64
- async getAll<T>(sql: string, parameters?: any[]): Promise<T[]> {
65
- return [];
66
- }
67
-
68
- async getOptional<T>(sql: string, parameters?: any[] | undefined): Promise<T | null> {
69
- return null;
70
- }
71
-
72
- async get<T>(sql: string, parameters?: any[] | undefined): Promise<T> {
73
- throw new Error(`No values are returned in SSR mode`);
74
- }
37
+ async refreshSchema(): Promise<void> {}
38
+ }
75
39
 
76
- /**
77
- * Generates a mock context for use in read/write transactions.
78
- * `this` already mocks most of the API, commit and rollback mocks
79
- * are added here
80
- */
81
- private generateMockTransactionContext(): Transaction {
82
- return {
83
- ...this,
84
- commit: async () => {
85
- return MOCK_QUERY_RESPONSE;
86
- },
87
- rollback: async () => {
88
- return MOCK_QUERY_RESPONSE;
89
- }
90
- };
40
+ class StubLockContext extends LockContext {
41
+ async executeRaw(): Promise<RawQueryResult> {
42
+ return MOCK_QUERY_RESPONSE;
91
43
  }
92
-
93
- async refreshSchema(): Promise<void> {}
94
44
  }
@@ -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
 
4
4
  export type SharedConnectionWorker = {
5
5
  identifier: string;