From 82c1969c1fbfde79fc6888e72cb30a1923155e4e Mon Sep 17 00:00:00 2001 From: Ikko Ashimine Date: Mon, 20 Jun 2022 19:29:18 +0900 Subject: [PATCH 01/11] docs: Fix typo in aws-s3-multipart.md (#3838) indecies -> indices --- website/src/docs/aws-s3-multipart.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/src/docs/aws-s3-multipart.md b/website/src/docs/aws-s3-multipart.md index 8af37de283..6265ca4d09 100644 --- a/website/src/docs/aws-s3-multipart.md +++ b/website/src/docs/aws-s3-multipart.md @@ -109,7 +109,7 @@ A function that generates a batch of signed URLs for the specified part numbers. * `uploadId` - The UploadID of this Multipart upload. * `key` - The object key in the S3 bucket. -* `partNumbers` - An array of indecies of this part in the file (`PartNumber` in S3 terminology). Note that part numbers are _not_ zero-based. +* `partNumbers` - An array of indices of this part in the file (`PartNumber` in S3 terminology). Note that part numbers are _not_ zero-based. * `chunks` - A Javascript object with the part numbers as keys and the Blob data for each part as the value. `prepareUploadParts` should return a `Promise` with an `Object` with keys: From 345415c706290de65c1fd105cee13cc8b7c63227 Mon Sep 17 00:00:00 2001 From: Kasper Meinema <73821331+kaspermeinema@users.noreply.github.com> Date: Mon, 20 Jun 2022 14:56:47 +0200 Subject: [PATCH 02/11] Add missing translations and reorder nl_NL locale (#3839) --- packages/@uppy/locales/src/nl_NL.js | 81 ++++++++++++++++++++++++----- 1 file changed, 68 insertions(+), 13 deletions(-) diff --git a/packages/@uppy/locales/src/nl_NL.js b/packages/@uppy/locales/src/nl_NL.js index dbd4e9e08d..0211849c25 100644 --- a/packages/@uppy/locales/src/nl_NL.js +++ b/packages/@uppy/locales/src/nl_NL.js @@ -8,22 +8,34 @@ const nl_NL = { } nl_NL.strings = { - addMoreFiles: 'Extra bestanden toevoegen', + addBulkFilesFailed: { + '0': 'Toevoegen van %{smart_count} bestand mislukt door een interne fout', + '1': 'Toevoegen van %{smart_count} bestanden mislukt door interne fouten', + }, addingMoreFiles: 'Bezig met extra bestanden toe te voegen', + addMore: 'Meer toevoegen', + addMoreFiles: 'Extra bestanden toevoegen', + allFilesFromFolderNamed: 'Alle bestanden uit de map %{name}', allowAccessDescription: 'Geef toestemming om foto\'s of videobeelden te kunnen maken.', allowAccessTitle: 'Geef toestemming om je camera te gebruiken', + allowAudioAccessDescription: 'Om geluidsopnamen te maken moet U toestemming geven voor deze website', + allowAudioAccessTitle: 'Geef toestemming om uw microfoon te gebruiken', + aspectRatioLandscape: 'Landschap knippen (16:9)', + aspectRatioPortrait: 'Portret knippen (9:16)', + aspectRatioSquare: 'Vierkant knippen', + authAborted: 'Authenticatie geannuleerd', authenticateWith: 'Verbinden met %{pluginName}', authenticateWithTitle: 'Verbind met %{pluginName} om bestanden te selecteren', - authAborted: 'Authenticatie geannuleerd', back: 'Terug', - addMore: 'Meer toevoegen', browse: 'blader', browseFiles: 'blader', + browseFolders: 'blader', cancel: 'Annuleer', cancelUpload: 'Annuleer upload', chooseFiles: 'Kies bestanden', closeModal: 'Sluit Venster', companionError: 'Verbinding met Companion mislukt', + companionUnauthorizeHint: 'Om toegang te ontnemen voor uw %{provider} account, ga naar %{url}', complete: 'Voltooid', compressedX: '%{size} bespaard door het comprimeren van afbeeldingen', compressingImages: 'Afbeeldingen aan het comprimeren...', @@ -36,6 +48,7 @@ nl_NL.strings = { dashboardTitle: 'Uppy Dashboard', dashboardWindowTitle: 'Uppy Dashboard Venster (Druk escape om te sluiten)', dataUploadedOfTotal: '%{complete} van %{total}', + discardRecordedFile: 'Verwijder opgenomen bestand', done: 'Klaar', dropHereOr: 'Sleep hier je bestanden naartoe of %{browse}', dropHint: 'Sleep hier je bestanden naartoe', @@ -51,6 +64,7 @@ nl_NL.strings = { emptyFolderAdded: 'Er werden geen bestanden toegevoegd uit de lege map', encoding: 'Coderen...', enterCorrectUrl: 'Ongeldige URL: Zorg dat je een directe link naar een bestand invoert', + enterTextToSearch: 'Type hier om te zoeken naar plaatjes', enterUrlToImport: 'Voeg URL toe om een bestand te importeren', exceedsSize: '%{file} overschrijdt de maximaal toegelaten bestandsgrootte van %{size}', failedToFetch: 'Companion kan deze URL niet laden, controleer of de URL correct is', @@ -62,46 +76,94 @@ nl_NL.strings = { }, filter: 'Filter', finishEditingFile: 'Klaar met bestand aan te passen', + flipHorizontal: 'Flip horizontaal', folderAdded: { '0': '%{smart_count} bestand uit %{folder} toegevoegd', '1': '%{smart_count} bestanden uit %{folder} toegevoegd', }, + folderAlreadyAdded: 'De map "%{folder}" is al toegevoegd', + generatingThumbnails: 'Thumbnails genereren...', import: 'Importeer', + importFiles: 'Importeer bestanden van:', importFrom: 'Importeer vanuit %{name}', + inferiorSize: 'Dit bestand is kleiner dat de minimale grootte van %{size}', loading: 'Bezig met laden...', logOut: 'Uitloggen', + micDisabled: 'Microfoon toegang geweigerd door de gebruiker', + missingRequiredMetaField: 'De vereiste metadata ontbreekt', + missingRequiredMetaFieldOnFile: 'De vereiste metadata ontbreekt voor %{fileName}', + missingRequiredMetaFields: { + '0': 'Deze vereiste metadata ontbreekt: %{fields}.', + '1': 'Deze vereiste metadata ontbreekt: %{fields}.', + }, myDevice: 'Mijn apparaat', + noAudioDescription: 'Om audio op te nemen, sluit een microfoon of andere geluidsinput aan', + noAudioTitle: 'Microfoon niet beschikbaar', + noCameraDescription: 'Om foto\'s en/of video op te nemen, sluit een camera aan', + noCameraTitle: 'Camera niet beschikbaar', + noDuplicates: "Kan het dubbele bestand '%{fileName}' niet toevoegen, deze bestaat al", noFilesFound: 'Geen bestanden of mappen gevonden', noInternetConnection: 'Geen internetverbinding', + noMoreFilesAllowed: 'Meer bestanden kunnen niet worden toegevoegd', + openFolderNamed: 'Open map %{name}', pause: 'Pauze', - pauseUpload: 'Pauzeer upload', paused: 'Gepauzeerd', + pauseUpload: 'Pauzeer upload', poweredBy: 'Mogelijk gemaakt door %{uppy}', processingXFiles: { '0': 'Bezig met %{smart_count} bestand te verwerken', '1': 'Bezig met %{smart_count} bestanden te verwerken', }, + recording: 'Aan het opnemen', recordingLength: 'Opnameduur %{recording_length}', recordingStoppedMaxSize: 'Opname gestopt omdat de bestandsgrootte de limiet bijna overschrijdt', + recoveredAllFiles: 'Alle bestanden zijn herstel. U kunt doorgaan me de upload.', + recoveredXFiles: { + '0': 'We konden 1 bestand niet herstellen. Kies het bestand opnieuw en vervolg de upload', + '1': 'We konden %{smart_count} bestanden niet herstellen. Kies de bestanden opnieuw en vervolg de upload.', + }, removeFile: 'Verwijder bestand %{file}', + reSelect: 'Opnieuw selecteren', resetFilter: 'Filter resetten', resume: 'Hervatten', resumeUpload: 'Upload hervatten', retry: 'Opnieuw', retryUpload: 'Upload opnieuw', + revert: 'Terugdraaien', + rotate: 'Draai', + save: 'Opslaan', saveChanges: 'Wijzigingen opslaan', + search: 'Zoek', + searchImages: 'Zoek naar plaatjes', + selectFileNamed: 'Selecteer bestand %{name}', selectX: { '0': 'Selecteer %{smart_count}', '1': 'Selecteer %{smart_count}', }, + sessionRestored: 'Sessie hersteld', + showErrorDetails: 'Laat fout details zien', + signInWithGoogle: 'Inloggen met Google', smile: 'Lach!', + startAudioRecording: 'Start audio-opname', + startCapturing: 'Start scherm-opname', startRecording: 'Start video-opname', + stopAudioRecording: 'Stop audio-opname', + stopCapturing: 'Stop scherm-opname', stopRecording: 'Stop video-opname', + streamActive: 'Stream actief', + streamPassive: 'Stream passief', + submitRecordedFile: 'Stuur opgenomen bestand', takePicture: 'Neem een foto', timedOut: 'Upload al gedurende %{seconds} seconden vastgelopen, bezig afbreken upload.', + unselectFileNamed: 'Deselecteer bestand %{name}', upload: 'Upload', uploadComplete: 'Upload voltooid', uploadFailed: 'Upload mislukt', + uploading: 'Bezig met uploaden', + uploadingXFiles: { + '0': 'Bezig met %{smart_count} bestand te uploaden', + '1': 'Bezig met %{smart_count} bestanden te uploaden', + }, uploadPaused: 'Upload gepauzeerd', uploadXFiles: { '0': 'Upload %{smart_count} bestand', @@ -111,11 +173,6 @@ nl_NL.strings = { '0': 'Upload +%{smart_count} bestand', '1': 'Upload +%{smart_count} bestanden', }, - uploading: 'Bezig met uploaden', - uploadingXFiles: { - '0': 'Bezig met %{smart_count} bestand te uploaden', - '1': 'Bezig met %{smart_count} bestanden te uploaden', - }, xFilesSelected: { '0': '%{smart_count} bestand geselecteerd', '1': '%{smart_count} bestanden geselecteerd', @@ -134,10 +191,8 @@ nl_NL.strings = { '0': 'Je moet minstens %{smart_count} bestand selecteren', '1': 'Je moet minstens %{smart_count} bestanden selecteren', }, - allFilesFromFolderNamed: 'Alle bestanden uit de map %{name}', - selectFileNamed: 'Selecteer bestand %{name}', - unselectFileNamed: 'Deselecteer bestand %{name}', - openFolderNamed: 'Open map %{name}', + zoomIn: 'Zoom in', + zoomOut: 'Zoom uit' } if (typeof Uppy !== 'undefined') { From 2934e312936774163ba94474e45f129e6aea8888 Mon Sep 17 00:00:00 2001 From: Stuart Auld Date: Tue, 21 Jun 2022 22:37:04 +1000 Subject: [PATCH 03/11] Companion: build an ARM64 container (#3841) --- .github/workflows/companion-deploy.yml | 8 +++++--- Dockerfile | 3 +++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/companion-deploy.yml b/.github/workflows/companion-deploy.yml index df3a0d1257..36f5378665 100644 --- a/.github/workflows/companion-deploy.yml +++ b/.github/workflows/companion-deploy.yml @@ -25,17 +25,19 @@ jobs: tag-sha: true tag-match: | \d{1,3}.\d{1,3}.\d{1,3} - - uses: docker/setup-buildx-action@v1 + - uses: docker/setup-qemu-action@v2 + - uses: docker/setup-buildx-action@v2 - name: Log in to DockerHub - uses: docker/login-action@v1 + uses: docker/login-action@v2 with: username: ${{secrets.DOCKER_USERNAME}} password: ${{secrets.DOCKER_PASSWORD}} - name: Build and push - uses: docker/build-push-action@v2 + uses: docker/build-push-action@v3 with: push: true context: . + platforms: linux/amd64,linux/arm64 file: Dockerfile tags: ${{ steps.docker_meta.outputs.tags }} labels: ${{ steps.docker_meta.outputs.labels }} diff --git a/Dockerfile b/Dockerfile index 567fe7fb31..c4fd418c4d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,8 @@ FROM node:16.13.0-alpine as build +# Create link to node on amd64 so that corepack can find it +RUN if [ "$(uname -m)" == "aarch64" ]; then mkdir -p /usr/local/sbin/ && ln -s /usr/local/bin/node /usr/local/sbin/node; fi + WORKDIR /app COPY package.json .yarnrc.yml /app/ From 2925edb5aae17abdf32fe4bd8cecfe5095945042 Mon Sep 17 00:00:00 2001 From: Merlijn Vos Date: Tue, 28 Jun 2022 13:18:14 +0200 Subject: [PATCH 04/11] Fix undefined error in in onTusError (#3848) --- packages/@uppy/locales/src/nl_NL.js | 2 +- packages/@uppy/transloadit/src/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/@uppy/locales/src/nl_NL.js b/packages/@uppy/locales/src/nl_NL.js index 0211849c25..21a3a7719b 100644 --- a/packages/@uppy/locales/src/nl_NL.js +++ b/packages/@uppy/locales/src/nl_NL.js @@ -192,7 +192,7 @@ nl_NL.strings = { '1': 'Je moet minstens %{smart_count} bestanden selecteren', }, zoomIn: 'Zoom in', - zoomOut: 'Zoom uit' + zoomOut: 'Zoom uit', } if (typeof Uppy !== 'undefined') { diff --git a/packages/@uppy/transloadit/src/index.js b/packages/@uppy/transloadit/src/index.js index f5398854b7..45e6719909 100644 --- a/packages/@uppy/transloadit/src/index.js +++ b/packages/@uppy/transloadit/src/index.js @@ -731,7 +731,7 @@ export default class Transloadit extends BasePlugin { } #onTusError = (file, err) => { - this.#closeAssemblyIfExists(file.transloadit?.assembly) + this.#closeAssemblyIfExists(file?.transloadit?.assembly) if (err?.message?.startsWith('tus: ')) { const endpoint = err.originalRequest?.getUnderlyingObject()?.responseURL this.client.submitError(err, { endpoint, type: 'TUS_ERROR' }) From 8c67460e2557c868851021b4d06890aa2c123469 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Sun, 3 Jul 2022 17:32:05 +0200 Subject: [PATCH 05/11] doc: fix Google Drive example (#3855) Refs: c1407070fbb30eb4fb04cb6cb9f64be28f87fab7 --- packages/@uppy/companion/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@uppy/companion/README.md b/packages/@uppy/companion/README.md index e22ac4723f..9e3758832a 100644 --- a/packages/@uppy/companion/README.md +++ b/packages/@uppy/companion/README.md @@ -36,7 +36,7 @@ app.use(session({ secret: 'some secrety secret' })) // be sure to place this anywhere after app.use(bodyParser.json()) and app.use(session({...}) const options = { providerOptions: { - google: { + drive: { key: 'GOOGLE_KEY', secret: 'GOOGLE_SECRET', }, From 50326a06c79b352a0acb45f089324b8d664f4be1 Mon Sep 17 00:00:00 2001 From: YukeshShr <71844521+YukeshShr@users.noreply.github.com> Date: Wed, 6 Jul 2022 13:13:36 +0100 Subject: [PATCH 06/11] website: fix broken links (#3861) Refs: https://app.intercom.com/a/apps/qiqpfgjg/inbox/inbox/5079389/conversations/26852700008229 --- .github/CONTRIBUTING.md | 2 +- website/src/_posts/2019-04-liftoff-11.md | 2 +- website/src/_posts/2019-04-liftoff-14.md | 2 +- website/src/_posts/2019-04-liftoff-16.md | 2 +- website/src/_posts/2019-04-liftoff-17.md | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 8370bf7c3c..1607d63397 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -40,7 +40,7 @@ yarn run test:unit ### End-to-End tests -We use [Cypress](cypress.io/) for our e2e test suite. Be sure to checkout “[Writing your first test](https://docs.cypress.io/guides/getting-started/writing-your-first-test#Add-a-test-file)” and the “[Introduction to Cypress](https://docs.cypress.io/guides/core-concepts/introduction-to-cypress#Cypress-Can-Be-Simple-Sometimes)”. You should also be aware of the “[Best Practices](https://docs.cypress.io/guides/references/best-practices)”. +We use [Cypress](https://www.cypress.io/) for our e2e test suite. Be sure to checkout “[Writing your first test](https://docs.cypress.io/guides/getting-started/writing-your-first-test#Add-a-test-file)” and the “[Introduction to Cypress](https://docs.cypress.io/guides/core-concepts/introduction-to-cypress#Cypress-Can-Be-Simple-Sometimes)”. You should also be aware of the “[Best Practices](https://docs.cypress.io/guides/references/best-practices)”. To get started make sure you have your `.env` set up. Copy the contents of `.env.example` to a file named `.env` and add the values relevant for the test(s) you are trying to run. diff --git a/website/src/_posts/2019-04-liftoff-11.md b/website/src/_posts/2019-04-liftoff-11.md index 20659d3ef9..527bc55137 100644 --- a/website/src/_posts/2019-04-liftoff-11.md +++ b/website/src/_posts/2019-04-liftoff-11.md @@ -37,7 +37,7 @@ And another week bites the dust! With the weekend right around the corner, we're - We released a new version of Uppy. While it isn’t 1.0 just quite yet, this is another step in the right direction. Uppy `0.30.4` features fixes for `allowSyntheticImports`, Typescript typings, issues when using Companion Client for remote AWS-S3 uploads, and using websockets and console.dir in React Native. -- Artur and [Renée](https://github.com/goto-bus-stop) reviewed and merged a [PR](https://github.com/transloadit/uppy/pull/1360) that allows a user to customize the status of an upload in Uppy. Thanks to [Mactavish](https://github.com/Mactaivsh) for contributing! +- Artur and [Renée](https://github.com/goto-bus-stop) reviewed and merged a [PR](https://github.com/transloadit/uppy/pull/1360) that allows a user to customize the status of an upload in Uppy. Thanks to Mactavish for contributing! - [Abdel](https://github.com/kiloreux) [fixed the Serverless example](https://github.com/transloadit/uppy/pull/1408) for running Companion on AWS Lambda. diff --git a/website/src/_posts/2019-04-liftoff-14.md b/website/src/_posts/2019-04-liftoff-14.md index a863b59af1..61bef902ec 100644 --- a/website/src/_posts/2019-04-liftoff-14.md +++ b/website/src/_posts/2019-04-liftoff-14.md @@ -31,7 +31,7 @@ While there are still things to be implemented, such as picking files from Insta ## In Progress -- [Alex](https://github.com/nqst) is working on improving the Uppy design (in the code) in his [`design-facelift` branch](https://github.com/transloadit/uppy/compare/master...nqst:design-facelift). +- [Alex](https://github.com/nqst) is working on improving the Uppy design (in the code) in his `design-facelift` branch - [Evgenia](https://github.com/lakesare) is working on improving accessibility together with Alex, who found many issues that we still need to fix in this area. diff --git a/website/src/_posts/2019-04-liftoff-16.md b/website/src/_posts/2019-04-liftoff-16.md index 6ca41078c3..99f2a13ac8 100644 --- a/website/src/_posts/2019-04-liftoff-16.md +++ b/website/src/_posts/2019-04-liftoff-16.md @@ -32,7 +32,7 @@ Big shout out to both! - [Ife](https://github.com/ifedapoolarewaju) will be integrating fingerprinting and hash code support [into tus-js-client](https://github.com/tus/tus-js-client/pull/73). - If the team has the time, they will also look into large file support, upload and download reporting for Companion XHR uploads, and an issue concerning XHR uploads with the [Transloadit API](https://transloadit.com/docs/api/). -- [Alex](https://github.com/nqst) continues [improving Uppy's UI](https://github.com/transloadit/uppy/compare/master...nqst:design-facelift) and has recently been refactoring CSS code, while Evgenia keeps charging at the [many accessibility issues](https://github.com/transloadit/uppy/issues/created_by/nqst) that are still open. +- [Alex](https://github.com/nqst) continues improving Uppy's UI and has recently been refactoring CSS code, while Evgenia keeps charging at the [many accessibility issues](https://github.com/transloadit/uppy/issues/created_by/nqst) that are still open. In addition to getting Uppy 1.0 out of the dog house, I mentioned that the team is already talking about features and fixes to tackle after 1.0. If you look at our [CHANGELOG](https://github.com/transloadit/uppy/blob/master/CHANGELOG.md), you'll notice some 1.1 todos in there. There's always room for improvement, so now you have something to look forward to after Uppy 1.0 hits the web! :wink: diff --git a/website/src/_posts/2019-04-liftoff-17.md b/website/src/_posts/2019-04-liftoff-17.md index bd3cdf883f..564c11c5b7 100644 --- a/website/src/_posts/2019-04-liftoff-17.md +++ b/website/src/_posts/2019-04-liftoff-17.md @@ -33,7 +33,7 @@ After:
- Artur is reviewing PRs, reporting errors and testing Uppy in response to the team’s feedback. -- Alex continues [improving Uppy's UI](https://github.com/transloadit/uppy/compare/master...nqst:design-facelift) and has recently been refactoring CSS code, while [Evgenia](https://github.com/lakesare) keeps charging at the [many accessibility issues](https://github.com/transloadit/uppy/issues/created_by/nqst) that are still open. +- Alex continues improving Uppy's UI and has recently been refactoring CSS code, while [Evgenia](https://github.com/lakesare) keeps charging at the [many accessibility issues](https://github.com/transloadit/uppy/issues/created_by/nqst) that are still open. - Evgenia is also working on the new drag/drop implementation, which will include a new _Drop Here_ placeholder and not experience any flickering. And as if that weren't enough, she is having a go at `drop folder` support for cross-browser compatibility as well, so that it won’t be relying on DOM manipulation in our Preact components. From 01aa788aa2fafb6f87d8e165b70e432b278a0620 Mon Sep 17 00:00:00 2001 From: Mikael Finstad Date: Wed, 6 Jul 2022 06:16:51 -0700 Subject: [PATCH 07/11] @uppy/companion: Getkey safe behavior (#3592) * add warning about default getKey * add env variable to get a safer getKey default COMPANION_S3_GETKEY_SAFE_BEHAVIOR --- packages/@uppy/companion/src/companion.js | 4 ++++ packages/@uppy/companion/src/standalone/helper.js | 11 ++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/@uppy/companion/src/companion.js b/packages/@uppy/companion/src/companion.js index e3fd60ca39..15853fb5c4 100644 --- a/packages/@uppy/companion/src/companion.js +++ b/packages/@uppy/companion/src/companion.js @@ -63,6 +63,10 @@ module.exports.app = (optionsArg = {}) => { validateConfig(optionsArg) const options = merge({}, defaultOptions, optionsArg) + + // todo remove in next major and default to the safer getKey instead + if (options.providerOptions.s3.getKey === defaultOptions.providerOptions.s3.getKey) process.emitWarning('The current default getKey implementation is not safe because it will cause files with the same name to be overwritten and should be avoided. Please use the environment variable COMPANION_S3_GETKEY_SAFE_BEHAVIOR=true (standalone) or provide your own getKey implementation instead') + const providers = providerManager.getDefaultProviders() const searchProviders = providerManager.getSearchProviders() providerManager.addProviderOptions(options, grantConfig) diff --git a/packages/@uppy/companion/src/standalone/helper.js b/packages/@uppy/companion/src/standalone/helper.js index 260e4f7d3f..d2d4e30c8f 100644 --- a/packages/@uppy/companion/src/standalone/helper.js +++ b/packages/@uppy/companion/src/standalone/helper.js @@ -2,6 +2,8 @@ const fs = require('fs') const merge = require('lodash.merge') const stripIndent = require('common-tags/lib/stripIndent') const crypto = require('crypto') +const uuid = require('uuid') // TODO: migrate to `crypto.getRandomUUID` when removing support for Node.js <14. + const utils = require('../server/helpers/utils') const logger = require('../server/logger') // @ts-ignore @@ -27,7 +29,7 @@ const getConfigFromEnv = () => { const domains = process.env.COMPANION_DOMAINS || process.env.COMPANION_DOMAIN || null const validHosts = domains ? domains.split(',') : [] - return { + const envConfig = { providerOptions: { drive: { key: process.env.COMPANION_GOOGLE_KEY, @@ -117,6 +119,13 @@ const getConfigFromEnv = () => { clientSocketConnectTimeout: process.env.COMPANION_CLIENT_SOCKET_CONNECT_TIMEOUT ? parseInt(process.env.COMPANION_CLIENT_SOCKET_CONNECT_TIMEOUT, 10) : undefined, } + + // todo remove COMPANION_S3_GETKEY_SAFE_BEHAVIOR in next major and use this getKey implementation instead by default + if (process.env.COMPANION_S3_GETKEY_SAFE_BEHAVIOR === 'true') { + envConfig.providerOptions.s3.getKey = (req, filename) => `${uuid.v4()}-${filename}` + } + + return envConfig } /** From 03cb9b7ac79368d6d2581611aed07110e1ae7247 Mon Sep 17 00:00:00 2001 From: Mikael Finstad Date: Wed, 6 Jul 2022 06:48:16 -0700 Subject: [PATCH 08/11] doc: de-dupe companion dev docs (#3852) --- .github/CONTRIBUTING.md | 38 +++++++++++++++++++++++++++++ website/src/docs/companion.md | 45 +---------------------------------- 2 files changed, 39 insertions(+), 44 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 1607d63397..a23ea60e4d 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -54,6 +54,44 @@ To generate the boilerplate for a new test run: ## Development +### Companion + +To start the Companion server along with Uppy, run: + +```bash +yarn run dev:with-companion +``` + +or if you only want to run Companion + +```bash +yarn run start:companion +``` + +This would get the Companion instance running on `http://localhost:3020`. It uses [nodemon](https://github.com/remy/nodemon) so it will automatically restart when files are changed. + +### Live example + +An example server is running at , which is deployed with [Kubernetes](https://github.com/transloadit/uppy/blob/main/packages/%40uppy/companion/KUBERNETES.md) + +### How the Authentication and Token mechanism works + +This section describes how Authentication works between Companion and Providers. While this behaviour is the same for all Providers (Dropbox, Instagram, Google Drive, etc.), we are going to be referring to Dropbox in place of any Provider throughout this section. + +The following steps describe the actions that take place when a user Authenticates and Uploads from Dropbox through Companion: + +* The visitor to a website with Uppy clicks `Connect to Dropbox`. +* Uppy sends a request to Companion, which in turn sends an OAuth request to Dropbox (Requires that OAuth credentials from Dropbox have been added to Companion). +* Dropbox asks the visitor to log in, and whether the Website should be allowed to access your files +* If the visitor agrees, Companion will receive a token from Dropbox, with which we can temporarily download files. +* Companion encrypts the token with a secret key and sends the encrypted token to Uppy (client) +* Every time the visitor clicks on a folder in Uppy, it asks Companion for the new list of files, with this question, the token (still encrypted by Companion) is sent along. +* Companion decrypts the token, requests the list of files from Dropbox and sends it to Uppy. +* When a file is selected for upload, Companion receives the token again according to this procedure, decrypts it again, and thereby downloads the file from Dropbox. +* As the bytes arrive, Companion uploads the bytes to the final destination (depending on the configuration: Apache, a Tus server, S3 bucket, etc). +* Companion reports progress to Uppy, as if it were a local upload. +* Completed! + ### Instagram integration Even though facebook [allows using](https://developers.facebook.com/blog/post/2018/06/08/enforce-https-facebook-login/) http://localhost in dev mode, Instagram doesn’t seem to support that, and seems to need a publically available domain name with HTTPS. diff --git a/website/src/docs/companion.md b/website/src/docs/companion.md index 7b7353af8b..4e133ed96a 100644 --- a/website/src/docs/companion.md +++ b/website/src/docs/companion.md @@ -576,47 +576,4 @@ See also [example code with a custom provider](https://github.com/transloadit/up ## Development -1\. To set up Companion for local development, please clone the Uppy repo and install, like so: - -```bash -git clone https://github.com/transloadit/uppy -cd uppy -yarn install -``` - -2\. Configure your environment variables by copying the `env.example.sh` file to `env.sh` and edit it to its correct values. - -```bash -cp env.example.sh env.sh -$EDITOR env.sh -``` - -3\. To start the server, run: - -```bash -yarn run start:companion -``` - -This would get the Companion instance running on `http://localhost:3020`. It uses [nodemon](https://github.com/remy/nodemon) so it will automatically restart when files are changed. - -## Live example - -An example server is running at , which is deployed with [Kubernetes](https://github.com/transloadit/uppy/blob/main/packages/%40uppy/companion/KUBERNETES.md) - -## How the Authentication and Token mechanism works - -This section describes how Authentication works between Companion and Providers. While this behaviour is the same for all Providers (Dropbox, Instagram, Google Drive, etc.), we are going to be referring to Dropbox in place of any Provider throughout this section. - -The following steps describe the actions that take place when a user Authenticates and Uploads from Dropbox through Companion: - -* The visitor to a website with Uppy clicks `Connect to Dropbox`. -* Uppy sends a request to Companion, which in turn sends an OAuth request to Dropbox (Requires that OAuth credentials from Dropbox have been added to Companion). -* Dropbox asks the visitor to log in, and whether the Website should be allowed to access your files -* If the visitor agrees, Companion will receive a token from Dropbox, with which we can temporarily download files. -* Companion encrypts the token with a secret key and sends the encrypted token to Uppy (client) -* Every time the visitor clicks on a folder in Uppy, it asks Companion for the new list of files, with this question, the token (still encrypted by Companion) is sent along. -* Companion decrypts the token, requests the list of files from Dropbox and sends it to Uppy. -* When a file is selected for upload, Companion receives the token again according to this procedure, decrypts it again, and thereby downloads the file from Dropbox. -* As the bytes arrive, Companion uploads the bytes to the final destination (depending on the configuration: Apache, a Tus server, S3 bucket, etc). -* Companion reports progress to Uppy, as if it were a local upload. -* Completed! +See [CONTRIBUTING.md](/.github/CONTRIBUTING.md#companion) From 3277ac358972d5dc5574b8d6f8d26134e77cb0d6 Mon Sep 17 00:00:00 2001 From: Mikael Finstad Date: Wed, 6 Jul 2022 07:28:58 -0700 Subject: [PATCH 09/11] @uppy/provider-views: improve logging (#3638) * add testing dynamic oauth example * improve logging levels Log origin errors with error level * Update Dashboard.js Co-authored-by: Antoine du Hamel --- .env.example | 2 ++ .../src/ProviderView/ProviderView.jsx | 9 ++++++--- private/dev/Dashboard.js | 20 ++++++++++--------- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/.env.example b/.env.example index 0b134ed4c2..f5a27d4186 100644 --- a/.env.example +++ b/.env.example @@ -49,6 +49,8 @@ VITE_UPLOADER=tus # VITE_UPLOADER=transloadit-xhr VITE_COMPANION_URL=http://localhost:3020 +# See also Transloadit.COMPANION_PATTERN +VITE_COMPANION_ALLOWED_HOSTS=/\.transloadit\.com$/ VITE_TUS_ENDPOINT=https://tusd.tusdemo.net/files/ VITE_XHR_ENDPOINT=https://xhr-server.herokuapp.com/upload diff --git a/packages/@uppy/provider-views/src/ProviderView/ProviderView.jsx b/packages/@uppy/provider-views/src/ProviderView/ProviderView.jsx index 0ec3f14888..af8f3638e1 100644 --- a/packages/@uppy/provider-views/src/ProviderView/ProviderView.jsx +++ b/packages/@uppy/provider-views/src/ProviderView/ProviderView.jsx @@ -243,9 +243,12 @@ export default class ProviderView extends View { const authWindow = window.open(link, '_blank') const handleToken = (e) => { + if (e.source !== authWindow) { + this.plugin.uppy.log('rejecting event from unknown source') + return + } if (!isOriginAllowed(e.origin, this.plugin.opts.companionAllowedHosts) || e.source !== authWindow) { this.plugin.uppy.log(`rejecting event from ${e.origin} vs allowed pattern ${this.plugin.opts.companionAllowedHosts}`) - return } // Check if it's a string before doing the JSON.parse to maintain support @@ -253,7 +256,7 @@ export default class ProviderView extends View { const data = typeof e.data === 'string' ? JSON.parse(e.data) : e.data if (data.error) { - this.plugin.uppy.log('auth aborted') + this.plugin.uppy.log('auth aborted', 'warning') const { uppy } = this.plugin const message = uppy.i18n('authAborted') uppy.info({ message }, 'warning', 5000) @@ -261,7 +264,7 @@ export default class ProviderView extends View { } if (!data.token) { - this.plugin.uppy.log('did not receive token from auth window') + this.plugin.uppy.log('did not receive token from auth window', 'error') return } diff --git a/private/dev/Dashboard.js b/private/dev/Dashboard.js index e8014e1ac6..3d27d9f79b 100644 --- a/private/dev/Dashboard.js +++ b/private/dev/Dashboard.js @@ -24,6 +24,7 @@ import generateSignatureIfSecret from './generateSignatureIfSecret.js' const { VITE_UPLOADER : UPLOADER, VITE_COMPANION_URL : COMPANION_URL, + VITE_COMPANION_ALLOWED_HOSTS : companionAllowedHosts, VITE_TUS_ENDPOINT : TUS_ENDPOINT, VITE_XHR_ENDPOINT : XHR_ENDPOINT, VITE_TRANSLOADIT_KEY : TRANSLOADIT_KEY, @@ -75,18 +76,19 @@ export default () => { proudlyDisplayPoweredByUppy: true, note: '2 files, images and video only', }) - // .use(GoogleDrive, { target: Dashboard, companionUrl: COMPANION_URL }) - // .use(Instagram, { target: Dashboard, companionUrl: COMPANION_URL }) - // .use(Dropbox, { target: Dashboard, companionUrl: COMPANION_URL }) - // .use(Box, { target: Dashboard, companionUrl: COMPANION_URL }) - // .use(Facebook, { target: Dashboard, companionUrl: COMPANION_URL }) - // .use(OneDrive, { target: Dashboard, companionUrl: COMPANION_URL }) - // .use(Zoom, { target: Dashboard, companionUrl: COMPANION_URL }) - // .use(Url, { target: Dashboard, companionUrl: COMPANION_URL }) - // .use(Unsplash, { target: Dashboard, companionUrl: COMPANION_URL }) + // .use(GoogleDrive, { target: Dashboard, companionUrl: COMPANION_URL, companionAllowedHosts }) + // .use(Instagram, { target: Dashboard, companionUrl: COMPANION_URL, companionAllowedHosts }) + // .use(Dropbox, { target: Dashboard, companionUrl: COMPANION_URL, companionAllowedHosts }) + // .use(Box, { target: Dashboard, companionUrl: COMPANION_URL, companionAllowedHosts }) + // .use(Facebook, { target: Dashboard, companionUrl: COMPANION_URL, companionAllowedHosts }) + // .use(OneDrive, { target: Dashboard, companionUrl: COMPANION_URL, companionAllowedHosts }) + // .use(Zoom, { target: Dashboard, companionUrl: COMPANION_URL, companionAllowedHosts }) + // .use(Url, { target: Dashboard, companionUrl: COMPANION_URL, companionAllowedHosts }) + // .use(Unsplash, { target: Dashboard, companionUrl: COMPANION_URL, companionAllowedHosts }) .use(RemoteSources, { companionUrl: COMPANION_URL, sources: ['Box', 'Dropbox', 'Facebook', 'GoogleDrive', 'Instagram', 'OneDrive', 'Unsplash', 'Url'], + companionAllowedHosts, }) .use(Webcam, { target: Dashboard, From 9eff85b76f1526118d043391a15877541e6169bb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 6 Jul 2022 15:42:22 +0100 Subject: [PATCH 10/11] Release: uppy@2.12.2 (#3865) | Package | Version | Package | Version | | -------------------- | ------- | -------------------- | ------- | | @uppy/companion | 3.7.0 | @uppy/transloadit | 2.3.2 | | @uppy/locales | 2.1.1 | @uppy/robodog | 2.8.2 | | @uppy/provider-views | 2.1.2 | uppy | 2.12.2 | - @uppy/provider-views: improve logging (Mikael Finstad / #3638) - docs: de-dupe companion dev docs (Mikael Finstad / #3852) - @uppy/companion: Getkey safe behavior (Mikael Finstad / #3592) - website: fix broken links (YukeshShr / #3861) - @uppy/companion: doc: fix Google Drive example (Antoine du Hamel / #3855) - @uppy/locales,@uppy/transloadit: Fix undefined error in in onTusError (Merlijn Vos / #3848) - @uppy/companion: build an ARM64 container (Stuart Auld / #3841) - @uppy/locales: Add missing translations and reorder nl_NL locale (Kasper Meinema / #3839) - docs: Fix typo in aws-s3-multipart.md (Ikko Ashimine / #3838) - meta: do not rebase when preparing beta candidates (Antoine du Hamel) - meta: fix hard-coded branch name in release script (Antoine du Hamel) --- BUNDLE-README.md | 2 +- CHANGELOG.md | 23 +++ README.md | 178 +++++++++--------- examples/cdn-example/index.html | 4 +- examples/transloadit-textarea/index.html | 2 +- .../uppy-with-companion/client/index.html | 4 +- packages/@uppy/companion/CHANGELOG.md | 9 + packages/@uppy/companion/package.json | 2 +- packages/@uppy/locales/CHANGELOG.md | 8 + packages/@uppy/locales/package.json | 2 +- packages/@uppy/provider-views/CHANGELOG.md | 7 + packages/@uppy/provider-views/package.json | 2 +- packages/@uppy/robodog/README.md | 4 +- packages/@uppy/robodog/package.json | 2 +- packages/@uppy/transloadit/CHANGELOG.md | 7 + packages/@uppy/transloadit/package.json | 2 +- packages/uppy/package.json | 2 +- website/src/docs/index.md | 10 +- website/src/docs/locales.md | 4 +- website/src/docs/migration-guides.md | 6 +- website/src/docs/robodog-form.md | 6 +- website/src/docs/robodog.md | 4 +- website/src/examples/dashboard/app.es6 | 2 +- website/src/examples/i18n/app.html | 8 +- .../src/examples/markdown-snippets/app.es6 | 2 +- .../src/examples/markdown-snippets/app.html | 2 +- website/themes/uppy/layout/index.ejs | 6 +- 27 files changed, 182 insertions(+), 128 deletions(-) diff --git a/BUNDLE-README.md b/BUNDLE-README.md index b69c544ca0..163599b4d2 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 dd3f9a203f..2e2891d94c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,29 @@ Please add your entries in this format: In the current stage we aim to release a new version at least every month. +## 2.12.2 + +Released: 2022-07-06 + +| Package | Version | Package | Version | +| -------------------- | ------- | -------------------- | ------- | +| @uppy/companion | 3.7.0 | @uppy/transloadit | 2.3.2 | +| @uppy/locales | 2.1.1 | @uppy/robodog | 2.8.2 | +| @uppy/provider-views | 2.1.2 | uppy | 2.12.2 | + +- @uppy/provider-views: improve logging (Mikael Finstad / #3638) +- docs: de-dupe companion dev docs (Mikael Finstad / #3852) +- @uppy/companion: Getkey safe behavior (Mikael Finstad / #3592) +- website: fix broken links (YukeshShr / #3861) +- @uppy/companion: doc: fix Google Drive example (Antoine du Hamel / #3855) +- @uppy/locales,@uppy/transloadit: Fix undefined error in in onTusError (Merlijn Vos / #3848) +- @uppy/companion: build an ARM64 container (Stuart Auld / #3841) +- @uppy/locales: Add missing translations and reorder nl_NL locale (Kasper Meinema / #3839) +- docs: Fix typo in aws-s3-multipart.md (Ikko Ashimine / #3838) +- meta: do not rebase when preparing beta candidates (Antoine du Hamel) +- meta: fix hard-coded branch name in release script (Antoine du Hamel) + + ## 2.12.1 Released: 2022-06-09 diff --git a/README.md b/README.md index a5c1f564c0..475778fb46 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ const uppy = new Uppy({ autoProceed: false }) $ npm install @uppy/core @uppy/dashboard @uppy/tus ``` -Add CSS [uppy.min.css](https://releases.transloadit.com/uppy/v2.12.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/v2.12.2/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,10 +75,10 @@ Alternatively, you can also use a pre-built bundle from Transloadit’s CDN: Edg ```html - + - +
@@ -184,7 +184,7 @@ If you’re using Uppy from CDN, those polyfills are already included in the leg bundle, so no need to include anything additionally: ```html - + ``` ## FAQ @@ -254,13 +254,13 @@ Use Uppy in your project? [Let us know](https://github.com/transloadit/uppy/issu :---: |:---: |:---: |:---: |:---: |:---: | [sadovnychyi](https://github.com/sadovnychyi) |[samuelayo](https://github.com/samuelayo) |[richardwillars](https://github.com/richardwillars) |[ajkachnic](https://github.com/ajkachnic) |[github-actions\[bot\]](https://github.com/apps/github-actions) |[dependabot\[bot\]](https://github.com/apps/dependabot) | -[zcallan](https://github.com/zcallan) |[tim-kos](https://github.com/tim-kos) |[janko](https://github.com/janko) |[wilkoklak](https://github.com/wilkoklak) |[oliverpool](https://github.com/oliverpool) |[Botz](https://github.com/Botz) | +[zcallan](https://github.com/zcallan) |[tim-kos](https://github.com/tim-kos) |[janko](https://github.com/janko) |[wilkoklak](https://github.com/wilkoklak) |[YukeshShr](https://github.com/YukeshShr) |[oliverpool](https://github.com/oliverpool) | :---: |:---: |:---: |:---: |:---: |:---: | -[zcallan](https://github.com/zcallan) |[tim-kos](https://github.com/tim-kos) |[janko](https://github.com/janko) |[wilkoklak](https://github.com/wilkoklak) |[oliverpool](https://github.com/oliverpool) |[Botz](https://github.com/Botz) | +[zcallan](https://github.com/zcallan) |[tim-kos](https://github.com/tim-kos) |[janko](https://github.com/janko) |[wilkoklak](https://github.com/wilkoklak) |[YukeshShr](https://github.com/YukeshShr) |[oliverpool](https://github.com/oliverpool) | -[YukeshShr](https://github.com/YukeshShr) |[mcallistertyler](https://github.com/mcallistertyler) |[mokutsu-coursera](https://github.com/mokutsu-coursera) |[DJWassink](https://github.com/DJWassink) |[taoqf](https://github.com/taoqf) |[mrbatista](https://github.com/mrbatista) | +[Botz](https://github.com/Botz) |[mcallistertyler](https://github.com/mcallistertyler) |[mokutsu-coursera](https://github.com/mokutsu-coursera) |[DJWassink](https://github.com/DJWassink) |[taoqf](https://github.com/taoqf) |[mrbatista](https://github.com/mrbatista) | :---: |:---: |:---: |:---: |:---: |:---: | -[YukeshShr](https://github.com/YukeshShr) |[mcallistertyler](https://github.com/mcallistertyler) |[mokutsu-coursera](https://github.com/mokutsu-coursera) |[DJWassink](https://github.com/DJWassink) |[taoqf](https://github.com/taoqf) |[mrbatista](https://github.com/mrbatista) | +[Botz](https://github.com/Botz) |[mcallistertyler](https://github.com/mcallistertyler) |[mokutsu-coursera](https://github.com/mokutsu-coursera) |[DJWassink](https://github.com/DJWassink) |[taoqf](https://github.com/taoqf) |[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) |[Hawxy](https://github.com/Hawxy) | :---: |:---: |:---: |:---: |:---: |:---: | @@ -286,85 +286,85 @@ Use Uppy in your project? [Let us know](https://github.com/transloadit/uppy/issu :---: |:---: |:---: |:---: |:---: |:---: | [behnammodi](https://github.com/behnammodi) |[BePo65](https://github.com/BePo65) |[bradedelman](https://github.com/bradedelman) |[Burkes](https://github.com/Burkes) |[camiloforero](https://github.com/camiloforero) |[craigjennings11](https://github.com/craigjennings11) | -[davekiss](https://github.com/davekiss) |[DenysNosov](https://github.com/DenysNosov) |[ethanwillis](https://github.com/ethanwillis) |[frobinsonj](https://github.com/frobinsonj) |[geertclerx](https://github.com/geertclerx) |[ghasrfakhri](https://github.com/ghasrfakhri) | +[davekiss](https://github.com/davekiss) |[DenysNosov](https://github.com/DenysNosov) |[ethanwillis](https://github.com/ethanwillis) |[frobinsonj](https://github.com/frobinsonj) |[geertclerx](https://github.com/geertclerx) |[eltociear](https://github.com/eltociear) | :---: |:---: |:---: |:---: |:---: |:---: | -[davekiss](https://github.com/davekiss) |[DenysNosov](https://github.com/DenysNosov) |[ethanwillis](https://github.com/ethanwillis) |[frobinsonj](https://github.com/frobinsonj) |[geertclerx](https://github.com/geertclerx) |[ghasrfakhri](https://github.com/ghasrfakhri) | +[davekiss](https://github.com/davekiss) |[DenysNosov](https://github.com/DenysNosov) |[ethanwillis](https://github.com/ethanwillis) |[frobinsonj](https://github.com/frobinsonj) |[geertclerx](https://github.com/geertclerx) |[eltociear](https://github.com/eltociear) | -[jasonbosco](https://github.com/jasonbosco) |[jedwood](https://github.com/jedwood) |[dogrocker](https://github.com/dogrocker) |[lamartire](https://github.com/lamartire) |[lafe](https://github.com/lafe) |[mactavishz](https://github.com/mactavishz) | +[ghasrfakhri](https://github.com/ghasrfakhri) |[jasonbosco](https://github.com/jasonbosco) |[jedwood](https://github.com/jedwood) |[dogrocker](https://github.com/dogrocker) |[lamartire](https://github.com/lamartire) |[lafe](https://github.com/lafe) | :---: |:---: |:---: |:---: |:---: |:---: | -[jasonbosco](https://github.com/jasonbosco) |[jedwood](https://github.com/jedwood) |[dogrocker](https://github.com/dogrocker) |[lamartire](https://github.com/lamartire) |[lafe](https://github.com/lafe) |[mactavishz](https://github.com/mactavishz) | +[ghasrfakhri](https://github.com/ghasrfakhri) |[jasonbosco](https://github.com/jasonbosco) |[jedwood](https://github.com/jedwood) |[dogrocker](https://github.com/dogrocker) |[lamartire](https://github.com/lamartire) |[lafe](https://github.com/lafe) | -[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) |[paescuj](https://github.com/paescuj) | +[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[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) |[paescuj](https://github.com/paescuj) | +[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) | -[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) |[SlavikTraktor](https://github.com/SlavikTraktor) | +[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[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) |[SlavikTraktor](https://github.com/SlavikTraktor) | +[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) | -[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) |[Zyclotrop-j](https://github.com/Zyclotrop-j) | +[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[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) |[Zyclotrop-j](https://github.com/Zyclotrop-j) | +[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) | -[anark](https://github.com/anark) |[fortrieb](https://github.com/fortrieb) |[jarey](https://github.com/jarey) |[muhammadInam](https://github.com/muhammadInam) |[rettgerst](https://github.com/rettgerst) |[mkabatek](https://github.com/mkabatek) | +[Zyclotrop-j](https://github.com/Zyclotrop-j) |[anark](https://github.com/anark) |[fortrieb](https://github.com/fortrieb) |[jarey](https://github.com/jarey) |[muhammadInam](https://github.com/muhammadInam) |[rettgerst](https://github.com/rettgerst) | :---: |:---: |:---: |:---: |:---: |:---: | -[anark](https://github.com/anark) |[fortrieb](https://github.com/fortrieb) |[jarey](https://github.com/jarey) |[muhammadInam](https://github.com/muhammadInam) |[rettgerst](https://github.com/rettgerst) |[mkabatek](https://github.com/mkabatek) | +[Zyclotrop-j](https://github.com/Zyclotrop-j) |[anark](https://github.com/anark) |[fortrieb](https://github.com/fortrieb) |[jarey](https://github.com/jarey) |[muhammadInam](https://github.com/muhammadInam) |[rettgerst](https://github.com/rettgerst) | -[jukakoski](https://github.com/jukakoski) |[olemoign](https://github.com/olemoign) |[ajschmidt8](https://github.com/ajschmidt8) |[superhawk610](https://github.com/superhawk610) |[abannach](https://github.com/abannach) |[adamelmore](https://github.com/adamelmore) | +[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) |[abannach](https://github.com/abannach) | :---: |:---: |:---: |:---: |:---: |:---: | -[jukakoski](https://github.com/jukakoski) |[olemoign](https://github.com/olemoign) |[ajschmidt8](https://github.com/ajschmidt8) |[superhawk610](https://github.com/superhawk610) |[abannach](https://github.com/abannach) |[adamelmore](https://github.com/adamelmore) | +[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) |[abannach](https://github.com/abannach) | -[ajh-sr](https://github.com/ajh-sr) |[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) | +[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) |[ahmadissa](https://github.com/ahmadissa) | :---: |:---: |:---: |:---: |:---: |:---: | -[ajh-sr](https://github.com/ajh-sr) |[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) | +[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) |[ahmadissa](https://github.com/ahmadissa) | -[alexnj](https://github.com/alexnj) |[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) | +[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) |[amitport](https://github.com/amitport) | :---: |:---: |:---: |:---: |:---: |:---: | -[alexnj](https://github.com/alexnj) |[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) | +[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) |[amitport](https://github.com/amitport) | -[radarhere](https://github.com/radarhere) |[superandrew213](https://github.com/superandrew213) |[andychongyz](https://github.com/andychongyz) |[anthony0030](https://github.com/anthony0030) |[Abourass](https://github.com/Abourass) |[arthurdenner](https://github.com/arthurdenner) | +[functino](https://github.com/functino) |[radarhere](https://github.com/radarhere) |[superandrew213](https://github.com/superandrew213) |[andychongyz](https://github.com/andychongyz) |[anthony0030](https://github.com/anthony0030) |[Abourass](https://github.com/Abourass) | :---: |:---: |:---: |:---: |:---: |:---: | -[radarhere](https://github.com/radarhere) |[superandrew213](https://github.com/superandrew213) |[andychongyz](https://github.com/andychongyz) |[anthony0030](https://github.com/anthony0030) |[Abourass](https://github.com/Abourass) |[arthurdenner](https://github.com/arthurdenner) | +[functino](https://github.com/functino) |[radarhere](https://github.com/radarhere) |[superandrew213](https://github.com/superandrew213) |[andychongyz](https://github.com/andychongyz) |[anthony0030](https://github.com/anthony0030) |[Abourass](https://github.com/Abourass) | -[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) |[azizk](https://github.com/azizk) | +[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[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) |[azizk](https://github.com/azizk) | +[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) | -[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) |[cartfisk](https://github.com/cartfisk) | +[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[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) |[cartfisk](https://github.com/cartfisk) | +[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) | -[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) |[Aarbel](https://github.com/Aarbel) | +[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[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) |[Aarbel](https://github.com/Aarbel) | +[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) | -[cbush06](https://github.com/cbush06) |[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) | +[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) |[sercraig](https://github.com/sercraig) | :---: |:---: |:---: |:---: |:---: |:---: | -[cbush06](https://github.com/cbush06) |[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) | +[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) |[sercraig](https://github.com/sercraig) | -[danmichaelo](https://github.com/danmichaelo) |[danschalow](https://github.com/danschalow) |[danilat](https://github.com/danilat) |[mrboomer](https://github.com/mrboomer) |[akizor](https://github.com/akizor) |[davilima6](https://github.com/davilima6) | +[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) |[akizor](https://github.com/akizor) | :---: |:---: |:---: |:---: |:---: |:---: | -[danmichaelo](https://github.com/danmichaelo) |[danschalow](https://github.com/danschalow) |[danilat](https://github.com/danilat) |[mrboomer](https://github.com/mrboomer) |[akizor](https://github.com/akizor) |[davilima6](https://github.com/davilima6) | +[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) |[akizor](https://github.com/akizor) | -[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) |[efbautista](https://github.com/efbautista) | +[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[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) |[efbautista](https://github.com/efbautista) | +[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) | -[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) |[fgallinari](https://github.com/fgallinari) | +[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[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) |[fgallinari](https://github.com/fgallinari) | +[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) | -[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) |[roenschg](https://github.com/roenschg) | +[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[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) |[roenschg](https://github.com/roenschg) | +[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) | -[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) | +[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[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) | +[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) | -[eltociear](https://github.com/eltociear) |[intenzive](https://github.com/intenzive) |[GreenJimmy](https://github.com/GreenJimmy) |[mazoruss](https://github.com/mazoruss) |[JacobMGEvans](https://github.com/JacobMGEvans) |[jdssem](https://github.com/jdssem) | +[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) |[jdssem](https://github.com/jdssem) | :---: |:---: |:---: |:---: |:---: |:---: | -[eltociear](https://github.com/eltociear) |[intenzive](https://github.com/intenzive) |[GreenJimmy](https://github.com/GreenJimmy) |[mazoruss](https://github.com/mazoruss) |[JacobMGEvans](https://github.com/JacobMGEvans) |[jdssem](https://github.com/jdssem) | +[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) |[jdssem](https://github.com/jdssem) | [JakubHaladej](https://github.com/JakubHaladej) |[Jbithell](https://github.com/Jbithell) |[jcjmcclean](https://github.com/jcjmcclean) |[janklimo](https://github.com/janklimo) |[janwilts](https://github.com/janwilts) |[vith](https://github.com/vith) | :---: |:---: |:---: |:---: |:---: |:---: | @@ -378,85 +378,85 @@ Use Uppy in your project? [Let us know](https://github.com/transloadit/uppy/issu :---: |:---: |:---: |:---: |:---: |:---: | [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) |[tykarol](https://github.com/tykarol) | -[firesharkstudios](https://github.com/firesharkstudios) |[kevin-west-10x](https://github.com/kevin-west-10x) |[elkebab](https://github.com/elkebab) |[kyleparisi](https://github.com/kyleparisi) |[leaanthony](https://github.com/leaanthony) |[larowlan](https://github.com/larowlan) | +[kaspermeinema](https://github.com/kaspermeinema) |[firesharkstudios](https://github.com/firesharkstudios) |[kevin-west-10x](https://github.com/kevin-west-10x) |[elkebab](https://github.com/elkebab) |[kyleparisi](https://github.com/kyleparisi) |[leaanthony](https://github.com/leaanthony) | :---: |:---: |:---: |:---: |:---: |:---: | -[firesharkstudios](https://github.com/firesharkstudios) |[kevin-west-10x](https://github.com/kevin-west-10x) |[elkebab](https://github.com/elkebab) |[kyleparisi](https://github.com/kyleparisi) |[leaanthony](https://github.com/leaanthony) |[larowlan](https://github.com/larowlan) | +[kaspermeinema](https://github.com/kaspermeinema) |[firesharkstudios](https://github.com/firesharkstudios) |[kevin-west-10x](https://github.com/kevin-west-10x) |[elkebab](https://github.com/elkebab) |[kyleparisi](https://github.com/kyleparisi) |[leaanthony](https://github.com/leaanthony) | -[dviry](https://github.com/dviry) |[galli-leo](https://github.com/galli-leo) |[leods92](https://github.com/leods92) |[louim](https://github.com/louim) |[lucaperret](https://github.com/lucaperret) |[lucax88x](https://github.com/lucax88x) | +[larowlan](https://github.com/larowlan) |[dviry](https://github.com/dviry) |[galli-leo](https://github.com/galli-leo) |[leods92](https://github.com/leods92) |[louim](https://github.com/louim) |[lucaperret](https://github.com/lucaperret) | :---: |:---: |:---: |:---: |:---: |:---: | -[dviry](https://github.com/dviry) |[galli-leo](https://github.com/galli-leo) |[leods92](https://github.com/leods92) |[louim](https://github.com/louim) |[lucaperret](https://github.com/lucaperret) |[lucax88x](https://github.com/lucax88x) | +[larowlan](https://github.com/larowlan) |[dviry](https://github.com/dviry) |[galli-leo](https://github.com/galli-leo) |[leods92](https://github.com/leods92) |[louim](https://github.com/louim) |[lucaperret](https://github.com/lucaperret) | -[onhate](https://github.com/onhate) |[mperrando](https://github.com/mperrando) |[marcosthejew](https://github.com/marcosthejew) |[marcusforsberg](https://github.com/marcusforsberg) |[Acconut](https://github.com/Acconut) |[martin-brennan](https://github.com/martin-brennan) | +[lucax88x](https://github.com/lucax88x) |[onhate](https://github.com/onhate) |[mperrando](https://github.com/mperrando) |[marcosthejew](https://github.com/marcosthejew) |[marcusforsberg](https://github.com/marcusforsberg) |[Acconut](https://github.com/Acconut) | :---: |:---: |:---: |:---: |:---: |:---: | -[onhate](https://github.com/onhate) |[mperrando](https://github.com/mperrando) |[marcosthejew](https://github.com/marcosthejew) |[marcusforsberg](https://github.com/marcusforsberg) |[Acconut](https://github.com/Acconut) |[martin-brennan](https://github.com/martin-brennan) | +[lucax88x](https://github.com/lucax88x) |[onhate](https://github.com/onhate) |[mperrando](https://github.com/mperrando) |[marcosthejew](https://github.com/marcosthejew) |[marcusforsberg](https://github.com/marcusforsberg) |[Acconut](https://github.com/Acconut) | -[masaok](https://github.com/masaok) |[mattfik](https://github.com/mattfik) |[matthewhartstonge](https://github.com/matthewhartstonge) |[mauricioribeiro](https://github.com/mauricioribeiro) |[hrsh](https://github.com/hrsh) |[mhulet](https://github.com/mhulet) | +[martin-brennan](https://github.com/martin-brennan) |[masaok](https://github.com/masaok) |[mattfik](https://github.com/mattfik) |[matthewhartstonge](https://github.com/matthewhartstonge) |[mauricioribeiro](https://github.com/mauricioribeiro) |[hrsh](https://github.com/hrsh) | :---: |:---: |:---: |:---: |:---: |:---: | -[masaok](https://github.com/masaok) |[mattfik](https://github.com/mattfik) |[matthewhartstonge](https://github.com/matthewhartstonge) |[mauricioribeiro](https://github.com/mauricioribeiro) |[hrsh](https://github.com/hrsh) |[mhulet](https://github.com/mhulet) | +[martin-brennan](https://github.com/martin-brennan) |[masaok](https://github.com/masaok) |[mattfik](https://github.com/mattfik) |[matthewhartstonge](https://github.com/matthewhartstonge) |[mauricioribeiro](https://github.com/mauricioribeiro) |[hrsh](https://github.com/hrsh) | -[mkopinsky](https://github.com/mkopinsky) |[achmiral](https://github.com/achmiral) |[boudra](https://github.com/boudra) |[mnafees](https://github.com/mnafees) |[shahimclt](https://github.com/shahimclt) |[navruzm](https://github.com/navruzm) | +[mhulet](https://github.com/mhulet) |[mkopinsky](https://github.com/mkopinsky) |[achmiral](https://github.com/achmiral) |[boudra](https://github.com/boudra) |[mnafees](https://github.com/mnafees) |[shahimclt](https://github.com/shahimclt) | :---: |:---: |:---: |:---: |:---: |:---: | -[mkopinsky](https://github.com/mkopinsky) |[achmiral](https://github.com/achmiral) |[boudra](https://github.com/boudra) |[mnafees](https://github.com/mnafees) |[shahimclt](https://github.com/shahimclt) |[navruzm](https://github.com/navruzm) | +[mhulet](https://github.com/mhulet) |[mkopinsky](https://github.com/mkopinsky) |[achmiral](https://github.com/achmiral) |[boudra](https://github.com/boudra) |[mnafees](https://github.com/mnafees) |[shahimclt](https://github.com/shahimclt) | -[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) |[coreprocess](https://github.com/coreprocess) |[nil1511](https://github.com/nil1511) | +[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) |[coreprocess](https://github.com/coreprocess) | :---: |:---: |:---: |:---: |:---: |:---: | -[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) |[coreprocess](https://github.com/coreprocess) |[nil1511](https://github.com/nil1511) | +[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) |[coreprocess](https://github.com/coreprocess) | -[leftdevel](https://github.com/leftdevel) |[cryptic022](https://github.com/cryptic022) |[patricklindsay](https://github.com/patricklindsay) |[plneto](https://github.com/plneto) |[pedrofs](https://github.com/pedrofs) |[pmusaraj](https://github.com/pmusaraj) | +[nil1511](https://github.com/nil1511) |[leftdevel](https://github.com/leftdevel) |[cryptic022](https://github.com/cryptic022) |[patricklindsay](https://github.com/patricklindsay) |[plneto](https://github.com/plneto) |[pedrofs](https://github.com/pedrofs) | :---: |:---: |:---: |:---: |:---: |:---: | -[leftdevel](https://github.com/leftdevel) |[cryptic022](https://github.com/cryptic022) |[patricklindsay](https://github.com/patricklindsay) |[plneto](https://github.com/plneto) |[pedrofs](https://github.com/pedrofs) |[pmusaraj](https://github.com/pmusaraj) | +[nil1511](https://github.com/nil1511) |[leftdevel](https://github.com/leftdevel) |[cryptic022](https://github.com/cryptic022) |[patricklindsay](https://github.com/patricklindsay) |[plneto](https://github.com/plneto) |[pedrofs](https://github.com/pedrofs) | -[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) |[refo](https://github.com/refo) | +[pmusaraj](https://github.com/pmusaraj) |[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[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) |[refo](https://github.com/refo) | +[pmusaraj](https://github.com/pmusaraj) |[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) | -[SxDx](https://github.com/SxDx) |[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) | +[refo](https://github.com/refo) |[SxDx](https://github.com/SxDx) |[robwilson1](https://github.com/robwilson1) |[romain-preston](https://github.com/romain-preston) |[scherroman](https://github.com/scherroman) |[rossng](https://github.com/rossng) | :---: |:---: |:---: |:---: |:---: |:---: | -[SxDx](https://github.com/SxDx) |[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) | +[refo](https://github.com/refo) |[SxDx](https://github.com/SxDx) |[robwilson1](https://github.com/robwilson1) |[romain-preston](https://github.com/romain-preston) |[scherroman](https://github.com/scherroman) |[rossng](https://github.com/rossng) | -[fortunto2](https://github.com/fortunto2) |[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) | +[rart](https://github.com/rart) |[fortunto2](https://github.com/fortunto2) |[samuelcolburn](https://github.com/samuelcolburn) |[sebasegovia01](https://github.com/sebasegovia01) |[sergei-zelinsky](https://github.com/sergei-zelinsky) |[szh](https://github.com/szh) | :---: |:---: |:---: |:---: |:---: |:---: | -[fortunto2](https://github.com/fortunto2) |[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) | +[rart](https://github.com/rart) |[fortunto2](https://github.com/fortunto2) |[samuelcolburn](https://github.com/samuelcolburn) |[sebasegovia01](https://github.com/sebasegovia01) |[sergei-zelinsky](https://github.com/sergei-zelinsky) |[szh](https://github.com/szh) | -[waptik](https://github.com/waptik) |[amaitu](https://github.com/amaitu) |[steverob](https://github.com/steverob) |[taj](https://github.com/taj) |[Tashows](https://github.com/Tashows) |[twarlop](https://github.com/twarlop) | +[SpazzMarticus](https://github.com/SpazzMarticus) |[waptik](https://github.com/waptik) |[amaitu](https://github.com/amaitu) |[steverob](https://github.com/steverob) |[sjauld](https://github.com/sjauld) |[taj](https://github.com/taj) | :---: |:---: |:---: |:---: |:---: |:---: | -[waptik](https://github.com/waptik) |[amaitu](https://github.com/amaitu) |[steverob](https://github.com/steverob) |[taj](https://github.com/taj) |[Tashows](https://github.com/Tashows) |[twarlop](https://github.com/twarlop) | +[SpazzMarticus](https://github.com/SpazzMarticus) |[waptik](https://github.com/waptik) |[amaitu](https://github.com/amaitu) |[steverob](https://github.com/steverob) |[sjauld](https://github.com/sjauld) |[taj](https://github.com/taj) | -[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[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) | -[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[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) | -[YehudaKremer](https://github.com/YehudaKremer) |[zachconner](https://github.com/zachconner) |[zacharylawson](https://github.com/zacharylawson) |[zackbloom](https://github.com/zackbloom) |[sartoshi-foot-dao](https://github.com/sartoshi-foot-dao) |[agreene-coursera](https://github.com/agreene-coursera) | +[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[YehudaKremer](https://github.com/YehudaKremer) |[zachconner](https://github.com/zachconner) |[zacharylawson](https://github.com/zacharylawson) |[zackbloom](https://github.com/zackbloom) |[sartoshi-foot-dao](https://github.com/sartoshi-foot-dao) |[agreene-coursera](https://github.com/agreene-coursera) | +[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) | -[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) |[canvasbh](https://github.com/canvasbh) | +[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[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) |[canvasbh](https://github.com/canvasbh) | +[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) | -[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) |[franckl](https://github.com/franckl) | +[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[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) |[franckl](https://github.com/franckl) | +[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) | -[gaelicwinter](https://github.com/gaelicwinter) |[green-mike](https://github.com/green-mike) |[heocoi](https://github.com/heocoi) |[hxgf](https://github.com/hxgf) |[johnmanjiro13](https://github.com/johnmanjiro13) |[kode-ninja](https://github.com/kode-ninja) | +[fingul](https://github.com/fingul) |[franckl](https://github.com/franckl) |[gaelicwinter](https://github.com/gaelicwinter) |[green-mike](https://github.com/green-mike) |[heocoi](https://github.com/heocoi) |[hxgf](https://github.com/hxgf) | :---: |:---: |:---: |:---: |:---: |:---: | -[gaelicwinter](https://github.com/gaelicwinter) |[green-mike](https://github.com/green-mike) |[heocoi](https://github.com/heocoi) |[hxgf](https://github.com/hxgf) |[johnmanjiro13](https://github.com/johnmanjiro13) |[kode-ninja](https://github.com/kode-ninja) | +[fingul](https://github.com/fingul) |[franckl](https://github.com/franckl) |[gaelicwinter](https://github.com/gaelicwinter) |[green-mike](https://github.com/green-mike) |[heocoi](https://github.com/heocoi) |[hxgf](https://github.com/hxgf) | -[jx-zyf](https://github.com/jx-zyf) |[magumbo](https://github.com/magumbo) |[ninesalt](https://github.com/ninesalt) |[phil714](https://github.com/phil714) |[luntta](https://github.com/luntta) |[rhymes](https://github.com/rhymes) | +[johnmanjiro13](https://github.com/johnmanjiro13) |[kode-ninja](https://github.com/kode-ninja) |[jx-zyf](https://github.com/jx-zyf) |[magumbo](https://github.com/magumbo) |[ninesalt](https://github.com/ninesalt) |[phil714](https://github.com/phil714) | :---: |:---: |:---: |:---: |:---: |:---: | -[jx-zyf](https://github.com/jx-zyf) |[magumbo](https://github.com/magumbo) |[ninesalt](https://github.com/ninesalt) |[phil714](https://github.com/phil714) |[luntta](https://github.com/luntta) |[rhymes](https://github.com/rhymes) | +[johnmanjiro13](https://github.com/johnmanjiro13) |[kode-ninja](https://github.com/kode-ninja) |[jx-zyf](https://github.com/jx-zyf) |[magumbo](https://github.com/magumbo) |[ninesalt](https://github.com/ninesalt) |[phil714](https://github.com/phil714) | -[rlebosse](https://github.com/rlebosse) |[rtaieb](https://github.com/rtaieb) |[slawexxx44](https://github.com/slawexxx44) |[thanhthot](https://github.com/thanhthot) |[tinny77](https://github.com/tinny77) |[tusharjkhunt](https://github.com/tusharjkhunt) | +[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[rlebosse](https://github.com/rlebosse) |[rtaieb](https://github.com/rtaieb) |[slawexxx44](https://github.com/slawexxx44) |[thanhthot](https://github.com/thanhthot) |[tinny77](https://github.com/tinny77) |[tusharjkhunt](https://github.com/tusharjkhunt) | +[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) | -[vedran555](https://github.com/vedran555) |[yoann-hellopret](https://github.com/yoann-hellopret) |[olitomas](https://github.com/olitomas) |[JimmyLv](https://github.com/JimmyLv) | -:---: |:---: |:---: |:---: | -[vedran555](https://github.com/vedran555) |[yoann-hellopret](https://github.com/yoann-hellopret) |[olitomas](https://github.com/olitomas) |[JimmyLv](https://github.com/JimmyLv) | +[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) | +:---: |:---: |:---: |:---: |:---: |:---: | +[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) | diff --git a/examples/cdn-example/index.html b/examples/cdn-example/index.html index 688ab8e671..acee2b277d 100644 --- a/examples/cdn-example/index.html +++ b/examples/cdn-example/index.html @@ -4,11 +4,11 @@ - + - + + + + ``` Then, a global `Robodog` variable will be available. For usage instructions, please see the [main Robodog documentation](https://uppy.io/docs/robodog). diff --git a/packages/@uppy/robodog/package.json b/packages/@uppy/robodog/package.json index 9c8296523f..02d62909d5 100644 --- a/packages/@uppy/robodog/package.json +++ b/packages/@uppy/robodog/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/robodog", "description": "Transloadit SDK for browsers based on Uppy", - "version": "2.8.1", + "version": "2.8.2", "license": "MIT", "main": "lib/index.js", "jsnext:main": "src/index.js", diff --git a/packages/@uppy/transloadit/CHANGELOG.md b/packages/@uppy/transloadit/CHANGELOG.md index b26ee94046..9ed415799d 100644 --- a/packages/@uppy/transloadit/CHANGELOG.md +++ b/packages/@uppy/transloadit/CHANGELOG.md @@ -1,5 +1,12 @@ # @uppy/transloadit +## 2.3.2 + +Released: 2022-07-06 +Included in: Uppy v2.12.2 + +- @uppy/locales,@uppy/transloadit: Fix undefined error in in onTusError (Merlijn Vos / #3848) + ## 2.3.1 Released: 2022-06-09 diff --git a/packages/@uppy/transloadit/package.json b/packages/@uppy/transloadit/package.json index acea38ff1d..69c5f8454c 100644 --- a/packages/@uppy/transloadit/package.json +++ b/packages/@uppy/transloadit/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/transloadit", "description": "The Transloadit plugin can be used to upload files to Transloadit for all kinds of processing, such as transcoding video, resizing images, zipping/unzipping, and more", - "version": "2.3.1", + "version": "2.3.2", "license": "MIT", "main": "lib/index.js", "types": "types/index.d.ts", diff --git a/packages/uppy/package.json b/packages/uppy/package.json index cab3db84bf..70274ddfdf 100644 --- a/packages/uppy/package.json +++ b/packages/uppy/package.json @@ -1,7 +1,7 @@ { "name": "uppy", "description": "Extensible JavaScript file upload widget with support for drag&drop, resumable uploads, previews, restrictions, file processing/encoding, remote providers like Instagram, Dropbox, Google Drive, S3 and more :dog:", - "version": "2.12.1", + "version": "2.12.2", "license": "MIT", "main": "index.js", "module": "index.mjs", diff --git a/website/src/docs/index.md b/website/src/docs/index.md index 18b56459b5..e4e3e9a3af 100644 --- a/website/src/docs/index.md +++ b/website/src/docs/index.md @@ -19,12 +19,12 @@ Here’s the simplest example html page with Uppy (it uses a CDN bundle, while w Uppy - +
- + + ``` 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 93786c997e..e7b52928e4 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/robodog-form.md b/website/src/docs/robodog-form.md index 81e83c9c88..da3b03344c 100644 --- a/website/src/docs/robodog-form.md +++ b/website/src/docs/robodog-form.md @@ -150,7 +150,7 @@ Make sure to also include the Uppy css file in your `` tag in case you wan ```html - + ``` @@ -162,7 +162,7 @@ Notice how the form is submitted to the inexistant `/uploads` route once all tra Testing Robodog - +
@@ -172,7 +172,7 @@ Notice how the form is submitted to the inexistant `/uploads` route once all tra
- + + + ``` diff --git a/website/src/examples/dashboard/app.es6 b/website/src/examples/dashboard/app.es6 index 6b53281202..79228e38be 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/v2.1.0/${localeName}.min.js` + js.src = `https://releases.transloadit.com/uppy/locales/v2.1.1/${localeName}.min.js` head.appendChild(js) } diff --git a/website/src/examples/i18n/app.html b/website/src/examples/i18n/app.html index 33299ce3f0..ac09a145f0 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:
- - - + + + +// const robodog = require('@uppy/robodog') const TRANSLOADIT_EXAMPLE_KEY = '35c1aed03f5011e982b6afe82599b6a0' diff --git a/website/src/examples/markdown-snippets/app.html b/website/src/examples/markdown-snippets/app.html index 5235384a82..ec7af32bfc 100644 --- a/website/src/examples/markdown-snippets/app.html +++ b/website/src/examples/markdown-snippets/app.html @@ -1,6 +1,6 @@ + -->

Create a new snippet

diff --git a/website/themes/uppy/layout/index.ejs b/website/themes/uppy/layout/index.ejs index 366016ee23..7a929a67cd 100644 --- a/website/themes/uppy/layout/index.ejs +++ b/website/themes/uppy/layout/index.ejs @@ -187,9 +187,9 @@

© <%- date(Date.now(), 'YYYY') %> Transloadit

- - - + + + `) 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 80d20cb0a7..cfad4c6ce5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,29 @@ Please add your entries in this format: In the current stage we aim to release a new version at least every month. +## 3.0.0 + +Released: 2022-07-06 + +| Package | Version | Package | Version | +| -------------------- | ------- | -------------------- | ------- | +| @uppy/companion | 4.0.0 | @uppy/transloadit | 3.0.0 | +| @uppy/locales | 3.0.0 | @uppy/robodog | 3.0.0 | +| @uppy/provider-views | 3.0.0 | uppy | 3.0.0 | + +- example: fix `custom-provider` example (Antoine du Hamel / #3854) +- example: fix Vue3 example (Antoine du Hamel / #3774) +- @uppy/companion: remove deprecated duplicated metrics (Mikael Finstad / #3833) +- example: update CDN example (Antoine du Hamel / #3803) +- @uppy/companion: Companion 3 default to no s3 acl (Mikael Finstad / #3826) +- @uppy/companion: rewrite companion.app() to return an object (Mikael Finstad / #3827) +- @uppy/companion: remove companion provider compat api (Mikael Finstad / #3828) +- @uppy/companion: rewrite code for node >=14 (Mikael Finstad / #3829) +- @uppy/companion: remove chunkSize backwards compatibility (Mikael Finstad / #3830) +- @uppy/companion: Companion: make `emitSuccess` and `emitError` private (Mikael Finstad / #3832) +- @uppy/companion: do not use a default upload protocol (Mikael Finstad / #3834) + + ## 3.0.0-beta.1 Released: 2022-06-09 diff --git a/README.md b/README.md index faee5e59ff..26714f196a 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ const uppy = new Uppy({ autoProceed: false }) $ npm install @uppy/core @uppy/dashboard @uppy/tus ``` -Add CSS [uppy.min.css](https://releases.transloadit.com/uppy/v3.0.0-beta.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.0.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,10 +75,10 @@ Alternatively, you can also use a pre-built bundle from Transloadit’s CDN: Edg ```html - + - +
@@ -184,7 +184,7 @@ If you’re using Uppy from CDN, those polyfills are already included in the leg bundle, so no need to include anything additionally: ```html - + ``` ## FAQ diff --git a/examples/cdn-example/index.html b/examples/cdn-example/index.html index 34580dcac9..beccdea6c7 100644 --- a/examples/cdn-example/index.html +++ b/examples/cdn-example/index.html @@ -4,7 +4,7 @@ - + @@ -16,7 +16,7 @@ Dashboard, Webcam, Tus, - } from "https://releases.transloadit.com/uppy/v3.0.0-beta.1/uppy.min.mjs"; + } from "https://releases.transloadit.com/uppy/v3.0.0/uppy.min.mjs"; const uppy = new Core.Uppy({ debug: true, autoProceed: false }) .use(Dashboard, { trigger: "#uppyModalOpener" }) @@ -29,7 +29,7 @@ - + + + + ``` Then, a global `Robodog` variable will be available. For usage instructions, please see the [main Robodog documentation](https://uppy.io/docs/robodog). diff --git a/packages/@uppy/robodog/package.json b/packages/@uppy/robodog/package.json index 025adcc928..a546625e37 100644 --- a/packages/@uppy/robodog/package.json +++ b/packages/@uppy/robodog/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/robodog", "description": "Transloadit SDK for browsers based on Uppy", - "version": "3.0.0-beta.1", + "version": "3.0.0", "license": "MIT", "main": "lib/index.js", "jsnext:main": "src/index.js", @@ -52,6 +52,5 @@ "md-gum-polyfill": "^1.0.0", "resize-observer-polyfill": "^1.5.1", "whatwg-fetch": "^3.6.2" - }, - "stableVersion": "2.7.0" + } } diff --git a/packages/@uppy/transloadit/package.json b/packages/@uppy/transloadit/package.json index 43385a5bd6..596809a5d7 100644 --- a/packages/@uppy/transloadit/package.json +++ b/packages/@uppy/transloadit/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/transloadit", "description": "The Transloadit plugin can be used to upload files to Transloadit for all kinds of processing, such as transcoding video, resizing images, zipping/unzipping, and more", - "version": "3.0.0-beta.1", + "version": "3.0.0", "license": "MIT", "main": "lib/index.js", "types": "types/index.d.ts", @@ -41,6 +41,5 @@ "devDependencies": { "@jest/globals": "^27.4.2", "whatwg-fetch": "^3.6.2" - }, - "stableVersion": "2.3.0" + } } diff --git a/packages/uppy/package.json b/packages/uppy/package.json index 8e24b826e2..0669d7ab16 100644 --- a/packages/uppy/package.json +++ b/packages/uppy/package.json @@ -1,7 +1,7 @@ { "name": "uppy", "description": "Extensible JavaScript file upload widget with support for drag&drop, resumable uploads, previews, restrictions, file processing/encoding, remote providers like Instagram, Dropbox, Google Drive, S3 and more :dog:", - "version": "3.0.0-beta.1", + "version": "3.0.0", "license": "MIT", "main": "index.mjs", "module": "index.mjs", @@ -74,6 +74,5 @@ "regenerator-runtime": "0.13.9", "resize-observer-polyfill": "^1.5.1", "whatwg-fetch": "^3.6.2" - }, - "stableVersion": "2.11.0" + } } diff --git a/website/src/docs/index.md b/website/src/docs/index.md index 21021d7c62..97aded8c18 100644 --- a/website/src/docs/index.md +++ b/website/src/docs/index.md @@ -19,12 +19,12 @@ Here’s the simplest example html page with Uppy (it uses a CDN bundle, while w Uppy - +
- + + ``` 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 ea429c8237..01a1cd2f89 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/robodog-form.md b/website/src/docs/robodog-form.md index 8fdaa9e362..48fe04f534 100644 --- a/website/src/docs/robodog-form.md +++ b/website/src/docs/robodog-form.md @@ -150,7 +150,7 @@ Make sure to also include the Uppy css file in your `` tag in case you wan ```html - + ``` @@ -162,7 +162,7 @@ Notice how the form is submitted to the inexistant `/uploads` route once all tra Testing Robodog - + @@ -172,7 +172,7 @@ Notice how the form is submitted to the inexistant `/uploads` route once all tra
- + + + ``` diff --git a/website/src/examples/dashboard/app.es6 b/website/src/examples/dashboard/app.es6 index b2efd04f29..83117abe01 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.0-beta.1/${localeName}.min.js` + js.src = `https://releases.transloadit.com/uppy/locales/v3.0.0/${localeName}.min.js` head.appendChild(js) } diff --git a/website/src/examples/i18n/app.html b/website/src/examples/i18n/app.html index 7c52e50b66..f17e079327 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:
- - - + + + +// const robodog = require('@uppy/robodog') const TRANSLOADIT_EXAMPLE_KEY = '35c1aed03f5011e982b6afe82599b6a0' diff --git a/website/src/examples/markdown-snippets/app.html b/website/src/examples/markdown-snippets/app.html index 073e90e8d2..a09d4beae9 100644 --- a/website/src/examples/markdown-snippets/app.html +++ b/website/src/examples/markdown-snippets/app.html @@ -1,6 +1,6 @@ + -->

Create a new snippet

diff --git a/website/themes/uppy/layout/index.ejs b/website/themes/uppy/layout/index.ejs index b582202f05..6fad3847c4 100644 --- a/website/themes/uppy/layout/index.ejs +++ b/website/themes/uppy/layout/index.ejs @@ -187,9 +187,9 @@

© <%- date(Date.now(), 'YYYY') %> Transloadit

- - - + + +