You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.4 KiB
67 lines
2.4 KiB
"use strict";
|
|
|
|
function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError("attempted to use private field on non-instance"); } return receiver; }
|
|
|
|
var id = 0;
|
|
|
|
function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
|
|
|
|
var _aliveTimer = /*#__PURE__*/_classPrivateFieldLooseKey("aliveTimer");
|
|
|
|
var _isDone = /*#__PURE__*/_classPrivateFieldLooseKey("isDone");
|
|
|
|
var _onTimedOut = /*#__PURE__*/_classPrivateFieldLooseKey("onTimedOut");
|
|
|
|
var _timeout = /*#__PURE__*/_classPrivateFieldLooseKey("timeout");
|
|
|
|
/**
|
|
* Helper to abort upload requests if there has not been any progress for `timeout` ms.
|
|
* Create an instance using `timer = new ProgressTimeout(10000, onTimeout)`
|
|
* Call `timer.progress()` to signal that there has been progress of any kind.
|
|
* Call `timer.done()` when the upload has completed.
|
|
*/
|
|
class ProgressTimeout {
|
|
constructor(timeout, timeoutHandler) {
|
|
Object.defineProperty(this, _aliveTimer, {
|
|
writable: true,
|
|
value: void 0
|
|
});
|
|
Object.defineProperty(this, _isDone, {
|
|
writable: true,
|
|
value: false
|
|
});
|
|
Object.defineProperty(this, _onTimedOut, {
|
|
writable: true,
|
|
value: void 0
|
|
});
|
|
Object.defineProperty(this, _timeout, {
|
|
writable: true,
|
|
value: void 0
|
|
});
|
|
_classPrivateFieldLooseBase(this, _timeout)[_timeout] = timeout;
|
|
_classPrivateFieldLooseBase(this, _onTimedOut)[_onTimedOut] = timeoutHandler;
|
|
}
|
|
|
|
progress() {
|
|
// Some browsers fire another progress event when the upload is
|
|
// cancelled, so we have to ignore progress after the timer was
|
|
// told to stop.
|
|
if (_classPrivateFieldLooseBase(this, _isDone)[_isDone]) return;
|
|
|
|
if (_classPrivateFieldLooseBase(this, _timeout)[_timeout] > 0) {
|
|
clearTimeout(_classPrivateFieldLooseBase(this, _aliveTimer)[_aliveTimer]);
|
|
_classPrivateFieldLooseBase(this, _aliveTimer)[_aliveTimer] = setTimeout(_classPrivateFieldLooseBase(this, _onTimedOut)[_onTimedOut], _classPrivateFieldLooseBase(this, _timeout)[_timeout]);
|
|
}
|
|
}
|
|
|
|
done() {
|
|
if (!_classPrivateFieldLooseBase(this, _isDone)[_isDone]) {
|
|
clearTimeout(_classPrivateFieldLooseBase(this, _aliveTimer)[_aliveTimer]);
|
|
_classPrivateFieldLooseBase(this, _aliveTimer)[_aliveTimer] = null;
|
|
_classPrivateFieldLooseBase(this, _isDone)[_isDone] = true;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
module.exports = ProgressTimeout;
|