dexie 4.0.1-alpha.22 → 4.0.1-alpha.23

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/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  Dexie.js
2
2
  ========
3
3
 
4
- [![NPM Version][npm-image]][npm-url] [![Build Status](https://travis-ci.com/dexie/Dexie.js.svg?branch=master)](https://travis-ci.com/dexie/Dexie.js)[![Tested with Browserstack](https://dexie.org/assets/images/tested-with-browserstack2.png)](https://www.browserstack.com)
4
+ [![NPM Version][npm-image]][npm-url] ![Build Status](https://github.com/dexie/Dexie.js/actions/workflows/main.yml/badge.svg)
5
5
 
6
6
  Dexie.js is a wrapper library for indexedDB - the standard database in the browser. https://dexie.org
7
7
 
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-alpha.22, Wed Jun 14 2023
7
+ * Version 4.0.1-alpha.23, Tue Jul 04 2023
8
8
  *
9
9
  * https://dexie.org
10
10
  *
@@ -801,7 +801,9 @@ export interface Dexie {
801
801
  transaction<U>(mode: TransactionMode, table: string | Table, table2: string | Table, table3: string | Table, scope: (trans: TXWithTables<this>) => PromiseLike<U> | U): PromiseExtended<U>;
802
802
  transaction<U>(mode: TransactionMode, table: string | Table, table2: string | Table, table3: string | Table, table4: string | Table, scope: (trans: TXWithTables<this>) => PromiseLike<U> | U): PromiseExtended<U>;
803
803
  transaction<U>(mode: TransactionMode, table: string | Table, table2: string | Table, table3: string | Table, table5: string | Table, scope: (trans: TXWithTables<this>) => PromiseLike<U> | U): PromiseExtended<U>;
804
- close(): void;
804
+ close(closeOptions?: {
805
+ disableAutoOpen: boolean;
806
+ }): void;
805
807
  delete(): PromiseExtended<void>;
806
808
  isOpen(): boolean;
807
809
  hasBeenClosed(): boolean;
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-alpha.22, Wed Jun 14 2023
7
+ * Version 4.0.1-alpha.23, Tue Jul 04 2023
8
8
  *
9
9
  * https://dexie.org
10
10
  *
@@ -1284,7 +1284,7 @@
1284
1284
  }
1285
1285
  }
1286
1286
 
1287
- var DEXIE_VERSION = '4.0.1-alpha.22';
1287
+ var DEXIE_VERSION = '4.0.1-alpha.23';
1288
1288
  var maxString = String.fromCharCode(65535);
1289
1289
  var minKey = -Infinity;
1290
1290
  var INVALID_KEY_ARGUMENT = "Invalid key provided. Keys must be of type string, number, Date or Array<string | number | Date>.";
@@ -3787,6 +3787,237 @@
3787
3787
  }).finally(function () { return clearInterval(intervalId); });
3788
3788
  }
3789
3789
 
