ProgressTimeout.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. "use strict";
  2. function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError("attempted to use private field on non-instance"); } return receiver; }
  3. var id = 0;
  4. function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; }
  5. var _aliveTimer = /*#__PURE__*/_classPrivateFieldLooseKey("aliveTimer");
  6. var _isDone = /*#__PURE__*/_classPrivateFieldLooseKey("isDone");
  7. var _onTimedOut = /*#__PURE__*/_classPrivateFieldLooseKey("onTimedOut");
  8. var _timeout = /*#__PURE__*/_classPrivateFieldLooseKey("timeout");
  9. /**
  10. * Helper to abort upload requests if there has not been any progress for `timeout` ms.
  11. * Create an instance using `timer = new ProgressTimeout(10000, onTimeout)`
  12. * Call `timer.progress()` to signal that there has been progress of any kind.
  13. * Call `timer.done()` when the upload has completed.
  14. */
  15. class ProgressTimeout {
  16. constructor(timeout, timeoutHandler) {
  17. Object.defineProperty(this, _aliveTimer, {
  18. writable: true,
  19. value: void 0
  20. });
  21. Object.defineProperty(this, _isDone, {
  22. writable: true,
  23. value: false
  24. });
  25. Object.defineProperty(this, _onTimedOut, {
  26. writable: true,
  27. value: void 0
  28. });
  29. Object.defineProperty(this, _timeout, {
  30. writable: true,
  31. value: void 0
  32. });
  33. _classPrivateFieldLooseBase(this, _timeout)[_timeout] = timeout;
  34. _classPrivateFieldLooseBase(this, _onTimedOut)[_onTimedOut] = timeoutHandler;
  35. }
  36. progress() {
  37. // Some browsers fire another progress event when the upload is
  38. // cancelled, so we have to ignore progress after the timer was
  39. // told to stop.
  40. if (_classPrivateFieldLooseBase(this, _isDone)[_isDone]) return;
  41. if (_classPrivateFieldLooseBase(this, _timeout)[_timeout] > 0) {
  42. clearTimeout(_classPrivateFieldLooseBase(this, _aliveTimer)[_aliveTimer]);
  43. _classPrivateFieldLooseBase(this, _aliveTimer)[_aliveTimer] = setTimeout(_classPrivateFieldLooseBase(this, _onTimedOut)[_onTimedOut], _classPrivateFieldLooseBase(this, _timeout)[_timeout]);
  44. }
  45. }
  46. done() {
  47. if (!_classPrivateFieldLooseBase(this, _isDone)[_isDone]) {
  48. clearTimeout(_classPrivateFieldLooseBase(this, _aliveTimer)[_aliveTimer]);
  49. _classPrivateFieldLooseBase(this, _aliveTimer)[_aliveTimer] = null;
  50. _classPrivateFieldLooseBase(this, _isDone)[_isDone] = true;
  51. }
  52. }
  53. }
  54. module.exports = ProgressTimeout;