@powersync/web 0.0.0-dev-20260414110516 → 0.0.0-dev-20260504100448
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/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 +4289 -4786
- package/dist/index.umd.js.map +1 -1
- package/dist/worker/SharedSyncImplementation.umd.js +37 -798
- package/dist/worker/SharedSyncImplementation.umd.js.map +1 -1
- package/dist/worker/WASQLiteDB.umd.js +99 -737
- package/dist/worker/WASQLiteDB.umd.js.map +1 -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 +31 -0
- 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 +1 -0
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_mc-wa-s-bbf5a9.umd.js +31 -0
- 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 +1 -0
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_wa-sqli-c26e0f.umd.js +31 -0
- package/dist/worker/{node_modules_pnpm_journeyapps_wa-sqlite_1_5_0_node_modules_journeyapps_wa-sqlite_dist_wa-sqli-cc5fcc.umd.js.map → node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_wa-sqli-c26e0f.umd.js.map} +1 -1
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_wa-sqlite_mjs.umd.js +31 -0
- package/dist/worker/{node_modules_pnpm_journeyapps_wa-sqlite_1_5_0_node_modules_journeyapps_wa-sqlite_dist_wa-sqlite_mjs.umd.js.map → node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_dist_wa-sqlite_mjs.umd.js.map} +1 -1
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-2fb422.umd.js +3562 -0
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-2fb422.umd.js.map +1 -0
- package/dist/worker/{node_modules_pnpm_journeyapps_wa-sqlite_1_5_0_node_modules_journeyapps_wa-sqlite_src_examples-0df390.umd.js → node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-96fb23.umd.js} +16 -16
- package/dist/worker/{node_modules_pnpm_journeyapps_wa-sqlite_1_5_0_node_modules_journeyapps_wa-sqlite_src_examples-0df390.umd.js.map → node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-96fb23.umd.js.map} +1 -1
- package/dist/worker/{node_modules_pnpm_journeyapps_wa-sqlite_1_5_0_node_modules_journeyapps_wa-sqlite_src_examples-151024.umd.js → node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-c89911.umd.js} +12 -12
- package/dist/worker/{node_modules_pnpm_journeyapps_wa-sqlite_1_5_0_node_modules_journeyapps_wa-sqlite_src_examples-151024.umd.js.map → node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-c89911.umd.js.map} +1 -1
- package/dist/worker/{node_modules_pnpm_journeyapps_wa-sqlite_1_5_0_node_modules_journeyapps_wa-sqlite_src_examples-c01ef0.umd.js → node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-ec4eb1.umd.js} +14 -14
- package/dist/worker/{node_modules_pnpm_journeyapps_wa-sqlite_1_5_0_node_modules_journeyapps_wa-sqlite_src_examples-c01ef0.umd.js.map → node_modules_pnpm_journeyapps_wa-sqlite_1_7_0_node_modules_journeyapps_wa-sqlite_src_examples-ec4eb1.umd.js.map} +1 -1
- package/lib/package.json +4 -7
- package/lib/src/db/PowerSyncDatabase.d.ts +1 -1
- package/lib/src/db/PowerSyncDatabase.js +0 -8
- package/lib/src/db/adapters/AsyncWebAdapter.d.ts +13 -3
- package/lib/src/db/adapters/AsyncWebAdapter.js +115 -21
- package/lib/src/db/adapters/wa-sqlite/DatabaseServer.js +1 -2
- package/lib/src/db/adapters/wa-sqlite/RawSqliteConnection.js +1 -1
- package/lib/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.d.ts +16 -2
- package/lib/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.js +60 -38
- package/lib/src/db/adapters/wa-sqlite/vfs.d.ts +7 -18
- package/lib/src/db/adapters/wa-sqlite/vfs.js +34 -49
- package/lib/src/db/sync/SSRWebStreamingSyncImplementation.d.ts +4 -0
- package/lib/src/db/sync/SSRWebStreamingSyncImplementation.js +4 -0
- package/lib/src/db/sync/SharedWebStreamingSyncImplementation.d.ts +0 -1
- package/lib/src/db/sync/SharedWebStreamingSyncImplementation.js +0 -3
- package/lib/src/db/sync/WebRemote.d.ts +1 -3
- package/lib/src/db/sync/WebRemote.js +0 -12
- package/lib/src/worker/db/MultiDatabaseServer.js +4 -1
- package/lib/src/worker/db/open-worker-database.js +2 -2
- package/lib/src/worker/sync/SharedSyncImplementation.d.ts +0 -2
- package/lib/src/worker/sync/SharedSyncImplementation.js +4 -16
- package/lib/src/worker/sync/WorkerClient.d.ts +0 -1
- package/lib/src/worker/sync/WorkerClient.js +0 -3
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -8
- package/src/db/PowerSyncDatabase.ts +1 -9
- package/src/db/adapters/AsyncWebAdapter.ts +138 -22
- package/src/db/adapters/wa-sqlite/DatabaseServer.ts +4 -2
- package/src/db/adapters/wa-sqlite/RawSqliteConnection.ts +4 -1
- package/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.ts +89 -44
- package/src/db/adapters/wa-sqlite/vfs.ts +33 -49
- package/src/db/sync/SSRWebStreamingSyncImplementation.ts +5 -0
- package/src/db/sync/SharedWebStreamingSyncImplementation.ts +0 -4
- package/src/db/sync/WebRemote.ts +0 -16
- package/src/worker/db/MultiDatabaseServer.ts +4 -1
- package/src/worker/db/open-worker-database.ts +2 -2
- package/src/worker/sync/SharedSyncImplementation.ts +4 -18
- package/src/worker/sync/WorkerClient.ts +0 -4
- package/dist/26d61ca9f5694d064635.wasm +0 -0
- package/dist/b4c6283dc473b6b3fd24.wasm +0 -0
- package/dist/c78985091a0b22aaef03.wasm +0 -0
- package/dist/ca59e199e1138b553fad.wasm +0 -0
- package/dist/worker/node_modules_pnpm_bson_6_10_4_node_modules_bson_lib_bson_mjs.umd.js +0 -4646
- package/dist/worker/node_modules_pnpm_bson_6_10_4_node_modules_bson_lib_bson_mjs.umd.js.map +0 -1
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_5_0_node_modules_journeyapps_wa-sqlite_dist_mc-wa-s-b9c070.umd.js +0 -31
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_5_0_node_modules_journeyapps_wa-sqlite_dist_mc-wa-s-b9c070.umd.js.map +0 -1
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_5_0_node_modules_journeyapps_wa-sqlite_dist_mc-wa-s-c99c07.umd.js +0 -31
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_5_0_node_modules_journeyapps_wa-sqlite_dist_mc-wa-s-c99c07.umd.js.map +0 -1
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_5_0_node_modules_journeyapps_wa-sqlite_dist_wa-sqli-cc5fcc.umd.js +0 -31
- package/dist/worker/node_modules_pnpm_journeyapps_wa-sqlite_1_5_0_node_modules_journeyapps_wa-sqlite_dist_wa-sqlite_mjs.umd.js +0 -31
package/src/db/sync/WebRemote.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AbstractRemote,
|
|
3
3
|
AbstractRemoteOptions,
|
|
4
|
-
BSONImplementation,
|
|
5
4
|
DEFAULT_REMOTE_LOGGER,
|
|
6
5
|
FetchImplementation,
|
|
7
6
|
FetchImplementationProvider,
|
|
@@ -21,8 +20,6 @@ class WebFetchProvider extends FetchImplementationProvider {
|
|
|
21
20
|
}
|
|
22
21
|
|
|
23
22
|
export class WebRemote extends AbstractRemote {
|
|
24
|
-
private _bson: BSONImplementation | undefined;
|
|
25
|
-
|
|
26
23
|
constructor(
|
|
27
24
|
protected connector: RemoteConnector,
|
|
28
25
|
protected logger: ILogger = DEFAULT_REMOTE_LOGGER,
|
|
@@ -43,17 +40,4 @@ export class WebRemote extends AbstractRemote {
|
|
|
43
40
|
}
|
|
44
41
|
return ua.join(' ');
|
|
45
42
|
}
|
|
46
|
-
|
|
47
|
-
async getBSON(): Promise<BSONImplementation> {
|
|
48
|
-
if (this._bson) {
|
|
49
|
-
return this._bson;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Dynamic import to be used only when needed.
|
|
54
|
-
*/
|
|
55
|
-
const { BSON } = await import('bson');
|
|
56
|
-
this._bson = BSON;
|
|
57
|
-
return this._bson;
|
|
58
|
-
}
|
|
59
43
|
}
|
|
@@ -61,7 +61,10 @@ export class MultiDatabaseServer {
|
|
|
61
61
|
|
|
62
62
|
let server: DatabaseServer | undefined = this.activeDatabases.get(dbFilename);
|
|
63
63
|
if (server == null) {
|
|
64
|
-
|
|
64
|
+
// We don't need navigator locks for shared workers because all queries run in this shared worker exclusively.
|
|
65
|
+
// For read-only connections, we use a VFS that supports concurrent reads (so a single lock on the connection is
|
|
66
|
+
// fine).
|
|
67
|
+
const needsNavigatorLocks = !(isSharedWorker || options.isReadOnly);
|
|
65
68
|
const connection = new RawSqliteConnection(options);
|
|
66
69
|
const withSafeConcurrency = new ConcurrentSqliteConnection(connection, needsNavigatorLocks);
|
|
67
70
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as Comlink from 'comlink';
|
|
2
|
-
import { WASQLiteVFS } from '../../db/adapters/wa-sqlite/vfs.js';
|
|
2
|
+
import { vfsRequiresDedicatedWorkers, WASQLiteVFS } from '../../db/adapters/wa-sqlite/vfs.js';
|
|
3
3
|
import { OpenWorkerConnection } from '../../db/adapters/wa-sqlite/DatabaseClient.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
@@ -11,7 +11,7 @@ export function openWorkerDatabasePort(
|
|
|
11
11
|
worker: string | URL = '',
|
|
12
12
|
vfs?: WASQLiteVFS
|
|
13
13
|
) {
|
|
14
|
-
const needsDedicated = vfs
|
|
14
|
+
const needsDedicated = vfs && vfsRequiresDedicatedWorkers(vfs);
|
|
15
15
|
|
|
16
16
|
if (worker) {
|
|
17
17
|
return !needsDedicated && multipleTabs
|
|
@@ -162,10 +162,6 @@ export class SharedSyncImplementation extends BaseObserver<SharedSyncImplementat
|
|
|
162
162
|
});
|
|
163
163
|
}
|
|
164
164
|
|
|
165
|
-
get lastSyncedAt(): Date | undefined {
|
|
166
|
-
return this.connectionManager.syncStreamImplementation?.lastSyncedAt;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
165
|
get isConnected(): boolean {
|
|
170
166
|
return this.connectionManager.syncStreamImplementation?.isConnected ?? false;
|
|
171
167
|
}
|
|
@@ -362,12 +358,6 @@ export class SharedSyncImplementation extends BaseObserver<SharedSyncImplementat
|
|
|
362
358
|
});
|
|
363
359
|
}
|
|
364
360
|
|
|
365
|
-
async hasCompletedSync(): Promise<boolean> {
|
|
366
|
-
return this.withSyncImplementation(async (sync) => {
|
|
367
|
-
return sync.hasCompletedSync();
|
|
368
|
-
});
|
|
369
|
-
}
|
|
370
|
-
|
|
371
361
|
async getWriteCheckpoint(): Promise<string> {
|
|
372
362
|
return this.withSyncImplementation(async (sync) => {
|
|
373
363
|
return sync.getWriteCheckpoint();
|
|
@@ -618,14 +608,10 @@ export class SharedSyncImplementation extends BaseObserver<SharedSyncImplementat
|
|
|
618
608
|
const impl = sharedSync.connectionManager.syncStreamImplementation! as WebStreamingSyncImplementation;
|
|
619
609
|
impl?.triggerCrudUpload();
|
|
620
610
|
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
* StreamingSyncImplementation to reconnect. It would be nicer if we could trigger
|
|
626
|
-
* this reconnect earlier.
|
|
627
|
-
* This reconnect is not required for IndexedDB.
|
|
628
|
-
*/
|
|
611
|
+
// The Rust client implementation stores sync state on the connection level. Reopening the database causes a
|
|
612
|
+
// disruption of the connection state and forces us to reconnect. We want to do that as soon as possible to
|
|
613
|
+
// minimize downtime.
|
|
614
|
+
impl?.markConnectionMayHaveChanged();
|
|
629
615
|
}
|
|
630
616
|
}
|
|
631
617
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|