@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
@@ -1,141 +0,0 @@
1
- import { type ILogger, SQLOpenOptions } from '@powersync/common';
2
-
3
- /**
4
- * Common settings used when creating SQL connections on web.
5
- */
6
- export interface WebSQLFlags {
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
- /**
14
- * SQLite operations are currently not supported in SSR mode.
15
- * A warning will be logged if attempting to use SQLite in SSR.
16
- * Setting this to `true` will disabled the warning above.
17
- */
18
- disableSSRWarning?: boolean;
19
-
20
- /**
21
- * Enables multi tab support
22
- */
23
- enableMultiTabs?: boolean;
24
-
25
- /**
26
- * The SQLite connection is often executed through a web worker
27
- * in order to offload computation. This can be used to manually
28
- * disable the use of web workers in environments where web workers
29
- * might be unstable.
30
- */
31
- useWebWorker?: boolean;
32
-
33
- /**
34
- * Open in SSR placeholder mode. DB operations and Sync operations will be a No-op
35
- */
36
- ssrMode?: boolean;
37
- }
38
-
39
- export type ResolvedWebSQLFlags = Required<WebSQLFlags>;
40
-
41
- export interface ResolvedWebSQLOpenOptions extends SQLOpenOptions {
42
- flags: ResolvedWebSQLFlags;
43
- /**
44
- * Where to store SQLite temporary files. Defaults to 'MEMORY'.
45
- * Setting this to `FILESYSTEM` can cause issues with larger queries or datasets.
46
- */
47
- temporaryStorage: TemporaryStorageOption;
48
-
49
- cacheSizeKb: number;
50
-
51
- /**
52
- * Encryption key for the database.
53
- * If set, the database will be encrypted using ChaCha20.
54
- */
55
- encryptionKey?: string;
56
- }
57
-
58
- export enum TemporaryStorageOption {
59
- MEMORY = 'memory',
60
- FILESYSTEM = 'file'
61
- }
62
-
63
- export const DEFAULT_CACHE_SIZE_KB = 50 * 1024;
64
-
65
- /**
66
- * Options for opening a Web SQL connection
67
- */
68
- export interface WebSQLOpenFactoryOptions extends SQLOpenOptions {
69
- flags?: WebSQLFlags;
70
-
71
- /**
72
- * Allows you to override the default wasqlite db worker.
73
- *
74
- * You can either provide a path to the worker script
75
- * or a factory method that returns a worker.
76
- */
77
- worker?: string | URL | ((options: ResolvedWebSQLOpenOptions) => Worker | SharedWorker);
78
-
79
- /**
80
- * Use an existing port to an initialized worker.
81
- * A worker will be initialized if none is provided
82
- */
83
- workerPort?: MessagePort;
84
-
85
- logger?: ILogger;
86
-
87
- /**
88
- * Where to store SQLite temporary files. Defaults to 'MEMORY'.
89
- * Setting this to `FILESYSTEM` can cause issues with larger queries or datasets.
90
- *
91
- * For details, see: https://www.sqlite.org/pragma.html#pragma_temp_store
92
- */
93
- temporaryStorage?: TemporaryStorageOption;
94
-
95
- /**
96
- * Maximum SQLite cache size. Defaults to 50MB.
97
- *
98
- * For details, see: https://www.sqlite.org/pragma.html#pragma_cache_size
99
- */
100
- cacheSizeKb?: number;
101
-
102
- /**
103
- * Encryption key for the database.
104
- * If set, the database will be encrypted using ChaCha20.
105
- */
106
- encryptionKey?: string;
107
- }
108
-
109
- export function isServerSide() {
110
- return typeof window == 'undefined';
111
- }
112
-
113
- export const DEFAULT_WEB_SQL_FLAGS: ResolvedWebSQLFlags = {
114
- broadcastLogs: true,
115
- disableSSRWarning: false,
116
- ssrMode: isServerSide(),
117
- /**
118
- * Multiple tabs are by default not supported on Android, iOS and Safari.
119
- * Other platforms will have multiple tabs enabled by default.
120
- */
121
- enableMultiTabs:
122
- typeof globalThis.navigator !== 'undefined' && // For SSR purposes
123
- typeof SharedWorker !== 'undefined' &&
124
- !navigator.userAgent.match(/(Android|iPhone|iPod|iPad)/i) &&
125
- !(window as any).safari,
126
- useWebWorker: true
127
- };
128
-
129
- export function resolveWebSQLFlags(flags?: WebSQLFlags): ResolvedWebSQLFlags {
130
- const resolvedFlags = {
131
- ...DEFAULT_WEB_SQL_FLAGS,
132
- ...(flags ?? {})
133
- };
134
- if (typeof flags?.enableMultiTabs != 'undefined') {
135
- resolvedFlags.enableMultiTabs = flags.enableMultiTabs;
136
- }
137
- if (flags?.useWebWorker === false) {
138
- resolvedFlags.enableMultiTabs = false;
139
- }
140
- return resolvedFlags;
141
- }
@@ -1,35 +0,0 @@
1
- /**
2
- * Supports both shared and dedicated workers, based on how the worker is constructed (new SharedWorker vs new Worker()).
3
- */
4
-
5
- import '@journeyapps/wa-sqlite';
6
- import { createBaseLogger, createLogger } from '@powersync/common';
7
- import * as Comlink from 'comlink';
8
- import { isSharedWorker, MultiDatabaseServer } from './MultiDatabaseServer.js';
9
- import { OpenWorkerConnection } from '../../db/adapters/wa-sqlite/DatabaseClient.js';
10
-
11
- const baseLogger = createBaseLogger();
12
- baseLogger.useDefaults();
13
- const logger = createLogger('db-worker');
14
-
15
- const server = new MultiDatabaseServer(logger);
16
- const exposedFunctions: OpenWorkerConnection = {
17
- connect: (config) => server.handleConnection(config),
18
- connectToExisting: ({ identifier, lockName }) => server.connectToExisting(identifier, lockName)
19
- };
20
-
21
- // Check if we're in a SharedWorker context
22
- if (isSharedWorker) {
23
- const _self: SharedWorkerGlobalScope = self as any;
24
- _self.onconnect = function (event: MessageEvent<string>) {
25
- const port = event.ports[0];
26
- Comlink.expose(exposedFunctions, port);
27
- };
28
- } else {
29
- // A dedicated worker can be shared externally
30
- Comlink.expose(exposedFunctions);
31
- }
32
-
33
- addEventListener('unload', () => {
34
- server.closeAll();
35
- });
@@ -1,62 +0,0 @@
1
- import * as Comlink from 'comlink';
2
- import { vfsRequiresDedicatedWorkers, WASQLiteVFS } from '../../db/adapters/wa-sqlite/vfs.js';
3
- import { OpenWorkerConnection } from '../../db/adapters/wa-sqlite/DatabaseClient.js';
4
-
5
- /**
6
- * Opens a shared or dedicated worker which exposes opening of database connections
7
- */
8
- export function openWorkerDatabasePort(
9
- workerIdentifier: string,
10
- multipleTabs = true,
11
- worker: string | URL = '',
12
- vfs?: WASQLiteVFS
13
- ) {
14
- const needsDedicated = vfs && vfsRequiresDedicatedWorkers(vfs);
15
-
16
- if (worker) {
17
- return !needsDedicated && multipleTabs
18
- ? new SharedWorker(`${worker}`, {
19
- /* @vite-ignore */
20
- name: `shared-DB-worker-${workerIdentifier}`
21
- }).port
22
- : new Worker(`${worker}`, {
23
- /* @vite-ignore */
24
- name: `DB-worker-${workerIdentifier}`
25
- });
26
- } else {
27
- /**
28
- * Webpack V5 can bundle the worker automatically if the full Worker constructor syntax is used
29
- * https://webpack.js.org/guides/web-workers/
30
- * This enables multi tab support by default, but falls back if SharedWorker is not available
31
- * (in the case of Android)
32
- */
33
- return !needsDedicated && multipleTabs
34
- ? new SharedWorker(new URL('./WASQLiteDB.worker.js', import.meta.url), {
35
- /* @vite-ignore */
36
- name: `shared-DB-worker-${workerIdentifier}`,
37
- type: 'module'
38
- }).port
39
- : new Worker(new URL('./WASQLiteDB.worker.js', import.meta.url), {
40
- /* @vite-ignore */
41
- name: `DB-worker-${workerIdentifier}`,
42
- type: 'module'
43
- });
44
- }
45
- }
46
-
47
- /**
48
- * @returns A function which allows for opening database connections inside
49
- * a worker.
50
- */
51
- export function getWorkerDatabaseOpener(workerIdentifier: string, multipleTabs = true, worker: string | URL = '') {
52
- return Comlink.wrap<OpenWorkerConnection>(openWorkerDatabasePort(workerIdentifier, multipleTabs, worker));
53
- }
54
-
55
- export function resolveWorkerDatabasePortFactory(worker: () => Worker | SharedWorker) {
56
- const workerInstance = worker();
57
- return isSharedWorker(workerInstance) ? workerInstance.port : workerInstance;
58
- }
59
-
60
- export function isSharedWorker(worker: Worker | SharedWorker): worker is SharedWorker {
61
- return 'port' in worker;
62
- }
@@ -1,14 +0,0 @@
1
- import { createBaseLogger } from '@powersync/common';
2
- import { SharedSyncImplementation } from './SharedSyncImplementation.js';
3
- import { WorkerClient } from './WorkerClient.js';
4
-
5
- const _self: SharedWorkerGlobalScope = self as any;
6
- const logger = createBaseLogger();
7
- logger.useDefaults();
8
-
9
- const sharedSyncImplementation = new SharedSyncImplementation();
10
-
11
- _self.onconnect = async function (event: MessageEvent<string>) {
12
- const port = event.ports[0];
13
- new WorkerClient(sharedSyncImplementation, port);
14
- };
File without changes
File without changes
File without changes