3790
+ var _a;
3791
+ function isEmptyRange(node) {
3792
+ return !("from" in node);
3793
+ }
3794
+ var RangeSet = function (fromOrTree, to) {
3795
+ if (this) {
3796
+ extend(this, arguments.length ? { d: 1, from: fromOrTree, to: arguments.length > 1 ? to : fromOrTree } : { d: 0 });
3797
+ }
3798
+ else {
3799
+ var rv = new RangeSet();
3800
+ if (fromOrTree && ("d" in fromOrTree)) {
3801
+ extend(rv, fromOrTree);
3802
+ }
3803
+ return rv;
3804
+ }
3805
+ };
3806
+ props(RangeSet.prototype, (_a = {
3807
+ add: function (rangeSet) {
3808
+ mergeRanges(this, rangeSet);
3809
+ return this;
3810
+ },
3811
+ addKey: function (key) {
3812
+ addRange(this, key, key);
3813
+ return this;
3814
+ },
3815
+ addKeys: function (keys) {
3816
+ var _this = this;
3817
+ keys.forEach(function (key) { return addRange(_this, key, key); });
3818
+ return this;
3819
+ }
3820
+ },
3821
+ _a[iteratorSymbol] = function () {
3822
+ return getRangeSetIterator(this);
3823
+ },
3824
+ _a));
3825
+ function addRange(target, from, to) {
3826
+ var diff = cmp(from, to);
3827
+ if (isNaN(diff))
3828
+ return;
3829
+ if (diff > 0)
3830
+ throw RangeError();
3831
+ if (isEmptyRange(target))
3832
+ return extend(target, { from: from, to: to, d: 1 });
3833
+ var left = target.l;
3834
+ var right = target.r;
3835
+ if (cmp(to, target.from) < 0) {
3836
+ left
3837
+ ? addRange(left, from, to)
3838
+ : (target.l = { from: from, to: to, d: 1, l: null, r: null });
3839
+ return rebalance(target);
3840
+ }
3841
+ if (cmp(from, target.to) > 0) {
3842
+ right
3843
+ ? addRange(right, from, to)
3844
+ : (target.r = { from: from, to: to, d: 1, l: null, r: null });
3845
+ return rebalance(target);
3846
+ }
3847
+ if (cmp(from, target.from) < 0) {
3848
+ target.from = from;
3849
+ target.l = null;
3850
+ target.d = right ? right.d + 1 : 1;
3851
+ }
3852
+ if (cmp(to, target.to) > 0) {
3853
+ target.to = to;
3854
+ target.r = null;
3855
+ target.d = target.l ? target.l.d + 1 : 1;
3856
+ }
3857
+ var rightWasCutOff = !target.r;
3858
+ if (left && !target.l) {
3859
+ mergeRanges(target, left);
3860
+ }
3861
+ if (right && rightWasCutOff) {
3862
+ mergeRanges(target, right);
3863
+ }
3864
+ }
3865
+ function mergeRanges(target, newSet) {
3866
+ function _addRangeSet(target, _a) {
3867
+ var from = _a.from, to = _a.to, l = _a.l, r = _a.r;
3868
+ addRange(target, from, to);
3869
+ if (l)
3870
+ _addRangeSet(target, l);
3871
+ if (r)
3872
+ _addRangeSet(target, r);
3873
+ }
3874
+ if (!isEmptyRange(newSet))
3875
+ _addRangeSet(target, newSet);
3876
+ }
3877
+ function rangesOverlap(rangeSet1, rangeSet2) {
3878
+ var i1 = getRangeSetIterator(rangeSet2);
3879
+ var nextResult1 = i1.next();
3880
+ if (nextResult1.done)
3881
+ return false;
3882
+ var a = nextResult1.value;
3883
+ var i2 = getRangeSetIterator(rangeSet1);
3884
+ var nextResult2 = i2.next(a.from);
3885
+ var b = nextResult2.value;
3886
+ while (!nextResult1.done && !nextResult2.done) {
3887
+ if (cmp(b.from, a.to) <= 0 && cmp(b.to, a.from) >= 0)
3888
+ return true;
3889
+ cmp(a.from, b.from) < 0
3890
+ ? (a = (nextResult1 = i1.next(b.from)).value)
3891
+ : (b = (nextResult2 = i2.next(a.from)).value);
3892
+ }
3893
+ return false;
3894
+ }
3895
+ function getRangeSetIterator(node) {
3896
+ var state = isEmptyRange(node) ? null : { s: 0, n: node };
3897
+ return {
3898
+ next: function (key) {
3899
+ var keyProvided = arguments.length > 0;
3900
+ while (state) {
3901
+ switch (state.s) {
3902
+ case 0:
3903
+ state.s = 1;
3904
+ if (keyProvided) {
3905
+ while (state.n.l && cmp(key, state.n.from) < 0)
3906
+ state = { up: state, n: state.n.l, s: 1 };
3907
+ }
3908
+ else {
3909
+ while (state.n.l)
3910
+ state = { up: state, n: state.n.l, s: 1 };
3911
+ }
3912
+ case 1:
3913
+ state.s = 2;
3914
+ if (!keyProvided || cmp(key, state.n.to) <= 0)
3915
+ return { value: state.n, done: false };
3916
+ case 2:
3917
+ if (state.n.r) {
3918
+ state.s = 3;
3919
+ state = { up: state, n: state.n.r, s: 0 };
3920
+ continue;
3921
+ }
3922
+ case 3:
3923
+ state = state.up;
3924
+ }
3925
+ }
3926
+ return { done: true };
3927
+ },
3928
+ };
3929
+ }
3930
+ function rebalance(target) {
3931
+ var _a, _b;
3932
+ var diff = (((_a = target.r) === null || _a === void 0 ? void 0 : _a.d) || 0) - (((_b = target.l) === null || _b === void 0 ? void 0 : _b.d) || 0);
3933
+ var r = diff > 1 ? "r" : diff < -1 ? "l" : "";
3934
+ if (r) {
3935
+ var l = r === "r" ? "l" : "r";
3936
+ var rootClone = __assign({}, target);
3937
+ var oldRootRight = target[r];
3938
+ target.from = oldRootRight.from;
3939
+ target.to = oldRootRight.to;
3940
+ target[r] = oldRootRight[r];
3941
+ rootClone[r] = oldRootRight[l];
3942
+ target[l] = rootClone;
3943
+ rootClone.d = computeDepth(rootClone);
3944
+ }
3945
+ target.d = computeDepth(target);
3946
+ }
3947
+ function computeDepth(_a) {
3948
+ var r = _a.r, l = _a.l;
3949
+ return (r ? (l ? Math.max(r.d, l.d) : r.d) : l ? l.d : 0) + 1;
3950
+ }
3951
+
3952
+ function extendObservabilitySet(target, newSet) {
3953
+ keys(newSet).forEach(function (part) {
3954
+ if (target[part])
3955
+ mergeRanges(target[part], newSet[part]);
3956
+ else
3957
+ target[part] = cloneSimpleObjectTree(newSet[part]);
3958
+ });
3959
+ return target;
3960
+ }
3961
+
3962
+ function obsSetsOverlap(os1, os2) {
3963
+ return Object.keys(os1).some(function (key) { return os2[key] && rangesOverlap(os2[key], os1[key]); });
3964
+ }
3965
+
3966
+ var cache = {};
3967
+
3968
+ var unsignaledParts = {};
3969
+ var isTaskEnqueued = false;
3970
+ function signalSubscribersLazily(part) {
3971
+ extendObservabilitySet(unsignaledParts, part);
3972
+ if (!isTaskEnqueued) {
3973
+ isTaskEnqueued = true;
3974
+ queueMicrotask(function () {
3975
+ isTaskEnqueued = false;
3976
+ var parts = unsignaledParts;
3977
+ unsignaledParts = {};
3978
+ signalSubscribersNow(parts);
3979
+ });
3980
+ }
3981
+ }
3982
+ function signalSubscribersNow(updatedParts, deleteAffectedCacheEntries) {
3983
+ if (deleteAffectedCacheEntries === void 0) { deleteAffectedCacheEntries = false; }
3984
+ var queriesToSignal = new Set();
3985
+ for (var key in updatedParts) {
3986
+ var parts = /^idb\:\/\/(.*)\/(.*)\//.exec(key);
3987
+ if (parts) {
3988
+ var dbName = parts[1], tableName = parts[2];
3989
+ var tblCache = cache["idb://".concat(dbName, "/").concat(tableName)];
3990
+ if (tblCache)
3991
+ signalTableSubscribersNow(tblCache, updatedParts, queriesToSignal, deleteAffectedCacheEntries);
3992
+ }
3993
+ }
3994
+ queriesToSignal.forEach(function (requery) { return requery(); });
3995
+ }
3996
+ function signalTableSubscribersNow(tblCache, updatedParts, outQueriesToSignal, deleteAffectedCacheEntries) {
3997
+ var updatedEntryLists = deleteAffectedCacheEntries && [];
3998
+ for (var _i = 0, _a = Object.entries(tblCache.queries.query); _i < _a.length; _i++) {
3999
+ var _b = _a[_i], indexName = _b[0], entries = _b[1];
4000
+ var filteredEntries = deleteAffectedCacheEntries && [];
4001
+ for (var _c = 0, entries_1 = entries; _c < entries_1.length; _c++) {
4002
+ var entry = entries_1[_c];
4003
+ if (entry.obsSet && obsSetsOverlap(updatedParts, entry.obsSet)) {
4004
+ entry.subscribers.forEach(function (requery) { return outQueriesToSignal.add(requery); });
4005
+ }
4006
+ else if (deleteAffectedCacheEntries) {
4007
+ filteredEntries.push(entry);
4008
+ }
4009
+ }
4010
+ if (deleteAffectedCacheEntries)
4011
+ updatedEntryLists.push([indexName, filteredEntries]);
4012
+ }
4013
+ if (deleteAffectedCacheEntries) {
4014
+ for (var _d = 0, updatedEntryLists_1 = updatedEntryLists; _d < updatedEntryLists_1.length; _d++) {
4015
+ var _e = updatedEntryLists_1[_d], indexName = _e[0], filteredEntries = _e[1];
4016
+ tblCache.queries.query[indexName] = filteredEntries;
4017
+ }
4018
+ }
4019
+ }
4020
+
3790
4021
  function dexieOpen(db) {
3791
4022
  var state = db._state;
3792
4023
  var indexedDB = db._deps.indexedDB;
@@ -3878,10 +4109,10 @@
3878
4109
  }
