@powersync/web 0.0.0-dev-20260504100448 → 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 (199) 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 -14
  70. package/lib/{src/db → db}/sync/SharedWebStreamingSyncImplementation.js +32 -66
  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 -15
  103. package/lib/{src/worker → worker}/sync/SharedSyncImplementation.js +43 -43
  104. package/lib/worker/sync/SharedSyncImplementation.js.map +1 -0
  105. package/lib/{src/worker → worker}/sync/WorkerClient.d.ts +3 -3
  106. package/lib/{src/worker → worker}/sync/WorkerClient.js +3 -2
  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 +22 -29
  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 -77
  125. package/src/db/sync/WebRemote.ts +23 -26
  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 -63
  134. package/src/worker/sync/WorkerClient.ts +4 -4
  135. package/src/worker/worker.ts +38 -0
  136. package/dist/index.umd.js +0 -7613
  137. package/dist/index.umd.js.map +0 -1
  138. package/dist/worker/SharedSyncImplementation.umd.js +0 -15885
  139. package/dist/worker/SharedSyncImplementation.umd.js.map +0 -1
  140. package/dist/worker/WASQLiteDB.umd.js +0 -17164
  141. package/dist/worker/WASQLiteDB.umd.js.map +0 -1
  142. 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
  143. 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
  144. 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
  145. 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
  146. 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
  147. 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
  148. 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
  149. 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
  150. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-2fb422.umd.js +0 -3562
  151. 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
  152. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-96fb23.umd.js +0 -2478
  153. 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
  154. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-c89911.umd.js +0 -1681
  155. 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
  156. package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-ec4eb1.umd.js +0 -1820
  157. 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
  158. package/lib/package.json +0 -91
  159. package/lib/src/db/PowerSyncDatabase.d.ts +0 -78
  160. package/lib/src/db/adapters/AbstractWebPowerSyncDatabaseOpenFactory.d.ts +0 -23
  161. package/lib/src/db/adapters/AbstractWebPowerSyncDatabaseOpenFactory.js +0 -26
  162. package/lib/src/db/adapters/AsyncWebAdapter.d.ts +0 -50
  163. package/lib/src/db/adapters/SSRDBAdapter.d.ts +0 -30
  164. package/lib/src/db/adapters/SSRDBAdapter.js +0 -68
  165. package/lib/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.d.ts +0 -45
  166. package/lib/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.js +0 -145
  167. package/lib/src/db/adapters/wa-sqlite/WASQLitePowerSyncDatabaseOpenFactory.d.ts +0 -15
  168. package/lib/src/db/adapters/wa-sqlite/WASQLitePowerSyncDatabaseOpenFactory.js +0 -21
  169. package/lib/src/db/adapters/web-sql-flags.d.ts +0 -92
  170. package/lib/src/db/adapters/web-sql-flags.js +0 -36
  171. package/lib/src/db/sync/WebRemote.d.ts +0 -7
  172. package/lib/src/db/sync/WebRemote.js +0 -32
  173. package/lib/src/worker/db/MultiDatabaseServer.d.ts +0 -17
  174. package/lib/src/worker/db/WASQLiteDB.worker.d.ts +0 -4
  175. package/lib/src/worker/db/WASQLiteDB.worker.js +0 -30
  176. package/lib/src/worker/db/open-worker-database.d.ts +0 -14
  177. package/lib/src/worker/db/open-worker-database.js +0 -52
  178. package/lib/src/worker/sync/AbstractSharedSyncClientProvider.d.ts +0 -19
  179. package/lib/src/worker/sync/BroadcastLogger.d.ts +0 -47
  180. package/lib/src/worker/sync/BroadcastLogger.js +0 -128
  181. package/lib/src/worker/sync/SharedSyncImplementation.worker.d.ts +0 -1
  182. package/lib/src/worker/sync/SharedSyncImplementation.worker.js +0 -11
  183. package/lib/tsconfig.tsbuildinfo +0 -1
  184. package/src/db/adapters/AbstractWebPowerSyncDatabaseOpenFactory.ts +0 -47
  185. package/src/db/adapters/wa-sqlite/WASQLitePowerSyncDatabaseOpenFactory.ts +0 -24
  186. package/src/db/adapters/web-sql-flags.ts +0 -141
  187. package/src/worker/db/WASQLiteDB.worker.ts +0 -35
  188. package/src/worker/db/open-worker-database.ts +0 -62
  189. package/src/worker/sync/SharedSyncImplementation.worker.ts +0 -14
  190. /package/dist/{8e97452e297be23b5e50.wasm → worker/assets/mc-wa-sqlite-CnHbhWvs.wasm} +0 -0
  191. /package/dist/{2075a31bb151adbb9767.wasm → worker/assets/mc-wa-sqlite-async-D6idQS2r.wasm} +0 -0
  192. /package/dist/{3322bc84de986b63c2cd.wasm → worker/assets/wa-sqlite-XZW__iJk.wasm} +0 -0
  193. /package/dist/{fbc178b70d530e8ce02b.wasm → worker/assets/wa-sqlite-async-rHzzC98y.wasm} +0 -0
  194. /package/lib/{src/attachments → attachments}/IndexDBFileSystemAdapter.d.ts +0 -0
  195. /package/lib/{src/db → db}/adapters/wa-sqlite/vfs.d.ts +0 -0
  196. /package/lib/{src/db → db}/sync/userAgent.d.ts +0 -0
  197. /package/lib/{src/shared → shared}/navigator.d.ts +0 -0
  198. /package/lib/{src/shared → shared}/tab_close_signal.d.ts +0 -0
  199. /package/lib/{src/db/adapters/WebDBAdapter.js → worker/worker.d.ts} +0 -0
