@powersync/web 1.10.0 → 1.10.2
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/{d96c8ebf66d665ac9ff6.wasm → 5fe5ed837a91c836c24f.wasm} +0 -0
- package/dist/index.umd.js +74 -45
- package/dist/index.umd.js.map +1 -1
- package/dist/worker/SharedSyncImplementation.umd.js +38 -11
- package/dist/worker/SharedSyncImplementation.umd.js.map +1 -1
- package/dist/worker/WASQLiteDB.umd.js +29 -7
- package/dist/worker/WASQLiteDB.umd.js.map +1 -1
- package/dist/worker/node_modules_journeyapps_wa-sqlite_dist_wa-sqlite-async_mjs.umd.js +40 -40
- package/dist/worker/node_modules_journeyapps_wa-sqlite_dist_wa-sqlite-async_mjs.umd.js.map +1 -1
- package/lib/package.json +7 -7
- package/lib/src/db/PowerSyncDatabase.js +2 -1
- package/lib/src/db/adapters/wa-sqlite/WASQLiteDBAdapter.js +2 -1
- package/lib/src/db/sync/WebStreamingSyncImplementation.js +2 -1
- package/lib/src/shared/navigator.d.ts +1 -0
- package/lib/src/shared/navigator.js +6 -0
- package/lib/src/worker/db/WASQLiteDB.worker.js +2 -1
- package/lib/src/worker/sync/SharedSyncImplementation.js +3 -2
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -7
|
@@ -296,12 +296,14 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
296
296
|
/* harmony export */ WASQLiteDBAdapter: () => (/* binding */ WASQLiteDBAdapter)
|
|
297
297
|
/* harmony export */ });
|
|
298
298
|
/* harmony import */ var _powersync_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @powersync/common */ "../common/dist/bundle.mjs");
|
|
299
|
-
/* harmony import */ var
|
|
299
|
+
/* harmony import */ var comlink__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! comlink */ "../../node_modules/comlink/dist/esm/comlink.mjs");
|
|
300
300
|
/* harmony import */ var js_logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! js-logger */ "../../node_modules/js-logger/src/logger.js");
|
|
301
301
|
/* harmony import */ var js_logger__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(js_logger__WEBPACK_IMPORTED_MODULE_1__);
|
|
302
302
|
/* harmony import */ var _shared_open_db__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../shared/open-db */ "./lib/src/shared/open-db.js");
|
|
303
303
|
/* harmony import */ var _worker_db_open_worker_database__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../worker/db/open-worker-database */ "./lib/src/worker/db/open-worker-database.js");
|
|
304
304
|
/* harmony import */ var _web_sql_flags__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../web-sql-flags */ "./lib/src/db/adapters/web-sql-flags.js");
|
|
305
|
+
/* harmony import */ var _shared_navigator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../shared/navigator */ "./lib/src/shared/navigator.js");
|
|
306
|
+
|
|
305
307
|
|
|
306
308
|
|
|
307
309
|
|
|
@@ -360,15 +362,15 @@ class WASQLiteDBAdapter extends _powersync_common__WEBPACK_IMPORTED_MODULE_0__.B
|
|
|
360
362
|
if (useWebWorker) {
|
|
361
363
|
const optionsDbWorker = this.options.worker;
|
|
362
364
|
const dbOpener = this.options.workerPort
|
|
363
|
-
?
|
|
365
|
+
? comlink__WEBPACK_IMPORTED_MODULE_6__.wrap(this.options.workerPort)
|
|
364
366
|
: typeof optionsDbWorker === 'function'
|
|
365
|
-
?
|
|
367
|
+
? comlink__WEBPACK_IMPORTED_MODULE_6__.wrap((0,_worker_db_open_worker_database__WEBPACK_IMPORTED_MODULE_3__.resolveWorkerDatabasePortFactory)(() => optionsDbWorker({
|
|
366
368
|
...this.options,
|
|
367
369
|
flags: this.flags
|
|
368
370
|
})))
|
|
369
371
|
: (0,_worker_db_open_worker_database__WEBPACK_IMPORTED_MODULE_3__.getWorkerDatabaseOpener)(this.options.dbFilename, enableMultiTabs, optionsDbWorker);
|
|
370
372
|
this.methods = await dbOpener(this.options.dbFilename);
|
|
371
|
-
this.methods.registerOnTableChange(
|
|
373
|
+
this.methods.registerOnTableChange(comlink__WEBPACK_IMPORTED_MODULE_6__.proxy((event) => {
|
|
372
374
|
this.iterateListeners((cb) => cb.tablesUpdated?.(event));
|
|
373
375
|
}));
|
|
374
376
|
return;
|
|
@@ -438,7 +440,7 @@ class WASQLiteDBAdapter extends _powersync_common__WEBPACK_IMPORTED_MODULE_0__.B
|
|
|
438
440
|
return this.acquireLock(async () => fn(this.generateDBHelpers({ execute: this._execute })));
|
|
439
441
|
}
|
|
440
442
|
acquireLock(callback) {
|
|
441
|
-
return
|
|
443
|
+
return (0,_shared_navigator__WEBPACK_IMPORTED_MODULE_5__.getNavigatorLocks)().request(`db-lock-${this.options.dbFilename}`, callback);
|
|
442
444
|
}
|
|
443
445
|
async readTransaction(fn, options) {
|
|
444
446
|
return this.readLock(this.wrapTransaction(fn));
|
|
@@ -644,6 +646,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
644
646
|
/* harmony export */ WebStreamingSyncImplementation: () => (/* binding */ WebStreamingSyncImplementation)
|
|
645
647
|
/* harmony export */ });
|
|
646
648
|
/* harmony import */ var _powersync_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @powersync/common */ "../common/dist/bundle.mjs");
|
|
649
|
+
/* harmony import */ var _shared_navigator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/navigator */ "./lib/src/shared/navigator.js");
|
|
650
|
+
|
|
647
651
|
|
|
648
652
|
class WebStreamingSyncImplementation extends _powersync_common__WEBPACK_IMPORTED_MODULE_0__.AbstractStreamingSyncImplementation {
|
|
649
653
|
constructor(options) {
|
|
@@ -656,7 +660,7 @@ class WebStreamingSyncImplementation extends _powersync_common__WEBPACK_IMPORTED
|
|
|
656
660
|
obtainLock(lockOptions) {
|
|
657
661
|
const identifier = `streaming-sync-${lockOptions.type}-${this.webOptions.identifier}`;
|
|
658
662
|
lockOptions.type == _powersync_common__WEBPACK_IMPORTED_MODULE_0__.LockType.SYNC && console.debug('requesting lock for ', identifier);
|
|
659
|
-
return
|
|
663
|
+
return (0,_shared_navigator__WEBPACK_IMPORTED_MODULE_1__.getNavigatorLocks)().request(identifier, { signal: lockOptions.signal }, lockOptions.callback);
|
|
660
664
|
}
|
|
661
665
|
}
|
|
662
666
|
|
|
@@ -740,6 +744,27 @@ function getOsInfo(nav) {
|
|
|
740
744
|
}
|
|
741
745
|
|
|
742
746
|
|
|
747
|
+
/***/ }),
|
|
748
|
+
|
|
749
|
+
/***/ "./lib/src/shared/navigator.js":
|
|
750
|
+
/*!*************************************!*\
|
|
751
|
+
!*** ./lib/src/shared/navigator.js ***!
|
|
752
|
+
\*************************************/
|
|
753
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
754
|
+
|
|
755
|
+
"use strict";
|
|
756
|
+
__webpack_require__.r(__webpack_exports__);
|
|
757
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
758
|
+
/* harmony export */ getNavigatorLocks: () => (/* binding */ getNavigatorLocks)
|
|
759
|
+
/* harmony export */ });
|
|
760
|
+
const getNavigatorLocks = () => {
|
|
761
|
+
if ('locks' in navigator && navigator.locks) {
|
|
762
|
+
return navigator.locks;
|
|
763
|
+
}
|
|
764
|
+
throw new Error('Navigator locks are not available in an insecure context. Use a secure context such as HTTPS or http://localhost.');
|
|
765
|
+
};
|
|
766
|
+
|
|
767
|
+
|
|
743
768
|
/***/ }),
|
|
744
769
|
|
|
745
770
|
/***/ "./lib/src/shared/open-db.js":
|
|
@@ -1156,13 +1181,15 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1156
1181
|
/* harmony export */ });
|
|
1157
1182
|
/* harmony import */ var _powersync_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @powersync/common */ "../common/dist/bundle.mjs");
|
|
1158
1183
|
/* harmony import */ var async_mutex__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! async-mutex */ "../../node_modules/async-mutex/index.mjs");
|
|
1159
|
-
/* harmony import */ var
|
|
1184
|
+
/* harmony import */ var comlink__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! comlink */ "../../node_modules/comlink/dist/esm/comlink.mjs");
|
|
1160
1185
|
/* harmony import */ var js_logger__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! js-logger */ "../../node_modules/js-logger/src/logger.js");
|
|
1161
1186
|
/* harmony import */ var js_logger__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(js_logger__WEBPACK_IMPORTED_MODULE_2__);
|
|
1162
1187
|
/* harmony import */ var _db_sync_WebRemote__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../db/sync/WebRemote */ "./lib/src/db/sync/WebRemote.js");
|
|
1163
1188
|
/* harmony import */ var _db_sync_WebStreamingSyncImplementation__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../db/sync/WebStreamingSyncImplementation */ "./lib/src/db/sync/WebStreamingSyncImplementation.js");
|
|
1164
1189
|
/* harmony import */ var _db_adapters_wa_sqlite_WASQLiteDBAdapter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../db/adapters/wa-sqlite/WASQLiteDBAdapter */ "./lib/src/db/adapters/wa-sqlite/WASQLiteDBAdapter.js");
|
|
1165
1190
|
/* harmony import */ var _BroadcastLogger__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./BroadcastLogger */ "./lib/src/worker/sync/BroadcastLogger.js");
|
|
1191
|
+
/* harmony import */ var _shared_navigator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../shared/navigator */ "./lib/src/shared/navigator.js");
|
|
1192
|
+
|
|
1166
1193
|
|
|
1167
1194
|
|
|
1168
1195
|
|
|
@@ -1266,7 +1293,7 @@ class SharedSyncImplementation extends _powersync_common__WEBPACK_IMPORTED_MODUL
|
|
|
1266
1293
|
async connect(options) {
|
|
1267
1294
|
await this.waitForReady();
|
|
1268
1295
|
// This effectively queues connect and disconnect calls. Ensuring multiple tabs' requests are synchronized
|
|
1269
|
-
return
|
|
1296
|
+
return (0,_shared_navigator__WEBPACK_IMPORTED_MODULE_7__.getNavigatorLocks)().request('shared-sync-connect', async () => {
|
|
1270
1297
|
this.syncStreamClient = this.generateStreamingImplementation();
|
|
1271
1298
|
this.syncStreamClient.registerListener({
|
|
1272
1299
|
statusChanged: (status) => {
|
|
@@ -1279,7 +1306,7 @@ class SharedSyncImplementation extends _powersync_common__WEBPACK_IMPORTED_MODUL
|
|
|
1279
1306
|
async disconnect() {
|
|
1280
1307
|
await this.waitForReady();
|
|
1281
1308
|
// This effectively queues connect and disconnect calls. Ensuring multiple tabs' requests are synchronized
|
|
1282
|
-
return
|
|
1309
|
+
return (0,_shared_navigator__WEBPACK_IMPORTED_MODULE_7__.getNavigatorLocks)().request('shared-sync-connect', async () => {
|
|
1283
1310
|
await this.syncStreamClient?.disconnect();
|
|
1284
1311
|
await this.syncStreamClient?.dispose();
|
|
1285
1312
|
this.syncStreamClient = null;
|
|
@@ -1291,7 +1318,7 @@ class SharedSyncImplementation extends _powersync_common__WEBPACK_IMPORTED_MODUL
|
|
|
1291
1318
|
addPort(port) {
|
|
1292
1319
|
const portProvider = {
|
|
1293
1320
|
port,
|
|
1294
|
-
clientProvider:
|
|
1321
|
+
clientProvider: comlink__WEBPACK_IMPORTED_MODULE_8__.wrap(port)
|
|
1295
1322
|
};
|
|
1296
1323
|
this.ports.push(portProvider);
|
|
1297
1324
|
// Give the newly connected client the latest status
|
|
@@ -1312,7 +1339,7 @@ class SharedSyncImplementation extends _powersync_common__WEBPACK_IMPORTED_MODUL
|
|
|
1312
1339
|
}
|
|
1313
1340
|
const trackedPort = this.ports[index];
|
|
1314
1341
|
// Release proxy
|
|
1315
|
-
trackedPort.clientProvider[
|
|
1342
|
+
trackedPort.clientProvider[comlink__WEBPACK_IMPORTED_MODULE_8__.releaseProxy]();
|
|
1316
1343
|
this.ports.splice(index, 1);
|
|
1317
1344
|
/**
|
|
1318
1345
|
* The port might currently be in use. Any active functions might
|