3879
4110
  });
3880
4111
  }).finally(function () {
3881
- state.onReadyBeingFired = null;
3882
- state.isBeingOpened = false;
3883
- }).then(function () {
3884
- return db;
4112
+ if (state.openCanceller === openCanceller) {
4113
+ state.onReadyBeingFired = null;
4114
+ state.isBeingOpened = false;
4115
+ }
3885
4116
  }).catch(function (err) {
3886
4117
  state.dbOpenError = err;
3887
4118
  try {
@@ -3895,6 +4126,20 @@
3895
4126
  }).finally(function () {
3896
4127
  state.openComplete = true;
3897
4128
  resolveDbReady();
4129
+ }).then(function () {
4130
+ if (wasCreated) {
4131
+ var everything_1 = {};
4132
+ db.tables.forEach(function (table) {
4133
+ table.schema.indexes.forEach(function (idx) {
4134
+ if (idx.name)
4135
+ everything_1["idb://".concat(db.name, "/").concat(table.name, "/").concat(idx.name)] = new RangeSet(-Infinity, [[[]]]);
4136
+ });
4137
+ everything_1["idb://".concat(db.name, "/").concat(table.name, "/")] = everything_1["idb://".concat(db.name, "/").concat(table.name, "/:dels")] = new RangeSet(-Infinity, [[[]]]);
4138
+ });
4139
+ globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME).fire(everything_1);
4140
+ signalSubscribersNow(everything_1, true);
4141
+ }
4142
+ return db;
3898
4143
  });