@@ -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,12 +28,6 @@ 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
  */
@@ -66,3 +59,4 @@ export class SSRStreamingSyncImplementation extends BaseObserver {
66
59
  */
67
60
  markConnectionMayHaveChanged() { }
68
61
  }
62
+ //# 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,KAAK,CAAC,kBAAkB;QACtB,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB;QACpB,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,iBAAiB,KAAI,CAAC;IAEtB;;OAEG;IACH,mBAAmB,KAAU,CAAC;IAE9B;;OAEG;IACH,4BAA4B,KAAU,CAAC;CACxC"}
@@ -1,34 +1,31 @@
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
+ get logger(): import("@powersync/common").PowerSyncLogger;
23
+ log(record: LogRecord): void;
29
24
  }
30
25
  export interface SharedWebStreamingSyncImplementationOptions extends WebStreamingSyncImplementationOptions {
26
+ logLevel: number;
31
27
  db: WebDBAdapter;
28
+ enableBroadcastLogs: boolean;
32
29
  }
33
30
  /**
34
31
  * The local part of the sync implementation on the web, which talks to a sync implementation hosted in a shared worker.
@@ -36,17 +33,19 @@ export interface SharedWebStreamingSyncImplementationOptions extends WebStreamin
36
33
  export declare class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplementation {
37
34
  protected syncManager: Comlink.Remote<WorkerClient>;
38
35
  protected clientProvider: SharedSyncClientProvider;
39
- protected messagePort: MessagePort;
36
+ protected worker: WorkerConnection;
40
37
  protected isInitialized: Promise<void>;
41
38
  protected dbAdapter: WebDBAdapter;
42
39
  private abortOnClose;
40
+ private logLevel;
41
+ private enableBroadcastLogs;
43
42
  constructor(options: SharedWebStreamingSyncImplementationOptions);
44
43
  protected _init(): Promise<void>;
45
44
  /**
46
45
  * Starts the sync process, this effectively acts as a call to
47
46
  * `connect` if not yet connected.
48
47
  */
49
- connect(options?: PowerSyncConnectionOptions): Promise<void>;
48
+ connect(options: ResolvedSyncOptions): Promise<void>;
50
49
  disconnect(): Promise<void>;
