dexie 1.5.0 → 1.5.1
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/bower.json +1 -1
- package/dist/dexie.d.ts +1 -1
- package/dist/dexie.es6.js +20 -22
- package/dist/dexie.es6.js.map +1 -1
- package/dist/dexie.js +25 -28
- package/dist/dexie.js.map +1 -1
- package/dist/dexie.min.js +2 -2
- package/dist/dexie.min.js.map +1 -1
- package/package.json +1 -1
- package/src/Dexie.js +17 -19
- package/test/tests-misc.js +12 -0
package/package.json
CHANGED
package/src/Dexie.js
CHANGED
|
@@ -1400,8 +1400,8 @@ export default function Dexie(dbName, options) {
|
|
|
1400
1400
|
if (--this._reculock === 0) {
|
|
1401
1401
|
if (!PSD.global) PSD.lockOwnerFor = null;
|
|
1402
1402
|
while (this._blockedFuncs.length > 0 && !this._locked()) {
|
|
1403
|
-
var
|
|
1404
|
-
try {
|
|
1403
|
+
var fnAndPSD = this._blockedFuncs.shift();
|
|
1404
|
+
try { usePSD(fnAndPSD[1], fnAndPSD[0]); } catch (e) { }
|
|
1405
1405
|
}
|
|
1406
1406
|
}
|
|
1407
1407
|
return this;
|
|
@@ -1456,31 +1456,29 @@ export default function Dexie(dbName, options) {
|
|
|
1456
1456
|
},
|
|
1457
1457
|
_promise: function (mode, fn, bWriteLock) {
|
|
1458
1458
|
var self = this;
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1459
|
+
var p = self._locked() ?
|
|
1460
|
+
// Read lock always. Transaction is write-locked. Wait for mutex.
|
|
1461
|
+
new Promise(function (resolve, reject) {
|
|
1462
|
+
self._blockedFuncs.push([function () {
|
|
1463
|
+
self._promise(mode, fn, bWriteLock).then(resolve, reject);
|
|
1464
|
+
}, PSD]);
|
|
1465
|
+
}) :
|
|
1466
|
+
newScope(function() {
|
|
1467
|
+
var p_ = self.active ? new Promise(function (resolve, reject) {
|
|
1464
1468
|
if (mode === READWRITE && self.mode !== READWRITE)
|
|
1465
1469
|
throw new exceptions.ReadOnly("Transaction is readonly");
|
|
1466
1470
|
if (!self.idbtrans && mode) self.create();
|
|
1467
1471
|
if (bWriteLock) self._lock(); // Write lock if write operation is requested
|
|
1468
1472
|
fn(resolve, reject, self);
|
|
1469
1473
|
}) : rejection(new exceptions.TransactionInactive());
|
|
1470
|
-
if (self.active && bWriteLock)
|
|
1474
|
+
if (self.active && bWriteLock) p_.finally(function () {
|
|
1471
1475
|
self._unlock();
|
|
1472
1476
|
});
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
});
|
|
1479
|
-
});
|
|
1480
|
-
}
|
|
1481
|
-
p._lib = true;
|
|
1482
|
-
return p.uncaught(dbUncaught);
|
|
1483
|
-
});
|
|
1477
|
+
return p_;
|
|
1478
|
+
});
|
|
1479
|
+
|
|
1480
|
+
p._lib = true;
|
|
1481
|
+
return p.uncaught(dbUncaught);
|
|
1484
1482
|
},
|
|
1485
1483
|
|
|
1486
1484
|
//
|
package/test/tests-misc.js
CHANGED
|
@@ -180,3 +180,15 @@ asyncTest ("#323 @gitawego's post. Should not fail unexpectedly on readonly prop
|
|
|
180
180
|
}).finally(start);
|
|
181
181
|
|
|
182
182
|
});
|
|
183
|
+
|
|
184
|
+
spawnedTest ("#360 DB unresponsive after multiple Table.update() or Collection.modify()", function* () {
|
|
185
|
+
const NUM_UPDATES = 2000;
|
|
186
|
+
let result = yield db.transaction('rw', db.foo, function* () {
|
|
187
|
+
yield db.foo.put({id: 1, value: 0});
|
|
188
|
+
for (var i=0;i<NUM_UPDATES;++i) {
|
|
189
|
+
db.foo.where('id').equals(1).modify(item => ++item.value);
|
|
190
|
+
}
|
|
191
|
+
return yield db.foo.get(1);
|
|
192
|
+
});
|
|
193
|
+
equal(result.value, NUM_UPDATES, `Should have updated id 1 a ${NUM_UPDATES} times`);
|
|
194
|
+
});
|