mirror of
https://github.com/transloadit/uppy.git
synced 2026-07-23 02:08:30 +00:00
* xhr-upload: redo limit option using different strategy
* xhr-upload: fix marking requests as done
* Move duplicate createEventTracker definitions to @uppy/utils
* tus: new cancellation for local uploads
* tus: fix cancelling queued uploads
* tus: fix wrong name
* aws-s3-multipart: smol refactor
* aws-s3-multipart: new cancellation style
* aws-s3: new cancellation
* utils: port limitPromises test to RateLimitedQueue
* timing fix?
* tus: new cancellation on websocket
* xhr-upload: implement cancellation for remote uploads
* aws-s3-multipart: port to new cancellation
* utils: remove limitPromises
* xhr-upload: remove pause/resume code
* xhr-upload: clean up event listeners
* xhr-upload: extract progress timer to separate class
* Move ProgressTimeout class to utils
* utils: update typings
* Fix lint
* tus: make pause/resume respect the rate limiting queue
* tus: try to explain some of the tricky things at play in the Tus#upload method
* aws-s3-multipart: add missing { abort: true }
* aws-s3-multipart: make pause/resume respect the rate limiting queue
* eslintrc.json - fixed eslint warnings for jsdoc
* Revert "eslintrc.json - fixed eslint warnings for jsdoc"
This reverts commit 50b24773ce.
* eslintrc.json - allow indentation in jsdoc comments
* xhr-upload: fix promise return value
* tus: fix promise return value
* tus: add missing `return () => {}`
* utils: typing export type fixes
* tus: add more jsdoc
* companion-client: add missing SocketOptions type
* utils: fix more export typings
* core,companion-client,tus: more typings tweaking
* companion-client: test fix 😩
* companion-client: add type for Socket#open
* tus: fix emit() call
* add local cancellation fuzz....ish? test
37 lines
1.1 KiB
JavaScript
37 lines
1.1 KiB
JavaScript
/**
|
|
* 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) {
|
|
this._timeout = timeout
|
|
this._onTimedOut = timeoutHandler
|
|
this._isDone = false
|
|
this._aliveTimer = null
|
|
this._onTimedOut = this._onTimedOut.bind(this)
|
|
}
|
|
|
|
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 (this._isDone) return
|
|
|
|
if (this._timeout > 0) {
|
|
if (this._aliveTimer) clearTimeout(this._aliveTimer)
|
|
this._aliveTimer = setTimeout(this._onTimedOut, this._timeout)
|
|
}
|
|
}
|
|
|
|
done () {
|
|
if (this._aliveTimer) {
|
|
clearTimeout(this._aliveTimer)
|
|
this._aliveTimer = null
|
|
}
|
|
this._isDone = true
|
|
}
|
|
}
|
|
|
|
module.exports = ProgressTimeout
|