51
50
  getWriteCheckpoint(): Promise<string>;
52
51
  dispose(): Promise<void>;
@@ -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.
@@ -51,29 +51,8 @@ class SharedSyncClientProvider extends AbstractSharedSyncClientProvider {
51
51
  get logger() {
52
52
  return this.options.logger;
53
53
  }
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);
54
+ log(record) {
55
+ this.logger.log(record);
77
56
  }
78
57
  }
79
58
  /**
@@ -82,57 +61,43 @@ class SharedSyncClientProvider extends AbstractSharedSyncClientProvider {
82
61
  export class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplementation {
83
62
  syncManager;
84
63
  clientProvider;
85
- messagePort;
64
+ worker;
86
65
  isInitialized;
87
66
  dbAdapter;
88
67
  abortOnClose = new AbortController();
68
+ logLevel;
69
+ enableBroadcastLogs;
89
70
  constructor(options) {
90
71
  super(options);
91
72
  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
- };
73
+ this.logLevel = options.logLevel;
74
+ this.enableBroadcastLogs = options.enableBroadcastLogs;
103
75
  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
- }
76
+ if (typeof syncWorker === 'function') {
77
+ this.worker = connectToExistingWorker(syncWorker(), 'sync');
114
78
  }
115
79
  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;
80
+ this.worker = connectToWorker({
81
+ service: 'sync',
82
+ databaseIdentifier: this.webOptions.identifier,
83
+ shared: true,
84
+ customWorker: syncWorker
85
+ });
121
86
  }
122
87
  /**
123
88
  * Pass along any sync status updates to this listener
124
89
  */
125
- this.clientProvider = new SharedSyncClientProvider(this.webOptions, (status) => {
126
- this.updateSyncStatus(status);
90
+ this.clientProvider = new SharedSyncClientProvider(this.webOptions, ({ core, dataFlow }) => {
91
+ this.updateSyncStatus(core, dataFlow);
127
92
  }, options.db);
128
- this.syncManager = Comlink.wrap(this.messagePort);
93
+ this.syncManager = Comlink.wrap(this.worker.endpoint);
129
94
  /**
130
95
  * The sync worker will call this client provider when it needs
131
96
  * to fetch credentials or upload data.
132
97
  * This performs bi-directional method calling.
133
98
  */
134
- Comlink.expose(this.clientProvider, this.messagePort);
135
- this.syncManager.setLogLevel(this.logger.getLevel());
99
+ Comlink.expose(this.clientProvider, this.worker.endpoint);
100
+ this.syncManager.setLogLevel(this.logLevel);
136
101
  this.triggerCrudUpload = this.syncManager.triggerCrudUpload;
137
102
  /**
138
103
  * Opens MessagePort to the existing shared DB worker.
@@ -159,16 +124,14 @@ export class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplem
159
124
  const closeSignal = await generateTabCloseSignal(this.abortOnClose.signal);
160
125
  // Awaiting here ensures the worker is waiting for the lock
161
126
  await this.syncManager.addLockBasedCloseSignal(closeSignal);
162
- const { crudUploadThrottleMs, identifier, retryDelayMs } = this.options;
163
- const flags = { ...this.webOptions.flags, workers: undefined };
127
+ const { identifier } = this.options;
164
128
  await this.syncManager.setParams({
165
129
  dbParams: this.dbAdapter.getConfiguration(),
166
130
  streamOptions: {
167
- crudUploadThrottleMs,
168
131
  identifier,
169
- retryDelayMs,
170
- flags: flags
171
- }
132
+ serializedSchema: this.options.serializedSchema
133
+ },
134
+ enableBroadcastLogs: this.enableBroadcastLogs
172
135
  }, this.options.subscriptions);
173
136
  }
174
137
  /**
@@ -177,7 +140,7 @@ export class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplem
177
140
  */
178
141
  async connect(options) {
179
142
  await this.waitForReady();
180
- return this.syncManager.connect(options);
143
+ return this.syncManager.connect(options, this.options.serializedSchema);
181
144
  }
182
145
  async disconnect() {
183
146
  await this.waitForReady();
@@ -190,8 +153,10 @@ export class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplem
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,13 +167,13 @@ 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;
@@ -217,3 +182,4 @@ export class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplem
217
182
  this.syncManager.updateSubscriptions(subscriptions);
218
183
  }
219
184
  }
185
+ //# sourceMappingURL=SharedWebStreamingSyncImplementation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SharedWebStreamingSyncImplementation.js","sourceRoot":"","sources":["../../../src/db/sync/SharedWebStreamingSyncImplementation.ts"],"names":[],"mappings":"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"}
@@ -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,8 +12,9 @@ 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
  }
