@powersync/web 1.13.1 → 1.14.1
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.umd.js +36 -14
- package/dist/index.umd.js.map +1 -1
- package/dist/worker/SharedSyncImplementation.umd.js +81 -67
- package/dist/worker/SharedSyncImplementation.umd.js.map +1 -1
- package/dist/worker/WASQLiteDB.umd.js +59 -57
- package/dist/worker/WASQLiteDB.umd.js.map +1 -1
- package/lib/package.json +4 -8
- package/lib/src/db/adapters/wa-sqlite/WASQLiteConnection.js +1 -0
- package/lib/src/db/adapters/wa-sqlite/WASQLiteDBAdapter.d.ts +1 -0
- package/lib/src/db/adapters/wa-sqlite/WASQLiteDBAdapter.js +4 -2
- package/lib/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.js +5 -2
- package/lib/src/db/adapters/web-sql-flags.d.ts +10 -0
- package/lib/src/db/adapters/web-sql-flags.js +1 -0
- package/lib/src/db/sync/SharedWebStreamingSyncImplementation.js +3 -3
- package/lib/src/worker/sync/SharedSyncImplementation.js +23 -10
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -9
package/dist/index.umd.js
CHANGED
|
@@ -34338,6 +34338,7 @@ class WASqliteConnection extends _powersync_common__WEBPACK_IMPORTED_MODULE_1__.
|
|
|
34338
34338
|
await this.openDB();
|
|
34339
34339
|
this.registerBroadcastListeners();
|
|
34340
34340
|
await this.executeSingleStatement(`PRAGMA temp_store = ${this.options.temporaryStorage};`);
|
|
34341
|
+
await this.executeSingleStatement(`PRAGMA cache_size = -${this.options.cacheSizeKb};`);
|
|
34341
34342
|
await this.executeEncryptionPragma();
|
|
34342
34343
|
this.sqliteAPI.update_hook(this.dbP, (updateType, dbName, tableName) => {
|
|
34343
34344
|
if (!tableName) {
|
|
@@ -34531,7 +34532,7 @@ class WASQLiteDBAdapter extends _LockedAsyncDatabaseAdapter__WEBPACK_IMPORTED_MO
|
|
|
34531
34532
|
super({
|
|
34532
34533
|
name: options.dbFilename,
|
|
34533
34534
|
openConnection: async () => {
|
|
34534
|
-
const { workerPort, temporaryStorage } = options;
|
|
34535
|
+
const { workerPort, temporaryStorage, cacheSizeKb } = options;
|
|
34535
34536
|
if (workerPort) {
|
|
34536
34537
|
const remote = comlink__WEBPACK_IMPORTED_MODULE_0__.wrap(workerPort);
|
|
34537
34538
|
return new _WorkerWrappedAsyncDatabaseConnection__WEBPACK_IMPORTED_MODULE_4__.WorkerWrappedAsyncDatabaseConnection({
|
|
@@ -34540,6 +34541,7 @@ class WASQLiteDBAdapter extends _LockedAsyncDatabaseAdapter__WEBPACK_IMPORTED_MO
|
|
|
34540
34541
|
baseConnection: await remote({
|
|
34541
34542
|
...options,
|
|
34542
34543
|
temporaryStorage: temporaryStorage ?? _web_sql_flags__WEBPACK_IMPORTED_MODULE_3__.TemporaryStorageOption.MEMORY,
|
|
34544
|
+
cacheSizeKb: cacheSizeKb ?? _web_sql_flags__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_CACHE_SIZE_KB,
|
|
34543
34545
|
flags: (0,_PowerSyncDatabase__WEBPACK_IMPORTED_MODULE_1__.resolveWebPowerSyncFlags)(options.flags),
|
|
34544
34546
|
encryptionKey: options.encryptionKey
|
|
34545
34547
|
})
|
|
@@ -34551,6 +34553,7 @@ class WASQLiteDBAdapter extends _LockedAsyncDatabaseAdapter__WEBPACK_IMPORTED_MO
|
|
|
34551
34553
|
debugMode: options.debugMode,
|
|
34552
34554
|
flags: options.flags,
|
|
34553
34555
|
temporaryStorage,
|
|
34556
|
+
cacheSizeKb,
|
|
34554
34557
|
logger: options.logger,
|
|
34555
34558
|
vfs: options.vfs,
|
|
34556
34559
|
encryptionKey: options.encryptionKey,
|
|
@@ -34615,7 +34618,7 @@ class WASQLiteOpenFactory extends _AbstractWebSQLOpenFactory__WEBPACK_IMPORTED_M
|
|
|
34615
34618
|
}
|
|
34616
34619
|
async openConnection() {
|
|
34617
34620
|
const { enableMultiTabs, useWebWorker } = this.resolvedFlags;
|
|
34618
|
-
const { vfs = _WASQLiteConnection__WEBPACK_IMPORTED_MODULE_6__.WASQLiteVFS.IDBBatchAtomicVFS, temporaryStorage = _web_sql_flags__WEBPACK_IMPORTED_MODULE_4__.TemporaryStorageOption.MEMORY, encryptionKey } = this.waOptions;
|
|
34621
|
+
const { vfs = _WASQLiteConnection__WEBPACK_IMPORTED_MODULE_6__.WASQLiteVFS.IDBBatchAtomicVFS, temporaryStorage = _web_sql_flags__WEBPACK_IMPORTED_MODULE_4__.TemporaryStorageOption.MEMORY, cacheSizeKb = _web_sql_flags__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_CACHE_SIZE_KB, encryptionKey } = this.waOptions;
|
|
34619
34622
|
if (!enableMultiTabs) {
|
|
34620
34623
|
this.logger.warn('Multiple tabs are not enabled in this browser');
|
|
34621
34624
|
}
|
|
@@ -34625,6 +34628,7 @@ class WASQLiteOpenFactory extends _AbstractWebSQLOpenFactory__WEBPACK_IMPORTED_M
|
|
|
34625
34628
|
? (0,_worker_db_open_worker_database__WEBPACK_IMPORTED_MODULE_1__.resolveWorkerDatabasePortFactory)(() => optionsDbWorker({
|
|
34626
34629
|
...this.options,
|
|
34627
34630
|
temporaryStorage,
|
|
34631
|
+
cacheSizeKb,
|
|
34628
34632
|
flags: this.resolvedFlags,
|
|
34629
34633
|
encryptionKey
|
|
34630
34634
|
}))
|
|
@@ -34636,6 +34640,7 @@ class WASQLiteOpenFactory extends _AbstractWebSQLOpenFactory__WEBPACK_IMPORTED_M
|
|
|
34636
34640
|
dbFilename: this.options.dbFilename,
|
|
34637
34641
|
vfs,
|
|
34638
34642
|
temporaryStorage,
|
|
34643
|
+
cacheSizeKb,
|
|
34639
34644
|
flags: this.resolvedFlags,
|
|
34640
34645
|
encryptionKey: encryptionKey
|
|
34641
34646
|
}),
|
|
@@ -34658,6 +34663,7 @@ class WASQLiteOpenFactory extends _AbstractWebSQLOpenFactory__WEBPACK_IMPORTED_M
|
|
|
34658
34663
|
debugMode: this.options.debugMode,
|
|
34659
34664
|
vfs,
|
|
34660
34665
|
temporaryStorage,
|
|
34666
|
+
cacheSizeKb,
|
|
34661
34667
|
flags: this.resolvedFlags,
|
|
34662
34668
|
encryptionKey: encryptionKey
|
|
34663
34669
|
});
|
|
@@ -34728,6 +34734,7 @@ class WASQLitePowerSyncDatabaseOpenFactory extends _AbstractWebPowerSyncDatabase
|
|
|
34728
34734
|
"use strict";
|
|
34729
34735
|
__webpack_require__.r(__webpack_exports__);
|
|
34730
34736
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
34737
|
+
/* harmony export */ DEFAULT_CACHE_SIZE_KB: () => (/* binding */ DEFAULT_CACHE_SIZE_KB),
|
|
34731
34738
|
/* harmony export */ DEFAULT_WEB_SQL_FLAGS: () => (/* binding */ DEFAULT_WEB_SQL_FLAGS),
|
|
34732
34739
|
/* harmony export */ TemporaryStorageOption: () => (/* binding */ TemporaryStorageOption),
|
|
34733
34740
|
/* harmony export */ isServerSide: () => (/* binding */ isServerSide),
|
|
@@ -34738,6 +34745,7 @@ var TemporaryStorageOption;
|
|
|
34738
34745
|
TemporaryStorageOption["MEMORY"] = "memory";
|
|
34739
34746
|
TemporaryStorageOption["FILESYSTEM"] = "file";
|
|
34740
34747
|
})(TemporaryStorageOption || (TemporaryStorageOption = {}));
|
|
34748
|
+
const DEFAULT_CACHE_SIZE_KB = 50 * 1024;
|
|
34741
34749
|
function isServerSide() {
|
|
34742
34750
|
return typeof window == 'undefined';
|
|
34743
34751
|
}
|
|
@@ -34951,10 +34959,10 @@ class SharedWebStreamingSyncImplementation extends _WebStreamingSyncImplementati
|
|
|
34951
34959
|
* This worker will manage all syncing operations remotely.
|
|
34952
34960
|
*/
|
|
34953
34961
|
const resolvedWorkerOptions = {
|
|
34954
|
-
...options,
|
|
34955
34962
|
dbFilename: this.options.identifier,
|
|
34956
|
-
// TODO
|
|
34957
34963
|
temporaryStorage: _adapters_web_sql_flags__WEBPACK_IMPORTED_MODULE_3__.TemporaryStorageOption.MEMORY,
|
|
34964
|
+
cacheSizeKb: _adapters_web_sql_flags__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_CACHE_SIZE_KB,
|
|
34965
|
+
...options,
|
|
34958
34966
|
flags: (0,_adapters_web_sql_flags__WEBPACK_IMPORTED_MODULE_3__.resolveWebSQLFlags)(options.flags)
|
|
34959
34967
|
};
|
|
34960
34968
|
const syncWorker = options.sync?.worker;
|
|
@@ -35597,6 +35605,9 @@ class SharedSyncImplementation extends _powersync_common__WEBPACK_IMPORTED_MODUL
|
|
|
35597
35605
|
await this.waitForReady();
|
|
35598
35606
|
// This effectively queues connect and disconnect calls. Ensuring multiple tabs' requests are synchronized
|
|
35599
35607
|
return (0,_shared_navigator__WEBPACK_IMPORTED_MODULE_8__.getNavigatorLocks)().request('shared-sync-connect', async () => {
|
|
35608
|
+
if (!this.dbAdapter) {
|
|
35609
|
+
await this.openInternalDB();
|
|
35610
|
+
}
|
|
35600
35611
|
this.syncStreamClient = this.generateStreamingImplementation();
|
|
35601
35612
|
this.lastConnectOptions = options;
|
|
35602
35613
|
this.syncStreamClient.registerListener({
|
|
@@ -35642,11 +35653,7 @@ class SharedSyncImplementation extends _powersync_common__WEBPACK_IMPORTED_MODUL
|
|
|
35642
35653
|
return;
|
|
35643
35654
|
}
|
|
35644
35655
|
const trackedPort = this.ports[index];
|
|
35645
|
-
|
|
35646
|
-
trackedPort.db.close();
|
|
35647
|
-
}
|
|
35648
|
-
// Release proxy
|
|
35649
|
-
trackedPort.clientProvider[comlink__WEBPACK_IMPORTED_MODULE_2__.releaseProxy]();
|
|
35656
|
+
// Remove from the list of active ports
|
|
35650
35657
|
this.ports.splice(index, 1);
|
|
35651
35658
|
/**
|
|
35652
35659
|
* The port might currently be in use. Any active functions might
|
|
@@ -35657,12 +35664,22 @@ class SharedSyncImplementation extends _powersync_common__WEBPACK_IMPORTED_MODUL
|
|
|
35657
35664
|
abortController.controller.abort(new _powersync_common__WEBPACK_IMPORTED_MODULE_0__.AbortOperation('Closing pending requests after client port is removed'));
|
|
35658
35665
|
}
|
|
35659
35666
|
});
|
|
35660
|
-
|
|
35661
|
-
|
|
35662
|
-
|
|
35663
|
-
|
|
35664
|
-
|
|
35667
|
+
const shouldReconnect = !!this.syncStreamClient;
|
|
35668
|
+
if (this.dbAdapter && this.dbAdapter == trackedPort.db) {
|
|
35669
|
+
if (shouldReconnect) {
|
|
35670
|
+
await this.disconnect();
|
|
35671
|
+
}
|
|
35672
|
+
// Clearing the adapter will result in a new one being opened in connect
|
|
35673
|
+
this.dbAdapter = null;
|
|
35674
|
+
if (shouldReconnect) {
|
|
35675
|
+
await this.connect(this.lastConnectOptions);
|
|
35676
|
+
}
|
|
35677
|
+
}
|
|
35678
|
+
if (trackedPort.db) {
|
|
35679
|
+
trackedPort.db.close();
|
|
35665
35680
|
}
|
|
35681
|
+
// Release proxy
|
|
35682
|
+
trackedPort.clientProvider[comlink__WEBPACK_IMPORTED_MODULE_2__.releaseProxy]();
|
|
35666
35683
|
}
|
|
35667
35684
|
triggerCrudUpload() {
|
|
35668
35685
|
this.waitForReady().then(() => this.syncStreamClient?.triggerCrudUpload());
|
|
@@ -35736,6 +35753,10 @@ class SharedSyncImplementation extends _powersync_common__WEBPACK_IMPORTED_MODUL
|
|
|
35736
35753
|
}
|
|
35737
35754
|
async openInternalDB() {
|
|
35738
35755
|
const lastClient = this.ports[this.ports.length - 1];
|
|
35756
|
+
if (!lastClient) {
|
|
35757
|
+
// Should not really happen in practice
|
|
35758
|
+
throw new Error(`Could not open DB connection since no client is connected.`);
|
|
35759
|
+
}
|
|
35739
35760
|
const workerPort = await lastClient.clientProvider.getDBWorkerPort();
|
|
35740
35761
|
const remote = comlink__WEBPACK_IMPORTED_MODULE_2__.wrap(workerPort);
|
|
35741
35762
|
const identifier = this.syncParams.dbParams.dbFilename;
|
|
@@ -43416,6 +43437,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
43416
43437
|
/* harmony export */ AbstractWebPowerSyncDatabaseOpenFactory: () => (/* reexport safe */ _db_adapters_AbstractWebPowerSyncDatabaseOpenFactory__WEBPACK_IMPORTED_MODULE_1__.AbstractWebPowerSyncDatabaseOpenFactory),
|
|
43417
43438
|
/* harmony export */ AbstractWebSQLOpenFactory: () => (/* reexport safe */ _db_adapters_AbstractWebSQLOpenFactory__WEBPACK_IMPORTED_MODULE_2__.AbstractWebSQLOpenFactory),
|
|
43418
43439
|
/* harmony export */ AsyncWASQLiteModuleFactory: () => (/* reexport safe */ _db_adapters_wa_sqlite_WASQLiteConnection__WEBPACK_IMPORTED_MODULE_3__.AsyncWASQLiteModuleFactory),
|
|
43440
|
+
/* harmony export */ DEFAULT_CACHE_SIZE_KB: () => (/* reexport safe */ _db_adapters_web_sql_flags__WEBPACK_IMPORTED_MODULE_7__.DEFAULT_CACHE_SIZE_KB),
|
|
43419
43441
|
/* harmony export */ DEFAULT_MODULE_FACTORIES: () => (/* reexport safe */ _db_adapters_wa_sqlite_WASQLiteConnection__WEBPACK_IMPORTED_MODULE_3__.DEFAULT_MODULE_FACTORIES),
|
|
43420
43442
|
/* harmony export */ DEFAULT_POWERSYNC_FLAGS: () => (/* reexport safe */ _db_PowerSyncDatabase__WEBPACK_IMPORTED_MODULE_8__.DEFAULT_POWERSYNC_FLAGS),
|
|
43421
43443
|
/* harmony export */ DEFAULT_WEB_SQL_FLAGS: () => (/* reexport safe */ _db_adapters_web_sql_flags__WEBPACK_IMPORTED_MODULE_7__.DEFAULT_WEB_SQL_FLAGS),
|