@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
@@ -102,3 +102,4 @@ export class IndexDBFileSystemStorageAdapter {
102
102
  });
103
103
  }
104
104
  }
105
+ //# sourceMappingURL=IndexDBFileSystemAdapter.js.map
@@ -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
@@ -18,3 +18,4 @@ export const NAVIGATOR_TRIGGER_CLAIM_MANAGER = {
18
18
  return currentState.held?.find((heldLock) => heldLock.name == identifier) != null;
19
19
  }
20
20
  };
21
+ //# sourceMappingURL=NavigatorTriggerClaimManager.js.map
@@ -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,67 @@
1
+ import { type PowerSyncBackendConnector, type PowerSyncCloseOptions, BasePowerSyncDatabaseOptions, DatabaseSource, DBAdapter, PowerSyncDatabaseConstructor, CommonPowerSyncDatabase } from '@powersync/common';
2
+ import { BasePowerSyncDatabase, BucketStorageAdapter, 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 generateBucketStorageAdapter(): BucketStorageAdapter;
48
+ protected runExclusive<T>(cb: () => Promise<T>): Promise<T>;
49
+ protected generateSyncStreamImplementation(connector: PowerSyncBackendConnector, options: CreateSyncImplementationOptions): StreamingSyncImplementation;
50
+ }
51
+ /**
52
+ * A PowerSync database which provides SQLite functionality
53
+ * which is automatically synced.
54
+ *
55
+ * @example
56
+ * ```typescript
57
+ * export const db = new PowerSyncDatabase({
58
+ * schema: AppSchema,
59
+ * database: {
60
+ * dbFilename: 'example.db'
61
+ * }
62
+ * });
63
+ * ```
64
+ */
65
+ export declare const PowerSyncDatabase: PowerSyncDatabaseConstructor<WebPowerSyncDatabaseOptions>;
66
+ export interface PowerSyncDatabase extends CommonPowerSyncDatabase {
67
+ }
@@ -1,58 +1,26 @@
1
- import { AbstractPowerSyncDatabase, SqliteBucketStorage, isDBAdapter, isSQLOpenFactory, Mutex } from '@powersync/common';
1
+ import { LogLevels } from '@powersync/common';
2
+ import { BasePowerSyncDatabase, Mutex, SqliteBucketStorage, 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
9
  import { WebStreamingSyncImplementation } from './sync/WebStreamingSyncImplementation.js';
10
10
  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
- };
11
+ import { resolveAndValidateOptions } from './adapters/resolveAndValidateOptions.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,27 @@ 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
82
  generateBucketStorageAdapter() {
114
- return new SqliteBucketStorage(this.database);
83
+ return new SqliteBucketStorage(this.database, this.logger);
115
84
  }
