uppy/packages/@uppy/utils
Mikael Finstad 17826da517
Companion+client stability fixes, error handling and retry (#4734)
* respond with 500 if unhandled upload error

400 seems inappropriate

* add todo

* fix companion download error

respond with correct response code when calling /get
and request to the upstream server fail

also add a unit test for this

* forward 429 from provider

allows us to retry it

* rename fn

* add a way to test refresh tokens

* fix race condtiion with refreshing token

* implement retry and fix socket

- Make sure we don't instantiate a new Provider for every file uploaded (reuse the original provider instead) - this caused the refresh token synchronization not to work
- Retry most errors when uploading (`/get`) using companion, but for HTTP, only retry certain HTTP status codes
- Reimplement the websocket code to be more stable and retry as well

* remove unused socket wrapper

* remove useFastRemoteRetry

because it isn't supported in Companion as far as I can tell

* fix error handling

* remove unneeded logic

* apply review suggestion

* retry awaiting for companion socket too

* retry whole operation instead of individually

or else we risk getting stuck retrying just half of the operation, which might never recover

* improvements

- rewrite so we can use p-retry for exponential backoff for socket reconnect too
- improve logging
- simplify/reuse code

* Update packages/@uppy/utils/src/fetchWithNetworkError.js

Co-authored-by: Antoine du Hamel <antoine@transloadit.com>

* Explain requestClient Symbol with comment

Co-authored-by: Mikael Finstad <finstaden@gmail.com>

* Update packages/@uppy/provider-views/src/View.js

* fixes

preventing socket.send when the socket is not in the connected state
catch errors in handlers

* log if trying to refresh with no token

* log whether we got a refresh token

* dont log retrying when in reality not

* always prompt: consent

for google drive

* add signal to post

* refactor away eventmanager

and event handler error catching

* don't fail with upload-error

if a file is canceled

* fix expect

* add capabilities support

* make requestClient non-enumerable

---------

Co-authored-by: Antoine du Hamel <antoine@transloadit.com>
Co-authored-by: Merlijn Vos <merlijn@soverin.net>
2023-11-02 21:31:34 +09:00
..
src Companion+client stability fixes, error handling and retry (#4734) 2023-11-02 21:31:34 +09:00
types meta: run Prettier on existing files (#4713) 2023-09-29 11:11:28 +02:00
CHANGELOG.md Release: uppy@3.17.0 (#4716) 2023-09-29 07:53:42 +00:00
LICENSE Add @uppy/utils skeleton. 2018-06-14 16:31:19 +02:00
package.json Release: uppy@3.18.0 (#4754) 2023-10-20 15:20:18 +00:00
README.md meta: Fix logos in all the readmes (#4407) 2023-04-07 23:46:04 +01:00

@uppy/utils

Uppy logo: a smiling puppy above a pink upwards arrow

npm version CI status for Uppy tests CI status for Companion tests CI status for browser tests

Shared utility functions for Uppy Core and the “official” plugins maintained by the Uppy team.

Uppy is being developed by the folks at Transloadit, a versatile file encoding service.

Installation

Unless you are creating a custom plugin, you should not need to install this manually.

$ npm install @uppy/utils

License

The MIT License.