diff --git a/.eslintrc.js b/.eslintrc.js
index 8b89e889e13..383849adfd7 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -526,8 +526,8 @@ module.exports = {
extends: ['plugin:cypress/recommended'],
},
{
- files: ['e2e/**/*.ts', 'e2e/**/*.js', 'e2e/**/*.jsx'],
- rules: { 'import/no-extraneous-dependencies': 'off', 'no-unused-expressions': 'off' },
+ files: ['e2e/**/*.ts', 'e2e/**/*.js', 'e2e/**/*.jsx', 'e2e/**/*.mjs'],
+ rules: { 'import/no-extraneous-dependencies': 'off', 'no-unused-expressions': 'off', 'no-console': 'off' },
},
],
}
diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml
index 20b9c62ea76..d7103de1f8f 100644
--- a/.github/workflows/e2e.yml
+++ b/.github/workflows/e2e.yml
@@ -62,6 +62,12 @@ jobs:
uses: actions/setup-node@v3
with:
node-version: lts/*
+
+ - name: Start Redis
+ uses: supercharge/redis-github-action@1.4.0
+ with:
+ redis-version: 7
+
- name: Install dependencies
run: corepack yarn install --immutable
env:
@@ -72,18 +78,21 @@ jobs:
- name: Run end-to-end browser tests
run: corepack yarn run e2e:ci
env:
+ COMPANION_DATADIR: ./output
+ COMPANION_DOMAIN: localhost:3020
+ COMPANION_PROTOCOL: http
+ COMPANION_REDIS_URL: redis://localhost:6379
COMPANION_UNSPLASH_KEY: ${{secrets.COMPANION_UNSPLASH_KEY}}
COMPANION_UNSPLASH_SECRET: ${{secrets.COMPANION_UNSPLASH_SECRET}}
+ COMPANION_AWS_KEY: ${{secrets.COMPANION_AWS_KEY}}
+ COMPANION_AWS_SECRET: ${{secrets.COMPANION_AWS_SECRET}}
+ COMPANION_AWS_BUCKET: ${{secrets.COMPANION_AWS_BUCKET}}
+ COMPANION_AWS_REGION: ${{secrets.COMPANION_AWS_REGION}}
VITE_COMPANION_URL: http://localhost:3020
VITE_TRANSLOADIT_KEY: ${{secrets.TRANSLOADIT_KEY}}
VITE_TRANSLOADIT_SECRET: ${{secrets.TRANSLOADIT_SECRET}}
VITE_TRANSLOADIT_TEMPLATE: ${{secrets.TRANSLOADIT_TEMPLATE}}
VITE_TRANSLOADIT_SERVICE_URL: ${{secrets.TRANSLOADIT_SERVICE_URL}}
- COMPANION_AWS_KEY: ${{secrets.COMPANION_AWS_KEY}}
- COMPANION_AWS_SECRET: ${{secrets.COMPANION_AWS_SECRET}}
- COMPANION_AWS_BUCKET: ${{secrets.COMPANION_AWS_BUCKET}}
- COMPANION_AWS_REGION: ${{secrets.COMPANION_AWS_REGION}}
- COMPANION_AWS_DISABLE_ACL: 'true'
# https://docs.cypress.io/guides/references/advanced-installation#Binary-cache
CYPRESS_CACHE_FOLDER: ${{ steps.cypress-cache-dir-path.outputs.dir }}
- name: Upload videos in case of failure
diff --git a/BUNDLE-README.md b/BUNDLE-README.md
index 6b96b00f1b4..72ae09f87e8 100644
--- a/BUNDLE-README.md
+++ b/BUNDLE-README.md
@@ -1,7 +1,7 @@
# Uppy
Hi, thanks for trying out the bundled version of the Uppy File Uploader. You can use
-this from a CDN (``) or bundle it with your webapp.
+this from a CDN (``) or bundle it with your webapp.
Note that the recommended way to use Uppy is to install it with yarn/npm and use a
bundler like Webpack so that you can create a smaller custom build with only the
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6de4bb61561..688e87848c1 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,6 +12,45 @@ Please add your entries in this format:
In the current stage we aim to release a new version at least every month.
+## 3.4.0
+
+Released: 2023-01-26
+
+| Package | Version | Package | Version |
+| ---------------------- | ------- | ---------------------- | ------- |
+| @uppy/audio | 1.0.3 | @uppy/locales | 3.0.5 |
+| @uppy/aws-s3 | 3.0.5 | @uppy/react | 3.1.0 |
+| @uppy/aws-s3-multipart | 3.1.2 | @uppy/react-native | 0.5.0 |
+| @uppy/companion | 4.2.0 | @uppy/transloadit | 3.1.0 |
+| @uppy/core | 3.0.5 | @uppy/utils | 5.1.2 |
+| @uppy/dashboard | 3.2.1 | uppy | 3.4.0 |
+
+- @uppy/utils: better fallbacks for the drag & drop API (Antoine du Hamel / #4260)
+- @uppy/core: fix metafields validation when used as function (Merlijn Vos / #4276)
+- @uppy/companion: allow customizing express session prefix (Mikael Finstad / #4249)
+- meta: Fix comment about COMPANION_PATH (Collin Allen / #4279)
+- @uppy/companion: Fix typo in KUBERNETES.md (Collin Allen / #4277)
+- @uppy/locales: update zh_TW.js (5idereal / #4270)
+- meta: ci: make sure Yarn's global cache is disabled (Antoine du Hamel / #4268)
+- @uppy/aws-s3-multipart: fix metadata shape (Antoine du Hamel / #4267)
+- meta: example: add multipart support to `aws-nodejs` (Antoine du Hamel / #4257)
+- @uppy/react-native: example: revive React Native example (Giacomo Cerquone / #4164)
+- @uppy/utils: Fix getSpeed type (referenced `bytesTotal` instead of `uploadStarted`) (Pascal Wengerter / #4263)
+- @uppy/companion: document how to run many instances (Mikael Finstad / #4227)
+- @uppy/aws-s3-multipart: add support for `allowedMetaFields` option (Antoine du Hamel / #4215)
+- meta: Fix indentation in generate-test.mjs (Youssef Victor / #4181)
+- @uppy/react: deprecate `useUppy` (Merlijn Vos / #4223)
+- meta: fix typo in README.md (Fuad Herac / #4254)
+- meta: Don’t close stale issues automatically (Artur Paikin / #4246)
+- meta: upgrade to Vite 4 and ESBuild 0.16 (Antoine du Hamel / #4243)
+- @uppy/audio: @uppy/audio fix typo in readme (elliotsayes / #4240)
+- @uppy/aws-s3: fix: add https:// to digital oceans link (Le Gia Hoang / #4165)
+- website: Simplify Dashboard code sample (Artur Paikin / #4197)
+- @uppy/transloadit: introduce `assemblyOptions`, deprecate other options (Merlijn Vos / #4059)
+- @uppy/core: fix typo in Uppy.test.js (Ikko Ashimine / #4235)
+- @uppy/aws-s3-multipart: fix singPart type (Stefan Schonert / #4224)
+
+
## 3.3.1
Released: 2022-11-16
diff --git a/README.md b/README.md
index 552485f134c..2f0e8096624 100644
--- a/README.md
+++ b/README.md
@@ -67,7 +67,7 @@ const uppy = new Uppy()
npm install @uppy/core @uppy/dashboard @uppy/tus
```
-Add CSS [uppy.min.css](https://releases.transloadit.com/uppy/v3.3.1/uppy.min.css), either to your HTML page’s `
` or include in JS, if your bundler of choice supports it.
+Add CSS [uppy.min.css](https://releases.transloadit.com/uppy/v3.4.0/uppy.min.css), either to your HTML page’s `` or include in JS, if your bundler of choice supports it.
Alternatively, you can also use a pre-built bundle from Transloadit’s CDN: Edgly. In that case `Uppy` will attach itself to the global `window.Uppy` object.
@@ -75,12 +75,12 @@ Alternatively, you can also use a pre-built bundle from Transloadit’s CDN: Edg
```html
-
+
+
```
## FAQ
@@ -261,13 +261,13 @@ Use Uppy in your project? [Let us know](https://github.com/transloadit/uppy/issu
:---: |:---: |:---: |:---: |:---: |:---: |
[mrbatista](https://github.com/mrbatista) |[tuoxiansp](https://github.com/tuoxiansp) |[dominiceden](https://github.com/dominiceden) |[elenalape](https://github.com/elenalape) |[mejiaej](https://github.com/mejiaej) |[gavboulton](https://github.com/gavboulton) |
-[ ](https://github.com/Hawxy) |[ ](https://github.com/juliangruber) |[ ](https://github.com/bertho-zero) |[ ](https://github.com/LiviaMedeiros) |[ ](https://github.com/tranvansang) |[ ](https://github.com/ap--) |
+[ ](https://github.com/eltociear) |[ ](https://github.com/Hawxy) |[ ](https://github.com/juliangruber) |[ ](https://github.com/bertho-zero) |[ ](https://github.com/LiviaMedeiros) |[ ](https://github.com/tranvansang) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[Hawxy](https://github.com/Hawxy) |[juliangruber](https://github.com/juliangruber) |[bertho-zero](https://github.com/bertho-zero) |[LiviaMedeiros](https://github.com/LiviaMedeiros) |[tranvansang](https://github.com/tranvansang) |[ap--](https://github.com/ap--) |
+[eltociear](https://github.com/eltociear) |[Hawxy](https://github.com/Hawxy) |[juliangruber](https://github.com/juliangruber) |[bertho-zero](https://github.com/bertho-zero) |[LiviaMedeiros](https://github.com/LiviaMedeiros) |[tranvansang](https://github.com/tranvansang) |
-[ ](https://github.com/MikeKovarik) |[ ](https://github.com/pauln) |[ ](https://github.com/toadkicker) |[ ](https://github.com/ofhope) |[ ](https://github.com/eltociear) |[ ](https://github.com/johnnyperkins) |
+[ ](https://github.com/ap--) |[ ](https://github.com/MikeKovarik) |[ ](https://github.com/pauln) |[ ](https://github.com/toadkicker) |[ ](https://github.com/ofhope) |[ ](https://github.com/johnnyperkins) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[MikeKovarik](https://github.com/MikeKovarik) |[pauln](https://github.com/pauln) |[toadkicker](https://github.com/toadkicker) |[ofhope](https://github.com/ofhope) |[eltociear](https://github.com/eltociear) |[johnnyperkins](https://github.com/johnnyperkins) |
+[ap--](https://github.com/ap--) |[MikeKovarik](https://github.com/MikeKovarik) |[pauln](https://github.com/pauln) |[toadkicker](https://github.com/toadkicker) |[ofhope](https://github.com/ofhope) |[johnnyperkins](https://github.com/johnnyperkins) |
[ ](https://github.com/dargmuesli) |[ ](https://github.com/manuelkiessling) |[ ](https://github.com/nndevstudio) |[ ](https://github.com/ogtfaber) |[ ](https://github.com/sksavant) |[ ](https://github.com/suchoproduction) |
:---: |:---: |:---: |:---: |:---: |:---: |
@@ -281,109 +281,113 @@ Use Uppy in your project? [Let us know](https://github.com/transloadit/uppy/issu
:---: |:---: |:---: |:---: |:---: |:---: |
[ahmedkandel](https://github.com/ahmedkandel) |[btrice](https://github.com/btrice) |[AndrwM](https://github.com/AndrwM) |[behnammodi](https://github.com/behnammodi) |[BePo65](https://github.com/BePo65) |[bradedelman](https://github.com/bradedelman) |
-[ ](https://github.com/camiloforero) |[ ](https://github.com/craigjennings11) |[ ](https://github.com/davekiss) |[ ](https://github.com/denysdesign) |[ ](https://github.com/ethanwillis) |[ ](https://github.com/frobinsonj) |
+[ ](https://github.com/camiloforero) |[ ](https://github.com/command-tab) |[ ](https://github.com/craigjennings11) |[ ](https://github.com/davekiss) |[ ](https://github.com/denysdesign) |[ ](https://github.com/ethanwillis) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[camiloforero](https://github.com/camiloforero) |[craigjennings11](https://github.com/craigjennings11) |[davekiss](https://github.com/davekiss) |[denysdesign](https://github.com/denysdesign) |[ethanwillis](https://github.com/ethanwillis) |[frobinsonj](https://github.com/frobinsonj) |
+[camiloforero](https://github.com/camiloforero) |[command-tab](https://github.com/command-tab) |[craigjennings11](https://github.com/craigjennings11) |[davekiss](https://github.com/davekiss) |[denysdesign](https://github.com/denysdesign) |[ethanwillis](https://github.com/ethanwillis) |
-[ ](https://github.com/geertclerx) |[ ](https://github.com/ghasrfakhri) |[ ](https://github.com/jasonbosco) |[ ](https://github.com/jedwood) |[ ](https://github.com/dogrocker) |[ ](https://github.com/lafe) |
+[ ](https://github.com/frobinsonj) |[ ](https://github.com/geertclerx) |[ ](https://github.com/ghasrfakhri) |[ ](https://github.com/jasonbosco) |[ ](https://github.com/jedwood) |[ ](https://github.com/dogrocker) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[geertclerx](https://github.com/geertclerx) |[ghasrfakhri](https://github.com/ghasrfakhri) |[jasonbosco](https://github.com/jasonbosco) |[jedwood](https://github.com/jedwood) |[dogrocker](https://github.com/dogrocker) |[lafe](https://github.com/lafe) |
+[frobinsonj](https://github.com/frobinsonj) |[geertclerx](https://github.com/geertclerx) |[ghasrfakhri](https://github.com/ghasrfakhri) |[jasonbosco](https://github.com/jasonbosco) |[jedwood](https://github.com/jedwood) |[dogrocker](https://github.com/dogrocker) |
-[ ](https://github.com/mactavishz) |[ ](https://github.com/maferland) |[ ](https://github.com/Martin005) |[ ](https://github.com/martiuslim) |[ ](https://github.com/MatthiasKunnen) |[ ](https://github.com/msand) |
+[ ](https://github.com/lafe) |[ ](https://github.com/mactavishz) |[ ](https://github.com/maferland) |[ ](https://github.com/Martin005) |[ ](https://github.com/martiuslim) |[ ](https://github.com/MatthiasKunnen) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[mactavishz](https://github.com/mactavishz) |[maferland](https://github.com/maferland) |[Martin005](https://github.com/Martin005) |[martiuslim](https://github.com/martiuslim) |[MatthiasKunnen](https://github.com/MatthiasKunnen) |[msand](https://github.com/msand) |
+[lafe](https://github.com/lafe) |[mactavishz](https://github.com/mactavishz) |[maferland](https://github.com/maferland) |[Martin005](https://github.com/Martin005) |[martiuslim](https://github.com/martiuslim) |[MatthiasKunnen](https://github.com/MatthiasKunnen) |
-[ ](https://github.com/paescuj) |[ ](https://github.com/richartkeil) |[ ](https://github.com/richmeij) |[ ](https://github.com/rdimartino) |[ ](https://github.com/rosenfeld) |[ ](https://github.com/jrschumacher) |
+[ ](https://github.com/msand) |[ ](https://github.com/paescuj) |[ ](https://github.com/richartkeil) |[ ](https://github.com/richmeij) |[ ](https://github.com/rdimartino) |[ ](https://github.com/rosenfeld) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[paescuj](https://github.com/paescuj) |[richartkeil](https://github.com/richartkeil) |[richmeij](https://github.com/richmeij) |[rdimartino](https://github.com/rdimartino) |[rosenfeld](https://github.com/rosenfeld) |[jrschumacher](https://github.com/jrschumacher) |
+[msand](https://github.com/msand) |[paescuj](https://github.com/paescuj) |[richartkeil](https://github.com/richartkeil) |[richmeij](https://github.com/richmeij) |[rdimartino](https://github.com/rdimartino) |[rosenfeld](https://github.com/rosenfeld) |
-[ ](https://github.com/SlavikTraktor) |[ ](https://github.com/ThomasG77) |[ ](https://github.com/sparanoid) |[ ](https://github.com/zhuangya) |[ ](https://github.com/yaegor) |[ ](https://github.com/allenfantasy) |
+[ ](https://github.com/jrschumacher) |[ ](https://github.com/SlavikTraktor) |[ ](https://github.com/ThomasG77) |[ ](https://github.com/sparanoid) |[ ](https://github.com/zhuangya) |[ ](https://github.com/yaegor) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[SlavikTraktor](https://github.com/SlavikTraktor) |[ThomasG77](https://github.com/ThomasG77) |[sparanoid](https://github.com/sparanoid) |[zhuangya](https://github.com/zhuangya) |[yaegor](https://github.com/yaegor) |[allenfantasy](https://github.com/allenfantasy) |
+[jrschumacher](https://github.com/jrschumacher) |[SlavikTraktor](https://github.com/SlavikTraktor) |[ThomasG77](https://github.com/ThomasG77) |[sparanoid](https://github.com/sparanoid) |[zhuangya](https://github.com/zhuangya) |[yaegor](https://github.com/yaegor) |
-[ ](https://github.com/Zyclotrop-j) |[ ](https://github.com/anark) |[ ](https://github.com/fortrieb) |[ ](https://github.com/heocoi) |[ ](https://github.com/jarey) |[ ](https://github.com/muhammadInam) |
+[ ](https://github.com/Youssef1313) |[ ](https://github.com/allenfantasy) |[ ](https://github.com/Zyclotrop-j) |[ ](https://github.com/anark) |[ ](https://github.com/fortrieb) |[ ](https://github.com/heocoi) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[Zyclotrop-j](https://github.com/Zyclotrop-j) |[anark](https://github.com/anark) |[fortrieb](https://github.com/fortrieb) |[heocoi](https://github.com/heocoi) |[jarey](https://github.com/jarey) |[muhammadInam](https://github.com/muhammadInam) |
+[Youssef1313](https://github.com/Youssef1313) |[allenfantasy](https://github.com/allenfantasy) |[Zyclotrop-j](https://github.com/Zyclotrop-j) |[anark](https://github.com/anark) |[fortrieb](https://github.com/fortrieb) |[heocoi](https://github.com/heocoi) |
-[ ](https://github.com/rettgerst) |[ ](https://github.com/mkabatek) |[ ](https://github.com/jukakoski) |[ ](https://github.com/olemoign) |[ ](https://github.com/ajschmidt8) |[ ](https://github.com/superhawk610) |
+[ ](https://github.com/jarey) |[ ](https://github.com/muhammadInam) |[ ](https://github.com/rettgerst) |[ ](https://github.com/mkabatek) |[ ](https://github.com/jukakoski) |[ ](https://github.com/olemoign) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[rettgerst](https://github.com/rettgerst) |[mkabatek](https://github.com/mkabatek) |[jukakoski](https://github.com/jukakoski) |[olemoign](https://github.com/olemoign) |[ajschmidt8](https://github.com/ajschmidt8) |[superhawk610](https://github.com/superhawk610) |
+[jarey](https://github.com/jarey) |[muhammadInam](https://github.com/muhammadInam) |[rettgerst](https://github.com/rettgerst) |[mkabatek](https://github.com/mkabatek) |[jukakoski](https://github.com/jukakoski) |[olemoign](https://github.com/olemoign) |
-[ ](https://github.com/abannach) |[ ](https://github.com/adamelmore) |[ ](https://github.com/ajh-sr) |[ ](https://github.com/adamvigneault) |[ ](https://github.com/Adrrei) |[ ](https://github.com/adritasharma) |
+[ ](https://github.com/5idereal) |[ ](https://github.com/ajschmidt8) |[ ](https://github.com/superhawk610) |[ ](https://github.com/abannach) |[ ](https://github.com/adamelmore) |[ ](https://github.com/ajh-sr) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[abannach](https://github.com/abannach) |[adamelmore](https://github.com/adamelmore) |[ajh-sr](https://github.com/ajh-sr) |[adamvigneault](https://github.com/adamvigneault) |[Adrrei](https://github.com/Adrrei) |[adritasharma](https://github.com/adritasharma) |
+[5idereal](https://github.com/5idereal) |[ajschmidt8](https://github.com/ajschmidt8) |[superhawk610](https://github.com/superhawk610) |[abannach](https://github.com/abannach) |[adamelmore](https://github.com/adamelmore) |[ajh-sr](https://github.com/ajh-sr) |
-[ ](https://github.com/ahmadissa) |[ ](https://github.com/asmt3) |[ ](https://github.com/alexnj) |[ ](https://github.com/aalepis) |[ ](https://github.com/Dogfalo) |[ ](https://github.com/tekacs) |
+[ ](https://github.com/adamvigneault) |[ ](https://github.com/Adrrei) |[ ](https://github.com/adritasharma) |[ ](https://github.com/ahmadissa) |[ ](https://github.com/asmt3) |[ ](https://github.com/alexnj) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[ahmadissa](https://github.com/ahmadissa) |[asmt3](https://github.com/asmt3) |[alexnj](https://github.com/alexnj) |[aalepis](https://github.com/aalepis) |[Dogfalo](https://github.com/Dogfalo) |[tekacs](https://github.com/tekacs) |
+[adamvigneault](https://github.com/adamvigneault) |[Adrrei](https://github.com/Adrrei) |[adritasharma](https://github.com/adritasharma) |[ahmadissa](https://github.com/ahmadissa) |[asmt3](https://github.com/asmt3) |[alexnj](https://github.com/alexnj) |
-[ ](https://github.com/amitport) |[ ](https://github.com/functino) |[ ](https://github.com/radarhere) |[ ](https://github.com/superandrew213) |[ ](https://github.com/andrii-bodnar) |[ ](https://github.com/andychongyz) |
+[ ](https://github.com/aalepis) |[ ](https://github.com/Dogfalo) |[ ](https://github.com/tekacs) |[ ](https://github.com/amitport) |[ ](https://github.com/functino) |[ ](https://github.com/radarhere) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[amitport](https://github.com/amitport) |[functino](https://github.com/functino) |[radarhere](https://github.com/radarhere) |[superandrew213](https://github.com/superandrew213) |[andrii-bodnar](https://github.com/andrii-bodnar) |[andychongyz](https://github.com/andychongyz) |
+[aalepis](https://github.com/aalepis) |[Dogfalo](https://github.com/Dogfalo) |[tekacs](https://github.com/tekacs) |[amitport](https://github.com/amitport) |[functino](https://github.com/functino) |[radarhere](https://github.com/radarhere) |
-[ ](https://github.com/anthony0030) |[ ](https://github.com/tyndria) |[ ](https://github.com/Abourass) |[ ](https://github.com/arthurdenner) |[ ](https://github.com/apuyou) |[ ](https://github.com/ash-jc-allen) |
+[ ](https://github.com/superandrew213) |[ ](https://github.com/andrii-bodnar) |[ ](https://github.com/andychongyz) |[ ](https://github.com/anthony0030) |[ ](https://github.com/tyndria) |[ ](https://github.com/Abourass) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[anthony0030](https://github.com/anthony0030) |[tyndria](https://github.com/tyndria) |[Abourass](https://github.com/Abourass) |[arthurdenner](https://github.com/arthurdenner) |[apuyou](https://github.com/apuyou) |[ash-jc-allen](https://github.com/ash-jc-allen) |
+[superandrew213](https://github.com/superandrew213) |[andrii-bodnar](https://github.com/andrii-bodnar) |[andychongyz](https://github.com/andychongyz) |[anthony0030](https://github.com/anthony0030) |[tyndria](https://github.com/tyndria) |[Abourass](https://github.com/Abourass) |
-[ ](https://github.com/atsawin) |[ ](https://github.com/ayhankesicioglu) |[ ](https://github.com/azeemba) |[ ](https://github.com/azizk) |[ ](https://github.com/bducharme) |[ ](https://github.com/Quorafind) |
+[ ](https://github.com/arthurdenner) |[ ](https://github.com/apuyou) |[ ](https://github.com/ash-jc-allen) |[ ](https://github.com/atsawin) |[ ](https://github.com/ayhankesicioglu) |[ ](https://github.com/azeemba) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[atsawin](https://github.com/atsawin) |[ayhankesicioglu](https://github.com/ayhankesicioglu) |[azeemba](https://github.com/azeemba) |[azizk](https://github.com/azizk) |[bducharme](https://github.com/bducharme) |[Quorafind](https://github.com/Quorafind) |
+[arthurdenner](https://github.com/arthurdenner) |[apuyou](https://github.com/apuyou) |[ash-jc-allen](https://github.com/ash-jc-allen) |[atsawin](https://github.com/atsawin) |[ayhankesicioglu](https://github.com/ayhankesicioglu) |[azeemba](https://github.com/azeemba) |
-[ ](https://github.com/wbaaron) |[ ](https://github.com/bedgerotto) |[ ](https://github.com/cyu) |[ ](https://github.com/cartfisk) |[ ](https://github.com/cellvinchung) |[ ](https://github.com/chao) |
+[ ](https://github.com/azizk) |[ ](https://github.com/bducharme) |[ ](https://github.com/Quorafind) |[ ](https://github.com/wbaaron) |[ ](https://github.com/bedgerotto) |[ ](https://github.com/cyu) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[wbaaron](https://github.com/wbaaron) |[bedgerotto](https://github.com/bedgerotto) |[cyu](https://github.com/cyu) |[cartfisk](https://github.com/cartfisk) |[cellvinchung](https://github.com/cellvinchung) |[chao](https://github.com/chao) |
+[azizk](https://github.com/azizk) |[bducharme](https://github.com/bducharme) |[Quorafind](https://github.com/Quorafind) |[wbaaron](https://github.com/wbaaron) |[bedgerotto](https://github.com/bedgerotto) |[cyu](https://github.com/cyu) |
-[ ](https://github.com/Cretezy) |[ ](https://github.com/charlybillaud) |[ ](https://github.com/csprance) |[ ](https://github.com/cfra) |[ ](https://github.com/Aarbel) |[ ](https://github.com/cbush06) |
+[ ](https://github.com/cartfisk) |[ ](https://github.com/cellvinchung) |[ ](https://github.com/chao) |[ ](https://github.com/Cretezy) |[ ](https://github.com/charlybillaud) |[ ](https://github.com/csprance) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[Cretezy](https://github.com/Cretezy) |[charlybillaud](https://github.com/charlybillaud) |[csprance](https://github.com/csprance) |[cfra](https://github.com/cfra) |[Aarbel](https://github.com/Aarbel) |[cbush06](https://github.com/cbush06) |
+[cartfisk](https://github.com/cartfisk) |[cellvinchung](https://github.com/cellvinchung) |[chao](https://github.com/chao) |[Cretezy](https://github.com/Cretezy) |[charlybillaud](https://github.com/charlybillaud) |[csprance](https://github.com/csprance) |
-[ ](https://github.com/czj) |[ ](https://github.com/CommanderRoot) |[ ](https://github.com/ardeois) |[ ](https://github.com/sercraig) |[ ](https://github.com/Cruaier) |[ ](https://github.com/danmichaelo) |
+[ ](https://github.com/cfra) |[ ](https://github.com/Aarbel) |[ ](https://github.com/cbush06) |[ ](https://github.com/czj) |[ ](https://github.com/CommanderRoot) |[ ](https://github.com/ardeois) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[czj](https://github.com/czj) |[CommanderRoot](https://github.com/CommanderRoot) |[ardeois](https://github.com/ardeois) |[sercraig](https://github.com/sercraig) |[Cruaier](https://github.com/Cruaier) |[danmichaelo](https://github.com/danmichaelo) |
+[cfra](https://github.com/cfra) |[Aarbel](https://github.com/Aarbel) |[cbush06](https://github.com/cbush06) |[czj](https://github.com/czj) |[CommanderRoot](https://github.com/CommanderRoot) |[ardeois](https://github.com/ardeois) |
-[ ](https://github.com/danschalow) |[ ](https://github.com/danilat) |[ ](https://github.com/mrboomer) |[ ](https://github.com/Cantabar) |[ ](https://github.com/KaminskiDaniell) |[ ](https://github.com/akizor) |
+[ ](https://github.com/sercraig) |[ ](https://github.com/Cruaier) |[ ](https://github.com/danmichaelo) |[ ](https://github.com/danschalow) |[ ](https://github.com/danilat) |[ ](https://github.com/mrboomer) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[danschalow](https://github.com/danschalow) |[danilat](https://github.com/danilat) |[mrboomer](https://github.com/mrboomer) |[Cantabar](https://github.com/Cantabar) |[KaminskiDaniell](https://github.com/KaminskiDaniell) |[akizor](https://github.com/akizor) |
+[sercraig](https://github.com/sercraig) |[Cruaier](https://github.com/Cruaier) |[danmichaelo](https://github.com/danmichaelo) |[danschalow](https://github.com/danschalow) |[danilat](https://github.com/danilat) |[mrboomer](https://github.com/mrboomer) |
-[ ](https://github.com/davilima6) |[ ](https://github.com/DennisKofflard) |[ ](https://github.com/jeetiss) |[ ](https://github.com/sweetro) |[ ](https://github.com/EdgarSantiago93) |[ ](https://github.com/emuell) |
+[ ](https://github.com/Cantabar) |[ ](https://github.com/KaminskiDaniell) |[ ](https://github.com/akizor) |[ ](https://github.com/davilima6) |[ ](https://github.com/DennisKofflard) |[ ](https://github.com/jeetiss) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[davilima6](https://github.com/davilima6) |[DennisKofflard](https://github.com/DennisKofflard) |[jeetiss](https://github.com/jeetiss) |[sweetro](https://github.com/sweetro) |[EdgarSantiago93](https://github.com/EdgarSantiago93) |[emuell](https://github.com/emuell) |
+[Cantabar](https://github.com/Cantabar) |[KaminskiDaniell](https://github.com/KaminskiDaniell) |[akizor](https://github.com/akizor) |[davilima6](https://github.com/davilima6) |[DennisKofflard](https://github.com/DennisKofflard) |[jeetiss](https://github.com/jeetiss) |
-[ ](https://github.com/efbautista) |[ ](https://github.com/yoldar) |[ ](https://github.com/eliOcs) |[ ](https://github.com/EnricoSottile) |[ ](https://github.com/epexa) |[ ](https://github.com/Gkleinereva) |
+[ ](https://github.com/sweetro) |[ ](https://github.com/EdgarSantiago93) |[ ](https://github.com/emuell) |[ ](https://github.com/efbautista) |[ ](https://github.com/yoldar) |[ ](https://github.com/eliOcs) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[efbautista](https://github.com/efbautista) |[yoldar](https://github.com/yoldar) |[eliOcs](https://github.com/eliOcs) |[EnricoSottile](https://github.com/EnricoSottile) |[epexa](https://github.com/epexa) |[Gkleinereva](https://github.com/Gkleinereva) |
+[sweetro](https://github.com/sweetro) |[EdgarSantiago93](https://github.com/EdgarSantiago93) |[emuell](https://github.com/emuell) |[efbautista](https://github.com/efbautista) |[yoldar](https://github.com/yoldar) |[eliOcs](https://github.com/eliOcs) |
-[ ](https://github.com/fgallinari) |[ ](https://github.com/ferdiusa) |[ ](https://github.com/dtrucs) |[ ](https://github.com/gabiganam) |[ ](https://github.com/geoffappleford) |[ ](https://github.com/gjungb) |
+[ ](https://github.com/EnricoSottile) |[ ](https://github.com/epexa) |[ ](https://github.com/Gkleinereva) |[ ](https://github.com/fgallinari) |[ ](https://github.com/ferdiusa) |[ ](https://github.com/dtrucs) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[fgallinari](https://github.com/fgallinari) |[ferdiusa](https://github.com/ferdiusa) |[dtrucs](https://github.com/dtrucs) |[gabiganam](https://github.com/gabiganam) |[geoffappleford](https://github.com/geoffappleford) |[gjungb](https://github.com/gjungb) |
+[EnricoSottile](https://github.com/EnricoSottile) |[epexa](https://github.com/epexa) |[Gkleinereva](https://github.com/Gkleinereva) |[fgallinari](https://github.com/fgallinari) |[ferdiusa](https://github.com/ferdiusa) |[dtrucs](https://github.com/dtrucs) |
-[ ](https://github.com/roenschg) |[ ](https://github.com/HughbertD) |[ ](https://github.com/HussainAlkhalifah) |[ ](https://github.com/huydod) |[ ](https://github.com/IanVS) |[ ](https://github.com/ishendyweb) |
+[ ](https://github.com/fuadscodes) |[ ](https://github.com/gabiganam) |[ ](https://github.com/geoffappleford) |[ ](https://github.com/gjungb) |[ ](https://github.com/roenschg) |[ ](https://github.com/giacomocerquone) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[roenschg](https://github.com/roenschg) |[HughbertD](https://github.com/HughbertD) |[HussainAlkhalifah](https://github.com/HussainAlkhalifah) |[huydod](https://github.com/huydod) |[IanVS](https://github.com/IanVS) |[ishendyweb](https://github.com/ishendyweb) |
+[fuadscodes](https://github.com/fuadscodes) |[gabiganam](https://github.com/gabiganam) |[geoffappleford](https://github.com/geoffappleford) |[gjungb](https://github.com/gjungb) |[roenschg](https://github.com/roenschg) |[giacomocerquone](https://github.com/giacomocerquone) |
-[ ](https://github.com/NaxYo) |[ ](https://github.com/intenzive) |[ ](https://github.com/GreenJimmy) |[ ](https://github.com/mazoruss) |[ ](https://github.com/JacobMGEvans) |[ ](https://github.com/gaejabong) |
+[ ](https://github.com/HughbertD) |[ ](https://github.com/HussainAlkhalifah) |[ ](https://github.com/huydod) |[ ](https://github.com/IanVS) |[ ](https://github.com/ishendyweb) |[ ](https://github.com/NaxYo) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[NaxYo](https://github.com/NaxYo) |[intenzive](https://github.com/intenzive) |[GreenJimmy](https://github.com/GreenJimmy) |[mazoruss](https://github.com/mazoruss) |[JacobMGEvans](https://github.com/JacobMGEvans) |[gaejabong](https://github.com/gaejabong) |
+[HughbertD](https://github.com/HughbertD) |[HussainAlkhalifah](https://github.com/HussainAlkhalifah) |[huydod](https://github.com/huydod) |[IanVS](https://github.com/IanVS) |[ishendyweb](https://github.com/ishendyweb) |[NaxYo](https://github.com/NaxYo) |
-[ ](https://github.com/JakubHaladej) |[ ](https://github.com/Jbithell) |[ ](https://github.com/jcjmcclean) |[ ](https://github.com/jamestiotio) |[ ](https://github.com/janklimo) |[ ](https://github.com/janwilts) |
+[ ](https://github.com/intenzive) |[ ](https://github.com/GreenJimmy) |[ ](https://github.com/mazoruss) |[ ](https://github.com/JacobMGEvans) |[ ](https://github.com/gaejabong) |[ ](https://github.com/JakubHaladej) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[JakubHaladej](https://github.com/JakubHaladej) |[Jbithell](https://github.com/Jbithell) |[jcjmcclean](https://github.com/jcjmcclean) |[jamestiotio](https://github.com/jamestiotio) |[janklimo](https://github.com/janklimo) |[janwilts](https://github.com/janwilts) |
+[intenzive](https://github.com/intenzive) |[GreenJimmy](https://github.com/GreenJimmy) |[mazoruss](https://github.com/mazoruss) |[JacobMGEvans](https://github.com/JacobMGEvans) |[gaejabong](https://github.com/gaejabong) |[JakubHaladej](https://github.com/JakubHaladej) |
-[ ](https://github.com/vith) |[ ](https://github.com/jessica-coursera) |[ ](https://github.com/Jmales) |[ ](https://github.com/theJoeBiz) |[ ](https://github.com/profsmallpine) |[ ](https://github.com/chromacoma) |
+[ ](https://github.com/Jbithell) |[ ](https://github.com/jcjmcclean) |[ ](https://github.com/jamestiotio) |[ ](https://github.com/janklimo) |[ ](https://github.com/janwilts) |[ ](https://github.com/vith) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[vith](https://github.com/vith) |[jessica-coursera](https://github.com/jessica-coursera) |[Jmales](https://github.com/Jmales) |[theJoeBiz](https://github.com/theJoeBiz) |[profsmallpine](https://github.com/profsmallpine) |[chromacoma](https://github.com/chromacoma) |
+[Jbithell](https://github.com/Jbithell) |[jcjmcclean](https://github.com/jcjmcclean) |[jamestiotio](https://github.com/jamestiotio) |[janklimo](https://github.com/janklimo) |[janwilts](https://github.com/janwilts) |[vith](https://github.com/vith) |
-[ ](https://github.com/jsanchez034) |[ ](https://github.com/jonathanarbely) |[ ](https://github.com/jderrough) |[ ](https://github.com/jorgeepc) |[ ](https://github.com/jszobody) |[ ](https://github.com/jcalonso) |
+[ ](https://github.com/jessica-coursera) |[ ](https://github.com/Jmales) |[ ](https://github.com/theJoeBiz) |[ ](https://github.com/profsmallpine) |[ ](https://github.com/chromacoma) |[ ](https://github.com/jsanchez034) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[jsanchez034](https://github.com/jsanchez034) |[jonathanarbely](https://github.com/jonathanarbely) |[jderrough](https://github.com/jderrough) |[jorgeepc](https://github.com/jorgeepc) |[jszobody](https://github.com/jszobody) |[jcalonso](https://github.com/jcalonso) |
+[jessica-coursera](https://github.com/jessica-coursera) |[Jmales](https://github.com/Jmales) |[theJoeBiz](https://github.com/theJoeBiz) |[profsmallpine](https://github.com/profsmallpine) |[chromacoma](https://github.com/chromacoma) |[jsanchez034](https://github.com/jsanchez034) |
-[ ](https://github.com/jmontoyaa) |[ ](https://github.com/mellow-fellow) |[ ](https://github.com/tykarol) |[ ](https://github.com/kaspermeinema) |[ ](https://github.com/firesharkstudios) |[ ](https://github.com/kevin-west-10x) |
+[ ](https://github.com/jonathanarbely) |[ ](https://github.com/jderrough) |[ ](https://github.com/jorgeepc) |[ ](https://github.com/jszobody) |[ ](https://github.com/jcalonso) |[ ](https://github.com/jmontoyaa) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[jmontoyaa](https://github.com/jmontoyaa) |[mellow-fellow](https://github.com/mellow-fellow) |[tykarol](https://github.com/tykarol) |[kaspermeinema](https://github.com/kaspermeinema) |[firesharkstudios](https://github.com/firesharkstudios) |[kevin-west-10x](https://github.com/kevin-west-10x) |
+[jonathanarbely](https://github.com/jonathanarbely) |[jderrough](https://github.com/jderrough) |[jorgeepc](https://github.com/jorgeepc) |[jszobody](https://github.com/jszobody) |[jcalonso](https://github.com/jcalonso) |[jmontoyaa](https://github.com/jmontoyaa) |
-[ ](https://github.com/elkebab) |[ ](https://github.com/kyleparisi) |[ ](https://github.com/labohkip81) |[ ](https://github.com/leaanthony) |[ ](https://github.com/larowlan) |[ ](https://github.com/dviry) |
+[ ](https://github.com/mellow-fellow) |[ ](https://github.com/tykarol) |[ ](https://github.com/kaspermeinema) |[ ](https://github.com/firesharkstudios) |[ ](https://github.com/kevin-west-10x) |[ ](https://github.com/elkebab) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[elkebab](https://github.com/elkebab) |[kyleparisi](https://github.com/kyleparisi) |[labohkip81](https://github.com/labohkip81) |[leaanthony](https://github.com/leaanthony) |[larowlan](https://github.com/larowlan) |[dviry](https://github.com/dviry) |
+[mellow-fellow](https://github.com/mellow-fellow) |[tykarol](https://github.com/tykarol) |[kaspermeinema](https://github.com/kaspermeinema) |[firesharkstudios](https://github.com/firesharkstudios) |[kevin-west-10x](https://github.com/kevin-west-10x) |[elkebab](https://github.com/elkebab) |
+
+[ ](https://github.com/kyleparisi) |[ ](https://github.com/labohkip81) |[ ](https://github.com/hoangbits) |[ ](https://github.com/leaanthony) |[ ](https://github.com/larowlan) |[ ](https://github.com/dviry) |
+:---: |:---: |:---: |:---: |:---: |:---: |
+[kyleparisi](https://github.com/kyleparisi) |[labohkip81](https://github.com/labohkip81) |[hoangbits](https://github.com/hoangbits) |[leaanthony](https://github.com/leaanthony) |[larowlan](https://github.com/larowlan) |[dviry](https://github.com/dviry) |
[ ](https://github.com/galli-leo) |[ ](https://github.com/leods92) |[ ](https://github.com/louim) |[ ](https://github.com/ombr) |[ ](https://github.com/lucaperret) |[ ](https://github.com/lucax88x) |
:---: |:---: |:---: |:---: |:---: |:---: |
@@ -405,65 +409,69 @@ Use Uppy in your project? [Let us know](https://github.com/transloadit/uppy/issu
:---: |:---: |:---: |:---: |:---: |:---: |
[mogzol](https://github.com/mogzol) |[navruzm](https://github.com/navruzm) |[marton-laszlo-attila](https://github.com/marton-laszlo-attila) |[pleasespammelater](https://github.com/pleasespammelater) |[naveed-ahmad](https://github.com/naveed-ahmad) |[nicojones](https://github.com/nicojones) |
-[ ](https://github.com/coreprocess) |[ ](https://github.com/nil1511) |[ ](https://github.com/leftdevel) |[ ](https://github.com/Ozodbek1405) |[ ](https://github.com/cryptic022) |[ ](https://github.com/patricklindsay) |
+[ ](https://github.com/coreprocess) |[ ](https://github.com/nil1511) |[ ](https://github.com/leftdevel) |[ ](https://github.com/Ozodbek1405) |[ ](https://github.com/cryptic022) |[ ](https://github.com/pascalwengerter) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[coreprocess](https://github.com/coreprocess) |[nil1511](https://github.com/nil1511) |[leftdevel](https://github.com/leftdevel) |[Ozodbek1405](https://github.com/Ozodbek1405) |[cryptic022](https://github.com/cryptic022) |[patricklindsay](https://github.com/patricklindsay) |
+[coreprocess](https://github.com/coreprocess) |[nil1511](https://github.com/nil1511) |[leftdevel](https://github.com/leftdevel) |[Ozodbek1405](https://github.com/Ozodbek1405) |[cryptic022](https://github.com/cryptic022) |[pascalwengerter](https://github.com/pascalwengerter) |
-[ ](https://github.com/plneto) |[ ](https://github.com/pedrofs) |[ ](https://github.com/pmusaraj) |[ ](https://github.com/phillipalexander) |[ ](https://github.com/ppadmavilasom) |[ ](https://github.com/Pzoco) |
+[ ](https://github.com/patricklindsay) |[ ](https://github.com/plneto) |[ ](https://github.com/pedrofs) |[ ](https://github.com/pmusaraj) |[ ](https://github.com/phillipalexander) |[ ](https://github.com/ppadmavilasom) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[plneto](https://github.com/plneto) |[pedrofs](https://github.com/pedrofs) |[pmusaraj](https://github.com/pmusaraj) |[phillipalexander](https://github.com/phillipalexander) |[ppadmavilasom](https://github.com/ppadmavilasom) |[Pzoco](https://github.com/Pzoco) |
+[patricklindsay](https://github.com/patricklindsay) |[plneto](https://github.com/plneto) |[pedrofs](https://github.com/pedrofs) |[pmusaraj](https://github.com/pmusaraj) |[phillipalexander](https://github.com/phillipalexander) |[ppadmavilasom](https://github.com/ppadmavilasom) |
-[ ](https://github.com/eman8519) |[ ](https://github.com/luarmr) |[ ](https://github.com/raulibanez) |[ ](https://github.com/refo) |[ ](https://github.com/SxDx) |[ ](https://github.com/robwilson1) |
+[ ](https://github.com/Pzoco) |[ ](https://github.com/eman8519) |[ ](https://github.com/luarmr) |[ ](https://github.com/raulibanez) |[ ](https://github.com/refo) |[ ](https://github.com/SxDx) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[eman8519](https://github.com/eman8519) |[luarmr](https://github.com/luarmr) |[raulibanez](https://github.com/raulibanez) |[refo](https://github.com/refo) |[SxDx](https://github.com/SxDx) |[robwilson1](https://github.com/robwilson1) |
+[Pzoco](https://github.com/Pzoco) |[eman8519](https://github.com/eman8519) |[luarmr](https://github.com/luarmr) |[raulibanez](https://github.com/raulibanez) |[refo](https://github.com/refo) |[SxDx](https://github.com/SxDx) |
-[ ](https://github.com/romain-preston) |[ ](https://github.com/scherroman) |[ ](https://github.com/rossng) |[ ](https://github.com/rart) |[ ](https://github.com/fortunto2) |[ ](https://github.com/samuelcolburn) |
+[ ](https://github.com/robwilson1) |[ ](https://github.com/romain-preston) |[ ](https://github.com/scherroman) |[ ](https://github.com/rossng) |[ ](https://github.com/rart) |[ ](https://github.com/fortunto2) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[romain-preston](https://github.com/romain-preston) |[scherroman](https://github.com/scherroman) |[rossng](https://github.com/rossng) |[rart](https://github.com/rart) |[fortunto2](https://github.com/fortunto2) |[samuelcolburn](https://github.com/samuelcolburn) |
+[robwilson1](https://github.com/robwilson1) |[romain-preston](https://github.com/romain-preston) |[scherroman](https://github.com/scherroman) |[rossng](https://github.com/rossng) |[rart](https://github.com/rart) |[fortunto2](https://github.com/fortunto2) |
-[ ](https://github.com/sebasegovia01) |[ ](https://github.com/sergei-zelinsky) |[ ](https://github.com/szh) |[ ](https://github.com/SpazzMarticus) |[ ](https://github.com/waptik) |[ ](https://github.com/amaitu) |
+[ ](https://github.com/samuelcolburn) |[ ](https://github.com/sebasegovia01) |[ ](https://github.com/sergei-zelinsky) |[ ](https://github.com/szh) |[ ](https://github.com/SpazzMarticus) |[ ](https://github.com/schonert) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[sebasegovia01](https://github.com/sebasegovia01) |[sergei-zelinsky](https://github.com/sergei-zelinsky) |[szh](https://github.com/szh) |[SpazzMarticus](https://github.com/SpazzMarticus) |[waptik](https://github.com/waptik) |[amaitu](https://github.com/amaitu) |
+[samuelcolburn](https://github.com/samuelcolburn) |[sebasegovia01](https://github.com/sebasegovia01) |[sergei-zelinsky](https://github.com/sergei-zelinsky) |[szh](https://github.com/szh) |[SpazzMarticus](https://github.com/SpazzMarticus) |[schonert](https://github.com/schonert) |
-[ ](https://github.com/steverob) |[ ](https://github.com/sjauld) |[ ](https://github.com/strayer) |[ ](https://github.com/taj) |[ ](https://github.com/Tashows) |[ ](https://github.com/twarlop) |
+[ ](https://github.com/waptik) |[ ](https://github.com/amaitu) |[ ](https://github.com/steverob) |[ ](https://github.com/sjauld) |[ ](https://github.com/strayer) |[ ](https://github.com/taj) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[steverob](https://github.com/steverob) |[sjauld](https://github.com/sjauld) |[strayer](https://github.com/strayer) |[taj](https://github.com/taj) |[Tashows](https://github.com/Tashows) |[twarlop](https://github.com/twarlop) |
+[waptik](https://github.com/waptik) |[amaitu](https://github.com/amaitu) |[steverob](https://github.com/steverob) |[sjauld](https://github.com/sjauld) |[strayer](https://github.com/strayer) |[taj](https://github.com/taj) |
-[ ](https://github.com/tmaier) |[ ](https://github.com/WIStudent) |[ ](https://github.com/tomsaleeba) |[ ](https://github.com/tomekp) |[ ](https://github.com/tvaliasek) |[ ](https://github.com/vially) |
+[ ](https://github.com/Tashows) |[ ](https://github.com/twarlop) |[ ](https://github.com/tmaier) |[ ](https://github.com/WIStudent) |[ ](https://github.com/tomsaleeba) |[ ](https://github.com/tomekp) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[tmaier](https://github.com/tmaier) |[WIStudent](https://github.com/WIStudent) |[tomsaleeba](https://github.com/tomsaleeba) |[tomekp](https://github.com/tomekp) |[tvaliasek](https://github.com/tvaliasek) |[vially](https://github.com/vially) |
+[Tashows](https://github.com/Tashows) |[twarlop](https://github.com/twarlop) |[tmaier](https://github.com/tmaier) |[WIStudent](https://github.com/WIStudent) |[tomsaleeba](https://github.com/tomsaleeba) |[tomekp](https://github.com/tomekp) |
-[ ](https://github.com/valentinoli) |[ ](https://github.com/nagyv) |[ ](https://github.com/dwnste) |[ ](https://github.com/weston-sankey-mark43) |[ ](https://github.com/willycamargo) |[ ](https://github.com/xhocquet) |
+[ ](https://github.com/tvaliasek) |[ ](https://github.com/vially) |[ ](https://github.com/valentinoli) |[ ](https://github.com/nagyv) |[ ](https://github.com/dwnste) |[ ](https://github.com/weston-sankey-mark43) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[valentinoli](https://github.com/valentinoli) |[nagyv](https://github.com/nagyv) |[dwnste](https://github.com/dwnste) |[weston-sankey-mark43](https://github.com/weston-sankey-mark43) |[willycamargo](https://github.com/willycamargo) |[xhocquet](https://github.com/xhocquet) |
+[tvaliasek](https://github.com/tvaliasek) |[vially](https://github.com/vially) |[valentinoli](https://github.com/valentinoli) |[nagyv](https://github.com/nagyv) |[dwnste](https://github.com/dwnste) |[weston-sankey-mark43](https://github.com/weston-sankey-mark43) |
-[ ](https://github.com/YehudaKremer) |[ ](https://github.com/Youssef1313) |[ ](https://github.com/zachconner) |[ ](https://github.com/zacharylawson) |[ ](https://github.com/zackbloom) |[ ](https://github.com/sartoshi-foot-dao) |
+[ ](https://github.com/willycamargo) |[ ](https://github.com/xhocquet) |[ ](https://github.com/YehudaKremer) |[ ](https://github.com/zachconner) |[ ](https://github.com/zacharylawson) |[ ](https://github.com/zackbloom) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[YehudaKremer](https://github.com/YehudaKremer) |[Youssef1313](https://github.com/Youssef1313) |[zachconner](https://github.com/zachconner) |[zacharylawson](https://github.com/zacharylawson) |[zackbloom](https://github.com/zackbloom) |[sartoshi-foot-dao](https://github.com/sartoshi-foot-dao) |
+[willycamargo](https://github.com/willycamargo) |[xhocquet](https://github.com/xhocquet) |[YehudaKremer](https://github.com/YehudaKremer) |[zachconner](https://github.com/zachconner) |[zacharylawson](https://github.com/zacharylawson) |[zackbloom](https://github.com/zackbloom) |
-[ ](https://github.com/agreene-coursera) |[ ](https://github.com/alfatv) |[ ](https://github.com/arggh) |[ ](https://github.com/avalla) |[ ](https://github.com/bdirito) |[ ](https://github.com/c0b41) |
+[ ](https://github.com/sartoshi-foot-dao) |[ ](https://github.com/agreene-coursera) |[ ](https://github.com/alfatv) |[ ](https://github.com/arggh) |[ ](https://github.com/avalla) |[ ](https://github.com/bdirito) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[agreene-coursera](https://github.com/agreene-coursera) |[alfatv](https://github.com/alfatv) |[arggh](https://github.com/arggh) |[avalla](https://github.com/avalla) |[bdirito](https://github.com/bdirito) |[c0b41](https://github.com/c0b41) |
+[sartoshi-foot-dao](https://github.com/sartoshi-foot-dao) |[agreene-coursera](https://github.com/agreene-coursera) |[alfatv](https://github.com/alfatv) |[arggh](https://github.com/arggh) |[avalla](https://github.com/avalla) |[bdirito](https://github.com/bdirito) |
-[ ](https://github.com/canvasbh) |[ ](https://github.com/christianwengert) |[ ](https://github.com/craigcbrunner) |[ ](https://github.com/darthf1) |[ ](https://github.com/dkisic) |[ ](https://github.com/fingul) |
+[ ](https://github.com/c0b41) |[ ](https://github.com/canvasbh) |[ ](https://github.com/christianwengert) |[ ](https://github.com/craigcbrunner) |[ ](https://github.com/darthf1) |[ ](https://github.com/dkisic) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[canvasbh](https://github.com/canvasbh) |[christianwengert](https://github.com/christianwengert) |[craigcbrunner](https://github.com/craigcbrunner) |[darthf1](https://github.com/darthf1) |[dkisic](https://github.com/dkisic) |[fingul](https://github.com/fingul) |
+[c0b41](https://github.com/c0b41) |[canvasbh](https://github.com/canvasbh) |[christianwengert](https://github.com/christianwengert) |[craigcbrunner](https://github.com/craigcbrunner) |[darthf1](https://github.com/darthf1) |[dkisic](https://github.com/dkisic) |
-[ ](https://github.com/franckl) |[ ](https://github.com/gaelicwinter) |[ ](https://github.com/green-mike) |[ ](https://github.com/hxgf) |[ ](https://github.com/johnmanjiro13) |[ ](https://github.com/sontixyou) |
+[ ](https://github.com/elliotsayes) |[ ](https://github.com/fingul) |[ ](https://github.com/franckl) |[ ](https://github.com/gaelicwinter) |[ ](https://github.com/green-mike) |[ ](https://github.com/hxgf) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[franckl](https://github.com/franckl) |[gaelicwinter](https://github.com/gaelicwinter) |[green-mike](https://github.com/green-mike) |[hxgf](https://github.com/hxgf) |[johnmanjiro13](https://github.com/johnmanjiro13) |[sontixyou](https://github.com/sontixyou) |
+[elliotsayes](https://github.com/elliotsayes) |[fingul](https://github.com/fingul) |[franckl](https://github.com/franckl) |[gaelicwinter](https://github.com/gaelicwinter) |[green-mike](https://github.com/green-mike) |[hxgf](https://github.com/hxgf) |
-[ ](https://github.com/kode-ninja) |[ ](https://github.com/jx-zyf) |[ ](https://github.com/magumbo) |[ ](https://github.com/mosi-kha) |[ ](https://github.com/ninesalt) |[ ](https://github.com/phil714) |
+[ ](https://github.com/johnmanjiro13) |[ ](https://github.com/sontixyou) |[ ](https://github.com/kode-ninja) |[ ](https://github.com/jx-zyf) |[ ](https://github.com/magumbo) |[ ](https://github.com/mosi-kha) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[kode-ninja](https://github.com/kode-ninja) |[jx-zyf](https://github.com/jx-zyf) |[magumbo](https://github.com/magumbo) |[mosi-kha](https://github.com/mosi-kha) |[ninesalt](https://github.com/ninesalt) |[phil714](https://github.com/phil714) |
+[johnmanjiro13](https://github.com/johnmanjiro13) |[sontixyou](https://github.com/sontixyou) |[kode-ninja](https://github.com/kode-ninja) |[jx-zyf](https://github.com/jx-zyf) |[magumbo](https://github.com/magumbo) |[mosi-kha](https://github.com/mosi-kha) |
-[ ](https://github.com/luntta) |[ ](https://github.com/rhymes) |[ ](https://github.com/rlebosse) |[ ](https://github.com/rtaieb) |[ ](https://github.com/slawexxx44) |[ ](https://github.com/thanhthot) |
+[ ](https://github.com/ninesalt) |[ ](https://github.com/phil714) |[ ](https://github.com/luntta) |[ ](https://github.com/rhymes) |[ ](https://github.com/rlebosse) |[ ](https://github.com/rtaieb) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[luntta](https://github.com/luntta) |[rhymes](https://github.com/rhymes) |[rlebosse](https://github.com/rlebosse) |[rtaieb](https://github.com/rtaieb) |[slawexxx44](https://github.com/slawexxx44) |[thanhthot](https://github.com/thanhthot) |
+[ninesalt](https://github.com/ninesalt) |[phil714](https://github.com/phil714) |[luntta](https://github.com/luntta) |[rhymes](https://github.com/rhymes) |[rlebosse](https://github.com/rlebosse) |[rtaieb](https://github.com/rtaieb) |
-[ ](https://github.com/tinny77) |[ ](https://github.com/tusharjkhunt) |[ ](https://github.com/vedran555) |[ ](https://github.com/yoann-hellopret) |[ ](https://github.com/olitomas) |[ ](https://github.com/JimmyLv) |
+[ ](https://github.com/slawexxx44) |[ ](https://github.com/thanhthot) |[ ](https://github.com/tinny77) |[ ](https://github.com/tusharjkhunt) |[ ](https://github.com/vedran555) |[ ](https://github.com/yoann-hellopret) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[tinny77](https://github.com/tinny77) |[tusharjkhunt](https://github.com/tusharjkhunt) |[vedran555](https://github.com/vedran555) |[yoann-hellopret](https://github.com/yoann-hellopret) |[olitomas](https://github.com/olitomas) |[JimmyLv](https://github.com/JimmyLv) |
+[slawexxx44](https://github.com/slawexxx44) |[thanhthot](https://github.com/thanhthot) |[tinny77](https://github.com/tinny77) |[tusharjkhunt](https://github.com/tusharjkhunt) |[vedran555](https://github.com/vedran555) |[yoann-hellopret](https://github.com/yoann-hellopret) |
+
+[ ](https://github.com/olitomas) |[ ](https://github.com/JimmyLv) |
+:---: |:---: |
+[olitomas](https://github.com/olitomas) |[JimmyLv](https://github.com/JimmyLv) |
diff --git a/e2e/cypress.config.mjs b/e2e/cypress.config.mjs
index 4873b7b451c..9932263602f 100644
--- a/e2e/cypress.config.mjs
+++ b/e2e/cypress.config.mjs
@@ -1,6 +1,4 @@
-// eslint-disable-next-line import/no-extraneous-dependencies
import { defineConfig } from 'cypress'
-// eslint-disable-next-line import/no-extraneous-dependencies
import installLogsPrinter from 'cypress-terminal-report/src/installLogsPrinter.js'
export default defineConfig({
@@ -10,8 +8,7 @@ export default defineConfig({
baseUrl: 'http://localhost:1234',
specPattern: 'cypress/integration/*.spec.ts',
- // eslint-disable-next-line no-unused-vars
- setupNodeEvents (on, config) {
+ setupNodeEvents (on) {
// implement node event listeners here
installLogsPrinter(on)
},
diff --git a/e2e/generate-test.mjs b/e2e/generate-test.mjs
index 739a3936c5c..c4e9cc8eb52 100755
--- a/e2e/generate-test.mjs
+++ b/e2e/generate-test.mjs
@@ -1,5 +1,4 @@
#!/usr/bin/env node
-/* eslint-disable no-console, import/no-extraneous-dependencies */
import prompts from 'prompts'
import fs from 'node:fs/promises'
diff --git a/e2e/package.json b/e2e/package.json
index 92df911f034..2fe1ef2582b 100644
--- a/e2e/package.json
+++ b/e2e/package.json
@@ -48,6 +48,7 @@
"cypress": "^10.0.0",
"cypress-terminal-report": "^4.1.2",
"deep-freeze": "^0.0.1",
+ "execa": "^6.1.0",
"parcel": "^2.0.1",
"prompts": "^2.4.2",
"react": "^18.1.0",
diff --git a/e2e/start-companion-with-load-balancer.mjs b/e2e/start-companion-with-load-balancer.mjs
new file mode 100755
index 00000000000..28de8fcc711
--- /dev/null
+++ b/e2e/start-companion-with-load-balancer.mjs
@@ -0,0 +1,79 @@
+#!/usr/bin/env node
+
+import { execa } from 'execa'
+import http from 'node:http'
+import httpProxy from 'http-proxy'
+
+const numInstances = 3
+const lbPort = 3020
+const companionStartPort = 3021
+
+// simple load balancer that will direct requests round robin between companion instances
+function createLoadBalancer (baseUrls) {
+ const proxy = httpProxy.createProxyServer({ ws: true })
+
+ let i = 0
+
+ function getTarget () {
+ return baseUrls[i % baseUrls.length]
+ }
+
+ const server = http.createServer((req, res) => {
+ const target = getTarget()
+ // console.log('req', req.method, target, req.url)
+ proxy.web(req, res, { target }, (err) => {
+ console.error('Load balancer failed to proxy request', err.message)
+ res.statusCode = 500
+ res.end()
+ })
+ i++
+ })
+
+ server.on('upgrade', (req, socket, head) => {
+ const target = getTarget()
+ // console.log('upgrade', target, req.url)
+ proxy.ws(req, socket, head, { target }, (err) => {
+ console.error('Load balancer failed to proxy websocket', err.message)
+ console.error(err)
+ socket.destroy()
+ })
+ i++
+ })
+
+ server.listen(lbPort)
+ console.log('Load balancer listening', lbPort)
+ return server
+}
+
+const startCompanion = ({ name, port }) => execa('nodemon', [
+ '--watch', 'packages/@uppy/companion/src', '--exec', 'node', '-r', 'dotenv/config', './packages/@uppy/companion/src/standalone/start-server.js',
+], {
+ cwd: new URL('../', import.meta.url),
+ stdio: 'inherit',
+ env: {
+ // Note: these env variables will override anything set in .env
+ COMPANION_PORT: port,
+ COMPANION_SECRET: 'development', // multi instance will not work without secret set
+ COMPANION_PREAUTH_SECRET: 'development', // multi instance will not work without secret set
+ COMPANION_ALLOW_LOCAL_URLS: 'true',
+ COMPANION_LOGGER_PROCESS_NAME: name,
+ },
+})
+
+const hosts = Array.from({ length: numInstances }, (_, index) => {
+ const port = companionStartPort + index
+ return { index, port }
+})
+
+console.log('Starting companion instances on ports', hosts.map(({ port }) => port))
+
+const companions = hosts.map(({ index, port }) => startCompanion({ name: `companion${index}`, port }))
+
+let loadBalancer
+try {
+ loadBalancer = createLoadBalancer(hosts.map(({ port }) => `http://localhost:${port}`))
+ await Promise.all(companions)
+} finally {
+ loadBalancer?.close()
+ companions.forEach((companion) => companion.kill())
+}
diff --git a/examples/aws-nodejs/public/drag.html b/examples/aws-nodejs/public/drag.html
index a3fc2459d62..4fa994b93b1 100644
--- a/examples/aws-nodejs/public/drag.html
+++ b/examples/aws-nodejs/public/drag.html
@@ -3,7 +3,7 @@
Uppy
-
+
@@ -14,7 +14,7 @@ Uploaded files:
-
+
+
```
2\. Add CSS to ``:
```html
-
+
```
3\. Initialize at the bottom of the closing `` tag:
@@ -181,5 +181,5 @@ export * from '@uppy/core'
If you’re using Uppy from CDN, those polyfills are already included in the bundle, no need to include anything additionally:
```html
-
+
```
diff --git a/website/src/docs/locales.md b/website/src/docs/locales.md
index 9ae4948f04c..d202e282752 100644
--- a/website/src/docs/locales.md
+++ b/website/src/docs/locales.md
@@ -34,8 +34,8 @@ const uppy = new Uppy({
Add a `
-
+
+
+
-
-
+
+
```
Please note that while you may be able to get 2.0 to work in IE11 this way, we do not officially support it anymore.
diff --git a/website/src/docs/xhr-upload.md b/website/src/docs/xhr-upload.md
index c90dc826eec..224fda39c16 100644
--- a/website/src/docs/xhr-upload.md
+++ b/website/src/docs/xhr-upload.md
@@ -209,9 +209,9 @@ function getResponseError (responseText, response) {
The field name containing a publically accessible location of the uploaded file in the response data returned by [`getResponseData()`](#getResponseData-responseText-response).
-### `timeout: 30 * 1000`
+### `timeout: 30_000`
-When no upload progress events have been received for this amount of milliseconds, assume the connection has an issue and abort the upload.
+When no upload progress events have been received for this amount of milliseconds, send a `'upload-stalled'` event.
Note that unlike the [`XMLHttpRequest.timeout`][XHR.timeout] property, this is a timer between progress events: the total upload can take longer than this value.
Set to `0` to disable this check.
diff --git a/website/src/examples/dashboard/app.es6 b/website/src/examples/dashboard/app.es6
index d9bc4283c52..1cd54f1ef0f 100644
--- a/website/src/examples/dashboard/app.es6
+++ b/website/src/examples/dashboard/app.es6
@@ -242,7 +242,7 @@ function loadLocaleFromCDN (localeName) {
const head = document.getElementsByTagName('head')[0]
const js = document.createElement('script')
js.type = 'text/javascript'
- js.src = `https://releases.transloadit.com/uppy/locales/v3.0.4/${localeName}.min.js`
+ js.src = `https://releases.transloadit.com/uppy/locales/v3.0.5/${localeName}.min.js`
head.appendChild(js)
}
diff --git a/website/src/examples/i18n/app.html b/website/src/examples/i18n/app.html
index 5d39ab21700..c57a4e5e151 100644
--- a/website/src/examples/i18n/app.html
+++ b/website/src/examples/i18n/app.html
@@ -1,7 +1,7 @@
-
+
@@ -12,9 +12,9 @@ Uploaded files:
-
-
-
+
+
+