diff --git a/.eslintrc.js b/.eslintrc.js
index 0b6c416759..df44d24e58 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -357,11 +357,13 @@ module.exports = {
'test/**/*.js',
'test/**/*.ts',
'*.test.js',
+ '*.test.ts',
'*.test-d.ts',
'*.test-d.tsx',
'postcss.config.js',
'.eslintrc.js',
'private/**/*.js',
+ 'private/**/*.mjs',
],
rules: {
'no-console': 'off',
@@ -461,9 +463,17 @@ module.exports = {
rules: {
'import/prefer-default-export': 'off',
'@typescript-eslint/no-explicit-any': 'off',
+ '@typescript-eslint/no-extra-semi': 'off',
'@typescript-eslint/no-namespace': 'off',
},
},
+ {
+ files: ['packages/@uppy/*/src/**/*.ts', 'packages/@uppy/*/src/**/*.tsx'],
+ excludedFiles: ['packages/@uppy/**/*.test.ts'],
+ rules: {
+ '@typescript-eslint/explicit-function-return-type': 'error',
+ },
+ },
{
files: ['**/*.md/*.*'],
rules: {
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index fbb46ee309..2fbb6471ee 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -34,8 +34,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
- # todo put back?
- node-version: [18.16.0, 20.x]
+ node-version: [18.x, 20.x]
steps:
- name: Checkout sources
uses: actions/checkout@v3
@@ -104,3 +103,22 @@ jobs:
corepack yarn run build:locale-pack
- name: Run type tests
run: corepack yarn run test:type
+ - name: Drop manual tyoes
+ # For backward compatiblity reasons, Uppy plugins ship a manual crafted d.ts file.
+ # We don't want to remove that file to not break users.
+ # However, we want to validate the types based on the types inferred from source.
+ run: |
+ node --input-type=module <<'EOF'
+ import { existsSync } from 'node:fs';
+ import { opendir, readFile, writeFile } from 'node:fs/promises';
+ for await (const dirent of await opendir('./packages/@uppy')) {
+ if (existsSync(`./packages/@uppy/${dirent.name}/tsconfig.build.json`)) {
+ const pjsonPath = `./packages/@uppy/${dirent.name}/package.json`
+ const pjson = JSON.parse(await readFile(pjsonPath));
+ delete pjson.types
+ await writeFile(pjsonPath, JSON.stringify(pjson))
+ }
+ }
+ EOF
+ - name: Attempt building TS packages
+ run: corepack yarn run build:ts
diff --git a/.gitignore b/.gitignore
index c95631cf94..3a76062d03 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,6 +14,8 @@ node_modules
yarn-error.log
.idea
.env
+tsconfig.tsbuildinfo
+tsconfig.build.tsbuildinfo
dist/
lib/
diff --git a/.prettierignore b/.prettierignore
index cfebd2d979..ba14940c1a 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -3,5 +3,6 @@ node_modules/
*.jsx
*.cjs
*.mjs
+!private/js2ts/*
*.md
*.lock
diff --git a/.yarn/patches/p-queue-npm-7.4.1-e0cf0a6f17.patch b/.yarn/patches/p-queue-npm-7.4.1-e0cf0a6f17.patch
new file mode 100644
index 0000000000..aaef0b1243
--- /dev/null
+++ b/.yarn/patches/p-queue-npm-7.4.1-e0cf0a6f17.patch
@@ -0,0 +1,12 @@
+diff --git a/package.json b/package.json
+index 8367745346fffd144a817ccf04912bb799e18b66..66dd17a4cd736089a332d72a70040701b0cd9c93 100644
+--- a/package.json
++++ b/package.json
+@@ -6,6 +6,7 @@
+ "repository": "sindresorhus/p-queue",
+ "funding": "https://github.com/sponsors/sindresorhus",
+ "type": "module",
++ "main": "./dist/index.js",
+ "exports": "./dist/index.js",
+ "engines": {
+ "node": ">=12"
diff --git a/BUNDLE-README.md b/BUNDLE-README.md
index 70a9c3ff85..4772ca2ec2 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 8509df25c2..48e75d90d9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,6 +12,139 @@ Please add your entries in this format:
In the current stage we aim to release a new version at least every month.
+## 3.20.0
+
+Released: 2023-11-24
+
+| Package | Version | Package | Version |
+| ---------------------- | ------- | ---------------------- | ------- |
+| @uppy/companion-client | 3.6.1 | @uppy/store-default | 3.1.0 |
+| @uppy/locales | 3.5.0 | uppy | 3.20.0 |
+
+- meta: uppy CDN: Export UIPlugin and BasePlugin (Artur Paikin / #4774)
+- @uppy/locales: Add missing translations to de_DE (Leonhard Melzer / #4800)
+- @uppy/store-default: refactor to typescript (Antoine du Hamel / #4785)
+- meta: improve js2ts script (Antoine du Hamel / #4786)
+- @uppy/companion-client: fix log type error (Mikael Finstad / #4766)
+- @uppy/companion-client: revert breaking change (Antoine du Hamel / #4801)
+- @uppy/locales: use TypeScript for source files (Antoine du Hamel / #4779)
+- meta: migrate AWS SDK v2 to v3 in `bin/uploadcdn` (Trivikram Kamat / #4776)
+
+
+## 3.19.1
+
+Released: 2023-11-12
+
+| Package | Version | Package | Version |
+| ------------------ | ------- | ------------------ | ------- |
+| @uppy/core | 3.7.1 | @uppy/react-native | 0.5.2 |
+| @uppy/dashboard | 3.7.1 | uppy | 3.19.1 |
+| @uppy/react | 3.2.1 | | |
+
+- @uppy/react: Revert "@uppy/react: add useUppyState (#4711)" (Artur Paikin / #4789)
+- @uppy/dashboard: fix(@uppy/dashboard): fix wrong option type in index.d.ts (dzcpy / #4788)
+- meta: fix build of TypeScript plugins (Antoine du Hamel / #4784)
+- @uppy/core,@uppy/dashboard,@uppy/react-native: Update Uppy's blue color to meet WCAG contrast requirements (Alexander Zaytsev / #4777)
+- meta: fix JS2TS script (Antoine du Hamel / #4778)
+
+
+## 3.19.0
+
+Released: 2023-11-08
+
+| Package | Version | Package | Version |
+| ---------------------- | ------- | ---------------------- | ------- |
+| @uppy/aws-s3 | 3.5.0 | @uppy/provider-views | 3.7.0 |
+| @uppy/aws-s3-multipart | 3.9.0 | @uppy/react | 3.2.0 |
+| @uppy/companion | 4.11.0 | @uppy/transloadit | 3.4.0 |
+| @uppy/companion-client | 3.6.0 | @uppy/tus | 3.4.0 |
+| @uppy/core | 3.7.0 | @uppy/url | 3.4.0 |
+| @uppy/dashboard | 3.7.0 | @uppy/utils | 5.6.0 |
+| @uppy/image-editor | 2.3.0 | @uppy/xhr-upload | 3.5.0 |
+| @uppy/locales | 3.4.0 | uppy | 3.19.0 |
+
+- @uppy/dashboard: Remove uppy-Dashboard-isFixed when uppy.close() is invoked (Artur Paikin / #4775)
+- @uppy/core,@uppy/dashboard: don't cancel all files when clicking "done" (Mikael Finstad / #4771)
+- @uppy/utils: refactor to TS (Antoine du Hamel / #4699)
+- @uppy/locales: locales: add ca_ES (ordago / #4772)
+- @uppy/companion: Companion+client stability fixes, error handling and retry (Mikael Finstad / #4734)
+- @uppy/companion: add getBucket metadata argument (Mikael Finstad / #4770)
+- @uppy/core: simplify types with class generic (JokcyLou / #4761)
+- @uppy/image-editor: More image editor improvements (Evgenia Karunus / #4676)
+- @uppy/react: add useUppyState (Merlijn Vos / #4711)
+
+
+## 3.18.1
+
+Released: 2023-10-23
+
+| Package | Version | Package | Version |
+| --------------- | ------- | --------------- | ------- |
+| @uppy/companion | 4.10.1 | uppy | 3.18.1 |
+| @uppy/core | 3.6.1 | | |
+
+- @uppy/companion: Bump jsonwebtoken from 8.5.1 to 9.0.0 in /packages/@uppy/companion (dependabot[bot] / #4751)
+- meta: Bump react-devtools-core from 4.25.0 to 4.28.4 (dependabot[bot] / #4756)
+- meta: Bump webpack from 5.74.0 to 5.88.2 (dependabot[bot] / #4740)
+- meta: Bump @babel/traverse from 7.22.5 to 7.23.2 (dependabot[bot] / #4739)
+- @uppy/core: fix `sideEffects` declaration (Antoine du Hamel / #4759)
+
+
+## 3.18.0
+
+Released: 2023-10-20
+
+| Package | Version | Package | Version |
+| ------------------------- | ------- | ------------------------- | ------- |
+| @uppy/angular | 0.6.1 | @uppy/progress-bar | 3.0.4 |
+| @uppy/audio | 1.1.4 | @uppy/provider-views | 3.6.0 |
+| @uppy/aws-s3 | 3.4.0 | @uppy/react | 3.1.4 |
+| @uppy/aws-s3-multipart | 3.8.0 | @uppy/remote-sources | 1.1.0 |
+| @uppy/box | 2.1.4 | @uppy/screen-capture | 3.1.3 |
+| @uppy/companion | 4.10.0 | @uppy/status-bar | 3.2.5 |
+| @uppy/companion-client | 3.5.0 | @uppy/store-default | 3.0.5 |
+| @uppy/compressor | 1.0.5 | @uppy/store-redux | 3.0.5 |
+| @uppy/core | 3.6.0 | @uppy/svelte | 3.1.1 |
+| @uppy/dashboard | 3.6.0 | @uppy/thumbnail-generator | 3.0.6 |
+| @uppy/drop-target | 2.0.2 | @uppy/transloadit | 3.3.2 |
+| @uppy/dropbox | 3.1.4 | @uppy/tus | 3.3.2 |
+| @uppy/facebook | 3.1.3 | @uppy/unsplash | 3.2.3 |
+| @uppy/file-input | 3.0.4 | @uppy/url | 3.3.4 |
+| @uppy/form | 3.0.3 | @uppy/utils | 5.5.2 |
+| @uppy/golden-retriever | 3.1.1 | @uppy/vue | 1.1.0 |
+| @uppy/google-drive | 3.3.0 | @uppy/webcam | 3.3.4 |
+| @uppy/image-editor | 2.2.2 | @uppy/xhr-upload | 3.4.2 |
+| @uppy/informer | 3.0.4 | @uppy/zoom | 2.1.3 |
+| @uppy/instagram | 3.1.3 | uppy | 3.18.0 |
+| @uppy/onedrive | 3.1.4 | | |
+
+- @uppy/aws-s3-multipart: fix `TypeError` (Antoine du Hamel / #4748)
+- meta: Bump tough-cookie from 4.1.2 to 4.1.3 (dependabot[bot] / #4750)
+- meta: example: simplify code by using built-in `throwIfAborted` (Antoine du Hamel / #4749)
+- @uppy/aws-s3-multipart: pass `signal` as separate arg for backward compat (Antoine du Hamel / #4746)
+- meta: fix TS integration (Antoine du Hamel / #4741)
+- meta: fix js2ts check (Antoine du Hamel)
+- meta: add support for TypeScript plugins (Antoine du Hamel / #4640)
+- @uppy/vue: export FileInput (mdxiaohu / #4736)
+- meta: examples: update `server.py` (codehero7386 / #4732)
+- @uppy/aws-s3-multipart: fix `uploadURL` when using `PUT` (Antoine du Hamel / #4701)
+- @uppy/dashboard: auto discover and install plugins without target (Artur Paikin / #4343)
+- meta: e2e: upgrade Cypress (Antoine du Hamel / #4731)
+- @uppy/core: mark the package as side-effect free (Antoine du Hamel / #4730)
+- meta: Bump postcss from 8.4.16 to 8.4.31 (dependabot[bot] / #4723)
+- meta: test with the latest versions of Node.js (Antoine du Hamel / #4729)
+- meta: e2e: update Parcel (Antoine du Hamel / #4726)
+- meta: uppy: fix types (Antoine du Hamel / #4721)
+- @uppy/core: type more events (Antoine du Hamel / #4719)
+- @uppy/svelte: fix TS build command (Antoine du Hamel / #4720)
+- @uppy/companion: Bucket fn also remote files (Mikael Finstad / #4693)
+- @uppy/companion-client: fixup! Added Companion OAuth Key type (Murderlon / #4668)
+- @uppy/companion-client: Added Companion OAuth Key type (Chris Pratt / #4668)
+- meta: check for formatting in CI (Antoine du Hamel / #4714)
+- meta: bump get-func-name from 2.0.0 to 2.0.2 (dependabot[bot] / #4709)
+- meta: run Prettier on existing files (Antoine du Hamel / #4713)
+
+
## 3.17.0
Released: 2023-09-29
diff --git a/README.md b/README.md
index 14ac3e3093..73723e5b69 100644
--- a/README.md
+++ b/README.md
@@ -65,7 +65,7 @@ const uppy = new Uppy()
npm install @uppy/core @uppy/dashboard @uppy/tus
```
-Add CSS [uppy.min.css](https://releases.transloadit.com/uppy/v3.17.0/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.20.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.
@@ -73,12 +73,12 @@ Alternatively, you can also use a pre-built bundle from Transloadit’s CDN: Edg
```html
-
+
+
```
## FAQ
@@ -311,9 +311,9 @@ Use Uppy in your project? [Let us know](https://github.com/transloadit/uppy/issu
:---: |:---: |:---: |:---: |:---: |:---: |
[muhammadInam](https://github.com/muhammadInam) |[rettgerst](https://github.com/rettgerst) |[Acconut](https://github.com/Acconut) |[mkabatek](https://github.com/mkabatek) |[jukakoski](https://github.com/jukakoski) |[olemoign](https://github.com/olemoign) |
-[
](https://github.com/ajschmidt8) |[
](https://github.com/superhawk610) |[
](https://github.com/abannach) |[
](https://github.com/adamelmore) |[
](https://github.com/ajh-sr) |[
](https://github.com/adamvigneault) |
+[
](https://github.com/ajschmidt8) |[
](https://github.com/superhawk610) |[
](https://github.com/abannach) |[
](https://github.com/adamdottv) |[
](https://github.com/ajh-sr) |[
](https://github.com/adamvigneault) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[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) |[adamvigneault](https://github.com/adamvigneault) |
+[ajschmidt8](https://github.com/ajschmidt8) |[superhawk610](https://github.com/superhawk610) |[abannach](https://github.com/abannach) |[adamdottv](https://github.com/adamdottv) |[ajh-sr](https://github.com/ajh-sr) |[adamvigneault](https://github.com/adamvigneault) |
[
](https://github.com/Adrrei) |[
](https://github.com/adritasharma) |[
](https://github.com/ahmadissa) |[
](https://github.com/asmt3) |[
](https://github.com/alexnj) |[
](https://github.com/aalepis) |
:---: |:---: |:---: |:---: |:---: |:---: |
@@ -335,157 +335,165 @@ Use Uppy in your project? [Let us know](https://github.com/transloadit/uppy/issu
:---: |:---: |:---: |:---: |:---: |:---: |
[bducharme](https://github.com/bducharme) |[Quorafind](https://github.com/Quorafind) |[wbaaron](https://github.com/wbaaron) |[bedgerotto](https://github.com/bedgerotto) |[bryanjswift](https://github.com/bryanjswift) |[cyu](https://github.com/cyu) |
-[
](https://github.com/cartfisk) |[
](https://github.com/cellvinchung) |[
](https://github.com/chao) |[
](https://github.com/Cretezy) |[
](https://github.com/charlybillaud) |[
](https://github.com/csprance) |
+[
](https://github.com/cartfisk) |[
](https://github.com/cellvinchung) |[
](https://github.com/chao) |[
](https://github.com/Cretezy) |[
](https://github.com/charlybillaud) |[
](https://github.com/prattcmp) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[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) |
+[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) |[prattcmp](https://github.com/prattcmp) |
-[
](https://github.com/cfra) |[
](https://github.com/Aarbel) |[
](https://github.com/cbush06) |[
](https://github.com/czj) |[
](https://github.com/CommanderRoot) |[
](https://github.com/ardeois) |
+[
](https://github.com/csprance) |[
](https://github.com/cfra) |[
](https://github.com/Aarbel) |[
](https://github.com/cbush06) |[
](https://github.com/czj) |[
](https://github.com/CommanderRoot) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[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) |
+[csprance](https://github.com/csprance) |[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) |
-[
](https://github.com/sercraig) |[
](https://github.com/Cruaier) |[
](https://github.com/danmichaelo) |[
](https://github.com/danschalow) |[
](https://github.com/danilat) |[
](https://github.com/mrboomer) |
+[
](https://github.com/ardeois) |[
](https://github.com/sercraig) |[
](https://github.com/Cruaier) |[
](https://github.com/danmichaelo) |[
](https://github.com/danschalow) |[
](https://github.com/danilat) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[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) |
+[ardeois](https://github.com/ardeois) |[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) |
-[
](https://github.com/Cantabar) |[
](https://github.com/KaminskiDaniell) |[
](https://github.com/akizor) |[
](https://github.com/davilima6) |[
](https://github.com/DennisKofflard) |[
](https://github.com/jeetiss) |
+[
](https://github.com/mrboomer) |[
](https://github.com/Cantabar) |[
](https://github.com/KaminskiDaniell) |[
](https://github.com/akizor) |[
](https://github.com/davilima6) |[
](https://github.com/DennisKofflard) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[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) |
+[mrboomer](https://github.com/mrboomer) |[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) |
-[
](https://github.com/sweetro) |[
](https://github.com/EdgarSantiago93) |[
](https://github.com/emuell) |[
](https://github.com/efbautista) |[
](https://github.com/yoldar) |[
](https://github.com/eliOcs) |
+[
](https://github.com/jeetiss) |[
](https://github.com/sweetro) |[
](https://github.com/EdgarSantiago93) |[
](https://github.com/emuell) |[
](https://github.com/efbautista) |[
](https://github.com/yoldar) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[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) |
+[jeetiss](https://github.com/jeetiss) |[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) |
-[
](https://github.com/elliotdickison) |[
](https://github.com/EnricoSottile) |[
](https://github.com/epexa) |[
](https://github.com/Gkleinereva) |[
](https://github.com/fgallinari) |[
](https://github.com/ferdiusa) |
+[
](https://github.com/eliOcs) |[
](https://github.com/elliotdickison) |[
](https://github.com/EnricoSottile) |[
](https://github.com/epexa) |[
](https://github.com/Gkleinereva) |[
](https://github.com/fgallinari) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[elliotdickison](https://github.com/elliotdickison) |[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) |
+[eliOcs](https://github.com/eliOcs) |[elliotdickison](https://github.com/elliotdickison) |[EnricoSottile](https://github.com/EnricoSottile) |[epexa](https://github.com/epexa) |[Gkleinereva](https://github.com/Gkleinereva) |[fgallinari](https://github.com/fgallinari) |
-[
](https://github.com/dtrucs) |[
](https://github.com/fuadscodes) |[
](https://github.com/gabiganam) |[
](https://github.com/geoffappleford) |[
](https://github.com/gjungb) |[
](https://github.com/roenschg) |
+[
](https://github.com/ferdiusa) |[
](https://github.com/dtrucs) |[
](https://github.com/fuadscodes) |[
](https://github.com/gabiganam) |[
](https://github.com/geoffappleford) |[
](https://github.com/gjungb) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[dtrucs](https://github.com/dtrucs) |[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) |
+[ferdiusa](https://github.com/ferdiusa) |[dtrucs](https://github.com/dtrucs) |[fuadscodes](https://github.com/fuadscodes) |[gabiganam](https://github.com/gabiganam) |[geoffappleford](https://github.com/geoffappleford) |[gjungb](https://github.com/gjungb) |
-[
](https://github.com/giacomocerquone) |[
](https://github.com/HughbertD) |[
](https://github.com/HussainAlkhalifah) |[
](https://github.com/huydod) |[
](https://github.com/IanVS) |[
](https://github.com/ishendyweb) |
+[
](https://github.com/roenschg) |[
](https://github.com/giacomocerquone) |[
](https://github.com/HughbertD) |[
](https://github.com/HussainAlkhalifah) |[
](https://github.com/huydod) |[
](https://github.com/IanVS) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[giacomocerquone](https://github.com/giacomocerquone) |[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) |
+[roenschg](https://github.com/roenschg) |[giacomocerquone](https://github.com/giacomocerquone) |[HughbertD](https://github.com/HughbertD) |[HussainAlkhalifah](https://github.com/HussainAlkhalifah) |[huydod](https://github.com/huydod) |[IanVS](https://github.com/IanVS) |
-[
](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/ishendyweb) |[
](https://github.com/NaxYo) |[
](https://github.com/intenzive) |[
](https://github.com/GreenJimmy) |[
](https://github.com/mazoruss) |[
](https://github.com/JacobMGEvans) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[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) |
+[ishendyweb](https://github.com/ishendyweb) |[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) |
-[
](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/gaejabong) |[
](https://github.com/JakubHaladej) |[
](https://github.com/Jbithell) |[
](https://github.com/jcjmcclean) |[
](https://github.com/jamestiotio) |[
](https://github.com/janklimo) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[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) |
+[gaejabong](https://github.com/gaejabong) |[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) |
-[
](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/janwilts) |[
](https://github.com/vith) |[
](https://github.com/jessica-coursera) |[
](https://github.com/Jmales) |[
](https://github.com/theJoeBiz) |[
](https://github.com/profsmallpine) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[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) |
+[janwilts](https://github.com/janwilts) |[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) |
-[
](https://github.com/jsanchez034) |[
](https://github.com/jonathanarbely) |[
](https://github.com/jderrough) |[
](https://github.com/jorgeepc) |[
](https://github.com/jszobody) |[
](https://github.com/jbelej) |
+[
](https://github.com/chromacoma) |[
](https://github.com/Jokcy) |[
](https://github.com/jsanchez034) |[
](https://github.com/jonathanarbely) |[
](https://github.com/jderrough) |[
](https://github.com/jorgeepc) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[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) |[jbelej](https://github.com/jbelej) |
+[chromacoma](https://github.com/chromacoma) |[Jokcy](https://github.com/Jokcy) |[jsanchez034](https://github.com/jsanchez034) |[jonathanarbely](https://github.com/jonathanarbely) |[jderrough](https://github.com/jderrough) |[jorgeepc](https://github.com/jorgeepc) |
-[
](https://github.com/jcalonso) |[
](https://github.com/jmontoyaa) |[
](https://github.com/mellow-fellow) |[
](https://github.com/jvelten) |[
](https://github.com/tykarol) |[
](https://github.com/kaspermeinema) |
+[
](https://github.com/jszobody) |[
](https://github.com/jbelej) |[
](https://github.com/jcalonso) |[
](https://github.com/jmontoyaa) |[
](https://github.com/mellow-fellow) |[
](https://github.com/jvelten) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[jcalonso](https://github.com/jcalonso) |[jmontoyaa](https://github.com/jmontoyaa) |[mellow-fellow](https://github.com/mellow-fellow) |[jvelten](https://github.com/jvelten) |[tykarol](https://github.com/tykarol) |[kaspermeinema](https://github.com/kaspermeinema) |
+[jszobody](https://github.com/jszobody) |[jbelej](https://github.com/jbelej) |[jcalonso](https://github.com/jcalonso) |[jmontoyaa](https://github.com/jmontoyaa) |[mellow-fellow](https://github.com/mellow-fellow) |[jvelten](https://github.com/jvelten) |
-[
](https://github.com/firesharkstudios) |[
](https://github.com/kergekacsa) |[
](https://github.com/kevin-west-10x) |[
](https://github.com/kidonng) |[
](https://github.com/elkebab) |[
](https://github.com/kyleparisi) |
+[
](https://github.com/tykarol) |[
](https://github.com/kaspermeinema) |[
](https://github.com/firesharkstudios) |[
](https://github.com/kergekacsa) |[
](https://github.com/kevin-west-10x) |[
](https://github.com/kidonng) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[firesharkstudios](https://github.com/firesharkstudios) |[kergekacsa](https://github.com/kergekacsa) |[kevin-west-10x](https://github.com/kevin-west-10x) |[kidonng](https://github.com/kidonng) |[elkebab](https://github.com/elkebab) |[kyleparisi](https://github.com/kyleparisi) |
+[tykarol](https://github.com/tykarol) |[kaspermeinema](https://github.com/kaspermeinema) |[firesharkstudios](https://github.com/firesharkstudios) |[kergekacsa](https://github.com/kergekacsa) |[kevin-west-10x](https://github.com/kevin-west-10x) |[kidonng](https://github.com/kidonng) |
-[
](https://github.com/labohkip81) |[
](https://github.com/hoangbits) |[
](https://github.com/leaanthony) |[
](https://github.com/larowlan) |[
](https://github.com/dviry) |[
](https://github.com/galli-leo) |
+[
](https://github.com/elkebab) |[
](https://github.com/kyleparisi) |[
](https://github.com/labohkip81) |[
](https://github.com/hoangbits) |[
](https://github.com/leaanthony) |[
](https://github.com/larowlan) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[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) |[galli-leo](https://github.com/galli-leo) |
+[elkebab](https://github.com/elkebab) |[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) |
-[
](https://github.com/leods92) |[
](https://github.com/dolphinigle) |[
](https://github.com/louim) |[
](https://github.com/ombr) |[
](https://github.com/lucaperret) |[
](https://github.com/lucax88x) |
+[
](https://github.com/dviry) |[
](https://github.com/galli-leo) |[
](https://github.com/leods92) |[
](https://github.com/leomelzer) |[
](https://github.com/dolphinigle) |[
](https://github.com/louim) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[leods92](https://github.com/leods92) |[dolphinigle](https://github.com/dolphinigle) |[louim](https://github.com/louim) |[ombr](https://github.com/ombr) |[lucaperret](https://github.com/lucaperret) |[lucax88x](https://github.com/lucax88x) |
+[dviry](https://github.com/dviry) |[galli-leo](https://github.com/galli-leo) |[leods92](https://github.com/leods92) |[leomelzer](https://github.com/leomelzer) |[dolphinigle](https://github.com/dolphinigle) |[louim](https://github.com/louim) |
-[
](https://github.com/marc-mabe) |[
](https://github.com/onhate) |[
](https://github.com/mperrando) |[
](https://github.com/marcosthejew) |[
](https://github.com/marcusforsberg) |[
](https://github.com/martin-brennan) |
+[
](https://github.com/ombr) |[
](https://github.com/lucaperret) |[
](https://github.com/lucax88x) |[
](https://github.com/marc-mabe) |[
](https://github.com/onhate) |[
](https://github.com/mperrando) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[marc-mabe](https://github.com/marc-mabe) |[onhate](https://github.com/onhate) |[mperrando](https://github.com/mperrando) |[marcosthejew](https://github.com/marcosthejew) |[marcusforsberg](https://github.com/marcusforsberg) |[martin-brennan](https://github.com/martin-brennan) |
+[ombr](https://github.com/ombr) |[lucaperret](https://github.com/lucaperret) |[lucax88x](https://github.com/lucax88x) |[marc-mabe](https://github.com/marc-mabe) |[onhate](https://github.com/onhate) |[mperrando](https://github.com/mperrando) |
-[
](https://github.com/masaok) |[
](https://github.com/masumulu28) |[
](https://github.com/mateuscruz) |[
](https://github.com/mattfik) |[
](https://github.com/mjesuele) |[
](https://github.com/matthewhartstonge) |
+[
](https://github.com/marcosthejew) |[
](https://github.com/marcusforsberg) |[
](https://github.com/martin-brennan) |[
](https://github.com/masaok) |[
](https://github.com/masumulu28) |[
](https://github.com/mateuscruz) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[masaok](https://github.com/masaok) |[masumulu28](https://github.com/masumulu28) |[mateuscruz](https://github.com/mateuscruz) |[mattfik](https://github.com/mattfik) |[mjesuele](https://github.com/mjesuele) |[matthewhartstonge](https://github.com/matthewhartstonge) |
+[marcosthejew](https://github.com/marcosthejew) |[marcusforsberg](https://github.com/marcusforsberg) |[martin-brennan](https://github.com/martin-brennan) |[masaok](https://github.com/masaok) |[masumulu28](https://github.com/masumulu28) |[mateuscruz](https://github.com/mateuscruz) |
-[
](https://github.com/mauricioribeiro) |[
](https://github.com/hrsh) |[
](https://github.com/mhulet) |[
](https://github.com/mkopinsky) |[
](https://github.com/ken-kuro) |[
](https://github.com/achmiral) |
+[
](https://github.com/mattfik) |[
](https://github.com/mjesuele) |[
](https://github.com/matthewhartstonge) |[
](https://github.com/mauricioribeiro) |[
](https://github.com/hrsh) |[
](https://github.com/mhulet) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[mauricioribeiro](https://github.com/mauricioribeiro) |[hrsh](https://github.com/hrsh) |[mhulet](https://github.com/mhulet) |[mkopinsky](https://github.com/mkopinsky) |[ken-kuro](https://github.com/ken-kuro) |[achmiral](https://github.com/achmiral) |
+[mattfik](https://github.com/mattfik) |[mjesuele](https://github.com/mjesuele) |[matthewhartstonge](https://github.com/matthewhartstonge) |[mauricioribeiro](https://github.com/mauricioribeiro) |[hrsh](https://github.com/hrsh) |[mhulet](https://github.com/mhulet) |
-[
](https://github.com/boudra) |[
](https://github.com/mnafees) |[
](https://github.com/shahimclt) |[
](https://github.com/mogzol) |[
](https://github.com/navruzm) |[
](https://github.com/marton-laszlo-attila) |
+[
](https://github.com/mkopinsky) |[
](https://github.com/ken-kuro) |[
](https://github.com/achmiral) |[
](https://github.com/boudra) |[
](https://github.com/mnafees) |[
](https://github.com/shahimclt) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[boudra](https://github.com/boudra) |[mnafees](https://github.com/mnafees) |[shahimclt](https://github.com/shahimclt) |[mogzol](https://github.com/mogzol) |[navruzm](https://github.com/navruzm) |[marton-laszlo-attila](https://github.com/marton-laszlo-attila) |
+[mkopinsky](https://github.com/mkopinsky) |[ken-kuro](https://github.com/ken-kuro) |[achmiral](https://github.com/achmiral) |[boudra](https://github.com/boudra) |[mnafees](https://github.com/mnafees) |[shahimclt](https://github.com/shahimclt) |
-[
](https://github.com/pleasespammelater) |[
](https://github.com/naveed-ahmad) |[
](https://github.com/trungcva10a6tn) |[
](https://github.com/nicojones) |[
](https://github.com/coreprocess) |[
](https://github.com/nil1511) |
+[
](https://github.com/mogzol) |[
](https://github.com/navruzm) |[
](https://github.com/marton-laszlo-attila) |[
](https://github.com/pleasespammelater) |[
](https://github.com/naveed-ahmad) |[
](https://github.com/trungcva10a6tn) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[pleasespammelater](https://github.com/pleasespammelater) |[naveed-ahmad](https://github.com/naveed-ahmad) |[trungcva10a6tn](https://github.com/trungcva10a6tn) |[nicojones](https://github.com/nicojones) |[coreprocess](https://github.com/coreprocess) |[nil1511](https://github.com/nil1511) |
+[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) |[trungcva10a6tn](https://github.com/trungcva10a6tn) |
-[
](https://github.com/leftdevel) |[
](https://github.com/Ozodbek1405) |[
](https://github.com/cryptic022) |[
](https://github.com/ParsaArvanehPA) |[
](https://github.com/pascalwengerter) |[
](https://github.com/patricklindsay) |
+[
](https://github.com/nicojones) |[
](https://github.com/coreprocess) |[
](https://github.com/nil1511) |[
](https://github.com/leftdevel) |[
](https://github.com/Ozodbek1405) |[
](https://github.com/cryptic022) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[leftdevel](https://github.com/leftdevel) |[Ozodbek1405](https://github.com/Ozodbek1405) |[cryptic022](https://github.com/cryptic022) |[ParsaArvanehPA](https://github.com/ParsaArvanehPA) |[pascalwengerter](https://github.com/pascalwengerter) |[patricklindsay](https://github.com/patricklindsay) |
+[nicojones](https://github.com/nicojones) |[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) |
-[
](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/ParsaArvanehPA) |[
](https://github.com/pascalwengerter) |[
](https://github.com/patricklindsay) |[
](https://github.com/plneto) |[
](https://github.com/pedrofs) |[
](https://github.com/pmusaraj) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[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) |
+[ParsaArvanehPA](https://github.com/ParsaArvanehPA) |[pascalwengerter](https://github.com/pascalwengerter) |[patricklindsay](https://github.com/patricklindsay) |[plneto](https://github.com/plneto) |[pedrofs](https://github.com/pedrofs) |[pmusaraj](https://github.com/pmusaraj) |
-[
](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/phillipalexander) |[
](https://github.com/ppadmavilasom) |[
](https://github.com/Pzoco) |[
](https://github.com/eman8519) |[
](https://github.com/luarmr) |[
](https://github.com/raulibanez) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[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) |
+[phillipalexander](https://github.com/phillipalexander) |[ppadmavilasom](https://github.com/ppadmavilasom) |[Pzoco](https://github.com/Pzoco) |[eman8519](https://github.com/eman8519) |[luarmr](https://github.com/luarmr) |[raulibanez](https://github.com/raulibanez) |
-[
](https://github.com/scherroman) |[
](https://github.com/rossng) |[
](https://github.com/rart) |[
](https://github.com/GNURub) |[
](https://github.com/fortunto2) |[
](https://github.com/samuelcolburn) |
+[
](https://github.com/refo) |[
](https://github.com/SxDx) |[
](https://github.com/robwilson1) |[
](https://github.com/scherroman) |[
](https://github.com/rossng) |[
](https://github.com/rart) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[scherroman](https://github.com/scherroman) |[rossng](https://github.com/rossng) |[rart](https://github.com/rart) |[GNURub](https://github.com/GNURub) |[fortunto2](https://github.com/fortunto2) |[samuelcolburn](https://github.com/samuelcolburn) |
+[refo](https://github.com/refo) |[SxDx](https://github.com/SxDx) |[robwilson1](https://github.com/robwilson1) |[scherroman](https://github.com/scherroman) |[rossng](https://github.com/rossng) |[rart](https://github.com/rart) |
-[
](https://github.com/sdebacker) |[
](https://github.com/sebasegovia01) |[
](https://github.com/sergei-zelinsky) |[
](https://github.com/szh) |[
](https://github.com/SpazzMarticus) |[
](https://github.com/waptik) |
+[
](https://github.com/GNURub) |[
](https://github.com/fortunto2) |[
](https://github.com/samuelcolburn) |[
](https://github.com/sdebacker) |[
](https://github.com/sebasegovia01) |[
](https://github.com/sergei-zelinsky) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[sdebacker](https://github.com/sdebacker) |[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) |
+[GNURub](https://github.com/GNURub) |[fortunto2](https://github.com/fortunto2) |[samuelcolburn](https://github.com/samuelcolburn) |[sdebacker](https://github.com/sdebacker) |[sebasegovia01](https://github.com/sebasegovia01) |[sergei-zelinsky](https://github.com/sergei-zelinsky) |
-[
](https://github.com/quigebo) |[
](https://github.com/amaitu) |[
](https://github.com/steverob) |[
](https://github.com/sjauld) |[
](https://github.com/strayer) |[
](https://github.com/taj) |
+[
](https://github.com/szh) |[
](https://github.com/SpazzMarticus) |[
](https://github.com/waptik) |[
](https://github.com/quigebo) |[
](https://github.com/amaitu) |[
](https://github.com/steverob) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[quigebo](https://github.com/quigebo) |[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) |
+[szh](https://github.com/szh) |[SpazzMarticus](https://github.com/SpazzMarticus) |[waptik](https://github.com/waptik) |[quigebo](https://github.com/quigebo) |[amaitu](https://github.com/amaitu) |[steverob](https://github.com/steverob) |
-[
](https://github.com/Tashows) |[
](https://github.com/tcgj) |[
](https://github.com/twarlop) |[
](https://github.com/tmaier) |[
](https://github.com/WIStudent) |[
](https://github.com/tomsaleeba) |
+[
](https://github.com/sjauld) |[
](https://github.com/strayer) |[
](https://github.com/taj) |[
](https://github.com/Tashows) |[
](https://github.com/tcgj) |[
](https://github.com/twarlop) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[Tashows](https://github.com/Tashows) |[tcgj](https://github.com/tcgj) |[twarlop](https://github.com/twarlop) |[tmaier](https://github.com/tmaier) |[WIStudent](https://github.com/WIStudent) |[tomsaleeba](https://github.com/tomsaleeba) |
+[sjauld](https://github.com/sjauld) |[strayer](https://github.com/strayer) |[taj](https://github.com/taj) |[Tashows](https://github.com/Tashows) |[tcgj](https://github.com/tcgj) |[twarlop](https://github.com/twarlop) |
-[
](https://github.com/tomekp) |[
](https://github.com/tvaliasek) |[
](https://github.com/top-master) |[
](https://github.com/vially) |[
](https://github.com/valentinoli) |[
](https://github.com/stiig) |
+[
](https://github.com/tmaier) |[
](https://github.com/WIStudent) |[
](https://github.com/tomsaleeba) |[
](https://github.com/tomekp) |[
](https://github.com/tvaliasek) |[
](https://github.com/top-master) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[tomekp](https://github.com/tomekp) |[tvaliasek](https://github.com/tvaliasek) |[top-master](https://github.com/top-master) |[vially](https://github.com/vially) |[valentinoli](https://github.com/valentinoli) |[stiig](https://github.com/stiig) |
+[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) |[top-master](https://github.com/top-master) |
-[
](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/YehudaKremer) |
+[
](https://github.com/trivikr) |[
](https://github.com/vially) |[
](https://github.com/valentinoli) |[
](https://github.com/stiig) |[
](https://github.com/nagyv) |[
](https://github.com/dwnste) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[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) |[YehudaKremer](https://github.com/YehudaKremer) |
+[trivikr](https://github.com/trivikr) |[vially](https://github.com/vially) |[valentinoli](https://github.com/valentinoli) |[stiig](https://github.com/stiig) |[nagyv](https://github.com/nagyv) |[dwnste](https://github.com/dwnste) |
-[
](https://github.com/zachconner) |[
](https://github.com/zlawson-ut) |[
](https://github.com/zackbloom) |[
](https://github.com/sartoshi-foot-dao) |[
](https://github.com/aduh95-test-account) |[
](https://github.com/agreene-coursera) |
+[
](https://github.com/weston-sankey-mark43) |[
](https://github.com/willycamargo) |[
](https://github.com/xhocquet) |[
](https://github.com/YehudaKremer) |[
](https://github.com/zachconner) |[
](https://github.com/zlawson-ut) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[zachconner](https://github.com/zachconner) |[zlawson-ut](https://github.com/zlawson-ut) |[zackbloom](https://github.com/zackbloom) |[sartoshi-foot-dao](https://github.com/sartoshi-foot-dao) |[aduh95-test-account](https://github.com/aduh95-test-account) |[agreene-coursera](https://github.com/agreene-coursera) |
+[weston-sankey-mark43](https://github.com/weston-sankey-mark43) |[willycamargo](https://github.com/willycamargo) |[xhocquet](https://github.com/xhocquet) |[YehudaKremer](https://github.com/YehudaKremer) |[zachconner](https://github.com/zachconner) |[zlawson-ut](https://github.com/zlawson-ut) |
-[
](https://github.com/alfatv) |[
](https://github.com/arggh) |[
](https://github.com/avalla) |[
](https://github.com/c0b41) |[
](https://github.com/canvasbh) |[
](https://github.com/cgoinglove) |
+[
](https://github.com/zackbloom) |[
](https://github.com/sartoshi-foot-dao) |[
](https://github.com/aduh95-test-account) |[
](https://github.com/agreene-coursera) |[
](https://github.com/alfatv) |[
](https://github.com/arggh) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[alfatv](https://github.com/alfatv) |[arggh](https://github.com/arggh) |[avalla](https://github.com/avalla) |[c0b41](https://github.com/c0b41) |[canvasbh](https://github.com/canvasbh) |[cgoinglove](https://github.com/cgoinglove) |
+[zackbloom](https://github.com/zackbloom) |[sartoshi-foot-dao](https://github.com/sartoshi-foot-dao) |[aduh95-test-account](https://github.com/aduh95-test-account) |[agreene-coursera](https://github.com/agreene-coursera) |[alfatv](https://github.com/alfatv) |[arggh](https://github.com/arggh) |
-[
](https://github.com/christianwengert) |[
](https://github.com/craigcbrunner) |[
](https://github.com/darthf1) |[
](https://github.com/dkisic) |[
](https://github.com/elliotsayes) |[
](https://github.com/fingul) |
+[
](https://github.com/avalla) |[
](https://github.com/c0b41) |[
](https://github.com/canvasbh) |[
](https://github.com/cgoinglove) |[
](https://github.com/christianwengert) |[
](https://github.com/codehero7386) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[christianwengert](https://github.com/christianwengert) |[craigcbrunner](https://github.com/craigcbrunner) |[darthf1](https://github.com/darthf1) |[dkisic](https://github.com/dkisic) |[elliotsayes](https://github.com/elliotsayes) |[fingul](https://github.com/fingul) |
+[avalla](https://github.com/avalla) |[c0b41](https://github.com/c0b41) |[canvasbh](https://github.com/canvasbh) |[cgoinglove](https://github.com/cgoinglove) |[christianwengert](https://github.com/christianwengert) |[codehero7386](https://github.com/codehero7386) |
+
+[
](https://github.com/craigcbrunner) |[
](https://github.com/darthf1) |[
](https://github.com/dkisic) |[
](https://github.com/dzcpy) |[
](https://github.com/elliotsayes) |[
](https://github.com/fingul) |
+:---: |:---: |:---: |:---: |:---: |:---: |
+[craigcbrunner](https://github.com/craigcbrunner) |[darthf1](https://github.com/darthf1) |[dkisic](https://github.com/dkisic) |[dzcpy](https://github.com/dzcpy) |[elliotsayes](https://github.com/elliotsayes) |[fingul](https://github.com/fingul) |
[
](https://github.com/franckl) |[
](https://github.com/frederikhors) |[
](https://github.com/gaelicwinter) |[
](https://github.com/green-mike) |[
](https://github.com/hxgf) |[
](https://github.com/johnmanjiro13) |
:---: |:---: |:---: |:---: |:---: |:---: |
[franckl](https://github.com/franckl) |[frederikhors](https://github.com/frederikhors) |[gaelicwinter](https://github.com/gaelicwinter) |[green-mike](https://github.com/green-mike) |[hxgf](https://github.com/hxgf) |[johnmanjiro13](https://github.com/johnmanjiro13) |
-[
](https://github.com/jur-ng) |[
](https://github.com/sontixyou) |[
](https://github.com/kode-ninja) |[
](https://github.com/jx-zyf) |[
](https://github.com/magumbo) |[
](https://github.com/mjlumetta) |
+[
](https://github.com/jur-ng) |[
](https://github.com/sontixyou) |[
](https://github.com/kode-ninja) |[
](https://github.com/jx-zyf) |[
](https://github.com/magumbo) |[
](https://github.com/mdxiaohu) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[jur-ng](https://github.com/jur-ng) |[sontixyou](https://github.com/sontixyou) |[kode-ninja](https://github.com/kode-ninja) |[jx-zyf](https://github.com/jx-zyf) |[magumbo](https://github.com/magumbo) |[mjlumetta](https://github.com/mjlumetta) |
+[jur-ng](https://github.com/jur-ng) |[sontixyou](https://github.com/sontixyou) |[kode-ninja](https://github.com/kode-ninja) |[jx-zyf](https://github.com/jx-zyf) |[magumbo](https://github.com/magumbo) |[mdxiaohu](https://github.com/mdxiaohu) |
-[
](https://github.com/mosi-kha) |[
](https://github.com/neuronet77) |[
](https://github.com/ninesalt) |[
](https://github.com/odselsevier) |[
](https://github.com/phil714) |[
](https://github.com/luntta) |
+[
](https://github.com/mjlumetta) |[
](https://github.com/mosi-kha) |[
](https://github.com/neuronet77) |[
](https://github.com/ninesalt) |[
](https://github.com/odselsevier) |[
](https://github.com/ordago) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[mosi-kha](https://github.com/mosi-kha) |[neuronet77](https://github.com/neuronet77) |[ninesalt](https://github.com/ninesalt) |[odselsevier](https://github.com/odselsevier) |[phil714](https://github.com/phil714) |[luntta](https://github.com/luntta) |
+[mjlumetta](https://github.com/mjlumetta) |[mosi-kha](https://github.com/mosi-kha) |[neuronet77](https://github.com/neuronet77) |[ninesalt](https://github.com/ninesalt) |[odselsevier](https://github.com/odselsevier) |[ordago](https://github.com/ordago) |
-[
](https://github.com/rhymes) |[
](https://github.com/rlebosse) |[
](https://github.com/rmoura-92) |[
](https://github.com/rtaieb) |[
](https://github.com/slawexxx44) |[
](https://github.com/stduhpf) |
+[
](https://github.com/phil714) |[
](https://github.com/luntta) |[
](https://github.com/rhymes) |[
](https://github.com/rlebosse) |[
](https://github.com/rmoura-92) |[
](https://github.com/rtaieb) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[rhymes](https://github.com/rhymes) |[rlebosse](https://github.com/rlebosse) |[rmoura-92](https://github.com/rmoura-92) |[rtaieb](https://github.com/rtaieb) |[slawexxx44](https://github.com/slawexxx44) |[stduhpf](https://github.com/stduhpf) |
+[phil714](https://github.com/phil714) |[luntta](https://github.com/luntta) |[rhymes](https://github.com/rhymes) |[rlebosse](https://github.com/rlebosse) |[rmoura-92](https://github.com/rmoura-92) |[rtaieb](https://github.com/rtaieb) |
-[
](https://github.com/thanhthot) |[
](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/stduhpf) |[
](https://github.com/thanhthot) |[
](https://github.com/tusharjkhunt) |[
](https://github.com/vedran555) |[
](https://github.com/yoann-hellopret) |
:---: |:---: |:---: |:---: |:---: |:---: |
-[thanhthot](https://github.com/thanhthot) |[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) |[stduhpf](https://github.com/stduhpf) |[thanhthot](https://github.com/thanhthot) |[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) |
@@ -496,4 +504,3 @@ We use Browserstack for manual testing Promise.reject(err)),
+ await once(cp, 'exit')
+ .then(([code]) => (code && Promise.reject(new Error(`Non-zero exit code when building TS projects: ${code}`)))),
+])
diff --git a/bin/upload-to-cdn.js b/bin/upload-to-cdn.js
index fa9c909b4f..0abc27e7c4 100644
--- a/bin/upload-to-cdn.js
+++ b/bin/upload-to-cdn.js
@@ -24,7 +24,8 @@
const path = require('node:path')
const { pipeline, finished } = require('node:stream/promises')
const { readFile } = require('node:fs/promises')
-const AWS = require('aws-sdk')
+const { S3 } = require('@aws-sdk/client-s3');
+
const packlist = require('npm-packlist')
const tar = require('tar')
const pacote = require('pacote')
@@ -108,11 +109,11 @@ async function main (packageName, version) {
// where we force push a local build
if (version?.startsWith('-')) version = undefined // eslint-disable-line no-param-reassign
- const s3 = new AWS.S3({
- credentials: new AWS.Credentials({
+ const s3 = new S3({
+ credentials: {
accessKeyId: process.env.EDGLY_KEY,
secretAccessKey: process.env.EDGLY_SECRET,
- }),
+ },
region: AWS_REGION,
})
@@ -146,7 +147,7 @@ async function main (packageName, version) {
const { Contents: existing } = await s3.listObjects({
Bucket: AWS_BUCKET,
Prefix: outputPath,
- }).promise()
+ })
if (existing.length > 0) {
if (process.argv.includes('--force')) {
console.warn(`WARN Release files for ${dirName} v${version} already exist, overwriting...`)
@@ -178,7 +179,7 @@ async function main (packageName, version) {
Key: key,
ContentType: mime.lookup(filename),
Body: buffer,
- }).promise()
+ })
}
}
diff --git a/e2e/clients/react/App.jsx b/e2e/clients/react/App.jsx
index ba0aa45846..cfd68bcc5c 100644
--- a/e2e/clients/react/App.jsx
+++ b/e2e/clients/react/App.jsx
@@ -4,13 +4,18 @@ import Uppy from '@uppy/core'
import React, { useState } from 'react'
import { Dashboard, DashboardModal, DragDrop } from '@uppy/react'
import ThumbnailGenerator from '@uppy/thumbnail-generator'
+import RemoteSources from '@uppy/remote-sources'
import '@uppy/core/dist/style.css'
import '@uppy/dashboard/dist/style.css'
import '@uppy/drag-drop/dist/style.css'
export default function App () {
- const uppyDashboard = new Uppy({ id: 'dashboard' })
+ const RemoteSourcesOptions = {
+ companionUrl: 'http://companion.uppy.io',
+ sources: ['GoogleDrive', 'OneDrive', 'Unsplash', 'Zoom', 'Url'],
+ }
+ const uppyDashboard = new Uppy({ id: 'dashboard' }).use(RemoteSources, { ...RemoteSourcesOptions })
const uppyModal = new Uppy({ id: 'modal' })
const uppyDragDrop = new Uppy({ id: 'drag-drop' }).use(ThumbnailGenerator)
const [open, setOpen] = useState(false)
diff --git a/e2e/cypress/integration/dashboard-transloadit.spec.ts b/e2e/cypress/integration/dashboard-transloadit.spec.ts
index 16b50bee45..7991cb9aaa 100644
--- a/e2e/cypress/integration/dashboard-transloadit.spec.ts
+++ b/e2e/cypress/integration/dashboard-transloadit.spec.ts
@@ -40,6 +40,8 @@ describe('Dashboard with Transloadit', () => {
cy.get('.uppy-StatusBar-actionBtn--upload').click()
cy.wait(['@createAssemblies']).then(() => {
+ // eslint-disable-next-line
+ // @ts-ignore fix me
expect(
Object.values(uppy.getPlugin('Transloadit').activeAssemblies).every(
(a: any) => a.pollInterval,
@@ -49,6 +51,8 @@ describe('Dashboard with Transloadit', () => {
uppy.cancelAll()
cy.wait(['@delete']).then(() => {
+ // eslint-disable-next-line
+ // @ts-ignore fix me
expect(
Object.values(uppy.getPlugin('Transloadit').activeAssemblies).some(
(a: any) => a.pollInterval,
@@ -67,6 +71,8 @@ describe('Dashboard with Transloadit', () => {
const spy = cy.spy()
cy.window().then(({ uppy }) => {
+ // eslint-disable-next-line
+ // @ts-ignore fix me
uppy.on('transloadit:assembly-cancelled', spy)
cy.get('@file-input').selectFile(
@@ -111,6 +117,8 @@ describe('Dashboard with Transloadit', () => {
const spy = cy.spy()
cy.window().then(({ uppy }) => {
+ // eslint-disable-next-line
+ // @ts-ignore fix me
uppy.on('transloadit:assembly-cancelled', spy)
cy.get('@file-input').selectFile(
@@ -141,6 +149,8 @@ describe('Dashboard with Transloadit', () => {
cy.get('.uppy-StatusBar-actionBtn--upload').click()
cy.wait('@assemblyPolling')
+ // eslint-disable-next-line
+ // @ts-ignore fix me
expect(
Object.values(uppy.getPlugin('Transloadit').activeAssemblies).every(
(a: any) => a.pollInterval,
@@ -148,9 +158,13 @@ describe('Dashboard with Transloadit', () => {
).to.equal(true)
const { files } = uppy.getState()
+ // eslint-disable-next-line
+ // @ts-ignore fix me
uppy.removeFiles(Object.keys(files))
cy.wait('@assemblyDeletion').then(() => {
+ // eslint-disable-next-line
+ // @ts-ignore fix me
expect(
Object.values(uppy.getPlugin('Transloadit').activeAssemblies).some(
(a: any) => a.pollInterval,
@@ -172,14 +186,20 @@ describe('Dashboard with Transloadit', () => {
cy.get('.uppy-StatusBar-actionBtn--upload').click()
cy.window().then(({ uppy }) => {
+ // eslint-disable-next-line
+ // @ts-ignore fix me
expect(
Object.values(uppy.getPlugin('Transloadit').activeAssemblies).length,
).to.equal(0)
const { files } = uppy.getState()
+ // eslint-disable-next-line
+ // @ts-ignore fix me
uppy.removeFiles(Object.keys(files))
cy.wait('@createAssemblies').then(() => {
+ // eslint-disable-next-line
+ // @ts-ignore fix me
expect(
Object.values(uppy.getPlugin('Transloadit').activeAssemblies).some(
(a: any) => a.pollInterval,
@@ -201,6 +221,8 @@ describe('Dashboard with Transloadit', () => {
cy.get('.uppy-StatusBar-actionBtn--upload').click()
cy.window().then(({ uppy }) => {
+ // eslint-disable-next-line
+ // @ts-ignore fix me
expect(
Object.values(uppy.getPlugin('Transloadit').activeAssemblies).length,
).to.equal(0)
diff --git a/e2e/cypress/integration/react.spec.ts b/e2e/cypress/integration/react.spec.ts
index c937e35070..c206dbc28d 100644
--- a/e2e/cypress/integration/react.spec.ts
+++ b/e2e/cypress/integration/react.spec.ts
@@ -19,6 +19,22 @@ describe('@uppy/react', () => {
.each((element) => expect(element).attr('src').to.include('blob:'))
})
+ it('should render Dashboard with Remote Sources plugin pack', () => {
+ const sources = [
+ 'My Device',
+ 'Google Drive',
+ 'OneDrive',
+ 'Unsplash',
+ 'Zoom',
+ 'Link',
+ ]
+ cy.get('#dashboard .uppy-DashboardTab-name').each((item, index, list) => {
+ expect(list).to.have.length(6)
+ // Returns the current element from the loop
+ expect(Cypress.$(item).text()).to.eq(sources[index])
+ })
+ })
+
it('should render Modal in React and show thumbnails', () => {
cy.get('#open').click()
cy.get('@modal-input').selectFile(
@@ -36,6 +52,8 @@ describe('@uppy/react', () => {
it('should render Drag & Drop in React and create a thumbail with @uppy/thumbnail-generator', () => {
const spy = cy.spy()
+ // eslint-disable-next-line
+ // @ts-ignore fix me
cy.window().then(({ uppy }) => uppy.on('thumbnail:generated', spy))
cy.get('@dragdrop-input').selectFile(
[
diff --git a/e2e/package.json b/e2e/package.json
index 0afe2839fb..89a004d932 100644
--- a/e2e/package.json
+++ b/e2e/package.json
@@ -4,7 +4,7 @@
"author": "Merlijn Vos ",
"description": "End-to-end test suite for Uppy",
"scripts": {
- "client:start": "parcel clients/index.html",
+ "client:start": "parcel --no-autoinstall clients/index.html",
"cypress:open": "cypress open",
"cypress:headless": "cypress run",
"generate-test": "yarn node generate-test.mjs"
@@ -45,15 +45,16 @@
"@uppy/zoom": "workspace:^"
},
"devDependencies": {
- "cypress": "^12.9.0",
- "cypress-terminal-report": "^4.1.2",
+ "@parcel/transformer-vue": "^2.9.3",
+ "cypress": "^13.0.0",
+ "cypress-terminal-report": "^5.0.0",
"deep-freeze": "^0.0.1",
- "execa": "^6.1.0",
- "parcel": "2.0.0-nightly.1278",
+ "parcel": "^2.9.3",
+ "process": "^0.11.10",
"prompts": "^2.4.2",
"react": "^18.1.0",
"react-dom": "^18.1.0",
- "typescript": "~4.8",
+ "typescript": "~5.1",
"vue": "^3.2.33"
}
}
diff --git a/e2e/start-companion-with-load-balancer.mjs b/e2e/start-companion-with-load-balancer.mjs
index 28de8fcc71..a0f2be79b0 100755
--- a/e2e/start-companion-with-load-balancer.mjs
+++ b/e2e/start-companion-with-load-balancer.mjs
@@ -1,8 +1,9 @@
#!/usr/bin/env node
-import { execa } from 'execa'
+import { spawn } from 'node:child_process'
import http from 'node:http'
import httpProxy from 'http-proxy'
+import process from 'node:process'
const numInstances = 3
const lbPort = 3020
@@ -45,20 +46,42 @@ function createLoadBalancer (baseUrls) {
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 isWindows = process.platform === 'win32'
+const isOSX = process.platform === 'darwin'
+
+const startCompanion = ({ name, port }) => {
+ const cp = spawn(process.execPath, [
+ '-r', 'dotenv/config',
+ // Watch mode support is limited to Windows and macOS at the time of writing.
+ ...(isWindows || isOSX ? ['--watch-path', 'packages/@uppy/companion/src', '--watch'] : []),
+ './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
+ ...process.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,
+ },
+ })
+ // Adding a `then` property so the return value is awaitable:
+ return Object.defineProperty(cp, 'then', {
+ __proto__: null,
+ writable: true,
+ configurable: true,
+ value: Promise.prototype.then.bind(new Promise((resolve, reject) => {
+ cp.on('exit', (code) => {
+ if (code === 0) resolve(cp)
+ else reject(new Error(`Non-zero exit code: ${code}`))
+ })
+ cp.on('error', reject)
+ })),
+ })
+}
const hosts = Array.from({ length: numInstances }, (_, index) => {
const port = companionStartPort + index
diff --git a/e2e/tsconfig.json b/e2e/tsconfig.json
index fb294941d3..805336a76c 100644
--- a/e2e/tsconfig.json
+++ b/e2e/tsconfig.json
@@ -1,5 +1,7 @@
{
"compilerOptions": {
+ "moduleResolution": "NodeNext",
+ "noEmit": true,
"target": "es2020",
"lib": ["es2020", "dom"],
"types": ["cypress"]
diff --git a/examples/aws-nodejs/public/drag.html b/examples/aws-nodejs/public/drag.html
index ead78d2ff0..84b987a2bf 100644
--- a/examples/aws-nodejs/public/drag.html
+++ b/examples/aws-nodejs/public/drag.html
@@ -4,7 +4,7 @@
Uppy
@@ -22,7 +22,7 @@ Uploaded files:
DragDrop,
ProgressBar,
AwsS3,
- } from 'https://releases.transloadit.com/uppy/v3.17.0/uppy.min.mjs'
+ } from 'https://releases.transloadit.com/uppy/v3.20.0/uppy.min.mjs'
// Function for displaying uploaded files
const onUploadSuccess = (elForUploadedFiles) => (file, response) => {
diff --git a/examples/aws-nodejs/public/index.html b/examples/aws-nodejs/public/index.html
index 2a5fe2b351..2c436b23be 100644
--- a/examples/aws-nodejs/public/index.html
+++ b/examples/aws-nodejs/public/index.html
@@ -4,7 +4,7 @@
Uppy – AWS upload example
@@ -16,7 +16,7 @@ AWS upload example
Uppy,
Dashboard,
AwsS3,
- } from 'https://releases.transloadit.com/uppy/v3.17.0/uppy.min.mjs'
+ } from 'https://releases.transloadit.com/uppy/v3.20.0/uppy.min.mjs'
/**
* This generator transforms a deep object into URL-encodable pairs
* to work with `URLSearchParams` on the client and `body-parser` on the server.
@@ -121,19 +121,7 @@ AWS upload example
// implement them (you'd also need to set `shouldUseMultipart: false` though).
async createMultipartUpload(file, signal) {
- if (signal?.aborted) {
- const err = new DOMException(
- 'The operation was aborted',
- 'AbortError',
- )
- Object.defineProperty(err, 'cause', {
- __proto__: null,
- configurable: true,
- writable: true,
- value: signal.reason,
- })
- throw err
- }
+ signal?.throwIfAborted()
const metadata = {}
@@ -191,19 +179,7 @@ AWS upload example
const { uploadId, key, partNumber, signal } = options
- if (signal?.aborted) {
- const err = new DOMException(
- 'The operation was aborted',
- 'AbortError',
- )
- Object.defineProperty(err, 'cause', {
- __proto__: null,
- configurable: true,
- writable: true,
- value: signal.reason,
- })
- throw err
- }
+ signal?.throwIfAborted()
if (uploadId == null || key == null || partNumber == null) {
throw new Error(
@@ -226,19 +202,7 @@ AWS upload example
},
async listParts(file, { key, uploadId }, signal) {
- if (signal?.aborted) {
- const err = new DOMException(
- 'The operation was aborted',
- 'AbortError',
- )
- Object.defineProperty(err, 'cause', {
- __proto__: null,
- configurable: true,
- writable: true,
- value: signal.reason,
- })
- throw err
- }
+ signal?.throwIfAborted()
const filename = encodeURIComponent(key)
const response = await fetch(
@@ -259,19 +223,7 @@ AWS upload example
{ key, uploadId, parts },
signal,
) {
- if (signal?.aborted) {
- const err = new DOMException(
- 'The operation was aborted',
- 'AbortError',
- )
- Object.defineProperty(err, 'cause', {
- __proto__: null,
- configurable: true,
- writable: true,
- value: signal.reason,
- })
- throw err
- }
+ signal?.throwIfAborted()
const filename = encodeURIComponent(key)
const uploadIdEnc = encodeURIComponent(uploadId)
diff --git a/examples/cdn-example/index.html b/examples/cdn-example/index.html
index 7e92ab7b27..c5a552e0f4 100644
--- a/examples/cdn-example/index.html
+++ b/examples/cdn-example/index.html
@@ -5,7 +5,7 @@
@@ -19,7 +19,7 @@
Dashboard,
Webcam,
Tus,
- } from 'https://releases.transloadit.com/uppy/v3.17.0/uppy.min.mjs'
+ } from 'https://releases.transloadit.com/uppy/v3.20.0/uppy.min.mjs'
const uppy = new Uppy({ debug: true, autoProceed: false })
.use(Dashboard, { trigger: '#uppyModalOpener' })
@@ -34,7 +34,7 @@