3899
4144
  }
3900
4145
 
@@ -4317,168 +4562,6 @@
4317
4562
  },
4318
4563
  };
4319
4564
 
4320
- var _a;
4321
- function isEmptyRange(node) {
4322
- return !("from" in node);
4323
- }
4324
- var RangeSet = function (fromOrTree, to) {
4325
- if (this) {
4326
- extend(this, arguments.length ? { d: 1, from: fromOrTree, to: arguments.length > 1 ? to : fromOrTree } : { d: 0 });
4327
- }
4328
- else {
4329
- var rv = new RangeSet();
4330
- if (fromOrTree && ("d" in fromOrTree)) {
4331
- extend(rv, fromOrTree);
4332
- }
4333
- return rv;
4334
- }
4335
- };
4336
- props(RangeSet.prototype, (_a = {
4337
- add: function (rangeSet) {
4338
- mergeRanges(this, rangeSet);
4339
- return this;
4340
- },
4341
- addKey: function (key) {
4342
- addRange(this, key, key);
4343
- return this;
4344
- },
4345
- addKeys: function (keys) {
4346
- var _this = this;
4347
- keys.forEach(function (key) { return addRange(_this, key, key); });
4348
- return this;
4349
- }
4350
- },
4351
- _a[iteratorSymbol] = function () {
4352
- return getRangeSetIterator(this);
4353
- },
4354
- _a));
4355
- function addRange(target, from, to) {
4356
- var diff = cmp(from, to);
4357
- if (isNaN(diff))
4358
- return;
4359
- if (diff > 0)
4360
- throw RangeError();
4361
- if (isEmptyRange(target))
4362
- return extend(target, { from: from, to: to, d: 1 });
4363
- var left = target.l;
4364
- var right = target.r;
4365
- if (cmp(to, target.from) < 0) {
4366
- left
4367
- ? addRange(left, from, to)
4368
- : (target.l = { from: from, to: to, d: 1, l: null, r: null });
4369
- return rebalance(target);
4370
- }
4371
- if (cmp(from, target.to) > 0) {
4372
- right
4373
- ? addRange(right, from, to)
4374
- : (target.r = { from: from, to: to, d: 1, l: null, r: null });
4375
- return rebalance(target);
4376
- }
4377
- if (cmp(from, target.from) < 0) {
4378
- target.from = from;
4379
- target.l = null;
4380
- target.d = right ? right.d + 1 : 1;
4381
- }
4382
- if (cmp(to, target.to) > 0) {
4383
- target.to = to;
4384
- target.r = null;
4385
- target.d = target.l ? target.l.d + 1 : 1;
4386
- }
4387
- var rightWasCutOff = !target.r;
4388
- if (left && !target.l) {
4389
- mergeRanges(target, left);
4390
- }
4391
- if (right && rightWasCutOff) {
4392
- mergeRanges(target, right);
4393
- }
4394
- }
4395
- function mergeRanges(target, newSet) {
4396
- function _addRangeSet(target, _a) {
4397
- var from = _a.from, to = _a.to, l = _a.l, r = _a.r;
4398
- addRange(target, from, to);
4399
- if (l)
4400
- _addRangeSet(target, l);
4401
- if (r)
4402
- _addRangeSet(target, r);
4403
- }
4404
- if (!isEmptyRange(newSet))
4405
- _addRangeSet(target, newSet);
4406
- }
4407
- function rangesOverlap(rangeSet1, rangeSet2) {
4408
- var i1 = getRangeSetIterator(rangeSet2);
4409
- var nextResult1 = i1.next();
4410
- if (nextResult1.done)
4411
- return false;
4412
- var a = nextResult1.value;
4413
- var i2 = getRangeSetIterator(rangeSet1);
4414
- var nextResult2 = i2.next(a.from);
4415
- var b = nextResult2.value;
4416
- while (!nextResult1.done && !nextResult2.done) {
4417
- if (cmp(b.from, a.to) <= 0 && cmp(b.to, a.from) >= 0)
4418
- return true;
4419
- cmp(a.from, b.from) < 0
4420
- ? (a = (nextResult1 = i1.next(b.from)).value)
4421
- : (b = (nextResult2 = i2.next(a.from)).value);
4422
- }
4423
- return false;
4424
- }
4425
- function getRangeSetIterator(node) {
4426
- var state = isEmptyRange(node) ? null : { s: 0, n: node };
4427
- return {
4428
- next: function (key) {
4429
- var keyProvided = arguments.length > 0;
4430
- while (state) {
4431
- switch (state.s) {
4432
- case 0:
4433
- state.s = 1;
4434
- if (keyProvided) {
4435
- while (state.n.l && cmp(key, state.n.from) < 0)
4436
- state = { up: state, n: state.n.l, s: 1 };
4437
- }
4438
- else {
4439
- while (state.n.l)
4440
- state = { up: state, n: state.n.l, s: 1 };
4441
- }
4442
- case 1:
4443
- state.s = 2;
4444
- if (!keyProvided || cmp(key, state.n.to) <= 0)
4445
- return { value: state.n, done: false };
4446
- case 2:
4447
- if (state.n.r) {
4448
- state.s = 3;
4449
- state = { up: state, n: state.n.r, s: 0 };
4450
- continue;
4451
- }
4452
- case 3:
4453
- state = state.up;
4454
- }
4455
- }
4456
- return { done: true };
4457
- },
4458
- };
4459
- }
4460
- function rebalance(target) {
4461
- var _a, _b;
4462
- var diff = (((_a = target.r) === null || _a === void 0 ? void 0 : _a.d) || 0) - (((_b = target.l) === null || _b === void 0 ? void 0 : _b.d) || 0);
4463
- var r = diff > 1 ? "r" : diff < -1 ? "l" : "";
4464
- if (r) {
4465
- var l = r === "r" ? "l" : "r";
4466
- var rootClone = __assign({}, target);
4467
- var oldRootRight = target[r];
4468
- target.from = oldRootRight.from;
4469
- target.to = oldRootRight.to;
4470
- target[r] = oldRootRight[r];
4471
- rootClone[r] = oldRootRight[l];
4472
- target[l] = rootClone;
4473
- rootClone.d = computeDepth(rootClone);
4474
- }
4475
- target.d = computeDepth(target);
4476
- }
4477
- function computeDepth(_a) {
4478
- var r = _a.r, l = _a.l;
4479
- return (r ? (l ? Math.max(r.d, l.d) : r.d) : l ? l.d : 0) + 1;
4480
- }
4481
-
4482
4565
  function isCachableContext(ctx, table) {
4483
4566
  return (ctx.trans.mode === 'readonly' &&
4484
4567
  !!ctx.subscr &&
@@ -4502,16 +4585,6 @@
4502
4585
  }
4503
4586
  }
