dexie 4.0.1-beta.4 → 4.0.1-beta.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.
package/dist/dexie.d.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * By David Fahlander, david.fahlander@gmail.com
6
6
  *
7
- * Version 4.0.1-beta.4, Sat Dec 02 2023
7
+ * Version 4.0.1-beta.5, Mon Dec 11 2023
8
8
  *
9
9
  * https://dexie.org
10
10
  *
package/dist/dexie.js CHANGED
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * By David Fahlander, david.fahlander@gmail.com
6
6
  *
7
- * Version 4.0.1-beta.4, Sat Dec 02 2023
7
+ * Version 4.0.1-beta.5, Mon Dec 11 2023
8
8
  *
9
9
  * https://dexie.org
10
10
  *
@@ -1141,7 +1141,7 @@
1141
1141
  function zoneEnterEcho(targetZone) {
1142
1142
  ++totalEchoes;
1143
1143
  if (!task.echoes || --task.echoes === 0) {
1144
- task.echoes = task.id = 0;
1144
+ task.echoes = task.awaits = task.id = 0;
1145
1145
  }
1146
1146
  zoneStack.push(PSD);
1147
1147
  switchToZone(targetZone, true);
@@ -1225,6 +1225,19 @@
1225
1225
  return origThen.call(this, nativeAwaitCompatibleWrap(onResolved, zone), nativeAwaitCompatibleWrap(onRejected, zone));
1226
1226
  };
1227
1227
  }
1228
+ function execInGlobalContext(cb) {
1229
+ if (Promise === NativePromise && task.echoes === 0) {
1230
+ if (zoneEchoes === 0) {
1231
+ cb();
1232
+ }
1233
+ else {
1234
+ enqueueNativeMicroTask(cb);
1235
+ }
1236
+ }
1237
+ else {
1238
+ setTimeout(cb, 0);
1239
+ }
1240
+ }
1228
1241
  var rejection = DexiePromise.reject;
1229
1242
 
1230
1243
  function tempTransaction(db, mode, storeNames, fn) {
@@ -1269,7 +1282,7 @@
1269
1282
  }
1270
1283
  }
1271
1284
 
1272
- var DEXIE_VERSION = '4.0.1-beta.4';
1285
+ var DEXIE_VERSION = '4.0.1-beta.5';
1273
1286
  var maxString = String.fromCharCode(65535);
1274
1287
  var minKey = -Infinity;
1275
1288
  var INVALID_KEY_ARGUMENT = "Invalid key provided. Keys must be of type string, number, Date or Array<string | number | Date>.";
@@ -5538,15 +5551,7 @@
5538
5551
  if (scopeFuncIsAsync) {
5539
5552
  rv = rv.finally(decrementExpectedAwaits);
5540
5553
  }
5541
- return Promise.resolve(rv).finally(function () {
5542
- if (PSD.subscr === ctx.subscr) {
5543
- console.warn("Dexie liveQuery()'s querier callback did'nt await all of its spawned promises. Querier source: ".concat(querier));
5544
- return new NativePromise(function (resolve) { return setTimeout(resolve, 0); });
5545
- }
5546
- else if (Promise.PSD) {
5547
- return new NativePromise(function (resolve) { return setTimeout(resolve, 0); });
5548
- }
5549
- });
5554
+ return rv;
5550
5555
  }
5551
5556
  finally {
5552
5557
  wasRootExec && endMicroTickScope();
@@ -5572,6 +5577,7 @@
5572
5577
  };
5573
5578
  observer.start && observer.start(subscription);
5574
5579
  var startedListening = false;
5580
+ var doQuery = function () { return execInGlobalContext(_doQuery); };
5575
5581
  function shouldNotify() {
5576
5582
  return obsSetsOverlap(currentObs, accumMuts);
5577
5583
  }
@@ -5612,23 +5618,20 @@
5612
5618
  globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, mutationListener);
5613
5619
  startedListening = true;
5614
5620
  }
5615
- observer.next && observer.next(result);
5621
+ execInGlobalContext(function () { return !closed && observer.next && observer.next(result); });
5616
5622
  }, function (err) {
5617
5623
  hasValue = false;
5618
5624
  if (!['DatabaseClosedError', 'AbortError'].includes(err === null || err === void 0 ? void 0 : err.name)) {
5619
- if (closed)
5620
- return;
5621
- observer.error && observer.error(err);
5625
+ if (!closed)
5626
+ execInGlobalContext(function () {
5627
+ if (closed)
5628
+ return;
5629
+ observer.error && observer.error(err);
5630
+ });
5622
5631
  }
5623
5632
  });
5624
5633
  };
5625
- var doQuery = function () {
5626
- if (PSD.global && !Promise.PSD)
5627
- _doQuery();
5628
- else
5629
- setTimeout(_doQuery, 0);
5630
- };
5631
- doQuery();
5634
+ setTimeout(doQuery, 0);
5632
5635
  return subscription;
5633
5636
  });
5634
5637
  observable.hasValue = function () { return hasValue; };