@powersync/web 0.0.0-dev-20260504100448 → 0.0.0-dev-20260630144038
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,3 +1,4 @@
|
|
|
1
|
+
import { LogLevels } from '@powersync/common';
|
|
1
2
|
import * as Comlink from 'comlink';
|
|
2
3
|
import { DatabaseServer } from '../../db/adapters/wa-sqlite/DatabaseServer.js';
|
|
3
4
|
import { getNavigatorLocks } from '../../shared/navigator.js';
|
|
@@ -13,9 +14,14 @@ export class MultiDatabaseServer {
|
|
|
13
14
|
constructor(logger) {
|
|
14
15
|
this.logger = logger;
|
|
15
16
|
}
|
|
16
|
-
async handleConnection(
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
async handleConnection({ logLevel, database, lockName }) {
|
|
18
|
+
const logger = {
|
|
19
|
+
log: (record) => {
|
|
20
|
+
if (record.level >= logLevel)
|
|
21
|
+
this.logger.log(record);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
return Comlink.proxy(await this.openConnectionLocally(logger, database, lockName));
|
|
19
25
|
}
|
|
20
26
|
async connectToExisting(name, lockName) {
|
|
21
27
|
return getNavigatorLocks().request(OPEN_DB_LOCK, async () => {
|
|
@@ -26,33 +32,37 @@ export class MultiDatabaseServer {
|
|
|
26
32
|
return Comlink.proxy(await server.connect(lockName));
|
|
27
33
|
});
|
|
28
34
|
}
|
|
29
|
-
async openConnectionLocally(options, lockName) {
|
|
35
|
+
async openConnectionLocally(logger, options, lockName) {
|
|
30
36
|
// Especially on Firefox, we're sometimes seeing "NoModificationAllowedError"s when opening OPFS databases we can
|
|
31
37
|
// work around by retrying.
|
|
32
38
|
const maxAttempts = 3;
|
|
33
39
|
let server;
|
|
34
40
|
for (let count = 0; count < maxAttempts - 1; count++) {
|
|
35
41
|
try {
|
|
36
|
-
server = await this.databaseOpenAttempt(options);
|
|
42
|
+
server = await this.databaseOpenAttempt(logger, options);
|
|
37
43
|
}
|
|
38
|
-
catch (
|
|
39
|
-
this.logger.
|
|
44
|
+
catch (error) {
|
|
45
|
+
this.logger.log({
|
|
46
|
+
level: LogLevels.warn,
|
|
47
|
+
message: `Attempt ${count + 1} of ${maxAttempts} to open database failed, retrying in 1 second...`,
|
|
48
|
+
error
|
|
49
|
+
});
|
|
40
50
|
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
41
51
|
}
|
|
42
52
|
}
|
|
43
53
|
// Final attempt if we haven't been able to open the server - rethrow errors if we still can't open.
|
|
44
|
-
server ??= await this.databaseOpenAttempt(options);
|
|
54
|
+
server ??= await this.databaseOpenAttempt(logger, options);
|
|
45
55
|
return server.connect(lockName);
|
|
46
56
|
}
|
|
47
|
-
async databaseOpenAttempt(options) {
|
|
57
|
+
async databaseOpenAttempt(logger, options) {
|
|
48
58
|
return getNavigatorLocks().request(OPEN_DB_LOCK, async () => {
|
|
49
|
-
const {
|
|
50
|
-
let server = this.activeDatabases.get(
|
|
59
|
+
const { filename } = options;
|
|
60
|
+
let server = this.activeDatabases.get(filename);
|
|
51
61
|
if (server == null) {
|
|
52
62
|
// We don't need navigator locks for shared workers because all queries run in this shared worker exclusively.
|
|
53
63
|
// For read-only connections, we use a VFS that supports concurrent reads (so a single lock on the connection is
|
|
54
64
|
// fine).
|
|
55
|
-
const needsNavigatorLocks = !(isSharedWorker || options.
|
|
65
|
+
const needsNavigatorLocks = !(isSharedWorker || options.readonly);
|
|
56
66
|
const connection = new RawSqliteConnection(options);
|
|
57
67
|
const withSafeConcurrency = new ConcurrentSqliteConnection(connection, needsNavigatorLocks);
|
|
58
68
|
// Initializing the RawSqliteConnection will run some pragmas that might write to the database file, so we want
|
|
@@ -68,13 +78,13 @@ export class MultiDatabaseServer {
|
|
|
68
78
|
throw e;
|
|
69
79
|
}
|
|
70
80
|
returnLease();
|
|
71
|
-
const onClose = () => this.activeDatabases.delete(
|
|
81
|
+
const onClose = () => this.activeDatabases.delete(filename);
|
|
72
82
|
server = new DatabaseServer({
|
|
73
83
|
inner: withSafeConcurrency,
|
|
74
|
-
logger
|
|
84
|
+
logger,
|
|
75
85
|
onClose
|
|
76
86
|
});
|
|
77
|
-
this.activeDatabases.set(
|
|
87
|
+
this.activeDatabases.set(filename, server);
|
|
78
88
|
}
|
|
79
89
|
return server;
|
|
80
90
|
});
|
|
@@ -87,3 +97,4 @@ export class MultiDatabaseServer {
|
|
|
87
97
|
}
|
|
88
98
|
}
|
|
89
99
|
export const isSharedWorker = 'SharedWorkerGlobalScope' in globalThis;
|
|
100
|
+
//# sourceMappingURL=MultiDatabaseServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiDatabaseServer.js","sourceRoot":"","sources":["../../../src/worker/db/MultiDatabaseServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAmB,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,EAAwB,cAAc,EAAE,MAAM,+CAA+C,CAAC;AACrG,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAA8B,MAAM,oDAAoD,CAAC;AACrH,OAAO,EAAE,0BAA0B,EAAE,MAAM,qDAAqD,CAAC;AAEjG,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAQxC;;GAEG;AACH,MAAM,OAAO,mBAAmB;IAGT;IAFb,eAAe,GAAG,IAAI,GAAG,EAA0B,CAAC;IAE5D,YAAqB,MAAuB;QAAvB,WAAM,GAAN,MAAM,CAAiB;IAAG,CAAC;IAEhD,KAAK,CAAC,gBAAgB,CAAC,EACrB,QAAQ,EACR,QAAQ,EACR,QAAQ,EAC4B;QACpC,MAAM,MAAM,GAAoB;YAC9B,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE;gBACd,IAAI,MAAM,CAAC,KAAK,IAAI,QAAQ;oBAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACxD,CAAC;SACF,CAAC;QAEF,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;IACrF,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,IAAY,EAAE,QAAgB;QACpD,OAAO,iBAAiB,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,oEAAoE,CAAC,CAAC;YACjH,CAAC;YAED,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,MAAuB,EAAE,OAAmC,EAAE,QAAiB;QACzG,iHAAiH;QACjH,2BAA2B;QAC3B,MAAM,WAAW,GAAG,CAAC,CAAC;QACtB,IAAI,MAA6B,CAAC;QAElC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YACrD,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC3D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;oBACd,KAAK,EAAE,SAAS,CAAC,IAAI;oBACrB,OAAO,EAAE,WAAW,KAAK,GAAG,CAAC,OAAO,WAAW,mDAAmD;oBAClG,KAAK;iBACN,CAAC,CAAC;gBACH,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,oGAAoG;QACpG,MAAM,KAAK,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3D,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAC/B,MAAuB,EACvB,OAAmC;QAEnC,OAAO,iBAAiB,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;YAE7B,IAAI,MAAM,GAA+B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC5E,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,8GAA8G;gBAC9G,gHAAgH;gBAChH,SAAS;gBACT,MAAM,mBAAmB,GAAG,CAAC,CAAC,cAAc,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAClE,MAAM,UAAU,GAAG,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC;gBACpD,MAAM,mBAAmB,GAAG,IAAI,0BAA0B,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;gBAE5F,+GAA+G;gBAC/G,4GAA4G;gBAC5G,oGAAoG;gBACpG,MAAM,WAAW,GAAG,MAAM,mBAAmB,CAAC,YAAY,EAAE,CAAC;gBAC7D,IAAI,CAAC;oBACH,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;gBAC1B,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,WAAW,EAAE,CAAC;oBACd,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;oBACzB,MAAM,CAAC,CAAC;gBACV,CAAC;gBACD,WAAW,EAAE,CAAC;gBAEd,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC5D,MAAM,GAAG,IAAI,cAAc,CAAC;oBAC1B,KAAK,EAAE,mBAAmB;oBAC1B,MAAM;oBACN,OAAO;iBACR,CAAC,CAAC;gBACH,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC7C,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;QACN,MAAM,iBAAiB,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7D,OAAO,OAAO,CAAC,GAAG,CAChB,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YAC3B,EAAE,CAAC,UAAU,EAAE,CAAC;QAClB,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;CACF;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,yBAAyB,IAAI,UAAU,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { LogRecord, PowerSyncCredentials } from '@powersync/common';
|
|
2
|
+
import { SyncStatusJson } from '@powersync/shared-internals';
|
|
3
|
+
/**
|
|
4
|
+
* The client side port should provide these methods.
|
|
5
|
+
*/
|
|
6
|
+
export declare abstract class AbstractSharedSyncClientProvider {
|
|
7
|
+
abstract fetchCredentials(): Promise<PowerSyncCredentials | null>;
|
|
8
|
+
abstract invalidateCredentials(): void;
|
|
9
|
+
abstract uploadCrud(): Promise<void>;
|
|
10
|
+
abstract statusChanged(status: SyncStatusJson): void;
|
|
11
|
+
abstract getDBWorkerPort(): Promise<MessagePort>;
|
|
12
|
+
abstract log(record: LogRecord): void;
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AbstractSharedSyncClientProvider.js","sourceRoot":"","sources":["../../../src/worker/sync/AbstractSharedSyncClientProvider.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,OAAgB,gCAAgC;CAQrD"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { PowerSyncLogger, LogRecord } from '@powersync/common';
|
|
2
|
+
import { type WrappedSyncPort } from './SharedSyncImplementation.js';
|
|
3
|
+
/**
|
|
4
|
+
* Broadcasts logs to all clients
|
|
5
|
+
*/
|
|
6
|
+
export declare class BroadcastLogger implements PowerSyncLogger {
|
|
7
|
+
private clients;
|
|
8
|
+
private readonly inner;
|
|
9
|
+
private currentLevel;
|
|
10
|
+
sendBroadcasts: boolean;
|
|
11
|
+
constructor(prefix: string, clients: WrappedSyncPort[]);
|
|
12
|
+
log(record: LogRecord): void;
|
|
13
|
+
/**
|
|
14
|
+
* Set the global log level.
|
|
15
|
+
*/
|
|
16
|
+
setLevel(level: number): void;
|
|
17
|
+
/**
|
|
18
|
+
* Iterates all clients, catches individual client exceptions
|
|
19
|
+
* and proceeds to execute for all clients.
|
|
20
|
+
*/
|
|
21
|
+
protected iterateClients(callback: (client: WrappedSyncPort) => Promise<void>): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Guards against any logging errors.
|
|
24
|
+
* We don't want a logging exception to cause further issues upstream
|
|
25
|
+
*/
|
|
26
|
+
protected sanitizeRecord(record: LogRecord): LogRecord;
|
|
27
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { LogLevels, createConsoleLogger } from '@powersync/common';
|
|
2
|
+
/**
|
|
3
|
+
* Broadcasts logs to all clients
|
|
4
|
+
*/
|
|
5
|
+
export class BroadcastLogger {
|
|
6
|
+
clients;
|
|
7
|
+
inner;
|
|
8
|
+
currentLevel = LogLevels.info;
|
|
9
|
+
sendBroadcasts = true;
|
|
10
|
+
constructor(prefix, clients) {
|
|
11
|
+
this.clients = clients;
|
|
12
|
+
this.inner = createConsoleLogger({ prefix: prefix });
|
|
13
|
+
}
|
|
14
|
+
log(record) {
|
|
15
|
+
this.inner.log(record);
|
|
16
|
+
if (this.sendBroadcasts && record.level >= this.currentLevel) {
|
|
17
|
+
const sanitized = this.sanitizeRecord(record);
|
|
18
|
+
this.iterateClients((client) => client.clientProvider.log(sanitized));
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Set the global log level.
|
|
23
|
+
*/
|
|
24
|
+
setLevel(level) {
|
|
25
|
+
this.inner.minLevel = level;
|
|
26
|
+
this.currentLevel = level;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Iterates all clients, catches individual client exceptions
|
|
30
|
+
* and proceeds to execute for all clients.
|
|
31
|
+
*/
|
|
32
|
+
async iterateClients(callback) {
|
|
33
|
+
for (const client of this.clients) {
|
|
34
|
+
try {
|
|
35
|
+
await callback(client);
|
|
36
|
+
}
|
|
37
|
+
catch (ex) {
|
|
38
|
+
console.error('Caught exception when iterating client', ex);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Guards against any logging errors.
|
|
44
|
+
* We don't want a logging exception to cause further issues upstream
|
|
45
|
+
*/
|
|
46
|
+
sanitizeRecord(record) {
|
|
47
|
+
if (!record.error) {
|
|
48
|
+
return record;
|
|
49
|
+
}
|
|
50
|
+
let error;
|
|
51
|
+
try {
|
|
52
|
+
// Try and clone here first. If it fails it won't be passable over a MessagePort
|
|
53
|
+
error = structuredClone(record.error);
|
|
54
|
+
}
|
|
55
|
+
catch (ex) {
|
|
56
|
+
console.error(ex);
|
|
57
|
+
error = 'Could not serialize log params. Check shared worker logs for more details.';
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
...record,
|
|
61
|
+
error
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=BroadcastLogger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BroadcastLogger.js","sourceRoot":"","sources":["../../../src/worker/sync/BroadcastLogger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,SAAS,EAAuB,mBAAmB,EAAa,MAAM,mBAAmB,CAAC;AAGpH;;GAEG;AACH,MAAM,OAAO,eAAe;IAQhB;IAPO,KAAK,CAAwC;IACtD,YAAY,GAAW,SAAS,CAAC,IAAI,CAAC;IAE9C,cAAc,GAAG,IAAI,CAAC;IAEtB,YACE,MAAc,EACN,OAA0B;QAA1B,YAAO,GAAP,OAAO,CAAmB;QAElC,IAAI,CAAC,KAAK,GAAG,mBAAmB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,GAAG,CAAC,MAAiB;QACnB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEvB,IAAI,IAAI,CAAC,cAAc,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC9C,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,KAAa;QACpB,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,cAAc,CAAC,QAAoD;QACjF,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC;YAAC,OAAO,EAAE,EAAE,CAAC;gBACZ,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,EAAE,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACO,cAAc,CAAC,MAAiB;QACxC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,KAAK,CAAC;QACV,IAAI,CAAC;YACH,gFAAgF;YAChF,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClB,KAAK,GAAG,4EAA4E,CAAC;QACvF,CAAC;QAED,OAAO;YACL,GAAG,MAAM;YACT,KAAK;SACN,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { BaseObserver,
|
|
1
|
+
import { BaseObserver, DBAdapter, SyncStatus } from '@powersync/common';
|
|
2
|
+
import { ConnectionManager, SubscribedStream, type StreamingSyncImplementation, type StreamingSyncImplementationListener, Mutex, ResolvedSyncOptions } from '@powersync/shared-internals';
|
|
2
3
|
import * as Comlink from 'comlink';
|
|
3
4
|
import { WebStreamingSyncImplementation, WebStreamingSyncImplementationOptions } from '../../db/sync/WebStreamingSyncImplementation.js';
|
|
4
|
-
import { ResolvedWebSQLOpenOptions } from '../../db/adapters/web-sql-flags.js';
|
|
5
5
|
import { AbstractSharedSyncClientProvider } from './AbstractSharedSyncClientProvider.js';
|
|
6
|
+
import { BroadcastLogger } from './BroadcastLogger.js';
|
|
7
|
+
import { ResolvedWebSQLOpenOptions } from '../../db/adapters/options.js';
|
|
6
8
|
/**
|
|
7
9
|
* @internal
|
|
8
10
|
* Manual message events for shared sync clients
|
|
@@ -26,8 +28,9 @@ export type ManualSharedSyncPayload = {
|
|
|
26
28
|
* @internal
|
|
27
29
|
*/
|
|
28
30
|
export type SharedSyncInitOptions = {
|
|
29
|
-
streamOptions: Omit<WebStreamingSyncImplementationOptions, 'adapter' | 'uploadCrud' | 'remote' | 'subscriptions'>;
|
|
31
|
+
streamOptions: Omit<WebStreamingSyncImplementationOptions, 'adapter' | 'uploadCrud' | 'remote' | 'subscriptions' | 'logger'>;
|
|
30
32
|
dbParams: ResolvedWebSQLOpenOptions;
|
|
33
|
+
enableBroadcastLogs: boolean;
|
|
31
34
|
};
|
|
32
35
|
/**
|
|
33
36
|
* @internal
|
|
@@ -64,13 +67,12 @@ export declare class SharedSyncImplementation extends BaseObserver<SharedSyncImp
|
|
|
64
67
|
protected fetchCredentialsController?: RemoteOperationAbortController;
|
|
65
68
|
protected uploadDataController?: RemoteOperationAbortController;
|
|
66
69
|
protected syncParams: SharedSyncInitOptions | null;
|
|
67
|
-
protected
|
|
68
|
-
protected lastConnectOptions: PowerSyncConnectionOptions | undefined;
|
|
70
|
+
protected lastConnectOptions: ResolvedSyncOptions | undefined;
|
|
69
71
|
protected portMutex: Mutex;
|
|
70
72
|
private subscriptions;
|
|
71
73
|
protected connectionManager: ConnectionManager;
|
|
72
|
-
syncStatus
|
|
73
|
-
|
|
74
|
+
private syncStatus?;
|
|
75
|
+
logger: BroadcastLogger;
|
|
74
76
|
protected readonly database: DBAdapter;
|
|
75
77
|
constructor();
|
|
76
78
|
get isConnected(): boolean;
|
|
@@ -83,12 +85,11 @@ export declare class SharedSyncImplementation extends BaseObserver<SharedSyncImp
|
|
|
83
85
|
* This returns a random port which is not closing.
|
|
84
86
|
*/
|
|
85
87
|
protected getRandomWrappedPort(): Promise<WrappedSyncPort | undefined>;
|
|
86
|
-
waitForStatus(status: SyncStatusOptions): Promise<void>;
|
|
87
88
|
waitUntilStatusMatches(predicate: (status: SyncStatus) => boolean): Promise<void>;
|
|
88
89
|
waitForReady(): Promise<void>;
|
|
89
90
|
private collectActiveSubscriptions;
|
|
90
91
|
updateSubscriptions(port: WrappedSyncPort, subscriptions: SubscribedStream[]): void;
|
|
91
|
-
setLogLevel(level:
|
|
92
|
+
setLogLevel(level: number): void;
|
|
92
93
|
/**
|
|
93
94
|
* Configures the DBAdapter connection and a streaming sync client.
|
|
94
95
|
*/
|
|
@@ -100,7 +101,7 @@ export declare class SharedSyncImplementation extends BaseObserver<SharedSyncImp
|
|
|
100
101
|
* The connection will simply be reconnected whenever a new tab
|
|
101
102
|
* connects.
|
|
102
103
|
*/
|
|
103
|
-
connect(options
|
|
104
|
+
connect(options: ResolvedSyncOptions, serializedSchema: any): Promise<void>;
|
|
104
105
|
disconnect(): Promise<void>;
|
|
105
106
|
/**
|
|
106
107
|
* Adds a new client tab's message port to the list of connected ports
|
|
@@ -126,9 +127,4 @@ export declare class SharedSyncImplementation extends BaseObserver<SharedSyncImp
|
|
|
126
127
|
*/
|
|
127
128
|
private openInternalDB;
|
|
128
129
|
private generateReconnectableDatabase;
|
|
129
|
-
/**
|
|
130
|
-
* A method to update the all shared statuses for each
|
|
131
|
-
* client.
|
|
132
|
-
*/
|
|
133
|
-
private updateAllStatuses;
|
|
134
130
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { BaseObserver, DBAdapter, LogLevels, SyncStreamConnectionMethod } from '@powersync/common';
|
|
2
|
+
import { AbortOperation, ConnectionManager, SqliteBucketStorage, Mutex } from '@powersync/shared-internals';
|
|
2
3
|
import * as Comlink from 'comlink';
|
|
3
4
|
import { WebRemote } from '../../db/sync/WebRemote.js';
|
|
4
5
|
import { WebStreamingSyncImplementation } from '../../db/sync/WebStreamingSyncImplementation.js';
|
|
@@ -35,19 +36,17 @@ export class SharedSyncImplementation extends BaseObserver {
|
|
|
35
36
|
fetchCredentialsController;
|
|
36
37
|
uploadDataController;
|
|
37
38
|
syncParams;
|
|
38
|
-
logger;
|
|
39
39
|
lastConnectOptions;
|
|
40
40
|
portMutex;
|
|
41
41
|
subscriptions = [];
|
|
42
42
|
connectionManager;
|
|
43
43
|
syncStatus;
|
|
44
|
-
|
|
44
|
+
logger;
|
|
45
45
|
database = this.generateReconnectableDatabase();
|
|
46
46
|
constructor() {
|
|
47
47
|
super();
|
|
48
48
|
this.ports = [];
|
|
49
49
|
this.syncParams = null;
|
|
50
|
-
this.logger = createLogger('shared-sync');
|
|
51
50
|
this.lastConnectOptions = undefined;
|
|
52
51
|
this.portMutex = new Mutex();
|
|
53
52
|
this.isInitialized = new Promise((resolve) => {
|
|
@@ -58,15 +57,16 @@ export class SharedSyncImplementation extends BaseObserver {
|
|
|
58
57
|
}
|
|
59
58
|
});
|
|
60
59
|
});
|
|
61
|
-
this.
|
|
62
|
-
this.broadCastLogger = new BroadcastLogger(this.ports);
|
|
60
|
+
this.logger = new BroadcastLogger('shared-sync', this.ports);
|
|
63
61
|
this.connectionManager = new ConnectionManager({
|
|
64
62
|
createSyncImplementation: async () => {
|
|
65
63
|
await this.waitForReady();
|
|
66
64
|
const sync = this.generateStreamingImplementation();
|
|
67
65
|
const onDispose = sync.registerListener({
|
|
68
|
-
statusChanged: (
|
|
69
|
-
this.
|
|
66
|
+
statusChanged: (snapshot) => {
|
|
67
|
+
this.syncStatus = snapshot;
|
|
68
|
+
const json = snapshot.toJSON();
|
|
69
|
+
this.ports.forEach((p) => p.clientProvider.statusChanged(json));
|
|
70
70
|
}
|
|
71
71
|
});
|
|
72
72
|
return {
|
|
@@ -74,7 +74,8 @@ export class SharedSyncImplementation extends BaseObserver {
|
|
|
74
74
|
onDispose
|
|
75
75
|
};
|
|
76
76
|
},
|
|
77
|
-
logger: this.logger
|
|
77
|
+
logger: this.logger,
|
|
78
|
+
defaultConnectionMethod: SyncStreamConnectionMethod.HTTP
|
|
78
79
|
});
|
|
79
80
|
}
|
|
80
81
|
get isConnected() {
|
|
@@ -104,11 +105,6 @@ export class SharedSyncImplementation extends BaseObserver {
|
|
|
104
105
|
return nonClosingPorts[Math.floor(Math.random() * nonClosingPorts.length)];
|
|
105
106
|
});
|
|
106
107
|
}
|
|
107
|
-
async waitForStatus(status) {
|
|
108
|
-
return this.withSyncImplementation(async (sync) => {
|
|
109
|
-
return sync.waitForStatus(status);
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
108
|
async waitUntilStatusMatches(predicate) {
|
|
113
109
|
return this.withSyncImplementation(async (sync) => {
|
|
114
110
|
return sync.waitUntilStatusMatches(predicate);
|
|
@@ -118,7 +114,7 @@ export class SharedSyncImplementation extends BaseObserver {
|
|
|
118
114
|
return this.isInitialized;
|
|
119
115
|
}
|
|
120
116
|
collectActiveSubscriptions() {
|
|
121
|
-
this.logger.debug
|
|
117
|
+
this.logger.log({ level: LogLevels.debug, message: 'Collecting active stream subscriptions across tabs' });
|
|
122
118
|
const active = new Map();
|
|
123
119
|
for (const port of this.ports) {
|
|
124
120
|
for (const stream of port.currentSubscriptions) {
|
|
@@ -127,7 +123,10 @@ export class SharedSyncImplementation extends BaseObserver {
|
|
|
127
123
|
}
|
|
128
124
|
}
|
|
129
125
|
this.subscriptions = [...active.values()];
|
|
130
|
-
this.logger.
|
|
126
|
+
this.logger.log({
|
|
127
|
+
level: LogLevels.debug,
|
|
128
|
+
message: `Collected stream subscriptions, ${JSON.stringify(this.subscriptions)}`
|
|
129
|
+
});
|
|
131
130
|
this.connectionManager.syncStreamImplementation?.updateSubscriptions(this.subscriptions);
|
|
132
131
|
}
|
|
133
132
|
updateSubscriptions(port, subscriptions) {
|
|
@@ -136,7 +135,6 @@ export class SharedSyncImplementation extends BaseObserver {
|
|
|
136
135
|
}
|
|
137
136
|
setLogLevel(level) {
|
|
138
137
|
this.logger.setLevel(level);
|
|
139
|
-
this.broadCastLogger.setLevel(level);
|
|
140
138
|
}
|
|
141
139
|
/**
|
|
142
140
|
* Configures the DBAdapter connection and a streaming sync client.
|
|
@@ -151,14 +149,16 @@ export class SharedSyncImplementation extends BaseObserver {
|
|
|
151
149
|
}
|
|
152
150
|
// First time setting params
|
|
153
151
|
this.syncParams = params;
|
|
154
|
-
|
|
155
|
-
this.logger = this.broadCastLogger;
|
|
156
|
-
}
|
|
152
|
+
this.logger.sendBroadcasts = params.enableBroadcastLogs;
|
|
157
153
|
// Ensure we have a usable database connection, the reconnectable database will connect lazily on first use.
|
|
158
154
|
await this.database.readLock(async () => { });
|
|
159
155
|
self.onerror = (event) => {
|
|
160
156
|
// Share any uncaught events on the broadcast logger
|
|
161
|
-
this.logger.
|
|
157
|
+
this.logger.log({
|
|
158
|
+
level: LogLevels.error,
|
|
159
|
+
message: 'Uncaught exception in PowerSync shared sync worker',
|
|
160
|
+
error: event
|
|
161
|
+
});
|
|
162
162
|
};
|
|
163
163
|
this.iterateListeners((l) => l.initialized?.());
|
|
164
164
|
}
|
|
@@ -173,9 +173,9 @@ export class SharedSyncImplementation extends BaseObserver {
|
|
|
173
173
|
* The connection will simply be reconnected whenever a new tab
|
|
174
174
|
* connects.
|
|
175
175
|
*/
|
|
176
|
-
async connect(options) {
|
|
176
|
+
async connect(options, serializedSchema) {
|
|
177
177
|
this.lastConnectOptions = options;
|
|
178
|
-
return this.connectionManager.connect(CONNECTOR_PLACEHOLDER, options ?? {});
|
|
178
|
+
return this.connectionManager.connect(CONNECTOR_PLACEHOLDER, options ?? {}, serializedSchema);
|
|
179
179
|
}
|
|
180
180
|
async disconnect() {
|
|
181
181
|
return this.connectionManager.disconnect();
|
|
@@ -194,7 +194,7 @@ export class SharedSyncImplementation extends BaseObserver {
|
|
|
194
194
|
};
|
|
195
195
|
this.ports.push(portProvider);
|
|
196
196
|
// Give the newly connected client the latest status
|
|
197
|
-
const status = this.
|
|
197
|
+
const status = this.syncStatus;
|
|
198
198
|
if (status) {
|
|
199
199
|
portProvider.clientProvider.statusChanged(status.toJSON());
|
|
200
200
|
}
|
|
@@ -214,7 +214,10 @@ export class SharedSyncImplementation extends BaseObserver {
|
|
|
214
214
|
return await this.portMutex.runExclusive(async () => {
|
|
215
215
|
const index = this.ports.findIndex((p) => p == port);
|
|
216
216
|
if (index < 0) {
|
|
217
|
-
this.logger.
|
|
217
|
+
this.logger.log({
|
|
218
|
+
level: LogLevels.warn,
|
|
219
|
+
message: `Could not remove port ${port} since it is not present in active ports.`
|
|
220
|
+
});
|
|
218
221
|
return () => { };
|
|
219
222
|
}
|
|
220
223
|
const trackedPort = this.ports[index];
|
|
@@ -275,11 +278,14 @@ export class SharedSyncImplementation extends BaseObserver {
|
|
|
275
278
|
throw new Error('No client port found to invalidate credentials');
|
|
276
279
|
}
|
|
277
280
|
try {
|
|
278
|
-
this.logger.log(
|
|
281
|
+
this.logger.log({
|
|
282
|
+
level: LogLevels.info,
|
|
283
|
+
message: 'calling the last port client provider to invalidate credentials'
|
|
284
|
+
});
|
|
279
285
|
lastPort.clientProvider.invalidateCredentials();
|
|
280
286
|
}
|
|
281
|
-
catch (
|
|
282
|
-
this.logger.error
|
|
287
|
+
catch (error) {
|
|
288
|
+
this.logger.log({ level: LogLevels.error, message: 'error invalidating credentials', error });
|
|
283
289
|
}
|
|
284
290
|
},
|
|
285
291
|
fetchCredentials: async () => {
|
|
@@ -295,7 +301,10 @@ export class SharedSyncImplementation extends BaseObserver {
|
|
|
295
301
|
};
|
|
296
302
|
abortController.signal.onabort = reject;
|
|
297
303
|
try {
|
|
298
|
-
this.logger.log(
|
|
304
|
+
this.logger.log({
|
|
305
|
+
level: LogLevels.info,
|
|
306
|
+
message: 'calling the last port client provider for credentials'
|
|
307
|
+
});
|
|
299
308
|
resolve(await lastPort.clientProvider.fetchCredentials());
|
|
300
309
|
}
|
|
301
310
|
catch (ex) {
|
|
@@ -404,7 +413,7 @@ export class SharedSyncImplementation extends BaseObserver {
|
|
|
404
413
|
});
|
|
405
414
|
clearTimeout(timeout);
|
|
406
415
|
client.closeListeners.push(async () => {
|
|
407
|
-
this.logger.info
|
|
416
|
+
this.logger.log({ level: LogLevels.info, message: 'Aborting open connection because associated tab closed.' });
|
|
408
417
|
handleClosed(db);
|
|
409
418
|
/**
|
|
410
419
|
* Don't await this close operation. It might never resolve if the tab is closed.
|
|
@@ -412,14 +421,14 @@ export class SharedSyncImplementation extends BaseObserver {
|
|
|
412
421
|
* We then call close. The close operation is configured to fire-and-forget, the main promise will reject immediately.
|
|
413
422
|
*/
|
|
414
423
|
db.markRemoteClosed();
|
|
415
|
-
db.close().catch((
|
|
424
|
+
db.close().catch((error) => this.logger.log({ level: LogLevels.warn, message: 'error closing database connection', error }));
|
|
416
425
|
});
|
|
417
426
|
return db;
|
|
418
427
|
}
|
|
419
428
|
generateReconnectableDatabase() {
|
|
420
429
|
const syncParams = this.syncParams;
|
|
421
430
|
const sharedSync = this;
|
|
422
|
-
class
|
|
431
|
+
return new (class extends DBAdapter {
|
|
423
432
|
connectionState = null;
|
|
424
433
|
get name() {
|
|
425
434
|
return syncParams?.dbParams.dbFilename;
|
|
@@ -476,17 +485,7 @@ export class SharedSyncImplementation extends BaseObserver {
|
|
|
476
485
|
async refreshSchema() {
|
|
477
486
|
// Not used by sync client.
|
|
478
487
|
}
|
|
479
|
-
}
|
|
480
|
-
const Adapter = DBAdapterDefaultMixin(ReconnectPool);
|
|
481
|
-
return new Adapter();
|
|
482
|
-
}
|
|
483
|
-
/**
|
|
484
|
-
* A method to update the all shared statuses for each
|
|
485
|
-
* client.
|
|
486
|
-
*/
|
|
487
|
-
updateAllStatuses(status) {
|
|
488
|
-
this.syncStatus = new SyncStatus(status);
|
|
489
|
-
this.ports.forEach((p) => p.clientProvider.statusChanged(status));
|
|
488
|
+
})();
|
|
490
489
|
}
|
|
491
490
|
}
|
|
492
491
|
/**
|
|
@@ -519,3 +518,4 @@ function withAbort(options) {
|
|
|
519
518
|
.catch((e) => completePromise(() => reject(e)));
|
|
520
519
|
});
|
|
521
520
|
}
|
|
521
|
+
//# sourceMappingURL=SharedSyncImplementation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SharedSyncImplementation.js","sourceRoot":"","sources":["../../../src/worker/sync/SharedSyncImplementation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ILogLevel, PowerSyncConnectionOptions, SubscribedStream } from '@powersync/common';
|
|
2
1
|
import { SharedSyncImplementation, SharedSyncInitOptions, WrappedSyncPort } from './SharedSyncImplementation.js';
|
|
2
|
+
import { SubscribedStream, ResolvedSyncOptions } from '@powersync/shared-internals';
|
|
3
3
|
/**
|
|
4
4
|
* A client to the shared sync worker.
|
|
5
5
|
*
|
|
@@ -20,11 +20,11 @@ export declare class WorkerClient {
|
|
|
20
20
|
* it can consider the connection to be closed.
|
|
21
21
|
*/
|
|
22
22
|
addLockBasedCloseSignal(name: string): Promise<void>;
|
|
23
|
-
setLogLevel(level:
|
|
23
|
+
setLogLevel(level: number): void;
|
|
24
24
|
triggerCrudUpload(): void;
|
|
25
25
|
setParams(params: SharedSyncInitOptions, subscriptions: SubscribedStream[]): Promise<void>;
|
|
26
26
|
getWriteCheckpoint(): Promise<string>;
|
|
27
|
-
connect(options
|
|
27
|
+
connect(options: ResolvedSyncOptions, schema: any): Promise<void>;
|
|
28
28
|
updateSubscriptions(subscriptions: SubscribedStream[]): void;
|
|
29
29
|
disconnect(): Promise<void>;
|
|
30
30
|
}
|
|
@@ -67,8 +67,8 @@ export class WorkerClient {
|
|
|
67
67
|
getWriteCheckpoint() {
|
|
68
68
|
return this.sync.getWriteCheckpoint();
|
|
69
69
|
}
|
|
70
|
-
connect(options) {
|
|
71
|
-
return this.sync.connect(options);
|
|
70
|
+
connect(options, schema) {
|
|
71
|
+
return this.sync.connect(options, schema);
|
|
72
72
|
}
|
|
73
73
|
updateSubscriptions(subscriptions) {
|
|
74
74
|
if (this.resolvedPort) {
|
|
@@ -79,3 +79,4 @@ export class WorkerClient {
|
|
|
79
79
|
return this.sync.disconnect();
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
|
+
//# sourceMappingURL=WorkerClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkerClient.js","sourceRoot":"","sources":["../../../src/worker/sync/WorkerClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as Comlink from 'comlink';
|
|
2
|
+
import { createConsoleLogger, LogLevels } from '@powersync/common';
|
|
3
|
+
import { isSharedWorker, MultiDatabaseServer } from './db/MultiDatabaseServer.js';
|
|
4
|
+
import { SharedSyncImplementation } from './sync/SharedSyncImplementation.js';
|
|
5
|
+
import { WorkerClient } from './sync/WorkerClient.js';
|
|
6
|
+
const server = new MultiDatabaseServer(createConsoleLogger({ prefix: 'db-worker', minLevel: LogLevels.trace }));
|
|
7
|
+
const exposedDatabaseFunctions = {
|
|
8
|
+
connect: (config) => server.handleConnection(config),
|
|
9
|
+
connectToExisting: ({ identifier, lockName }) => server.connectToExisting(identifier, lockName)
|
|
10
|
+
};
|
|
11
|
+
if (isSharedWorker) {
|
|
12
|
+
const sharedSyncImplementation = new SharedSyncImplementation();
|
|
13
|
+
// A shared worker can either be an IndexedDB-VFS database server or a shared sync coordinator.
|
|
14
|
+
// To be able to know what service a client is connecting to, we let clients send an inner MessagePort through the
|
|
15
|
+
// top-level port along with a tag describing what they need.
|
|
16
|
+
const _self = self;
|
|
17
|
+
_self.onconnect = (outerEvent) => {
|
|
18
|
+
const port = outerEvent.ports[0];
|
|
19
|
+
port.onmessage = (event) => {
|
|
20
|
+
const { service, port } = event.data;
|
|
21
|
+
if (service === 'database') {
|
|
22
|
+
Comlink.expose(exposedDatabaseFunctions, port);
|
|
23
|
+
}
|
|
24
|
+
else if (service === 'sync') {
|
|
25
|
+
new WorkerClient(sharedSyncImplementation, port);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
// Dedicated workers are only used for databases, so we don't need an intermediate layer.
|
|
32
|
+
Comlink.expose(exposedDatabaseFunctions);
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/worker/worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAEnC,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClF,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAG9E,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAEhH,MAAM,wBAAwB,GAAyB;IACrD,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC;IACpD,iBAAiB,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC;CAChG,CAAC;AAEF,IAAI,cAAc,EAAE,CAAC;IACnB,MAAM,wBAAwB,GAAG,IAAI,wBAAwB,EAAE,CAAC;IAEhE,+FAA+F;IAC/F,kHAAkH;IAClH,6DAA6D;IAC7D,MAAM,KAAK,GAAG,IAA0C,CAAC;IACzD,KAAK,CAAC,SAAS,GAAG,CAAC,UAAwB,EAAE,EAAE;QAC7C,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,CAAC,KAAkD,EAAE,EAAE;YACtE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;YACrC,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;gBAC3B,OAAO,CAAC,MAAM,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;YACjD,CAAC;iBAAM,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;gBAC9B,IAAI,YAAY,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;YACnD,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;KAAM,CAAC;IACN,yFAAyF;IACzF,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAC3C,CAAC"}
|