@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatabaseClient.js","sourceRoot":"","sources":["../../../../src/db/adapters/wa-sqlite/DatabaseClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PowerSyncLogger } from '@powersync/common';
|
|
2
2
|
import { ConcurrentSqliteConnection } from './ConcurrentConnection.js';
|
|
3
|
-
import {
|
|
3
|
+
import { RawWebResult } from './RawSqliteConnection.js';
|
|
4
4
|
export interface DatabaseServerOptions {
|
|
5
5
|
inner: ConcurrentSqliteConnection;
|
|
6
6
|
onClose: () => void;
|
|
7
|
-
logger:
|
|
7
|
+
logger: PowerSyncLogger;
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
10
|
* Access to a WA-sqlite connection that can be shared with multiple clients sending queries over an RPC protocol built
|
|
@@ -35,8 +35,8 @@ export interface ClientConnectionView {
|
|
|
35
35
|
* give other clients access to the database afterwards.
|
|
36
36
|
*/
|
|
37
37
|
requestAccess(write: boolean, timeoutMs?: number): Promise<string>;
|
|
38
|
-
execute(token: string, sql: string, params: any[] | undefined): Promise<
|
|
39
|
-
executeBatch(token: string, sql: string, params: any[][]): Promise<
|
|
38
|
+
execute(token: string, sql: string, params: any[] | undefined): Promise<RawWebResult>;
|
|
39
|
+
executeBatch(token: string, sql: string, params: any[][]): Promise<RawWebResult[]>;
|
|
40
40
|
completeAccess(token: string): Promise<void>;
|
|
41
41
|
/**
|
|
42
42
|
* Sends update notifications to the given message port.
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { LogLevels } from '@powersync/common';
|
|
1
2
|
/**
|
|
2
3
|
* Access to a WA-sqlite connection that can be shared with multiple clients sending queries over an RPC protocol built
|
|
3
4
|
* with the Comlink package.
|
|
@@ -12,7 +13,7 @@ export class DatabaseServer {
|
|
|
12
13
|
constructor(options) {
|
|
13
14
|
this.#options = options;
|
|
14
15
|
const inner = options.inner;
|
|
15
|
-
this.#updateBroadcastChannel = new BroadcastChannel(`${inner.options.
|
|
16
|
+
this.#updateBroadcastChannel = new BroadcastChannel(`${inner.options.filename}-table-updates`);
|
|
16
17
|
this.#updateBroadcastChannel.onmessage = ({ data }) => {
|
|
17
18
|
this.#pushTableUpdateToClients(data);
|
|
18
19
|
};
|
|
@@ -61,7 +62,7 @@ export class DatabaseServer {
|
|
|
61
62
|
}
|
|
62
63
|
// If the client holds a connection lease it hasn't returned, return that now.
|
|
63
64
|
for (const { lease } of connectionLeases.values()) {
|
|
64
|
-
this.#logger.debug
|
|
65
|
+
this.#logger.log({ level: LogLevels.debug, message: `Closing connection lease that hasn't been returned.` });
|
|
65
66
|
await lease.returnLease();
|
|
66
67
|
}
|
|
67
68
|
this.#activeClients.delete(clientId);
|
|
@@ -69,7 +70,10 @@ export class DatabaseServer {
|
|
|
69
70
|
await this.forceClose();
|
|
70
71
|
}
|
|
71
72
|
else {
|
|
72
|
-
this.#logger.
|
|
73
|
+
this.#logger.log({
|
|
74
|
+
level: LogLevels.debug,
|
|
75
|
+
message: 'Keeping underlying connection active since its used by other clients.'
|
|
76
|
+
});
|
|
73
77
|
}
|
|
74
78
|
}
|
|
75
79
|
};
|
|
@@ -101,9 +105,9 @@ export class DatabaseServer {
|
|
|
101
105
|
try {
|
|
102
106
|
if (lease.write) {
|
|
103
107
|
// Collect update hooks invoked while the client had the write connection.
|
|
104
|
-
const {
|
|
105
|
-
if (
|
|
106
|
-
const updatedTables = JSON.parse(
|
|
108
|
+
const { rawRows } = await lease.lease.use((conn) => conn.execute(`SELECT powersync_update_hooks('get')`));
|
|
109
|
+
if (rawRows.length) {
|
|
110
|
+
const updatedTables = JSON.parse(rawRows[0][0]);
|
|
107
111
|
if (updatedTables.length) {
|
|
108
112
|
this.#updateBroadcastChannel.postMessage(updatedTables);
|
|
109
113
|
this.#pushTableUpdateToClients(updatedTables);
|
|
@@ -136,7 +140,10 @@ export class DatabaseServer {
|
|
|
136
140
|
};
|
|
137
141
|
}
|
|
138
142
|
async forceClose() {
|
|
139
|
-
this.#logger.
|
|
143
|
+
this.#logger.log({
|
|
144
|
+
level: LogLevels.debug,
|
|
145
|
+
message: `Closing connection to ${JSON.stringify(this.#inner.options)}.`
|
|
146
|
+
});
|
|
140
147
|
const connection = this.#inner;
|
|
141
148
|
this.#options.onClose();
|
|
142
149
|
this.#updateBroadcastChannel.close();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatabaseServer.js","sourceRoot":"","sources":["../../../../src/db/adapters/wa-sqlite/DatabaseServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,27 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { WASQLiteVFS } from './vfs.js';
|
|
2
|
+
import { TemporaryStorageOption } from '../options.js';
|
|
3
|
+
import { RawQueryResult, SqliteValue } from '@powersync/common';
|
|
4
|
+
export interface RawWebResult extends Required<RawQueryResult> {
|
|
5
|
+
autocommit: boolean;
|
|
6
|
+
}
|
|
2
7
|
export interface RawResultSet {
|
|
3
|
-
|
|
4
|
-
|
|
8
|
+
columnNames: string[];
|
|
9
|
+
rawRows: SqliteValue[][];
|
|
5
10
|
}
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
+
/**
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
export interface RawWaSqliteDatabaseOptions {
|
|
15
|
+
filename: string;
|
|
16
|
+
readonly: boolean;
|
|
17
|
+
vfs: WASQLiteVFS;
|
|
18
|
+
encryptionKey: string | undefined;
|
|
19
|
+
temporaryStorage: TemporaryStorageOption;
|
|
20
|
+
cacheSizeKb: number;
|
|
21
|
+
/**
|
|
22
|
+
* The amount of prepared statements to cache, or 0 to disable caching.
|
|
23
|
+
*/
|
|
24
|
+
preparedStatementsCache: number;
|
|
11
25
|
}
|
|
12
26
|
/**
|
|
13
27
|
* A small wrapper around WA-sqlite to help with opening databases and running statements by preparing them internally.
|
|
@@ -16,15 +30,18 @@ export interface RawQueryResult {
|
|
|
16
30
|
* used concurrently across tabs.
|
|
17
31
|
*/
|
|
18
32
|
export declare class RawSqliteConnection {
|
|
19
|
-
readonly options:
|
|
33
|
+
readonly options: RawWaSqliteDatabaseOptions;
|
|
20
34
|
private _sqliteAPI;
|
|
35
|
+
private sqlite3_stmt_isexplain;
|
|
21
36
|
/**
|
|
22
37
|
* The `sqlite3*` connection pointer.
|
|
23
38
|
*/
|
|
24
39
|
private db;
|
|
25
|
-
|
|
40
|
+
private statementCache;
|
|
41
|
+
constructor(options: RawWaSqliteDatabaseOptions);
|
|
26
42
|
get isOpen(): boolean;
|
|
27
43
|
init(): Promise<void>;
|
|
44
|
+
initWithModule(module: any, vfs: any): Promise<void>;
|
|
28
45
|
private openSQLiteAPI;
|
|
29
46
|
requireSqlite(): SQLiteAPI;
|
|
30
47
|
/**
|
|
@@ -32,8 +49,8 @@ export declare class RawSqliteConnection {
|
|
|
32
49
|
* @returns true if in autocommit mode, false if in a transaction
|
|
33
50
|
*/
|
|
34
51
|
isAutoCommit(): boolean;
|
|
35
|
-
execute(sql: string, bindings?: any[]): Promise<
|
|
36
|
-
executeBatch(sql: string, bindings: any[][]): Promise<
|
|
52
|
+
execute(sql: string, bindings?: any[]): Promise<RawWebResult>;
|
|
53
|
+
executeBatch(sql: string, bindings: any[][]): Promise<RawWebResult[]>;
|
|
37
54
|
private wrapQueryResults;
|
|
38
55
|
/**
|
|
39
56
|
* This executes a single statement using SQLite3 and returns the results as a {@link RawResultSet}.
|
|
@@ -42,4 +59,5 @@ export declare class RawSqliteConnection {
|
|
|
42
59
|
executeRaw(sql: string, bindings?: any[]): Promise<RawResultSet[]>;
|
|
43
60
|
private stepThroughStatement;
|
|
44
61
|
close(): Promise<void>;
|
|
62
|
+
private cachedStatements;
|
|
45
63
|
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { Factory as WaSqliteFactory, SQLITE_ROW } from '@journeyapps/wa-sqlite';
|
|
2
2
|
import { loadModuleAndVfs } from './vfs.js';
|
|
3
|
+
import { maxPathNameLength } from '../resolveAndValidateOptions.js';
|
|
4
|
+
import { PreparedStatementCache } from './StatementCache.js';
|
|
3
5
|
/**
|
|
4
6
|
* A small wrapper around WA-sqlite to help with opening databases and running statements by preparing them internally.
|
|
5
7
|
*
|
|
@@ -9,29 +11,38 @@ import { loadModuleAndVfs } from './vfs.js';
|
|
|
9
11
|
export class RawSqliteConnection {
|
|
10
12
|
options;
|
|
11
13
|
_sqliteAPI = null;
|
|
14
|
+
sqlite3_stmt_isexplain;
|
|
12
15
|
/**
|
|
13
16
|
* The `sqlite3*` connection pointer.
|
|
14
17
|
*/
|
|
15
18
|
db = 0;
|
|
19
|
+
statementCache;
|
|
16
20
|
constructor(options) {
|
|
17
21
|
this.options = options;
|
|
22
|
+
this.statementCache =
|
|
23
|
+
options.preparedStatementsCache > 0 ? new PreparedStatementCache(options.preparedStatementsCache) : null;
|
|
18
24
|
}
|
|
19
25
|
get isOpen() {
|
|
20
26
|
return this.db != 0;
|
|
21
27
|
}
|
|
22
28
|
async init() {
|
|
23
|
-
const
|
|
24
|
-
|
|
29
|
+
const { module, vfs } = await loadModuleAndVfs(this.options);
|
|
30
|
+
await this.initWithModule(module, vfs);
|
|
31
|
+
}
|
|
32
|
+
async initWithModule(module, vfs) {
|
|
33
|
+
const api = (this._sqliteAPI = await this.openSQLiteAPI(module, vfs));
|
|
34
|
+
this.db = await api.open_v2(this.options.filename, this.options.readonly ? 1 /* SQLITE_OPEN_READONLY */ : 6 /* SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE */);
|
|
25
35
|
await this.executeRaw(`PRAGMA temp_store = ${this.options.temporaryStorage};`);
|
|
26
36
|
if (this.options.encryptionKey) {
|
|
27
|
-
const escapedKey = this.options.encryptionKey.
|
|
28
|
-
await this.executeRaw(`PRAGMA key = '${escapedKey}'
|
|
37
|
+
const escapedKey = this.options.encryptionKey.replaceAll("'", "''");
|
|
38
|
+
await this.executeRaw(`PRAGMA key = '${escapedKey}';`);
|
|
29
39
|
}
|
|
30
40
|
await this.executeRaw(`PRAGMA cache_size = -${this.options.cacheSizeKb};`);
|
|
31
41
|
await this.executeRaw(`SELECT powersync_update_hooks('install');`);
|
|
32
42
|
}
|
|
33
|
-
async openSQLiteAPI() {
|
|
34
|
-
|
|
43
|
+
async openSQLiteAPI(module, vfs) {
|
|
44
|
+
vfs.mxPathname = maxPathNameLength;
|
|
45
|
+
this.sqlite3_stmt_isexplain = module.cwrap('sqlite3_stmt_isexplain', 'int', ['int']);
|
|
35
46
|
const sqlite3 = WaSqliteFactory(module);
|
|
36
47
|
sqlite3.vfs_register(vfs, true);
|
|
37
48
|
/**
|
|
@@ -42,7 +53,7 @@ export class RawSqliteConnection {
|
|
|
42
53
|
* Create the multiple cipher vfs if an encryption key is provided
|
|
43
54
|
*/
|
|
44
55
|
if (this.options.encryptionKey) {
|
|
45
|
-
const createResult = module.ccall('sqlite3mc_vfs_create', 'int', ['string', 'int'], [this.options.
|
|
56
|
+
const createResult = module.ccall('sqlite3mc_vfs_create', 'int', ['string', 'int'], [this.options.filename, 1]);
|
|
46
57
|
if (createResult !== 0) {
|
|
47
58
|
throw new Error('Failed to create multiple cipher vfs, Database encryption will not work');
|
|
48
59
|
}
|
|
@@ -80,12 +91,13 @@ export class RawSqliteConnection {
|
|
|
80
91
|
}
|
|
81
92
|
return results;
|
|
82
93
|
}
|
|
83
|
-
wrapQueryResults(api,
|
|
94
|
+
wrapQueryResults(api, { rawRows, columnNames }) {
|
|
84
95
|
return {
|
|
85
|
-
|
|
86
|
-
|
|
96
|
+
rowsAffected: api.changes(this.db),
|
|
97
|
+
insertId: api.last_insert_id(this.db),
|
|
87
98
|
autocommit: api.get_autocommit(this.db) != 0,
|
|
88
|
-
|
|
99
|
+
rawRows,
|
|
100
|
+
columnNames
|
|
89
101
|
};
|
|
90
102
|
}
|
|
91
103
|
/**
|
|
@@ -93,15 +105,15 @@ export class RawSqliteConnection {
|
|
|
93
105
|
*/
|
|
94
106
|
async executeSingleStatementRaw(sql, bindings) {
|
|
95
107
|
const results = await this.executeRaw(sql, bindings);
|
|
96
|
-
return results.length ? results[0] :
|
|
108
|
+
return results.length ? results[0] : { columnNames: [], rawRows: [] };
|
|
97
109
|
}
|
|
98
110
|
async executeRaw(sql, bindings) {
|
|
99
111
|
const results = [];
|
|
100
112
|
const api = this.requireSqlite();
|
|
101
|
-
for await (const stmt of
|
|
113
|
+
for await (const stmt of this.cachedStatements(api, sql)) {
|
|
102
114
|
let columns;
|
|
103
115
|
const rs = await this.stepThroughStatement(api, stmt, bindings ?? [], columns);
|
|
104
|
-
columns = rs.
|
|
116
|
+
columns = rs.columnNames;
|
|
105
117
|
if (columns.length) {
|
|
106
118
|
results.push(rs);
|
|
107
119
|
}
|
|
@@ -131,13 +143,55 @@ export class RawSqliteConnection {
|
|
|
131
143
|
}
|
|
132
144
|
}
|
|
133
145
|
knownColumns ??= api.column_names(stmt);
|
|
134
|
-
return {
|
|
146
|
+
return { columnNames: knownColumns, rawRows: rows };
|
|
135
147
|
}
|
|
136
148
|
async close() {
|
|
137
149
|
if (this.isOpen) {
|
|
138
|
-
|
|
150
|
+
const api = this.requireSqlite();
|
|
151
|
+
if (this.statementCache) {
|
|
152
|
+
for (const stmt of this.statementCache.drain()) {
|
|
153
|
+
await api.finalize(stmt);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
await api.close(this.db);
|
|
139
157
|
this.db = 0;
|
|
140
158
|
}
|
|
141
159
|
}
|
|
160
|
+
async *cachedStatements(api, sql) {
|
|
161
|
+
{
|
|
162
|
+
const existing = this.statementCache?.lookup(sql);
|
|
163
|
+
if (existing != null) {
|
|
164
|
+
yield existing;
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
const inner = api.statements(this.db, sql, { unscoped: true });
|
|
169
|
+
const preparedStatements = [];
|
|
170
|
+
try {
|
|
171
|
+
for await (const stmt of inner) {
|
|
172
|
+
preparedStatements.push(stmt);
|
|
173
|
+
yield stmt;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
finally {
|
|
177
|
+
// We can only cache statements if the sql text corresponds to a single statement, otherwise it's not clear what
|
|
178
|
+
// portion of the original sql text to use as a key.
|
|
179
|
+
if (preparedStatements.length === 1 && this.statementCache) {
|
|
180
|
+
const stmt = preparedStatements[0];
|
|
181
|
+
// Don't cache EXPLAIN statements, their result becomes invalid after schema changes.
|
|
182
|
+
if (this.sqlite3_stmt_isexplain(stmt) == 0) {
|
|
183
|
+
const evicted = this.statementCache.addStatement(sql, stmt);
|
|
184
|
+
if (evicted != null) {
|
|
185
|
+
await api.finalize(evicted);
|
|
186
|
+
}
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
// We're not caching statements, so finalize them.
|
|
191
|
+
for (const stmt of preparedStatements) {
|
|
192
|
+
await api.finalize(stmt);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
142
196
|
}
|
|
143
197
|
//# sourceMappingURL=RawSqliteConnection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RawSqliteConnection.js","sourceRoot":"","sources":["../../../../src/db/adapters/wa-sqlite/RawSqliteConnection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare class PreparedStatementCache {
|
|
2
|
+
#private;
|
|
3
|
+
constructor(size: number);
|
|
4
|
+
/**
|
|
5
|
+
* Attempts to look up the cached sql statement, if it's currently cached.
|
|
6
|
+
*/
|
|
7
|
+
lookup(sql: string): number | null;
|
|
8
|
+
/**
|
|
9
|
+
* Adds a new statement into the cache.
|
|
10
|
+
*
|
|
11
|
+
* If that exceeds the target size of the statement cache, returns an old statement to evict.
|
|
12
|
+
* The caller is responsible for freeing that statement.
|
|
13
|
+
*/
|
|
14
|
+
addStatement(sql: string, statement: number): number | null;
|
|
15
|
+
drain(): number[];
|
|
16
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export class PreparedStatementCache {
|
|
2
|
+
#size;
|
|
3
|
+
// Note that Map preserves insertion order, which allows using it as an LRU
|
|
4
|
+
// cache (with the first element being the first element to evict).
|
|
5
|
+
#statements = new Map();
|
|
6
|
+
constructor(size) {
|
|
7
|
+
this.#size = size;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Attempts to look up the cached sql statement, if it's currently cached.
|
|
11
|
+
*/
|
|
12
|
+
lookup(sql) {
|
|
13
|
+
const foundStatement = this.#statements.get(sql);
|
|
14
|
+
if (foundStatement != null) {
|
|
15
|
+
// Delete and re-insert to move to the end (most-recently-used position).
|
|
16
|
+
this.#statements.delete(sql);
|
|
17
|
+
this.#statements.set(sql, foundStatement);
|
|
18
|
+
return foundStatement;
|
|
19
|
+
}
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Adds a new statement into the cache.
|
|
24
|
+
*
|
|
25
|
+
* If that exceeds the target size of the statement cache, returns an old statement to evict.
|
|
26
|
+
* The caller is responsible for freeing that statement.
|
|
27
|
+
*/
|
|
28
|
+
addStatement(sql, statement) {
|
|
29
|
+
this.#statements.set(sql, statement);
|
|
30
|
+
if (this.#statements.size > this.#size) {
|
|
31
|
+
for (const [k, v] of this.#statements.entries()) {
|
|
32
|
+
this.#statements.delete(k);
|
|
33
|
+
return v;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
drain() {
|
|
39
|
+
const values = [...this.#statements.values()];
|
|
40
|
+
this.#statements.clear();
|
|
41
|
+
return values;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=StatementCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatementCache.js","sourceRoot":"","sources":["../../../../src/db/adapters/wa-sqlite/StatementCache.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,sBAAsB;IACxB,KAAK,CAAS;IACvB,2EAA2E;IAC3E,mEAAmE;IAC1D,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEjD,YAAY,IAAY;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,GAAW;QAChB,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,cAAc,IAAI,IAAI,EAAE,CAAC;YAC3B,yEAAyE;YACzE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YAC1C,OAAO,cAAc,CAAC;QACxB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,GAAW,EAAE,SAAiB;QACzC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAErC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YACvC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;gBAChD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC3B,OAAO,CAAC,CAAC;YACX,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { DBAdapter, PowerSyncLogger, SQLOpenFactory } from '@powersync/common';
|
|
2
|
+
import { WebSQLOpenOptions } from '../options.js';
|
|
3
|
+
import { PoolConnection } from '../AsyncWebAdapter.js';
|
|
4
|
+
export interface WASQLiteOpenFactoryOptions {
|
|
5
|
+
open: WebSQLOpenOptions;
|
|
6
|
+
logger: PowerSyncLogger;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Opens a SQLite connection using WA-SQLite.
|
|
10
|
+
*/
|
|
11
|
+
export declare class WASQLiteOpenFactory implements SQLOpenFactory {
|
|
12
|
+
private options;
|
|
13
|
+
private logger;
|
|
14
|
+
constructor(options: WASQLiteOpenFactoryOptions);
|
|
15
|
+
protected openAdapter(): DBAdapter;
|
|
16
|
+
openDB(): DBAdapter;
|
|
17
|
+
openConnection(): Promise<PoolConnection>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { LogLevels } from '@powersync/common';
|
|
2
|
+
import * as Comlink from 'comlink';
|
|
3
|
+
import { SSRDBAdapter } from '../SSRDBAdapter.js';
|
|
4
|
+
import { vfsRequiresDedicatedWorkers, WASQLiteVFS } from './vfs.js';
|
|
5
|
+
import { MultiDatabaseServer } from '../../../worker/db/MultiDatabaseServer.js';
|
|
6
|
+
import { DatabaseClient } from './DatabaseClient.js';
|
|
7
|
+
import { generateTabCloseSignal } from '../../../shared/tab_close_signal.js';
|
|
8
|
+
import { AsyncDbAdapter } from '../AsyncWebAdapter.js';
|
|
9
|
+
import { maxPathNameLength, resolveAndValidateOptions } from '../resolveAndValidateOptions.js';
|
|
10
|
+
import { connectToExistingWorker, connectToWorker } from '../../../worker/client.js';
|
|
11
|
+
/**
|
|
12
|
+
* Opens a SQLite connection using WA-SQLite.
|
|
13
|
+
*/
|
|
14
|
+
export class WASQLiteOpenFactory {
|
|
15
|
+
options;
|
|
16
|
+
logger;
|
|
17
|
+
constructor(options) {
|
|
18
|
+
this.options = resolveAndValidateOptions(options.open);
|
|
19
|
+
// Account for the fact that SQLite might append -journal suffixes
|
|
20
|
+
const maxLength = maxPathNameLength - 16;
|
|
21
|
+
if (this.options.dbFilename.length > maxLength) {
|
|
22
|
+
throw new Error(`dbFilename too long (max length is ${maxLength})`);
|
|
23
|
+
}
|
|
24
|
+
this.logger = options.logger;
|
|
25
|
+
}
|
|
26
|
+
openAdapter() {
|
|
27
|
+
return new AsyncDbAdapter(this.openConnection(), this.options.dbFilename);
|
|
28
|
+
}
|
|
29
|
+
openDB() {
|
|
30
|
+
const { disableSSRWarning, enableMultiTabs, ssrMode } = this.options;
|
|
31
|
+
if (ssrMode) {
|
|
32
|
+
if (!disableSSRWarning) {
|
|
33
|
+
this.logger.log({
|
|
34
|
+
level: LogLevels.warn,
|
|
35
|
+
message: `
|
|
36
|
+
Running PowerSync in SSR mode.
|
|
37
|
+
Only empty query results will be returned.
|
|
38
|
+
Disable this warning by setting 'disableSSRWarning: true' in options.`
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
return new SSRDBAdapter();
|
|
42
|
+
}
|
|
43
|
+
if (!enableMultiTabs) {
|
|
44
|
+
this.logger.log({
|
|
45
|
+
level: LogLevels.warn,
|
|
46
|
+
message: 'Multiple tab support is not enabled. Using this site across multiple tabs may not function correctly.'
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
return this.openAdapter();
|
|
50
|
+
}
|
|
51
|
+
async openConnection() {
|
|
52
|
+
const { enableMultiTabs, useWebWorker, vfs, dbFilename, encryptionKey, temporaryStorage, cacheSizeKb, preparedStatementsCache } = this.options;
|
|
53
|
+
if (!enableMultiTabs) {
|
|
54
|
+
this.logger.log({ level: LogLevels.warn, message: 'Multiple tabs are not enabled in this browser' });
|
|
55
|
+
}
|
|
56
|
+
let client;
|
|
57
|
+
let additionalReaders = [];
|
|
58
|
+
let requiresPersistentTriggers = vfsRequiresDedicatedWorkers(vfs);
|
|
59
|
+
function resolveRawWaSqliteDatabaseOptions(readonly) {
|
|
60
|
+
return {
|
|
61
|
+
filename: dbFilename,
|
|
62
|
+
readonly,
|
|
63
|
+
vfs,
|
|
64
|
+
encryptionKey,
|
|
65
|
+
temporaryStorage,
|
|
66
|
+
cacheSizeKb,
|
|
67
|
+
// TODO: Enable prepared statement cache by default?
|
|
68
|
+
preparedStatementsCache: preparedStatementsCache ?? 0
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
if (useWebWorker) {
|
|
72
|
+
const optionsDbWorker = this.options.worker;
|
|
73
|
+
const openDatabaseWorker = async (readonly) => {
|
|
74
|
+
let workerConnection;
|
|
75
|
+
if (typeof optionsDbWorker == 'function') {
|
|
76
|
+
const worker = optionsDbWorker(this.options);
|
|
77
|
+
workerConnection = connectToExistingWorker(worker, this.logger, 'database');
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
const needsDedicated = vfsRequiresDedicatedWorkers(vfs);
|
|
81
|
+
const useShared = !needsDedicated && enableMultiTabs;
|
|
82
|
+
workerConnection = connectToWorker({
|
|
83
|
+
service: 'database',
|
|
84
|
+
databaseIdentifier: this.options.dbFilename,
|
|
85
|
+
shared: useShared,
|
|
86
|
+
customWorker: optionsDbWorker,
|
|
87
|
+
loggerForErrors: this.logger
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
const source = Comlink.wrap(workerConnection.endpoint);
|
|
91
|
+
const closeSignal = new AbortController();
|
|
92
|
+
const connection = await source.connect({
|
|
93
|
+
database: resolveRawWaSqliteDatabaseOptions(readonly),
|
|
94
|
+
logLevel: this.options.databaseWorkerLogLevel,
|
|
95
|
+
lockName: await generateTabCloseSignal(closeSignal.signal)
|
|
96
|
+
});
|
|
97
|
+
const clientOptions = {
|
|
98
|
+
connection,
|
|
99
|
+
source,
|
|
100
|
+
// This tab owns the worker, so we're guaranteed to outlive it.
|
|
101
|
+
remoteCanCloseUnexpectedly: false,
|
|
102
|
+
onClose: () => {
|
|
103
|
+
closeSignal.abort();
|
|
104
|
+
workerConnection.close();
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
return new DatabaseClient(clientOptions, {
|
|
108
|
+
...this.options,
|
|
109
|
+
requiresPersistentTriggers
|
|
110
|
+
});
|
|
111
|
+
};
|
|
112
|
+
client = await openDatabaseWorker(false);
|
|
113
|
+
if (vfs == WASQLiteVFS.OPFSWriteAheadVFS) {
|
|
114
|
+
// This VFS supports concurrent reads, so we can open additional workers to host read-only connections for
|
|
115
|
+
// concurrent reads / writes.
|
|
116
|
+
const additionalReadersCount = this.options.additionalReaders ?? 1;
|
|
117
|
+
const additionalReaderPromises = [];
|
|
118
|
+
for (let i = 0; i < additionalReadersCount; i++) {
|
|
119
|
+
additionalReaderPromises.push(openDatabaseWorker(true));
|
|
120
|
+
}
|
|
121
|
+
additionalReaders.push(...(await Promise.all(additionalReaderPromises)));
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
// Don't use a web worker. Instead, open the MultiDatabaseServer a worker would use locally.
|
|
126
|
+
const localServer = new MultiDatabaseServer(this.logger);
|
|
127
|
+
requiresPersistentTriggers = true;
|
|
128
|
+
const connection = await localServer.openConnectionLocally(this.logger, resolveRawWaSqliteDatabaseOptions(false));
|
|
129
|
+
client = new DatabaseClient({ connection, source: null, remoteCanCloseUnexpectedly: false }, {
|
|
130
|
+
...this.options,
|
|
131
|
+
requiresPersistentTriggers
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
return {
|
|
135
|
+
writer: client,
|
|
136
|
+
additionalReaders
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=WASQLiteOpenFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WASQLiteOpenFactory.js","sourceRoot":"","sources":["../../../../src/db/adapters/wa-sqlite/WASQLiteOpenFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type * as SQLite from '@journeyapps/wa-sqlite';
|
|
2
|
-
import {
|
|
2
|
+
import { RawWaSqliteDatabaseOptions } from './RawSqliteConnection.js';
|
|
3
3
|
/**
|
|
4
4
|
* List of currently tested virtual filesystems
|
|
5
5
|
*/
|
|
@@ -27,6 +27,13 @@ export declare enum WASQLiteVFS {
|
|
|
27
27
|
InMemoryVfs = "InMemoryVFS"
|
|
28
28
|
}
|
|
29
29
|
export declare function vfsRequiresDedicatedWorkers(vfs: WASQLiteVFS): vfs is WASQLiteVFS.OPFSCoopSyncVFS | WASQLiteVFS.AccessHandlePoolVFS | WASQLiteVFS.OPFSWriteAheadVFS;
|
|
30
|
+
/**
|
|
31
|
+
* @internal
|
|
32
|
+
*/
|
|
33
|
+
export type WASQLiteModuleFactoryOptions = {
|
|
34
|
+
dbFileName: string;
|
|
35
|
+
encryptionKey?: string;
|
|
36
|
+
};
|
|
30
37
|
/**
|
|
31
38
|
* @internal
|
|
32
39
|
*/
|
|
@@ -34,7 +41,7 @@ export type SQLiteModule = Parameters<typeof SQLite.Factory>[0];
|
|
|
34
41
|
/**
|
|
35
42
|
* @internal
|
|
36
43
|
*/
|
|
37
|
-
export declare function loadModuleAndVfs({ vfs,
|
|
44
|
+
export declare function loadModuleAndVfs({ vfs, filename, encryptionKey }: RawWaSqliteDatabaseOptions): Promise<{
|
|
38
45
|
module: SQLiteModule;
|
|
39
46
|
vfs: SQLiteVFS;
|
|
40
47
|
}>;
|