indexeddbshim 19.0.4 → 19.0.5

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.
@@ -1,4 +1,4 @@
1
- /*! indexeddbshim - v19.0.4 - 9/17/2026 */
1
+ /*! indexeddbshim - v19.0.5 - 9/17/2026 */
2
2
 
3
3
  'use strict';
4
4
 
@@ -5182,6 +5182,10 @@ IDBTransaction.prototype.__executeRequests = function () {
5182
5182
  let q,
5183
5183
  i = -1;
5184
5184
 
5185
+ // On a standard driver, `keepAliveAndWait` issues a SQL query, which
5186
+ // is a macrotask. Otherwise it issues ten microtasks.
5187
+ const keepAliveAttempts = isStandardDriver ? 1 : 10;
5188
+
5185
5189
  /**
5186
5190
  * A continuation that must still be able to observe the
5187
5191
  * transaction as safe to extend (e.g., re-checking whether an
@@ -5217,9 +5221,9 @@ IDBTransaction.prototype.__executeRequests = function () {
5217
5221
  });
5218
5222
  } catch (err) {
5219
5223
  // The driver has already finalized the transaction (or otherwise
5220
- // rejected the call) -- nothing left to hold open, so fall back
5221
- // to a plain microtask hop for the continuation itself.
5222
- queueMicrotask(cb);
5224
+ // rejected the call) -- nothing left to hold open. We explicitly
5225
+ // abort the transaction here.
5226
+ me.__abortTransaction(/** @type {Error|DOMException} */err);
5223
5227
  }
5224
5228
  }
5225
5229
 
@@ -5421,9 +5425,11 @@ IDBTransaction.prototype.__executeRequests = function () {
5421
5425
  * consumer of that same handler (e.g. one that resolves a
5422
5426
  * promise from within `onsuccess` and only attaches `oncomplete`
5423
5427
  * afterward) ever gets a turn to run, so it can miss `complete`
5424
- * entirely. `readonly` requests don't hold a real SQL
5425
- * transaction open, though, so there's no file-lock/connection
5426
- * collision risk in waiting the same bounded amount here.
5428
+ * afterward) ever gets a turn to run, so it can miss `complete`
5429
+ * entirely. On a non-standard driver, `readonly` requests don't hold
5430
+ * a real SQL transaction open, so there's no file-lock/connection
5431
+ * collision risk. On a standard driver, the wait now issues real SQL
5432
+ * inside the read transaction, so this does carry a slight risk.
5427
5433
  * @param {number} attemptsLeft
5428
5434
  * @returns {void}
5429
5435
  */
@@ -5458,7 +5464,7 @@ IDBTransaction.prototype.__executeRequests = function () {
5458
5464
  }
5459
5465
  i++;
5460
5466
  if (i >= me.__requests.length) {
5461
- checkQueueEntry(10);
5467
+ checkQueueEntry(keepAliveAttempts);
5462
5468
  return;
5463
5469
  }
5464
5470
  runQueuedRequest();
@@ -5495,7 +5501,7 @@ IDBTransaction.prototype.__executeRequests = function () {
5495
5501
  }
5496
5502
  i++;
5497
5503
  if (i >= me.__requests.length) {
5498
- checkQueueEntry(10);
5504
+ checkQueueEntry(keepAliveAttempts);
5499
5505
  return;
5500
5506
  }
5501
5507
  keepAliveAndWait(() => {