@powersync/web 0.0.0-dev-20260504100448 → 0.0.0-dev-20260630141119
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/powersync.cjs +1 -1
- package/dist/index.react_native_web.js +1879 -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/OPFSCoopSyncVFS-DRKedN0p.js +2 -0
- package/dist/worker/OPFSCoopSyncVFS-DRKedN0p.js.map +1 -0
- package/dist/worker/OPFSWriteAheadVFS-BzodSqNq.js +2 -0
- package/dist/worker/OPFSWriteAheadVFS-BzodSqNq.js.map +1 -0
- package/dist/worker/mc-wa-sqlite-DiBqIVE5.js +2 -0
- package/dist/worker/mc-wa-sqlite-DiBqIVE5.js.map +1 -0
- package/dist/worker/mc-wa-sqlite-async-DUEhO9ef.js +2 -0
- package/dist/worker/mc-wa-sqlite-async-DUEhO9ef.js.map +1 -0
- package/dist/worker/wa-sqlite-BlSx7-_P.js +2 -0
- package/dist/worker/wa-sqlite-BlSx7-_P.js.map +1 -0
- package/dist/worker/wa-sqlite-async-BdR24Ucf.js +2 -0
- package/dist/worker/wa-sqlite-async-BdR24Ucf.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/{src/attachments → attachments}/IndexDBFileSystemAdapter.js +1 -0
- package/lib/attachments/IndexDBFileSystemAdapter.js.map +1 -0
- package/lib/{src/db → db}/NavigatorTriggerClaimManager.d.ts +1 -1
- package/lib/{src/db → db}/NavigatorTriggerClaimManager.js +1 -0
- package/lib/db/NavigatorTriggerClaimManager.js.map +1 -0
- package/lib/db/PowerSyncDatabase.d.ts +67 -0
- package/lib/{src/db → db}/PowerSyncDatabase.js +48 -61
- 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 +15 -14
- 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 +2 -0
- package/lib/db/adapters/WebDBAdapter.js.map +1 -0
- package/lib/db/adapters/options.d.ts +87 -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 +5 -0
- package/lib/db/adapters/resolveAndValidateOptions.js +33 -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 +3 -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 +12 -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 +12 -7
- package/lib/db/adapters/wa-sqlite/DatabaseServer.js.map +1 -0
- package/lib/{src/db → db}/adapters/wa-sqlite/RawSqliteConnection.d.ts +22 -12
- package/lib/{src/db → db}/adapters/wa-sqlite/RawSqliteConnection.js +12 -10
- package/lib/db/adapters/wa-sqlite/RawSqliteConnection.js.map +1 -0
- package/lib/db/adapters/wa-sqlite/WASQLiteOpenFactory.d.ts +18 -0
- package/lib/db/adapters/wa-sqlite/WASQLiteOpenFactory.js +131 -0
- package/lib/db/adapters/wa-sqlite/WASQLiteOpenFactory.js.map +1 -0
- package/lib/{src/db → db}/adapters/wa-sqlite/vfs.js +1 -0
- package/lib/db/adapters/wa-sqlite/vfs.js.map +1 -0
- package/lib/{src/db → db}/sync/SSRWebStreamingSyncImplementation.d.ts +4 -8
- package/lib/{src/db → db}/sync/SSRWebStreamingSyncImplementation.js +5 -11
- package/lib/db/sync/SSRWebStreamingSyncImplementation.js.map +1 -0
- package/lib/{src/db → db}/sync/SharedWebStreamingSyncImplementation.d.ts +13 -14
- package/lib/{src/db → db}/sync/SharedWebStreamingSyncImplementation.js +32 -66
- package/lib/db/sync/SharedWebStreamingSyncImplementation.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 +4 -2
- package/lib/db/sync/WebStreamingSyncImplementation.js.map +1 -0
- package/lib/{src/db → db}/sync/userAgent.js +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} +2 -3
- package/lib/index.js.map +1 -0
- package/lib/{src/shared → shared}/navigator.js +1 -0
- package/lib/shared/navigator.js.map +1 -0
- package/lib/{src/shared → shared}/tab_close_signal.js +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 +15 -0
- package/lib/worker/client.js +77 -0
- package/lib/worker/client.js.map +1 -0
- package/lib/worker/db/MultiDatabaseServer.d.ts +22 -0
- package/lib/{src/worker → worker}/db/MultiDatabaseServer.js +26 -15
- package/lib/worker/db/MultiDatabaseServer.js.map +1 -0
- package/lib/worker/sync/AbstractSharedSyncClientProvider.d.ts +13 -0
- package/lib/{src/worker → worker}/sync/AbstractSharedSyncClientProvider.js +1 -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 +11 -15
- package/lib/{src/worker → worker}/sync/SharedSyncImplementation.js +43 -43
- package/lib/worker/sync/SharedSyncImplementation.js.map +1 -0
- package/lib/{src/worker → worker}/sync/WorkerClient.d.ts +3 -3
- package/lib/{src/worker → worker}/sync/WorkerClient.js +3 -2
- package/lib/worker/sync/WorkerClient.js.map +1 -0
- package/lib/worker/worker.js +34 -0
- package/lib/worker/worker.js.map +1 -0
- package/package.json +22 -29
- package/src/db/NavigatorTriggerClaimManager.ts +1 -1
- package/src/db/PowerSyncDatabase.ts +80 -122
- package/src/db/adapters/AsyncWebAdapter.ts +17 -26
- package/src/db/adapters/SSRDBAdapter.ts +14 -64
- package/src/db/adapters/WebDBAdapter.ts +1 -1
- package/src/db/adapters/options.ts +100 -0
- package/src/db/adapters/resolveAndValidateOptions.ts +40 -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 +15 -12
- package/src/db/adapters/wa-sqlite/RawSqliteConnection.ts +35 -24
- package/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.ts +63 -126
- package/src/db/sync/SSRWebStreamingSyncImplementation.ts +4 -22
- package/src/db/sync/SharedWebStreamingSyncImplementation.ts +38 -77
- 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 +100 -0
- package/src/worker/db/MultiDatabaseServer.ts +40 -22
- package/src/worker/sync/AbstractSharedSyncClientProvider.ts +4 -10
- package/src/worker/sync/BroadcastLogger.ts +35 -103
- package/src/worker/sync/SharedSyncImplementation.ts +62 -63
- package/src/worker/sync/WorkerClient.ts +4 -4
- package/src/worker/worker.ts +38 -0
- package/dist/index.umd.js +0 -7613
- package/dist/index.umd.js.map +0 -1
- package/dist/worker/SharedSyncImplementation.umd.js +0 -15885
- package/dist/worker/SharedSyncImplementation.umd.js.map +0 -1
- package/dist/worker/WASQLiteDB.umd.js +0 -17164
- 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-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/db/PowerSyncDatabase.d.ts +0 -78
- package/lib/src/db/adapters/AbstractWebPowerSyncDatabaseOpenFactory.d.ts +0 -23
- package/lib/src/db/adapters/AbstractWebPowerSyncDatabaseOpenFactory.js +0 -26
- package/lib/src/db/adapters/AsyncWebAdapter.d.ts +0 -50
- package/lib/src/db/adapters/SSRDBAdapter.d.ts +0 -30
- package/lib/src/db/adapters/SSRDBAdapter.js +0 -68
- package/lib/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.d.ts +0 -45
- package/lib/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.js +0 -145
- package/lib/src/db/adapters/wa-sqlite/WASQLitePowerSyncDatabaseOpenFactory.d.ts +0 -15
- package/lib/src/db/adapters/wa-sqlite/WASQLitePowerSyncDatabaseOpenFactory.js +0 -21
- package/lib/src/db/adapters/web-sql-flags.d.ts +0 -92
- package/lib/src/db/adapters/web-sql-flags.js +0 -36
- package/lib/src/db/sync/WebRemote.d.ts +0 -7
- package/lib/src/db/sync/WebRemote.js +0 -32
- package/lib/src/worker/db/MultiDatabaseServer.d.ts +0 -17
- package/lib/src/worker/db/WASQLiteDB.worker.d.ts +0 -4
- package/lib/src/worker/db/WASQLiteDB.worker.js +0 -30
- package/lib/src/worker/db/open-worker-database.d.ts +0 -14
- package/lib/src/worker/db/open-worker-database.js +0 -52
- package/lib/src/worker/sync/AbstractSharedSyncClientProvider.d.ts +0 -19
- package/lib/src/worker/sync/BroadcastLogger.d.ts +0 -47
- package/lib/src/worker/sync/BroadcastLogger.js +0 -128
- package/lib/src/worker/sync/SharedSyncImplementation.worker.d.ts +0 -1
- package/lib/src/worker/sync/SharedSyncImplementation.worker.js +0 -11
- 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/dist/{8e97452e297be23b5e50.wasm → worker/assets/mc-wa-sqlite-CnHbhWvs.wasm} +0 -0
- /package/dist/{2075a31bb151adbb9767.wasm → worker/assets/mc-wa-sqlite-async-D6idQS2r.wasm} +0 -0
- /package/dist/{3322bc84de986b63c2cd.wasm → worker/assets/wa-sqlite-XZW__iJk.wasm} +0 -0
- /package/dist/{fbc178b70d530e8ce02b.wasm → worker/assets/wa-sqlite-async-rHzzC98y.wasm} +0 -0
- /package/lib/{src/attachments → attachments}/IndexDBFileSystemAdapter.d.ts +0 -0
- /package/lib/{src/db → db}/adapters/wa-sqlite/vfs.d.ts +0 -0
- /package/lib/{src/db → db}/sync/userAgent.d.ts +0 -0
- /package/lib/{src/shared → shared}/navigator.d.ts +0 -0
- /package/lib/{src/shared → shared}/tab_close_signal.d.ts +0 -0
- /package/lib/{src/db/adapters/WebDBAdapter.js → worker/worker.d.ts} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Mutex } from '@powersync/
|
|
1
|
+
import { Mutex } from '@powersync/shared-internals';
|
|
2
2
|
/**
|
|
3
3
|
* A wrapper around a {@link RawSqliteConnection} allowing multiple tabs to access it.
|
|
4
4
|
*
|
|
@@ -37,7 +37,7 @@ export class ConcurrentSqliteConnection {
|
|
|
37
37
|
return new Promise((resolve, reject) => {
|
|
38
38
|
const options = { signal: abort };
|
|
39
39
|
navigator.locks
|
|
40
|
-
.request(`db-lock-${this.options.
|
|
40
|
+
.request(`db-lock-${this.options.filename}`, options, (_) => {
|
|
41
41
|
return new Promise((returnLock) => {
|
|
42
42
|
return resolve(() => {
|
|
43
43
|
returnLock();
|
|
@@ -119,3 +119,4 @@ export class ConnectionLeaseToken {
|
|
|
119
119
|
});
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
|
+
//# sourceMappingURL=ConcurrentConnection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConcurrentConnection.js","sourceRoot":"","sources":["../../../../src/db/adapters/wa-sqlite/ConcurrentConnection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAY,MAAM,6BAA6B,CAAC;AAG9D;;;;;;;;GAQG;AACH,MAAM,OAAO,0BAA0B;IAgBlB;IAfnB;;;;OAIG;IACK,UAAU,CAAe;IAEjC;;;;;;OAMG;IACH,YACmB,KAA0B,EAC3C,mBAA4B;QADX,UAAK,GAAL,KAAK,CAAqB;QAG3C,IAAI,CAAC,UAAU,GAAG,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC;IAC7D,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;IAC5B,CAAC;IAED,YAAY,CAAC,KAAmB;QAC9B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,OAAO,GAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YAE/C,SAAS,CAAC,KAAK;iBACZ,OAAO,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gBAC1D,OAAO,IAAI,OAAO,CAAO,CAAC,UAAU,EAAE,EAAE;oBACtC,OAAO,OAAO,CAAC,GAAG,EAAE;wBAClB,UAAU,EAAE,CAAC;oBACf,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;iBACD,KAAK,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,qDAAqD;IACrD,cAAc;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,KAAmB;QACzC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,IAAI,oBAAoB,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAEhE,IAAI,CAAC;YACH,yFAAyF;YACzF,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YAE3B,iHAAiH;YACjH,+GAA+G;YAC/G,8BAA8B;YAC9B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC;gBAC/B,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,WAAW,EAAE,CAAC;YACd,MAAM,CAAC,CAAC;QACV,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAC3B,CAAC;gBAAS,CAAC;YACT,WAAW,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,oBAAoB;IAMrB;IACA;IANV,2FAA2F;IACnF,QAAQ,GAAU,IAAI,KAAK,EAAE,CAAC;IAC9B,MAAM,GAAG,KAAK,CAAC;IAEvB,YACU,WAAqB,EACrB,UAA+B;QAD/B,gBAAW,GAAX,WAAW,CAAU;QACrB,eAAU,GAAV,UAAU,CAAqB;IACtC,CAAC;IAEJ;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;YAC1C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACnB,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAI,QAAmD;QAC9D,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;YACjD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACzD,CAAC;YAED,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { LockContext, DBLockOptions,
|
|
1
|
+
import { LockContext, DBLockOptions, SQLOpenOptions, DBAdapter } from '@powersync/common';
|
|
2
2
|
import { SharedConnectionWorker, WebDBAdapterConfiguration } from '../WebDBAdapter.js';
|
|
3
3
|
import { ClientConnectionView } from './DatabaseServer.js';
|
|
4
4
|
import * as Comlink from 'comlink';
|
|
5
|
-
import {
|
|
5
|
+
import type { ConnectToMultiDatabaseServerOptions } from '../../../worker/db/MultiDatabaseServer.js';
|
|
6
6
|
export interface OpenWorkerConnection {
|
|
7
|
-
connect(config:
|
|
7
|
+
connect(config: ConnectToMultiDatabaseServerOptions): Promise<ClientConnectionView>;
|
|
8
8
|
connectToExisting(options: {
|
|
9
9
|
identifier: string;
|
|
10
10
|
lockName: string;
|
|
@@ -31,7 +31,7 @@ export interface ClientOptions {
|
|
|
31
31
|
/**
|
|
32
32
|
* A single-connection {@link ConnectionPool} implementation based on a worker connection.
|
|
33
33
|
*/
|
|
34
|
-
export declare class DatabaseClient<Config extends SQLOpenOptions = WebDBAdapterConfiguration> extends
|
|
34
|
+
export declare class DatabaseClient<Config extends SQLOpenOptions = WebDBAdapterConfiguration> extends DBAdapter {
|
|
35
35
|
#private;
|
|
36
36
|
private readonly options;
|
|
37
37
|
private readonly config;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { LockContext, DBAdapter, queryResultWithoutRows } from '@powersync/common';
|
|
2
2
|
import * as Comlink from 'comlink';
|
|
3
|
+
import { ConnectionClosedError } from '@powersync/shared-internals';
|
|
3
4
|
/**
|
|
4
5
|
* A single-connection {@link ConnectionPool} implementation based on a worker connection.
|
|
5
6
|
*/
|
|
6
|
-
export class DatabaseClient extends
|
|
7
|
+
export class DatabaseClient extends DBAdapter {
|
|
7
8
|
options;
|
|
8
9
|
config;
|
|
9
10
|
#connection;
|
|
@@ -24,9 +25,7 @@ export class DatabaseClient extends BaseObserver {
|
|
|
24
25
|
port2.onmessage = (event) => {
|
|
25
26
|
const tables = event.data;
|
|
26
27
|
const notification = {
|
|
27
|
-
tables
|
|
28
|
-
groupedUpdates: {},
|
|
29
|
-
rawUpdates: []
|
|
28
|
+
tables
|
|
30
29
|
};
|
|
31
30
|
this.iterateListeners((l) => {
|
|
32
31
|
l.tablesUpdated && l.tablesUpdated(notification);
|
|
@@ -120,15 +119,16 @@ export class DatabaseClient extends BaseObserver {
|
|
|
120
119
|
}
|
|
121
120
|
}
|
|
122
121
|
/**
|
|
123
|
-
* A {@link
|
|
122
|
+
* A {@link LockContext} implemented by sending commands to a worker.
|
|
124
123
|
*
|
|
125
124
|
* While an instance is active, it has exclusive access to the underlying database connection (as represented by its
|
|
126
125
|
* token).
|
|
127
126
|
*/
|
|
128
|
-
class
|
|
127
|
+
class ClientLockContext extends LockContext {
|
|
129
128
|
#connection;
|
|
130
129
|
#token;
|
|
131
130
|
constructor(connection, token) {
|
|
131
|
+
super();
|
|
132
132
|
this.#connection = connection;
|
|
133
133
|
this.#token = token;
|
|
134
134
|
}
|
|
@@ -153,32 +153,8 @@ class ClientSqlExecutor {
|
|
|
153
153
|
return useConnectionState(this.#connection, fn);
|
|
154
154
|
}
|
|
155
155
|
}
|
|
156
|
-
async execute(query, params) {
|
|
157
|
-
const rs = await this.#executeOnWorker(query, params);
|
|
158
|
-
let rows;
|
|
159
|
-
if (rs.resultSet) {
|
|
160
|
-
const resultSet = rs.resultSet;
|
|
161
|
-
function rowToJavaScriptObject(row) {
|
|
162
|
-
const obj = {};
|
|
163
|
-
resultSet.columns.forEach((key, idx) => (obj[key] = row[idx]));
|
|
164
|
-
return obj;
|
|
165
|
-
}
|
|
166
|
-
const mapped = resultSet.rows.map(rowToJavaScriptObject);
|
|
167
|
-
rows = {
|
|
168
|
-
_array: mapped,
|
|
169
|
-
length: mapped.length,
|
|
170
|
-
item: (idx) => mapped[idx]
|
|
171
|
-
};
|
|
172
|
-
}
|
|
173
|
-
return {
|
|
174
|
-
rowsAffected: rs.changes,
|
|
175
|
-
insertId: rs.lastInsertRowId,
|
|
176
|
-
rows
|
|
177
|
-
};
|
|
178
|
-
}
|
|
179
156
|
async executeRaw(query, params) {
|
|
180
|
-
|
|
181
|
-
return rs.resultSet?.rows ?? [];
|
|
157
|
+
return await this.#executeOnWorker(query, params);
|
|
182
158
|
}
|
|
183
159
|
async #executeOnWorker(query, params) {
|
|
184
160
|
return this.maybeTrace((c) => c.execute(this.#token, query, params), () => query);
|
|
@@ -187,14 +163,12 @@ class ClientSqlExecutor {
|
|
|
187
163
|
const results = await this.maybeTrace((c) => c.executeBatch(this.#token, query, params), () => `${query} (batch of ${params.length})`);
|
|
188
164
|
const result = { insertId: undefined, rowsAffected: 0 };
|
|
189
165
|
for (const source of results) {
|
|
190
|
-
result.insertId = source.
|
|
191
|
-
result.rowsAffected
|
|
166
|
+
result.insertId = source.insertId;
|
|
167
|
+
result.rowsAffected = (result.rowsAffected ?? 0) + source.rowsAffected;
|
|
192
168
|
}
|
|
193
|
-
return result;
|
|
169
|
+
return queryResultWithoutRows(result);
|
|
194
170
|
}
|
|
195
171
|
}
|
|
196
|
-
class ClientLockContext extends DBGetUtilsDefaultMixin(ClientSqlExecutor) {
|
|
197
|
-
}
|
|
198
172
|
async function useConnectionState(state, workerPromise, fireActionOnAbort = false) {
|
|
199
173
|
const controller = state.notifyRemoteClosed;
|
|
200
174
|
if (controller) {
|
|
@@ -225,3 +199,4 @@ async function useConnectionState(state, workerPromise, fireActionOnAbort = fals
|
|
|
225
199
|
return workerPromise(state.connection);
|
|
226
200
|
}
|
|
227
201
|
}
|
|
202
|
+
//# sourceMappingURL=DatabaseClient.js.map
|
|
@@ -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,10 +140,11 @@ export class DatabaseServer {
|
|
|
136
140
|
};
|
|
137
141
|
}
|
|
138
142
|
async forceClose() {
|
|
139
|
-
this.#logger.debug
|
|
143
|
+
this.#logger.log({ level: LogLevels.debug, message: `Closing connection to ${this.#inner.options}.` });
|
|
140
144
|
const connection = this.#inner;
|
|
141
145
|
this.#options.onClose();
|
|
142
146
|
this.#updateBroadcastChannel.close();
|
|
143
147
|
await connection.close();
|
|
144
148
|
}
|
|
145
149
|
}
|
|
150
|
+
//# sourceMappingURL=DatabaseServer.js.map
|
|
@@ -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,23 @@
|
|
|
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;
|
|
11
21
|
}
|
|
12
22
|
/**
|
|
13
23
|
* A small wrapper around WA-sqlite to help with opening databases and running statements by preparing them internally.
|
|
@@ -16,14 +26,14 @@ export interface RawQueryResult {
|
|
|
16
26
|
* used concurrently across tabs.
|
|
17
27
|
*/
|
|
18
28
|
export declare class RawSqliteConnection {
|
|
19
|
-
readonly options:
|
|
29
|
+
readonly options: RawWaSqliteDatabaseOptions;
|
|
20
30
|
private _sqliteAPI;
|
|
21
31
|
/**
|
|
22
32
|
* The `sqlite3*` connection pointer.
|
|
23
33
|
*/
|
|
24
34
|
private db;
|
|
25
35
|
private _moduleFactory;
|
|
26
|
-
constructor(options:
|
|
36
|
+
constructor(options: RawWaSqliteDatabaseOptions);
|
|
27
37
|
get isOpen(): boolean;
|
|
28
38
|
init(): Promise<void>;
|
|
29
39
|
private openSQLiteAPI;
|
|
@@ -33,8 +43,8 @@ export declare class RawSqliteConnection {
|
|
|
33
43
|
* @returns true if in autocommit mode, false if in a transaction
|
|
34
44
|
*/
|
|
35
45
|
isAutoCommit(): boolean;
|
|
36
|
-
execute(sql: string, bindings?: any[]): Promise<
|
|
37
|
-
executeBatch(sql: string, bindings: any[][]): Promise<
|
|
46
|
+
execute(sql: string, bindings?: any[]): Promise<RawWebResult>;
|
|
47
|
+
executeBatch(sql: string, bindings: any[][]): Promise<RawWebResult[]>;
|
|
38
48
|
private wrapQueryResults;
|
|
39
49
|
/**
|
|
40
50
|
* This executes a single statement using SQLite3 and returns the results as a {@link RawResultSet}.
|
|
@@ -23,7 +23,7 @@ export class RawSqliteConnection {
|
|
|
23
23
|
}
|
|
24
24
|
async init() {
|
|
25
25
|
const api = (this._sqliteAPI = await this.openSQLiteAPI());
|
|
26
|
-
this.db = await api.open_v2(this.options.
|
|
26
|
+
this.db = await api.open_v2(this.options.filename, this.options.readonly ? 1 /* SQLITE_OPEN_READONLY */ : 6 /* SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE */);
|
|
27
27
|
await this.executeRaw(`PRAGMA temp_store = ${this.options.temporaryStorage};`);
|
|
28
28
|
if (this.options.encryptionKey) {
|
|
29
29
|
const escapedKey = this.options.encryptionKey.replace("'", "''");
|
|
@@ -34,7 +34,7 @@ export class RawSqliteConnection {
|
|
|
34
34
|
}
|
|
35
35
|
async openSQLiteAPI() {
|
|
36
36
|
const { module, vfs } = await this._moduleFactory({
|
|
37
|
-
dbFileName: this.options.
|
|
37
|
+
dbFileName: this.options.filename,
|
|
38
38
|
encryptionKey: this.options.encryptionKey
|
|
39
39
|
});
|
|
40
40
|
const sqlite3 = WaSqliteFactory(module);
|
|
@@ -47,7 +47,7 @@ export class RawSqliteConnection {
|
|
|
47
47
|
* Create the multiple cipher vfs if an encryption key is provided
|
|
48
48
|
*/
|
|
49
49
|
if (this.options.encryptionKey) {
|
|
50
|
-
const createResult = module.ccall('sqlite3mc_vfs_create', 'int', ['string', 'int'], [this.options.
|
|
50
|
+
const createResult = module.ccall('sqlite3mc_vfs_create', 'int', ['string', 'int'], [this.options.filename, 1]);
|
|
51
51
|
if (createResult !== 0) {
|
|
52
52
|
throw new Error('Failed to create multiple cipher vfs, Database encryption will not work');
|
|
53
53
|
}
|
|
@@ -85,12 +85,13 @@ export class RawSqliteConnection {
|
|
|
85
85
|
}
|
|
86
86
|
return results;
|
|
87
87
|
}
|
|
88
|
-
wrapQueryResults(api,
|
|
88
|
+
wrapQueryResults(api, { rawRows, columnNames }) {
|
|
89
89
|
return {
|
|
90
|
-
|
|
91
|
-
|
|
90
|
+
rowsAffected: api.changes(this.db),
|
|
91
|
+
insertId: api.last_insert_id(this.db),
|
|
92
92
|
autocommit: api.get_autocommit(this.db) != 0,
|
|
93
|
-
|
|
93
|
+
rawRows,
|
|
94
|
+
columnNames
|
|
94
95
|
};
|
|
95
96
|
}
|
|
96
97
|
/**
|
|
@@ -98,7 +99,7 @@ export class RawSqliteConnection {
|
|
|
98
99
|
*/
|
|
99
100
|
async executeSingleStatementRaw(sql, bindings) {
|
|
100
101
|
const results = await this.executeRaw(sql, bindings);
|
|
101
|
-
return results.length ? results[0] :
|
|
102
|
+
return results.length ? results[0] : { columnNames: [], rawRows: [] };
|
|
102
103
|
}
|
|
103
104
|
async executeRaw(sql, bindings) {
|
|
104
105
|
const results = [];
|
|
@@ -106,7 +107,7 @@ export class RawSqliteConnection {
|
|
|
106
107
|
for await (const stmt of api.statements(this.db, sql)) {
|
|
107
108
|
let columns;
|
|
108
109
|
const rs = await this.stepThroughStatement(api, stmt, bindings ?? [], columns);
|
|
109
|
-
columns = rs.
|
|
110
|
+
columns = rs.columnNames;
|
|
110
111
|
if (columns.length) {
|
|
111
112
|
results.push(rs);
|
|
112
113
|
}
|
|
@@ -136,7 +137,7 @@ export class RawSqliteConnection {
|
|
|
136
137
|
}
|
|
137
138
|
}
|
|
138
139
|
knownColumns ??= api.column_names(stmt);
|
|
139
|
-
return {
|
|
140
|
+
return { columnNames: knownColumns, rawRows: rows };
|
|
140
141
|
}
|
|
141
142
|
async close() {
|
|
142
143
|
if (this.isOpen) {
|
|
@@ -145,3 +146,4 @@ export class RawSqliteConnection {
|
|
|
145
146
|
}
|
|
146
147
|
}
|
|
147
148
|
}
|
|
149
|
+
//# 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,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,131 @@
|
|
|
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 { 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
|
+
this.logger = options.logger;
|
|
20
|
+
}
|
|
21
|
+
openAdapter() {
|
|
22
|
+
return new AsyncDbAdapter(this.openConnection(), this.options.dbFilename);
|
|
23
|
+
}
|
|
24
|
+
openDB() {
|
|
25
|
+
const { disableSSRWarning, enableMultiTabs, ssrMode } = this.options;
|
|
26
|
+
if (ssrMode) {
|
|
27
|
+
if (!disableSSRWarning) {
|
|
28
|
+
this.logger.log({
|
|
29
|
+
level: LogLevels.warn,
|
|
30
|
+
message: `
|
|
31
|
+
Running PowerSync in SSR mode.
|
|
32
|
+
Only empty query results will be returned.
|
|
33
|
+
Disable this warning by setting 'disableSSRWarning: true' in options.`
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
return new SSRDBAdapter();
|
|
37
|
+
}
|
|
38
|
+
if (!enableMultiTabs) {
|
|
39
|
+
this.logger.log({
|
|
40
|
+
level: LogLevels.warn,
|
|
41
|
+
message: 'Multiple tab support is not enabled. Using this site across multiple tabs may not function correctly.'
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
return this.openAdapter();
|
|
45
|
+
}
|
|
46
|
+
async openConnection() {
|
|
47
|
+
const { enableMultiTabs, useWebWorker, vfs, dbFilename, encryptionKey, temporaryStorage, cacheSizeKb } = this.options;
|
|
48
|
+
if (!enableMultiTabs) {
|
|
49
|
+
this.logger.log({ level: LogLevels.warn, message: 'Multiple tabs are not enabled in this browser' });
|
|
50
|
+
}
|
|
51
|
+
let client;
|
|
52
|
+
let additionalReaders = [];
|
|
53
|
+
let requiresPersistentTriggers = vfsRequiresDedicatedWorkers(vfs);
|
|
54
|
+
function resolveRawWaSqliteDatabaseOptions(readonly) {
|
|
55
|
+
return {
|
|
56
|
+
filename: dbFilename,
|
|
57
|
+
readonly,
|
|
58
|
+
vfs,
|
|
59
|
+
encryptionKey,
|
|
60
|
+
temporaryStorage,
|
|
61
|
+
cacheSizeKb
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
if (useWebWorker) {
|
|
65
|
+
const optionsDbWorker = this.options.worker;
|
|
66
|
+
const openDatabaseWorker = async (readonly) => {
|
|
67
|
+
let workerConnection;
|
|
68
|
+
if (typeof optionsDbWorker == 'function') {
|
|
69
|
+
const worker = optionsDbWorker(this.options);
|
|
70
|
+
workerConnection = connectToExistingWorker(worker, 'database');
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
const needsDedicated = vfsRequiresDedicatedWorkers(vfs);
|
|
74
|
+
const useShared = !needsDedicated && enableMultiTabs;
|
|
75
|
+
workerConnection = connectToWorker({
|
|
76
|
+
service: 'database',
|
|
77
|
+
databaseIdentifier: this.options.dbFilename,
|
|
78
|
+
shared: useShared,
|
|
79
|
+
customWorker: optionsDbWorker
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
const source = Comlink.wrap(workerConnection.endpoint);
|
|
83
|
+
const closeSignal = new AbortController();
|
|
84
|
+
const connection = await source.connect({
|
|
85
|
+
database: resolveRawWaSqliteDatabaseOptions(readonly),
|
|
86
|
+
logLevel: this.options.databaseWorkerLogLevel,
|
|
87
|
+
lockName: await generateTabCloseSignal(closeSignal.signal)
|
|
88
|
+
});
|
|
89
|
+
const clientOptions = {
|
|
90
|
+
connection,
|
|
91
|
+
source,
|
|
92
|
+
// This tab owns the worker, so we're guaranteed to outlive it.
|
|
93
|
+
remoteCanCloseUnexpectedly: false,
|
|
94
|
+
onClose: () => {
|
|
95
|
+
closeSignal.abort();
|
|
96
|
+
workerConnection.close();
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
return new DatabaseClient(clientOptions, {
|
|
100
|
+
...this.options,
|
|
101
|
+
requiresPersistentTriggers
|
|
102
|
+
});
|
|
103
|
+
};
|
|
104
|
+
client = await openDatabaseWorker(false);
|
|
105
|
+
if (vfs == WASQLiteVFS.OPFSWriteAheadVFS) {
|
|
106
|
+
// This VFS supports concurrent reads, so we can open additional workers to host read-only connections for
|
|
107
|
+
// concurrent reads / writes.
|
|
108
|
+
const additionalReadersCount = this.options.additionalReaders ?? 1;
|
|
109
|
+
for (let i = 0; i < additionalReadersCount; i++) {
|
|
110
|
+
const reader = await openDatabaseWorker(true);
|
|
111
|
+
additionalReaders.push(reader);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
// Don't use a web worker. Instead, open the MultiDatabaseServer a worker would use locally.
|
|
117
|
+
const localServer = new MultiDatabaseServer(this.logger);
|
|
118
|
+
requiresPersistentTriggers = true;
|
|
119
|
+
const connection = await localServer.openConnectionLocally(this.logger, resolveRawWaSqliteDatabaseOptions(false));
|
|
120
|
+
client = new DatabaseClient({ connection, source: null, remoteCanCloseUnexpectedly: false }, {
|
|
121
|
+
...this.options,
|
|
122
|
+
requiresPersistentTriggers
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
return {
|
|
126
|
+
writer: client,
|
|
127
|
+
additionalReaders
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
//# 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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"}
|
|
@@ -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,10 +20,6 @@ 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
|
*/
|