4504
4587
 
4505
- function extendObservabilitySet(target, newSet) {
4506
- keys(newSet).forEach(function (part) {
4507
- if (target[part])
4508
- mergeRanges(target[part], newSet[part]);
4509
- else
4510
- target[part] = cloneSimpleObjectTree(newSet[part]);
4511
- });
4512
- return target;
4513
- }
4514
-
4515
4588
  var observabilityMiddleware = {
4516
4589
  stack: "dbcore",
4517
4590
  level: 0,
@@ -4520,10 +4593,9 @@
4520
4593
  var dbName = core.schema.name;
4521
4594
  var FULL_RANGE = new RangeSet(core.MIN_KEY, core.MAX_KEY);
4522
4595
  return __assign(__assign({}, core), { transaction: function (stores, mode, options) {
4523
- if (!PSD.subscr)
4524
- return core.transaction(stores, mode, options);
4525
- if (mode !== 'readonly')
4526
- throw new exceptions.ReadOnly('write transaction not allowed within liveQueries');
4596
+ if (PSD.subscr && mode !== 'readonly') {
4597
+ throw new exceptions.ReadOnly("Readwrite transaction in liveQuery context. Querier source: ".concat(PSD.querier));
4598
+ }
4527
4599
  return core.transaction(stores, mode, options);
4528
4600
  }, table: function (tableName) {
4529
4601
  var table = core.table(tableName);
@@ -4785,8 +4857,6 @@
4785
4857
  return immutable ? Object.freeze(finalResult) : finalResult;
4786
4858
  }
4787
4859
 
4788
- var cache = {};
4789
-
4790
4860
  function areRangesEqual(r1, r2) {
4791
4861
  return (cmp(r1.lower, r2.lower) === 0 &&
4792
4862
  cmp(r1.upper, r2.upper) === 0 &&
@@ -4871,63 +4941,6 @@
4871
4941
  }
4872
4942
  }
4873
4943
 
4874
- function obsSetsOverlap(os1, os2) {
4875
- return Object.keys(os1).some(function (key) { return os2[key] && rangesOverlap(os2[key], os1[key]); });
4876
- }
4877
-
4878
- var unsignaledParts = {};
4879
- var isTaskEnqueued = false;
4880
- function signalSubscribersLazily(part) {
4881
- extendObservabilitySet(unsignaledParts, part);
4882
- if (!isTaskEnqueued) {
4883
- isTaskEnqueued = true;
4884
- queueMicrotask(function () {
4885
- isTaskEnqueued = false;
4886
- var parts = unsignaledParts;
4887
- unsignaledParts = {};
4888
- signalSubscribersNow(parts);
4889
- });
4890
- }
4891
- }
4892
- function signalSubscribersNow(updatedParts, deleteAffectedCacheEntries) {
4893
- if (deleteAffectedCacheEntries === void 0) { deleteAffectedCacheEntries = false; }
4894
- var queriesToSignal = new Set();
4895
- for (var key in updatedParts) {
4896
- var parts = /^idb\:\/\/(.*)\/(.*)\//.exec(key);
4897
- if (parts) {
4898
- var dbName = parts[1], tableName = parts[2];
4899
- var tblCache = cache["idb://".concat(dbName, "/").concat(tableName)];
4900
- if (tblCache)
4901
- signalTableSubscribersNow(tblCache, updatedParts, queriesToSignal, deleteAffectedCacheEntries);
4902
- }
4903
- }
4904
- queriesToSignal.forEach(function (requery) { return requery(); });
4905
- }
4906
- function signalTableSubscribersNow(tblCache, updatedParts, outQueriesToSignal, deleteAffectedCacheEntries) {
4907
- var updatedEntryLists = deleteAffectedCacheEntries && [];
4908
- for (var _i = 0, _a = Object.entries(tblCache.queries.query); _i < _a.length; _i++) {
4909
- var _b = _a[_i], indexName = _b[0], entries = _b[1];
4910
- var filteredEntries = deleteAffectedCacheEntries && [];
4911
- for (var _c = 0, entries_1 = entries; _c < entries_1.length; _c++) {
4912
- var entry = entries_1[_c];
4913
- if (entry.obsSet && obsSetsOverlap(updatedParts, entry.obsSet)) {
4914
- entry.subscribers.forEach(function (requery) { return outQueriesToSignal.add(requery); });
4915
- }
4916
- else if (deleteAffectedCacheEntries) {
4917
- filteredEntries.push(entry);
4918
- }
4919
- }
4920
- if (deleteAffectedCacheEntries)
4921
- updatedEntryLists.push([indexName, filteredEntries]);
4922
- }
4923
- if (deleteAffectedCacheEntries) {
4924
- for (var _d = 0, updatedEntryLists_1 = updatedEntryLists; _d < updatedEntryLists_1.length; _d++) {
4925
- var _e = updatedEntryLists_1[_d], indexName = _e[0], filteredEntries = _e[1];
4926
- tblCache.queries.query[indexName] = filteredEntries;
4927
- }
4928
- }
4929
- }
4930
-
4931
4944
  function subscribeToCacheEntry(cacheEntry, container, requery, signal) {
4932
4945
  cacheEntry.subscribers.add(requery);
4933
4946
  signal.addEventListener("abort", function () {
@@ -5194,7 +5207,8 @@
5194
5207
  console.warn("Another connection wants to upgrade database '".concat(_this.name, "'. Closing db now to resume the upgrade."));
5195
5208
  else
5196
5209
  console.warn("Another connection wants to delete database '".concat(_this.name, "'. Closing db now to resume the delete request."));
5197
- _this.close();
5210
+ _this.close({ disableAutoOpen: false });
5211
+ _this._state.openComplete = false;
5198
5212
  });
5199
5213
  this.on("blocked", function (ev) {
5200
5214
  if (!ev.newVersion || ev.newVersion < ev.oldVersion)
@@ -5296,10 +5310,12 @@
5296
5310
  state.cancelOpen = reject;
5297
5311
  });
5298
5312
  };
5299
- Dexie.prototype.close = function () {
5313
+ Dexie.prototype.close = function (_a) {
5314
+ var _b = _a === void 0 ? { disableAutoOpen: true } : _a, disableAutoOpen = _b.disableAutoOpen;
5300
5315
  this._close();
5301
5316
  var state = this._state;
5302
- this._options.autoOpen = false;
5317
+ if (disableAutoOpen)
5318
+ this._options.autoOpen = false;
5303
5319
  state.dbOpenError = new exceptions.DatabaseClosed();
5304
5320
  if (state.isBeingOpened)
5305
5321
  state.cancelOpen(state.dbOpenError);
@@ -5310,7 +5326,7 @@
5310
5326
  var state = this._state;
5311
5327
  return new DexiePromise(function (resolve, reject) {
5312
5328
  var doDelete = function () {
5313
- _this.close();
5329
+ _this.close({ disableAutoOpen: false });
5314
5330
  var req = _this._deps.indexedDB.deleteDatabase(_this.name);
5315
5331
  req.onsuccess = wrap(function () {
5316
5332
  _onDatabaseDeleted(_this._deps, _this.name);
@@ -5510,6 +5526,7 @@
5510
5526
  subscr: subscr,
5511
5527
  signal: abortController.signal,
5512
5528
  requery: doQuery,
5529
+ querier: querier,
5513
5530
  trans: null
5514
5531
  };
5515
5532
  var ret = execute(ctx);