dexie 4.0.7 → 4.0.8

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.mjs CHANGED
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * By David Fahlander, david.fahlander@gmail.com
6
6
  *
7
- * Version 4.0.7, Sun May 26 2024
7
+ * Version 4.0.8, Wed Jul 10 2024
8
8
  *
9
9
  * https://dexie.org
10
10
  *
@@ -1144,7 +1144,7 @@ function tempTransaction(db, mode, storeNames, fn) {
1144
1144
  }
1145
1145
  }
1146
1146
 
1147
- var DEXIE_VERSION = '4.0.7';
1147
+ var DEXIE_VERSION = '4.0.8';
1148
1148
  var maxString = String.fromCharCode(65535);
1149
1149
  var minKey = -Infinity;
1150
1150
  var INVALID_KEY_ARGUMENT = "Invalid key provided. Keys must be of type string, number, Date or Array<string | number | Date>.";
@@ -3793,6 +3793,10 @@ props(RangeSet.prototype, (_a = {
3793
3793
  var _this = this;
3794
3794
  keys.forEach(function (key) { return addRange(_this, key, key); });
3795
3795
  return this;
3796
+ },
3797
+ hasKey: function (key) {
3798
+ var node = getRangeSetIterator(this).next(key).value;
3799
+ return node && cmp(node.from, key) <= 0 && cmp(node.to, key) >= 0;
3796
3800
  }
3797
3801
  },
3798
3802
  _a[iteratorSymbol] = function () {
@@ -4854,19 +4858,23 @@ function applyOptimisticOps(result, req, ops, table, cacheEntry, immutable) {
4854
4858
  var extractLowLevelIndex = (index.lowLevelIndex || index).extractKey;
4855
4859
  var finalResult = ops.reduce(function (result, op) {
4856
4860
  var modifedResult = result;
4857
- var includedValues = op.type === 'add' || op.type === 'put'
4858
- ? op.values.filter(function (v) {
4859
- var key = extractIndex(v);
4860
- return multiEntry && isArray(key)
4861
+ var includedValues = [];
4862
+ if (op.type === 'add' || op.type === 'put') {
4863
+ var includedPKs = new RangeSet();
4864
+ for (var i = op.values.length - 1; i >= 0; --i) {
4865
+ var value = op.values[i];
4866
+ var pk = extractPrimKey(value);
4867
+ if (includedPKs.hasKey(pk))
4868
+ continue;
4869
+ var key = extractIndex(value);
4870
+ if (multiEntry && isArray(key)
4861
4871
  ? key.some(function (k) { return isWithinRange(k, queryRange); })
4862
- : isWithinRange(key, queryRange);
4863
- }).map(function (v) {
4864
- v = deepClone(v);
4865
- if (immutable)
4866
- Object.freeze(v);
4867
- return v;
4868
- })
4869
- : [];
4872
+ : isWithinRange(key, queryRange)) {
4873
+ includedPKs.addKey(pk);
4874
+ includedValues.push(value);
4875
+ }
4876
+ }
4877
+ }
4870
4878
  switch (op.type) {
4871
4879
  case 'add':
4872
4880
  modifedResult = result.concat(req.values
@@ -4876,20 +4884,16 @@ function applyOptimisticOps(result, req, ops, table, cacheEntry, immutable) {
4876
4884
  case 'put':
4877
4885
  var keySet_1 = new RangeSet().addKeys(op.values.map(function (v) { return extractPrimKey(v); }));
4878
4886
  modifedResult = result
4879
- .filter(function (item) {
4880
- var key = req.values ? extractPrimKey(item) : item;
4881
- return !rangesOverlap(new RangeSet(key), keySet_1);
4882
- })
4883
- .concat(req.values
4887
+ .filter(
4888
+ function (item) { return !keySet_1.hasKey(req.values ? extractPrimKey(item) : item); })
4889
+ .concat(
4890
+ req.values
4884
4891
  ? includedValues
4885
4892
  : includedValues.map(function (v) { return extractPrimKey(v); }));
4886
4893
  break;
4887
4894
  case 'delete':
4888
4895
  var keysToDelete_1 = new RangeSet().addKeys(op.keys);
4889
- modifedResult = result.filter(function (item) {
4890
- var key = req.values ? extractPrimKey(item) : item;
4891
- return !rangesOverlap(new RangeSet(key), keysToDelete_1);
4892
- });
4896
+ modifedResult = result.filter(function (item) { return !keysToDelete_1.hasKey(req.values ? extractPrimKey(item) : item); });
4893
4897
  break;
4894
4898
  case 'deleteRange':
4895
4899
  var range_1 = op.range;