@powersync/web 0.0.0-dev-20260708104358 → 0.0.0-dev-20260917074240
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -11
- package/bin/powersync.cjs +1 -1
- package/dist/index.react_native_web.js +2095 -0
- package/dist/index.react_native_web.js.map +1 -0
- package/dist/worker/AccessHandlePoolVFS-BPUHfZME.js +2 -0
- package/dist/worker/AccessHandlePoolVFS-BPUHfZME.js.map +1 -0
- package/dist/worker/FacadeVFS-d1ZDvud7.js +2 -0
- package/dist/worker/FacadeVFS-d1ZDvud7.js.map +1 -0
- package/dist/worker/IDBBatchAtomicVFS-DbkDb777.js +2 -0
- package/dist/worker/IDBBatchAtomicVFS-DbkDb777.js.map +1 -0
- package/dist/worker/MemoryVFS-DVJL5F8j.js +2 -0
- package/dist/worker/MemoryVFS-DVJL5F8j.js.map +1 -0
- package/dist/worker/OPFSCoopSyncVFS-BgTiWPfa.js +2 -0
- package/dist/worker/OPFSCoopSyncVFS-BgTiWPfa.js.map +1 -0
- package/dist/worker/OPFSWriteAheadVFS-Rt5CGCZP.js +2 -0
- package/dist/worker/OPFSWriteAheadVFS-Rt5CGCZP.js.map +1 -0
- package/dist/worker/assets/mc-wa-sqlite-BHScYYZw.wasm +0 -0
- package/dist/worker/assets/mc-wa-sqlite-async-DdlQmAUV.wasm +0 -0
- package/dist/worker/assets/wa-sqlite-CIxTmRHQ.wasm +0 -0
- package/dist/worker/assets/wa-sqlite-async-zc68fxQq.wasm +0 -0
- package/dist/worker/mc-wa-sqlite-PubB6u8c.js +2 -0
- package/dist/worker/mc-wa-sqlite-PubB6u8c.js.map +1 -0
- package/dist/worker/mc-wa-sqlite-async-DJG_ANKO.js +2 -0
- package/dist/worker/mc-wa-sqlite-async-DJG_ANKO.js.map +1 -0
- package/dist/worker/wa-sqlite-D1_4mGs8.js +2 -0
- package/dist/worker/wa-sqlite-D1_4mGs8.js.map +1 -0
- package/dist/worker/wa-sqlite-async-BxkwNY-2.js +2 -0
- package/dist/worker/wa-sqlite-async-BxkwNY-2.js.map +1 -0
- package/dist/worker/websockets-Q8W_lerF.js +9 -0
- package/dist/worker/websockets-Q8W_lerF.js.map +1 -0
- package/dist/worker/worker.js +7 -0
- package/dist/worker/worker.js.map +1 -0
- package/lib/attachments/IndexDBFileSystemAdapter.js.map +1 -0
- package/lib/{src/db → db}/NavigatorTriggerClaimManager.d.ts +1 -1
- package/lib/db/NavigatorTriggerClaimManager.js.map +1 -0
- package/lib/db/PowerSyncDatabase.d.ts +66 -0
- package/lib/{src/db → db}/PowerSyncDatabase.js +60 -79
- package/lib/db/PowerSyncDatabase.js.map +1 -0
- package/lib/db/adapters/AsyncWebAdapter.d.ts +32 -0
- package/lib/{src/db → db}/adapters/AsyncWebAdapter.js +18 -69
- package/lib/db/adapters/AsyncWebAdapter.js.map +1 -0
- package/lib/db/adapters/SSRDBAdapter.d.ts +17 -0
- package/lib/db/adapters/SSRDBAdapter.js +37 -0
- package/lib/db/adapters/SSRDBAdapter.js.map +1 -0
- package/lib/{src/db → db}/adapters/WebDBAdapter.d.ts +1 -1
- package/lib/db/adapters/WebDBAdapter.js.map +1 -0
- package/lib/db/adapters/acquireFromPool.d.ts +7 -0
- package/lib/db/adapters/acquireFromPool.js +60 -0
- package/lib/db/adapters/acquireFromPool.js.map +1 -0
- package/lib/db/adapters/memory-pool/client.d.ts +70 -0
- package/lib/db/adapters/memory-pool/client.js +269 -0
- package/lib/db/adapters/memory-pool/client.js.map +1 -0
- package/lib/db/adapters/memory-pool/shared.d.ts +51 -0
- package/lib/db/adapters/memory-pool/shared.js +16 -0
- package/lib/db/adapters/memory-pool/shared.js.map +1 -0
- package/lib/db/adapters/memory-pool/vfs.d.ts +19 -0
- package/lib/db/adapters/memory-pool/vfs.js +247 -0
- package/lib/db/adapters/memory-pool/vfs.js.map +1 -0
- package/lib/db/adapters/memory-pool/worker.js +45 -0
- package/lib/db/adapters/memory-pool/worker.js.map +1 -0
- package/lib/db/adapters/options.d.ts +94 -0
- package/lib/db/adapters/options.js +6 -0
- package/lib/db/adapters/options.js.map +1 -0
- package/lib/db/adapters/resolveAndValidateOptions.d.ts +13 -0
- package/lib/db/adapters/resolveAndValidateOptions.js +41 -0
- package/lib/db/adapters/resolveAndValidateOptions.js.map +1 -0
- package/lib/{src/db → db}/adapters/wa-sqlite/ConcurrentConnection.d.ts +3 -4
- package/lib/{src/db → db}/adapters/wa-sqlite/ConcurrentConnection.js +2 -2
- package/lib/db/adapters/wa-sqlite/ConcurrentConnection.js.map +1 -0
- package/lib/{src/db → db}/adapters/wa-sqlite/DatabaseClient.d.ts +4 -4
- package/lib/{src/db → db}/adapters/wa-sqlite/DatabaseClient.js +11 -37
- package/lib/db/adapters/wa-sqlite/DatabaseClient.js.map +1 -0
- package/lib/{src/db → db}/adapters/wa-sqlite/DatabaseServer.d.ts +5 -5
- package/lib/{src/db → db}/adapters/wa-sqlite/DatabaseServer.js +14 -7
- package/lib/db/adapters/wa-sqlite/DatabaseServer.js.map +1 -0
- package/lib/{src/db → db}/adapters/wa-sqlite/RawSqliteConnection.d.ts +30 -12
- package/lib/{src/db → db}/adapters/wa-sqlite/RawSqliteConnection.js +70 -16
- package/lib/db/adapters/wa-sqlite/RawSqliteConnection.js.map +1 -0
- package/lib/db/adapters/wa-sqlite/StatementCache.d.ts +16 -0
- package/lib/db/adapters/wa-sqlite/StatementCache.js +44 -0
- package/lib/db/adapters/wa-sqlite/StatementCache.js.map +1 -0
- package/lib/db/adapters/wa-sqlite/WASQLiteOpenFactory.d.ts +18 -0
- package/lib/db/adapters/wa-sqlite/WASQLiteOpenFactory.js +140 -0
- package/lib/db/adapters/wa-sqlite/WASQLiteOpenFactory.js.map +1 -0
- package/lib/{src/db → db}/adapters/wa-sqlite/vfs.d.ts +9 -2
- package/lib/{src/db → db}/adapters/wa-sqlite/vfs.js +6 -6
- package/lib/db/adapters/wa-sqlite/vfs.js.map +1 -0
- package/lib/{src/db → db}/sync/SSRWebStreamingSyncImplementation.d.ts +5 -16
- package/lib/{src/db → db}/sync/SSRWebStreamingSyncImplementation.js +7 -23
- package/lib/db/sync/SSRWebStreamingSyncImplementation.js.map +1 -0
- package/lib/{src/db → db}/sync/SharedWebStreamingSyncImplementation.d.ts +15 -15
- package/lib/{src/db → db}/sync/SharedWebStreamingSyncImplementation.js +38 -70
- package/lib/db/sync/SharedWebStreamingSyncImplementation.js.map +1 -0
- package/lib/db/sync/TabLocalStreamingSyncImplementation.d.ts +19 -0
- package/lib/db/sync/TabLocalStreamingSyncImplementation.js +70 -0
- package/lib/db/sync/TabLocalStreamingSyncImplementation.js.map +1 -0
- package/lib/db/sync/WebRemote.d.ts +10 -0
- package/lib/db/sync/WebRemote.js +33 -0
- package/lib/db/sync/WebRemote.js.map +1 -0
- package/lib/{src/db → db}/sync/WebStreamingSyncImplementation.d.ts +2 -4
- package/lib/{src/db → db}/sync/WebStreamingSyncImplementation.js +3 -2
- package/lib/db/sync/WebStreamingSyncImplementation.js.map +1 -0
- package/lib/db/sync/userAgent.js.map +1 -0
- package/lib/{src/index.d.ts → index.d.ts} +1 -3
- package/lib/{src/index.js → index.js} +1 -3
- package/lib/index.js.map +1 -0
- package/lib/shared/navigator.js.map +1 -0
- package/lib/shared/tab_close_signal.js.map +1 -0
- package/lib/worker/SharedWorkerConnectionRequest.d.ts +5 -0
- package/lib/worker/SharedWorkerConnectionRequest.js +2 -0
- package/lib/worker/SharedWorkerConnectionRequest.js.map +1 -0
- package/lib/worker/client.d.ts +17 -0
- package/lib/worker/client.js +90 -0
- package/lib/worker/client.js.map +1 -0
- package/lib/worker/db/MultiDatabaseServer.d.ts +21 -0
- package/lib/{src/worker → worker}/db/MultiDatabaseServer.js +45 -24
- package/lib/worker/db/MultiDatabaseServer.js.map +1 -0
- package/lib/worker/sync/AbstractSharedSyncClientProvider.d.ts +14 -0
- package/lib/worker/sync/AbstractSharedSyncClientProvider.js.map +1 -0
- package/lib/worker/sync/BroadcastLogger.d.ts +27 -0
- package/lib/worker/sync/BroadcastLogger.js +65 -0
- package/lib/worker/sync/BroadcastLogger.js.map +1 -0
- package/lib/{src/worker → worker}/sync/SharedSyncImplementation.d.ts +14 -25
- package/lib/{src/worker → worker}/sync/SharedSyncImplementation.js +140 -107
- package/lib/worker/sync/SharedSyncImplementation.js.map +1 -0
- package/lib/{src/worker → worker}/sync/WorkerClient.d.ts +4 -4
- package/lib/{src/worker → worker}/sync/WorkerClient.js +5 -5
- package/lib/worker/sync/WorkerClient.js.map +1 -0
- package/lib/worker/worker.d.ts +1 -0
- package/lib/worker/worker.js +34 -0
- package/lib/worker/worker.js.map +1 -0
- package/package.json +31 -32
- package/src/db/NavigatorTriggerClaimManager.ts +1 -1
- package/src/db/PowerSyncDatabase.ts +96 -144
- package/src/db/adapters/AsyncWebAdapter.ts +29 -86
- package/src/db/adapters/SSRDBAdapter.ts +14 -64
- package/src/db/adapters/WebDBAdapter.ts +1 -1
- package/src/db/adapters/acquireFromPool.ts +73 -0
- package/src/db/adapters/memory-pool/client.ts +367 -0
- package/src/db/adapters/memory-pool/shared.ts +79 -0
- package/src/db/adapters/memory-pool/vfs.ts +293 -0
- package/src/db/adapters/memory-pool/worker.ts +53 -0
- package/src/db/adapters/options.ts +108 -0
- package/src/db/adapters/resolveAndValidateOptions.ts +49 -0
- package/src/db/adapters/wa-sqlite/ConcurrentConnection.ts +4 -5
- package/src/db/adapters/wa-sqlite/DatabaseClient.ts +20 -56
- package/src/db/adapters/wa-sqlite/DatabaseServer.ts +18 -12
- package/src/db/adapters/wa-sqlite/RawSqliteConnection.ts +108 -30
- package/src/db/adapters/wa-sqlite/StatementCache.ts +50 -0
- package/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.ts +82 -125
- package/src/db/adapters/wa-sqlite/vfs.ts +13 -8
- package/src/db/sync/SSRWebStreamingSyncImplementation.ts +8 -36
- package/src/db/sync/SharedWebStreamingSyncImplementation.ts +47 -82
- package/src/db/sync/TabLocalStreamingSyncImplementation.ts +90 -0
- package/src/db/sync/WebRemote.ts +23 -26
- package/src/db/sync/WebStreamingSyncImplementation.ts +4 -5
- package/src/index.ts +1 -3
- package/src/worker/SharedWorkerConnectionRequest.ts +6 -0
- package/src/worker/client.ts +121 -0
- package/src/worker/db/MultiDatabaseServer.ts +59 -33
- package/src/worker/sync/AbstractSharedSyncClientProvider.ts +5 -10
- package/src/worker/sync/BroadcastLogger.ts +35 -103
- package/src/worker/sync/SharedSyncImplementation.ts +197 -138
- package/src/worker/sync/WorkerClient.ts +8 -8
- package/src/worker/worker.ts +38 -0
- package/dist/2075a31bb151adbb9767.wasm +0 -0
- package/dist/3322bc84de986b63c2cd.wasm +0 -0
- package/dist/8e97452e297be23b5e50.wasm +0 -0
- package/dist/fbc178b70d530e8ce02b.wasm +0 -0
- package/dist/index.umd.js +0 -7821
- package/dist/index.umd.js.map +0 -1
- package/dist/worker/SharedSyncImplementation.umd.js +0 -16139
- package/dist/worker/SharedSyncImplementation.umd.js.map +0 -1
- package/dist/worker/WASQLiteDB.umd.js +0 -17434
- package/dist/worker/WASQLiteDB.umd.js.map +0 -1
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-2fb422.umd.js +0 -3562
- 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
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-833585.umd.js +0 -1400
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-833585.umd.js.map +0 -1
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-96fb23.umd.js +0 -2478
- 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
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-c89911.umd.js +0 -1681
- 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
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-ec4eb1.umd.js +0 -1820
- 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
- package/lib/package.json +0 -91
- package/lib/src/attachments/IndexDBFileSystemAdapter.js.map +0 -1
- package/lib/src/db/NavigatorTriggerClaimManager.js.map +0 -1
- package/lib/src/db/PowerSyncDatabase.d.ts +0 -78
- package/lib/src/db/PowerSyncDatabase.js.map +0 -1
- package/lib/src/db/adapters/AbstractWebPowerSyncDatabaseOpenFactory.d.ts +0 -23
- package/lib/src/db/adapters/AbstractWebPowerSyncDatabaseOpenFactory.js +0 -27
- package/lib/src/db/adapters/AbstractWebPowerSyncDatabaseOpenFactory.js.map +0 -1
- package/lib/src/db/adapters/AsyncWebAdapter.d.ts +0 -50
- package/lib/src/db/adapters/AsyncWebAdapter.js.map +0 -1
- package/lib/src/db/adapters/SSRDBAdapter.d.ts +0 -30
- package/lib/src/db/adapters/SSRDBAdapter.js +0 -69
- package/lib/src/db/adapters/SSRDBAdapter.js.map +0 -1
- package/lib/src/db/adapters/WebDBAdapter.js.map +0 -1
- package/lib/src/db/adapters/wa-sqlite/ConcurrentConnection.js.map +0 -1
- package/lib/src/db/adapters/wa-sqlite/DatabaseClient.js.map +0 -1
- package/lib/src/db/adapters/wa-sqlite/DatabaseServer.js.map +0 -1
- package/lib/src/db/adapters/wa-sqlite/RawSqliteConnection.js.map +0 -1
- package/lib/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.d.ts +0 -45
- package/lib/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.js +0 -146
- package/lib/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.js.map +0 -1
- package/lib/src/db/adapters/wa-sqlite/WASQLitePowerSyncDatabaseOpenFactory.d.ts +0 -15
- package/lib/src/db/adapters/wa-sqlite/WASQLitePowerSyncDatabaseOpenFactory.js +0 -22
- package/lib/src/db/adapters/wa-sqlite/WASQLitePowerSyncDatabaseOpenFactory.js.map +0 -1
- package/lib/src/db/adapters/wa-sqlite/vfs.js.map +0 -1
- package/lib/src/db/adapters/web-sql-flags.d.ts +0 -92
- package/lib/src/db/adapters/web-sql-flags.js +0 -37
- package/lib/src/db/adapters/web-sql-flags.js.map +0 -1
- package/lib/src/db/sync/SSRWebStreamingSyncImplementation.js.map +0 -1
- package/lib/src/db/sync/SharedWebStreamingSyncImplementation.js.map +0 -1
- package/lib/src/db/sync/WebRemote.d.ts +0 -7
- package/lib/src/db/sync/WebRemote.js +0 -33
- package/lib/src/db/sync/WebRemote.js.map +0 -1
- package/lib/src/db/sync/WebStreamingSyncImplementation.js.map +0 -1
- package/lib/src/db/sync/userAgent.js.map +0 -1
- package/lib/src/index.js.map +0 -1
- package/lib/src/shared/navigator.js.map +0 -1
- package/lib/src/shared/tab_close_signal.js.map +0 -1
- package/lib/src/worker/db/MultiDatabaseServer.d.ts +0 -17
- package/lib/src/worker/db/MultiDatabaseServer.js.map +0 -1
- package/lib/src/worker/db/WASQLiteDB.worker.d.ts +0 -4
- package/lib/src/worker/db/WASQLiteDB.worker.js +0 -31
- package/lib/src/worker/db/WASQLiteDB.worker.js.map +0 -1
- package/lib/src/worker/db/open-worker-database.d.ts +0 -14
- package/lib/src/worker/db/open-worker-database.js +0 -53
- package/lib/src/worker/db/open-worker-database.js.map +0 -1
- package/lib/src/worker/sync/AbstractSharedSyncClientProvider.d.ts +0 -19
- package/lib/src/worker/sync/AbstractSharedSyncClientProvider.js.map +0 -1
- package/lib/src/worker/sync/BroadcastLogger.d.ts +0 -47
- package/lib/src/worker/sync/BroadcastLogger.js +0 -129
- package/lib/src/worker/sync/BroadcastLogger.js.map +0 -1
- package/lib/src/worker/sync/SharedSyncImplementation.js.map +0 -1
- package/lib/src/worker/sync/SharedSyncImplementation.worker.js +0 -12
- package/lib/src/worker/sync/SharedSyncImplementation.worker.js.map +0 -1
- package/lib/src/worker/sync/WorkerClient.js.map +0 -1
- package/lib/tsconfig.tsbuildinfo +0 -1
- package/src/db/adapters/AbstractWebPowerSyncDatabaseOpenFactory.ts +0 -47
- package/src/db/adapters/wa-sqlite/WASQLitePowerSyncDatabaseOpenFactory.ts +0 -24
- package/src/db/adapters/web-sql-flags.ts +0 -141
- package/src/worker/db/WASQLiteDB.worker.ts +0 -35
- package/src/worker/db/open-worker-database.ts +0 -62
- package/src/worker/sync/SharedSyncImplementation.worker.ts +0 -14
- /package/lib/{src/attachments → attachments}/IndexDBFileSystemAdapter.d.ts +0 -0
- /package/lib/{src/attachments → attachments}/IndexDBFileSystemAdapter.js +0 -0
- /package/lib/{src/db → db}/NavigatorTriggerClaimManager.js +0 -0
- /package/lib/{src/db → db}/adapters/WebDBAdapter.js +0 -0
- /package/lib/{src/worker/sync/SharedSyncImplementation.worker.d.ts → db/adapters/memory-pool/worker.d.ts} +0 -0
- /package/lib/{src/db → db}/sync/userAgent.d.ts +0 -0
- /package/lib/{src/db → db}/sync/userAgent.js +0 -0
- /package/lib/{src/shared → shared}/navigator.d.ts +0 -0
- /package/lib/{src/shared → shared}/navigator.js +0 -0
- /package/lib/{src/shared → shared}/tab_close_signal.d.ts +0 -0
- /package/lib/{src/shared → shared}/tab_close_signal.js +0 -0
- /package/lib/{src/worker → worker}/sync/AbstractSharedSyncClientProvider.js +0 -0
|
@@ -51,7 +51,7 @@ async function syncModuleFactory(encryptionKey) {
|
|
|
51
51
|
/**
|
|
52
52
|
* @internal
|
|
53
53
|
*/
|
|
54
|
-
export async function loadModuleAndVfs({ vfs,
|
|
54
|
+
export async function loadModuleAndVfs({ vfs, filename, encryptionKey }) {
|
|
55
55
|
let moduleFactory = syncModuleFactory;
|
|
56
56
|
let resolveVfs;
|
|
57
57
|
switch (vfs) {
|
|
@@ -60,32 +60,32 @@ export async function loadModuleAndVfs({ vfs, dbFilename, encryptionKey }) {
|
|
|
60
60
|
const { IDBBatchAtomicVFS } = await import('@journeyapps/wa-sqlite/src/examples/IDBBatchAtomicVFS.js');
|
|
61
61
|
resolveVfs = (module) => {
|
|
62
62
|
// @ts-expect-error The types for this static method are missing upstream
|
|
63
|
-
return IDBBatchAtomicVFS.create(
|
|
63
|
+
return IDBBatchAtomicVFS.create(filename, module, { lockPolicy: 'exclusive' });
|
|
64
64
|
};
|
|
65
65
|
break;
|
|
66
66
|
}
|
|
67
67
|
case WASQLiteVFS.AccessHandlePoolVFS: {
|
|
68
68
|
// @ts-expect-error The types for this import are missing upstream
|
|
69
69
|
const { AccessHandlePoolVFS } = await import('@journeyapps/wa-sqlite/src/examples/AccessHandlePoolVFS.js');
|
|
70
|
-
resolveVfs = (module) => AccessHandlePoolVFS.create(
|
|
70
|
+
resolveVfs = (module) => AccessHandlePoolVFS.create(filename, module);
|
|
71
71
|
break;
|
|
72
72
|
}
|
|
73
73
|
case WASQLiteVFS.OPFSCoopSyncVFS: {
|
|
74
74
|
// @ts-expect-error The types for this import are missing upstream
|
|
75
75
|
const { OPFSCoopSyncVFS } = await import('@journeyapps/wa-sqlite/src/examples/OPFSCoopSyncVFS.js');
|
|
76
|
-
resolveVfs = (module) => OPFSCoopSyncVFS.create(
|
|
76
|
+
resolveVfs = (module) => OPFSCoopSyncVFS.create(filename, module);
|
|
77
77
|
break;
|
|
78
78
|
}
|
|
79
79
|
case WASQLiteVFS.OPFSWriteAheadVFS: {
|
|
80
80
|
// @ts-expect-error The types for this import are missing upstream
|
|
81
81
|
const { OPFSWriteAheadVFS } = await import('@journeyapps/wa-sqlite/src/examples/OPFSWriteAheadVFS.js');
|
|
82
|
-
resolveVfs = (module) => OPFSWriteAheadVFS.create(
|
|
82
|
+
resolveVfs = (module) => OPFSWriteAheadVFS.create(filename, module, {});
|
|
83
83
|
break;
|
|
84
84
|
}
|
|
85
85
|
case WASQLiteVFS.InMemoryVfs: {
|
|
86
86
|
const { MemoryVFS } = await import('@journeyapps/wa-sqlite/src/examples/MemoryVFS.js');
|
|
87
87
|
// @ts-expect-error The types for this static method are missing upstream
|
|
88
|
-
resolveVfs = (module) => MemoryVFS.create(
|
|
88
|
+
resolveVfs = (module) => MemoryVFS.create(filename, module);
|
|
89
89
|
break;
|
|
90
90
|
}
|
|
91
91
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vfs.js","sourceRoot":"","sources":["../../../../src/db/adapters/wa-sqlite/vfs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BaseObserver, SyncStatus } from '@powersync/common';
|
|
2
|
+
import { Mutex, StreamingSyncImplementation, LockOptions } from '@powersync/shared-internals';
|
|
2
3
|
export declare class SSRStreamingSyncImplementation extends BaseObserver implements StreamingSyncImplementation {
|
|
3
4
|
syncMutex: Mutex;
|
|
4
5
|
crudMutex: Mutex;
|
|
5
6
|
isConnected: boolean;
|
|
6
7
|
lastSyncedAt?: Date | undefined;
|
|
7
|
-
|
|
8
|
-
constructor(options: AbstractStreamingSyncImplementationOptions);
|
|
8
|
+
constructor();
|
|
9
9
|
obtainLock<T>(lockOptions: LockOptions<T>): Promise<T>;
|
|
10
10
|
/**
|
|
11
11
|
* This is a no-op in SSR mode
|
|
12
12
|
*/
|
|
13
|
-
connect(
|
|
13
|
+
connect(): Promise<void>;
|
|
14
14
|
dispose(): Promise<void>;
|
|
15
15
|
/**
|
|
16
16
|
* This is a no-op in SSR mode
|
|
@@ -20,22 +20,10 @@ export declare class SSRStreamingSyncImplementation extends BaseObserver impleme
|
|
|
20
20
|
* This SSR Mode implementation is immediately ready.
|
|
21
21
|
*/
|
|
22
22
|
waitForReady(): Promise<void>;
|
|
23
|
-
/**
|
|
24
|
-
* This will never resolve in SSR Mode.
|
|
25
|
-
*/
|
|
26
|
-
waitForStatus(status: SyncStatusOptions): Promise<void>;
|
|
27
23
|
/**
|
|
28
24
|
* This will never resolve in SSR Mode.
|
|
29
25
|
*/
|
|
30
26
|
waitUntilStatusMatches(_predicate: (status: SyncStatus) => boolean): Promise<void>;
|
|
31
|
-
/**
|
|
32
|
-
* Returns a placeholder checkpoint. This should not be used.
|
|
33
|
-
*/
|
|
34
|
-
getWriteCheckpoint(): Promise<string>;
|
|
35
|
-
/**
|
|
36
|
-
* The SSR mode adapter will never complete syncing.
|
|
37
|
-
*/
|
|
38
|
-
hasCompletedSync(): Promise<boolean>;
|
|
39
27
|
/**
|
|
40
28
|
* This is a no-op in SSR mode.
|
|
41
29
|
*/
|
|
@@ -48,4 +36,5 @@ export declare class SSRStreamingSyncImplementation extends BaseObserver impleme
|
|
|
48
36
|
* No-op in SSR mode.
|
|
49
37
|
*/
|
|
50
38
|
markConnectionMayHaveChanged(): void;
|
|
39
|
+
requestCheckpoint(): Promise<bigint>;
|
|
51
40
|
}
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import { BaseObserver
|
|
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
|
-
|
|
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(
|
|
21
|
+
async connect() { }
|
|
23
22
|
async dispose() { }
|
|
24
23
|
/**
|
|
25
24
|
* This is a no-op in SSR mode
|
|
@@ -29,30 +28,12 @@ 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
|
*/
|
|
41
34
|
waitUntilStatusMatches(_predicate) {
|
|
42
35
|
return new Promise(() => { });
|
|
43
36
|
}
|
|
44
|
-
/**
|
|
45
|
-
* Returns a placeholder checkpoint. This should not be used.
|
|
46
|
-
*/
|
|
47
|
-
async getWriteCheckpoint() {
|
|
48
|
-
return '1';
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* The SSR mode adapter will never complete syncing.
|
|
52
|
-
*/
|
|
53
|
-
async hasCompletedSync() {
|
|
54
|
-
return false;
|
|
55
|
-
}
|
|
56
37
|
/**
|
|
57
38
|
* This is a no-op in SSR mode.
|
|
58
39
|
*/
|
|
@@ -65,5 +46,8 @@ export class SSRStreamingSyncImplementation extends BaseObserver {
|
|
|
65
46
|
* No-op in SSR mode.
|
|
66
47
|
*/
|
|
67
48
|
markConnectionMayHaveChanged() { }
|
|
49
|
+
requestCheckpoint() {
|
|
50
|
+
throw new Error('Sub sync implementation does not support request checkpoints');
|
|
51
|
+
}
|
|
68
52
|
}
|
|
69
53
|
//# 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,iBAAiB,KAAI,CAAC;IAEtB;;OAEG;IACH,mBAAmB,KAAU,CAAC;IAE9B;;OAEG;IACH,4BAA4B,KAAU,CAAC;IAEvC,iBAAiB;QACf,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAClF,CAAC;CACF"}
|
|
@@ -1,34 +1,32 @@
|
|
|
1
|
-
import {
|
|
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:
|
|
15
|
+
statusChanged: (status: SyncStatusJson) => void;
|
|
14
16
|
protected webDB: WebDBAdapter;
|
|
15
|
-
constructor(options: WebStreamingSyncImplementationOptions, statusChanged: (status:
|
|
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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
+
postCheckpointRequest(clientId: string, requestId: string): Promise<string | null>;
|
|
23
|
+
get logger(): import("@powersync/common").PowerSyncLogger;
|
|
24
|
+
log(record: LogRecord): void;
|
|
29
25
|
}
|
|
30
26
|
export interface SharedWebStreamingSyncImplementationOptions extends WebStreamingSyncImplementationOptions {
|
|
27
|
+
logLevel: number;
|
|
31
28
|
db: WebDBAdapter;
|
|
29
|
+
enableBroadcastLogs: boolean;
|
|
32
30
|
}
|
|
33
31
|
/**
|
|
34
32
|
* The local part of the sync implementation on the web, which talks to a sync implementation hosted in a shared worker.
|
|
@@ -36,21 +34,23 @@ export interface SharedWebStreamingSyncImplementationOptions extends WebStreamin
|
|
|
36
34
|
export declare class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplementation {
|
|
37
35
|
protected syncManager: Comlink.Remote<WorkerClient>;
|
|
38
36
|
protected clientProvider: SharedSyncClientProvider;
|
|
39
|
-
protected
|
|
37
|
+
protected worker: WorkerConnection;
|
|
40
38
|
protected isInitialized: Promise<void>;
|
|
41
39
|
protected dbAdapter: WebDBAdapter;
|
|
42
40
|
private abortOnClose;
|
|
41
|
+
private logLevel;
|
|
42
|
+
private enableBroadcastLogs;
|
|
43
43
|
constructor(options: SharedWebStreamingSyncImplementationOptions);
|
|
44
44
|
protected _init(): Promise<void>;
|
|
45
45
|
/**
|
|
46
46
|
* Starts the sync process, this effectively acts as a call to
|
|
47
47
|
* `connect` if not yet connected.
|
|
48
48
|
*/
|
|
49
|
-
connect(options
|
|
49
|
+
connect(options: ResolvedSyncOptions): Promise<void>;
|
|
50
50
|
disconnect(): Promise<void>;
|
|
51
|
-
getWriteCheckpoint(): Promise<string>;
|
|
52
51
|
dispose(): Promise<void>;
|
|
53
52
|
waitForReady(): Promise<void>;
|
|
53
|
+
requestCheckpoint(): Promise<bigint>;
|
|
54
54
|
updateSubscriptions(subscriptions: SubscribedStream[]): void;
|
|
55
55
|
}
|
|
56
56
|
export {};
|
|
@@ -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.
|
|
@@ -48,32 +48,14 @@ class SharedSyncClientProvider extends AbstractSharedSyncClientProvider {
|
|
|
48
48
|
*/
|
|
49
49
|
await this.options.uploadCrud();
|
|
50
50
|
}
|
|
51
|
+
async postCheckpointRequest(clientId, requestId) {
|
|
52
|
+
return await this.options.postCheckpointRequest(clientId, requestId);
|
|
53
|
+
}
|
|
51
54
|
get logger() {
|
|
52
55
|
return this.options.logger;
|
|
53
56
|
}
|
|
54
|
-
|
|
55
|
-
this.logger
|
|
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);
|
|
57
|
+
log(record) {
|
|
58
|
+
this.logger.log(record);
|
|
77
59
|
}
|
|
78
60
|
}
|
|
79
61
|
/**
|
|
@@ -82,57 +64,44 @@ class SharedSyncClientProvider extends AbstractSharedSyncClientProvider {
|
|
|
82
64
|
export class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplementation {
|
|
83
65
|
syncManager;
|
|
84
66
|
clientProvider;
|
|
85
|
-
|
|
67
|
+
worker;
|
|
86
68
|
isInitialized;
|
|
87
69
|
dbAdapter;
|
|
88
70
|
abortOnClose = new AbortController();
|
|
71
|
+
logLevel;
|
|
72
|
+
enableBroadcastLogs;
|
|
89
73
|
constructor(options) {
|
|
90
74
|
super(options);
|
|
91
75
|
this.dbAdapter = options.db;
|
|
92
|
-
|
|
93
|
-
|
|
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
|
-
};
|
|
76
|
+
this.logLevel = options.logLevel;
|
|
77
|
+
this.enableBroadcastLogs = options.enableBroadcastLogs;
|
|
103
78
|
const syncWorker = options.sync?.worker;
|
|
104
|
-
if (syncWorker) {
|
|
105
|
-
|
|
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
|
-
}
|
|
79
|
+
if (typeof syncWorker === 'function') {
|
|
80
|
+
this.worker = connectToExistingWorker(syncWorker(), options.logger, 'sync');
|
|
114
81
|
}
|
|
115
82
|
else {
|
|
116
|
-
this.
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
83
|
+
this.worker = connectToWorker({
|
|
84
|
+
service: 'sync',
|
|
85
|
+
databaseIdentifier: this.webOptions.identifier,
|
|
86
|
+
shared: true,
|
|
87
|
+
customWorker: syncWorker,
|
|
88
|
+
loggerForErrors: options.logger
|
|
89
|
+
});
|
|
121
90
|
}
|
|
122
91
|
/**
|
|
123
92
|
* Pass along any sync status updates to this listener
|
|
124
93
|
*/
|
|
125
|
-
this.clientProvider = new SharedSyncClientProvider(this.webOptions, (
|
|
126
|
-
this.updateSyncStatus(
|
|
94
|
+
this.clientProvider = new SharedSyncClientProvider(this.webOptions, ({ core, dataFlow }) => {
|
|
95
|
+
this.updateSyncStatus(core, dataFlow);
|
|
127
96
|
}, options.db);
|
|
128
|
-
this.syncManager = Comlink.wrap(this.
|
|
97
|
+
this.syncManager = Comlink.wrap(this.worker.endpoint);
|
|
129
98
|
/**
|
|
130
99
|
* The sync worker will call this client provider when it needs
|
|
131
100
|
* to fetch credentials or upload data.
|
|
132
101
|
* This performs bi-directional method calling.
|
|
133
102
|
*/
|
|
134
|
-
Comlink.expose(this.clientProvider, this.
|
|
135
|
-
this.syncManager.setLogLevel(this.
|
|
103
|
+
Comlink.expose(this.clientProvider, this.worker.endpoint);
|
|
104
|
+
this.syncManager.setLogLevel(this.logLevel);
|
|
136
105
|
this.triggerCrudUpload = this.syncManager.triggerCrudUpload;
|
|
137
106
|
/**
|
|
138
107
|
* Opens MessagePort to the existing shared DB worker.
|
|
@@ -159,16 +128,14 @@ export class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplem
|
|
|
159
128
|
const closeSignal = await generateTabCloseSignal(this.abortOnClose.signal);
|
|
160
129
|
// Awaiting here ensures the worker is waiting for the lock
|
|
161
130
|
await this.syncManager.addLockBasedCloseSignal(closeSignal);
|
|
162
|
-
const {
|
|
163
|
-
const flags = { ...this.webOptions.flags, workers: undefined };
|
|
131
|
+
const { identifier } = this.options;
|
|
164
132
|
await this.syncManager.setParams({
|
|
165
133
|
dbParams: this.dbAdapter.getConfiguration(),
|
|
166
134
|
streamOptions: {
|
|
167
|
-
crudUploadThrottleMs,
|
|
168
135
|
identifier,
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
136
|
+
serializedSchema: this.options.serializedSchema
|
|
137
|
+
},
|
|
138
|
+
enableBroadcastLogs: this.enableBroadcastLogs
|
|
172
139
|
}, this.options.subscriptions);
|
|
173
140
|
}
|
|
174
141
|
/**
|
|
@@ -177,21 +144,19 @@ export class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplem
|
|
|
177
144
|
*/
|
|
178
145
|
async connect(options) {
|
|
179
146
|
await this.waitForReady();
|
|
180
|
-
return this.syncManager.connect(options);
|
|
147
|
+
return this.syncManager.connect(options, this.options.serializedSchema);
|
|
181
148
|
}
|
|
182
149
|
async disconnect() {
|
|
183
150
|
await this.waitForReady();
|
|
184
151
|
return this.syncManager.disconnect();
|
|
185
152
|
}
|
|
186
|
-
async getWriteCheckpoint() {
|
|
187
|
-
await this.waitForReady();
|
|
188
|
-
return this.syncManager.getWriteCheckpoint();
|
|
189
|
-
}
|
|
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
|
-
|
|
159
|
+
messagePort.addEventListener('message', (event) => {
|
|
195
160
|
const payload = event.data;
|
|
196
161
|
if (payload?.event === SharedSyncClientEvent.CLOSE_ACK) {
|
|
197
162
|
resolve();
|
|
@@ -202,17 +167,20 @@ export class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplem
|
|
|
202
167
|
event: SharedSyncClientEvent.CLOSE_CLIENT,
|
|
203
168
|
data: {}
|
|
204
169
|
};
|
|
205
|
-
|
|
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.
|
|
176
|
+
this.worker.close();
|
|
212
177
|
}
|
|
213
178
|
async waitForReady() {
|
|
214
179
|
return this.isInitialized;
|
|
215
180
|
}
|
|
181
|
+
requestCheckpoint() {
|
|
182
|
+
return this.syncManager.requestCheckpoint();
|
|
183
|
+
}
|
|
216
184
|
updateSubscriptions(subscriptions) {
|
|
217
185
|
this.syncManager.updateSubscriptions(subscriptions);
|
|
218
186
|
}
|
|
@@ -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,19 @@
|
|
|
1
|
+
import { LockOptions, SubscribedStream } from '@powersync/shared-internals';
|
|
2
|
+
import { WebStreamingSyncImplementation, WebStreamingSyncImplementationOptions } from './WebStreamingSyncImplementation.js';
|
|
3
|
+
/**
|
|
4
|
+
* When multi-tab support is disabled and we don't use a shared worker for sync, only a single tab will be able to
|
|
5
|
+
* acquire the sync navigator lock and start a sync iteration.
|
|
6
|
+
*
|
|
7
|
+
* To be able to provide _some_ multi-tab support in that configuration, this utility:
|
|
8
|
+
*
|
|
9
|
+
* 1. Sends sync status updates from the syncing tab to others.
|
|
10
|
+
* 2. Allows other tabs to send notifications when their active sync stream subscriptions update, allowing the active
|
|
11
|
+
* tab to take those subscriptions into account.
|
|
12
|
+
*/
|
|
13
|
+
export declare class TabLocalStreamingSyncImplementation extends WebStreamingSyncImplementation {
|
|
14
|
+
#private;
|
|
15
|
+
constructor(options: WebStreamingSyncImplementationOptions);
|
|
16
|
+
updateSubscriptions(subscriptions: SubscribedStream[]): void;
|
|
17
|
+
obtainLock<T>({ callback, type, signal }: LockOptions<T>): Promise<T>;
|
|
18
|
+
dispose(): Promise<void>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { LockType } from '@powersync/shared-internals';
|
|
2
|
+
import { WebStreamingSyncImplementation } from './WebStreamingSyncImplementation.js';
|
|
3
|
+
/**
|
|
4
|
+
* When multi-tab support is disabled and we don't use a shared worker for sync, only a single tab will be able to
|
|
5
|
+
* acquire the sync navigator lock and start a sync iteration.
|
|
6
|
+
*
|
|
7
|
+
* To be able to provide _some_ multi-tab support in that configuration, this utility:
|
|
8
|
+
*
|
|
9
|
+
* 1. Sends sync status updates from the syncing tab to others.
|
|
10
|
+
* 2. Allows other tabs to send notifications when their active sync stream subscriptions update, allowing the active
|
|
11
|
+
* tab to take those subscriptions into account.
|
|
12
|
+
*/
|
|
13
|
+
export class TabLocalStreamingSyncImplementation extends WebStreamingSyncImplementation {
|
|
14
|
+
#statusUpdated;
|
|
15
|
+
#subscriptionsChanged;
|
|
16
|
+
#hasSyncLock = false;
|
|
17
|
+
constructor(options) {
|
|
18
|
+
super(options);
|
|
19
|
+
const identifier = options.identifier;
|
|
20
|
+
this.#statusUpdated = new BroadcastChannel(`sync-status-${identifier}`);
|
|
21
|
+
this.#subscriptionsChanged = new BroadcastChannel(`subscription-change-${identifier}`);
|
|
22
|
+
this.#statusUpdated.onmessage = (event) => {
|
|
23
|
+
if (event.data == 'ping') {
|
|
24
|
+
this.#sendStatus(this.syncStatus);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const { core, dataFlow } = event.data;
|
|
28
|
+
this.updateSyncStatus(core, dataFlow);
|
|
29
|
+
};
|
|
30
|
+
// Request other tabs to share their sync status.
|
|
31
|
+
this.#statusUpdated.postMessage('ping');
|
|
32
|
+
this.#subscriptionsChanged.onmessage = () => {
|
|
33
|
+
// We can't update activeStreams since we don't know when another tab referencing them is closed. However,
|
|
34
|
+
// clients will update an internal table listing streams after subscribing, and updateSubscriptions() will
|
|
35
|
+
// scan that table.
|
|
36
|
+
super.updateSubscriptions(this.activeStreams);
|
|
37
|
+
};
|
|
38
|
+
this.registerListener({
|
|
39
|
+
statusChanged: (status) => this.#sendStatus(status)
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
#sendStatus(status) {
|
|
43
|
+
// Don't share sync status if this is not the tab currently syncing.
|
|
44
|
+
if (this.#hasSyncLock) {
|
|
45
|
+
this.#statusUpdated.postMessage(status.toJSON());
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
updateSubscriptions(subscriptions) {
|
|
49
|
+
super.updateSubscriptions(subscriptions);
|
|
50
|
+
this.#subscriptionsChanged.postMessage('');
|
|
51
|
+
}
|
|
52
|
+
obtainLock({ callback, type, signal }) {
|
|
53
|
+
const wrappedCallback = async () => {
|
|
54
|
+
this.#hasSyncLock = true;
|
|
55
|
+
try {
|
|
56
|
+
return await callback();
|
|
57
|
+
}
|
|
58
|
+
finally {
|
|
59
|
+
this.#hasSyncLock = false;
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
return super.obtainLock({ callback: type == LockType.SYNC ? wrappedCallback : callback, type, signal });
|
|
63
|
+
}
|
|
64
|
+
async dispose() {
|
|
65
|
+
this.#statusUpdated.close();
|
|
66
|
+
this.#subscriptionsChanged.close();
|
|
67
|
+
await super.dispose();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=TabLocalStreamingSyncImplementation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabLocalStreamingSyncImplementation.js","sourceRoot":"","sources":["../../../src/db/sync/TabLocalStreamingSyncImplementation.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EAIT,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,8BAA8B,EAE/B,MAAM,qCAAqC,CAAC;AAE7C;;;;;;;;;GASG;AACH,MAAM,OAAO,mCAAoC,SAAQ,8BAA8B;IACrF,cAAc,CAAmB;IACjC,qBAAqB,CAAmB;IACxC,YAAY,GAAG,KAAK,CAAC;IAErB,YAAY,OAA8C;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACtC,IAAI,CAAC,cAAc,GAAG,IAAI,gBAAgB,CAAC,eAAe,UAAU,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,qBAAqB,GAAG,IAAI,gBAAgB,CAAC,uBAAuB,UAAU,EAAE,CAAC,CAAC;QAEvF,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC,KAAK,EAAE,EAAE;YACxC,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;gBACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAClC,OAAO;YACT,CAAC;YAED,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,IAAsB,CAAC;YACxD,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACxC,CAAC,CAAC;QAEF,iDAAiD;QACjD,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,qBAAqB,CAAC,SAAS,GAAG,GAAG,EAAE;YAC1C,0GAA0G;YAC1G,0GAA0G;YAC1G,mBAAmB;YACnB,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChD,CAAC,CAAC;QAEF,IAAI,CAAC,gBAAgB,CAAC;YACpB,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;SACpD,CAAC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,MAA0B;QACpC,oEAAoE;QACpE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAEQ,mBAAmB,CAAC,aAAiC;QAC5D,KAAK,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;QACzC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAC7C,CAAC;IAEQ,UAAU,CAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAkB;QAC/D,MAAM,eAAe,GAAG,KAAK,IAAgB,EAAE;YAC7C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YAEzB,IAAI,CAAC;gBACH,OAAO,MAAM,QAAQ,EAAE,CAAC;YAC1B,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC;QAEF,OAAO,KAAK,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1G,CAAC;IAEQ,KAAK,CAAC,OAAO;QACpB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC;QACnC,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;CACF"}
|
|
@@ -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/
|
|
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 | ((
|
|
4
|
+
worker?: string | URL | (() => SharedWorker);
|
|
7
5
|
};
|
|
8
6
|
}
|
|
9
7
|
export declare class WebStreamingSyncImplementation extends AbstractStreamingSyncImplementation {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
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,7 +12,7 @@ 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
|
|
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
|
}
|
|
@@ -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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"userAgent.js","sourceRoot":"","sources":["../../../src/db/sync/userAgent.ts"],"names":[],"mappings":"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"}
|