@powersync/web 1.10.0 → 1.10.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.
@@ -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 comlink__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! comlink */ "../../node_modules/comlink/dist/esm/comlink.mjs");
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
- ? comlink__WEBPACK_IMPORTED_MODULE_5__.wrap(this.options.workerPort)
365
+ ? comlink__WEBPACK_IMPORTED_MODULE_6__.wrap(this.options.workerPort)
364
366
  : typeof optionsDbWorker === 'function'
365
- ? comlink__WEBPACK_IMPORTED_MODULE_5__.wrap((0,_worker_db_open_worker_database__WEBPACK_IMPORTED_MODULE_3__.resolveWorkerDatabasePortFactory)(() => optionsDbWorker({
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(comlink__WEBPACK_IMPORTED_MODULE_5__.proxy((event) => {
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 navigator.locks.request(`db-lock-${this.options.dbFilename}`, callback);
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 navigator.locks.request(identifier, { signal: lockOptions.signal }, lockOptions.callback);
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 comlink__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! comlink */ "../../node_modules/comlink/dist/esm/comlink.mjs");
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 navigator.locks.request('shared-sync-connect', async () => {
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 navigator.locks.request('shared-sync-connect', async () => {
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: comlink__WEBPACK_IMPORTED_MODULE_7__.wrap(port)
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[comlink__WEBPACK_IMPORTED_MODULE_7__.releaseProxy]();
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