116
85
  async runExclusive(cb) {
117
- if (this.resolvedFlags.ssrMode) {
118
- return PowerSyncDatabase.SHARED_MUTEX.runExclusive(cb);
86
+ if (this.resolvedOpenOptions.ssrMode) {
87
+ return WebPowerSyncDatabase.SHARED_MUTEX.runExclusive(cb);
119
88
  }
120
89
  return getNavigatorLocks().request(`lock-${this.database.name}`, cb);
121
90
  }
@@ -124,7 +93,6 @@ export class PowerSyncDatabase extends AbstractPowerSyncDatabase {
124
93
  const syncOptions = {
125
94
  ...this.options,
126
95
  ...options,
127
- flags: this.resolvedFlags,
128
96
  adapter: this.bucketStorageAdapter,
129
97
  remote,
130
98
  uploadCrud: async () => {
@@ -135,23 +103,42 @@ export class PowerSyncDatabase extends AbstractPowerSyncDatabase {
135
103
  logger: this.logger
136
104
  };
137
105
  switch (true) {
138
- case this.resolvedFlags.ssrMode:
139
- return new SSRStreamingSyncImplementation(syncOptions);
140
- case this.resolvedFlags.enableMultiTabs:
141
- if (!this.resolvedFlags.broadcastLogs) {
106
+ case this.resolvedOpenOptions.ssrMode:
107
+ return new SSRStreamingSyncImplementation();
108
+ case this.resolvedOpenOptions.enableMultiTabs:
109
+ if (!this.enableBroadcastLogs) {
142
110
  const warning = `
143
111
  Multiple tabs are enabled, but broadcasting of logs is disabled.
144
112
  Logs for shared sync worker will only be available in the shared worker context
145
113
  `;
146
114
  const logger = this.options.logger;
147
- logger ? logger.warn(warning) : console.warn(warning);
115
+ logger ? logger.log({ level: LogLevels.warn, message: warning }) : console.warn(warning);
148
116
  }
149
117
  return new SharedWebStreamingSyncImplementation({
150
118
  ...syncOptions,
151
- db: this.database // This should always be the case
119
+ db: this.database, // This should always be the case
120
+ logLevel: this.options.sync?.logLevel ?? LogLevels.info,
121
+ enableBroadcastLogs: this.enableBroadcastLogs
152
122
  });
153
123
  default:
154
124
  return new WebStreamingSyncImplementation(syncOptions);
155
125
  }
156
126
  }
157
127
  }
128
+ /**
129
+ * A PowerSync database which provides SQLite functionality
130
+ * which is automatically synced.
131
+ *
132
+ * @example
133
+ * ```typescript
134
+ * export const db = new PowerSyncDatabase({
135
+ * schema: AppSchema,
136
+ * database: {
137
+ * dbFilename: 'example.db'
138
+ * }
139
+ * });
140
+ * ```
141
+ */
142
+ // Typed constructor to avoid leaking AbstractPowerSyncDatabase into the public interface
143
+ export const PowerSyncDatabase = WebPowerSyncDatabase;
144
+ //# 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,15 @@
1
- import { DBAdapterDefaultMixin, Mutex, Semaphore } from '@powersync/common';
1
+ import { DBAdapter } from '@powersync/common';
2
+ import { Mutex, Semaphore } from '@powersync/shared-internals';
2
3
  /**
3
4
  * A connection pool implementation delegating to another pool opened asynchronnously.
4
5
  */
5
- class AsyncConnectionPool {
6
+ export class AsyncDbAdapter extends DBAdapter {
6
7
  name;
7
8
  state;
8
9
  resolvedWriter;
9
10
  pendingListeners = new Set();
10
11
  constructor(inner, name) {
12
+ super();
11
13
  this.name = name;
12
14
  this.state = inner.then((client) => {
13
15
  for (const pending of this.pendingListeners) {
@@ -58,6 +60,16 @@ class AsyncConnectionPool {
58
60
  };
59
61
  }
60
62
  }
63
+ async shareConnection() {
64
+ const state = await this.state;
65
+ return state.writer.shareConnection();
66
+ }
67
+ getConfiguration() {
68
+ if (this.resolvedWriter) {
69
+ return this.resolvedWriter.getConfiguration();
70
+ }
71
+ throw new Error('AsyncDbAdapter.getConfiguration() can only be called after initializing it.');
72
+ }
61
73
  }
62
74
  function singleConnectionPoolState(connection) {
63
75
  return {
@@ -149,15 +161,4 @@ function readWritePoolState(writer, readers) {
149
161
  }
150
162
  };
151
163
  }
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
+ //# 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=WebDBAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebDBAdapter.js","sourceRoot":"","sources":["../../../src/db/adapters/WebDBAdapter.ts"],"names":[],"mappings":""}
@@ -0,0 +1,87 @@
1
+ import { SQLOpenOptions } from '@powersync/common';
2
+ import { WASQLiteVFS } from './wa-sqlite/vfs.js';
3
+ export interface WebSpecificOpenOptions {
4
+ /**
5
+ * SQLite operations are currently not supported in SSR mode.
6
+ * A warning will be logged if attempting to use SQLite in SSR.
7
+ * Setting this to `true` will disabled the warning above.
8
+ */
9
+ disableSSRWarning: boolean;
10
+ /**
11
+ * Enables multi tab support.
12
+ *
13
+ * Enabling multi-tab support will transparently make PowerSync manage the sync process in a shared worker collecting
14
+ * Sync Streams across tabs. Additionally, it enables a shared worker for IndexedDB databases.
15
+ *
16
+ * It is still valid to open multiple tabs when this option is disabled, but the experience may be degrated as only
17
+ * one tab can sync at the time.
18
+ *
19
+ * This is enabled by default on Desktop browsers if shared workers are enabled, except for Safari.
20
+ */
21
+ enableMultiTabs: boolean;
22
+ /**
23
+ * The SQLite connection is often executed through a web worker in order to offload computation and because some file
24
+ * system implementations (notably those based on web filesystem APIs like OPFS) are only available in workers.
25
+ *
26
+ * Manually disabling the use of web workers is not recommended, but can be useful for testing or for environments
27
+ * or toolchains where web workers are not supported.
28
+ */
29
+ useWebWorker: boolean;
30
+ /**
31
+ * Open in SSR placeholder mode. DB operations and Sync operations will be a No-op
32
+ */
33
+ ssrMode: boolean;
34
+ /**
35
+ * The log level for database workers.
36
+ *
37
+ * Defaults to {@link LogLevels.info}.
38
+ */
39
+ databaseWorkerLogLevel: number;
40
+ /**
41
+ * Where to store SQLite temporary files. Defaults to 'MEMORY'.
42
+ * Setting this to `FILESYSTEM` can cause issues with larger queries or datasets.
43
+ */
44
+ temporaryStorage: TemporaryStorageOption;
45
+ /**
46
+ * Maximum SQLite cache size. Defaults to 50MB.
47
+ *
48
+ * For details, see: https://www.sqlite.org/pragma.html#pragma_cache_size
49
+ */
50
+ cacheSizeKb: number;
51
+ /**
52
+ * Encryption key for the database.
53
+ * If set, the database will be encrypted using ChaCha20.
54
+ */
55
+ encryptionKey: string | undefined;
56
+ vfs: WASQLiteVFS;
57
+ /**
58
+ * If the {@link vfs} supports it, an additional amount of read-only connections to open. Using additional read
59
+ * connections can speed up queries by dispatching them to multiple workers running them concurrently.
60
+ *
61
+ * {@link WASQLiteVFS.OPFSWriteAheadVFS} is the only VFS with support for multiple connections, so this option is
62
+ * ignored for other VFS implementations.
63
+ *
64
+ * Defaults to 1.
65
+ */
66
+ additionalReaders: number;
67
+ /**
68
+ * Allows you to override the default wasqlite db worker.
69
+ *
70
+ * You can either provide a path to the worker script
71
+ * or a factory method that returns a worker.
72
+ */
73
+ worker?: string | URL | ((options: ResolvedWebSQLOpenOptions) => Worker | SharedWorker);
74
+ /**
75
+ * Use an existing port to an initialized worker.
76
+ * A worker will be initialized if none is provided
77
+ */
78
+ workerPort?: MessagePort | undefined;
79
+ }
80
+ export interface ResolvedWebSQLOpenOptions extends SQLOpenOptions, WebSpecificOpenOptions {
81
+ }
82
+ export interface WebSQLOpenOptions extends SQLOpenOptions, Partial<WebSpecificOpenOptions> {
83
+ }
84
+ export declare enum TemporaryStorageOption {
85
+ MEMORY = "memory",
86
+ FILESYSTEM = "file"
87
+ }
@@ -0,0 +1,6 @@
1
+ export var TemporaryStorageOption;
2
+ (function (TemporaryStorageOption) {
3
+ TemporaryStorageOption["MEMORY"] = "memory";
4
+ TemporaryStorageOption["FILESYSTEM"] = "file";
5
+ })(TemporaryStorageOption || (TemporaryStorageOption = {}));
6
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/db/adapters/options.ts"],"names":[],"mappings":"AAgGA,MAAM,CAAN,IAAY,sBAGX;AAHD,WAAY,sBAAsB;IAChC,2CAAiB,CAAA;IACjB,6CAAmB,CAAA;AACrB,CAAC,EAHW,sBAAsB,KAAtB,sBAAsB,QAGjC"}
@@ -0,0 +1,5 @@
1
+ import { WebSpecificOpenOptions } from './options.js';
2
+ /**
3
+ * @internal
4
+ */
5
+ export declare function resolveAndValidateOptions<And = {}>(options: Partial<WebSpecificOpenOptions> & And): WebSpecificOpenOptions & And;
@@ -0,0 +1,33 @@
1
+ import { LogLevels } from '@powersync/common';
2
+ import { TemporaryStorageOption } from './options.js';
3
+ import { vfsRequiresDedicatedWorkers, WASQLiteVFS } from './wa-sqlite/vfs.js';
4
+ /**
5
+ * @internal
6
+ */
7
+ export function resolveAndValidateOptions(options) {
8
+ const defaults = {
9
+ disableSSRWarning: false,
10
+ ssrMode: !('window' in globalThis),
11
+ /**
12
+ * Multiple tabs are by default not supported on Android, iOS and Safari.
13
+ * Other platforms will have multiple tabs enabled by default.
14
+ */
15
+ enableMultiTabs: typeof globalThis.navigator !== 'undefined' && // For SSR purposes
16
+ typeof SharedWorker !== 'undefined' &&
17
+ !navigator.userAgent.match(/(Android|iPhone|iPod|iPad)/i) &&
18
+ !window.safari,
19
+ useWebWorker: true,
20
+ databaseWorkerLogLevel: LogLevels.info,
21
+ temporaryStorage: TemporaryStorageOption.MEMORY,
22
+ cacheSizeKb: 50 * 1024,
23
+ encryptionKey: undefined,
24
+ vfs: WASQLiteVFS.IDBBatchAtomicVFS,
25
+ additionalReaders: 1
26
+ };
27
+ const resolved = Object.assign(defaults, options);
28
+ if (vfsRequiresDedicatedWorkers(resolved.vfs) && !resolved.useWebWorker) {
29
+ throw new Error(`Invalid configuration: The 'useWebWorker' flag must be true when using an OPFS-based VFS (${resolved.vfs}).`);
30
+ }
31
+ return resolved;
32
+ }
33
+ //# sourceMappingURL=resolveAndValidateOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveAndValidateOptions.js","sourceRoot":"","sources":["../../../src/db/adapters/resolveAndValidateOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAA0B,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,2BAA2B,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE9E;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACvC,OAA8C;IAE9C,MAAM,QAAQ,GAA2B;QACvC,iBAAiB,EAAE,KAAK;QACxB,OAAO,EAAE,CAAC,CAAC,QAAQ,IAAI,UAAU,CAAC;QAClC;;;WAGG;QACH,eAAe,EACb,OAAO,UAAU,CAAC,SAAS,KAAK,WAAW,IAAI,mBAAmB;YAClE,OAAO,YAAY,KAAK,WAAW;YACnC,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,6BAA6B,CAAC;YACzD,CAAE,MAAc,CAAC,MAAM;QACzB,YAAY,EAAE,IAAI;QAClB,sBAAsB,EAAE,SAAS,CAAC,IAAI;QACtC,gBAAgB,EAAE,sBAAsB,CAAC,MAAM;QAC/C,WAAW,EAAE,EAAE,GAAG,IAAI;QACtB,aAAa,EAAE,SAAS;QACxB,GAAG,EAAE,WAAW,CAAC,iBAAiB;QAClC,iBAAiB,EAAE,CAAC;KACrB,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClD,IAAI,2BAA2B,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CACb,6FAA6F,QAAQ,CAAC,GAAG,IAAI,CAC9G,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1,6 +1,5 @@
1
- import { UnlockFn } from '@powersync/common';
2
- import { RawSqliteConnection } from './RawSqliteConnection.js';
3
- import { ResolvedWASQLiteOpenFactoryOptions } from './WASQLiteOpenFactory.js';
1
+ import { UnlockFn } from '@powersync/shared-internals';
2
+ import { RawSqliteConnection, RawWaSqliteDatabaseOptions } from './RawSqliteConnection.js';
4
3
  /**
5
4
  * A wrapper around a {@link RawSqliteConnection} allowing multiple tabs to access it.
6
5
  *
@@ -26,7 +25,7 @@ export declare class ConcurrentSqliteConnection {
26
25
  * In those setups, we use navigator locks instead of an internal mutex to guard access..
27
26
  */
28
27
  constructor(inner: RawSqliteConnection, needsNavigatorLocks: boolean);
29
- get options(): ResolvedWASQLiteOpenFactoryOptions;
28
+ get options(): RawWaSqliteDatabaseOptions;
30
29
  acquireMutex(abort?: AbortSignal): Promise<UnlockFn>;
31
30
  unsafeUseInner(): RawSqliteConnection;
32
31
  /**