Commit graph

46 commits

Author SHA1 Message Date
Antoine du Hamel
a08ec4e0f7
@uppy/tus: pause all requests in response to server rate limiting (#3394)
* @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`
2022-01-10 16:41:52 +01:00
Kevin van Zonneveld
bfe659820e
Upgrade linting to 2.0.0-0 (#3280)
* Upgrade linting to 2.0.0-0

* Adjust so we can pass without error

* Fix linting

* Update header-blacklist.js

* Update index.js

* Update Uppy.js

* Update Components.js

* Update StatusBar.js

* Update Assembly.js

* Upgrade to linting 2.0.0 (final release)
2021-11-09 11:19:05 +00:00
Dani Latorre
8b8783baca
Add support for opts.headers as a function in @uppy/tus (#3221) 2021-09-29 13:51:00 +02:00
Antoine du Hamel
d69031524c
@uppy/core: move Uppy class to its own module (#3225)
* @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>
2021-09-28 19:04:33 +02:00
Antoine du Hamel
ec87b232e9
meta: enforce no-unused-vars linter rule (#3118)
* meta: enforce `no-unused-vars` linter rule

* meta: fix `@typescript-eslint/no-unused-vars` linter warnings

* meta: enforce `no-unused-expressions` lint rule

* @uppy/companion: fix `tsc` build
2021-08-23 13:10:17 +01:00
Antoine du Hamel
6b7ad5e7c7
Stricter linter (#3095)
* 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
2021-08-17 20:32:57 +02:00
Artur Paikin
255429a39f
Change concurrent file upload limit to 5 in tus and xhr-upload (#2993) 2021-07-07 16:39:49 +01:00
Antoine du Hamel
7b8316ed81
xhr: use symbol for internal options (#2934)
* xhr: use symbol for internal options

* fixup! xhr: use symbol for internal options
2021-06-30 12:06:10 +01:00
Merlijn Vos
f0f1105ef0
Resolve or remove miscellaneous todos (#2967) 2021-06-29 12:54:19 +02:00
Merlijn Vos
ecec3d3213
Split Plugin into BasePlugin and extended UIPlugin (#2944) 2021-06-18 13:23:16 +02:00
Antoine du Hamel
62a722be80
tus: remove autoRetry option (#2938) 2021-06-17 11:01:30 +01:00
Artur Paikin
c4a637655d
Golden Retriever 2: Return of the Ghost (#2701)
* 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>
2021-05-12 16:30:30 +01:00
Kevin van Zonneveld
764c2ccada
Update Linter (#2796)
* relocate .vscode

* Switch to transloadit linter

* Update .eslintrc.json

* autofix code

* unlink and install eslint-config-transloadit@1.1.1

* Change 0 to "off"

* Don't change 'use strict'

* Do not vertically align

* disable key-spacing

* add import/no-extraneous-dependencies per package

* add more react/a11y warnings

* Revert "autofix code"

This reverts commit 14c8a8cde8.

* add import/no-extraneous-dependencies per example and main package

* autofix code (2)

* Allow devDependencies in ./bin

* Change import/no-extraneous-dependencies to warn again

* upgrade linter

* Set import/no-extraneous-dependencies to warn
2021-03-15 16:25:17 +00:00
Renée Kooi
f4eb113bbc
silence or fix lint warnings (#2665) 2020-11-30 10:58:33 +01:00
Bruno Gerotto
256c06e227
tus: add onBeforeRequest option (#2611) 2020-11-16 11:55:06 +01:00
Shlomo Zalman Heigh
91c7ea03ae
Tus: add withCredentials, fix #2518 (#2544)
Co-authored-by: Renée Kooi <renee@kooi.me>
2020-09-28 11:56:47 +02:00
Renée Kooi
700f084e8a
tus: fix fallback to default fingerprint implementation (#2456) 2020-08-13 10:22:40 +02:00
Renée Kooi
6839a4c0d7
tus: fix typo, fixes #2376 (#2378) 2020-07-20 11:28:43 +02:00
Ifedapo .A. Olarewaju
3af9d22e89
companion: send custom headers to tus uploads (#2338)
* companion: send custom headers to tus uploads

fixes #2337

* tus: send headers to companion
2020-06-29 21:25:24 +01:00
Marius
541feef81e
Update tus-js-client dependency to v2 (#2239)
Co-authored-by: Renée Kooi <renee@kooi.me>
2020-06-22 12:41:45 +02:00
Zach Conner
f8f2bfa973
tus: resetUploaderRefs before emitting (#2262) 2020-05-22 14:11:33 +02:00
Renée Kooi
ef4468934d
tus: use hasProperty util to make this if condition more readable 2020-05-06 13:06:15 +02:00
Artur Paikin
ed8a494875
Mark network errors as NetworkError (#2110)
* 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>
2020-04-21 10:36:49 +02:00
Ifedapo .A. Olarewaju
7d972e09a4
tus,xhr-upload: emit error when companion returns error during upload creation (#2166) 2020-04-01 22:14:45 +02:00
ifedapoolarewaju
bad02f9a69
tus: wait for previous request to get aborted 2019-10-27 08:09:36 +01:00
ifedapoolarewaju
c7828139ed
tus,companion: terminate tus upload on-upload cancel
fixes #1544
2019-10-23 11:27:44 +01:00
Renée Kooi
733de659da
Upgrade standard to v14 (#1860)
* Update eslint dependencies.

* standard --fix

* build: disable handler name lint rule

* status-bar: manually fix lint errors

* webcam: manually fix lint errors

* url: manually fix lint errors

* react-native: manually fix lint errors

* dashboard: manually fix lint errors

* informer: manually fix linting errors

* progress-bar: manually fix lint errors

* provider-views: manually fix lint errors

* redux-dev-tools: manually fix lint errors

* build: disable buggy no-unused-vars rule

* examples: manually fix lint errors

* ` quotes for code things, ' for text things
2019-10-09 14:53:02 +02:00
Renée Kooi
bb8b66d918
Use more cancellation-friendly strategy for limit: N uploads (#1736)
* 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
2019-09-25 15:21:17 +02:00
Artur Paikin
e82ac0f137
core: Don’t add/overwrite existing files, allow duplicates from different folders (#1767)
* 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
2019-09-19 16:43:51 +03:00
Artur Paikin
6599ebdc65
transloadit: add limit option, warn about using limit when it’s set to 0 (#1789)
* 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
2019-08-22 16:29:00 +03:00
Renée Kooi
c62ec3665d Update eslint to v6 (#1777)
* 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
2019-08-13 21:45:30 +03:00
Artur Paikin
81a45a01ed eslint jsdoc fixes 2019-06-25 18:27:48 +03:00
Renée Kooi
e6c52f7681
Use opts.id as the plugin ID for all plugins, fixes #1674 2019-06-19 09:58:14 +02:00
Renée Kooi
2faa3a1d1d
tus: implement metaFields (#1644)
A quick copy-paste hackjob from XHRUpload.
2019-06-07 14:08:07 +02:00
Renée Kooi
980210f76c
Add VERSION properties to all plugins.
And remove the proposal-object-rest-spread plugin because it is built
into preset-env now.
2019-05-27 16:53:47 +02:00
Renée Kooi
f97b3931bb
Upgrade eslint. 2019-05-20 11:28:44 +02:00
Renée Kooi
7ff690a152
Merge pull request #1429 from loopbio/tus-fix-cancel-with-upload-limit
tus: fix cannot start more uploads after cancel
2019-04-17 16:05:12 +02:00
Ifedapo Olarewaju
f4e558bf94 rename serverUrl to companionUrl
and serverPattern to companionAllowedHosts
2019-04-14 13:53:50 +01:00
ap--
48cceb8f9f tus: fix cannot start more uploads after cancel
The queue in limitPromises is not emptied on cancel,
because the upload promise is not resolved or rejected.
2019-04-07 15:32:22 +02:00
Artur Paikin
f1f21b1132 change all upload-success events to emit (file, uploadResp) with uploadResp {status, body, uploadURL}, upload-error to (file, error) 2018-12-19 23:16:48 +03:00
Artur Paikin
409b11b7b6 Set response in Core rather than in upload plugins 2018-11-06 16:23:04 +03:00
Kevin van Zonneveld
67af833fdb
More uppy server -> companion renames (#1037)
* 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
2018-09-03 14:48:03 +02:00
Renée Kooi
ed5f73c6f5 Transloadit refactors + socket fallback (#1011)
* 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".
2018-08-21 15:23:31 +02:00
Ifedapo Olarewaju
f2ee127e81 rename 'server-utils' to 'companion-client' 2018-07-22 18:53:57 +01:00
Renée Kooi
72689d01ac
Export Plugin class from @uppy/core. 2018-06-28 12:20:21 +02:00
Renée Kooi
67e57c9899
Move Tus plugin to @uppy/tus.
Steps taken:

```bash
cp -R package-template packages/@uppy/tus
vim packages/@uppy/tus/{README.md,package.json}
vim src/plugins/Transloadit/index.js src/indeex.js # Update requires
vim packages/@uppy/tus/src/index.js # Remove whatwg-fetch import
vim packages/@uppy/tus/package.json # Add dependencies
```
2018-06-14 16:31:19 +02:00