@powersync/web 2.5.0 → 2.6.0
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/index.react_native_web.js +80 -21
- package/dist/index.react_native_web.js.map +1 -1
- package/dist/worker/AccessHandlePoolVFS-Do8lc5Ck.js +2 -0
- package/dist/worker/AccessHandlePoolVFS-Do8lc5Ck.js.map +1 -0
- package/dist/worker/FacadeVFS-d1ZDvud7.js.map +1 -1
- package/dist/worker/IDBBatchAtomicVFS-CDb4d4wN.js +2 -0
- package/dist/worker/IDBBatchAtomicVFS-CDb4d4wN.js.map +1 -0
- package/dist/worker/MemoryVFS-DVJL5F8j.js.map +1 -1
- package/dist/worker/OPFSCoopSyncVFS-CDNBPKfy.js +2 -0
- package/dist/worker/OPFSCoopSyncVFS-CDNBPKfy.js.map +1 -0
- package/dist/worker/OPFSWriteAheadVFS-V9yBrLWl.js +2 -0
- package/dist/worker/OPFSWriteAheadVFS-V9yBrLWl.js.map +1 -0
- package/dist/worker/assets/mc-wa-sqlite-Cq3AePIW.wasm +0 -0
- package/dist/worker/assets/{mc-wa-sqlite-async-DdlQmAUV.wasm → mc-wa-sqlite-async-aRcIGeKj.wasm} +0 -0
- package/dist/worker/assets/wa-sqlite-CePoIZt_.wasm +0 -0
- package/dist/worker/assets/wa-sqlite-async-B3FiUnt1.wasm +0 -0
- package/dist/worker/{mc-wa-sqlite-PubB6u8c.js → mc-wa-sqlite-DRR2R_uj.js} +2 -2
- package/dist/worker/mc-wa-sqlite-DRR2R_uj.js.map +1 -0
- package/dist/worker/{mc-wa-sqlite-async-DJG_ANKO.js → mc-wa-sqlite-async-C40l6kIz.js} +2 -2
- package/dist/worker/mc-wa-sqlite-async-C40l6kIz.js.map +1 -0
- package/dist/worker/{wa-sqlite-D1_4mGs8.js → wa-sqlite-_a9CU4MM.js} +2 -2
- package/dist/worker/wa-sqlite-_a9CU4MM.js.map +1 -0
- package/dist/worker/wa-sqlite-async-Da0d0GJg.js +2 -0
- package/dist/worker/wa-sqlite-async-Da0d0GJg.js.map +1 -0
- package/dist/worker/{websockets-Q8W_lerF.js → websockets-Dx9ExO-W.js} +2 -2
- package/dist/worker/{websockets-Q8W_lerF.js.map → websockets-Dx9ExO-W.js.map} +1 -1
- package/dist/worker/worker.js +1 -1
- package/dist/worker/worker.js.map +1 -1
- package/lib/db/PowerSyncDatabase.d.ts +4 -3
- package/lib/db/PowerSyncDatabase.js +3 -0
- package/lib/db/PowerSyncDatabase.js.map +1 -1
- package/lib/db/adapters/options.d.ts +30 -0
- package/lib/db/adapters/options.js.map +1 -1
- package/lib/db/adapters/resolveAndValidateOptions.js +6 -1
- package/lib/db/adapters/resolveAndValidateOptions.js.map +1 -1
- package/lib/db/adapters/wa-sqlite/RawSqliteConnection.d.ts +5 -0
- package/lib/db/adapters/wa-sqlite/RawSqliteConnection.js +7 -2
- package/lib/db/adapters/wa-sqlite/RawSqliteConnection.js.map +1 -1
- package/lib/db/adapters/wa-sqlite/WASQLiteOpenFactory.js +4 -2
- package/lib/db/adapters/wa-sqlite/WASQLiteOpenFactory.js.map +1 -1
- package/lib/db/adapters/wa-sqlite/vfs.d.ts +24 -1
- package/lib/db/adapters/wa-sqlite/vfs.js +33 -4
- package/lib/db/adapters/wa-sqlite/vfs.js.map +1 -1
- package/lib/db/sync/SharedWebStreamingSyncImplementation.d.ts +1 -0
- package/lib/db/sync/SharedWebStreamingSyncImplementation.js +28 -11
- package/lib/db/sync/SharedWebStreamingSyncImplementation.js.map +1 -1
- package/lib/db/sync/WebRemote.d.ts +2 -3
- package/lib/db/sync/WebRemote.js +0 -2
- package/lib/db/sync/WebRemote.js.map +1 -1
- package/lib/worker/sync/SharedSyncImplementation.d.ts +9 -2
- package/lib/worker/sync/SharedSyncImplementation.js +66 -37
- package/lib/worker/sync/SharedSyncImplementation.js.map +1 -1
- package/lib/worker/sync/WorkerClient.d.ts +3 -3
- package/lib/worker/sync/WorkerClient.js +3 -3
- package/lib/worker/sync/WorkerClient.js.map +1 -1
- package/package.json +6 -6
- package/src/db/PowerSyncDatabase.ts +6 -3
- package/src/db/adapters/options.ts +32 -0
- package/src/db/adapters/resolveAndValidateOptions.ts +9 -1
- package/src/db/adapters/wa-sqlite/RawSqliteConnection.ts +12 -2
- package/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.ts +6 -2
- package/src/db/adapters/wa-sqlite/vfs.ts +51 -4
- package/src/db/sync/SharedWebStreamingSyncImplementation.ts +34 -15
- package/src/db/sync/WebRemote.ts +2 -5
- package/src/worker/sync/SharedSyncImplementation.ts +89 -48
- package/src/worker/sync/WorkerClient.ts +4 -3
- package/dist/worker/AccessHandlePoolVFS-B9CKqcQ3.js +0 -2
- package/dist/worker/AccessHandlePoolVFS-B9CKqcQ3.js.map +0 -1
- package/dist/worker/IDBBatchAtomicVFS-BfRzbRoV.js +0 -2
- package/dist/worker/IDBBatchAtomicVFS-BfRzbRoV.js.map +0 -1
- package/dist/worker/OPFSCoopSyncVFS-BxXAVpVQ.js +0 -2
- package/dist/worker/OPFSCoopSyncVFS-BxXAVpVQ.js.map +0 -1
- package/dist/worker/OPFSWriteAheadVFS-DuqXaOct.js +0 -2
- package/dist/worker/OPFSWriteAheadVFS-DuqXaOct.js.map +0 -1
- package/dist/worker/assets/mc-wa-sqlite-BHScYYZw.wasm +0 -0
- package/dist/worker/assets/wa-sqlite-CIxTmRHQ.wasm +0 -0
- package/dist/worker/assets/wa-sqlite-async-zc68fxQq.wasm +0 -0
- package/dist/worker/mc-wa-sqlite-PubB6u8c.js.map +0 -1
- package/dist/worker/mc-wa-sqlite-async-DJG_ANKO.js.map +0 -1
- package/dist/worker/wa-sqlite-D1_4mGs8.js.map +0 -1
- package/dist/worker/wa-sqlite-async-BxkwNY-2.js +0 -2
- package/dist/worker/wa-sqlite-async-BxkwNY-2.js.map +0 -1
|
@@ -60,7 +60,7 @@ export class SharedSyncImplementation extends BaseObserver {
|
|
|
60
60
|
this.connectionManager = new ConnectionManager({
|
|
61
61
|
createSyncImplementation: async () => {
|
|
62
62
|
await this.waitForReady();
|
|
63
|
-
const sync = this.generateStreamingImplementation();
|
|
63
|
+
const sync = await this.generateStreamingImplementation();
|
|
64
64
|
const removeStatusListener = sync.registerListener({
|
|
65
65
|
statusChanged: (snapshot) => {
|
|
66
66
|
this.syncStatus = snapshot;
|
|
@@ -187,14 +187,21 @@ export class SharedSyncImplementation extends BaseObserver {
|
|
|
187
187
|
/**
|
|
188
188
|
* Adds a new client tab's message port to the list of connected ports
|
|
189
189
|
*/
|
|
190
|
-
|
|
191
|
-
return
|
|
190
|
+
addPort(port, capabilities) {
|
|
191
|
+
return this.portMutex.runExclusive(() => {
|
|
192
|
+
if (this.ports.length) {
|
|
193
|
+
// If we're already tracking a port, the added port must connect in the same mode (download or upload only, or
|
|
194
|
+
// both).
|
|
195
|
+
const anyPort = this.ports[0];
|
|
196
|
+
checkCapabilitiesCompatible(anyPort.clientCapabilities, capabilities);
|
|
197
|
+
}
|
|
192
198
|
const portProvider = {
|
|
193
199
|
port,
|
|
194
200
|
clientProvider: Comlink.wrap(port),
|
|
195
201
|
currentSubscriptions: [],
|
|
196
202
|
closeListeners: [],
|
|
197
|
-
isClosing: false
|
|
203
|
+
isClosing: false,
|
|
204
|
+
clientCapabilities: capabilities
|
|
198
205
|
};
|
|
199
206
|
this.ports.push(portProvider);
|
|
200
207
|
// Give the newly connected client the latest status
|
|
@@ -261,42 +268,57 @@ export class SharedSyncImplementation extends BaseObserver {
|
|
|
261
268
|
generateStreamingImplementation() {
|
|
262
269
|
// This should only be called after initialization has completed
|
|
263
270
|
const syncParams = this.syncParams;
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
},
|
|
284
|
-
fetchCredentials: (signal) => {
|
|
285
|
-
return this.#useConnector((port) => {
|
|
286
|
-
this.logger.log({
|
|
287
|
-
level: LogLevels.info,
|
|
288
|
-
message: 'calling the last port client provider for credentials'
|
|
289
|
-
});
|
|
290
|
-
return port.clientProvider.fetchCredentials();
|
|
291
|
-
}, 'fetchCredentials', signal);
|
|
271
|
+
const capabilities = this.ports[0]?.clientCapabilities;
|
|
272
|
+
if (!capabilities) {
|
|
273
|
+
throw new Error('Cannot create a sync implementation without connected clients');
|
|
274
|
+
}
|
|
275
|
+
const connector = {};
|
|
276
|
+
if (capabilities.hasFetchCredentials) {
|
|
277
|
+
// Always forward invalidations to the tab, since it has its own credentials cache (and potentially a
|
|
278
|
+
// connector-level invalidateCredentials callback).
|
|
279
|
+
connector.invalidateCredentials = async () => {
|
|
280
|
+
const lastPort = await this.getLastWrappedPort();
|
|
281
|
+
if (!lastPort) {
|
|
282
|
+
throw new Error('No client port found to invalidate credentials');
|
|
283
|
+
}
|
|
284
|
+
try {
|
|
285
|
+
this.logger.log({
|
|
286
|
+
level: LogLevels.info,
|
|
287
|
+
message: 'calling the last port client provider to invalidate credentials'
|
|
288
|
+
});
|
|
289
|
+
lastPort.clientProvider.invalidateCredentials();
|
|
292
290
|
}
|
|
293
|
-
|
|
294
|
-
|
|
291
|
+
catch (error) {
|
|
292
|
+
this.logger.log({ level: LogLevels.error, message: 'error invalidating credentials', error });
|
|
293
|
+
}
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
if (capabilities.hasFetchCredentials) {
|
|
297
|
+
connector.fetchCredentials = (signal) => {
|
|
298
|
+
return this.#useConnector((port) => {
|
|
299
|
+
this.logger.log({
|
|
300
|
+
level: LogLevels.info,
|
|
301
|
+
message: 'calling the last port client provider for credentials'
|
|
302
|
+
});
|
|
303
|
+
return port.clientProvider.fetchCredentials();
|
|
304
|
+
}, 'fetchCredentials', signal);
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
if (capabilities.hasUploadCrud) {
|
|
308
|
+
connector.uploadCrud = (signal) => {
|
|
295
309
|
return this.#useConnector((port) => port.clientProvider.uploadCrud(), 'uploadCrud', signal);
|
|
296
|
-
}
|
|
297
|
-
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
if (capabilities.hasPostCheckpointRequest) {
|
|
313
|
+
connector.postCheckpointRequest = (clientId, requestId, signal) => {
|
|
298
314
|
return this.#useConnector((port) => port.clientProvider.postCheckpointRequest(clientId, requestId), 'postCheckpointRequest', signal);
|
|
299
|
-
}
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
// Create a new StreamingSyncImplementation for each connect call. This is usually done is all SDKs.
|
|
318
|
+
return new WebStreamingSyncImplementation({
|
|
319
|
+
adapter: new SqliteBucketStorage(this.database, this.logger),
|
|
320
|
+
connector,
|
|
321
|
+
remote: new WebRemote(connector, this.logger),
|
|
300
322
|
...syncParams.streamOptions,
|
|
301
323
|
subscriptions: this.subscriptions,
|
|
302
324
|
// Logger cannot be transferred just yet
|
|
@@ -503,4 +525,11 @@ function withAbort(options) {
|
|
|
503
525
|
.catch((e) => completePromise(() => reject(e)));
|
|
504
526
|
});
|
|
505
527
|
}
|
|
528
|
+
function checkCapabilitiesCompatible(a, b) {
|
|
529
|
+
if (a.hasFetchCredentials != b.hasFetchCredentials ||
|
|
530
|
+
a.hasUploadCrud != b.hasUploadCrud ||
|
|
531
|
+
a.hasPostCheckpointRequest != b.hasPostCheckpointRequest) {
|
|
532
|
+
throw new Error('Different tabs connecting in different modes (download-only / upload-only / full, or with and without custom checkpoint requests) is not supported');
|
|
533
|
+
}
|
|
534
|
+
}
|
|
506
535
|
//# sourceMappingURL=SharedSyncImplementation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SharedSyncImplementation.js","sourceRoot":"","sources":["../../../src/worker/sync/SharedSyncImplementation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SharedSyncImplementation.js","sourceRoot":"","sources":["../../../src/worker/sync/SharedSyncImplementation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { SharedSyncImplementation, SharedSyncInitOptions, WrappedSyncPort } from './SharedSyncImplementation.js';
|
|
1
|
+
import { ClientConnectorCapabilities, SharedSyncImplementation, SharedSyncInitOptions, WrappedSyncPort } from './SharedSyncImplementation.js';
|
|
2
2
|
import { SubscribedStream, ResolvedSyncOptions } from '@powersync/shared-internals';
|
|
3
3
|
/**
|
|
4
|
-
* A client
|
|
4
|
+
* A connected client from the perspective of the shared sync worker.
|
|
5
5
|
*
|
|
6
6
|
* The shared sync implementation needs a per-client view of subscriptions so that subscriptions of closed tabs can
|
|
7
7
|
* automatically be evicted later.
|
|
@@ -19,7 +19,7 @@ export declare class WorkerClient {
|
|
|
19
19
|
* When the client tab is closed, its lock will be returned. So when the shared worker attempts to acquire the lock,
|
|
20
20
|
* it can consider the connection to be closed.
|
|
21
21
|
*/
|
|
22
|
-
|
|
22
|
+
initialize(name: string, capabilities: ClientConnectorCapabilities): Promise<void>;
|
|
23
23
|
setLogLevel(level: number): void;
|
|
24
24
|
triggerCrudUpload(): void;
|
|
25
25
|
setParams(params: SharedSyncInitOptions, subscriptions: SubscribedStream[]): Promise<void>;
|
|
@@ -2,7 +2,7 @@ import * as Comlink from 'comlink';
|
|
|
2
2
|
import { getNavigatorLocks } from '../../shared/navigator.js';
|
|
3
3
|
import { SharedSyncClientEvent } from './SharedSyncImplementation.js';
|
|
4
4
|
/**
|
|
5
|
-
* A client
|
|
5
|
+
* A connected client from the perspective of the shared sync worker.
|
|
6
6
|
*
|
|
7
7
|
* The shared sync implementation needs a per-client view of subscriptions so that subscriptions of closed tabs can
|
|
8
8
|
* automatically be evicted later.
|
|
@@ -46,9 +46,9 @@ export class WorkerClient {
|
|
|
46
46
|
* When the client tab is closed, its lock will be returned. So when the shared worker attempts to acquire the lock,
|
|
47
47
|
* it can consider the connection to be closed.
|
|
48
48
|
*/
|
|
49
|
-
async
|
|
49
|
+
async initialize(name, capabilities) {
|
|
50
50
|
// Only add the port once the lock has been obtained on the client.
|
|
51
|
-
this.resolvedPort = await this.sync.addPort(this.port);
|
|
51
|
+
this.resolvedPort = await this.sync.addPort(this.port, capabilities);
|
|
52
52
|
// Don't await this lock request
|
|
53
53
|
getNavigatorLocks().request(name, async () => {
|
|
54
54
|
await this.removePort();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkerClient.js","sourceRoot":"","sources":["../../../src/worker/sync/WorkerClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,
|
|
1
|
+
{"version":3,"file":"WorkerClient.js","sourceRoot":"","sources":["../../../src/worker/sync/WorkerClient.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@powersync/web",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.6.0",
|
|
4
4
|
"description": "PowerSync Web SDK",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "lib/index.js",
|
|
@@ -58,15 +58,15 @@
|
|
|
58
58
|
"author": "PowerSync",
|
|
59
59
|
"license": "Apache-2.0",
|
|
60
60
|
"peerDependencies": {
|
|
61
|
-
"@powersync/common": "^2.
|
|
62
|
-
"@powersync/shared-internals": "^1.
|
|
61
|
+
"@powersync/common": "^2.5.0",
|
|
62
|
+
"@powersync/shared-internals": "^1.5.0"
|
|
63
63
|
},
|
|
64
64
|
"dependencies": {
|
|
65
|
-
"@journeyapps/wa-sqlite": "2.0.
|
|
65
|
+
"@journeyapps/wa-sqlite": "2.0.10",
|
|
66
66
|
"comlink": "^4.4.2",
|
|
67
67
|
"commander": "^12.1.0",
|
|
68
|
-
"@powersync/common": "2.
|
|
69
|
-
"@powersync/shared-internals": "1.
|
|
68
|
+
"@powersync/common": "2.5.0",
|
|
69
|
+
"@powersync/shared-internals": "1.5.0"
|
|
70
70
|
},
|
|
71
71
|
"devDependencies": {
|
|
72
72
|
"@types/uuid": "^9.0.6",
|
|
@@ -10,10 +10,9 @@ import {
|
|
|
10
10
|
} from '@powersync/common';
|
|
11
11
|
import {
|
|
12
12
|
BasePowerSyncDatabase,
|
|
13
|
-
BucketStorageAdapter,
|
|
14
13
|
CreateSyncImplementationOptions,
|
|
14
|
+
InternalConnector,
|
|
15
15
|
Mutex,
|
|
16
|
-
SqliteBucketStorage,
|
|
17
16
|
StreamingSyncImplementation,
|
|
18
17
|
TriggerManagerConfig,
|
|
19
18
|
openDatabase
|
|
@@ -82,6 +81,10 @@ export class WebPowerSyncDatabase extends BasePowerSyncDatabase<WebPowerSyncData
|
|
|
82
81
|
registerDatabase(this);
|
|
83
82
|
}
|
|
84
83
|
|
|
84
|
+
get sdkName(): string {
|
|
85
|
+
return '@powersync/web';
|
|
86
|
+
}
|
|
87
|
+
|
|
85
88
|
async _initialize(): Promise<void> {
|
|
86
89
|
if (this.database instanceof AsyncDbAdapter) {
|
|
87
90
|
/**
|
|
@@ -155,7 +158,7 @@ export class WebPowerSyncDatabase extends BasePowerSyncDatabase<WebPowerSyncData
|
|
|
155
158
|
}
|
|
156
159
|
|
|
157
160
|
protected generateSyncStreamImplementation(
|
|
158
|
-
connector:
|
|
161
|
+
connector: InternalConnector,
|
|
159
162
|
options: CreateSyncImplementationOptions
|
|
160
163
|
): StreamingSyncImplementation {
|
|
161
164
|
const remote = new WebRemote(connector, this.logger);
|
|
@@ -64,6 +64,17 @@ export interface WebSpecificOpenOptions {
|
|
|
64
64
|
|
|
65
65
|
vfs: WASQLiteVFS;
|
|
66
66
|
|
|
67
|
+
/**
|
|
68
|
+
* Names of additional no-argument WebAssembly exports to call after the PowerSync core initializer and before
|
|
69
|
+
* opening each SQLite connection, in array order. Each must register a statically linked extension, return
|
|
70
|
+
* SQLITE_OK (0) on success, and be safe to call more than once for a module.
|
|
71
|
+
*
|
|
72
|
+
* Requires a custom wa-sqlite build exporting these functions and a worker bundled against its matching JavaScript.
|
|
73
|
+
* Use exported names without Emscripten's leading underscore, e.g. `decimal_init_static`.
|
|
74
|
+
* Defaults to no additional initialization functions.
|
|
75
|
+
*/
|
|
76
|
+
additionalInitializationFunctions?: readonly string[];
|
|
77
|
+
|
|
67
78
|
/**
|
|
68
79
|
* If the {@link vfs} supports it, an additional amount of read-only connections to open. Using additional read
|
|
69
80
|
* connections can speed up queries by dispatching them to multiple workers running them concurrently.
|
|
@@ -96,6 +107,27 @@ export interface WebSpecificOpenOptions {
|
|
|
96
107
|
* Defaults to 0 (disabling the cache).
|
|
97
108
|
*/
|
|
98
109
|
preparedStatementsCache?: number;
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* The name of a [Storage Bucket](https://wicg.github.io/storage-buckets/) to keep the database files in,
|
|
113
|
+
* instead of the default bucket of the origin private file system.
|
|
114
|
+
*
|
|
115
|
+
* Only supported by the OPFS-based VFS implementations: {@link WASQLiteVFS.OPFSCoopSyncVFS},
|
|
116
|
+
* {@link WASQLiteVFS.OPFSWriteAheadVFS} and {@link WASQLiteVFS.AccessHandlePoolVFS}. Opening the database fails in
|
|
117
|
+
* a browser without the Storage Buckets API, so set this option only when `'storageBuckets' in navigator`.
|
|
118
|
+
*
|
|
119
|
+
* The SDK forwards the name to `navigator.storageBuckets.open()` unchanged, so the browser reports a name it does not
|
|
120
|
+
* accept. The bucket is opened by name, with the browser's default options. To configure options for the bucket,
|
|
121
|
+
* call and await `navigator.storageBuckets.open()` before opening a PowerSync database.
|
|
122
|
+
*
|
|
123
|
+
* A database in a bucket is a different database from one of the same name in the default bucket: setting this
|
|
124
|
+
* option for an existing database starts with an empty database, and the files in the default bucket are not
|
|
125
|
+
* moved. The SDK groups database resources by database name, without taking the storage bucket into account. To
|
|
126
|
+
* avoid lock contention and wrong update notifications, use unique database names even across buckets.
|
|
127
|
+
*
|
|
128
|
+
* Uses the default bucket when no option is given.
|
|
129
|
+
*/
|
|
130
|
+
storageBucket?: string;
|
|
99
131
|
}
|
|
100
132
|
|
|
101
133
|
export interface ResolvedWebSQLOpenOptions extends SQLOpenOptions, WebSpecificOpenOptions {}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { LogLevels } from '@powersync/common';
|
|
2
2
|
import { TemporaryStorageOption, WebSpecificOpenOptions } from './options.js';
|
|
3
|
-
import { vfsRequiresDedicatedWorkers, WASQLiteVFS } from './wa-sqlite/vfs.js';
|
|
3
|
+
import { vfsRequiresDedicatedWorkers, vfsSupportsStorageBuckets, WASQLiteVFS } from './wa-sqlite/vfs.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* The maximum length of a db filename we support.
|
|
@@ -45,5 +45,13 @@ export function resolveAndValidateOptions<And = {}>(
|
|
|
45
45
|
);
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
+
if (resolved.storageBucket != null) {
|
|
49
|
+
if (!vfsSupportsStorageBuckets(resolved.vfs)) {
|
|
50
|
+
throw new Error(
|
|
51
|
+
`Invalid configuration: The 'storageBucket' option needs an OPFS-based VFS, which ${resolved.vfs} is not.`
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
48
56
|
return resolved;
|
|
49
57
|
}
|
|
@@ -29,6 +29,11 @@ export interface RawWaSqliteDatabaseOptions {
|
|
|
29
29
|
* The amount of prepared statements to cache, or 0 to disable caching.
|
|
30
30
|
*/
|
|
31
31
|
preparedStatementsCache: number;
|
|
32
|
+
additionalInitializationFunctions?: readonly string[];
|
|
33
|
+
/**
|
|
34
|
+
* The name of a Storage Bucket to keep the database files in, for the OPFS-based VFS implementations.
|
|
35
|
+
*/
|
|
36
|
+
storageBucket?: string;
|
|
32
37
|
}
|
|
33
38
|
|
|
34
39
|
/**
|
|
@@ -84,9 +89,14 @@ export class RawSqliteConnection {
|
|
|
84
89
|
const sqlite3 = WaSqliteFactory(module);
|
|
85
90
|
sqlite3.vfs_register(vfs, true);
|
|
86
91
|
/**
|
|
87
|
-
* Register the PowerSync core
|
|
92
|
+
* Register the PowerSync core and additional statically linked extensions
|
|
88
93
|
*/
|
|
89
|
-
|
|
94
|
+
for (const name of ['powersync_init_static', ...(this.options.additionalInitializationFunctions ?? [])]) {
|
|
95
|
+
const result = module.ccall(name, 'int', []);
|
|
96
|
+
if (result !== 0) {
|
|
97
|
+
throw new Error(`SQLite extension initializer ${name} failed with code ${result}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
90
100
|
|
|
91
101
|
/**
|
|
92
102
|
* Create the multiple cipher vfs if an encryption key is provided
|
|
@@ -75,7 +75,9 @@ export class WASQLiteOpenFactory implements SQLOpenFactory {
|
|
|
75
75
|
encryptionKey,
|
|
76
76
|
temporaryStorage,
|
|
77
77
|
cacheSizeKb,
|
|
78
|
-
preparedStatementsCache
|
|
78
|
+
preparedStatementsCache,
|
|
79
|
+
additionalInitializationFunctions,
|
|
80
|
+
storageBucket
|
|
79
81
|
} = this.options;
|
|
80
82
|
|
|
81
83
|
if (!enableMultiTabs) {
|
|
@@ -95,7 +97,9 @@ export class WASQLiteOpenFactory implements SQLOpenFactory {
|
|
|
95
97
|
temporaryStorage,
|
|
96
98
|
cacheSizeKb,
|
|
97
99
|
// TODO: Enable prepared statement cache by default?
|
|
98
|
-
preparedStatementsCache: preparedStatementsCache ?? 0
|
|
100
|
+
preparedStatementsCache: preparedStatementsCache ?? 0,
|
|
101
|
+
additionalInitializationFunctions,
|
|
102
|
+
storageBucket
|
|
99
103
|
};
|
|
100
104
|
}
|
|
101
105
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type * as SQLite from '@journeyapps/wa-sqlite';
|
|
2
2
|
import { RawWaSqliteDatabaseOptions } from './RawSqliteConnection.js';
|
|
3
|
+
import type { WebSpecificOpenOptions } from '../options.js';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* List of currently tested virtual filesystems
|
|
@@ -32,6 +33,51 @@ export function vfsRequiresDedicatedWorkers(vfs: WASQLiteVFS) {
|
|
|
32
33
|
return vfs != WASQLiteVFS.IDBBatchAtomicVFS && vfs != WASQLiteVFS.InMemoryVfs;
|
|
33
34
|
}
|
|
34
35
|
|
|
36
|
+
/**
|
|
37
|
+
* Whether the VFS can keep its files in a Storage Bucket, see {@link WebSpecificOpenOptions.storageBucket}.
|
|
38
|
+
*/
|
|
39
|
+
export function vfsSupportsStorageBuckets(vfs: WASQLiteVFS) {
|
|
40
|
+
return (
|
|
41
|
+
vfs == WASQLiteVFS.OPFSCoopSyncVFS || vfs == WASQLiteVFS.OPFSWriteAheadVFS || vfs == WASQLiteVFS.AccessHandlePoolVFS
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* The part of the Storage Buckets API this module uses. The API is not in the TypeScript DOM library yet.
|
|
47
|
+
*/
|
|
48
|
+
export interface StorageBucketManagerLike {
|
|
49
|
+
open(name: string): Promise<{ getDirectory(): Promise<FileSystemDirectoryHandle> }>;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Options for an OPFS-based VFS that keep its files in the named Storage Bucket, see
|
|
54
|
+
* {@link WebSpecificOpenOptions.storageBucket}. Without a bucket name, no options: the VFS uses the root of the
|
|
55
|
+
* origin private file system.
|
|
56
|
+
*
|
|
57
|
+
* @internal
|
|
58
|
+
*/
|
|
59
|
+
export function vfsOptionsForStorageBucket(
|
|
60
|
+
storageBucket: string | undefined,
|
|
61
|
+
storageBuckets: StorageBucketManagerLike | null | undefined = (navigator as any).storageBuckets
|
|
62
|
+
): { getRoot?: () => Promise<FileSystemDirectoryHandle>; prefix?: string } {
|
|
63
|
+
if (storageBucket == null) {
|
|
64
|
+
return {};
|
|
65
|
+
}
|
|
66
|
+
if (storageBuckets == null) {
|
|
67
|
+
throw new Error(
|
|
68
|
+
`The 'storageBucket' option needs the Storage Buckets API (navigator.storageBuckets), which this browser does not have. Check for it before setting the option.`
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
// Called by the VFS each time it needs its root directory. Opening the bucket again creates it when the
|
|
73
|
+
// browser deleted it with the rest of the site's data.
|
|
74
|
+
getRoot: () => storageBuckets.open(storageBucket).then((bucket) => bucket.getDirectory()),
|
|
75
|
+
// Keeps the locks and channels of a file apart from those of a file of the same name in another bucket.
|
|
76
|
+
// Bucket names cannot contain ':', so the names of two buckets never overlap.
|
|
77
|
+
prefix: `${storageBucket}:`
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
|
|
35
81
|
/**
|
|
36
82
|
* @internal
|
|
37
83
|
*/
|
|
@@ -68,7 +114,8 @@ async function syncModuleFactory(encryptionKey: string | undefined): Promise<SQL
|
|
|
68
114
|
export async function loadModuleAndVfs({
|
|
69
115
|
vfs,
|
|
70
116
|
filename,
|
|
71
|
-
encryptionKey
|
|
117
|
+
encryptionKey,
|
|
118
|
+
storageBucket
|
|
72
119
|
}: RawWaSqliteDatabaseOptions): Promise<{ module: SQLiteModule; vfs: SQLiteVFS }> {
|
|
73
120
|
let moduleFactory = syncModuleFactory;
|
|
74
121
|
let resolveVfs: (module: any) => Promise<SQLiteVFS>;
|
|
@@ -86,19 +133,19 @@ export async function loadModuleAndVfs({
|
|
|
86
133
|
case WASQLiteVFS.AccessHandlePoolVFS: {
|
|
87
134
|
// @ts-expect-error The types for this import are missing upstream
|
|
88
135
|
const { AccessHandlePoolVFS } = await import('@journeyapps/wa-sqlite/src/examples/AccessHandlePoolVFS.js');
|
|
89
|
-
resolveVfs = (module) => AccessHandlePoolVFS.create(filename, module);
|
|
136
|
+
resolveVfs = (module) => AccessHandlePoolVFS.create(filename, module, vfsOptionsForStorageBucket(storageBucket));
|
|
90
137
|
break;
|
|
91
138
|
}
|
|
92
139
|
case WASQLiteVFS.OPFSCoopSyncVFS: {
|
|
93
140
|
// @ts-expect-error The types for this import are missing upstream
|
|
94
141
|
const { OPFSCoopSyncVFS } = await import('@journeyapps/wa-sqlite/src/examples/OPFSCoopSyncVFS.js');
|
|
95
|
-
resolveVfs = (module) => OPFSCoopSyncVFS.create(filename, module);
|
|
142
|
+
resolveVfs = (module) => OPFSCoopSyncVFS.create(filename, module, vfsOptionsForStorageBucket(storageBucket));
|
|
96
143
|
break;
|
|
97
144
|
}
|
|
98
145
|
case WASQLiteVFS.OPFSWriteAheadVFS: {
|
|
99
146
|
// @ts-expect-error The types for this import are missing upstream
|
|
100
147
|
const { OPFSWriteAheadVFS } = await import('@journeyapps/wa-sqlite/src/examples/OPFSWriteAheadVFS.js');
|
|
101
|
-
resolveVfs = (module) => OPFSWriteAheadVFS.create(filename, module,
|
|
148
|
+
resolveVfs = (module) => OPFSWriteAheadVFS.create(filename, module, vfsOptionsForStorageBucket(storageBucket));
|
|
102
149
|
break;
|
|
103
150
|
}
|
|
104
151
|
case WASQLiteVFS.InMemoryVfs: {
|
|
@@ -74,11 +74,13 @@ class SharedSyncClientProvider extends AbstractSharedSyncClientProvider {
|
|
|
74
74
|
* Don't return anything here, just incase something which is not
|
|
75
75
|
* serializable is returned from the `uploadCrud` function.
|
|
76
76
|
*/
|
|
77
|
-
await this.#relay(() => this.options.uploadCrud());
|
|
77
|
+
await this.#relay(() => this.options.connector.uploadCrud!());
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
override async postCheckpointRequest(clientId: string, requestId: string): Promise<string | null> {
|
|
81
|
-
return await this.#relay(
|
|
81
|
+
return await this.#relay(
|
|
82
|
+
async () => (await this.options.connector.postCheckpointRequest!(clientId, requestId)) ?? null
|
|
83
|
+
);
|
|
82
84
|
}
|
|
83
85
|
|
|
84
86
|
get logger() {
|
|
@@ -177,10 +179,14 @@ export class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplem
|
|
|
177
179
|
* - The client sends the params to the shared worker after locks have been registered.
|
|
178
180
|
*/
|
|
179
181
|
const closeSignal = await generateTabCloseSignal(this.abortOnClose.signal);
|
|
180
|
-
|
|
181
|
-
await this.syncManager.addLockBasedCloseSignal(closeSignal);
|
|
182
|
+
const { identifier, connector } = this.options;
|
|
182
183
|
|
|
183
|
-
|
|
184
|
+
// Awaiting here ensures the worker is waiting for the lock
|
|
185
|
+
await this.syncManager.initialize(closeSignal, {
|
|
186
|
+
hasFetchCredentials: !!connector.fetchCredentials,
|
|
187
|
+
hasPostCheckpointRequest: !!connector.postCheckpointRequest,
|
|
188
|
+
hasUploadCrud: !!connector.uploadCrud
|
|
189
|
+
});
|
|
184
190
|
|
|
185
191
|
await this.syncManager.setParams(
|
|
186
192
|
{
|
|
@@ -210,9 +216,30 @@ export class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplem
|
|
|
210
216
|
}
|
|
211
217
|
|
|
212
218
|
async dispose(): Promise<void> {
|
|
213
|
-
|
|
219
|
+
let registeredWithWorker = true;
|
|
220
|
+
try {
|
|
221
|
+
await this.waitForReady();
|
|
222
|
+
} catch {
|
|
223
|
+
// The worker rejected this client (e.g. because it connects in a mode incompatible with other tabs), so it won't
|
|
224
|
+
// acknowledge a close request either.
|
|
225
|
+
registeredWithWorker = false;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
if (registeredWithWorker) {
|
|
229
|
+
await this.#closeWorkerClient();
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
await super.dispose();
|
|
233
|
+
|
|
234
|
+
this.abortOnClose.abort();
|
|
214
235
|
|
|
215
|
-
|
|
236
|
+
// Release the proxy
|
|
237
|
+
this.syncManager[Comlink.releaseProxy]();
|
|
238
|
+
this.worker.close();
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
#closeWorkerClient() {
|
|
242
|
+
return new Promise<void>((resolve) => {
|
|
216
243
|
// This will always be a message port since we use shared workers.
|
|
217
244
|
const messagePort = this.worker.endpoint as MessagePort;
|
|
218
245
|
|
|
@@ -231,14 +258,6 @@ export class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplem
|
|
|
231
258
|
};
|
|
232
259
|
messagePort.postMessage(closeMessagePayload);
|
|
233
260
|
});
|
|
234
|
-
|
|
235
|
-
await super.dispose();
|
|
236
|
-
|
|
237
|
-
this.abortOnClose.abort();
|
|
238
|
-
|
|
239
|
-
// Release the proxy
|
|
240
|
-
this.syncManager[Comlink.releaseProxy]();
|
|
241
|
-
this.worker.close();
|
|
242
261
|
}
|
|
243
262
|
|
|
244
263
|
async waitForReady() {
|
package/src/db/sync/WebRemote.ts
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
import { LogLevels, PowerSyncLogger } from '@powersync/common';
|
|
2
|
-
import { AbstractRemote, FetchOptions,
|
|
2
|
+
import { AbstractRemote, FetchOptions, InternalConnector } from '@powersync/shared-internals';
|
|
3
3
|
|
|
4
4
|
import { getUserAgentInfo } from './userAgent.js';
|
|
5
5
|
import type { WebSocketSyncStreamPlatform, WebSocketSupport } from '@powersync/shared-internals/websockets';
|
|
6
6
|
|
|
7
7
|
export class WebRemote extends AbstractRemote {
|
|
8
|
-
constructor(
|
|
9
|
-
protected connector: RemoteConnector,
|
|
10
|
-
logger: PowerSyncLogger
|
|
11
|
-
) {
|
|
8
|
+
constructor(connector: InternalConnector, logger: PowerSyncLogger) {
|
|
12
9
|
super(connector, logger);
|
|
13
10
|
}
|
|
14
11
|
|