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 +1 -1
- package/dist/dexie.d.ts +4 -2
- package/dist/dexie.js +262 -245
- package/dist/dexie.js.map +1 -1
- package/dist/dexie.min.js +1 -1
- package/dist/dexie.min.js.map +1 -1
- package/dist/dexie.mjs +262 -245
- package/dist/dexie.mjs.map +1 -1
- package/dist/modern/dexie.min.mjs +1 -1
- package/dist/modern/dexie.min.mjs.map +1 -1
- package/dist/modern/dexie.mjs +252 -236
- package/dist/modern/dexie.mjs.map +1 -1
- package/package.json +6 -2
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Dexie.js
|
|
2
2
|
========
|
|
3
3
|
|
|
4
|
-
[![NPM Version][npm-image]][npm-url]
|
|
4
|
+
[![NPM Version][npm-image]][npm-url] 
|
|
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.
|
|
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(
|
|
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.
|
|
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.
|
|
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.
|
|
3882
|
-
|
|
3883
|
-
|
|
3884
|
-
|
|
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 (
|
|
4524
|
-
|
|
4525
|
-
|
|
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
|
-
|
|
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);
|