18
19
  }
20
+ //# sourceMappingURL=WebStreamingSyncImplementation.js.map
@@ -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"}
@@ -62,3 +62,4 @@ function getOsInfo(nav) {
62
62
  }
63
63
  return null;
64
64
  }
65
+ //# sourceMappingURL=userAgent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userAgent.js","sourceRoot":"","sources":["../../../src/db/sync/userAgent.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,8 @@
1
1
  export * from '@powersync/common';
2
2
  export * from './attachments/IndexDBFileSystemAdapter.js';
3
- export * from './db/adapters/AbstractWebPowerSyncDatabaseOpenFactory.js';
4
3
  export { WASQLiteVFS } from './db/adapters/wa-sqlite/vfs.js';
5
4
  export * from './db/adapters/wa-sqlite/WASQLiteOpenFactory.js';
6
- export * from './db/adapters/wa-sqlite/WASQLitePowerSyncDatabaseOpenFactory.js';
7
- export * from './db/adapters/web-sql-flags.js';
5
+ export * from './db/adapters/options.js';
8
6
  export * from './db/PowerSyncDatabase.js';
9
7
  export * from './db/sync/SharedWebStreamingSyncImplementation.js';
10
8
  export * from './db/sync/WebRemote.js';
@@ -1,12 +1,11 @@
1
1
  export * from '@powersync/common';
2
2
  export * from './attachments/IndexDBFileSystemAdapter.js';
3
- export * from './db/adapters/AbstractWebPowerSyncDatabaseOpenFactory.js';
4
3
  export { WASQLiteVFS } from './db/adapters/wa-sqlite/vfs.js';
5
4
  export * from './db/adapters/wa-sqlite/WASQLiteOpenFactory.js';
6
- export * from './db/adapters/wa-sqlite/WASQLitePowerSyncDatabaseOpenFactory.js';
7
- export * from './db/adapters/web-sql-flags.js';
5
+ export * from './db/adapters/options.js';
8
6
  export * from './db/PowerSyncDatabase.js';
9
7
  export * from './db/sync/SharedWebStreamingSyncImplementation.js';
10
8
  export * from './db/sync/WebRemote.js';
11
9
  export * from './db/sync/WebStreamingSyncImplementation.js';
12
10
  export * from './db/adapters/WebDBAdapter.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,2CAA2C,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mDAAmD,CAAC;AAClE,cAAc,wBAAwB,CAAC;AACvC,cAAc,6CAA6C,CAAC;AAC5D,cAAc,+BAA+B,CAAC"}
@@ -4,3 +4,4 @@ export const getNavigatorLocks = () => {
4
4
  }
5
5
  throw new Error('Navigator locks are not available in an insecure context. Use a secure context such as HTTPS or http://localhost.');
6
6
  };
7
+ //# sourceMappingURL=navigator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigator.js","sourceRoot":"","sources":["../../src/shared/navigator.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAgB,EAAE;IACjD,IAAI,OAAO,IAAI,SAAS,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QAC5C,OAAO,SAAS,CAAC,KAAK,CAAC;IACzB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,mHAAmH,CACpH,CAAC;AACJ,CAAC,CAAC"}
@@ -24,3 +24,4 @@ export function generateTabCloseSignal(abort) {
24
24
  .catch(reject);
25
25
  });
