* @uppy/tus: pause all requests in response to server rate limiting
When the remote server responds with HTTP 429, all requests are
paused for a while in the hope that it can resolve the rate limiting.
Failed requests are also now queued up after the retry delay. Before
that, they were simply scheduled which would sometimes end up
overflowing the `limit` option.
* Address review comments
* fix requests bypassing queue pause state
* Auto rate limiting
* fix `RateLimitedQueue`
* @uppy/core: move `Uppy` class to its own module
Fixes: https://github.com/transloadit/uppy/issues/3220
* Rename snapshot file
* Update docs
* Update website/src/_posts/2021-08-2.0.md
Co-authored-by: Merlijn Vos <merlijn@soverin.net>
* Update migration guide
* Do not bundle preact with non-UI plugin packages
Co-authored-by: Merlijn Vos <merlijn@soverin.net>
* enforce some eslint rules
* enforce accessibility linter rules
* harden lint rules with only 1 or 2 warnings
* fix remaining rules with less than 3 warnings
* fix e2e tests
* fix remaining rules with less than 4 warnings
* fix remaining rules with less than 6 warnings
* fix `shuffleTaglines`
* fix companion build
* don’t store file.data on local files when we save to localStorage, add isGhost: true, additional event restore-confirmed
Co-Authored-By: Renée Kooi <github@kooi.me>
* Don’t double-emit upload-started for Golden Retriever-restored files that were already started
Co-Authored-By: Renée Kooi <github@kooi.me>
* removeFile: delete updatedUploads[uploadID] instead of calling _removeUpload to avoide excess state updates
Co-Authored-By: Renée Kooi <github@kooi.me>
* clear preview, throttle saving state
* add service message and ghost icons
* regenerate thumnails on restore properly
* allow replacing duplicate files if it’s a ghost
* re-generate thumbnails on componentDidUpdate
* tweak styles for ghosts
* Dashboard cleanup
* refactor: load IndexedDBStore and ServiceWorkerStore together, add uninstall, handle file-edit-complete
* recoveredState — show upload button as “restore”, hide progress pause/resume, handle abortRestore
* tweak serviceMsg mobile styles
* use i18n for strings
* Handle aborting, complete and last file removal with MetaDataStore.cleanup(instanceID)
* fix all the tests
* import .eslintrc from master
* autofix
* add lodash.throttle
* when re-selecting ghost files, only replace the blob, keeping progress, meta, etc
* Delete package-lock.json
* Update en_US locale
* add golden retriever support to darkmode styles
* add golden retriever to website example
* Update package-lock.json
Co-authored-by: Renée Kooi <github@kooi.me>
* Add NetworkError error type and isNetworkError utility check
* Detect network errors in tus and xhr-upload
Co-Authored-By: Ifedapo .A. Olarewaju <ifedapoolarewaju@gmail.com>
* add NetworkError check to RequestClient in companion-client
* return false if !xhr 🙈
* move catch so that only errors from _checkMinNumberOfFiles are caught — errors from uploads are logged in `upload-error` already
//cc @goto-bus-stop
* Add NetworkError to MiniXHRUpload in aws-s3
//cc @goto-bus-stop
* Add tests
//cc @ifedapoolarewaju
* pass xhr to NetworkError
* add logging in catch of uppy.upload()
* start error message with “This looks like a network error”
* originalRequest --> request, return NetworkError right away
* check for NetworkError in `delete` as well
do we need it in preflight too, @ifedapoolarewaju?
* remove redundant error message re-declaration
* _showOrLogErrorAndThrow, but don’t showInformer
Co-authored-by: Ifedapo .A. Olarewaju <ifedapoolarewaju@gmail.com>
* 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
* Add file.data.relativePath to the file.id
* Don’t add/overwrite a file if a file with the same id already exsists, issue a warning
* override @uppy/tus fingerprint to uppy’s file.id
* combine cordove/react native handling, don’t log twice
* always use onError for errors in addFile
* use file.meta.relativePath instead of file.data.relativePath
what do you think, @lakesare?
* update tests to include allowing/diallowing duplicates and file.id generation with relativePath
* update tus-js-client
* refactor error handling for addFile and upload into a mutual _showOrLogErrorAndThrow method
* explain duplicate files and relativePath
* throw TypeError vs Error when allowedFileTypes is not an array
* fix tests
* tweak docs
* Emit restriction-failed for all restriction errors, move it to _showOrLogErrorAndThrow
* add limit option to transloadit plugin to pass down to tus
* warn to set limit when uploading over 10 files
* changelog to set the default limit in 2.0
* always warn if limit === 0
* Update eslint
* Do eslint --fix
* Do not access Object.prototype method 'hasOwnProperty' from target object
* utils: add hasProperty
* eslint --fix
* Disable quote-props for locale files
* add back quotes in locale files
* revert locale files to state on master
* Update react-scripts
* Some uppy server -> companion renames
* Fix typos
* Implement most of @goto-bus-stop's feedback
* Nuke Create React App readme
* An Companion -> A Companion
* Companion server -> instance
* transloadit: Add an Assembly class to handle status updates.
* transloadit: Replace StatusSocket with new Assembly class.
* transloadit: Draft new Golden Retriever integration
* transloadit: Refetch Assembly status on events.
* transloadit: Update `assemblies` state when new status was fetched.
* transloadit: Move assembly options extraction to a class
* transloadit: use AssemblyOptions class directly for assembly options tests
* transloadit: move attachAssemblyMetadata to a class method.
* transloadit: Remove obsolete dependency.
* transloadit: Reconnect to assemblies after restore.
* tus: Always store uploadUrl
This was changed in: https://github.com/transloadit/uppy/pull/507
but actually, the uploadUrl is required by GoldenRetriever, _especially_
when `resume` is false.
* transloadit: Move `afterUpload()` closures to AssemblyWatcher class
* transloadit: Prefix private methods with _
* transloadit: Replace 2kb url-parse with custom helper.
* transloadit: Semi consistent comment width
* transloadit: Capitalise "Assembly".