26
26
  }
27
+ //# sourceMappingURL=tab_close_signal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tab_close_signal.js","sourceRoot":"","sources":["../../src/shared/tab_close_signal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAmB;IACxD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAC/C,iBAAiB,EAAE;aAChB,OAAO,CAAC,oBAAoB,MAAM,CAAC,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACpE,OAAO,CAAC,IAAK,CAAC,IAAI,CAAC,CAAC;YAEpB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBACnC,IAAI,KAAK,EAAE,CAAC;oBACV,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;aACD,KAAK,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,5 @@
1
+ export type WorkerService = 'database' | 'sync';
2
+ export interface SharedWorkerConnectionRequest {
3
+ service: WorkerService;
4
+ port: MessagePort;
5
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SharedWorkerConnectionRequest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SharedWorkerConnectionRequest.js","sourceRoot":"","sources":["../../src/worker/SharedWorkerConnectionRequest.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ import { WorkerService } from './SharedWorkerConnectionRequest.js';
2
+ export interface OpenWorkerOptions {
3
+ service: WorkerService;
4
+ databaseIdentifier: string;
5
+ customWorker?: string | URL;
6
+ shared: boolean;
7
+ }
8
+ export interface WorkerConnection {
9
+ endpoint: MessagePort | Worker;
10
+ worker: Worker | SharedWorker;
11
+ close: () => void;
12
+ }
13
+ export declare function connectToWorker({ service, databaseIdentifier, customWorker, shared }: OpenWorkerOptions): WorkerConnection;
14
+ export declare function connectToExistingWorker(worker: Worker | SharedWorker, service: WorkerService): WorkerConnection;
15
+ export declare function isSharedWorker(worker: Worker | SharedWorker): worker is SharedWorker;
@@ -0,0 +1,77 @@
1
+ export function connectToWorker({ service, databaseIdentifier, customWorker, shared }) {
2
+ const name = `${shared ? 'shared-' : ''}powersync-${databaseIdentifier}`;
3
+ let worker;
4
+ if (customWorker) {
5
+ worker = shared
6
+ ? new SharedWorker(customWorker, {
7
+ /* @vite-ignore */
8
+ name,
9
+ type: 'module'
10
+ })
11
+ : new Worker(customWorker, {
12
+ /* @vite-ignore */
13
+ name,
14
+ type: 'module'
15
+ });
16
+ }
17
+ else {
18
+ worker = spawnDefaultPowerSyncWorker(shared, name);
19
+ }
20
+ return connectToExistingWorker(worker, service);
21
+ }
22
+ /**
23
+ * Opens the default PowerSync worker.
24
+ *
25
+ * When users depend on the web SDK, we assume they use their own bundler (either vite or webpack). Both recognize the
26
+ * syntax of worker constructors with a string literal and will rewrite the URL as part of their bundling processes.
27
+ *
28
+ * React Native / Metro users can't rely on this on the web, as their app is not a JavaScript module and import.meta.url
29
+ * is not rewritten by Metro. For those users, we include a pre-bundled worker they can copy into a static assets
30
+ * directory and load with a custom URI. This also means that defaultWorker cannot work with Metro for React Native Web.
31
+ * We have a custom rollup plugin and conditional exports that replaces this function with a throwing stub for that
32
+ * platform. This allows a helpful error message.
33
+ */
34
+ // Note: When changing this function, also update disableDefaultWorkers in rollup.config.ts.
35
+ function spawnDefaultPowerSyncWorker(shared, name) {
36
+ return shared
37
+ ? new SharedWorker(new URL('./worker.js', import.meta.url), {
38
+ /* @vite-ignore */
39
+ name,
40
+ type: 'module'
41
+ })
42
+ : new Worker(new URL('./worker.js', import.meta.url), {
43
+ /* @vite-ignore */
44
+ name,
45
+ type: 'module'
46
+ });
47
+ }
48
+ export function connectToExistingWorker(worker, service) {
49
+ const isShared = isSharedWorker(worker);
50
+ if (isShared) {
51
+ const { port1, port2 } = new MessageChannel();
52
+ const mainPort = worker.port;
53
+ mainPort.start();
54
+ mainPort.postMessage({ port: port1, service }, [port1]);
55
+ port2.start();
56
+ return {
57
+ endpoint: port2,
58
+ worker,
59
+ close() {
60
+ port2.close();
61
+ }
62
+ };
63
+ }
64
+ else {
65
+ return {
66
+ endpoint: worker,
67
+ worker,
68
+ close() {
69
+ worker.terminate();
70
+ }
71
+ };
72
+ }
73
+ }
74
+ export function isSharedWorker(worker) {
75
+ return 'port' in worker;
76
+ }
77
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/worker/client.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,eAAe,CAAC,EAC9B,OAAO,EACP,kBAAkB,EAClB,YAAY,EACZ,MAAM,EACY;IAClB,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,kBAAkB,EAAE,CAAC;IACzE,IAAI,MAA6B,CAAC;IAElC,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,GAAG,MAAM;YACb,CAAC,CAAC,IAAI,YAAY,CAAC,YAAY,EAAE;gBAC7B,kBAAkB;gBAClB,IAAI;gBACJ,IAAI,EAAE,QAAQ;aACf,CAAC;YACJ,CAAC,CAAC,IAAI,MAAM,CAAC,YAAY,EAAE;gBACvB,kBAAkB;gBAClB,IAAI;gBACJ,IAAI,EAAE,QAAQ;aACf,CAAC,CAAC;IACT,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,2BAA2B,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,4FAA4F;AAC5F,SAAS,2BAA2B,CAAC,MAAe,EAAE,IAAY;IAChE,OAAO,MAAM;QACX,CAAC,CAAC,IAAI,YAAY,CAAC,IAAI,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACxD,kBAAkB;YAClB,IAAI;YACJ,IAAI,EAAE,QAAQ;SACf,CAAC;QACJ,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAClD,kBAAkB;YAClB,IAAI;YACJ,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;AACT,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAA6B,EAAE,OAAsB;IAC3F,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,cAAc,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAI,MAAuB,CAAC,IAAI,CAAC;QAC/C,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAA0C,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAEhG,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,MAAM;YACN,KAAK;gBACH,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,CAAC;SACF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO;YACL,QAAQ,EAAE,MAAgB;YAC1B,MAAM;YACN,KAAK;gBACH,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,CAAC;SACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAA6B;IAC1D,OAAO,MAAM,IAAI,MAAM,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { PowerSyncLogger } from '@powersync/common';
2
+ import { ClientConnectionView } from '../../db/adapters/wa-sqlite/DatabaseServer.js';
3
+ import { RawWaSqliteDatabaseOptions } from '../../db/adapters/wa-sqlite/RawSqliteConnection.js';
4
+ export interface ConnectToMultiDatabaseServerOptions {
5
+ logLevel: number;
6
+ database: RawWaSqliteDatabaseOptions;
7
+ lockName: string;
8
+ }
9
+ /**
10
+ * Shared state to manage multiple database connections hosted by a worker.
11
+ */
12
+ export declare class MultiDatabaseServer {
13
+ readonly logger: PowerSyncLogger;
14
+ private activeDatabases;
15
+ constructor(logger: PowerSyncLogger);
16
+ handleConnection({ logLevel, database, lockName }: ConnectToMultiDatabaseServerOptions): Promise<ClientConnectionView>;
17
+ connectToExisting(name: string, lockName: string): Promise<ClientConnectionView>;
18
+ openConnectionLocally(logger: PowerSyncLogger, options: RawWaSqliteDatabaseOptions, lockName?: string): Promise<ClientConnectionView>;
19
+ private databaseOpenAttempt;
20
+ closeAll(): Promise<void[]>;
21
+ }
22
+ export declare const isSharedWorker: boolean;