From 1ad4fa70878df670c6c0a4e2b1ea51b447658c6e Mon Sep 17 00:00:00 2001 From: Evgenia Karunus Date: Mon, 19 Feb 2024 14:32:04 +0400 Subject: [PATCH 01/16] autoOpenFileEditor - rename "Edit file" to "Edit image" (#4925) * - change "Edit file" => "Edit image" * locales/src/ca_ES.js - typescriptify --- .../src/components/FileCard/index.jsx | 5 +- packages/@uppy/dashboard/src/locale.js | 1 + packages/@uppy/locales/src/ar_SA.ts | 1 + packages/@uppy/locales/src/bg_BG.ts | 1 + .../@uppy/locales/src/{ca_ES.js => ca_ES.ts} | 111 +++++++++++------- packages/@uppy/locales/src/cs_CZ.ts | 1 + packages/@uppy/locales/src/da_DK.ts | 1 + packages/@uppy/locales/src/de_DE.ts | 1 + packages/@uppy/locales/src/el_GR.ts | 1 + packages/@uppy/locales/src/en_US.ts | 1 + packages/@uppy/locales/src/es_ES.ts | 1 + packages/@uppy/locales/src/es_MX.ts | 1 + packages/@uppy/locales/src/fa_IR.ts | 1 + packages/@uppy/locales/src/fi_FI.ts | 1 + packages/@uppy/locales/src/fr_FR.ts | 1 + packages/@uppy/locales/src/gl_ES.ts | 1 + packages/@uppy/locales/src/he_IL.ts | 1 + packages/@uppy/locales/src/hi_IN.ts | 1 + packages/@uppy/locales/src/hr_HR.ts | 1 + packages/@uppy/locales/src/hu_HU.ts | 1 + packages/@uppy/locales/src/id_ID.ts | 1 + packages/@uppy/locales/src/is_IS.ts | 1 + packages/@uppy/locales/src/it_IT.ts | 1 + packages/@uppy/locales/src/ja_JP.ts | 1 + packages/@uppy/locales/src/ko_KR.ts | 1 + packages/@uppy/locales/src/nb_NO.ts | 1 + packages/@uppy/locales/src/nl_NL.ts | 1 + packages/@uppy/locales/src/pl_PL.ts | 1 + packages/@uppy/locales/src/pt_BR.ts | 1 + packages/@uppy/locales/src/pt_PT.ts | 1 + packages/@uppy/locales/src/ro_RO.ts | 1 + packages/@uppy/locales/src/ru_RU.ts | 1 + packages/@uppy/locales/src/sk_SK.ts | 1 + packages/@uppy/locales/src/sr_RS_Cyrillic.ts | 1 + packages/@uppy/locales/src/sr_RS_Latin.ts | 1 + packages/@uppy/locales/src/sv_SE.ts | 1 + packages/@uppy/locales/src/th_TH.ts | 1 + packages/@uppy/locales/src/tr_TR.ts | 1 + packages/@uppy/locales/src/uk_UA.ts | 1 + packages/@uppy/locales/src/uz_UZ.ts | 1 + packages/@uppy/locales/src/vi_VN.ts | 1 + packages/@uppy/locales/src/zh_CN.ts | 1 + packages/@uppy/locales/src/zh_TW.ts | 1 + 43 files changed, 112 insertions(+), 45 deletions(-) rename packages/@uppy/locales/src/{ca_ES.js => ca_ES.ts} (63%) diff --git a/packages/@uppy/dashboard/src/components/FileCard/index.jsx b/packages/@uppy/dashboard/src/components/FileCard/index.jsx index 714a634161..e334f50b41 100644 --- a/packages/@uppy/dashboard/src/components/FileCard/index.jsx +++ b/packages/@uppy/dashboard/src/components/FileCard/index.jsx @@ -114,7 +114,10 @@ export default function FileCard (props) { openFileEditor(file) }} > - {i18n('editFile')} + {/* At the moment we only have one file editor - image editor. + If we get editors for other file formats (e.g. pdfs), + we can conditionally display i18n('editFile')/i18n('editImage'). */} + {i18n('editImage')} )} diff --git a/packages/@uppy/dashboard/src/locale.js b/packages/@uppy/dashboard/src/locale.js index d90dcee3e6..5d84e24c17 100644 --- a/packages/@uppy/dashboard/src/locale.js +++ b/packages/@uppy/dashboard/src/locale.js @@ -23,6 +23,7 @@ export default { removeFile: 'Remove file', // Used as the screen reader label for buttons that open the metadata editor panel for a file. editFile: 'Edit file', + editImage: 'Edit image', // Shown in the panel header for the metadata editor. Rendered as “Editing image.png”. editing: 'Editing %{file}', // Shown on the main upload screen when an upload error occurs diff --git a/packages/@uppy/locales/src/ar_SA.ts b/packages/@uppy/locales/src/ar_SA.ts index 36b64bb64c..2df8845655 100644 --- a/packages/@uppy/locales/src/ar_SA.ts +++ b/packages/@uppy/locales/src/ar_SA.ts @@ -46,6 +46,7 @@ ar_SA.strings = { dropPasteImportFiles: 'او اسحب الملفات هنا %{browse}', dropPasteImportFolders: 'او اسحب الملفات هنا %{browse}', editFile: 'تعديل الملف', + editImage: 'تعديل الصورة', editing: 'جاري تعديل %{file}', emptyFolderAdded: 'لا يوجد ملفات او مجلدات هنا', encoding: 'التشفير...', diff --git a/packages/@uppy/locales/src/bg_BG.ts b/packages/@uppy/locales/src/bg_BG.ts index 152b90cd16..f74aa12313 100644 --- a/packages/@uppy/locales/src/bg_BG.ts +++ b/packages/@uppy/locales/src/bg_BG.ts @@ -58,6 +58,7 @@ bg_BG.strings = { dropPasteImportFolders: 'Пуснете файловете си тук, поставете, %{browse} или импортирайте от:', editFile: 'Редакция файл', + editImage: 'Редактиране на изображение', editing: 'Редактиране %{file}', emptyFolderAdded: 'Не са добавени файлове от празна директория', encoding: 'Кодиране...', diff --git a/packages/@uppy/locales/src/ca_ES.js b/packages/@uppy/locales/src/ca_ES.ts similarity index 63% rename from packages/@uppy/locales/src/ca_ES.js rename to packages/@uppy/locales/src/ca_ES.ts index 89b228b15b..f3c95c39a0 100644 --- a/packages/@uppy/locales/src/ca_ES.js +++ b/packages/@uppy/locales/src/ca_ES.ts @@ -1,5 +1,8 @@ -const ca_ES = { - pluralize (n) { +import type { Locale } from '@uppy/utils/lib/Translator' + +const ca_ES: Locale<0 | 1> = { + strings: {}, + pluralize(n) { if (n === 1) { return 0 } @@ -9,25 +12,29 @@ const ca_ES = { ca_ES.strings = { addBulkFilesFailed: { - '0': 'No s\'ha pogut afegir %{smart_count} arxiu a causa d\'un error intern', - '1': 'No s\'han pogut afegir %{smart_count} arxius a causa d\'errors interns', + '0': "No s'ha pogut afegir %{smart_count} arxiu a causa d'un error intern", + '1': "No s'han pogut afegir %{smart_count} arxius a causa d'errors interns", }, - addedNumFiles: 'S\'ha afegit %{numFiles} arxiu(s)', + addedNumFiles: "S'ha afegit %{numFiles} arxiu(s)", addingMoreFiles: 'Afegint més arxius', - additionalRestrictionsFailed: 'No s\'han complert %{count} restriccions addicionals', + additionalRestrictionsFailed: + "No s'han complert %{count} restriccions addicionals", addMore: 'Afegir més', addMoreFiles: 'Afegir més arxius', allFilesFromFolderNamed: 'Tots els arxius de la carpeta %{name}', - allowAccessDescription: 'Per prendre fotos o gravar vídeos amb la teva càmera, si us plau permet l\'accés a la càmera per a aquest lloc.', - allowAccessTitle: 'Si us plau, permet l\'accés a la teva càmera', - allowAudioAccessDescription: 'Per gravar àudio, si us plau permet l\'accés al micròfon per a aquest lloc.', - allowAudioAccessTitle: 'Si us plau, permet l\'accés al teu micròfon', + allowAccessDescription: + "Per prendre fotos o gravar vídeos amb la teva càmera, si us plau permet l'accés a la càmera per a aquest lloc.", + allowAccessTitle: "Si us plau, permet l'accés a la teva càmera", + allowAudioAccessDescription: + "Per gravar àudio, si us plau permet l'accés al micròfon per a aquest lloc.", + allowAudioAccessTitle: "Si us plau, permet l'accés al teu micròfon", aspectRatioLandscape: 'Retallar horitzontal (16:9)', aspectRatioPortrait: 'Retallar vertical (9:16)', aspectRatioSquare: 'Retallar quadrat', authAborted: 'Autenticació cancel·lada', authenticateWith: 'Connecta amb %{pluginName}', - authenticateWithTitle: 'Si us plau, autentica\'t amb %{pluginName} per a seleccionar arxius', + authenticateWithTitle: + "Si us plau, autentica't amb %{pluginName} per a seleccionar arxius", back: 'Enrere', browse: 'Navegar', browseFiles: 'Navegar pels arxius', @@ -37,52 +44,59 @@ ca_ES.strings = { chooseFiles: 'Seleccionar arxius', closeModal: 'Tanca finestra', companionError: 'Error en la connexió amb Companion', - companionUnauthorizeHint: 'Per desautoritzar el teu compte de %{provider}, si us plau ves a %{url}', + companionUnauthorizeHint: + 'Per desautoritzar el teu compte de %{provider}, si us plau ves a %{url}', complete: 'Completat', - compressedX: 'S\'ha estalviat %{size} comprimint imatges', + compressedX: "S'ha estalviat %{size} comprimint imatges", compressingImages: 'Comprimint imatges...', connectedToInternet: 'Connectat a Internet', - copyLink: 'Copia l\'enllaç', + copyLink: "Copia l'enllaç", copyLinkToClipboardFallback: 'Copia la següent URL', copyLinkToClipboardSuccess: 'Enllaç copiat al portapapers', creatingAssembly: 'Preparant càrrega...', - creatingAssemblyFailed: 'No s\'ha pogut crear un Assembly', - dashboardTitle: 'Carregador d\'arxius', - dashboardWindowTitle: 'Finestra per a carregar arxius (Prem l\'escape per tancar)', + creatingAssemblyFailed: "No s'ha pogut crear un Assembly", + dashboardTitle: "Carregador d'arxius", + dashboardWindowTitle: + "Finestra per a carregar arxius (Prem l'escape per tancar)", dataUploadedOfTotal: '%{complete} de %{total}', - discardRecordedFile: 'Descarta l\'arxiu gravat', + discardRecordedFile: "Descarta l'arxiu gravat", done: 'Fet', dropHereOr: 'Deixa els arxius aquí o %{browse}', dropHint: 'Deixa els teus arxius aquí', dropPasteBoth: 'Deixa arxius aquí, %{browseFiles} o %{browseFolders}', dropPasteFiles: 'Deixa arxius aquí o %{browseFiles}', dropPasteFolders: 'Deixa arxius aquí o %{browseFolders}', - dropPasteImportBoth: 'Deixa arxius aquí, %{browseFiles}, %{browseFolders} o importa des de:', + dropPasteImportBoth: + 'Deixa arxius aquí, %{browseFiles}, %{browseFolders} o importa des de:', dropPasteImportFiles: 'Deixa arxius aquí, %{browseFiles} o importa des de:', - dropPasteImportFolders: 'Deixa arxius aquí, %{browseFolders} o importa des de:', - editFile: 'Edita l\'arxiu', - editFileWithFilename: 'Edita l\'arxiu %{file}', + dropPasteImportFolders: + 'Deixa arxius aquí, %{browseFolders} o importa des de:', + editFile: "Edita l'arxiu", + editImage: 'Edita la imatge', + editFileWithFilename: "Edita l'arxiu %{file}", editing: 'Editant %{file}', - emptyFolderAdded: 'No s\'han afegit arxius des de la carpeta buida', + emptyFolderAdded: "No s'han afegit arxius des de la carpeta buida", encoding: 'Codificant...', - enterCorrectUrl: 'URL incorrecta: Si us plau, assegura\'t d\'ingressar un enllaç directe a un arxiu', + enterCorrectUrl: + "URL incorrecta: Si us plau, assegura't d'ingressar un enllaç directe a un arxiu", enterTextToSearch: 'Ingresa text per buscar imatges', enterUrlToImport: 'Ingresa la URL per importar un arxiu', error: 'Error', exceedsSize: '%{file} excedeix la mida màxima permesa de %{size}', - failedToFetch: 'Companion no ha pogut recuperar aquesta URL, si us plau assegura\'t que sigui correcta', - failedToUpload: 'No s\'ha pogut carregar %{file}', - fileSource: 'Font d\'arxiu: %{name}', + failedToFetch: + "Companion no ha pogut recuperar aquesta URL, si us plau assegura't que sigui correcta", + failedToUpload: "No s'ha pogut carregar %{file}", + fileSource: "Font d'arxiu: %{name}", filesUploadedOfTotal: { '0': '%{complete} de %{smart_count} arxiu pujat', '1': '%{complete} de %{smart_count} arxius pujats', }, filter: 'Filtrar', - finishEditingFile: 'Finalitzar edició d\'arxiu', + finishEditingFile: "Finalitzar edició d'arxiu", flipHorizontal: 'Girar horitzontalment', folderAdded: { - '0': 'S\'ha afegit %{smart_count} arxiu des de %{folder}', - '1': 'S\'han afegit %{smart_count} arxius des de %{folder}', + '0': "S'ha afegit %{smart_count} arxiu des de %{folder}", + '1': "S'han afegit %{smart_count} arxius des de %{folder}", }, folderAlreadyAdded: 'La carpeta "%{folder}" ja s\'ha afegit', generatingThumbnails: 'Generant miniatures...', @@ -92,17 +106,20 @@ ca_ES.strings = { inferiorSize: 'Aquest arxiu és més petit que la mida permesa de %{size}', loading: 'Carregant...', logOut: 'Tancar sessió', - micDisabled: 'L\'accés al micròfon va ser denegat per l\'usuari', + micDisabled: "L'accés al micròfon va ser denegat per l'usuari", missingRequiredMetaField: 'Falten camps de metadades obligatoris', - missingRequiredMetaFieldOnFile: 'Falten camps de metadades obligatoris a %{fileName}', + missingRequiredMetaFieldOnFile: + 'Falten camps de metadades obligatoris a %{fileName}', missingRequiredMetaFields: { '0': 'Falta el camp de metadades obligatori: %{fields}.', '1': 'Falten els camps de metadades obligatoris: %{fields}.', }, myDevice: 'El meu dispositiu', - noAudioDescription: 'Per gravar àudio, si us plau connecta un micròfon o un altre dispositiu d\'entrada d\'àudio', + noAudioDescription: + "Per gravar àudio, si us plau connecta un micròfon o un altre dispositiu d'entrada d'àudio", noAudioTitle: 'Micròfon no disponible', - noCameraDescription: 'Per prendre fotos o gravar vídeo, si us plau connecta un dispositiu de càmera', + noCameraDescription: + 'Per prendre fotos o gravar vídeo, si us plau connecta un dispositiu de càmera', noCameraTitle: 'Càmera no disponible', noDuplicates: "No es pot afegir l'arxiu duplicat '%{fileName}', ja existeix", noFilesFound: 'No tens arxius o carpetes aquí', @@ -128,10 +145,12 @@ ca_ES.strings = { '1': 'Processant %{smart_count} arxius', }, recording: 'Enregistrament', - recordingLength: 'Durada de l\'enregistrament %{recording_length}', - recordingStoppedMaxSize: 'L\'enregistrament s\'ha aturat perquè la mida de l\'arxiu està a punt de superar el límit', + recordingLength: "Durada de l'enregistrament %{recording_length}", + recordingStoppedMaxSize: + "L'enregistrament s'ha aturat perquè la mida de l'arxiu està a punt de superar el límit", recordVideoBtn: 'Enregistrar vídeo', - recoveredAllFiles: 'S\'han restaurat tots els arxius. Ara pots reprendre la pujada.', + recoveredAllFiles: + "S'han restaurat tots els arxius. Ara pots reprendre la pujada.", recoveredXFiles: { '0': 'No vam poder recuperar completament 1 arxiu. Si us plau, torna a seleccionar-lo i reprengues la pujada.', '1': 'No vam poder recuperar completament %{smart_count} arxius. Si us plau, torna a seleccionar-los i reprengues la pujada.', @@ -155,13 +174,13 @@ ca_ES.strings = { '1': 'Seleccionar %{smart_count}', }, sessionRestored: 'Sessió restaurada', - showErrorDetails: 'Mostrar detalls de l\'error', + showErrorDetails: "Mostrar detalls de l'error", signInWithGoogle: 'Iniciar sessió amb Google', smile: '¡Somriu!', - startAudioRecording: 'Iniciar enregistrament d\'àudio', + startAudioRecording: "Iniciar enregistrament d'àudio", startCapturing: 'Iniciar captura de pantalla', startRecording: 'Iniciar enregistrament de vídeo', - stopAudioRecording: 'Aturar enregistrament d\'àudio', + stopAudioRecording: "Aturar enregistrament d'àudio", stopCapturing: 'Aturar captura de pantalla', stopRecording: 'Aturar enregistrament de vídeo', streamActive: 'Transmissió activa', @@ -169,7 +188,7 @@ ca_ES.strings = { submitRecordedFile: 'Enviar arxiu enregistrat', takePicture: 'Fer una foto', takePictureBtn: 'Capturar foto', - timedOut: 'La pujada s\'ha aturat durant %{seconds} segons, avortant.', + timedOut: "La pujada s'ha aturat durant %{seconds} segons, avortant.", upload: 'Pujar', uploadComplete: 'Pujada completa', uploadFailed: 'Error en la pujada', @@ -179,7 +198,8 @@ ca_ES.strings = { '1': 'Pujant %{smart_count} arxius', }, uploadPaused: 'Pujada en pausa', - uploadStalled: 'La pujada no ha realitzat cap progrés durant %{seconds} segons. Pots intentar-ho de nou.', + uploadStalled: + 'La pujada no ha realitzat cap progrés durant %{seconds} segons. Pots intentar-ho de nou.', uploadXFiles: { '0': 'Pujar %{smart_count} arxiu', '1': 'Pujar %{smart_count} arxius', @@ -193,8 +213,8 @@ ca_ES.strings = { '1': '%{smart_count} arxius seleccionats', }, xMoreFilesAdded: { - '0': 'S\'ha afegit %{smart_count} arxiu més', - '1': 'S\'han afegit %{smart_count} arxius més', + '0': "S'ha afegit %{smart_count} arxiu més", + '1': "S'han afegit %{smart_count} arxius més", }, xTimeLeft: '%{time} restant', youCanOnlyUploadFileTypes: 'Només pots pujar: %{types}', @@ -212,7 +232,10 @@ ca_ES.strings = { unselectFileNamed: 'Desselecciona arxiu %{name}', } +// TODO: remove this in the next major? +// @ts-expect-error Uppy can be a global in legacy bundle if (typeof Uppy !== 'undefined') { + // @ts-expect-error Uppy can be a global in legacy bundle globalThis.Uppy.locales.ca_ES = ca_ES } diff --git a/packages/@uppy/locales/src/cs_CZ.ts b/packages/@uppy/locales/src/cs_CZ.ts index 1b9255dbed..409c7f3dbb 100644 --- a/packages/@uppy/locales/src/cs_CZ.ts +++ b/packages/@uppy/locales/src/cs_CZ.ts @@ -55,6 +55,7 @@ cs_CZ.strings = { dropPasteImportFolders: 'Přetáhněte soubory sem, vložte je, %{browse} nebo je importujte', editFile: 'Upravit soubor', + editImage: 'Upravit obrázek', editing: 'Upravujete %{file}', emptyFolderAdded: 'Nebyly přidány žádné soubory, adresář je prázdný.', encoding: 'Převádění...', diff --git a/packages/@uppy/locales/src/da_DK.ts b/packages/@uppy/locales/src/da_DK.ts index ba6826f99e..036e2ddaeb 100644 --- a/packages/@uppy/locales/src/da_DK.ts +++ b/packages/@uppy/locales/src/da_DK.ts @@ -49,6 +49,7 @@ da_DK.strings = { dropPasteImportFolders: 'Træk filer her, sæt ind, %{browse} eller importer fra', editFile: 'Rediger fil', + editImage: 'Rediger billede', editing: 'Redigerer %{file}', emptyFolderAdded: 'Ingen filer blev tilføjet fra en tom mappe', encoding: 'Encoding...', diff --git a/packages/@uppy/locales/src/de_DE.ts b/packages/@uppy/locales/src/de_DE.ts index d5aa262968..d08d888471 100644 --- a/packages/@uppy/locales/src/de_DE.ts +++ b/packages/@uppy/locales/src/de_DE.ts @@ -65,6 +65,7 @@ de_DE.strings = { dropPasteImportFolders: 'Dateien hier ablegen/einfügen, %{browseFolders} oder von folgenden Quellen importieren:', editFile: 'Datei bearbeiten', + editImage: 'Bild bearbeiten', editFileWithFilename: 'Datei %{file} bearbeiten', editing: '%{file} bearbeiten', emptyFolderAdded: 'Keine Dateien hinzugefügt, da der Ordner leer war', diff --git a/packages/@uppy/locales/src/el_GR.ts b/packages/@uppy/locales/src/el_GR.ts index 0cecfa7892..0769ee9b54 100644 --- a/packages/@uppy/locales/src/el_GR.ts +++ b/packages/@uppy/locales/src/el_GR.ts @@ -52,6 +52,7 @@ el_GR.strings = { dropPasteImportFolders: 'Σύρετε αρχεία εδώ, κάντε επικόλληση, %{browse} ή εισαγωγή από', editFile: 'Επεξεργασία αρχείου', + editImage: 'Επεξεργασία εικόνας', editing: 'Γίνεται επεξεργασία %{file}', emptyFolderAdded: 'Δεν προστέθηκαν αρχεία από τον άδειο φάκελο', encoding: 'Γίνεται κωδικοποίηση...', diff --git a/packages/@uppy/locales/src/en_US.ts b/packages/@uppy/locales/src/en_US.ts index b31e564999..6548175f10 100644 --- a/packages/@uppy/locales/src/en_US.ts +++ b/packages/@uppy/locales/src/en_US.ts @@ -70,6 +70,7 @@ en_US.strings = { dropPasteImportFiles: 'Drop files here, %{browseFiles} or import from:', dropPasteImportFolders: 'Drop files here, %{browseFolders} or import from:', editFile: 'Edit file', + editImage: 'Edit image', editFileWithFilename: 'Edit file %{file}', editing: 'Editing %{file}', emptyFolderAdded: 'No files were added from empty folder', diff --git a/packages/@uppy/locales/src/es_ES.ts b/packages/@uppy/locales/src/es_ES.ts index 5347a96633..93b461a08a 100644 --- a/packages/@uppy/locales/src/es_ES.ts +++ b/packages/@uppy/locales/src/es_ES.ts @@ -73,6 +73,7 @@ es_ES.strings = { dropPasteImportFolders: 'Suelta archivos aquí, %{browseFolders} o importar desde:', editFile: 'Editar archivo', + editImage: 'Editar imagen', editFileWithFilename: 'Editar archivo %{file}', editing: 'Editando %{file}', emptyFolderAdded: 'No se agregaron archivos desde la carpeta vacía', diff --git a/packages/@uppy/locales/src/es_MX.ts b/packages/@uppy/locales/src/es_MX.ts index 4c4c78196e..41589722f8 100644 --- a/packages/@uppy/locales/src/es_MX.ts +++ b/packages/@uppy/locales/src/es_MX.ts @@ -64,6 +64,7 @@ es_MX.strings = { dropPasteImportFolders: 'Suelte archivos aquí, %{browseFolders} o importar desde:', editFile: 'Editar archivo', + editImage: 'Editar imagen', editing: 'Editando %{file}', emptyFolderAdded: 'No se agregaron archivos desde la carpeta vacía', encoding: 'Codificando...', diff --git a/packages/@uppy/locales/src/fa_IR.ts b/packages/@uppy/locales/src/fa_IR.ts index 38a5c4cdc3..dae602f517 100644 --- a/packages/@uppy/locales/src/fa_IR.ts +++ b/packages/@uppy/locales/src/fa_IR.ts @@ -67,6 +67,7 @@ fa_IR.strings = { dropPasteImportFiles: 'فایل‌ها را اینجا رها کنید، بچسبانید یا %{browse}', dropPasteImportFolders: 'فایل‌ها را اینجا رها کنید، بچسبانید یا %{browse}', editFile: 'ویرایش فایل', + editImage: 'ویرایش تصویر', editFileWithFilename: 'ویرایش فایل %{file}', editing: 'در حال ویرایش %{file}', emptyFolderAdded: 'از پوشه‌ی خالی هیچ فایلی افزوده نشد', diff --git a/packages/@uppy/locales/src/fi_FI.ts b/packages/@uppy/locales/src/fi_FI.ts index 479750d519..9d79f31d86 100644 --- a/packages/@uppy/locales/src/fi_FI.ts +++ b/packages/@uppy/locales/src/fi_FI.ts @@ -48,6 +48,7 @@ fi_FI.strings = { dropPasteImportFiles: 'Raahaa tiedostot tähän, liitä, %{browse} tai tuo', dropPasteImportFolders: 'Raahaa tiedostot tähän, liitä, %{browse} tai tuo', editFile: 'Muokkaa tiedostoa', + editImage: 'Muokkaa kuvaa', editing: 'Muokataan %{file}', emptyFolderAdded: 'Ei lisätty tiedostoja tyhjästä kansiosta', encoding: 'Koodataan...', diff --git a/packages/@uppy/locales/src/fr_FR.ts b/packages/@uppy/locales/src/fr_FR.ts index 3a5e99cce6..9e46cab6be 100644 --- a/packages/@uppy/locales/src/fr_FR.ts +++ b/packages/@uppy/locales/src/fr_FR.ts @@ -63,6 +63,7 @@ fr_FR.strings = { dropPasteImportFolders: 'Déposer les fichiers ici, coller, %{browse} ou importer de', editFile: 'Modifier le fichier', + editImage: 'Modifier l’image', editFileWithFilename: 'Modifier le fichier %{file}', editing: 'Modification en cours de %{file}', emptyFolderAdded: 'Aucun fichier n’a été ajouté depuis un dossier vide', diff --git a/packages/@uppy/locales/src/gl_ES.ts b/packages/@uppy/locales/src/gl_ES.ts index 02a34171fe..9fe4ac2ade 100644 --- a/packages/@uppy/locales/src/gl_ES.ts +++ b/packages/@uppy/locales/src/gl_ES.ts @@ -52,6 +52,7 @@ gl_ES.strings = { dropPasteImportFolders: 'Soltar arquivos aquí, pegar, %{browse} ou importar dende', editFile: 'Editar arquivo', + editImage: 'Editar imaxe', editing: 'Editando %{file}', emptyFolderAdded: 'Ningún arquivo foi agregado dende o cartafol vacía', encoding: 'Codificando...', diff --git a/packages/@uppy/locales/src/he_IL.ts b/packages/@uppy/locales/src/he_IL.ts index cbd525ae5e..30ff5d952b 100644 --- a/packages/@uppy/locales/src/he_IL.ts +++ b/packages/@uppy/locales/src/he_IL.ts @@ -49,6 +49,7 @@ he_IL.strings = { dropPasteImportFiles: 'גרור לכאן קבצים, הדבק, %{browse} או ייבא מ', dropPasteImportFolders: 'גרור לכאן קבצים, הדבק, %{browse} או ייבא מ', editFile: 'ערוך קובץ', + editImage: 'ערוך תמונה', editing: 'מעדכן %{file}', emptyFolderAdded: 'לא נוספו קבצים מהתיקיה הריקה', encoding: 'מקודד...', diff --git a/packages/@uppy/locales/src/hi_IN.ts b/packages/@uppy/locales/src/hi_IN.ts index 7af8ec4b97..76cdec6041 100644 --- a/packages/@uppy/locales/src/hi_IN.ts +++ b/packages/@uppy/locales/src/hi_IN.ts @@ -63,6 +63,7 @@ hi_IN.strings = { dropPasteImportFolders: 'यहां फ़ाइलें ड्रॉप करें, %{browseFolders} या इससे आयात करें:', editFile: 'फ़ाइल संपादित करें', + editImage: 'छवि संपादित करें', editing: 'संपादन %{file}', emptyFolderAdded: 'खाली फ़ोल्डर से कोई फ़ाइलें नहीं जोड़ी गईं', encoding: 'एन्कोडिंग...', diff --git a/packages/@uppy/locales/src/hr_HR.ts b/packages/@uppy/locales/src/hr_HR.ts index 90879302ef..213b69f9eb 100644 --- a/packages/@uppy/locales/src/hr_HR.ts +++ b/packages/@uppy/locales/src/hr_HR.ts @@ -51,6 +51,7 @@ hr_HR.strings = { dropPasteImportFolders: 'Ispusti datoteke ovdje, zalijepi (eng. "paste"), %{browse} ili preuzmi s', editFile: 'Izmijeni datoteku', + editImage: 'Uredi sliku', editing: 'Uredi %{file}', emptyFolderAdded: 'Ni jedna datoteka nije dodana iz prazne mape', encoding: 'Enkodiranje...', diff --git a/packages/@uppy/locales/src/hu_HU.ts b/packages/@uppy/locales/src/hu_HU.ts index 79d235d7ec..c741294e11 100644 --- a/packages/@uppy/locales/src/hu_HU.ts +++ b/packages/@uppy/locales/src/hu_HU.ts @@ -47,6 +47,7 @@ hu_HU.strings = { dropPasteImportFolders: 'Húzza ide a fájlokat, %{browseFolders} vagy importáljon:', editFile: 'Fájl szerkesztése', + editImage: 'Kép szerkesztése', editing: '%{file} szerkesztése', emptyFolderAdded: 'Az üres mappából nem kerültek fájlok hozzáadásra', encoding: 'Kódolás...', diff --git a/packages/@uppy/locales/src/id_ID.ts b/packages/@uppy/locales/src/id_ID.ts index f6e1d8bb4b..d397076ad6 100644 --- a/packages/@uppy/locales/src/id_ID.ts +++ b/packages/@uppy/locales/src/id_ID.ts @@ -50,6 +50,7 @@ id_ID.strings = { dropPasteImportFolders: 'Letakkan berkas, tempelkan, %{browse} atau impor dari', editFile: 'Ubah berkas', + editImage: 'Edit gambar', editing: 'Mengubah %{file}', emptyFolderAdded: 'Tidak ada berkas yang ditambahkan dari direktori kosong', encoding: 'Pengkodean...', diff --git a/packages/@uppy/locales/src/is_IS.ts b/packages/@uppy/locales/src/is_IS.ts index 0d29f3fec7..2bef2ac39d 100644 --- a/packages/@uppy/locales/src/is_IS.ts +++ b/packages/@uppy/locales/src/is_IS.ts @@ -53,6 +53,7 @@ is_IS.strings = { dropPasteImportFolders: 'Slepptu skrám hérna, límdu (paste), %{browse} eða bættu við frá', editFile: 'Breyta skrá', + editImage: 'Breyta mynd', editing: 'Breyti %{file}', emptyFolderAdded: 'Engum skrám var bætt við frá tómri möppu', encoding: 'Dulkóða...', diff --git a/packages/@uppy/locales/src/it_IT.ts b/packages/@uppy/locales/src/it_IT.ts index d0c483f872..a6d25140a1 100644 --- a/packages/@uppy/locales/src/it_IT.ts +++ b/packages/@uppy/locales/src/it_IT.ts @@ -48,6 +48,7 @@ it_IT.strings = { dropPasteImportFolders: 'Trascina i file qui, incolla, %{browse} o importa da', editFile: 'Modifica file', + editImage: 'Modifica immagine', editing: 'Modifica %{file}', emptyFolderAdded: 'Nessun file aggiunto dalla cartella vuota', encoding: 'Encoding...', diff --git a/packages/@uppy/locales/src/ja_JP.ts b/packages/@uppy/locales/src/ja_JP.ts index 8cc9d1db30..cf8294cf86 100644 --- a/packages/@uppy/locales/src/ja_JP.ts +++ b/packages/@uppy/locales/src/ja_JP.ts @@ -57,6 +57,7 @@ ja_JP.strings = { dropPasteImportFolders: 'ここにファイルをドロップするか、貼り付けるか、%{browse}するか、以下からインポートしてください', editFile: 'ファイルを編集', + editImage: '画像を編集', editing: '%{file}を編集しています', emptyFolderAdded: 'フォルダが空なためファイルが追加されませんでした', encoding: 'エンコードしています...', diff --git a/packages/@uppy/locales/src/ko_KR.ts b/packages/@uppy/locales/src/ko_KR.ts index d51d133433..1011d31401 100644 --- a/packages/@uppy/locales/src/ko_KR.ts +++ b/packages/@uppy/locales/src/ko_KR.ts @@ -51,6 +51,7 @@ ko_KR.strings = { dropPasteImportFolders: '여기에 파일을 드래그 앤 드롭 하거나, %{browseFolders}, 이 경로에서 입수 :', editFile: '파일 수정', + editImage: '이미지 수정', editing: '%{file} 수정 중', emptyFolderAdded: '빈 폴더입니다.', encoding: '인코딩 중...', diff --git a/packages/@uppy/locales/src/nb_NO.ts b/packages/@uppy/locales/src/nb_NO.ts index 65b3194d5f..b32363837e 100644 --- a/packages/@uppy/locales/src/nb_NO.ts +++ b/packages/@uppy/locales/src/nb_NO.ts @@ -60,6 +60,7 @@ nb_NO.strings = { dropPasteImportFiles: 'Dra filer hit %{browseFiles} eller importer fra:', dropPasteImportFolders: 'Dra filer hit %{browseFolders} eller importer fra:', editFile: 'Rediger fil', + editImage: 'Rediger bilde', editing: 'Redigerer %{file}', emptyFolderAdded: 'Ingen filer ble lagt til fra tom mappe', encoding: 'Koder...', diff --git a/packages/@uppy/locales/src/nl_NL.ts b/packages/@uppy/locales/src/nl_NL.ts index fffaf5a7dc..7231017fe4 100644 --- a/packages/@uppy/locales/src/nl_NL.ts +++ b/packages/@uppy/locales/src/nl_NL.ts @@ -68,6 +68,7 @@ nl_NL.strings = { dropPasteImportFolders: 'Sleep hier je bestanden naartoe, plak, %{browse} of importeer vanuit', editFile: 'Bestand aanpassen', + editImage: 'Afbeelding aanpassen', editFileWithFilename: 'Bestand aanpassen %{file}', editing: 'Bezig %{file} aan te passen', emptyFolderAdded: 'Er werden geen bestanden toegevoegd uit de lege map', diff --git a/packages/@uppy/locales/src/pl_PL.ts b/packages/@uppy/locales/src/pl_PL.ts index d5452199cf..5358e4d668 100644 --- a/packages/@uppy/locales/src/pl_PL.ts +++ b/packages/@uppy/locales/src/pl_PL.ts @@ -54,6 +54,7 @@ pl_PL.strings = { dropPasteImportFolders: 'Upuść foldery tutaj, wklej, %{browse} albo zaimportuj z', editFile: 'Edytuj plik', + editImage: 'Edytuj obraz', editing: 'Edycja %{file}', emptyFolderAdded: 'Z pustego folderu nie zostały dodane żadne pliki', encoding: 'Transkodowanie...', diff --git a/packages/@uppy/locales/src/pt_BR.ts b/packages/@uppy/locales/src/pt_BR.ts index 68d703b8da..73c2bb4b67 100644 --- a/packages/@uppy/locales/src/pt_BR.ts +++ b/packages/@uppy/locales/src/pt_BR.ts @@ -52,6 +52,7 @@ pt_BR.strings = { dropPasteImportFiles: 'Solte arquivos aqui, cole, %{browse} ou importe de', dropPasteImportFolders: 'Solte arquivos aqui, cole, %{browse} ou importe de', editFile: 'Editar arquivo', + editImage: 'Editar imagem', editing: 'Editando %{file}', emptyFolderAdded: 'Nenhum arquivo foi adicionado da pasta vazia', encoding: 'Codificando...', diff --git a/packages/@uppy/locales/src/pt_PT.ts b/packages/@uppy/locales/src/pt_PT.ts index b7572cc9a7..969b618129 100644 --- a/packages/@uppy/locales/src/pt_PT.ts +++ b/packages/@uppy/locales/src/pt_PT.ts @@ -49,6 +49,7 @@ pt_PT.strings = { dropPasteImportFiles: 'Arraste ficheiros, cole, %{browse} ou importe de', dropPasteImportFolders: 'Arraste ficheiros, cole, %{browse} ou importe de', editFile: 'Editar ficheiro', + editImage: 'Editar imagem', editing: 'A editar %{file}', emptyFolderAdded: 'A pasta está vazia e nenhum ficheiro foi adicionado.', encoding: 'A codificar...', diff --git a/packages/@uppy/locales/src/ro_RO.ts b/packages/@uppy/locales/src/ro_RO.ts index 4e1433a79c..3dd6c09649 100644 --- a/packages/@uppy/locales/src/ro_RO.ts +++ b/packages/@uppy/locales/src/ro_RO.ts @@ -58,6 +58,7 @@ ro_RO.strings = { dropPasteImportFolders: 'Trage fișierele aici, copy/paste, %{browse} sau importă din:', editFile: 'Editează fișier', + editImage: 'Editează imagine', editing: 'Se editează %{file}', emptyFolderAdded: 'Nu s-au adăugat fișiere, directorul este gol', encoding: 'Encodare...', diff --git a/packages/@uppy/locales/src/ru_RU.ts b/packages/@uppy/locales/src/ru_RU.ts index 383db520bd..b75df5eac1 100644 --- a/packages/@uppy/locales/src/ru_RU.ts +++ b/packages/@uppy/locales/src/ru_RU.ts @@ -59,6 +59,7 @@ ru_RU.strings = { dropPasteImportFolders: 'Перетащите файлы, вставьте, %{browse} или импортируйте из:', editFile: 'Редактировать файл', + editImage: 'Редактировать изображение', editing: 'Редактируется %{file}', emptyFolderAdded: 'Файлы не были добавлены — папка пуста', encoding: 'Обработка...', diff --git a/packages/@uppy/locales/src/sk_SK.ts b/packages/@uppy/locales/src/sk_SK.ts index 4c6be58774..fb20a19179 100644 --- a/packages/@uppy/locales/src/sk_SK.ts +++ b/packages/@uppy/locales/src/sk_SK.ts @@ -59,6 +59,7 @@ sk_SK.strings = { dropPasteImportFiles: 'Presuňte sem, %{browse} alebo importujte súbory:', dropPasteImportFolders: 'Presuňte sem, %{browse} alebo importujte súbory:', editFile: 'Upraviť súbor', + editImage: 'Upraviť obrázok', editing: 'Úprava %{file}', emptyFolderAdded: 'Neboli pridané žiadne súbory, pretože adresár je prázdny.', encoding: 'Konvertovanie...', diff --git a/packages/@uppy/locales/src/sr_RS_Cyrillic.ts b/packages/@uppy/locales/src/sr_RS_Cyrillic.ts index 6614c8c598..1eabf87780 100644 --- a/packages/@uppy/locales/src/sr_RS_Cyrillic.ts +++ b/packages/@uppy/locales/src/sr_RS_Cyrillic.ts @@ -52,6 +52,7 @@ sr_RS_Cyrillic.strings = { dropPasteImportFolders: 'Спусти датотеке овде, уметни (енг. "paste"), %{browse} или преузми са', editFile: 'Измени датотеку', + editImage: 'Уреди слику', editing: 'Мењање %{file}', emptyFolderAdded: 'Ни једна датотека није додата из празног фолдера', encoding: 'Шифровање...', diff --git a/packages/@uppy/locales/src/sr_RS_Latin.ts b/packages/@uppy/locales/src/sr_RS_Latin.ts index 36ea599b37..2b8c0f3ac5 100644 --- a/packages/@uppy/locales/src/sr_RS_Latin.ts +++ b/packages/@uppy/locales/src/sr_RS_Latin.ts @@ -52,6 +52,7 @@ sr_RS_Latin.strings = { dropPasteImportFolders: 'Spusti datoteke ovde, umetni (eng. "paste"), %{browse} ili preuzmi sa', editFile: 'Izmeni datoteku', + editImage: 'Uredi sliku', editing: 'Menjanje %{file}', emptyFolderAdded: 'Ni jedna datoteka nije dodata iz praznog foldera', encoding: 'Šifrovanje...', diff --git a/packages/@uppy/locales/src/sv_SE.ts b/packages/@uppy/locales/src/sv_SE.ts index e4324acbc0..edd85dd222 100644 --- a/packages/@uppy/locales/src/sv_SE.ts +++ b/packages/@uppy/locales/src/sv_SE.ts @@ -51,6 +51,7 @@ sv_SE.strings = { dropPasteImportFolders: 'Släpp filer här, klistra in, %{browse} eller importera från', editFile: 'Redigera fil', + editImage: 'Redigera bild', editing: 'Redigerar %{file}', emptyFolderAdded: 'Inga filer lades till från en tom mapp', encoding: 'Kodar...', diff --git a/packages/@uppy/locales/src/th_TH.ts b/packages/@uppy/locales/src/th_TH.ts index c593e88699..a4c37a58d9 100644 --- a/packages/@uppy/locales/src/th_TH.ts +++ b/packages/@uppy/locales/src/th_TH.ts @@ -57,6 +57,7 @@ th_TH.strings = { dropPasteImportFiles: 'ลากไฟล์มาวางที่นี่ หรือ %{browse} หรือ เปิดกล้อง', dropPasteImportFolders: 'ลากไฟล์มาวางที่นี่ หรือ %{browse} หรือ เปิดกล้อง', editFile: 'แก้ไขไฟล์', + editImage: 'แก้ไขภาพ', editing: 'กำลังแก้ไข %{file}', emptyFolderAdded: 'ไม่สามารถเพิ่มไฟล์จากโฟลเดอร์ว่าง', encoding: 'กำลังเข้ารหัส...', diff --git a/packages/@uppy/locales/src/tr_TR.ts b/packages/@uppy/locales/src/tr_TR.ts index 9be4f695e8..96e7d3d741 100644 --- a/packages/@uppy/locales/src/tr_TR.ts +++ b/packages/@uppy/locales/src/tr_TR.ts @@ -50,6 +50,7 @@ tr_TR.strings = { dropPasteImportFolders: 'Sürükleyip bırak, yapıştır, %{browse} veya içeri aktar', editFile: 'Dosyayı düzenle', + editImage: 'Resmi Düzenle', editing: '%{file} düzenleniyor', emptyFolderAdded: 'Klasör boş', encoding: 'Çözümleniyor...', diff --git a/packages/@uppy/locales/src/uk_UA.ts b/packages/@uppy/locales/src/uk_UA.ts index 94fed7cd9b..e743e30066 100644 --- a/packages/@uppy/locales/src/uk_UA.ts +++ b/packages/@uppy/locales/src/uk_UA.ts @@ -76,6 +76,7 @@ uk_UA.strings = { dropPasteImportFolders: 'Перетягніть файли, вставте, %{browse} або імпортуйте з:', editFile: 'Редагувати файл', + editImage: 'Редагувати зображення', editFileWithFilename: 'Редагувати файл %{file}', editing: 'Редагується %{file}', emptyFolderAdded: 'Файли не додано — тека порожня', diff --git a/packages/@uppy/locales/src/uz_UZ.ts b/packages/@uppy/locales/src/uz_UZ.ts index ff63b2362f..ee39e558d1 100644 --- a/packages/@uppy/locales/src/uz_UZ.ts +++ b/packages/@uppy/locales/src/uz_UZ.ts @@ -71,6 +71,7 @@ uz_UZ.strings = { dropPasteImportFolders: 'Fayllarni bu yerga tashlang, %{browseFolders} yoki import qiling:', editFile: 'Faylni tahrirlash', + editImage: 'Rasmni tahrirlash', editFileWithFilename: '%{file} faylini tahrirlash', editing: '%{file} tahrirlanmoqda', emptyFolderAdded: "Bo'sh jilddan hech qanday fayl qo'shilmadi", diff --git a/packages/@uppy/locales/src/vi_VN.ts b/packages/@uppy/locales/src/vi_VN.ts index 5c64798d68..c46561cd66 100644 --- a/packages/@uppy/locales/src/vi_VN.ts +++ b/packages/@uppy/locales/src/vi_VN.ts @@ -49,6 +49,7 @@ vi_VN.strings = { dropPasteImportFiles: 'Thả tập tin vào đây, dán, %{browse} hoặc nhập từ', dropPasteImportFolders: 'Thả tập tin vào đây, dán, %{browse} hoặc nhập từ', editFile: 'Sửa tập tin', + editImage: 'Chỉnh sửa ảnh', editing: 'Đang sửa %{file}', emptyFolderAdded: 'Không có tập tin nào được thêm từ thư mục trống', encoding: 'Đang encode...', diff --git a/packages/@uppy/locales/src/zh_CN.ts b/packages/@uppy/locales/src/zh_CN.ts index f4e4f42afc..f8e3f8f893 100644 --- a/packages/@uppy/locales/src/zh_CN.ts +++ b/packages/@uppy/locales/src/zh_CN.ts @@ -46,6 +46,7 @@ zh_CN.strings = { dropPasteImportFiles: '拖拽文件到这里,粘贴、%{browse}或者导入', dropPasteImportFolders: '拖拽文件到这里,粘贴、%{browse}或者导入', editFile: '编辑文件', + editImage: '编辑图片', editing: '正在编辑 %{file}', emptyFolderAdded: '无法从空文件夹添加文件', encoding: '正在编码…', diff --git a/packages/@uppy/locales/src/zh_TW.ts b/packages/@uppy/locales/src/zh_TW.ts index 9aef6e4770..1674931726 100644 --- a/packages/@uppy/locales/src/zh_TW.ts +++ b/packages/@uppy/locales/src/zh_TW.ts @@ -58,6 +58,7 @@ zh_TW.strings = { dropPasteImportFiles: '將檔案拖曳至此處、%{browseFiles},或匯入', dropPasteImportFolders: '將檔案拖曳至此處、%{browseFolders},或匯入', editFile: '編輯檔案', + editImage: '編輯圖片', editFileWithFilename: '編輯檔案 %{file}', editing: '編輯 %{file}', emptyFolderAdded: '未從空資料夾新增任何檔案', From fbfca417956080975d0b650ffc3e142a57ceba13 Mon Sep 17 00:00:00 2001 From: Mikael Finstad Date: Mon, 19 Feb 2024 22:10:32 +0800 Subject: [PATCH 02/16] Fix companion dns and allow redirects from http->https again (#4895) * fix companion dns validation didn't work with ipv6 also improve error message for debuggability * allow redirects from http->https again and vice versa because we are no longer using `request` closes #3145 * fix lint --- .../companion/src/server/controllers/url.js | 2 +- .../companion/src/server/helpers/request.js | 60 +++++-------------- .../companion/test/__tests__/http-agent.js | 46 +++----------- 3 files changed, 23 insertions(+), 85 deletions(-) diff --git a/packages/@uppy/companion/src/server/controllers/url.js b/packages/@uppy/companion/src/server/controllers/url.js index 97f1ddc51a..0a2a3b0bde 100644 --- a/packages/@uppy/companion/src/server/controllers/url.js +++ b/packages/@uppy/companion/src/server/controllers/url.js @@ -25,7 +25,7 @@ const downloadURL = async (url, blockLocalIPs, traceId) => { // TODO in next major, rename all blockLocalIPs to allowLocalUrls and invert the bool, to make it consistent // see discussion https://github.com/transloadit/uppy/pull/4554/files#r1268677162 try { - const protectedGot = getProtectedGot({ url, blockLocalIPs }) + const protectedGot = getProtectedGot({ blockLocalIPs }) const stream = protectedGot.stream.get(url, { responseType: 'json' }) await prepareStream(stream) return stream diff --git a/packages/@uppy/companion/src/server/helpers/request.js b/packages/@uppy/companion/src/server/helpers/request.js index 5b28567f04..e9631eef71 100644 --- a/packages/@uppy/companion/src/server/helpers/request.js +++ b/packages/@uppy/companion/src/server/helpers/request.js @@ -1,7 +1,6 @@ // eslint-disable-next-line max-classes-per-file const http = require('node:http') const https = require('node:https') -const { URL } = require('node:url') const dns = require('node:dns') const ipaddr = require('ipaddr.js') const got = require('got').default @@ -9,10 +8,7 @@ const path = require('node:path') const contentDisposition = require('content-disposition') const validator = require('validator') -const logger = require('../logger') - const FORBIDDEN_IP_ADDRESS = 'Forbidden IP address' -const FORBIDDEN_RESOLVED_IP_ADDRESS = 'Forbidden resolved IP address' // Example scary IPs that should return false (ipv6-to-ipv4 mapped): // ::FFFF:127.0.0.1 @@ -20,31 +16,6 @@ const FORBIDDEN_RESOLVED_IP_ADDRESS = 'Forbidden resolved IP address' const isDisallowedIP = (ipAddress) => ipaddr.parse(ipAddress).range() !== 'unicast' module.exports.FORBIDDEN_IP_ADDRESS = FORBIDDEN_IP_ADDRESS -module.exports.FORBIDDEN_RESOLVED_IP_ADDRESS = FORBIDDEN_RESOLVED_IP_ADDRESS - -module.exports.getRedirectEvaluator = (rawRequestURL, isEnabled) => { - const requestURL = new URL(rawRequestURL) - - return ({ headers }) => { - if (!isEnabled) return true - - let redirectURL = null - try { - redirectURL = new URL(headers.location, requestURL) - } catch (err) { - return false - } - - const shouldRedirect = redirectURL.protocol === requestURL.protocol - if (!shouldRedirect) { - logger.info( - `blocking redirect from ${requestURL} to ${redirectURL}`, 'redirect.protection', - ) - } - - return shouldRedirect - } -} /** * Validates that the download URL is secure @@ -83,14 +54,19 @@ const getProtectedHttpAgent = ({ protocol, blockLocalIPs }) => { } const toValidate = Array.isArray(addresses) ? addresses : [{ address: addresses }] - for (const record of toValidate) { - if (blockLocalIPs && isDisallowedIP(record.address)) { - callback(new Error(FORBIDDEN_RESOLVED_IP_ADDRESS), addresses, maybeFamily) - return - } + // because dns.lookup seems to be called with option `all: true`, if we are on an ipv6 system, + // `addresses` could contain a list of ipv4 addresses as well as ipv6 mapped addresses (rfc6052) which we cannot allow + // however we should still allow any valid ipv4 addresses, so we filter out the invalid addresses + const validAddresses = !blockLocalIPs ? toValidate : toValidate.filter(({ address }) => !isDisallowedIP(address)) + + // and check if there's anything left after we filtered: + if (validAddresses.length === 0) { + callback(new Error(`Forbidden resolved IP address ${hostname} -> ${toValidate.map(({ address }) => address).join(', ')}`), addresses, maybeFamily) + return } - callback(err, addresses, maybeFamily) + const ret = Array.isArray(addresses) ? validAddresses : validAddresses[0].address; + callback(err, ret, maybeFamily) }) } @@ -108,23 +84,15 @@ const getProtectedHttpAgent = ({ protocol, blockLocalIPs }) => { module.exports.getProtectedHttpAgent = getProtectedHttpAgent -function getProtectedGot ({ url, blockLocalIPs }) { +function getProtectedGot ({ blockLocalIPs }) { const HttpAgent = getProtectedHttpAgent({ protocol: 'http', blockLocalIPs }) const HttpsAgent = getProtectedHttpAgent({ protocol: 'https', blockLocalIPs }) const httpAgent = new HttpAgent() const httpsAgent = new HttpsAgent() - const redirectEvaluator = module.exports.getRedirectEvaluator(url, blockLocalIPs) - - const beforeRedirect = (options, response) => { - const allowRedirect = redirectEvaluator(response) - if (!allowRedirect) { - throw new Error(`Redirect evaluator does not allow the redirect to ${response.headers.location}`) - } - } // @ts-ignore - return got.extend({ hooks: { beforeRedirect: [beforeRedirect] }, agent: { http: httpAgent, https: httpsAgent } }) + return got.extend({ agent: { http: httpAgent, https: httpsAgent } }) } module.exports.getProtectedGot = getProtectedGot @@ -138,7 +106,7 @@ module.exports.getProtectedGot = getProtectedGot */ exports.getURLMeta = async (url, blockLocalIPs = false) => { async function requestWithMethod (method) { - const protectedGot = getProtectedGot({ url, blockLocalIPs }) + const protectedGot = getProtectedGot({ blockLocalIPs }) const stream = protectedGot.stream(url, { method, throwHttpErrors: false }) return new Promise((resolve, reject) => ( diff --git a/packages/@uppy/companion/test/__tests__/http-agent.js b/packages/@uppy/companion/test/__tests__/http-agent.js index 8550dc1a96..8c7a5669ad 100644 --- a/packages/@uppy/companion/test/__tests__/http-agent.js +++ b/packages/@uppy/companion/test/__tests__/http-agent.js @@ -1,37 +1,7 @@ const nock = require('nock') -const { getRedirectEvaluator, FORBIDDEN_IP_ADDRESS, FORBIDDEN_RESOLVED_IP_ADDRESS } = require('../../src/server/helpers/request') +const { FORBIDDEN_IP_ADDRESS } = require('../../src/server/helpers/request') const { getProtectedGot } = require('../../src/server/helpers/request') -describe('test getRedirectEvaluator', () => { - const httpURL = 'http://uppy.io' - const httpsURL = 'https://uppy.io' - const httpRedirectResp = { - headers: { - location: 'http://transloadit.com', - }, - } - - const httpsRedirectResp = { - headers: { - location: 'https://transloadit.com', - }, - } - - test('when original URL has "https:" as protocol', (done) => { - const shouldRedirectHttps = getRedirectEvaluator(httpsURL, true) - expect(shouldRedirectHttps(httpsRedirectResp)).toEqual(true) - expect(shouldRedirectHttps(httpRedirectResp)).toEqual(false) - done() - }) - - test('when original URL has "http:" as protocol', (done) => { - const shouldRedirectHttp = getRedirectEvaluator(httpURL, true) - expect(shouldRedirectHttp(httpRedirectResp)).toEqual(true) - expect(shouldRedirectHttp(httpsRedirectResp)).toEqual(false) - done() - }) -}) - afterAll(() => { nock.cleanAll() nock.restore() @@ -41,24 +11,24 @@ describe('test protected request Agent', () => { test('allows URLs without IP addresses', async () => { nock('https://transloadit.com').get('/').reply(200) const url = 'https://transloadit.com' - await getProtectedGot({ url, blockLocalIPs: true }).get(url) + await getProtectedGot({ blockLocalIPs: true }).get(url) }) test('blocks url that resolves to forbidden IP', async () => { const url = 'https://localhost' - const promise = getProtectedGot({ url, blockLocalIPs: true }).get(url) - await expect(promise).rejects.toThrow(new Error(FORBIDDEN_RESOLVED_IP_ADDRESS)) + const promise = getProtectedGot({ blockLocalIPs: true }).get(url) + await expect(promise).rejects.toThrow(/^Forbidden resolved IP address/) }) test('blocks private http IP address', async () => { const url = 'http://172.20.10.4:8090' - const promise = getProtectedGot({ url, blockLocalIPs: true }).get(url) + const promise = getProtectedGot({ blockLocalIPs: true }).get(url) await expect(promise).rejects.toThrow(new Error(FORBIDDEN_IP_ADDRESS)) }) test('blocks private https IP address', async () => { const url = 'https://172.20.10.4:8090' - const promise = getProtectedGot({ url, blockLocalIPs: true }).get(url) + const promise = getProtectedGot({ blockLocalIPs: true }).get(url) await expect(promise).rejects.toThrow(new Error(FORBIDDEN_IP_ADDRESS)) }) @@ -87,12 +57,12 @@ describe('test protected request Agent', () => { for (const ip of ipv4s) { const url = `http://${ip}:8090` - const promise = getProtectedGot({ url, blockLocalIPs: true }).get(url) + const promise = getProtectedGot({ blockLocalIPs: true }).get(url) await expect(promise).rejects.toThrow(new Error(FORBIDDEN_IP_ADDRESS)) } for (const ip of ipv6s) { const url = `http://[${ip}]:8090` - const promise = getProtectedGot({ url, blockLocalIPs: true }).get(url) + const promise = getProtectedGot({ blockLocalIPs: true }).get(url) await expect(promise).rejects.toThrow(new Error(FORBIDDEN_IP_ADDRESS)) } }) From 84233be18f0ac4b034b44d51cbed3322d9f2ab44 Mon Sep 17 00:00:00 2001 From: Merlijn Vos Date: Mon, 19 Feb 2024 15:49:08 +0100 Subject: [PATCH 03/16] @uppy/compressor: upgrade compressorjs (#4924) --- packages/@uppy/compressor/package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/@uppy/compressor/package.json b/packages/@uppy/compressor/package.json index 629daaaba7..d70c27bc69 100644 --- a/packages/@uppy/compressor/package.json +++ b/packages/@uppy/compressor/package.json @@ -25,7 +25,7 @@ "dependencies": { "@transloadit/prettier-bytes": "^0.2.0", "@uppy/utils": "workspace:^", - "compressorjs": "^1.1.1", + "compressorjs": "^1.2.1", "preact": "^10.5.13", "promise-queue": "^2.2.5" }, diff --git a/yarn.lock b/yarn.lock index 44c3f50e1d..8d8a813fcb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9242,7 +9242,7 @@ __metadata: dependencies: "@transloadit/prettier-bytes": ^0.2.0 "@uppy/utils": "workspace:^" - compressorjs: ^1.1.1 + compressorjs: ^1.2.1 preact: ^10.5.13 promise-queue: ^2.2.5 vitest: ^1.2.1 @@ -12782,13 +12782,13 @@ __metadata: languageName: node linkType: hard -"compressorjs@npm:^1.1.1": - version: 1.1.1 - resolution: "compressorjs@npm:1.1.1" +"compressorjs@npm:^1.2.1": + version: 1.2.1 + resolution: "compressorjs@npm:1.2.1" dependencies: blueimp-canvas-to-blob: ^3.29.0 is-blob: ^2.1.0 - checksum: b4899567df07ebd0f2d3bdc814a6e63b0013be0020e119c0aa4fd4292298a0a4251302855c6ec6c40dd676c0e02f9a4483868f81474229cc375b928bb9c3f086 + checksum: 8b25fc29b7908216f7029e807623ae9c034fb0e77a72a752686bdd255bd3b1a5cc004b6651cf7ca948c1f86f3151ac3fc00800119d17f8a248d2f0a54570c8b8 languageName: node linkType: hard From a507d2eec32e85f80412b2b4aa40520456009d71 Mon Sep 17 00:00:00 2001 From: Evgenia Karunus Date: Mon, 19 Feb 2024 18:51:40 +0400 Subject: [PATCH 04/16] Fix broken previews after cropping (#4926) * ThumbnailGenerator.js - make sure thumbnail loads after image editing * tests - account for additional event --- packages/@uppy/thumbnail-generator/src/index.js | 2 ++ packages/@uppy/thumbnail-generator/src/index.test.js | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/@uppy/thumbnail-generator/src/index.js b/packages/@uppy/thumbnail-generator/src/index.js index 22beec3053..e5e5df3da2 100644 --- a/packages/@uppy/thumbnail-generator/src/index.js +++ b/packages/@uppy/thumbnail-generator/src/index.js @@ -373,6 +373,7 @@ export default class ThumbnailGenerator extends UIPlugin { this.uppy.on('thumbnail:request', this.onFileAdded) this.uppy.on('thumbnail:cancel', this.onCancelRequest) } else { + this.uppy.on('thumbnail:request', this.onFileAdded) this.uppy.on('file-added', this.onFileAdded) this.uppy.on('restored', this.onRestored) } @@ -390,6 +391,7 @@ export default class ThumbnailGenerator extends UIPlugin { this.uppy.off('thumbnail:request', this.onFileAdded) this.uppy.off('thumbnail:cancel', this.onCancelRequest) } else { + this.uppy.off('thumbnail:request', this.onFileAdded) this.uppy.off('file-added', this.onFileAdded) this.uppy.off('restored', this.onRestored) } diff --git a/packages/@uppy/thumbnail-generator/src/index.test.js b/packages/@uppy/thumbnail-generator/src/index.test.js index 05e414a62c..4149d3dd8a 100644 --- a/packages/@uppy/thumbnail-generator/src/index.test.js +++ b/packages/@uppy/thumbnail-generator/src/index.test.js @@ -52,7 +52,7 @@ describe('uploader/ThumbnailGeneratorPlugin', () => { plugin.addToQueue = vi.fn() plugin.install() - expect(core.on).toHaveBeenCalledTimes(4) + expect(core.on).toHaveBeenCalledTimes(5) expect(core.on).toHaveBeenCalledWith('file-added', plugin.onFileAdded) }) }) @@ -68,11 +68,11 @@ describe('uploader/ThumbnailGeneratorPlugin', () => { plugin.addToQueue = vi.fn() plugin.install() - expect(core.on).toHaveBeenCalledTimes(4) + expect(core.on).toHaveBeenCalledTimes(5) plugin.uninstall() - expect(core.off).toHaveBeenCalledTimes(4) + expect(core.off).toHaveBeenCalledTimes(5) expect(core.off).toHaveBeenCalledWith('file-added', plugin.onFileAdded) }) }) From 7b492d7ff632cca5641fa9f85a137b83ac1fc140 Mon Sep 17 00:00:00 2001 From: Marius Date: Mon, 19 Feb 2024 16:24:23 +0100 Subject: [PATCH 05/16] @uppy/transloadit: add `clientName` option (#4920) --- packages/@uppy/transloadit/src/index.js | 5 +++++ packages/@uppy/transloadit/types/index.d.ts | 1 + packages/@uppy/transloadit/types/index.test-d.ts | 1 + 3 files changed, 7 insertions(+) diff --git a/packages/@uppy/transloadit/src/index.js b/packages/@uppy/transloadit/src/index.js index fec63a1718..0842e96084 100644 --- a/packages/@uppy/transloadit/src/index.js +++ b/packages/@uppy/transloadit/src/index.js @@ -62,6 +62,7 @@ export default class Transloadit extends BasePlugin { getAssemblyOptions: null, limit: 20, retryDelays: [7_000, 10_000, 15_000, 20_000], + clientName: null, } this.opts = { ...defaultOptions, ...opts } @@ -126,6 +127,10 @@ export default class Transloadit extends BasePlugin { addPluginVersion('Zoom', 'uppy-zoom') addPluginVersion('Url', 'uppy-url') + if (this.opts.clientName != null) { + list.push(this.opts.clientName) + } + return list.join(',') } diff --git a/packages/@uppy/transloadit/types/index.d.ts b/packages/@uppy/transloadit/types/index.d.ts index 7f4841e79a..d0ff2f7f10 100644 --- a/packages/@uppy/transloadit/types/index.d.ts +++ b/packages/@uppy/transloadit/types/index.d.ts @@ -111,6 +111,7 @@ interface Options extends PluginOptions { alwaysRunAssembly?: boolean locale?: TransloaditLocale limit?: number + clientName?: string } export type TransloaditOptions = Options & diff --git a/packages/@uppy/transloadit/types/index.test-d.ts b/packages/@uppy/transloadit/types/index.test-d.ts index 5cd5d5b5d0..c113fb0667 100644 --- a/packages/@uppy/transloadit/types/index.test-d.ts +++ b/packages/@uppy/transloadit/types/index.test-d.ts @@ -22,6 +22,7 @@ const validParams = { waitForEncoding: false, waitForMetadata: true, importFromUploadURLs: false, + clientName: 'my-application', }) // Access to both transloadit events and core events uppy.on('transloadit:assembly-created', (assembly) => { From a0b7d1654e445d25084ac303297af0bfde6b5093 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Mon, 19 Feb 2024 16:25:01 +0100 Subject: [PATCH 06/16] update `UppyFile` objects before emitting events (#4928) --- packages/@uppy/aws-s3-multipart/src/index.js | 2 +- packages/@uppy/aws-s3/src/MiniXHRUpload.js | 4 ++-- .../companion-client/src/RequestClient.ts | 20 +++++++++++++------ packages/@uppy/tus/src/index.ts | 4 ++-- packages/@uppy/xhr-upload/src/index.ts | 16 +++++++++++---- 5 files changed, 31 insertions(+), 15 deletions(-) diff --git a/packages/@uppy/aws-s3-multipart/src/index.js b/packages/@uppy/aws-s3-multipart/src/index.js index a2ddf19f54..4c23ae9772 100644 --- a/packages/@uppy/aws-s3-multipart/src/index.js +++ b/packages/@uppy/aws-s3-multipart/src/index.js @@ -754,7 +754,7 @@ export default class AwsS3Multipart extends BasePlugin { #uploadLocalFile (file) { return new Promise((resolve, reject) => { const onProgress = (bytesUploaded, bytesTotal) => { - this.uppy.emit('upload-progress', file, { + this.uppy.emit('upload-progress', this.uppy.getFile(file.id), { uploader: this, bytesUploaded, bytesTotal, diff --git a/packages/@uppy/aws-s3/src/MiniXHRUpload.js b/packages/@uppy/aws-s3/src/MiniXHRUpload.js index 4b3dc0a688..e4fbc1e28c 100644 --- a/packages/@uppy/aws-s3/src/MiniXHRUpload.js +++ b/packages/@uppy/aws-s3/src/MiniXHRUpload.js @@ -134,7 +134,7 @@ export default class MiniXHRUpload { timer.progress() if (ev.lengthComputable) { - this.uppy.emit('upload-progress', file, { + this.uppy.emit('upload-progress', this.uppy.getFile(file.id), { uploader: this, bytesUploaded: ev.loaded, bytesTotal: ev.total, @@ -162,7 +162,7 @@ export default class MiniXHRUpload { uploadURL, } - this.uppy.emit('upload-success', file, uploadResp) + this.uppy.emit('upload-success', this.uppy.getFile(file.id), uploadResp) if (uploadURL) { this.uppy.log(`Download ${file.name} from ${uploadURL}`) diff --git a/packages/@uppy/companion-client/src/RequestClient.ts b/packages/@uppy/companion-client/src/RequestClient.ts index e45c3d9046..d39ba09bc3 100644 --- a/packages/@uppy/companion-client/src/RequestClient.ts +++ b/packages/@uppy/companion-client/src/RequestClient.ts @@ -481,15 +481,23 @@ export default class RequestClient { switch (action) { case 'progress': { - emitSocketProgress(this, payload, file) + emitSocketProgress( + this, + payload, + this.uppy.getFile(file.id), + ) break } case 'success': { - // @ts-expect-error event expects a lot more data. - // TODO: add missing data? - this.uppy.emit('upload-success', file, { - uploadURL: payload.url, - }) + this.uppy.emit( + 'upload-success', + this.uppy.getFile(file.id), + // @ts-expect-error event expects a lot more data. + // TODO: add missing data? + { + uploadURL: payload.url, + }, + ) socketAbortController?.abort?.() resolve() break diff --git a/packages/@uppy/tus/src/index.ts b/packages/@uppy/tus/src/index.ts index 9abf12b962..53dd280f4e 100644 --- a/packages/@uppy/tus/src/index.ts +++ b/packages/@uppy/tus/src/index.ts @@ -312,7 +312,7 @@ export default class Tus extends BasePlugin< if (typeof opts.onProgress === 'function') { opts.onProgress(bytesUploaded, bytesTotal) } - this.uppy.emit('upload-progress', file, { + this.uppy.emit('upload-progress', this.uppy.getFile(file.id), { // TODO: remove `uploader` in next major // @ts-expect-error untyped uploader: this, @@ -331,7 +331,7 @@ export default class Tus extends BasePlugin< this.resetUploaderReferences(file.id) queuedRequest.done() - this.uppy.emit('upload-success', file, uploadResp) + this.uppy.emit('upload-success', this.uppy.getFile(file.id), uploadResp) if (upload.url) { // @ts-expect-error not typed in tus-js-client diff --git a/packages/@uppy/xhr-upload/src/index.ts b/packages/@uppy/xhr-upload/src/index.ts index 35eb664173..494b3c3b17 100644 --- a/packages/@uppy/xhr-upload/src/index.ts +++ b/packages/@uppy/xhr-upload/src/index.ts @@ -324,7 +324,7 @@ export default class XHRUpload< timer.progress() if (ev.lengthComputable) { - this.uppy.emit('upload-progress', file, { + this.uppy.emit('upload-progress', this.uppy.getFile(file.id), { // TODO: do not send `uploader` in next major // @ts-expect-error we can't type this and we should remove it uploader: this, @@ -354,7 +354,11 @@ export default class XHRUpload< uploadURL, } - this.uppy.emit('upload-success', file, uploadResp) + this.uppy.emit( + 'upload-success', + this.uppy.getFile(file.id), + uploadResp, + ) if (uploadURL) { this.uppy.log(`Download ${file.name} from ${uploadURL}`) @@ -475,7 +479,7 @@ export default class XHRUpload< if (!ev.lengthComputable) return files.forEach((file) => { - this.uppy.emit('upload-progress', file, { + this.uppy.emit('upload-progress', this.uppy.getFile(file.id), { // TODO: do not send `uploader` in next major // @ts-expect-error we can't type this and we should remove it uploader: this, @@ -496,7 +500,11 @@ export default class XHRUpload< body, } files.forEach((file) => { - this.uppy.emit('upload-success', file, uploadResp) + this.uppy.emit( + 'upload-success', + this.uppy.getFile(file.id), + uploadResp, + ) }) return resolve() } From 8505b0b0796edeaea4cfb0f44a11637a3ac65a24 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 19 Feb 2024 16:29:43 +0000 Subject: [PATCH 07/16] Release: uppy@3.22.0 (#4929) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit | Package | Version | Package | Version | | ------------------------- | ------- | ------------------------- | ------- | | @uppy/audio | 1.1.5 | @uppy/remote-sources | 1.1.1 | | @uppy/aws-s3 | 3.6.1 | @uppy/status-bar | 3.2.6 | | @uppy/aws-s3-multipart | 3.10.1 | @uppy/store-default | 3.2.1 | | @uppy/companion | 4.12.1 | @uppy/store-redux | 3.0.6 | | @uppy/companion-client | 3.7.1 | @uppy/svelte | 3.1.2 | | @uppy/compressor | 1.1.0 | @uppy/thumbnail-generator | 3.0.7 | | @uppy/core | 3.9.0 | @uppy/transloadit | 3.5.0 | | @uppy/dashboard | 3.7.2 | @uppy/tus | 3.5.1 | | @uppy/drop-target | 2.0.3 | @uppy/utils | 5.7.1 | | @uppy/form | 3.1.0 | @uppy/vue | 1.1.1 | | @uppy/golden-retriever | 3.1.2 | @uppy/webcam | 3.3.5 | | @uppy/image-editor | 2.4.1 | @uppy/xhr-upload | 3.6.1 | | @uppy/locales | 3.5.1 | uppy | 3.22.0 | | @uppy/provider-views | 3.9.0 | | | - @uppy/aws-s3-multipart,@uppy/aws-s3,@uppy/companion-client,@uppy/tus,@uppy/xhr-upload: update `uppyfile` objects before emitting events (antoine du hamel / #4928) - @uppy/transloadit: add `clientname` option (marius / #4920) - @uppy/thumbnail-generator: fix broken previews after cropping (evgenia karunus / #4926) - @uppy/compressor: upgrade compressorjs (merlijn vos / #4924) - @uppy/companion: fix companion dns and allow redirects from http->https again (mikael finstad / #4895) - @uppy/dashboard: autoopenfileeditor - rename "edit file" to "edit image" (evgenia karunus / #4925) - meta: resolve jsx to preact in shared tsconfig (merlijn vos / #4923) - @uppy/image-editor: image editor: make compressor work after the image editor, too (evgenia karunus / #4918) - meta: exclude `tsconfig` files from npm bundles (antoine du hamel / #4916) - @uppy/compressor: migrate to ts (mikael finstad / #4907) - @uppy/provider-views: update uppy-providerbrowser-viewtype--list.scss (aditya patadia / #4913) - @uppy/tus: migrate to ts (merlijn vos / #4899) - meta: bump yarn version (antoine du hamel / #4906) - meta: validate `defaultoptions` for stricter option types (antoine du hamel / #4901) - @uppy/dashboard: Uncouple native camera and video buttons from the `disableLocalFiles` option (jake mcallister / #4894) - meta: put experimental ternaries in .prettierrc.js (merlijn vos / #4900) - @uppy/xhr-upload: migrate to ts (merlijn vos / #4892) - @uppy/drop-target: refactor to typescript (artur paikin / #4863) - meta: fix missing line return in js2ts script (antoine du hamel) - meta: disable `@typescript-eslint/no-empty-function` lint rule (antoine du hamel / #4891) - @uppy/companion-client: fix tests and linter (antoine du hamel / #4890) - @uppy/companion-client: migrate to ts (merlijn vos / #4864) - meta: prettier 3.0.3 -> 3.2.4 (antoine du hamel / #4889) - @uppy/image-editor: migrate to ts (merlijn vos / #4880) - meta: fix race condition in `e2e.yml` (antoine du hamel) - @uppy/core: add utility type to help define plugin option types (antoine du hamel / #4885) - meta: merge `output-watcher` and `e2e` workflows (antoine du hamel / #4886) - @uppy/status-bar: fix `statusbaroptions` type (antoine du hamel / #4883) - @uppy/core: improve types of .use() (merlijn vos / #4882) - @uppy/audio: fix `audiooptions` (antoine du hamel / #4884) - meta: upgrade vite and vitest (antoine du hamel / #4881) - meta: fix `yarn build:clean` (antoine du hamel) - @uppy/audio: refactor to typescript (antoine du hamel / #4860) - @uppy/status-bar: refactor to typescript (antoine du hamel / #4839) - @uppy/core: add `plugintarget` type and mark options as optional (antoine du hamel / #4874) - meta: improve output watcher diff (antoine du hamel / #4876) - meta: minify the output watcher diff further (antoine du hamel) - meta: remove comments from output watcher (mikael finstad / #4875) - @uppy/utils: improve types for `finddomelement` (antoine du hamel / #4873) - @uppy/code: allow plugins to type `pluginstate` (antoine du hamel / #4872) - meta: build(deps): bump follow-redirects from 1.15.1 to 1.15.4 (dependabot[bot] / #4862) - meta: add `output-watcher` gha to help check output diff (antoine du hamel / #4868) - meta: generate locale pack from output file (antoine du hamel / #4867) - meta: comment on what we want to do about close, resetprogress, clearuploadedfiles, etc in the next major (artur paikin / #4865) - meta: fix `yarn build:clean` (antoine du hamel / #4866) - meta: use `explicit-module-boundary-types` lint rule (antoine du hamel / #4858) - @uppy/form: use requestsubmit (merlijn vos / #4852) - @uppy/provider-views: add referrerpolicy to images (merlijn vos / #4853) - @uppy/core: add `debuglogger` as export in manual types (antoine du hamel / #4831) - meta: fix `js2ts` script (antoine du hamel / #4846) - @uppy/xhr-upload: show remove button (merlijn vos / #4851) - meta: upgrade `@transloadit/prettier-bytes` (antoine du hamel / #4850) - @uppy/core: add missing requiredmetafields key in restrictions (darthf1 / #4819) - @uppy/companion,@uppy/tus: bump `tus-js-client` version range (merlijn vos / #4848) - meta: build(deps): bump aws/aws-sdk-php from 3.272.1 to 3.288.1 in /examples/aws-php (dependabot[bot] / #4838) - @uppy/dashboard: fix `typeerror` when `file.remote` is nullish (antoine du hamel / #4825) - meta: fix `js2ts` script (antoine du hamel / #4844) - @uppy/locales: fix "save" button translation in hr_hr.ts (žan žlender / #4830) - meta: fix linting of `.tsx` files (antoine du hamel / #4843) - @uppy/core: fix types (antoine du hamel / #4842) - @uppy/utils: improve `preprocess` and `postprocess` types (antoine du hamel / #4841) - meta: fix `yarn build:clean` (mikael finstad / #4840) - meta: dev: remove extensions from vite aliases (antoine du hamel) - meta: fix `"e2e"` script (antoine du hamel) - @uppy/core: refactor to ts (murderlon) - meta: fix typescript ci (antoine du hamel) - meta: fix clean script (mikael finstad / #4820) - @uppy/companion-client: fix `typeerror` (antoine du hamel) --- BUNDLE-README.md | 2 +- CHANGELOG.md | 91 ++++++ README.md | 262 +++++++++--------- examples/aws-nodejs/public/drag.html | 4 +- examples/aws-nodejs/public/index.html | 4 +- examples/cdn-example/index.html | 6 +- .../uppy-with-companion/client/index.html | 4 +- packages/@uppy/audio/CHANGELOG.md | 8 + packages/@uppy/audio/package.json | 2 +- packages/@uppy/aws-s3-multipart/package.json | 2 +- packages/@uppy/aws-s3/CHANGELOG.md | 7 + packages/@uppy/aws-s3/package.json | 2 +- packages/@uppy/companion-client/CHANGELOG.md | 10 + packages/@uppy/companion-client/package.json | 2 +- packages/@uppy/companion/CHANGELOG.md | 8 + packages/@uppy/companion/package.json | 2 +- packages/@uppy/compressor/CHANGELOG.md | 8 + packages/@uppy/compressor/package.json | 2 +- packages/@uppy/core/CHANGELOG.md | 13 + packages/@uppy/core/package.json | 2 +- packages/@uppy/dashboard/CHANGELOG.md | 9 + packages/@uppy/dashboard/package.json | 2 +- packages/@uppy/drop-target/CHANGELOG.md | 7 + packages/@uppy/drop-target/package.json | 2 +- packages/@uppy/form/CHANGELOG.md | 7 + packages/@uppy/form/package.json | 2 +- packages/@uppy/golden-retriever/package.json | 2 +- packages/@uppy/image-editor/CHANGELOG.md | 8 + packages/@uppy/image-editor/package.json | 2 +- packages/@uppy/locales/CHANGELOG.md | 7 + packages/@uppy/locales/package.json | 2 +- packages/@uppy/provider-views/CHANGELOG.md | 8 + packages/@uppy/provider-views/package.json | 2 +- packages/@uppy/remote-sources/package.json | 2 +- packages/@uppy/status-bar/CHANGELOG.md | 8 + packages/@uppy/status-bar/package.json | 2 +- packages/@uppy/store-default/package.json | 2 +- packages/@uppy/store-redux/package.json | 2 +- packages/@uppy/svelte/package.json | 2 +- .../@uppy/thumbnail-generator/CHANGELOG.md | 7 + .../@uppy/thumbnail-generator/package.json | 2 +- packages/@uppy/transloadit/CHANGELOG.md | 7 + packages/@uppy/transloadit/package.json | 2 +- packages/@uppy/tus/CHANGELOG.md | 9 + packages/@uppy/tus/package.json | 2 +- packages/@uppy/utils/CHANGELOG.md | 8 + packages/@uppy/utils/package.json | 2 +- packages/@uppy/vue/package.json | 2 +- packages/@uppy/webcam/package.json | 2 +- packages/@uppy/xhr-upload/CHANGELOG.md | 9 + packages/@uppy/xhr-upload/package.json | 2 +- packages/uppy/package.json | 2 +- 52 files changed, 407 insertions(+), 168 deletions(-) diff --git a/BUNDLE-README.md b/BUNDLE-README.md index 96526d55c9..20c2541d0c 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 af59121fd6..11eb605412 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,97 @@ Please add your entries in this format: In the current stage we aim to release a new version at least every month. +## 3.22.0 + +Released: 2024-02-19 + +| Package | Version | Package | Version | +| ------------------------- | ------- | ------------------------- | ------- | +| @uppy/audio | 1.1.5 | @uppy/remote-sources | 1.1.1 | +| @uppy/aws-s3 | 3.6.1 | @uppy/status-bar | 3.2.6 | +| @uppy/aws-s3-multipart | 3.10.1 | @uppy/store-default | 3.2.1 | +| @uppy/companion | 4.12.1 | @uppy/store-redux | 3.0.6 | +| @uppy/companion-client | 3.7.1 | @uppy/svelte | 3.1.2 | +| @uppy/compressor | 1.1.0 | @uppy/thumbnail-generator | 3.0.7 | +| @uppy/core | 3.9.0 | @uppy/transloadit | 3.5.0 | +| @uppy/dashboard | 3.7.2 | @uppy/tus | 3.5.1 | +| @uppy/drop-target | 2.0.3 | @uppy/utils | 5.7.1 | +| @uppy/form | 3.1.0 | @uppy/vue | 1.1.1 | +| @uppy/golden-retriever | 3.1.2 | @uppy/webcam | 3.3.5 | +| @uppy/image-editor | 2.4.1 | @uppy/xhr-upload | 3.6.1 | +| @uppy/locales | 3.5.1 | uppy | 3.22.0 | +| @uppy/provider-views | 3.9.0 | | | + +- @uppy/aws-s3-multipart,@uppy/aws-s3,@uppy/companion-client,@uppy/tus,@uppy/xhr-upload: update `uppyfile` objects before emitting events (antoine du hamel / #4928) +- @uppy/transloadit: add `clientname` option (marius / #4920) +- @uppy/thumbnail-generator: fix broken previews after cropping (evgenia karunus / #4926) +- @uppy/compressor: upgrade compressorjs (merlijn vos / #4924) +- @uppy/companion: fix companion dns and allow redirects from http->https again (mikael finstad / #4895) +- @uppy/dashboard: autoopenfileeditor - rename "edit file" to "edit image" (evgenia karunus / #4925) +- meta: resolve jsx to preact in shared tsconfig (merlijn vos / #4923) +- @uppy/image-editor: image editor: make compressor work after the image editor, too (evgenia karunus / #4918) +- meta: exclude `tsconfig` files from npm bundles (antoine du hamel / #4916) +- @uppy/compressor: migrate to ts (mikael finstad / #4907) +- @uppy/provider-views: update uppy-providerbrowser-viewtype--list.scss (aditya patadia / #4913) +- @uppy/tus: migrate to ts (merlijn vos / #4899) +- meta: bump yarn version (antoine du hamel / #4906) +- meta: validate `defaultoptions` for stricter option types (antoine du hamel / #4901) +- @uppy/dashboard: Uncouple native camera and video buttons from the `disableLocalFiles` option (jake mcallister / #4894) +- meta: put experimental ternaries in .prettierrc.js (merlijn vos / #4900) +- @uppy/xhr-upload: migrate to ts (merlijn vos / #4892) +- @uppy/drop-target: refactor to typescript (artur paikin / #4863) +- meta: fix missing line return in js2ts script (antoine du hamel) +- meta: disable `@typescript-eslint/no-empty-function` lint rule (antoine du hamel / #4891) +- @uppy/companion-client: fix tests and linter (antoine du hamel / #4890) +- @uppy/companion-client: migrate to ts (merlijn vos / #4864) +- meta: prettier 3.0.3 -> 3.2.4 (antoine du hamel / #4889) +- @uppy/image-editor: migrate to ts (merlijn vos / #4880) +- meta: fix race condition in `e2e.yml` (antoine du hamel) +- @uppy/core: add utility type to help define plugin option types (antoine du hamel / #4885) +- meta: merge `output-watcher` and `e2e` workflows (antoine du hamel / #4886) +- @uppy/status-bar: fix `statusbaroptions` type (antoine du hamel / #4883) +- @uppy/core: improve types of .use() (merlijn vos / #4882) +- @uppy/audio: fix `audiooptions` (antoine du hamel / #4884) +- meta: upgrade vite and vitest (antoine du hamel / #4881) +- meta: fix `yarn build:clean` (antoine du hamel) +- @uppy/audio: refactor to typescript (antoine du hamel / #4860) +- @uppy/status-bar: refactor to typescript (antoine du hamel / #4839) +- @uppy/core: add `plugintarget` type and mark options as optional (antoine du hamel / #4874) +- meta: improve output watcher diff (antoine du hamel / #4876) +- meta: minify the output watcher diff further (antoine du hamel) +- meta: remove comments from output watcher (mikael finstad / #4875) +- @uppy/utils: improve types for `finddomelement` (antoine du hamel / #4873) +- @uppy/code: allow plugins to type `pluginstate` (antoine du hamel / #4872) +- meta: build(deps): bump follow-redirects from 1.15.1 to 1.15.4 (dependabot[bot] / #4862) +- meta: add `output-watcher` gha to help check output diff (antoine du hamel / #4868) +- meta: generate locale pack from output file (antoine du hamel / #4867) +- meta: comment on what we want to do about close, resetprogress, clearuploadedfiles, etc in the next major (artur paikin / #4865) +- meta: fix `yarn build:clean` (antoine du hamel / #4866) +- meta: use `explicit-module-boundary-types` lint rule (antoine du hamel / #4858) +- @uppy/form: use requestsubmit (merlijn vos / #4852) +- @uppy/provider-views: add referrerpolicy to images (merlijn vos / #4853) +- @uppy/core: add `debuglogger` as export in manual types (antoine du hamel / #4831) +- meta: fix `js2ts` script (antoine du hamel / #4846) +- @uppy/xhr-upload: show remove button (merlijn vos / #4851) +- meta: upgrade `@transloadit/prettier-bytes` (antoine du hamel / #4850) +- @uppy/core: add missing requiredmetafields key in restrictions (darthf1 / #4819) +- @uppy/companion,@uppy/tus: bump `tus-js-client` version range (merlijn vos / #4848) +- meta: build(deps): bump aws/aws-sdk-php from 3.272.1 to 3.288.1 in /examples/aws-php (dependabot[bot] / #4838) +- @uppy/dashboard: fix `typeerror` when `file.remote` is nullish (antoine du hamel / #4825) +- meta: fix `js2ts` script (antoine du hamel / #4844) +- @uppy/locales: fix "save" button translation in hr_hr.ts (žan žlender / #4830) +- meta: fix linting of `.tsx` files (antoine du hamel / #4843) +- @uppy/core: fix types (antoine du hamel / #4842) +- @uppy/utils: improve `preprocess` and `postprocess` types (antoine du hamel / #4841) +- meta: fix `yarn build:clean` (mikael finstad / #4840) +- meta: dev: remove extensions from vite aliases (antoine du hamel) +- meta: fix `"e2e"` script (antoine du hamel) +- @uppy/core: refactor to ts (murderlon) +- meta: fix typescript ci (antoine du hamel) +- meta: fix clean script (mikael finstad / #4820) +- @uppy/companion-client: fix `typeerror` (antoine du hamel) + + ## 3.21.0 Released: 2023-12-12 diff --git a/README.md b/README.md index 770a80ba38..0771ba23ac 100644 --- a/README.md +++ b/README.md @@ -65,7 +65,7 @@ const uppy = new Uppy() npm install @uppy/core @uppy/dashboard @uppy/tus ``` -Add CSS [uppy.min.css](https://releases.transloadit.com/uppy/v3.21.0/uppy.min.css), either to your HTML page’s `` or include in JS, if your bundler of choice supports it. +Add CSS [uppy.min.css](https://releases.transloadit.com/uppy/v3.22.0/uppy.min.css), either to your HTML page’s `` or include in JS, if your bundler of choice supports it. Alternatively, you can also use a pre-built bundle from Transloadit’s CDN: Edgly. In that case `Uppy` will attach itself to the global `window.Uppy` object. @@ -73,12 +73,12 @@ Alternatively, you can also use a pre-built bundle from Transloadit’s CDN: Edg ```html - +
+ ``` ## FAQ @@ -235,265 +235,265 @@ Use Uppy in your project? [Let us know](https://github.com/transloadit/uppy/issu -[arturi](https://github.com/arturi) |[goto-bus-stop](https://github.com/goto-bus-stop) |[kvz](https://github.com/kvz) |[ifedapoolarewaju](https://github.com/ifedapoolarewaju) |[aduh95](https://github.com/aduh95) |[hedgerh](https://github.com/hedgerh) | +[arturi](https://github.com/arturi) |[goto-bus-stop](https://github.com/goto-bus-stop) |[kvz](https://github.com/kvz) |[aduh95](https://github.com/aduh95) |[ifedapoolarewaju](https://github.com/ifedapoolarewaju) |[hedgerh](https://github.com/hedgerh) | :---: |:---: |:---: |:---: |:---: |:---: | -[arturi](https://github.com/arturi) |[goto-bus-stop](https://github.com/goto-bus-stop) |[kvz](https://github.com/kvz) |[ifedapoolarewaju](https://github.com/ifedapoolarewaju) |[aduh95](https://github.com/aduh95) |[hedgerh](https://github.com/hedgerh) | +[arturi](https://github.com/arturi) |[goto-bus-stop](https://github.com/goto-bus-stop) |[kvz](https://github.com/kvz) |[aduh95](https://github.com/aduh95) |[ifedapoolarewaju](https://github.com/ifedapoolarewaju) |[hedgerh](https://github.com/hedgerh) | [AJvanLoon](https://github.com/AJvanLoon) |[nqst](https://github.com/nqst) |[Murderlon](https://github.com/Murderlon) |[mifi](https://github.com/mifi) |[github-actions[bot]](https://github.com/apps/github-actions) |[lakesare](https://github.com/lakesare) | :---: |:---: |:---: |:---: |:---: |:---: | [AJvanLoon](https://github.com/AJvanLoon) |[nqst](https://github.com/nqst) |[Murderlon](https://github.com/Murderlon) |[mifi](https://github.com/mifi) |[github-actions\[bot\]](https://github.com/apps/github-actions) |[lakesare](https://github.com/lakesare) | -[kiloreux](https://github.com/kiloreux) |[dependabot[bot]](https://github.com/apps/dependabot) |[sadovnychyi](https://github.com/sadovnychyi) |[samuelayo](https://github.com/samuelayo) |[richardwillars](https://github.com/richardwillars) |[ajkachnic](https://github.com/ajkachnic) | +[kiloreux](https://github.com/kiloreux) |[dependabot[bot]](https://github.com/apps/dependabot) |[samuelayo](https://github.com/samuelayo) |[sadovnychyi](https://github.com/sadovnychyi) |[richardwillars](https://github.com/richardwillars) |[ajkachnic](https://github.com/ajkachnic) | :---: |:---: |:---: |:---: |:---: |:---: | -[kiloreux](https://github.com/kiloreux) |[dependabot\[bot\]](https://github.com/apps/dependabot) |[sadovnychyi](https://github.com/sadovnychyi) |[samuelayo](https://github.com/samuelayo) |[richardwillars](https://github.com/richardwillars) |[ajkachnic](https://github.com/ajkachnic) | +[kiloreux](https://github.com/kiloreux) |[dependabot\[bot\]](https://github.com/apps/dependabot) |[samuelayo](https://github.com/samuelayo) |[sadovnychyi](https://github.com/sadovnychyi) |[richardwillars](https://github.com/richardwillars) |[ajkachnic](https://github.com/ajkachnic) | [zcallan](https://github.com/zcallan) |[YukeshShr](https://github.com/YukeshShr) |[janko](https://github.com/janko) |[oliverpool](https://github.com/oliverpool) |[Botz](https://github.com/Botz) |[mcallistertyler](https://github.com/mcallistertyler) | :---: |:---: |:---: |:---: |:---: |:---: | [zcallan](https://github.com/zcallan) |[YukeshShr](https://github.com/YukeshShr) |[janko](https://github.com/janko) |[oliverpool](https://github.com/oliverpool) |[Botz](https://github.com/Botz) |[mcallistertyler](https://github.com/mcallistertyler) | -[mokutsu-coursera](https://github.com/mokutsu-coursera) |[dschmidt](https://github.com/dschmidt) |[DJWassink](https://github.com/DJWassink) |[timodwhit](https://github.com/timodwhit) |[taoqf](https://github.com/taoqf) |[mrbatista](https://github.com/mrbatista) | +[mokutsu-coursera](https://github.com/mokutsu-coursera) |[dschmidt](https://github.com/dschmidt) |[DJWassink](https://github.com/DJWassink) |[mrbatista](https://github.com/mrbatista) |[taoqf](https://github.com/taoqf) |[timodwhit](https://github.com/timodwhit) | :---: |:---: |:---: |:---: |:---: |:---: | -[mokutsu-coursera](https://github.com/mokutsu-coursera) |[dschmidt](https://github.com/dschmidt) |[DJWassink](https://github.com/DJWassink) |[timodwhit](https://github.com/timodwhit) |[taoqf](https://github.com/taoqf) |[mrbatista](https://github.com/mrbatista) | +[mokutsu-coursera](https://github.com/mokutsu-coursera) |[dschmidt](https://github.com/dschmidt) |[DJWassink](https://github.com/DJWassink) |[mrbatista](https://github.com/mrbatista) |[taoqf](https://github.com/taoqf) |[timodwhit](https://github.com/timodwhit) | -[tim-kos](https://github.com/tim-kos) |[eltociear](https://github.com/eltociear) |[tuoxiansp](https://github.com/tuoxiansp) |[dominiceden](https://github.com/dominiceden) |[elenalape](https://github.com/elenalape) |[mejiaej](https://github.com/mejiaej) | +[tim-kos](https://github.com/tim-kos) |[eltociear](https://github.com/eltociear) |[tuoxiansp](https://github.com/tuoxiansp) |[pauln](https://github.com/pauln) |[MikeKovarik](https://github.com/MikeKovarik) |[toadkicker](https://github.com/toadkicker) | :---: |:---: |:---: |:---: |:---: |:---: | -[tim-kos](https://github.com/tim-kos) |[eltociear](https://github.com/eltociear) |[tuoxiansp](https://github.com/tuoxiansp) |[dominiceden](https://github.com/dominiceden) |[elenalape](https://github.com/elenalape) |[mejiaej](https://github.com/mejiaej) | +[tim-kos](https://github.com/tim-kos) |[eltociear](https://github.com/eltociear) |[tuoxiansp](https://github.com/tuoxiansp) |[pauln](https://github.com/pauln) |[MikeKovarik](https://github.com/MikeKovarik) |[toadkicker](https://github.com/toadkicker) | -[gavboulton](https://github.com/gavboulton) |[Hawxy](https://github.com/Hawxy) |[juliangruber](https://github.com/juliangruber) |[bertho-zero](https://github.com/bertho-zero) |[LiviaMedeiros](https://github.com/LiviaMedeiros) |[tranvansang](https://github.com/tranvansang) | +[ap--](https://github.com/ap--) |[tranvansang](https://github.com/tranvansang) |[LiviaMedeiros](https://github.com/LiviaMedeiros) |[bertho-zero](https://github.com/bertho-zero) |[juliangruber](https://github.com/juliangruber) |[Hawxy](https://github.com/Hawxy) | :---: |:---: |:---: |:---: |:---: |:---: | -[gavboulton](https://github.com/gavboulton) |[Hawxy](https://github.com/Hawxy) |[juliangruber](https://github.com/juliangruber) |[bertho-zero](https://github.com/bertho-zero) |[LiviaMedeiros](https://github.com/LiviaMedeiros) |[tranvansang](https://github.com/tranvansang) | +[ap--](https://github.com/ap--) |[tranvansang](https://github.com/tranvansang) |[LiviaMedeiros](https://github.com/LiviaMedeiros) |[bertho-zero](https://github.com/bertho-zero) |[juliangruber](https://github.com/juliangruber) |[Hawxy](https://github.com/Hawxy) | -[ap--](https://github.com/ap--) |[MikeKovarik](https://github.com/MikeKovarik) |[pauln](https://github.com/pauln) |[toadkicker](https://github.com/toadkicker) |[ofhope](https://github.com/ofhope) |[johnnyperkins](https://github.com/johnnyperkins) | +[gavboulton](https://github.com/gavboulton) |[mejiaej](https://github.com/mejiaej) |[elenalape](https://github.com/elenalape) |[dominiceden](https://github.com/dominiceden) |[Acconut](https://github.com/Acconut) |[jhen0409](https://github.com/jhen0409) | :---: |:---: |:---: |:---: |:---: |:---: | -[ap--](https://github.com/ap--) |[MikeKovarik](https://github.com/MikeKovarik) |[pauln](https://github.com/pauln) |[toadkicker](https://github.com/toadkicker) |[ofhope](https://github.com/ofhope) |[johnnyperkins](https://github.com/johnnyperkins) | +[gavboulton](https://github.com/gavboulton) |[mejiaej](https://github.com/mejiaej) |[elenalape](https://github.com/elenalape) |[dominiceden](https://github.com/dominiceden) |[Acconut](https://github.com/Acconut) |[jhen0409](https://github.com/jhen0409) | -[dargmuesli](https://github.com/dargmuesli) |[manuelkiessling](https://github.com/manuelkiessling) |[MatthiasKunnen](https://github.com/MatthiasKunnen) |[nndevstudio](https://github.com/nndevstudio) |[ogtfaber](https://github.com/ogtfaber) |[sksavant](https://github.com/sksavant) | +[stephentuso](https://github.com/stephentuso) |[bencergazda](https://github.com/bencergazda) |[a-kriya](https://github.com/a-kriya) |[yonahforst](https://github.com/yonahforst) |[suchoproduction](https://github.com/suchoproduction) |[sksavant](https://github.com/sksavant) | :---: |:---: |:---: |:---: |:---: |:---: | -[dargmuesli](https://github.com/dargmuesli) |[manuelkiessling](https://github.com/manuelkiessling) |[MatthiasKunnen](https://github.com/MatthiasKunnen) |[nndevstudio](https://github.com/nndevstudio) |[ogtfaber](https://github.com/ogtfaber) |[sksavant](https://github.com/sksavant) | +[stephentuso](https://github.com/stephentuso) |[bencergazda](https://github.com/bencergazda) |[a-kriya](https://github.com/a-kriya) |[yonahforst](https://github.com/yonahforst) |[suchoproduction](https://github.com/suchoproduction) |[sksavant](https://github.com/sksavant) | -[suchoproduction](https://github.com/suchoproduction) |[yonahforst](https://github.com/yonahforst) |[a-kriya](https://github.com/a-kriya) |[bencergazda](https://github.com/bencergazda) |[stephentuso](https://github.com/stephentuso) |[jhen0409](https://github.com/jhen0409) | +[ogtfaber](https://github.com/ogtfaber) |[nndevstudio](https://github.com/nndevstudio) |[MatthiasKunnen](https://github.com/MatthiasKunnen) |[manuelkiessling](https://github.com/manuelkiessling) |[dargmuesli](https://github.com/dargmuesli) |[johnnyperkins](https://github.com/johnnyperkins) | :---: |:---: |:---: |:---: |:---: |:---: | -[suchoproduction](https://github.com/suchoproduction) |[yonahforst](https://github.com/yonahforst) |[a-kriya](https://github.com/a-kriya) |[bencergazda](https://github.com/bencergazda) |[stephentuso](https://github.com/stephentuso) |[jhen0409](https://github.com/jhen0409) | +[ogtfaber](https://github.com/ogtfaber) |[nndevstudio](https://github.com/nndevstudio) |[MatthiasKunnen](https://github.com/MatthiasKunnen) |[manuelkiessling](https://github.com/manuelkiessling) |[dargmuesli](https://github.com/dargmuesli) |[johnnyperkins](https://github.com/johnnyperkins) | -[5idereal](https://github.com/5idereal) |[ahmedkandel](https://github.com/ahmedkandel) |[btrice](https://github.com/btrice) |[AndrwM](https://github.com/AndrwM) |[behnammodi](https://github.com/behnammodi) |[BePo65](https://github.com/BePo65) | +[ofhope](https://github.com/ofhope) |[yaegor](https://github.com/yaegor) |[zhuangya](https://github.com/zhuangya) |[sparanoid](https://github.com/sparanoid) |[ThomasG77](https://github.com/ThomasG77) |[subha1206](https://github.com/subha1206) | :---: |:---: |:---: |:---: |:---: |:---: | -[5idereal](https://github.com/5idereal) |[ahmedkandel](https://github.com/ahmedkandel) |[btrice](https://github.com/btrice) |[AndrwM](https://github.com/AndrwM) |[behnammodi](https://github.com/behnammodi) |[BePo65](https://github.com/BePo65) | +[ofhope](https://github.com/ofhope) |[yaegor](https://github.com/yaegor) |[zhuangya](https://github.com/zhuangya) |[sparanoid](https://github.com/sparanoid) |[ThomasG77](https://github.com/ThomasG77) |[subha1206](https://github.com/subha1206) | -[bradedelman](https://github.com/bradedelman) |[camiloforero](https://github.com/camiloforero) |[command-tab](https://github.com/command-tab) |[craigjennings11](https://github.com/craigjennings11) |[davekiss](https://github.com/davekiss) |[denysdesign](https://github.com/denysdesign) | +[schonert](https://github.com/schonert) |[SlavikTraktor](https://github.com/SlavikTraktor) |[scottbessler](https://github.com/scottbessler) |[jrschumacher](https://github.com/jrschumacher) |[rosenfeld](https://github.com/rosenfeld) |[rdimartino](https://github.com/rdimartino) | :---: |:---: |:---: |:---: |:---: |:---: | -[bradedelman](https://github.com/bradedelman) |[camiloforero](https://github.com/camiloforero) |[command-tab](https://github.com/command-tab) |[craigjennings11](https://github.com/craigjennings11) |[davekiss](https://github.com/davekiss) |[denysdesign](https://github.com/denysdesign) | +[schonert](https://github.com/schonert) |[SlavikTraktor](https://github.com/SlavikTraktor) |[scottbessler](https://github.com/scottbessler) |[jrschumacher](https://github.com/jrschumacher) |[rosenfeld](https://github.com/rosenfeld) |[rdimartino](https://github.com/rdimartino) | -[ethanwillis](https://github.com/ethanwillis) |[frobinsonj](https://github.com/frobinsonj) |[geertclerx](https://github.com/geertclerx) |[ghasrfakhri](https://github.com/ghasrfakhri) |[jasonbosco](https://github.com/jasonbosco) |[jedwood](https://github.com/jedwood) | +[richmeij](https://github.com/richmeij) |[Youssef1313](https://github.com/Youssef1313) |[allenfantasy](https://github.com/allenfantasy) |[Zyclotrop-j](https://github.com/Zyclotrop-j) |[anark](https://github.com/anark) |[bdirito](https://github.com/bdirito) | :---: |:---: |:---: |:---: |:---: |:---: | -[ethanwillis](https://github.com/ethanwillis) |[frobinsonj](https://github.com/frobinsonj) |[geertclerx](https://github.com/geertclerx) |[ghasrfakhri](https://github.com/ghasrfakhri) |[jasonbosco](https://github.com/jasonbosco) |[jedwood](https://github.com/jedwood) | +[richmeij](https://github.com/richmeij) |[Youssef1313](https://github.com/Youssef1313) |[allenfantasy](https://github.com/allenfantasy) |[Zyclotrop-j](https://github.com/Zyclotrop-j) |[anark](https://github.com/anark) |[bdirito](https://github.com/bdirito) | -[dogrocker](https://github.com/dogrocker) |[lafe](https://github.com/lafe) |[mactavishz](https://github.com/mactavishz) |[maferland](https://github.com/maferland) |[mskelton](https://github.com/mskelton) |[Martin005](https://github.com/Martin005) | +[darthf1](https://github.com/darthf1) |[fortrieb](https://github.com/fortrieb) |[heocoi](https://github.com/heocoi) |[jarey](https://github.com/jarey) |[muhammadInam](https://github.com/muhammadInam) |[rettgerst](https://github.com/rettgerst) | :---: |:---: |:---: |:---: |:---: |:---: | -[dogrocker](https://github.com/dogrocker) |[lafe](https://github.com/lafe) |[mactavishz](https://github.com/mactavishz) |[maferland](https://github.com/maferland) |[mskelton](https://github.com/mskelton) |[Martin005](https://github.com/Martin005) | +[darthf1](https://github.com/darthf1) |[fortrieb](https://github.com/fortrieb) |[heocoi](https://github.com/heocoi) |[jarey](https://github.com/jarey) |[muhammadInam](https://github.com/muhammadInam) |[rettgerst](https://github.com/rettgerst) | -[martiuslim](https://github.com/martiuslim) |[msand](https://github.com/msand) |[paescuj](https://github.com/paescuj) |[richartkeil](https://github.com/richartkeil) |[richmeij](https://github.com/richmeij) |[rdimartino](https://github.com/rdimartino) | +[mkabatek](https://github.com/mkabatek) |[jukakoski](https://github.com/jukakoski) |[olemoign](https://github.com/olemoign) |[ahmedkandel](https://github.com/ahmedkandel) |[btrice](https://github.com/btrice) |[5idereal](https://github.com/5idereal) | :---: |:---: |:---: |:---: |:---: |:---: | -[martiuslim](https://github.com/martiuslim) |[msand](https://github.com/msand) |[paescuj](https://github.com/paescuj) |[richartkeil](https://github.com/richartkeil) |[richmeij](https://github.com/richmeij) |[rdimartino](https://github.com/rdimartino) | +[mkabatek](https://github.com/mkabatek) |[jukakoski](https://github.com/jukakoski) |[olemoign](https://github.com/olemoign) |[ahmedkandel](https://github.com/ahmedkandel) |[btrice](https://github.com/btrice) |[5idereal](https://github.com/5idereal) | -[rosenfeld](https://github.com/rosenfeld) |[jrschumacher](https://github.com/jrschumacher) |[scottbessler](https://github.com/scottbessler) |[SlavikTraktor](https://github.com/SlavikTraktor) |[schonert](https://github.com/schonert) |[subha1206](https://github.com/subha1206) | +[AndrwM](https://github.com/AndrwM) |[behnammodi](https://github.com/behnammodi) |[BePo65](https://github.com/BePo65) |[bradedelman](https://github.com/bradedelman) |[camiloforero](https://github.com/camiloforero) |[command-tab](https://github.com/command-tab) | :---: |:---: |:---: |:---: |:---: |:---: | -[rosenfeld](https://github.com/rosenfeld) |[jrschumacher](https://github.com/jrschumacher) |[scottbessler](https://github.com/scottbessler) |[SlavikTraktor](https://github.com/SlavikTraktor) |[schonert](https://github.com/schonert) |[subha1206](https://github.com/subha1206) | +[AndrwM](https://github.com/AndrwM) |[behnammodi](https://github.com/behnammodi) |[BePo65](https://github.com/BePo65) |[bradedelman](https://github.com/bradedelman) |[camiloforero](https://github.com/camiloforero) |[command-tab](https://github.com/command-tab) | -[ThomasG77](https://github.com/ThomasG77) |[sparanoid](https://github.com/sparanoid) |[zhuangya](https://github.com/zhuangya) |[yaegor](https://github.com/yaegor) |[Youssef1313](https://github.com/Youssef1313) |[allenfantasy](https://github.com/allenfantasy) | +[craig-jennings](https://github.com/craig-jennings) |[davekiss](https://github.com/davekiss) |[denysdesign](https://github.com/denysdesign) |[ethanwillis](https://github.com/ethanwillis) |[paescuj](https://github.com/paescuj) |[msand](https://github.com/msand) | :---: |:---: |:---: |:---: |:---: |:---: | -[ThomasG77](https://github.com/ThomasG77) |[sparanoid](https://github.com/sparanoid) |[zhuangya](https://github.com/zhuangya) |[yaegor](https://github.com/yaegor) |[Youssef1313](https://github.com/Youssef1313) |[allenfantasy](https://github.com/allenfantasy) | +[craig-jennings](https://github.com/craig-jennings) |[davekiss](https://github.com/davekiss) |[denysdesign](https://github.com/denysdesign) |[ethanwillis](https://github.com/ethanwillis) |[paescuj](https://github.com/paescuj) |[msand](https://github.com/msand) | -[Zyclotrop-j](https://github.com/Zyclotrop-j) |[anark](https://github.com/anark) |[bdirito](https://github.com/bdirito) |[fortrieb](https://github.com/fortrieb) |[heocoi](https://github.com/heocoi) |[jarey](https://github.com/jarey) | +[richartkeil](https://github.com/richartkeil) |[martiuslim](https://github.com/martiuslim) |[Martin005](https://github.com/Martin005) |[mskelton](https://github.com/mskelton) |[mactavishz](https://github.com/mactavishz) |[lafe](https://github.com/lafe) | :---: |:---: |:---: |:---: |:---: |:---: | -[Zyclotrop-j](https://github.com/Zyclotrop-j) |[anark](https://github.com/anark) |[bdirito](https://github.com/bdirito) |[fortrieb](https://github.com/fortrieb) |[heocoi](https://github.com/heocoi) |[jarey](https://github.com/jarey) | +[richartkeil](https://github.com/richartkeil) |[martiuslim](https://github.com/martiuslim) |[Martin005](https://github.com/Martin005) |[mskelton](https://github.com/mskelton) |[mactavishz](https://github.com/mactavishz) |[lafe](https://github.com/lafe) | -[muhammadInam](https://github.com/muhammadInam) |[rettgerst](https://github.com/rettgerst) |[Acconut](https://github.com/Acconut) |[mkabatek](https://github.com/mkabatek) |[jukakoski](https://github.com/jukakoski) |[olemoign](https://github.com/olemoign) | +[dogrocker](https://github.com/dogrocker) |[jedwood](https://github.com/jedwood) |[jasonbosco](https://github.com/jasonbosco) |[ghasrfakhri](https://github.com/ghasrfakhri) |[geertclerx](https://github.com/geertclerx) |[frobinsonj](https://github.com/frobinsonj) | :---: |:---: |:---: |:---: |:---: |:---: | -[muhammadInam](https://github.com/muhammadInam) |[rettgerst](https://github.com/rettgerst) |[Acconut](https://github.com/Acconut) |[mkabatek](https://github.com/mkabatek) |[jukakoski](https://github.com/jukakoski) |[olemoign](https://github.com/olemoign) | +[dogrocker](https://github.com/dogrocker) |[jedwood](https://github.com/jedwood) |[jasonbosco](https://github.com/jasonbosco) |[ghasrfakhri](https://github.com/ghasrfakhri) |[geertclerx](https://github.com/geertclerx) |[frobinsonj](https://github.com/frobinsonj) | -[ajschmidt8](https://github.com/ajschmidt8) |[superhawk610](https://github.com/superhawk610) |[abannach](https://github.com/abannach) |[adamdottv](https://github.com/adamdottv) |[ajh-sr](https://github.com/ajh-sr) |[adamvigneault](https://github.com/adamvigneault) | +[luarmr](https://github.com/luarmr) |[raulibanez](https://github.com/raulibanez) |[refo](https://github.com/refo) |[SxDx](https://github.com/SxDx) |[robwilson1](https://github.com/robwilson1) |[scherroman](https://github.com/scherroman) | :---: |:---: |:---: |:---: |:---: |:---: | -[ajschmidt8](https://github.com/ajschmidt8) |[superhawk610](https://github.com/superhawk610) |[abannach](https://github.com/abannach) |[adamdottv](https://github.com/adamdottv) |[ajh-sr](https://github.com/ajh-sr) |[adamvigneault](https://github.com/adamvigneault) | +[luarmr](https://github.com/luarmr) |[raulibanez](https://github.com/raulibanez) |[refo](https://github.com/refo) |[SxDx](https://github.com/SxDx) |[robwilson1](https://github.com/robwilson1) |[scherroman](https://github.com/scherroman) | -[Adrrei](https://github.com/Adrrei) |[adritasharma](https://github.com/adritasharma) |[ahmadissa](https://github.com/ahmadissa) |[asmt3](https://github.com/asmt3) |[alexnj](https://github.com/alexnj) |[aalepis](https://github.com/aalepis) | +[rossng](https://github.com/rossng) |[JimmyLv](https://github.com/JimmyLv) |[eman8519](https://github.com/eman8519) |[Pzoco](https://github.com/Pzoco) |[ppadmavilasom](https://github.com/ppadmavilasom) |[phillipalexander](https://github.com/phillipalexander) | :---: |:---: |:---: |:---: |:---: |:---: | -[Adrrei](https://github.com/Adrrei) |[adritasharma](https://github.com/adritasharma) |[ahmadissa](https://github.com/ahmadissa) |[asmt3](https://github.com/asmt3) |[alexnj](https://github.com/alexnj) |[aalepis](https://github.com/aalepis) | +[rossng](https://github.com/rossng) |[JimmyLv](https://github.com/JimmyLv) |[eman8519](https://github.com/eman8519) |[Pzoco](https://github.com/Pzoco) |[ppadmavilasom](https://github.com/ppadmavilasom) |[phillipalexander](https://github.com/phillipalexander) | -[Dogfalo](https://github.com/Dogfalo) |[tekacs](https://github.com/tekacs) |[amitport](https://github.com/amitport) |[functino](https://github.com/functino) |[radarhere](https://github.com/radarhere) |[superandrew213](https://github.com/superandrew213) | +[pmusaraj](https://github.com/pmusaraj) |[pedrofs](https://github.com/pedrofs) |[plneto](https://github.com/plneto) |[patricklindsay](https://github.com/patricklindsay) |[achmiral](https://github.com/achmiral) |[Tashows](https://github.com/Tashows) | :---: |:---: |:---: |:---: |:---: |:---: | -[Dogfalo](https://github.com/Dogfalo) |[tekacs](https://github.com/tekacs) |[amitport](https://github.com/amitport) |[functino](https://github.com/functino) |[radarhere](https://github.com/radarhere) |[superandrew213](https://github.com/superandrew213) | +[pmusaraj](https://github.com/pmusaraj) |[pedrofs](https://github.com/pedrofs) |[plneto](https://github.com/plneto) |[patricklindsay](https://github.com/patricklindsay) |[achmiral](https://github.com/achmiral) |[Tashows](https://github.com/Tashows) | -[andrii-bodnar](https://github.com/andrii-bodnar) |[andychongyz](https://github.com/andychongyz) |[anthony0030](https://github.com/anthony0030) |[tyndria](https://github.com/tyndria) |[Abourass](https://github.com/Abourass) |[arthurdenner](https://github.com/arthurdenner) | +[taj](https://github.com/taj) |[strayer](https://github.com/strayer) |[sjauld](https://github.com/sjauld) |[steverob](https://github.com/steverob) |[amaitu](https://github.com/amaitu) |[quigebo](https://github.com/quigebo) | :---: |:---: |:---: |:---: |:---: |:---: | -[andrii-bodnar](https://github.com/andrii-bodnar) |[andychongyz](https://github.com/andychongyz) |[anthony0030](https://github.com/anthony0030) |[tyndria](https://github.com/tyndria) |[Abourass](https://github.com/Abourass) |[arthurdenner](https://github.com/arthurdenner) | +[taj](https://github.com/taj) |[strayer](https://github.com/strayer) |[sjauld](https://github.com/sjauld) |[steverob](https://github.com/steverob) |[amaitu](https://github.com/amaitu) |[quigebo](https://github.com/quigebo) | -[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) | +[waptik](https://github.com/waptik) |[SpazzMarticus](https://github.com/SpazzMarticus) |[szh](https://github.com/szh) |[sergei-zelinsky](https://github.com/sergei-zelinsky) |[sebasegovia01](https://github.com/sebasegovia01) |[sdebacker](https://github.com/sdebacker) | :---: |:---: |:---: |:---: |:---: |:---: | -[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) | +[waptik](https://github.com/waptik) |[SpazzMarticus](https://github.com/SpazzMarticus) |[szh](https://github.com/szh) |[sergei-zelinsky](https://github.com/sergei-zelinsky) |[sebasegovia01](https://github.com/sebasegovia01) |[sdebacker](https://github.com/sdebacker) | -[bducharme](https://github.com/bducharme) |[Quorafind](https://github.com/Quorafind) |[wbaaron](https://github.com/wbaaron) |[bedgerotto](https://github.com/bedgerotto) |[bryanjswift](https://github.com/bryanjswift) |[cyu](https://github.com/cyu) | +[samuelcolburn](https://github.com/samuelcolburn) |[fortunto2](https://github.com/fortunto2) |[GNURub](https://github.com/GNURub) |[rart](https://github.com/rart) |[ken-kuro](https://github.com/ken-kuro) |[mkopinsky](https://github.com/mkopinsky) | :---: |:---: |:---: |:---: |:---: |:---: | -[bducharme](https://github.com/bducharme) |[Quorafind](https://github.com/Quorafind) |[wbaaron](https://github.com/wbaaron) |[bedgerotto](https://github.com/bedgerotto) |[bryanjswift](https://github.com/bryanjswift) |[cyu](https://github.com/cyu) | +[samuelcolburn](https://github.com/samuelcolburn) |[fortunto2](https://github.com/fortunto2) |[GNURub](https://github.com/GNURub) |[rart](https://github.com/rart) |[ken-kuro](https://github.com/ken-kuro) |[mkopinsky](https://github.com/mkopinsky) | -[cartfisk](https://github.com/cartfisk) |[cellvinchung](https://github.com/cellvinchung) |[chao](https://github.com/chao) |[Cretezy](https://github.com/Cretezy) |[charlybillaud](https://github.com/charlybillaud) |[prattcmp](https://github.com/prattcmp) | +[mhulet](https://github.com/mhulet) |[hrsh](https://github.com/hrsh) |[mauricioribeiro](https://github.com/mauricioribeiro) |[matthewhartstonge](https://github.com/matthewhartstonge) |[mjesuele](https://github.com/mjesuele) |[mattfik](https://github.com/mattfik) | :---: |:---: |:---: |:---: |:---: |:---: | -[cartfisk](https://github.com/cartfisk) |[cellvinchung](https://github.com/cellvinchung) |[chao](https://github.com/chao) |[Cretezy](https://github.com/Cretezy) |[charlybillaud](https://github.com/charlybillaud) |[prattcmp](https://github.com/prattcmp) | +[mhulet](https://github.com/mhulet) |[hrsh](https://github.com/hrsh) |[mauricioribeiro](https://github.com/mauricioribeiro) |[matthewhartstonge](https://github.com/matthewhartstonge) |[mjesuele](https://github.com/mjesuele) |[mattfik](https://github.com/mattfik) | -[csprance](https://github.com/csprance) |[cfra](https://github.com/cfra) |[Aarbel](https://github.com/Aarbel) |[cbush06](https://github.com/cbush06) |[czj](https://github.com/czj) |[CommanderRoot](https://github.com/CommanderRoot) | +[mateuscruz](https://github.com/mateuscruz) |[masumulu28](https://github.com/masumulu28) |[masaok](https://github.com/masaok) |[martin-brennan](https://github.com/martin-brennan) |[marcusforsberg](https://github.com/marcusforsberg) |[marcosthejew](https://github.com/marcosthejew) | :---: |:---: |:---: |:---: |:---: |:---: | -[csprance](https://github.com/csprance) |[cfra](https://github.com/cfra) |[Aarbel](https://github.com/Aarbel) |[cbush06](https://github.com/cbush06) |[czj](https://github.com/czj) |[CommanderRoot](https://github.com/CommanderRoot) | +[mateuscruz](https://github.com/mateuscruz) |[masumulu28](https://github.com/masumulu28) |[masaok](https://github.com/masaok) |[martin-brennan](https://github.com/martin-brennan) |[marcusforsberg](https://github.com/marcusforsberg) |[marcosthejew](https://github.com/marcosthejew) | -[ardeois](https://github.com/ardeois) |[sercraig](https://github.com/sercraig) |[Cruaier](https://github.com/Cruaier) |[danmichaelo](https://github.com/danmichaelo) |[danschalow](https://github.com/danschalow) |[danilat](https://github.com/danilat) | +[mperrando](https://github.com/mperrando) |[onhate](https://github.com/onhate) |[pascalwengerter](https://github.com/pascalwengerter) |[ParsaArvanehPA](https://github.com/ParsaArvanehPA) |[cryptic022](https://github.com/cryptic022) |[Ozodbek1405](https://github.com/Ozodbek1405) | :---: |:---: |:---: |:---: |:---: |:---: | -[ardeois](https://github.com/ardeois) |[sercraig](https://github.com/sercraig) |[Cruaier](https://github.com/Cruaier) |[danmichaelo](https://github.com/danmichaelo) |[danschalow](https://github.com/danschalow) |[danilat](https://github.com/danilat) | +[mperrando](https://github.com/mperrando) |[onhate](https://github.com/onhate) |[pascalwengerter](https://github.com/pascalwengerter) |[ParsaArvanehPA](https://github.com/ParsaArvanehPA) |[cryptic022](https://github.com/cryptic022) |[Ozodbek1405](https://github.com/Ozodbek1405) | -[mrboomer](https://github.com/mrboomer) |[Cantabar](https://github.com/Cantabar) |[KaminskiDaniell](https://github.com/KaminskiDaniell) |[akizor](https://github.com/akizor) |[davilima6](https://github.com/davilima6) |[DennisKofflard](https://github.com/DennisKofflard) | +[leftdevel](https://github.com/leftdevel) |[nil1511](https://github.com/nil1511) |[coreprocess](https://github.com/coreprocess) |[nicojones](https://github.com/nicojones) |[trungcva10a6tn](https://github.com/trungcva10a6tn) |[naveed-ahmad](https://github.com/naveed-ahmad) | :---: |:---: |:---: |:---: |:---: |:---: | -[mrboomer](https://github.com/mrboomer) |[Cantabar](https://github.com/Cantabar) |[KaminskiDaniell](https://github.com/KaminskiDaniell) |[akizor](https://github.com/akizor) |[davilima6](https://github.com/davilima6) |[DennisKofflard](https://github.com/DennisKofflard) | +[leftdevel](https://github.com/leftdevel) |[nil1511](https://github.com/nil1511) |[coreprocess](https://github.com/coreprocess) |[nicojones](https://github.com/nicojones) |[trungcva10a6tn](https://github.com/trungcva10a6tn) |[naveed-ahmad](https://github.com/naveed-ahmad) | -[jeetiss](https://github.com/jeetiss) |[sweetro](https://github.com/sweetro) |[EdgarSantiago93](https://github.com/EdgarSantiago93) |[emuell](https://github.com/emuell) |[efbautista](https://github.com/efbautista) |[yoldar](https://github.com/yoldar) | +[pleasespammelater](https://github.com/pleasespammelater) |[marton-laszlo-attila](https://github.com/marton-laszlo-attila) |[navruzm](https://github.com/navruzm) |[mogzol](https://github.com/mogzol) |[shahimclt](https://github.com/shahimclt) |[mnafees](https://github.com/mnafees) | :---: |:---: |:---: |:---: |:---: |:---: | -[jeetiss](https://github.com/jeetiss) |[sweetro](https://github.com/sweetro) |[EdgarSantiago93](https://github.com/EdgarSantiago93) |[emuell](https://github.com/emuell) |[efbautista](https://github.com/efbautista) |[yoldar](https://github.com/yoldar) | +[pleasespammelater](https://github.com/pleasespammelater) |[marton-laszlo-attila](https://github.com/marton-laszlo-attila) |[navruzm](https://github.com/navruzm) |[mogzol](https://github.com/mogzol) |[shahimclt](https://github.com/shahimclt) |[mnafees](https://github.com/mnafees) | -[eliOcs](https://github.com/eliOcs) |[elliotdickison](https://github.com/elliotdickison) |[EnricoSottile](https://github.com/EnricoSottile) |[epexa](https://github.com/epexa) |[Gkleinereva](https://github.com/Gkleinereva) |[fgallinari](https://github.com/fgallinari) | +[boudra](https://github.com/boudra) |[neuronet77](https://github.com/neuronet77) |[mosi-kha](https://github.com/mosi-kha) |[maddy-jo](https://github.com/maddy-jo) |[mdxiaohu](https://github.com/mdxiaohu) |[magumbo](https://github.com/magumbo) | :---: |:---: |:---: |:---: |:---: |:---: | -[eliOcs](https://github.com/eliOcs) |[elliotdickison](https://github.com/elliotdickison) |[EnricoSottile](https://github.com/EnricoSottile) |[epexa](https://github.com/epexa) |[Gkleinereva](https://github.com/Gkleinereva) |[fgallinari](https://github.com/fgallinari) | +[boudra](https://github.com/boudra) |[neuronet77](https://github.com/neuronet77) |[mosi-kha](https://github.com/mosi-kha) |[maddy-jo](https://github.com/maddy-jo) |[mdxiaohu](https://github.com/mdxiaohu) |[magumbo](https://github.com/magumbo) | -[ferdiusa](https://github.com/ferdiusa) |[dtrucs](https://github.com/dtrucs) |[fuadscodes](https://github.com/fuadscodes) |[gabiganam](https://github.com/gabiganam) |[geoffappleford](https://github.com/geoffappleford) |[gjungb](https://github.com/gjungb) | +[jx-zyf](https://github.com/jx-zyf) |[kode-ninja](https://github.com/kode-ninja) |[sontixyou](https://github.com/sontixyou) |[jur-ng](https://github.com/jur-ng) |[johnmanjiro13](https://github.com/johnmanjiro13) |[hxgf](https://github.com/hxgf) | :---: |:---: |:---: |:---: |:---: |:---: | -[ferdiusa](https://github.com/ferdiusa) |[dtrucs](https://github.com/dtrucs) |[fuadscodes](https://github.com/fuadscodes) |[gabiganam](https://github.com/gabiganam) |[geoffappleford](https://github.com/geoffappleford) |[gjungb](https://github.com/gjungb) | +[jx-zyf](https://github.com/jx-zyf) |[kode-ninja](https://github.com/kode-ninja) |[sontixyou](https://github.com/sontixyou) |[jur-ng](https://github.com/jur-ng) |[johnmanjiro13](https://github.com/johnmanjiro13) |[hxgf](https://github.com/hxgf) | -[roenschg](https://github.com/roenschg) |[giacomocerquone](https://github.com/giacomocerquone) |[HughbertD](https://github.com/HughbertD) |[HussainAlkhalifah](https://github.com/HussainAlkhalifah) |[huydod](https://github.com/huydod) |[IanVS](https://github.com/IanVS) | +[green-mike](https://github.com/green-mike) |[gaelicwinter](https://github.com/gaelicwinter) |[frederikhors](https://github.com/frederikhors) |[franckl](https://github.com/franckl) |[fingul](https://github.com/fingul) |[elliotsayes](https://github.com/elliotsayes) | :---: |:---: |:---: |:---: |:---: |:---: | -[roenschg](https://github.com/roenschg) |[giacomocerquone](https://github.com/giacomocerquone) |[HughbertD](https://github.com/HughbertD) |[HussainAlkhalifah](https://github.com/HussainAlkhalifah) |[huydod](https://github.com/huydod) |[IanVS](https://github.com/IanVS) | +[green-mike](https://github.com/green-mike) |[gaelicwinter](https://github.com/gaelicwinter) |[frederikhors](https://github.com/frederikhors) |[franckl](https://github.com/franckl) |[fingul](https://github.com/fingul) |[elliotsayes](https://github.com/elliotsayes) | -[ishendyweb](https://github.com/ishendyweb) |[NaxYo](https://github.com/NaxYo) |[intenzive](https://github.com/intenzive) |[GreenJimmy](https://github.com/GreenJimmy) |[mazoruss](https://github.com/mazoruss) |[JacobMGEvans](https://github.com/JacobMGEvans) | +[zanzlender](https://github.com/zanzlender) |[olitomas](https://github.com/olitomas) |[yoann-hellopret](https://github.com/yoann-hellopret) |[vedran555](https://github.com/vedran555) |[tusharjkhunt](https://github.com/tusharjkhunt) |[thanhthot](https://github.com/thanhthot) | :---: |:---: |:---: |:---: |:---: |:---: | -[ishendyweb](https://github.com/ishendyweb) |[NaxYo](https://github.com/NaxYo) |[intenzive](https://github.com/intenzive) |[GreenJimmy](https://github.com/GreenJimmy) |[mazoruss](https://github.com/mazoruss) |[JacobMGEvans](https://github.com/JacobMGEvans) | +[zanzlender](https://github.com/zanzlender) |[olitomas](https://github.com/olitomas) |[yoann-hellopret](https://github.com/yoann-hellopret) |[vedran555](https://github.com/vedran555) |[tusharjkhunt](https://github.com/tusharjkhunt) |[thanhthot](https://github.com/thanhthot) | -[gaejabong](https://github.com/gaejabong) |[JakubHaladej](https://github.com/JakubHaladej) |[Jbithell](https://github.com/Jbithell) |[jcjmcclean](https://github.com/jcjmcclean) |[jamestiotio](https://github.com/jamestiotio) |[janklimo](https://github.com/janklimo) | +[stduhpf](https://github.com/stduhpf) |[slawexxx44](https://github.com/slawexxx44) |[rtaieb](https://github.com/rtaieb) |[rmoura-92](https://github.com/rmoura-92) |[rlebosse](https://github.com/rlebosse) |[rhymes](https://github.com/rhymes) | :---: |:---: |:---: |:---: |:---: |:---: | -[gaejabong](https://github.com/gaejabong) |[JakubHaladej](https://github.com/JakubHaladej) |[Jbithell](https://github.com/Jbithell) |[jcjmcclean](https://github.com/jcjmcclean) |[jamestiotio](https://github.com/jamestiotio) |[janklimo](https://github.com/janklimo) | +[stduhpf](https://github.com/stduhpf) |[slawexxx44](https://github.com/slawexxx44) |[rtaieb](https://github.com/rtaieb) |[rmoura-92](https://github.com/rmoura-92) |[rlebosse](https://github.com/rlebosse) |[rhymes](https://github.com/rhymes) | -[janwilts](https://github.com/janwilts) |[vith](https://github.com/vith) |[jessica-coursera](https://github.com/jessica-coursera) |[Jmales](https://github.com/Jmales) |[theJoeBiz](https://github.com/theJoeBiz) |[profsmallpine](https://github.com/profsmallpine) | +[luntta](https://github.com/luntta) |[phil714](https://github.com/phil714) |[ordago](https://github.com/ordago) |[odselsevier](https://github.com/odselsevier) |[ninesalt](https://github.com/ninesalt) |[dzcpy](https://github.com/dzcpy) | :---: |:---: |:---: |:---: |:---: |:---: | -[janwilts](https://github.com/janwilts) |[vith](https://github.com/vith) |[jessica-coursera](https://github.com/jessica-coursera) |[Jmales](https://github.com/Jmales) |[theJoeBiz](https://github.com/theJoeBiz) |[profsmallpine](https://github.com/profsmallpine) | +[luntta](https://github.com/luntta) |[phil714](https://github.com/phil714) |[ordago](https://github.com/ordago) |[odselsevier](https://github.com/odselsevier) |[ninesalt](https://github.com/ninesalt) |[dzcpy](https://github.com/dzcpy) | -[chromacoma](https://github.com/chromacoma) |[Jokcy](https://github.com/Jokcy) |[jsanchez034](https://github.com/jsanchez034) |[jonathanarbely](https://github.com/jonathanarbely) |[jderrough](https://github.com/jderrough) |[jorgeepc](https://github.com/jorgeepc) | +[xhocquet](https://github.com/xhocquet) |[willycamargo](https://github.com/willycamargo) |[weston-sankey-mark43](https://github.com/weston-sankey-mark43) |[dwnste](https://github.com/dwnste) |[nagyv](https://github.com/nagyv) |[stiig](https://github.com/stiig) | :---: |:---: |:---: |:---: |:---: |:---: | -[chromacoma](https://github.com/chromacoma) |[Jokcy](https://github.com/Jokcy) |[jsanchez034](https://github.com/jsanchez034) |[jonathanarbely](https://github.com/jonathanarbely) |[jderrough](https://github.com/jderrough) |[jorgeepc](https://github.com/jorgeepc) | +[xhocquet](https://github.com/xhocquet) |[willycamargo](https://github.com/willycamargo) |[weston-sankey-mark43](https://github.com/weston-sankey-mark43) |[dwnste](https://github.com/dwnste) |[nagyv](https://github.com/nagyv) |[stiig](https://github.com/stiig) | -[jszobody](https://github.com/jszobody) |[jbelej](https://github.com/jbelej) |[jcalonso](https://github.com/jcalonso) |[jmontoyaa](https://github.com/jmontoyaa) |[mellow-fellow](https://github.com/mellow-fellow) |[jvelten](https://github.com/jvelten) | +[valentinoli](https://github.com/valentinoli) |[vially](https://github.com/vially) |[trivikr](https://github.com/trivikr) |[top-master](https://github.com/top-master) |[tvaliasek](https://github.com/tvaliasek) |[tomekp](https://github.com/tomekp) | :---: |:---: |:---: |:---: |:---: |:---: | -[jszobody](https://github.com/jszobody) |[jbelej](https://github.com/jbelej) |[jcalonso](https://github.com/jcalonso) |[jmontoyaa](https://github.com/jmontoyaa) |[mellow-fellow](https://github.com/mellow-fellow) |[jvelten](https://github.com/jvelten) | +[valentinoli](https://github.com/valentinoli) |[vially](https://github.com/vially) |[trivikr](https://github.com/trivikr) |[top-master](https://github.com/top-master) |[tvaliasek](https://github.com/tvaliasek) |[tomekp](https://github.com/tomekp) | -[tykarol](https://github.com/tykarol) |[kaspermeinema](https://github.com/kaspermeinema) |[firesharkstudios](https://github.com/firesharkstudios) |[kergekacsa](https://github.com/kergekacsa) |[kevin-west-10x](https://github.com/kevin-west-10x) |[kidonng](https://github.com/kidonng) | +[tomsaleeba](https://github.com/tomsaleeba) |[WIStudent](https://github.com/WIStudent) |[tmaier](https://github.com/tmaier) |[twarlop](https://github.com/twarlop) |[tcgj](https://github.com/tcgj) |[dkisic](https://github.com/dkisic) | :---: |:---: |:---: |:---: |:---: |:---: | -[tykarol](https://github.com/tykarol) |[kaspermeinema](https://github.com/kaspermeinema) |[firesharkstudios](https://github.com/firesharkstudios) |[kergekacsa](https://github.com/kergekacsa) |[kevin-west-10x](https://github.com/kevin-west-10x) |[kidonng](https://github.com/kidonng) | +[tomsaleeba](https://github.com/tomsaleeba) |[WIStudent](https://github.com/WIStudent) |[tmaier](https://github.com/tmaier) |[twarlop](https://github.com/twarlop) |[tcgj](https://github.com/tcgj) |[dkisic](https://github.com/dkisic) | -[elkebab](https://github.com/elkebab) |[kyleparisi](https://github.com/kyleparisi) |[labohkip81](https://github.com/labohkip81) |[hoangbits](https://github.com/hoangbits) |[leaanthony](https://github.com/leaanthony) |[larowlan](https://github.com/larowlan) | +[craigcbrunner](https://github.com/craigcbrunner) |[codehero7386](https://github.com/codehero7386) |[christianwengert](https://github.com/christianwengert) |[cgoinglove](https://github.com/cgoinglove) |[canvasbh](https://github.com/canvasbh) |[c0b41](https://github.com/c0b41) | :---: |:---: |:---: |:---: |:---: |:---: | -[elkebab](https://github.com/elkebab) |[kyleparisi](https://github.com/kyleparisi) |[labohkip81](https://github.com/labohkip81) |[hoangbits](https://github.com/hoangbits) |[leaanthony](https://github.com/leaanthony) |[larowlan](https://github.com/larowlan) | +[craigcbrunner](https://github.com/craigcbrunner) |[codehero7386](https://github.com/codehero7386) |[christianwengert](https://github.com/christianwengert) |[cgoinglove](https://github.com/cgoinglove) |[canvasbh](https://github.com/canvasbh) |[c0b41](https://github.com/c0b41) | -[dviry](https://github.com/dviry) |[galli-leo](https://github.com/galli-leo) |[leods92](https://github.com/leods92) |[leomelzer](https://github.com/leomelzer) |[dolphinigle](https://github.com/dolphinigle) |[louim](https://github.com/louim) | +[avalla](https://github.com/avalla) |[arggh](https://github.com/arggh) |[alfatv](https://github.com/alfatv) |[agreene-coursera](https://github.com/agreene-coursera) |[aduh95-test-account](https://github.com/aduh95-test-account) |[sartoshi-foot-dao](https://github.com/sartoshi-foot-dao) | :---: |:---: |:---: |:---: |:---: |:---: | -[dviry](https://github.com/dviry) |[galli-leo](https://github.com/galli-leo) |[leods92](https://github.com/leods92) |[leomelzer](https://github.com/leomelzer) |[dolphinigle](https://github.com/dolphinigle) |[louim](https://github.com/louim) | +[avalla](https://github.com/avalla) |[arggh](https://github.com/arggh) |[alfatv](https://github.com/alfatv) |[agreene-coursera](https://github.com/agreene-coursera) |[aduh95-test-account](https://github.com/aduh95-test-account) |[sartoshi-foot-dao](https://github.com/sartoshi-foot-dao) | -[ombr](https://github.com/ombr) |[lucaperret](https://github.com/lucaperret) |[lucax88x](https://github.com/lucax88x) |[Lucklj521](https://github.com/Lucklj521) |[marc-mabe](https://github.com/marc-mabe) |[onhate](https://github.com/onhate) | +[zackbloom](https://github.com/zackbloom) |[zlawson-ut](https://github.com/zlawson-ut) |[zachconner](https://github.com/zachconner) |[YehudaKremer](https://github.com/YehudaKremer) |[marc-mabe](https://github.com/marc-mabe) |[Cruaier](https://github.com/Cruaier) | :---: |:---: |:---: |:---: |:---: |:---: | -[ombr](https://github.com/ombr) |[lucaperret](https://github.com/lucaperret) |[lucax88x](https://github.com/lucax88x) |[Lucklj521](https://github.com/Lucklj521) |[marc-mabe](https://github.com/marc-mabe) |[onhate](https://github.com/onhate) | +[zackbloom](https://github.com/zackbloom) |[zlawson-ut](https://github.com/zlawson-ut) |[zachconner](https://github.com/zachconner) |[YehudaKremer](https://github.com/YehudaKremer) |[marc-mabe](https://github.com/marc-mabe) |[Cruaier](https://github.com/Cruaier) | -[mperrando](https://github.com/mperrando) |[marcosthejew](https://github.com/marcosthejew) |[marcusforsberg](https://github.com/marcusforsberg) |[martin-brennan](https://github.com/martin-brennan) |[masaok](https://github.com/masaok) |[masumulu28](https://github.com/masumulu28) | +[sercraig](https://github.com/sercraig) |[ardeois](https://github.com/ardeois) |[CommanderRoot](https://github.com/CommanderRoot) |[czj](https://github.com/czj) |[cbush06](https://github.com/cbush06) |[Aarbel](https://github.com/Aarbel) | :---: |:---: |:---: |:---: |:---: |:---: | -[mperrando](https://github.com/mperrando) |[marcosthejew](https://github.com/marcosthejew) |[marcusforsberg](https://github.com/marcusforsberg) |[martin-brennan](https://github.com/martin-brennan) |[masaok](https://github.com/masaok) |[masumulu28](https://github.com/masumulu28) | +[sercraig](https://github.com/sercraig) |[ardeois](https://github.com/ardeois) |[CommanderRoot](https://github.com/CommanderRoot) |[czj](https://github.com/czj) |[cbush06](https://github.com/cbush06) |[Aarbel](https://github.com/Aarbel) | -[mateuscruz](https://github.com/mateuscruz) |[mattfik](https://github.com/mattfik) |[mjesuele](https://github.com/mjesuele) |[matthewhartstonge](https://github.com/matthewhartstonge) |[mauricioribeiro](https://github.com/mauricioribeiro) |[hrsh](https://github.com/hrsh) | +[cfra](https://github.com/cfra) |[csprance](https://github.com/csprance) |[prattcmp](https://github.com/prattcmp) |[charlybillaud](https://github.com/charlybillaud) |[Cretezy](https://github.com/Cretezy) |[chao](https://github.com/chao) | :---: |:---: |:---: |:---: |:---: |:---: | -[mateuscruz](https://github.com/mateuscruz) |[mattfik](https://github.com/mattfik) |[mjesuele](https://github.com/mjesuele) |[matthewhartstonge](https://github.com/matthewhartstonge) |[mauricioribeiro](https://github.com/mauricioribeiro) |[hrsh](https://github.com/hrsh) | +[cfra](https://github.com/cfra) |[csprance](https://github.com/csprance) |[prattcmp](https://github.com/prattcmp) |[charlybillaud](https://github.com/charlybillaud) |[Cretezy](https://github.com/Cretezy) |[chao](https://github.com/chao) | -[mhulet](https://github.com/mhulet) |[mkopinsky](https://github.com/mkopinsky) |[ken-kuro](https://github.com/ken-kuro) |[achmiral](https://github.com/achmiral) |[boudra](https://github.com/boudra) |[mnafees](https://github.com/mnafees) | +[cellvinchung](https://github.com/cellvinchung) |[cartfisk](https://github.com/cartfisk) |[cyu](https://github.com/cyu) |[bryanjswift](https://github.com/bryanjswift) |[elliotdickison](https://github.com/elliotdickison) |[eliOcs](https://github.com/eliOcs) | :---: |:---: |:---: |:---: |:---: |:---: | -[mhulet](https://github.com/mhulet) |[mkopinsky](https://github.com/mkopinsky) |[ken-kuro](https://github.com/ken-kuro) |[achmiral](https://github.com/achmiral) |[boudra](https://github.com/boudra) |[mnafees](https://github.com/mnafees) | +[cellvinchung](https://github.com/cellvinchung) |[cartfisk](https://github.com/cartfisk) |[cyu](https://github.com/cyu) |[bryanjswift](https://github.com/bryanjswift) |[elliotdickison](https://github.com/elliotdickison) |[eliOcs](https://github.com/eliOcs) | -[shahimclt](https://github.com/shahimclt) |[mogzol](https://github.com/mogzol) |[navruzm](https://github.com/navruzm) |[marton-laszlo-attila](https://github.com/marton-laszlo-attila) |[pleasespammelater](https://github.com/pleasespammelater) |[naveed-ahmad](https://github.com/naveed-ahmad) | +[yoldar](https://github.com/yoldar) |[efbautista](https://github.com/efbautista) |[emuell](https://github.com/emuell) |[EdgarSantiago93](https://github.com/EdgarSantiago93) |[sweetro](https://github.com/sweetro) |[jeetiss](https://github.com/jeetiss) | :---: |:---: |:---: |:---: |:---: |:---: | -[shahimclt](https://github.com/shahimclt) |[mogzol](https://github.com/mogzol) |[navruzm](https://github.com/navruzm) |[marton-laszlo-attila](https://github.com/marton-laszlo-attila) |[pleasespammelater](https://github.com/pleasespammelater) |[naveed-ahmad](https://github.com/naveed-ahmad) | +[yoldar](https://github.com/yoldar) |[efbautista](https://github.com/efbautista) |[emuell](https://github.com/emuell) |[EdgarSantiago93](https://github.com/EdgarSantiago93) |[sweetro](https://github.com/sweetro) |[jeetiss](https://github.com/jeetiss) | -[trungcva10a6tn](https://github.com/trungcva10a6tn) |[nicojones](https://github.com/nicojones) |[coreprocess](https://github.com/coreprocess) |[nil1511](https://github.com/nil1511) |[leftdevel](https://github.com/leftdevel) |[Ozodbek1405](https://github.com/Ozodbek1405) | +[DennisKofflard](https://github.com/DennisKofflard) |[davilima6](https://github.com/davilima6) |[akizor](https://github.com/akizor) |[KaminskiDaniell](https://github.com/KaminskiDaniell) |[Cantabar](https://github.com/Cantabar) |[mrboomer](https://github.com/mrboomer) | :---: |:---: |:---: |:---: |:---: |:---: | -[trungcva10a6tn](https://github.com/trungcva10a6tn) |[nicojones](https://github.com/nicojones) |[coreprocess](https://github.com/coreprocess) |[nil1511](https://github.com/nil1511) |[leftdevel](https://github.com/leftdevel) |[Ozodbek1405](https://github.com/Ozodbek1405) | +[DennisKofflard](https://github.com/DennisKofflard) |[davilima6](https://github.com/davilima6) |[akizor](https://github.com/akizor) |[KaminskiDaniell](https://github.com/KaminskiDaniell) |[Cantabar](https://github.com/Cantabar) |[mrboomer](https://github.com/mrboomer) | -[cryptic022](https://github.com/cryptic022) |[ParsaArvanehPA](https://github.com/ParsaArvanehPA) |[pascalwengerter](https://github.com/pascalwengerter) |[patricklindsay](https://github.com/patricklindsay) |[plneto](https://github.com/plneto) |[pedrofs](https://github.com/pedrofs) | +[danilat](https://github.com/danilat) |[danschalow](https://github.com/danschalow) |[danmichaelo](https://github.com/danmichaelo) |[bedgerotto](https://github.com/bedgerotto) |[functino](https://github.com/functino) |[amitport](https://github.com/amitport) | :---: |:---: |:---: |:---: |:---: |:---: | -[cryptic022](https://github.com/cryptic022) |[ParsaArvanehPA](https://github.com/ParsaArvanehPA) |[pascalwengerter](https://github.com/pascalwengerter) |[patricklindsay](https://github.com/patricklindsay) |[plneto](https://github.com/plneto) |[pedrofs](https://github.com/pedrofs) | +[danilat](https://github.com/danilat) |[danschalow](https://github.com/danschalow) |[danmichaelo](https://github.com/danmichaelo) |[bedgerotto](https://github.com/bedgerotto) |[functino](https://github.com/functino) |[amitport](https://github.com/amitport) | -[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) | +[tekacs](https://github.com/tekacs) |[Dogfalo](https://github.com/Dogfalo) |[aalepis](https://github.com/aalepis) |[alexnj](https://github.com/alexnj) |[asmt3](https://github.com/asmt3) |[ahmadissa](https://github.com/ahmadissa) | :---: |:---: |:---: |:---: |:---: |:---: | -[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) | +[tekacs](https://github.com/tekacs) |[Dogfalo](https://github.com/Dogfalo) |[aalepis](https://github.com/aalepis) |[alexnj](https://github.com/alexnj) |[asmt3](https://github.com/asmt3) |[ahmadissa](https://github.com/ahmadissa) | -[raulibanez](https://github.com/raulibanez) |[refo](https://github.com/refo) |[SxDx](https://github.com/SxDx) |[robwilson1](https://github.com/robwilson1) |[scherroman](https://github.com/scherroman) |[rossng](https://github.com/rossng) | +[adritasharma](https://github.com/adritasharma) |[Adrrei](https://github.com/Adrrei) |[adityapatadia](https://github.com/adityapatadia) |[adamvigneault](https://github.com/adamvigneault) |[ajh-sr](https://github.com/ajh-sr) |[adamdottv](https://github.com/adamdottv) | :---: |:---: |:---: |:---: |:---: |:---: | -[raulibanez](https://github.com/raulibanez) |[refo](https://github.com/refo) |[SxDx](https://github.com/SxDx) |[robwilson1](https://github.com/robwilson1) |[scherroman](https://github.com/scherroman) |[rossng](https://github.com/rossng) | +[adritasharma](https://github.com/adritasharma) |[Adrrei](https://github.com/Adrrei) |[adityapatadia](https://github.com/adityapatadia) |[adamvigneault](https://github.com/adamvigneault) |[ajh-sr](https://github.com/ajh-sr) |[adamdottv](https://github.com/adamdottv) | -[rart](https://github.com/rart) |[GNURub](https://github.com/GNURub) |[fortunto2](https://github.com/fortunto2) |[samuelcolburn](https://github.com/samuelcolburn) |[sdebacker](https://github.com/sdebacker) |[sebasegovia01](https://github.com/sebasegovia01) | +[abannach](https://github.com/abannach) |[superhawk610](https://github.com/superhawk610) |[ajschmidt8](https://github.com/ajschmidt8) |[wbaaron](https://github.com/wbaaron) |[Quorafind](https://github.com/Quorafind) |[bducharme](https://github.com/bducharme) | :---: |:---: |:---: |:---: |:---: |:---: | -[rart](https://github.com/rart) |[GNURub](https://github.com/GNURub) |[fortunto2](https://github.com/fortunto2) |[samuelcolburn](https://github.com/samuelcolburn) |[sdebacker](https://github.com/sdebacker) |[sebasegovia01](https://github.com/sebasegovia01) | +[abannach](https://github.com/abannach) |[superhawk610](https://github.com/superhawk610) |[ajschmidt8](https://github.com/ajschmidt8) |[wbaaron](https://github.com/wbaaron) |[Quorafind](https://github.com/Quorafind) |[bducharme](https://github.com/bducharme) | -[sergei-zelinsky](https://github.com/sergei-zelinsky) |[szh](https://github.com/szh) |[SpazzMarticus](https://github.com/SpazzMarticus) |[waptik](https://github.com/waptik) |[quigebo](https://github.com/quigebo) |[amaitu](https://github.com/amaitu) | +[azizk](https://github.com/azizk) |[azeemba](https://github.com/azeemba) |[ayhankesicioglu](https://github.com/ayhankesicioglu) |[atsawin](https://github.com/atsawin) |[ash-jc-allen](https://github.com/ash-jc-allen) |[apuyou](https://github.com/apuyou) | :---: |:---: |:---: |:---: |:---: |:---: | -[sergei-zelinsky](https://github.com/sergei-zelinsky) |[szh](https://github.com/szh) |[SpazzMarticus](https://github.com/SpazzMarticus) |[waptik](https://github.com/waptik) |[quigebo](https://github.com/quigebo) |[amaitu](https://github.com/amaitu) | +[azizk](https://github.com/azizk) |[azeemba](https://github.com/azeemba) |[ayhankesicioglu](https://github.com/ayhankesicioglu) |[atsawin](https://github.com/atsawin) |[ash-jc-allen](https://github.com/ash-jc-allen) |[apuyou](https://github.com/apuyou) | -[steverob](https://github.com/steverob) |[sjauld](https://github.com/sjauld) |[strayer](https://github.com/strayer) |[taj](https://github.com/taj) |[Tashows](https://github.com/Tashows) |[tcgj](https://github.com/tcgj) | +[arthurdenner](https://github.com/arthurdenner) |[Abourass](https://github.com/Abourass) |[tyndria](https://github.com/tyndria) |[anthony0030](https://github.com/anthony0030) |[andychongyz](https://github.com/andychongyz) |[andrii-bodnar](https://github.com/andrii-bodnar) | :---: |:---: |:---: |:---: |:---: |:---: | -[steverob](https://github.com/steverob) |[sjauld](https://github.com/sjauld) |[strayer](https://github.com/strayer) |[taj](https://github.com/taj) |[Tashows](https://github.com/Tashows) |[tcgj](https://github.com/tcgj) | +[arthurdenner](https://github.com/arthurdenner) |[Abourass](https://github.com/Abourass) |[tyndria](https://github.com/tyndria) |[anthony0030](https://github.com/anthony0030) |[andychongyz](https://github.com/andychongyz) |[andrii-bodnar](https://github.com/andrii-bodnar) | -[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) |[tvaliasek](https://github.com/tvaliasek) | +[superandrew213](https://github.com/superandrew213) |[radarhere](https://github.com/radarhere) |[kevin-west-10x](https://github.com/kevin-west-10x) |[kergekacsa](https://github.com/kergekacsa) |[firesharkstudios](https://github.com/firesharkstudios) |[kaspermeinema](https://github.com/kaspermeinema) | :---: |:---: |:---: |:---: |:---: |:---: | -[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) |[tvaliasek](https://github.com/tvaliasek) | +[superandrew213](https://github.com/superandrew213) |[radarhere](https://github.com/radarhere) |[kevin-west-10x](https://github.com/kevin-west-10x) |[kergekacsa](https://github.com/kergekacsa) |[firesharkstudios](https://github.com/firesharkstudios) |[kaspermeinema](https://github.com/kaspermeinema) | -[top-master](https://github.com/top-master) |[trivikr](https://github.com/trivikr) |[vially](https://github.com/vially) |[valentinoli](https://github.com/valentinoli) |[stiig](https://github.com/stiig) |[nagyv](https://github.com/nagyv) | +[tykarol](https://github.com/tykarol) |[jvelten](https://github.com/jvelten) |[mellow-fellow](https://github.com/mellow-fellow) |[jmontoyaa](https://github.com/jmontoyaa) |[jcalonso](https://github.com/jcalonso) |[jbelej](https://github.com/jbelej) | :---: |:---: |:---: |:---: |:---: |:---: | -[top-master](https://github.com/top-master) |[trivikr](https://github.com/trivikr) |[vially](https://github.com/vially) |[valentinoli](https://github.com/valentinoli) |[stiig](https://github.com/stiig) |[nagyv](https://github.com/nagyv) | +[tykarol](https://github.com/tykarol) |[jvelten](https://github.com/jvelten) |[mellow-fellow](https://github.com/mellow-fellow) |[jmontoyaa](https://github.com/jmontoyaa) |[jcalonso](https://github.com/jcalonso) |[jbelej](https://github.com/jbelej) | -[dwnste](https://github.com/dwnste) |[weston-sankey-mark43](https://github.com/weston-sankey-mark43) |[willycamargo](https://github.com/willycamargo) |[xhocquet](https://github.com/xhocquet) |[YehudaKremer](https://github.com/YehudaKremer) |[zachconner](https://github.com/zachconner) | +[jszobody](https://github.com/jszobody) |[jorgeepc](https://github.com/jorgeepc) |[jderrough](https://github.com/jderrough) |[jonathanarbely](https://github.com/jonathanarbely) |[jsanchez034](https://github.com/jsanchez034) |[Jokcy](https://github.com/Jokcy) | :---: |:---: |:---: |:---: |:---: |:---: | -[dwnste](https://github.com/dwnste) |[weston-sankey-mark43](https://github.com/weston-sankey-mark43) |[willycamargo](https://github.com/willycamargo) |[xhocquet](https://github.com/xhocquet) |[YehudaKremer](https://github.com/YehudaKremer) |[zachconner](https://github.com/zachconner) | +[jszobody](https://github.com/jszobody) |[jorgeepc](https://github.com/jorgeepc) |[jderrough](https://github.com/jderrough) |[jonathanarbely](https://github.com/jonathanarbely) |[jsanchez034](https://github.com/jsanchez034) |[Jokcy](https://github.com/Jokcy) | -[zlawson-ut](https://github.com/zlawson-ut) |[zackbloom](https://github.com/zackbloom) |[sartoshi-foot-dao](https://github.com/sartoshi-foot-dao) |[aduh95-test-account](https://github.com/aduh95-test-account) |[agreene-coursera](https://github.com/agreene-coursera) |[alfatv](https://github.com/alfatv) | +[chromacoma](https://github.com/chromacoma) |[Lucklj521](https://github.com/Lucklj521) |[lucax88x](https://github.com/lucax88x) |[lucaperret](https://github.com/lucaperret) |[ombr](https://github.com/ombr) |[louim](https://github.com/louim) | :---: |:---: |:---: |:---: |:---: |:---: | -[zlawson-ut](https://github.com/zlawson-ut) |[zackbloom](https://github.com/zackbloom) |[sartoshi-foot-dao](https://github.com/sartoshi-foot-dao) |[aduh95-test-account](https://github.com/aduh95-test-account) |[agreene-coursera](https://github.com/agreene-coursera) |[alfatv](https://github.com/alfatv) | +[chromacoma](https://github.com/chromacoma) |[Lucklj521](https://github.com/Lucklj521) |[lucax88x](https://github.com/lucax88x) |[lucaperret](https://github.com/lucaperret) |[ombr](https://github.com/ombr) |[louim](https://github.com/louim) | -[arggh](https://github.com/arggh) |[avalla](https://github.com/avalla) |[c0b41](https://github.com/c0b41) |[canvasbh](https://github.com/canvasbh) |[cgoinglove](https://github.com/cgoinglove) |[christianwengert](https://github.com/christianwengert) | +[dolphinigle](https://github.com/dolphinigle) |[leomelzer](https://github.com/leomelzer) |[leods92](https://github.com/leods92) |[galli-leo](https://github.com/galli-leo) |[dviry](https://github.com/dviry) |[larowlan](https://github.com/larowlan) | :---: |:---: |:---: |:---: |:---: |:---: | -[arggh](https://github.com/arggh) |[avalla](https://github.com/avalla) |[c0b41](https://github.com/c0b41) |[canvasbh](https://github.com/canvasbh) |[cgoinglove](https://github.com/cgoinglove) |[christianwengert](https://github.com/christianwengert) | +[dolphinigle](https://github.com/dolphinigle) |[leomelzer](https://github.com/leomelzer) |[leods92](https://github.com/leods92) |[galli-leo](https://github.com/galli-leo) |[dviry](https://github.com/dviry) |[larowlan](https://github.com/larowlan) | -[codehero7386](https://github.com/codehero7386) |[craigcbrunner](https://github.com/craigcbrunner) |[darthf1](https://github.com/darthf1) |[dkisic](https://github.com/dkisic) |[dzcpy](https://github.com/dzcpy) |[elliotsayes](https://github.com/elliotsayes) | +[leaanthony](https://github.com/leaanthony) |[hoangbits](https://github.com/hoangbits) |[labohkip81](https://github.com/labohkip81) |[kyleparisi](https://github.com/kyleparisi) |[elkebab](https://github.com/elkebab) |[kidonng](https://github.com/kidonng) | :---: |:---: |:---: |:---: |:---: |:---: | -[codehero7386](https://github.com/codehero7386) |[craigcbrunner](https://github.com/craigcbrunner) |[darthf1](https://github.com/darthf1) |[dkisic](https://github.com/dkisic) |[dzcpy](https://github.com/dzcpy) |[elliotsayes](https://github.com/elliotsayes) | +[leaanthony](https://github.com/leaanthony) |[hoangbits](https://github.com/hoangbits) |[labohkip81](https://github.com/labohkip81) |[kyleparisi](https://github.com/kyleparisi) |[elkebab](https://github.com/elkebab) |[kidonng](https://github.com/kidonng) | -[fingul](https://github.com/fingul) |[franckl](https://github.com/franckl) |[frederikhors](https://github.com/frederikhors) |[gaelicwinter](https://github.com/gaelicwinter) |[green-mike](https://github.com/green-mike) |[hxgf](https://github.com/hxgf) | +[profsmallpine](https://github.com/profsmallpine) |[ishendyweb](https://github.com/ishendyweb) |[IanVS](https://github.com/IanVS) |[huydod](https://github.com/huydod) |[HussainAlkhalifah](https://github.com/HussainAlkhalifah) |[HughbertD](https://github.com/HughbertD) | :---: |:---: |:---: |:---: |:---: |:---: | -[fingul](https://github.com/fingul) |[franckl](https://github.com/franckl) |[frederikhors](https://github.com/frederikhors) |[gaelicwinter](https://github.com/gaelicwinter) |[green-mike](https://github.com/green-mike) |[hxgf](https://github.com/hxgf) | +[profsmallpine](https://github.com/profsmallpine) |[ishendyweb](https://github.com/ishendyweb) |[IanVS](https://github.com/IanVS) |[huydod](https://github.com/huydod) |[HussainAlkhalifah](https://github.com/HussainAlkhalifah) |[HughbertD](https://github.com/HughbertD) | -[johnmanjiro13](https://github.com/johnmanjiro13) |[jur-ng](https://github.com/jur-ng) |[sontixyou](https://github.com/sontixyou) |[kode-ninja](https://github.com/kode-ninja) |[jx-zyf](https://github.com/jx-zyf) |[magumbo](https://github.com/magumbo) | +[giacomocerquone](https://github.com/giacomocerquone) |[roenschg](https://github.com/roenschg) |[gjungb](https://github.com/gjungb) |[geoffappleford](https://github.com/geoffappleford) |[gabiganam](https://github.com/gabiganam) |[fuadscodes](https://github.com/fuadscodes) | :---: |:---: |:---: |:---: |:---: |:---: | -[johnmanjiro13](https://github.com/johnmanjiro13) |[jur-ng](https://github.com/jur-ng) |[sontixyou](https://github.com/sontixyou) |[kode-ninja](https://github.com/kode-ninja) |[jx-zyf](https://github.com/jx-zyf) |[magumbo](https://github.com/magumbo) | +[giacomocerquone](https://github.com/giacomocerquone) |[roenschg](https://github.com/roenschg) |[gjungb](https://github.com/gjungb) |[geoffappleford](https://github.com/geoffappleford) |[gabiganam](https://github.com/gabiganam) |[fuadscodes](https://github.com/fuadscodes) | -[mdxiaohu](https://github.com/mdxiaohu) |[maddy-jo](https://github.com/maddy-jo) |[mosi-kha](https://github.com/mosi-kha) |[neuronet77](https://github.com/neuronet77) |[ninesalt](https://github.com/ninesalt) |[odselsevier](https://github.com/odselsevier) | +[dtrucs](https://github.com/dtrucs) |[ferdiusa](https://github.com/ferdiusa) |[fgallinari](https://github.com/fgallinari) |[Gkleinereva](https://github.com/Gkleinereva) |[epexa](https://github.com/epexa) |[EnricoSottile](https://github.com/EnricoSottile) | :---: |:---: |:---: |:---: |:---: |:---: | -[mdxiaohu](https://github.com/mdxiaohu) |[maddy-jo](https://github.com/maddy-jo) |[mosi-kha](https://github.com/mosi-kha) |[neuronet77](https://github.com/neuronet77) |[ninesalt](https://github.com/ninesalt) |[odselsevier](https://github.com/odselsevier) | +[dtrucs](https://github.com/dtrucs) |[ferdiusa](https://github.com/ferdiusa) |[fgallinari](https://github.com/fgallinari) |[Gkleinereva](https://github.com/Gkleinereva) |[epexa](https://github.com/epexa) |[EnricoSottile](https://github.com/EnricoSottile) | -[ordago](https://github.com/ordago) |[phil714](https://github.com/phil714) |[luntta](https://github.com/luntta) |[rhymes](https://github.com/rhymes) |[rlebosse](https://github.com/rlebosse) |[rmoura-92](https://github.com/rmoura-92) | +[theJoeBiz](https://github.com/theJoeBiz) |[Jmales](https://github.com/Jmales) |[jessica-coursera](https://github.com/jessica-coursera) |[vith](https://github.com/vith) |[janwilts](https://github.com/janwilts) |[janklimo](https://github.com/janklimo) | :---: |:---: |:---: |:---: |:---: |:---: | -[ordago](https://github.com/ordago) |[phil714](https://github.com/phil714) |[luntta](https://github.com/luntta) |[rhymes](https://github.com/rhymes) |[rlebosse](https://github.com/rlebosse) |[rmoura-92](https://github.com/rmoura-92) | +[theJoeBiz](https://github.com/theJoeBiz) |[Jmales](https://github.com/Jmales) |[jessica-coursera](https://github.com/jessica-coursera) |[vith](https://github.com/vith) |[janwilts](https://github.com/janwilts) |[janklimo](https://github.com/janklimo) | -[rtaieb](https://github.com/rtaieb) |[slawexxx44](https://github.com/slawexxx44) |[stduhpf](https://github.com/stduhpf) |[thanhthot](https://github.com/thanhthot) |[tusharjkhunt](https://github.com/tusharjkhunt) |[vedran555](https://github.com/vedran555) | +[jamestiotio](https://github.com/jamestiotio) |[jcjmcclean](https://github.com/jcjmcclean) |[Jbithell](https://github.com/Jbithell) |[JakubHaladej](https://github.com/JakubHaladej) |[jakemcallister](https://github.com/jakemcallister) |[gaejabong](https://github.com/gaejabong) | :---: |:---: |:---: |:---: |:---: |:---: | -[rtaieb](https://github.com/rtaieb) |[slawexxx44](https://github.com/slawexxx44) |[stduhpf](https://github.com/stduhpf) |[thanhthot](https://github.com/thanhthot) |[tusharjkhunt](https://github.com/tusharjkhunt) |[vedran555](https://github.com/vedran555) | +[jamestiotio](https://github.com/jamestiotio) |[jcjmcclean](https://github.com/jcjmcclean) |[Jbithell](https://github.com/Jbithell) |[JakubHaladej](https://github.com/JakubHaladej) |[jakemcallister](https://github.com/jakemcallister) |[gaejabong](https://github.com/gaejabong) | -[yoann-hellopret](https://github.com/yoann-hellopret) |[olitomas](https://github.com/olitomas) |[JimmyLv](https://github.com/JimmyLv) | -:---: |:---: |:---: | -[yoann-hellopret](https://github.com/yoann-hellopret) |[olitomas](https://github.com/olitomas) |[JimmyLv](https://github.com/JimmyLv) | +[JacobMGEvans](https://github.com/JacobMGEvans) |[mazoruss](https://github.com/mazoruss) |[GreenJimmy](https://github.com/GreenJimmy) |[intenzive](https://github.com/intenzive) |[NaxYo](https://github.com/NaxYo) | +:---: |:---: |:---: |:---: |:---: | +[JacobMGEvans](https://github.com/JacobMGEvans) |[mazoruss](https://github.com/mazoruss) |[GreenJimmy](https://github.com/GreenJimmy) |[intenzive](https://github.com/intenzive) |[NaxYo](https://github.com/NaxYo) | diff --git a/examples/aws-nodejs/public/drag.html b/examples/aws-nodejs/public/drag.html index 02a9a8f428..3b7e4ee19b 100644 --- a/examples/aws-nodejs/public/drag.html +++ b/examples/aws-nodejs/public/drag.html @@ -4,7 +4,7 @@ Uppy @@ -22,7 +22,7 @@
Uploaded files:
DragDrop, ProgressBar, AwsS3, - } from 'https://releases.transloadit.com/uppy/v3.21.0/uppy.min.mjs' + } from 'https://releases.transloadit.com/uppy/v3.22.0/uppy.min.mjs' // Function for displaying uploaded files const onUploadSuccess = (elForUploadedFiles) => (file, response) => { diff --git a/examples/aws-nodejs/public/index.html b/examples/aws-nodejs/public/index.html index 1df29ed258..73a5a1b654 100644 --- a/examples/aws-nodejs/public/index.html +++ b/examples/aws-nodejs/public/index.html @@ -4,7 +4,7 @@ Uppy – AWS upload example @@ -16,7 +16,7 @@

AWS upload example

Uppy, Dashboard, AwsS3, - } from 'https://releases.transloadit.com/uppy/v3.21.0/uppy.min.mjs' + } from 'https://releases.transloadit.com/uppy/v3.22.0/uppy.min.mjs' /** * This generator transforms a deep object into URL-encodable pairs * to work with `URLSearchParams` on the client and `body-parser` on the server. diff --git a/examples/cdn-example/index.html b/examples/cdn-example/index.html index da5e8aab50..cb05ea7183 100644 --- a/examples/cdn-example/index.html +++ b/examples/cdn-example/index.html @@ -5,7 +5,7 @@ @@ -19,7 +19,7 @@ Dashboard, Webcam, Tus, - } from 'https://releases.transloadit.com/uppy/v3.21.0/uppy.min.mjs' + } from 'https://releases.transloadit.com/uppy/v3.22.0/uppy.min.mjs' const uppy = new Uppy({ debug: true, autoProceed: false }) .use(Dashboard, { trigger: '#uppyModalOpener' }) @@ -34,7 +34,7 @@ @@ -19,7 +19,7 @@ Instagram, GoogleDrive, Tus, - } from 'https://releases.transloadit.com/uppy/v3.21.0/uppy.min.mjs' + } from 'https://releases.transloadit.com/uppy/v3.22.0/uppy.min.mjs' const uppy = new Uppy({ debug: true, autoProceed: false }) .use(Dashboard, { trigger: '#uppyModalOpener' }) diff --git a/packages/@uppy/audio/CHANGELOG.md b/packages/@uppy/audio/CHANGELOG.md index b3cd2908c6..c2f69e86c1 100644 --- a/packages/@uppy/audio/CHANGELOG.md +++ b/packages/@uppy/audio/CHANGELOG.md @@ -1,5 +1,13 @@ # @uppy/audio +## 1.1.5 + +Released: 2024-02-19 +Included in: Uppy v3.22.0 + +- @uppy/audio: fix `audiooptions` (antoine du hamel / #4884) +- @uppy/audio: refactor to typescript (antoine du hamel / #4860) + ## 1.0.4 Released: 2023-02-13 diff --git a/packages/@uppy/audio/package.json b/packages/@uppy/audio/package.json index 0d9b3f3c9c..03e12a5c78 100644 --- a/packages/@uppy/audio/package.json +++ b/packages/@uppy/audio/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/audio", "description": "Uppy plugin that records audio using the device’s microphone.", - "version": "1.1.4", + "version": "1.1.5", "license": "MIT", "main": "lib/index.js", "style": "dist/style.min.css", diff --git a/packages/@uppy/aws-s3-multipart/package.json b/packages/@uppy/aws-s3-multipart/package.json index 739b331577..5c746a8d5c 100644 --- a/packages/@uppy/aws-s3-multipart/package.json +++ b/packages/@uppy/aws-s3-multipart/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/aws-s3-multipart", "description": "Upload to Amazon S3 with Uppy and S3's Multipart upload strategy", - "version": "3.10.0", + "version": "3.10.1", "license": "MIT", "main": "lib/index.js", "type": "module", diff --git a/packages/@uppy/aws-s3/CHANGELOG.md b/packages/@uppy/aws-s3/CHANGELOG.md index dde567d661..2e06eec98b 100644 --- a/packages/@uppy/aws-s3/CHANGELOG.md +++ b/packages/@uppy/aws-s3/CHANGELOG.md @@ -1,5 +1,12 @@ # @uppy/aws-s3 +## 3.6.1 + +Released: 2024-02-19 +Included in: Uppy v3.22.0 + +- @uppy/aws-s3-multipart,@uppy/aws-s3,@uppy/companion-client,@uppy/tus,@uppy/xhr-upload: update `uppyfile` objects before emitting events (antoine du hamel / #4928) + ## 3.6.0 Released: 2023-12-12 diff --git a/packages/@uppy/aws-s3/package.json b/packages/@uppy/aws-s3/package.json index 7f52fb8a1f..eda3d94cfb 100644 --- a/packages/@uppy/aws-s3/package.json +++ b/packages/@uppy/aws-s3/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/aws-s3", "description": "Upload to Amazon S3 with Uppy", - "version": "3.6.0", + "version": "3.6.1", "license": "MIT", "main": "lib/index.js", "type": "module", diff --git a/packages/@uppy/companion-client/CHANGELOG.md b/packages/@uppy/companion-client/CHANGELOG.md index 2eea928f1f..5366c8e439 100644 --- a/packages/@uppy/companion-client/CHANGELOG.md +++ b/packages/@uppy/companion-client/CHANGELOG.md @@ -1,5 +1,15 @@ # @uppy/companion-client +## 3.7.1 + +Released: 2024-02-19 +Included in: Uppy v3.22.0 + +- @uppy/aws-s3-multipart,@uppy/aws-s3,@uppy/companion-client,@uppy/tus,@uppy/xhr-upload: update `uppyfile` objects before emitting events (antoine du hamel / #4928) +- @uppy/companion-client: fix tests and linter (antoine du hamel / #4890) +- @uppy/companion-client: migrate to ts (merlijn vos / #4864) +- @uppy/companion-client: fix `typeerror` (antoine du hamel) + ## 3.7.0 Released: 2023-12-12 diff --git a/packages/@uppy/companion-client/package.json b/packages/@uppy/companion-client/package.json index 3f6ae215f6..716d7da0a8 100644 --- a/packages/@uppy/companion-client/package.json +++ b/packages/@uppy/companion-client/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/companion-client", "description": "Client library for communication with Companion. Intended for use in Uppy plugins.", - "version": "3.7.0", + "version": "3.7.1", "license": "MIT", "main": "lib/index.js", "types": "types/index.d.ts", diff --git a/packages/@uppy/companion/CHANGELOG.md b/packages/@uppy/companion/CHANGELOG.md index 8c84a0e128..2fba4d1a02 100644 --- a/packages/@uppy/companion/CHANGELOG.md +++ b/packages/@uppy/companion/CHANGELOG.md @@ -1,5 +1,13 @@ # @uppy/companion +## 4.12.1 + +Released: 2024-02-19 +Included in: Uppy v3.22.0 + +- @uppy/companion: fix companion dns and allow redirects from http->https again (mikael finstad / #4895) +- @uppy/companion,@uppy/tus: bump `tus-js-client` version range (merlijn vos / #4848) + ## 4.12.0 Released: 2023-12-12 diff --git a/packages/@uppy/companion/package.json b/packages/@uppy/companion/package.json index 4c503e7755..f66f6e201c 100644 --- a/packages/@uppy/companion/package.json +++ b/packages/@uppy/companion/package.json @@ -1,6 +1,6 @@ { "name": "@uppy/companion", - "version": "4.12.0", + "version": "4.12.1", "description": "OAuth helper and remote fetcher for Uppy's (https://uppy.io) extensible file upload widget with support for drag&drop, resumable uploads, previews, restrictions, file processing/encoding, remote providers like Dropbox and Google Drive, S3 and more :dog:", "main": "lib/companion.js", "types": "lib/companion.d.ts", diff --git a/packages/@uppy/compressor/CHANGELOG.md b/packages/@uppy/compressor/CHANGELOG.md index cc1e112925..1112b2b02a 100644 --- a/packages/@uppy/compressor/CHANGELOG.md +++ b/packages/@uppy/compressor/CHANGELOG.md @@ -1,5 +1,13 @@ # @uppy/compressor +## 1.1.0 + +Released: 2024-02-19 +Included in: Uppy v3.22.0 + +- @uppy/compressor: upgrade compressorjs (merlijn vos / #4924) +- @uppy/compressor: migrate to ts (mikael finstad / #4907) + ## 1.0.3 Released: 2023-09-18 diff --git a/packages/@uppy/compressor/package.json b/packages/@uppy/compressor/package.json index d70c27bc69..3e20d722ed 100644 --- a/packages/@uppy/compressor/package.json +++ b/packages/@uppy/compressor/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/compressor", "description": "Uppy plugin that compresses images before upload, saving up to 60% in size", - "version": "1.0.5", + "version": "1.1.0", "license": "MIT", "main": "lib/index.js", "style": "dist/style.min.css", diff --git a/packages/@uppy/core/CHANGELOG.md b/packages/@uppy/core/CHANGELOG.md index f9d8cd146a..6382c74e00 100644 --- a/packages/@uppy/core/CHANGELOG.md +++ b/packages/@uppy/core/CHANGELOG.md @@ -1,5 +1,18 @@ # @uppy/core +## 3.9.0 + +Released: 2024-02-19 +Included in: Uppy v3.22.0 + +- @uppy/core: add utility type to help define plugin option types (antoine du hamel / #4885) +- @uppy/core: improve types of .use() (merlijn vos / #4882) +- @uppy/core: add `plugintarget` type and mark options as optional (antoine du hamel / #4874) +- @uppy/core: add `debuglogger` as export in manual types (antoine du hamel / #4831) +- @uppy/core: add missing requiredmetafields key in restrictions (darthf1 / #4819) +- @uppy/core: fix types (antoine du hamel / #4842) +- @uppy/core: refactor to ts (murderlon) + ## 3.8.0 Released: 2023-12-12 diff --git a/packages/@uppy/core/package.json b/packages/@uppy/core/package.json index c94447c71e..b67301b327 100644 --- a/packages/@uppy/core/package.json +++ b/packages/@uppy/core/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/core", "description": "Core module for the 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.8.0", + "version": "3.9.0", "license": "MIT", "main": "lib/index.js", "style": "dist/style.min.css", diff --git a/packages/@uppy/dashboard/CHANGELOG.md b/packages/@uppy/dashboard/CHANGELOG.md index dc17c868ad..ed0fee31ff 100644 --- a/packages/@uppy/dashboard/CHANGELOG.md +++ b/packages/@uppy/dashboard/CHANGELOG.md @@ -1,5 +1,14 @@ # @uppy/dashboard +## 3.7.2 + +Released: 2024-02-19 +Included in: Uppy v3.22.0 + +- @uppy/dashboard: autoopenfileeditor - rename "edit file" to "edit image" (evgenia karunus / #4925) +- @uppy/dashboard: Uncouple native camera and video buttons from the `disableLocalFiles` option (jake mcallister / #4894) +- @uppy/dashboard: fix `typeerror` when `file.remote` is nullish (antoine du hamel / #4825) + ## 3.7.1 Released: 2023-11-12 diff --git a/packages/@uppy/dashboard/package.json b/packages/@uppy/dashboard/package.json index 9afbc40c6a..67beaf7766 100644 --- a/packages/@uppy/dashboard/package.json +++ b/packages/@uppy/dashboard/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/dashboard", "description": "Universal UI plugin for Uppy.", - "version": "3.7.1", + "version": "3.7.2", "license": "MIT", "main": "lib/index.js", "style": "dist/style.min.css", diff --git a/packages/@uppy/drop-target/CHANGELOG.md b/packages/@uppy/drop-target/CHANGELOG.md index bda3ec19d2..6a5fb1487a 100644 --- a/packages/@uppy/drop-target/CHANGELOG.md +++ b/packages/@uppy/drop-target/CHANGELOG.md @@ -1,5 +1,12 @@ # @uppy/drop-target +## 2.0.3 + +Released: 2024-02-19 +Included in: Uppy v3.22.0 + +- @uppy/drop-target: refactor to typescript (artur paikin / #4863) + ## 2.0.1 Released: 2022-09-25 diff --git a/packages/@uppy/drop-target/package.json b/packages/@uppy/drop-target/package.json index 4539ca6ccb..21aeb41efe 100644 --- a/packages/@uppy/drop-target/package.json +++ b/packages/@uppy/drop-target/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/drop-target", "description": "Lets your users drag and drop files on a DOM element", - "version": "2.0.2", + "version": "2.0.3", "license": "MIT", "main": "lib/index.js", "type": "module", diff --git a/packages/@uppy/form/CHANGELOG.md b/packages/@uppy/form/CHANGELOG.md index 22850d6c40..4e2a8f0cf7 100644 --- a/packages/@uppy/form/CHANGELOG.md +++ b/packages/@uppy/form/CHANGELOG.md @@ -1,5 +1,12 @@ # @uppy/form +## 3.1.0 + +Released: 2024-02-19 +Included in: Uppy v3.22.0 + +- @uppy/form: use requestsubmit (merlijn vos / #4852) + ## 3.0.1 Released: 2022-09-25 diff --git a/packages/@uppy/form/package.json b/packages/@uppy/form/package.json index ca9832138f..ac96412559 100644 --- a/packages/@uppy/form/package.json +++ b/packages/@uppy/form/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/form", "description": "Connect Uppy to an existing HTML
.", - "version": "3.0.3", + "version": "3.1.0", "license": "MIT", "main": "lib/index.js", "type": "module", diff --git a/packages/@uppy/golden-retriever/package.json b/packages/@uppy/golden-retriever/package.json index dc3f12aadb..5a19e484bd 100644 --- a/packages/@uppy/golden-retriever/package.json +++ b/packages/@uppy/golden-retriever/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/golden-retriever", "description": "The GoldenRetriever Uppy plugin saves selected files in browser cache to seamlessly resume uploding after browser crash or accidentally closed tab", - "version": "3.1.1", + "version": "3.1.2", "license": "MIT", "main": "lib/index.js", "types": "types/index.d.ts", diff --git a/packages/@uppy/image-editor/CHANGELOG.md b/packages/@uppy/image-editor/CHANGELOG.md index 0fe5dc77c4..7f7de893fa 100644 --- a/packages/@uppy/image-editor/CHANGELOG.md +++ b/packages/@uppy/image-editor/CHANGELOG.md @@ -1,5 +1,13 @@ # @uppy/image-editor +## 2.4.1 + +Released: 2024-02-19 +Included in: Uppy v3.22.0 + +- @uppy/image-editor: image editor: make compressor work after the image editor, too (evgenia karunus / #4918) +- @uppy/image-editor: migrate to ts (merlijn vos / #4880) + ## 2.4.0 Released: 2023-12-12 diff --git a/packages/@uppy/image-editor/package.json b/packages/@uppy/image-editor/package.json index 2dc94c9eb3..e89018fba2 100644 --- a/packages/@uppy/image-editor/package.json +++ b/packages/@uppy/image-editor/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/image-editor", "description": "Image editor and cropping UI", - "version": "2.4.0", + "version": "2.4.1", "license": "MIT", "main": "lib/index.js", "style": "dist/style.min.css", diff --git a/packages/@uppy/locales/CHANGELOG.md b/packages/@uppy/locales/CHANGELOG.md index 9c33a7c5b4..59329363da 100644 --- a/packages/@uppy/locales/CHANGELOG.md +++ b/packages/@uppy/locales/CHANGELOG.md @@ -1,5 +1,12 @@ # @uppy/locales +## 3.5.1 + +Released: 2024-02-19 +Included in: Uppy v3.22.0 + +- @uppy/locales: fix "save" button translation in hr_hr.ts (žan žlender / #4830) + ## 3.5.0 Released: 2023-11-24 diff --git a/packages/@uppy/locales/package.json b/packages/@uppy/locales/package.json index b03ce2a307..7d23bafb8a 100644 --- a/packages/@uppy/locales/package.json +++ b/packages/@uppy/locales/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/locales", "description": "Uppy language packs", - "version": "3.5.0", + "version": "3.5.1", "license": "MIT", "type": "module", "keywords": [ diff --git a/packages/@uppy/provider-views/CHANGELOG.md b/packages/@uppy/provider-views/CHANGELOG.md index 6d25afe937..8d8a035ae1 100644 --- a/packages/@uppy/provider-views/CHANGELOG.md +++ b/packages/@uppy/provider-views/CHANGELOG.md @@ -1,5 +1,13 @@ # @uppy/provider-views +## 3.9.0 + +Released: 2024-02-19 +Included in: Uppy v3.22.0 + +- @uppy/provider-views: update uppy-providerbrowser-viewtype--list.scss (aditya patadia / #4913) +- @uppy/provider-views: add referrerpolicy to images (merlijn vos / #4853) + ## 3.8.0 Released: 2023-12-12 diff --git a/packages/@uppy/provider-views/package.json b/packages/@uppy/provider-views/package.json index 4d30999e20..dc830e76ba 100644 --- a/packages/@uppy/provider-views/package.json +++ b/packages/@uppy/provider-views/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/provider-views", "description": "View library for Uppy remote provider plugins.", - "version": "3.8.0", + "version": "3.9.0", "license": "MIT", "main": "lib/index.js", "style": "dist/style.min.css", diff --git a/packages/@uppy/remote-sources/package.json b/packages/@uppy/remote-sources/package.json index 4b79a0481a..67dc0f6fbe 100644 --- a/packages/@uppy/remote-sources/package.json +++ b/packages/@uppy/remote-sources/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/remote-sources", "description": "Uppy plugin that includes all remote sources that Uppy+Companion offer, like Instagram, Google Drive, Dropox, Box, Unsplash, Url etc", - "version": "1.1.0", + "version": "1.1.1", "license": "MIT", "main": "lib/index.js", "types": "types/index.d.ts", diff --git a/packages/@uppy/status-bar/CHANGELOG.md b/packages/@uppy/status-bar/CHANGELOG.md index de193f1477..620d97a916 100644 --- a/packages/@uppy/status-bar/CHANGELOG.md +++ b/packages/@uppy/status-bar/CHANGELOG.md @@ -1,5 +1,13 @@ # @uppy/status-bar +## 3.2.6 + +Released: 2024-02-19 +Included in: Uppy v3.22.0 + +- @uppy/status-bar: fix `statusbaroptions` type (antoine du hamel / #4883) +- @uppy/status-bar: refactor to typescript (antoine du hamel / #4839) + ## 3.2.4 Released: 2023-08-15 diff --git a/packages/@uppy/status-bar/package.json b/packages/@uppy/status-bar/package.json index 1429bc89b5..1c0049dd52 100644 --- a/packages/@uppy/status-bar/package.json +++ b/packages/@uppy/status-bar/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/status-bar", "description": "A progress bar for Uppy, with many bells and whistles.", - "version": "3.2.5", + "version": "3.2.6", "license": "MIT", "main": "lib/index.js", "style": "dist/style.min.css", diff --git a/packages/@uppy/store-default/package.json b/packages/@uppy/store-default/package.json index 9d4942520c..4b66f3262b 100644 --- a/packages/@uppy/store-default/package.json +++ b/packages/@uppy/store-default/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/store-default", "description": "The default simple object-based store for Uppy.", - "version": "3.2.0", + "version": "3.2.1", "license": "MIT", "main": "lib/index.js", "types": "types/index.d.ts", diff --git a/packages/@uppy/store-redux/package.json b/packages/@uppy/store-redux/package.json index 5ce0a56575..229067b891 100644 --- a/packages/@uppy/store-redux/package.json +++ b/packages/@uppy/store-redux/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/store-redux", "description": "Make Uppy use your existing Redux store.", - "version": "3.0.5", + "version": "3.0.6", "license": "MIT", "main": "lib/index.js", "types": "types/index.d.ts", diff --git a/packages/@uppy/svelte/package.json b/packages/@uppy/svelte/package.json index 786d16ad2e..6e0fe1e47f 100644 --- a/packages/@uppy/svelte/package.json +++ b/packages/@uppy/svelte/package.json @@ -4,7 +4,7 @@ "svelte": "src/index.js", "module": "dist/index.mjs", "main": "dist/index.js", - "version": "3.1.1", + "version": "3.1.2", "scripts": { "build": "rollup -c", "prepublishOnly": "yarn run build", diff --git a/packages/@uppy/thumbnail-generator/CHANGELOG.md b/packages/@uppy/thumbnail-generator/CHANGELOG.md index 8d61a1096b..3ff304364d 100644 --- a/packages/@uppy/thumbnail-generator/CHANGELOG.md +++ b/packages/@uppy/thumbnail-generator/CHANGELOG.md @@ -1,5 +1,12 @@ # @uppy/thumbnail-generator +## 3.0.7 + +Released: 2024-02-19 +Included in: Uppy v3.22.0 + +- @uppy/thumbnail-generator: fix broken previews after cropping (evgenia karunus / #4926) + ## 3.0.2 Released: 2022-09-25 diff --git a/packages/@uppy/thumbnail-generator/package.json b/packages/@uppy/thumbnail-generator/package.json index a49a412501..fb2dd20bd8 100644 --- a/packages/@uppy/thumbnail-generator/package.json +++ b/packages/@uppy/thumbnail-generator/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/thumbnail-generator", "description": "Uppy plugin that generates small previews of images to show on your upload UI.", - "version": "3.0.6", + "version": "3.0.7", "license": "MIT", "main": "lib/index.js", "types": "types/index.d.ts", diff --git a/packages/@uppy/transloadit/CHANGELOG.md b/packages/@uppy/transloadit/CHANGELOG.md index b61387b29e..b57dad2cad 100644 --- a/packages/@uppy/transloadit/CHANGELOG.md +++ b/packages/@uppy/transloadit/CHANGELOG.md @@ -1,5 +1,12 @@ # @uppy/transloadit +## 3.5.0 + +Released: 2024-02-19 +Included in: Uppy v3.22.0 + +- @uppy/transloadit: add `clientname` option (marius / #4920) + ## 3.3.0 Released: 2023-09-05 diff --git a/packages/@uppy/transloadit/package.json b/packages/@uppy/transloadit/package.json index 7b906c0e13..eb23bc3261 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.4.0", + "version": "3.5.0", "license": "MIT", "main": "lib/index.js", "types": "types/index.d.ts", diff --git a/packages/@uppy/tus/CHANGELOG.md b/packages/@uppy/tus/CHANGELOG.md index 20295b5abe..f562528c32 100644 --- a/packages/@uppy/tus/CHANGELOG.md +++ b/packages/@uppy/tus/CHANGELOG.md @@ -1,5 +1,14 @@ # @uppy/tus +## 3.5.1 + +Released: 2024-02-19 +Included in: Uppy v3.22.0 + +- @uppy/aws-s3-multipart,@uppy/aws-s3,@uppy/companion-client,@uppy/tus,@uppy/xhr-upload: update `uppyfile` objects before emitting events (antoine du hamel / #4928) +- @uppy/tus: migrate to ts (merlijn vos / #4899) +- @uppy/companion,@uppy/tus: bump `tus-js-client` version range (merlijn vos / #4848) + ## 3.3.0 Released: 2023-09-18 diff --git a/packages/@uppy/tus/package.json b/packages/@uppy/tus/package.json index 0ac36a5585..a32e586735 100644 --- a/packages/@uppy/tus/package.json +++ b/packages/@uppy/tus/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/tus", "description": "Resumable uploads for Uppy using Tus.io", - "version": "3.5.0", + "version": "3.5.1", "license": "MIT", "main": "lib/index.js", "types": "types/index.d.ts", diff --git a/packages/@uppy/utils/CHANGELOG.md b/packages/@uppy/utils/CHANGELOG.md index 89106f0dae..6943a74c4c 100644 --- a/packages/@uppy/utils/CHANGELOG.md +++ b/packages/@uppy/utils/CHANGELOG.md @@ -1,5 +1,13 @@ # @uppy/utils +## 5.7.1 + +Released: 2024-02-19 +Included in: Uppy v3.22.0 + +- @uppy/utils: improve types for `finddomelement` (antoine du hamel / #4873) +- @uppy/utils: improve `preprocess` and `postprocess` types (antoine du hamel / #4841) + ## 5.7.0 Released: 2023-12-12 diff --git a/packages/@uppy/utils/package.json b/packages/@uppy/utils/package.json index e1fb62bf6b..6bd43e07c7 100644 --- a/packages/@uppy/utils/package.json +++ b/packages/@uppy/utils/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/utils", "description": "Shared utility functions for Uppy Core and plugins maintained by the Uppy team.", - "version": "5.7.0", + "version": "5.7.1", "license": "MIT", "types": "types/index.d.ts", "type": "module", diff --git a/packages/@uppy/vue/package.json b/packages/@uppy/vue/package.json index f8375c3ba3..9cad015fd5 100644 --- a/packages/@uppy/vue/package.json +++ b/packages/@uppy/vue/package.json @@ -1,6 +1,6 @@ { "name": "@uppy/vue", - "version": "1.1.0", + "version": "1.1.1", "license": "MIT", "main": "lib/index.js", "types": "types/index.d.ts", diff --git a/packages/@uppy/webcam/package.json b/packages/@uppy/webcam/package.json index f511b57956..7b8467ad2f 100644 --- a/packages/@uppy/webcam/package.json +++ b/packages/@uppy/webcam/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/webcam", "description": "Uppy plugin that takes photos or records videos using the device's camera.", - "version": "3.3.4", + "version": "3.3.5", "license": "MIT", "main": "lib/index.js", "style": "dist/style.min.css", diff --git a/packages/@uppy/xhr-upload/CHANGELOG.md b/packages/@uppy/xhr-upload/CHANGELOG.md index e28c333992..2236ba455c 100644 --- a/packages/@uppy/xhr-upload/CHANGELOG.md +++ b/packages/@uppy/xhr-upload/CHANGELOG.md @@ -1,5 +1,14 @@ # @uppy/xhr-upload +## 3.6.1 + +Released: 2024-02-19 +Included in: Uppy v3.22.0 + +- @uppy/aws-s3-multipart,@uppy/aws-s3,@uppy/companion-client,@uppy/tus,@uppy/xhr-upload: update `uppyfile` objects before emitting events (antoine du hamel / #4928) +- @uppy/xhr-upload: migrate to ts (merlijn vos / #4892) +- @uppy/xhr-upload: show remove button (merlijn vos / #4851) + ## 3.4.0 Released: 2023-09-05 diff --git a/packages/@uppy/xhr-upload/package.json b/packages/@uppy/xhr-upload/package.json index fe8052cfd2..15c3bbd253 100644 --- a/packages/@uppy/xhr-upload/package.json +++ b/packages/@uppy/xhr-upload/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/xhr-upload", "description": "Plain and simple classic HTML multipart form uploads with Uppy, as well as uploads using the HTTP PUT method.", - "version": "3.6.0", + "version": "3.6.1", "license": "MIT", "main": "lib/index.js", "types": "types/index.d.ts", diff --git a/packages/uppy/package.json b/packages/uppy/package.json index 2df88d560f..e0e0d5ddd4 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.21.0", + "version": "3.22.0", "license": "MIT", "main": "index.mjs", "module": "index.mjs", From 5313c0aae7ca50307cf911a4d78ee42168b06bde Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Tue, 20 Feb 2024 10:19:08 +0100 Subject: [PATCH 08/16] bump `@transloadit/prettier-bytes` (#4933) --- packages/@uppy/compressor/package.json | 2 +- packages/@uppy/core/package.json | 2 +- packages/@uppy/dashboard/package.json | 2 +- packages/@uppy/status-bar/package.json | 2 +- yarn.lock | 16 ++++++++-------- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/@uppy/compressor/package.json b/packages/@uppy/compressor/package.json index 3e20d722ed..fb765c228f 100644 --- a/packages/@uppy/compressor/package.json +++ b/packages/@uppy/compressor/package.json @@ -23,7 +23,7 @@ "url": "git+https://github.com/transloadit/uppy.git" }, "dependencies": { - "@transloadit/prettier-bytes": "^0.2.0", + "@transloadit/prettier-bytes": "^0.3.0", "@uppy/utils": "workspace:^", "compressorjs": "^1.2.1", "preact": "^10.5.13", diff --git a/packages/@uppy/core/package.json b/packages/@uppy/core/package.json index b67301b327..2196008be5 100644 --- a/packages/@uppy/core/package.json +++ b/packages/@uppy/core/package.json @@ -24,7 +24,7 @@ "url": "git+https://github.com/transloadit/uppy.git" }, "dependencies": { - "@transloadit/prettier-bytes": "^0.2.0", + "@transloadit/prettier-bytes": "^0.3.0", "@uppy/store-default": "workspace:^", "@uppy/utils": "workspace:^", "lodash": "^4.17.21", diff --git a/packages/@uppy/dashboard/package.json b/packages/@uppy/dashboard/package.json index 67beaf7766..37549baa9c 100644 --- a/packages/@uppy/dashboard/package.json +++ b/packages/@uppy/dashboard/package.json @@ -23,7 +23,7 @@ "url": "git+https://github.com/transloadit/uppy.git" }, "dependencies": { - "@transloadit/prettier-bytes": "^0.2.0", + "@transloadit/prettier-bytes": "^0.3.0", "@uppy/informer": "workspace:^", "@uppy/provider-views": "workspace:^", "@uppy/status-bar": "workspace:^", diff --git a/packages/@uppy/status-bar/package.json b/packages/@uppy/status-bar/package.json index 1c0049dd52..0247fa5c90 100644 --- a/packages/@uppy/status-bar/package.json +++ b/packages/@uppy/status-bar/package.json @@ -27,7 +27,7 @@ "url": "git+https://github.com/transloadit/uppy.git" }, "dependencies": { - "@transloadit/prettier-bytes": "^0.2.0", + "@transloadit/prettier-bytes": "^0.3.0", "@uppy/utils": "workspace:^", "classnames": "^2.2.6", "preact": "^10.5.13" diff --git a/yarn.lock b/yarn.lock index 8d8a813fcb..5a99ae4ca4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7612,10 +7612,10 @@ __metadata: languageName: node linkType: hard -"@transloadit/prettier-bytes@npm:^0.2.0": - version: 0.2.0 - resolution: "@transloadit/prettier-bytes@npm:0.2.0" - checksum: 0faaeffc879754e18103bd576510d4349ec5253c2ebe846f7f8e52f2e9bc4c6877a9197adf4d2f196fa9b442a64cd43c5a742b5b51268e7f56bb3451299af1ce +"@transloadit/prettier-bytes@npm:^0.3.0": + version: 0.3.1 + resolution: "@transloadit/prettier-bytes@npm:0.3.1" + checksum: 2ab7dc9cc00bafa47878735c3d613bfdf507af5649251b08b95296a83454c3fb5ccef2de8b74d266078ef8157bc9da9644e1400c9fe5e12b2353b102f48891a4 languageName: node linkType: hard @@ -9240,7 +9240,7 @@ __metadata: version: 0.0.0-use.local resolution: "@uppy/compressor@workspace:packages/@uppy/compressor" dependencies: - "@transloadit/prettier-bytes": ^0.2.0 + "@transloadit/prettier-bytes": ^0.3.0 "@uppy/utils": "workspace:^" compressorjs: ^1.2.1 preact: ^10.5.13 @@ -9255,7 +9255,7 @@ __metadata: version: 0.0.0-use.local resolution: "@uppy/core@workspace:packages/@uppy/core" dependencies: - "@transloadit/prettier-bytes": ^0.2.0 + "@transloadit/prettier-bytes": ^0.3.0 "@uppy/store-default": "workspace:^" "@uppy/utils": "workspace:^" lodash: ^4.17.21 @@ -9271,7 +9271,7 @@ __metadata: version: 0.0.0-use.local resolution: "@uppy/dashboard@workspace:packages/@uppy/dashboard" dependencies: - "@transloadit/prettier-bytes": ^0.2.0 + "@transloadit/prettier-bytes": ^0.3.0 "@uppy/google-drive": "workspace:^" "@uppy/informer": "workspace:^" "@uppy/provider-views": "workspace:^" @@ -9559,7 +9559,7 @@ __metadata: version: 0.0.0-use.local resolution: "@uppy/status-bar@workspace:packages/@uppy/status-bar" dependencies: - "@transloadit/prettier-bytes": ^0.2.0 + "@transloadit/prettier-bytes": ^0.3.0 "@uppy/utils": "workspace:^" classnames: ^2.2.6 preact: ^10.5.13 From d56bd28737628ab3ce2d44a0375c8e24c903b1ba Mon Sep 17 00:00:00 2001 From: David Nguyen Date: Tue, 20 Feb 2024 16:27:39 +0700 Subject: [PATCH 09/16] update vi_VN translation (#4930) --- packages/@uppy/locales/src/vi_VN.ts | 244 +++++++++++++++++++--------- 1 file changed, 164 insertions(+), 80 deletions(-) diff --git a/packages/@uppy/locales/src/vi_VN.ts b/packages/@uppy/locales/src/vi_VN.ts index c46561cd66..0d08d04915 100644 --- a/packages/@uppy/locales/src/vi_VN.ts +++ b/packages/@uppy/locales/src/vi_VN.ts @@ -11,136 +11,220 @@ const vi_VN: Locale<0 | 1> = { } vi_VN.strings = { + addBulkFilesFailed: { + '0': 'Không thể thêm %{smart_count} tệp do lỗi nội bộ', + '1': 'Không thể thêm %{smart_count} tệp do lỗi nội bộ', + }, + addedNumFiles: 'Đã thêm %{numFiles} tệp', + addingMoreFiles: 'Đang thêm tệp', + additionalRestrictionsFailed: '%{count} ràng buộc bổ sung không được đáp ứng', addMore: 'Thêm', - addMoreFiles: 'Thêm tập tin', - addingMoreFiles: 'Đang thêm các tập tin', + addMoreFiles: 'Thêm tệp', + allFilesFromFolderNamed: 'Tất cả tệp từ thư mục %{name}', allowAccessDescription: - 'Để chụp ảnh hoặc quay video bằng camera, vui lòng cho phép trang web truy cập camera.', - allowAccessTitle: 'Vui lòng cho phép truy cập camera', - authenticateWith: 'Kết nối đến %{pluginName}', - authenticateWithTitle: 'Xác thực với %{pluginName} để chọn tập tin', + 'Để chụp ảnh hoặc quay video bằng máy ảnh của bạn, vui lòng cho phép truy cập máy ảnh cho trang web này.', + allowAccessTitle: 'Vui lòng cho phép truy cập máy ảnh của bạn', + allowAudioAccessDescription: + 'Để ghi âm, vui lòng cho phép truy cập microphone cho trang web này.', + allowAudioAccessTitle: 'Vui lòng cho phép truy cập microphone của bạn', + aspectRatioLandscape: 'Cắt ảnh ngang (16:9)', + aspectRatioPortrait: 'Cắt ảnh dọc (9:16)', + aspectRatioSquare: 'Cắt ảnh vuông', + authAborted: 'Xác thực đã bị hủy', + authenticateWith: 'Kết nối với %{pluginName}', + authenticateWithTitle: 'Vui lòng xác thực với %{pluginName} để chọn tệp', back: 'Quay lại', - browse: 'chọn', - browseFiles: 'chọn', - cancel: 'Huỷ', - cancelUpload: 'Huỷ tải lên', - chooseFiles: 'Chọn tập tin', + browse: 'Duyệt', + browseFiles: 'Duyệt tệp', + browseFolders: 'Duyệt thư mục', + cancel: 'Hủy', + cancelUpload: 'Hủy tải lên', + chooseFiles: 'Chọn tệp', closeModal: 'Đóng cửa sổ', companionError: 'Kết nối thất bại', companionUnauthorizeHint: - 'Để huỷ uỷ quyền tài khoản %{provider}, truy cập %{url}', - complete: 'Xong', - connectedToInternet: 'Đã kết nối Internet', + 'Để hủy ủy quyền tài khoản %{provider} của bạn, vui lòng truy cập %{url}', + complete: 'Hoàn thành', + compressedX: 'Tiết kiệm %{size} bằng cách nén ảnh', + compressingImages: 'Đang nén ảnh...', + connectedToInternet: 'Đã kết nối với Internet', copyLink: 'Sao chép liên kết', - copyLinkToClipboardFallback: 'Sao chép liên kết dưới', - copyLinkToClipboardSuccess: 'Đã chép liên kết vào bộ nhớ tạm', + copyLinkToClipboardFallback: 'Sao chép URL bên dưới', + copyLinkToClipboardSuccess: 'Liên kết đã được sao chép vào clipboard.', creatingAssembly: 'Đang chuẩn bị tải lên...', - creatingAssemblyFailed: 'Transloadit: Không thể tạo nhóm', - dashboardTitle: 'Trình đăng tải tập tin', - dashboardWindowTitle: 'Cửa sổ tải lên (Ấn ESC để đóng)', - dataUploadedOfTotal: '%{complete} trong số %{total}', - done: 'Xong', - dropHereOr: 'Thả tập tin hoặc %{browse}', - dropHint: 'Thả tập tin vào đây', - dropPasteBoth: 'Thả tập tin vào đây, dán hoặc %{browse}', - dropPasteFiles: 'Thả tập tin vào đây, dán hoặc %{browse}', - dropPasteFolders: 'Thả tập tin vào đây, dán hoặc %{browse}', - dropPasteImportBoth: 'Thả tập tin vào đây, dán, %{browse} hoặc nhập từ', - dropPasteImportFiles: 'Thả tập tin vào đây, dán, %{browse} hoặc nhập từ', - dropPasteImportFolders: 'Thả tập tin vào đây, dán, %{browse} hoặc nhập từ', - editFile: 'Sửa tập tin', + creatingAssemblyFailed: 'Transloadit: Không thể tạo Assembly', + dashboardTitle: 'Bảng điều khiển Uppy', + dashboardWindowTitle: 'Cửa sổ Bảng điều khiển Uppy (Nhấn Esc để đóng)', + dataUploadedOfTotal: '%{complete} trên %{total}', + discardRecordedFile: 'Hủy tệp đã ghi âm', + done: 'Hoàn tất', + dropHereOr: 'Kéo và thả vào đây hoặc %{browse}', + dropHint: 'Kéo và thả tệp của bạn vào đây', + dropPasteBoth: 'Kéo và thả tệp vào đây, %{browseFiles} hoặc %{browseFolders}', + dropPasteFiles: 'Kéo và thả tệp vào đây hoặc %{browseFiles}', + dropPasteFolders: 'Kéo và thả tệp vào đây hoặc %{browseFolders}', + dropPasteImportBoth: + 'Kéo và thả tệp vào đây, %{browseFiles}, %{browseFolders} hoặc nhập từ:', + dropPasteImportFiles: 'Kéo và thả tệp vào đây, %{browseFiles} hoặc nhập từ:', + dropPasteImportFolders: + 'Kéo và thả tệp vào đây, %{browseFolders} hoặc nhập từ:', + editFile: 'Chỉnh sửa tệp', editImage: 'Chỉnh sửa ảnh', - editing: 'Đang sửa %{file}', - emptyFolderAdded: 'Không có tập tin nào được thêm từ thư mục trống', - encoding: 'Đang encode...', + editFileWithFilename: 'Chỉnh sửa tệp %{file}', + editing: 'Đang chỉnh sửa %{file}', + emptyFolderAdded: 'Không có tệp nào được thêm từ thư mục trống', + encoding: 'Đang mã hóa...', enterCorrectUrl: - 'URL sai: Đảm bảo rằng bạn đang nhập một liên kết trực tiếp đến một tập tin', - enterUrlToImport: 'Nhập URL để nhập tập tin', - exceedsSize: 'Tập tin này vượt quá kích thước tối đa cho phép của %{size}', - failedToFetch: 'Thất bại khi lấy từ URL, hãy sửa lại cho đúng', - failedToUpload: 'Tải lên %{file} thất bại', - fileSource: 'Nguồn tập tin: %{name}', + 'URL không chính xác: Vui lòng đảm bảo bạn nhập một liên kết trực tiếp đến tệp', + enterTextToSearch: 'Nhập văn bản để tìm kiếm ảnh', + enterUrlToImport: 'Nhập URL để nhập tệp', + error: 'Lỗi', + exceedsSize: '%{file} vượt quá kích thước tối đa cho phép là %{size}', + failedToFetch: + 'Companion không thể truy xuất URL này, vui lòng đảm bảo nó chính xác', + failedToUpload: 'Không thể tải lên %{file}', filesUploadedOfTotal: { - '0': '%{complete} trong số %{smart_count} tập tin đã được tải lên', - '1': '%{complete} trong số %{smart_count} tập tin đã được tải lên', + '0': '%{complete} trong số %{smart_count} tệp tin đã được tải lên', + '1': '%{complete} trong số %{smart_count} tệp tin đã được tải lên', }, filter: 'Bộ lọc', - finishEditingFile: 'Hoàn tất chỉnh sửa tập tin', + finishEditingFile: 'Hoàn thành chỉnh sửa tệp', + flipHorizontal: 'Lật ngang', folderAdded: { - '0': 'Đã thêm %{smart_count} tập tin từ %{folder}', - '1': 'Đã thêm %{smart_count} tập tin từ %{folder}', + '0': 'Đã thêm %{smart_count} tệp từ %{folder}', + '1': 'Đã thêm %{smart_count} tệp từ %{folder}', }, - generatingThumbnails: 'Đang tạo ảnh thu nhỏ...', + folderAlreadyAdded: 'Thư mục "%{folder}" đã được thêm trước đó', + generatingThumbnails: 'Đang tạo hình thu nhỏ...', import: 'Nhập', + importFiles: 'Nhập tệp từ:', importFrom: 'Nhập từ %{name}', + inferiorSize: 'Tệp này nhỏ hơn kích thước tối đa cho phép là %{size}', + loadedXFiles: 'Đã tải %{numFiles} tệp', loading: 'Đang tải...', logOut: 'Đăng xuất', + micDisabled: 'Người dùng đã từ chối truy cập microphone', + missingRequiredMetaField: 'Thiếu trường meta bắt buộc', + missingRequiredMetaFieldOnFile: + 'Thiếu trường meta bắt buộc trong %{fileName}', + missingRequiredMetaFields: { + '0': 'Thiếu trường meta bắt buộc: %{fields}.', + '1': 'Thiếu trường meta bắt buộc: %{fields}.', + }, myDevice: 'Thiết bị của tôi', - noFilesFound: 'Không có tập tin hoặc thư mục nào', + noAudioDescription: + 'Để ghi âm, vui lòng kết nối microphone hoặc thiết bị âm thanh khác', + noAudioTitle: 'Microphone không khả dụng', + noCameraDescription: + 'Để chụp ảnh hoặc quay video, vui lòng kết nối thiết bị máy ảnh', + noCameraTitle: 'Máy ảnh không khả dụng', + noDuplicates: "Không thể thêm tệp trùng lặp '%{fileName}', nó đã tồn tại", + noFilesFound: 'Bạn không có tệp hoặc thư mục nào ở đây', noInternetConnection: 'Không có kết nối Internet', + noMoreFilesAllowed: 'Không thể thêm tệp nữa', + noSearchResults: 'Rất tiếc, không có kết quả cho tìm kiếm này', openFolderNamed: 'Mở thư mục %{name}', pause: 'Tạm dừng', - pauseUpload: 'Tạm dừng tải lên', paused: 'Đã tạm dừng', - poweredBy: 'Cung cấp bởi %{uppy}', + pauseUpload: 'Tạm dừng tải lên', + pluginNameAudio: 'Âm thanh', + pluginNameBox: 'Box', + pluginNameCamera: 'Máy ảnh', + pluginNameDropbox: 'Dropbox', + pluginNameFacebook: 'Facebook', + pluginNameGoogleDrive: 'Google Drive', + pluginNameInstagram: 'Instagram', + pluginNameOneDrive: 'OneDrive', + pluginNameZoom: 'Zoom', + poweredBy: 'Được cung cấp bởi %{uppy}', processingXFiles: { - '0': 'Đang xử lí %{smart_count} tập tin', - '1': 'Đang xử lí %{smart_count} tập tin', + '0': 'Đang xử lý %{smart_count} tệp', + '1': 'Đang xử lý %{smart_count} tệp', + }, + recording: 'Đang ghi âm', + recordingLength: 'Thời lượng ghi âm %{recording_length}', + recordingStoppedMaxSize: + 'Ghi âm đã dừng vì kích thước tệp sắp vượt quá giới hạn', + recordVideoBtn: 'Quay video', + recoveredAllFiles: + 'Chúng tôi đã khôi phục tất cả các tệp. Bạn có thể tiếp tục tải lên.', + recoveredXFiles: { + '0': 'Chúng tôi không thể khôi phục hoàn toàn 1 tệp. Vui lòng chọn lại nó và tiếp tục tải lên.', + '1': 'Chúng tôi không thể khôi phục hoàn toàn %{smart_count} tệp. Vui lòng chọn lại chúng và tiếp tục tải lên.', }, - recordingLength: 'Thời lượng ghi %{recording_length}', - removeFile: 'Bỏ tập tin', + removeFile: 'Xóa tệp', + reSelect: 'Chọn lại', resetFilter: 'Đặt lại bộ lọc', + resetSearch: 'Đặt lại tìm kiếm', resume: 'Tiếp tục', resumeUpload: 'Tiếp tục tải lên', retry: 'Thử lại', - retryUpload: 'Tải lên lại', - saveChanges: 'Lưu các thay đổi', - selectFileNamed: 'Chọn tập tin %{name}', + retryUpload: 'Thử lại tải lên', + revert: 'Phục hồi', + rotate: 'Xoay', + save: 'Lưu', + saveChanges: 'Lưu thay đổi', + search: 'Tìm kiếm', + searchImages: 'Tìm kiếm ảnh', selectX: { '0': 'Chọn %{smart_count}', '1': 'Chọn %{smart_count}', }, - smile: 'Cười lên!', - startRecording: 'Bắt đầu thu hình', - stopRecording: 'Dừng thu hình', + sessionRestored: 'Khôi phục phiên', + showErrorDetails: 'Hiển thị chi tiết lỗi', + signInWithGoogle: 'Đăng nhập bằng Google', + smile: 'Cười!', + startAudioRecording: 'Bắt đầu ghi âm âm thanh', + startCapturing: 'Bắt đầu chụp màn hình', + startRecording: 'Bắt đầu ghi âm video', + stopAudioRecording: 'Dừng ghi âm âm thanh', + stopCapturing: 'Dừng chụp màn hình', + stopRecording: 'Dừng ghi âm video', + streamActive: 'Luồng hoạt động', + streamPassive: 'Luồng chờ', + submitRecordedFile: 'Gửi tệp đã ghi âm', takePicture: 'Chụp ảnh', - timedOut: 'Tải lên bị đình trệ %{seconds} giây, đang huỷ.', - unselectFileNamed: 'Bỏ chọn tập tin %{name}', + takePictureBtn: 'Chụp ảnh', + timedOut: 'Tải lên bị trì hoãn trong %{seconds} giây, đang hủy bỏ.', upload: 'Tải lên', uploadComplete: 'Tải lên hoàn tất', uploadFailed: 'Tải lên thất bại', - uploadPaused: 'Đã tạm dừng tải lên', + uploading: 'Đang tải lên', + uploadingXFiles: { + '0': 'Đang tải lên %{smart_count} tệp', + '1': 'Đang tải lên %{smart_count} tệp', + }, + uploadPaused: 'Tải lên đã tạm dừng', + uploadStalled: + 'Tải lên không tiến triển trong %{seconds} giây. Bạn có thể thử lại.', uploadXFiles: { - '0': 'Tải lên %{smart_count} tập tin', - '1': 'Tải lên %{smart_count} tập tin', + '0': 'Tải lên %{smart_count} tệp', + '1': 'Tải lên %{smart_count} tệp', }, uploadXNewFiles: { - '0': 'Tải lên +%{smart_count} tập tin', - '1': 'Tải lên +%{smart_count} tập tin', - }, - uploading: 'Uploading', - uploadingXFiles: { - '0': 'Đang tải lên %{smart_count} tập tin', - '1': 'Đang tải lên %{smart_count} tập tin', + '0': 'Tải lên +%{smart_count} tệp', + '1': 'Tải lên +%{smart_count} tệp', }, xFilesSelected: { - '0': 'Đã chọn %{smart_count} tập tin', - '1': 'Đã chọn %{smart_count} tập tin', + '0': 'Đã chọn %{smart_count} tệp', + '1': 'Đã chọn %{smart_count} tệp', }, xMoreFilesAdded: { - '0': 'Đã thêm %{smart_count} tập tin', - '1': 'Đã thêm %{smart_count} tập tin', + '0': 'Thêm %{smart_count} tệp', + '1': 'Thêm %{smart_count} tệp', }, - xTimeLeft: '%{time} left', - youCanOnlyUploadFileTypes: 'Chỉ có thể tải lên: %{types}', + xTimeLeft: 'Còn lại %{time}', + youCanOnlyUploadFileTypes: 'Bạn chỉ có thể tải lên: %{types}', youCanOnlyUploadX: { - '0': 'Chỉ có thể tải lên %{smart_count} tập tin', - '1': 'Chỉ có thể tải lên %{smart_count} tập tin', + '0': 'Bạn chỉ có thể tải lên %{smart_count} tệp', + '1': 'Bạn chỉ có thể tải lên %{smart_count} tệp', }, youHaveToAtLeastSelectX: { - '0': 'Chọn ít nhất %{smart_count} tập tin', - '1': 'Chọn ít nhất %{smart_count} tập tin', + '0': 'Bạn phải chọn ít nhất %{smart_count} tệp', + '1': 'Bạn phải chọn ít nhất %{smart_count} tệp', }, + zoomIn: 'Phóng to', + zoomOut: 'Thu nhỏ', } // TODO: remove this in the next major? From eebc9a0432803f982e5a50d82013929f18182605 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 20 Feb 2024 09:36:32 +0000 Subject: [PATCH 10/16] Release: uppy@3.22.1 (#4935) | Package | Version | Package | Version | | ------------------------- | ------- | ------------------------- | ------- | | @uppy/audio | 1.1.6 | @uppy/remote-sources | 1.1.2 | | @uppy/aws-s3 | 3.6.2 | @uppy/status-bar | 3.2.7 | | @uppy/aws-s3-multipart | 3.10.2 | @uppy/store-default | 3.2.2 | | @uppy/companion | 4.12.2 | @uppy/store-redux | 3.0.7 | | @uppy/companion-client | 3.7.2 | @uppy/svelte | 3.1.3 | | @uppy/compressor | 1.1.1 | @uppy/thumbnail-generator | 3.0.8 | | @uppy/core | 3.9.1 | @uppy/transloadit | 3.5.1 | | @uppy/dashboard | 3.7.3 | @uppy/tus | 3.5.2 | | @uppy/drop-target | 2.0.4 | @uppy/utils | 5.7.2 | | @uppy/form | 3.1.1 | @uppy/vue | 1.1.2 | | @uppy/golden-retriever | 3.1.3 | @uppy/webcam | 3.3.6 | | @uppy/image-editor | 2.4.2 | @uppy/xhr-upload | 3.6.2 | | @uppy/locales | 3.5.2 | uppy | 3.22.1 | | @uppy/provider-views | 3.9.1 | | | - @uppy/locales: update vi_VN translation (David Nguyen / #4930) - @uppy/compressor,@uppy/core,@uppy/dashboard,@uppy/status-bar: bump `@transloadit/prettier-bytes` (Antoine du Hamel / #4933) --- BUNDLE-README.md | 2 +- CHANGELOG.md | 25 +++++++++++++++++++ README.md | 8 +++--- examples/aws-nodejs/public/drag.html | 4 +-- examples/aws-nodejs/public/index.html | 4 +-- examples/cdn-example/index.html | 6 ++--- .../uppy-with-companion/client/index.html | 4 +-- packages/@uppy/audio/package.json | 2 +- packages/@uppy/aws-s3-multipart/package.json | 2 +- packages/@uppy/aws-s3/package.json | 2 +- packages/@uppy/companion-client/package.json | 2 +- packages/@uppy/companion/package.json | 2 +- packages/@uppy/compressor/CHANGELOG.md | 7 ++++++ packages/@uppy/compressor/package.json | 2 +- packages/@uppy/core/CHANGELOG.md | 7 ++++++ packages/@uppy/core/package.json | 2 +- packages/@uppy/dashboard/CHANGELOG.md | 7 ++++++ packages/@uppy/dashboard/package.json | 2 +- packages/@uppy/drop-target/package.json | 2 +- packages/@uppy/form/package.json | 2 +- packages/@uppy/golden-retriever/package.json | 2 +- packages/@uppy/image-editor/package.json | 2 +- packages/@uppy/locales/CHANGELOG.md | 7 ++++++ packages/@uppy/locales/package.json | 2 +- packages/@uppy/provider-views/package.json | 2 +- packages/@uppy/remote-sources/package.json | 2 +- packages/@uppy/status-bar/CHANGELOG.md | 7 ++++++ packages/@uppy/status-bar/package.json | 2 +- packages/@uppy/store-default/package.json | 2 +- packages/@uppy/store-redux/package.json | 2 +- packages/@uppy/svelte/package.json | 2 +- .../@uppy/thumbnail-generator/package.json | 2 +- packages/@uppy/transloadit/package.json | 2 +- packages/@uppy/tus/package.json | 2 +- packages/@uppy/utils/package.json | 2 +- packages/@uppy/vue/package.json | 2 +- packages/@uppy/webcam/package.json | 2 +- packages/@uppy/xhr-upload/package.json | 2 +- packages/uppy/package.json | 2 +- 39 files changed, 101 insertions(+), 41 deletions(-) diff --git a/BUNDLE-README.md b/BUNDLE-README.md index 20c2541d0c..14d86ef5e1 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 11eb605412..d896d91ebb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,31 @@ Please add your entries in this format: In the current stage we aim to release a new version at least every month. +## 3.22.1 + +Released: 2024-02-20 + +| Package | Version | Package | Version | +| ------------------------- | ------- | ------------------------- | ------- | +| @uppy/audio | 1.1.6 | @uppy/remote-sources | 1.1.2 | +| @uppy/aws-s3 | 3.6.2 | @uppy/status-bar | 3.2.7 | +| @uppy/aws-s3-multipart | 3.10.2 | @uppy/store-default | 3.2.2 | +| @uppy/companion | 4.12.2 | @uppy/store-redux | 3.0.7 | +| @uppy/companion-client | 3.7.2 | @uppy/svelte | 3.1.3 | +| @uppy/compressor | 1.1.1 | @uppy/thumbnail-generator | 3.0.8 | +| @uppy/core | 3.9.1 | @uppy/transloadit | 3.5.1 | +| @uppy/dashboard | 3.7.3 | @uppy/tus | 3.5.2 | +| @uppy/drop-target | 2.0.4 | @uppy/utils | 5.7.2 | +| @uppy/form | 3.1.1 | @uppy/vue | 1.1.2 | +| @uppy/golden-retriever | 3.1.3 | @uppy/webcam | 3.3.6 | +| @uppy/image-editor | 2.4.2 | @uppy/xhr-upload | 3.6.2 | +| @uppy/locales | 3.5.2 | uppy | 3.22.1 | +| @uppy/provider-views | 3.9.1 | | | + +- @uppy/locales: update vi_VN translation (David Nguyen / #4930) +- @uppy/compressor,@uppy/core,@uppy/dashboard,@uppy/status-bar: bump `@transloadit/prettier-bytes` (Antoine du Hamel / #4933) + + ## 3.22.0 Released: 2024-02-19 diff --git a/README.md b/README.md index 0771ba23ac..ab14489200 100644 --- a/README.md +++ b/README.md @@ -65,7 +65,7 @@ const uppy = new Uppy() npm install @uppy/core @uppy/dashboard @uppy/tus ``` -Add CSS [uppy.min.css](https://releases.transloadit.com/uppy/v3.22.0/uppy.min.css), either to your HTML page’s `` or include in JS, if your bundler of choice supports it. +Add CSS [uppy.min.css](https://releases.transloadit.com/uppy/v3.22.1/uppy.min.css), either to your HTML page’s `` or include in JS, if your bundler of choice supports it. Alternatively, you can also use a pre-built bundle from Transloadit’s CDN: Edgly. In that case `Uppy` will attach itself to the global `window.Uppy` object. @@ -73,12 +73,12 @@ Alternatively, you can also use a pre-built bundle from Transloadit’s CDN: Edg ```html - +
+ ``` ## FAQ diff --git a/examples/aws-nodejs/public/drag.html b/examples/aws-nodejs/public/drag.html index 3b7e4ee19b..f109393812 100644 --- a/examples/aws-nodejs/public/drag.html +++ b/examples/aws-nodejs/public/drag.html @@ -4,7 +4,7 @@ Uppy @@ -22,7 +22,7 @@
Uploaded files:
DragDrop, ProgressBar, AwsS3, - } from 'https://releases.transloadit.com/uppy/v3.22.0/uppy.min.mjs' + } from 'https://releases.transloadit.com/uppy/v3.22.1/uppy.min.mjs' // Function for displaying uploaded files const onUploadSuccess = (elForUploadedFiles) => (file, response) => { diff --git a/examples/aws-nodejs/public/index.html b/examples/aws-nodejs/public/index.html index 73a5a1b654..b83aa40fb4 100644 --- a/examples/aws-nodejs/public/index.html +++ b/examples/aws-nodejs/public/index.html @@ -4,7 +4,7 @@ Uppy – AWS upload example @@ -16,7 +16,7 @@

AWS upload example

Uppy, Dashboard, AwsS3, - } from 'https://releases.transloadit.com/uppy/v3.22.0/uppy.min.mjs' + } from 'https://releases.transloadit.com/uppy/v3.22.1/uppy.min.mjs' /** * This generator transforms a deep object into URL-encodable pairs * to work with `URLSearchParams` on the client and `body-parser` on the server. diff --git a/examples/cdn-example/index.html b/examples/cdn-example/index.html index cb05ea7183..2683b308e2 100644 --- a/examples/cdn-example/index.html +++ b/examples/cdn-example/index.html @@ -5,7 +5,7 @@ @@ -19,7 +19,7 @@ Dashboard, Webcam, Tus, - } from 'https://releases.transloadit.com/uppy/v3.22.0/uppy.min.mjs' + } from 'https://releases.transloadit.com/uppy/v3.22.1/uppy.min.mjs' const uppy = new Uppy({ debug: true, autoProceed: false }) .use(Dashboard, { trigger: '#uppyModalOpener' }) @@ -34,7 +34,7 @@ @@ -19,7 +19,7 @@ Instagram, GoogleDrive, Tus, - } from 'https://releases.transloadit.com/uppy/v3.22.0/uppy.min.mjs' + } from 'https://releases.transloadit.com/uppy/v3.22.1/uppy.min.mjs' const uppy = new Uppy({ debug: true, autoProceed: false }) .use(Dashboard, { trigger: '#uppyModalOpener' }) diff --git a/packages/@uppy/audio/package.json b/packages/@uppy/audio/package.json index 03e12a5c78..51c7652f74 100644 --- a/packages/@uppy/audio/package.json +++ b/packages/@uppy/audio/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/audio", "description": "Uppy plugin that records audio using the device’s microphone.", - "version": "1.1.5", + "version": "1.1.6", "license": "MIT", "main": "lib/index.js", "style": "dist/style.min.css", diff --git a/packages/@uppy/aws-s3-multipart/package.json b/packages/@uppy/aws-s3-multipart/package.json index 5c746a8d5c..340941e3b9 100644 --- a/packages/@uppy/aws-s3-multipart/package.json +++ b/packages/@uppy/aws-s3-multipart/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/aws-s3-multipart", "description": "Upload to Amazon S3 with Uppy and S3's Multipart upload strategy", - "version": "3.10.1", + "version": "3.10.2", "license": "MIT", "main": "lib/index.js", "type": "module", diff --git a/packages/@uppy/aws-s3/package.json b/packages/@uppy/aws-s3/package.json index eda3d94cfb..dde98a45b9 100644 --- a/packages/@uppy/aws-s3/package.json +++ b/packages/@uppy/aws-s3/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/aws-s3", "description": "Upload to Amazon S3 with Uppy", - "version": "3.6.1", + "version": "3.6.2", "license": "MIT", "main": "lib/index.js", "type": "module", diff --git a/packages/@uppy/companion-client/package.json b/packages/@uppy/companion-client/package.json index 716d7da0a8..f2e091d738 100644 --- a/packages/@uppy/companion-client/package.json +++ b/packages/@uppy/companion-client/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/companion-client", "description": "Client library for communication with Companion. Intended for use in Uppy plugins.", - "version": "3.7.1", + "version": "3.7.2", "license": "MIT", "main": "lib/index.js", "types": "types/index.d.ts", diff --git a/packages/@uppy/companion/package.json b/packages/@uppy/companion/package.json index f66f6e201c..a9679b27e4 100644 --- a/packages/@uppy/companion/package.json +++ b/packages/@uppy/companion/package.json @@ -1,6 +1,6 @@ { "name": "@uppy/companion", - "version": "4.12.1", + "version": "4.12.2", "description": "OAuth helper and remote fetcher for Uppy's (https://uppy.io) extensible file upload widget with support for drag&drop, resumable uploads, previews, restrictions, file processing/encoding, remote providers like Dropbox and Google Drive, S3 and more :dog:", "main": "lib/companion.js", "types": "lib/companion.d.ts", diff --git a/packages/@uppy/compressor/CHANGELOG.md b/packages/@uppy/compressor/CHANGELOG.md index 1112b2b02a..c500390b9e 100644 --- a/packages/@uppy/compressor/CHANGELOG.md +++ b/packages/@uppy/compressor/CHANGELOG.md @@ -1,5 +1,12 @@ # @uppy/compressor +## 1.1.1 + +Released: 2024-02-20 +Included in: Uppy v3.22.1 + +- @uppy/compressor,@uppy/core,@uppy/dashboard,@uppy/status-bar: bump `@transloadit/prettier-bytes` (Antoine du Hamel / #4933) + ## 1.1.0 Released: 2024-02-19 diff --git a/packages/@uppy/compressor/package.json b/packages/@uppy/compressor/package.json index fb765c228f..f35c33d8a6 100644 --- a/packages/@uppy/compressor/package.json +++ b/packages/@uppy/compressor/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/compressor", "description": "Uppy plugin that compresses images before upload, saving up to 60% in size", - "version": "1.1.0", + "version": "1.1.1", "license": "MIT", "main": "lib/index.js", "style": "dist/style.min.css", diff --git a/packages/@uppy/core/CHANGELOG.md b/packages/@uppy/core/CHANGELOG.md index 6382c74e00..5a55fa73c2 100644 --- a/packages/@uppy/core/CHANGELOG.md +++ b/packages/@uppy/core/CHANGELOG.md @@ -1,5 +1,12 @@ # @uppy/core +## 3.9.1 + +Released: 2024-02-20 +Included in: Uppy v3.22.1 + +- @uppy/compressor,@uppy/core,@uppy/dashboard,@uppy/status-bar: bump `@transloadit/prettier-bytes` (Antoine du Hamel / #4933) + ## 3.9.0 Released: 2024-02-19 diff --git a/packages/@uppy/core/package.json b/packages/@uppy/core/package.json index 2196008be5..1ff30f3ec8 100644 --- a/packages/@uppy/core/package.json +++ b/packages/@uppy/core/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/core", "description": "Core module for the 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.9.0", + "version": "3.9.1", "license": "MIT", "main": "lib/index.js", "style": "dist/style.min.css", diff --git a/packages/@uppy/dashboard/CHANGELOG.md b/packages/@uppy/dashboard/CHANGELOG.md index ed0fee31ff..94945d79b0 100644 --- a/packages/@uppy/dashboard/CHANGELOG.md +++ b/packages/@uppy/dashboard/CHANGELOG.md @@ -1,5 +1,12 @@ # @uppy/dashboard +## 3.7.3 + +Released: 2024-02-20 +Included in: Uppy v3.22.1 + +- @uppy/compressor,@uppy/core,@uppy/dashboard,@uppy/status-bar: bump `@transloadit/prettier-bytes` (Antoine du Hamel / #4933) + ## 3.7.2 Released: 2024-02-19 diff --git a/packages/@uppy/dashboard/package.json b/packages/@uppy/dashboard/package.json index 37549baa9c..becb34c7c2 100644 --- a/packages/@uppy/dashboard/package.json +++ b/packages/@uppy/dashboard/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/dashboard", "description": "Universal UI plugin for Uppy.", - "version": "3.7.2", + "version": "3.7.3", "license": "MIT", "main": "lib/index.js", "style": "dist/style.min.css", diff --git a/packages/@uppy/drop-target/package.json b/packages/@uppy/drop-target/package.json index 21aeb41efe..59328a0b2d 100644 --- a/packages/@uppy/drop-target/package.json +++ b/packages/@uppy/drop-target/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/drop-target", "description": "Lets your users drag and drop files on a DOM element", - "version": "2.0.3", + "version": "2.0.4", "license": "MIT", "main": "lib/index.js", "type": "module", diff --git a/packages/@uppy/form/package.json b/packages/@uppy/form/package.json index ac96412559..b71c027db4 100644 --- a/packages/@uppy/form/package.json +++ b/packages/@uppy/form/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/form", "description": "Connect Uppy to an existing HTML .", - "version": "3.1.0", + "version": "3.1.1", "license": "MIT", "main": "lib/index.js", "type": "module", diff --git a/packages/@uppy/golden-retriever/package.json b/packages/@uppy/golden-retriever/package.json index 5a19e484bd..674dc8f227 100644 --- a/packages/@uppy/golden-retriever/package.json +++ b/packages/@uppy/golden-retriever/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/golden-retriever", "description": "The GoldenRetriever Uppy plugin saves selected files in browser cache to seamlessly resume uploding after browser crash or accidentally closed tab", - "version": "3.1.2", + "version": "3.1.3", "license": "MIT", "main": "lib/index.js", "types": "types/index.d.ts", diff --git a/packages/@uppy/image-editor/package.json b/packages/@uppy/image-editor/package.json index e89018fba2..9d5806d79c 100644 --- a/packages/@uppy/image-editor/package.json +++ b/packages/@uppy/image-editor/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/image-editor", "description": "Image editor and cropping UI", - "version": "2.4.1", + "version": "2.4.2", "license": "MIT", "main": "lib/index.js", "style": "dist/style.min.css", diff --git a/packages/@uppy/locales/CHANGELOG.md b/packages/@uppy/locales/CHANGELOG.md index 59329363da..3d729ab02a 100644 --- a/packages/@uppy/locales/CHANGELOG.md +++ b/packages/@uppy/locales/CHANGELOG.md @@ -1,5 +1,12 @@ # @uppy/locales +## 3.5.2 + +Released: 2024-02-20 +Included in: Uppy v3.22.1 + +- @uppy/locales: update vi_VN translation (David Nguyen / #4930) + ## 3.5.1 Released: 2024-02-19 diff --git a/packages/@uppy/locales/package.json b/packages/@uppy/locales/package.json index 7d23bafb8a..3e50ed7db7 100644 --- a/packages/@uppy/locales/package.json +++ b/packages/@uppy/locales/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/locales", "description": "Uppy language packs", - "version": "3.5.1", + "version": "3.5.2", "license": "MIT", "type": "module", "keywords": [ diff --git a/packages/@uppy/provider-views/package.json b/packages/@uppy/provider-views/package.json index dc830e76ba..2cc2b562b2 100644 --- a/packages/@uppy/provider-views/package.json +++ b/packages/@uppy/provider-views/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/provider-views", "description": "View library for Uppy remote provider plugins.", - "version": "3.9.0", + "version": "3.9.1", "license": "MIT", "main": "lib/index.js", "style": "dist/style.min.css", diff --git a/packages/@uppy/remote-sources/package.json b/packages/@uppy/remote-sources/package.json index 67dc0f6fbe..1f9a5bab8e 100644 --- a/packages/@uppy/remote-sources/package.json +++ b/packages/@uppy/remote-sources/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/remote-sources", "description": "Uppy plugin that includes all remote sources that Uppy+Companion offer, like Instagram, Google Drive, Dropox, Box, Unsplash, Url etc", - "version": "1.1.1", + "version": "1.1.2", "license": "MIT", "main": "lib/index.js", "types": "types/index.d.ts", diff --git a/packages/@uppy/status-bar/CHANGELOG.md b/packages/@uppy/status-bar/CHANGELOG.md index 620d97a916..4db69e627d 100644 --- a/packages/@uppy/status-bar/CHANGELOG.md +++ b/packages/@uppy/status-bar/CHANGELOG.md @@ -1,5 +1,12 @@ # @uppy/status-bar +## 3.2.7 + +Released: 2024-02-20 +Included in: Uppy v3.22.1 + +- @uppy/compressor,@uppy/core,@uppy/dashboard,@uppy/status-bar: bump `@transloadit/prettier-bytes` (Antoine du Hamel / #4933) + ## 3.2.6 Released: 2024-02-19 diff --git a/packages/@uppy/status-bar/package.json b/packages/@uppy/status-bar/package.json index 0247fa5c90..ef3ed62b0f 100644 --- a/packages/@uppy/status-bar/package.json +++ b/packages/@uppy/status-bar/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/status-bar", "description": "A progress bar for Uppy, with many bells and whistles.", - "version": "3.2.6", + "version": "3.2.7", "license": "MIT", "main": "lib/index.js", "style": "dist/style.min.css", diff --git a/packages/@uppy/store-default/package.json b/packages/@uppy/store-default/package.json index 4b66f3262b..ac48868dd4 100644 --- a/packages/@uppy/store-default/package.json +++ b/packages/@uppy/store-default/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/store-default", "description": "The default simple object-based store for Uppy.", - "version": "3.2.1", + "version": "3.2.2", "license": "MIT", "main": "lib/index.js", "types": "types/index.d.ts", diff --git a/packages/@uppy/store-redux/package.json b/packages/@uppy/store-redux/package.json index 229067b891..633266bf02 100644 --- a/packages/@uppy/store-redux/package.json +++ b/packages/@uppy/store-redux/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/store-redux", "description": "Make Uppy use your existing Redux store.", - "version": "3.0.6", + "version": "3.0.7", "license": "MIT", "main": "lib/index.js", "types": "types/index.d.ts", diff --git a/packages/@uppy/svelte/package.json b/packages/@uppy/svelte/package.json index 6e0fe1e47f..2b73f04ec6 100644 --- a/packages/@uppy/svelte/package.json +++ b/packages/@uppy/svelte/package.json @@ -4,7 +4,7 @@ "svelte": "src/index.js", "module": "dist/index.mjs", "main": "dist/index.js", - "version": "3.1.2", + "version": "3.1.3", "scripts": { "build": "rollup -c", "prepublishOnly": "yarn run build", diff --git a/packages/@uppy/thumbnail-generator/package.json b/packages/@uppy/thumbnail-generator/package.json index fb2dd20bd8..006875d490 100644 --- a/packages/@uppy/thumbnail-generator/package.json +++ b/packages/@uppy/thumbnail-generator/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/thumbnail-generator", "description": "Uppy plugin that generates small previews of images to show on your upload UI.", - "version": "3.0.7", + "version": "3.0.8", "license": "MIT", "main": "lib/index.js", "types": "types/index.d.ts", diff --git a/packages/@uppy/transloadit/package.json b/packages/@uppy/transloadit/package.json index eb23bc3261..85dd775ece 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.5.0", + "version": "3.5.1", "license": "MIT", "main": "lib/index.js", "types": "types/index.d.ts", diff --git a/packages/@uppy/tus/package.json b/packages/@uppy/tus/package.json index a32e586735..2d5e8b1ddb 100644 --- a/packages/@uppy/tus/package.json +++ b/packages/@uppy/tus/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/tus", "description": "Resumable uploads for Uppy using Tus.io", - "version": "3.5.1", + "version": "3.5.2", "license": "MIT", "main": "lib/index.js", "types": "types/index.d.ts", diff --git a/packages/@uppy/utils/package.json b/packages/@uppy/utils/package.json index 6bd43e07c7..ad351240ca 100644 --- a/packages/@uppy/utils/package.json +++ b/packages/@uppy/utils/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/utils", "description": "Shared utility functions for Uppy Core and plugins maintained by the Uppy team.", - "version": "5.7.1", + "version": "5.7.2", "license": "MIT", "types": "types/index.d.ts", "type": "module", diff --git a/packages/@uppy/vue/package.json b/packages/@uppy/vue/package.json index 9cad015fd5..fc1e7f0f93 100644 --- a/packages/@uppy/vue/package.json +++ b/packages/@uppy/vue/package.json @@ -1,6 +1,6 @@ { "name": "@uppy/vue", - "version": "1.1.1", + "version": "1.1.2", "license": "MIT", "main": "lib/index.js", "types": "types/index.d.ts", diff --git a/packages/@uppy/webcam/package.json b/packages/@uppy/webcam/package.json index 7b8467ad2f..07f2221d05 100644 --- a/packages/@uppy/webcam/package.json +++ b/packages/@uppy/webcam/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/webcam", "description": "Uppy plugin that takes photos or records videos using the device's camera.", - "version": "3.3.5", + "version": "3.3.6", "license": "MIT", "main": "lib/index.js", "style": "dist/style.min.css", diff --git a/packages/@uppy/xhr-upload/package.json b/packages/@uppy/xhr-upload/package.json index 15c3bbd253..b1f515fe38 100644 --- a/packages/@uppy/xhr-upload/package.json +++ b/packages/@uppy/xhr-upload/package.json @@ -1,7 +1,7 @@ { "name": "@uppy/xhr-upload", "description": "Plain and simple classic HTML multipart form uploads with Uppy, as well as uploads using the HTTP PUT method.", - "version": "3.6.1", + "version": "3.6.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 e0e0d5ddd4..d37b48e6cf 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.22.0", + "version": "3.22.1", "license": "MIT", "main": "index.mjs", "module": "index.mjs", From 448ccc88491adfcf02153d4c62124e7e8c8b0807 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Tue, 20 Feb 2024 15:25:33 +0100 Subject: [PATCH 11/16] @uppy/companion-client: update types (#4927) --- .../@uppy/companion-client/src/Provider.ts | 2 +- .../companion-client/src/RequestClient.ts | 43 +++++++++---------- 2 files changed, 22 insertions(+), 23 deletions(-) diff --git a/packages/@uppy/companion-client/src/Provider.ts b/packages/@uppy/companion-client/src/Provider.ts index e1e504b0fe..81bcb609d4 100644 --- a/packages/@uppy/companion-client/src/Provider.ts +++ b/packages/@uppy/companion-client/src/Provider.ts @@ -305,7 +305,7 @@ export default class Provider< return `${this.hostname}/${this.id}/get/${id}` } - protected async request>( + protected async request( ...args: Parameters['request']> ): Promise { await this.#refreshingTokenPromise diff --git a/packages/@uppy/companion-client/src/RequestClient.ts b/packages/@uppy/companion-client/src/RequestClient.ts index d39ba09bc3..1a4cf011d6 100644 --- a/packages/@uppy/companion-client/src/RequestClient.ts +++ b/packages/@uppy/companion-client/src/RequestClient.ts @@ -28,15 +28,16 @@ export type Opts = { companionKeysParams?: Record } -export type RequestOptions = +export type RequestOptions = { + method?: string + data?: Record + skipPostResponse?: boolean + signal?: AbortSignal + qs?: Record +} +type _RequestOptions = | boolean // TODO: remove this on the next major - | { - method?: string - data?: Record - skipPostResponse?: boolean - signal?: AbortSignal - qs?: Record - } + | RequestOptions // Remove the trailing slash so we can always safely append /xyz. function stripSlash(url: string) { @@ -64,9 +65,7 @@ class HttpError extends Error { } } -async function handleJSONResponse>( - res: Response, -): Promise { +async function handleJSONResponse(res: Response): Promise { if (res.status === authErrorStatusCode) { throw new AuthError() } @@ -163,7 +162,7 @@ export default class RequestClient { return `${this.hostname}/${url}` } - protected async request>({ + protected async request({ path, method = 'GET', data, @@ -203,9 +202,9 @@ export default class RequestClient { } } - async get>( + async get( path: string, - options?: RequestOptions, + options?: _RequestOptions, ): Promise { // TODO: remove boolean support for options that was added for backward compatibility. // eslint-disable-next-line no-param-reassign @@ -213,10 +212,10 @@ export default class RequestClient { return this.request({ ...options, path }) } - async post>( + async post( path: string, data: Record, - options?: RequestOptions, + options?: _RequestOptions, ): Promise { // TODO: remove boolean support for options that was added for backward compatibility. // eslint-disable-next-line no-param-reassign @@ -224,11 +223,11 @@ export default class RequestClient { return this.request({ ...options, path, method: 'POST', data }) } - async delete( + async delete( path: string, - data: Record, - options?: RequestOptions, - ): Promise { + data?: Record, + options?: _RequestOptions, + ): Promise { // TODO: remove boolean support for options that was added for backward compatibility. // eslint-disable-next-line no-param-reassign if (typeof options === 'boolean') options = { skipPostResponse: options } @@ -350,7 +349,7 @@ export default class RequestClient { throw new Error('Cannot connect to an undefined URL') } - const res = await this.post( + const res = await this.post<{ token: string }>( file.remote.url, { ...file.remote.body, @@ -359,7 +358,7 @@ export default class RequestClient { { signal }, ) - return res.token as string + return res.token } /** From b7f2143528c975d49593ef08dc2a662a9dc7ac07 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Feb 2024 10:05:45 +0100 Subject: [PATCH 12/16] meta: bump ip from 1.1.8 to 1.1.9 (#4941) --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 5a99ae4ca4..f75881a4b0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18366,9 +18366,9 @@ __metadata: linkType: hard "ip@npm:^1.1.5": - version: 1.1.8 - resolution: "ip@npm:1.1.8" - checksum: a2ade53eb339fb0cbe9e69a44caab10d6e3784662285eb5d2677117ee4facc33a64679051c35e0dfdb1a3983a51ce2f5d2cb36446d52e10d01881789b76e28fb + version: 1.1.9 + resolution: "ip@npm:1.1.9" + checksum: b6d91fd45a856e3bd6d4f601ea0619d90f3517638f6918ebd079f959a8a6308568d8db5ef4fdf037e0d9cfdcf264f46833dfeea81ca31309cf0a7eb4b1307b84 languageName: node linkType: hard From d7e577a449be7e7754d2a3a6ddec9a2214f64364 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Wed, 21 Feb 2024 10:19:39 +0100 Subject: [PATCH 13/16] @uppy/companion-client: type changes for provider-views (#4938) --- .../@uppy/companion-client/src/Provider.ts | 42 ++++----- .../companion-client/src/RequestClient.ts | 8 +- .../companion-client/src/SearchProvider.ts | 14 ++- packages/@uppy/core/src/Uppy.ts | 89 ++++++++++++++++--- packages/@uppy/core/src/index.ts | 9 +- packages/@uppy/utils/package.json | 2 + .../utils/src/CompanionClientProvider.ts | 35 ++++++++ packages/@uppy/utils/src/CompanionFile.ts | 25 ++++++ 8 files changed, 175 insertions(+), 49 deletions(-) create mode 100644 packages/@uppy/utils/src/CompanionClientProvider.ts create mode 100644 packages/@uppy/utils/src/CompanionFile.ts diff --git a/packages/@uppy/companion-client/src/Provider.ts b/packages/@uppy/companion-client/src/Provider.ts index 81bcb609d4..4ee9726d28 100644 --- a/packages/@uppy/companion-client/src/Provider.ts +++ b/packages/@uppy/companion-client/src/Provider.ts @@ -1,10 +1,12 @@ -import type { Uppy, BasePlugin } from '@uppy/core' -import type { Body, Meta, UppyFile } from '@uppy/utils/lib/UppyFile' +import type { Uppy } from '@uppy/core' +import type { Body, Meta } from '@uppy/utils/lib/UppyFile' import type { PluginOpts } from '@uppy/core/lib/BasePlugin.ts' -import RequestClient, { - authErrorStatusCode, - type RequestOptions, -} from './RequestClient.ts' +import type { + RequestOptions, + CompanionClientProvider, +} from '@uppy/utils/lib/CompanionClientProvider' +import type { UnknownProviderPlugin } from '@uppy/core/lib/Uppy.ts' +import RequestClient, { authErrorStatusCode } from './RequestClient.ts' import * as tokenStorage from './tokenStorage.ts' // TODO: remove deprecated options in next major release @@ -22,13 +24,6 @@ export interface Opts extends PluginOpts { provider: string } -interface ProviderPlugin - extends BasePlugin { - files: UppyFile[] - - storage: typeof tokenStorage -} - const getName = (id: string) => { return id .split('-') @@ -64,10 +59,10 @@ function isOriginAllowed( ) // allowing for trailing '/' } -export default class Provider< - M extends Meta, - B extends Body, -> extends RequestClient { +export default class Provider + extends RequestClient + implements CompanionClientProvider +{ #refreshingTokenPromise: Promise | undefined provider: string @@ -141,7 +136,10 @@ export default class Provider< } #getPlugin() { - const plugin = this.uppy.getPlugin(this.pluginId) as ProviderPlugin + const plugin = this.uppy.getPlugin(this.pluginId) as UnknownProviderPlugin< + M, + B + > if (plugin == null) throw new Error('Plugin was nullish') return plugin } @@ -375,23 +373,21 @@ export default class Provider< } } - list>( + list( directory: string | undefined, options: RequestOptions, ): Promise { return this.get(`${this.id}/list/${directory || ''}`, options) } - async logout>( - options: RequestOptions, - ): Promise { + async logout(options?: RequestOptions): Promise { const response = await this.get(`${this.id}/logout`, options) await this.removeAuthToken() return response } static initPlugin( - plugin: ProviderPlugin, // any because static methods cannot use class generics + plugin: UnknownProviderPlugin, // any because static methods cannot use class generics opts: Opts, defaultOpts: Record, ): void { diff --git a/packages/@uppy/companion-client/src/RequestClient.ts b/packages/@uppy/companion-client/src/RequestClient.ts index 1a4cf011d6..e7affb3cee 100644 --- a/packages/@uppy/companion-client/src/RequestClient.ts +++ b/packages/@uppy/companion-client/src/RequestClient.ts @@ -11,6 +11,7 @@ import getSocketHost from '@uppy/utils/lib/getSocketHost' import type Uppy from '@uppy/core' import type { UppyFile, Meta, Body } from '@uppy/utils/lib/UppyFile' +import type { RequestOptions } from '@uppy/utils/lib/CompanionClientProvider.ts' import AuthError from './AuthError.ts' // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore We don't want TS to generate types for the package.json @@ -28,13 +29,6 @@ export type Opts = { companionKeysParams?: Record } -export type RequestOptions = { - method?: string - data?: Record - skipPostResponse?: boolean - signal?: AbortSignal - qs?: Record -} type _RequestOptions = | boolean // TODO: remove this on the next major | RequestOptions diff --git a/packages/@uppy/companion-client/src/SearchProvider.ts b/packages/@uppy/companion-client/src/SearchProvider.ts index 9ad70db560..7a365a1808 100644 --- a/packages/@uppy/companion-client/src/SearchProvider.ts +++ b/packages/@uppy/companion-client/src/SearchProvider.ts @@ -2,6 +2,7 @@ import type { Body, Meta } from '@uppy/utils/lib/UppyFile.ts' import type { Uppy } from '@uppy/core' +import type { CompanionClientSearchProvider } from '@uppy/utils/lib/CompanionClientProvider' import RequestClient, { type Opts } from './RequestClient.ts' const getName = (id: string): string => { @@ -11,10 +12,10 @@ const getName = (id: string): string => { .join(' ') } -export default class SearchProvider< - M extends Meta, - B extends Body, -> extends RequestClient { +export default class SearchProvider + extends RequestClient + implements CompanionClientSearchProvider +{ provider: string id: string @@ -35,10 +36,7 @@ export default class SearchProvider< return `${this.hostname}/search/${this.id}/get/${id}` } - search>( - text: string, - queries?: string, - ): Promise { + search(text: string, queries?: string): Promise { return this.get( `search/${this.id}/list?q=${encodeURIComponent(text)}${ queries ? `&${queries}` : '' diff --git a/packages/@uppy/core/src/Uppy.ts b/packages/@uppy/core/src/Uppy.ts index c2d932e541..1d9f32f8ce 100644 --- a/packages/@uppy/core/src/Uppy.ts +++ b/packages/@uppy/core/src/Uppy.ts @@ -14,6 +14,11 @@ import getFileType from '@uppy/utils/lib/getFileType' import getFileNameAndExtension from '@uppy/utils/lib/getFileNameAndExtension' import { getSafeFileId } from '@uppy/utils/lib/generateFileID' import type { UppyFile, Meta, Body } from '@uppy/utils/lib/UppyFile' +import type { CompanionFile } from '@uppy/utils/lib/CompanionFile' +import type { + CompanionClientProvider, + CompanionClientSearchProvider, +} from '@uppy/utils/lib/CompanionClientProvider' import type { FileProgressNotStarted, FileProgressStarted, @@ -46,19 +51,83 @@ type FileRemoveReason = 'user' | 'cancel-all' type LogLevel = 'info' | 'warning' | 'error' | 'success' -export type UnknownPlugin = InstanceType< - typeof BasePlugin | typeof UIPlugin -> - -type UnknownProviderPlugin = UnknownPlugin< - M, - B -> & { - provider: { - logout: () => void +export type UnknownPlugin< + M extends Meta, + B extends Body, + PluginState extends Record = Record, +> = BasePlugin + +export type UnknownProviderPluginState = { + authenticated: boolean | undefined + breadcrumbs: { + requestPath: string + name: string + id?: string + }[] + didFirstRender: boolean + currentSelection: CompanionFile[] + filterInput: string + loading: boolean | string + folders: CompanionFile[] + files: CompanionFile[] + isSearchVisible: boolean +} +/* + * UnknownProviderPlugin can be any Companion plugin (such as Google Drive). + * As the plugins are passed around throughout Uppy we need a generic type for this. + * It may seems like duplication, but this type safe. Changing the type of `storage` + * will error in the `Provider` class of @uppy/companion-client and vice versa. + * + * Note that this is the *plugin* class, not a version of the `Provider` class. + * `Provider` does operate on Companion plugins with `uppy.getPlugin()`. + */ +export type UnknownProviderPlugin< + M extends Meta, + B extends Body, +> = UnknownPlugin & { + onFirstRender: () => void + title: string + files: UppyFile[] + icon: () => JSX.Element + provider: CompanionClientProvider + storage: { + getItem: (key: string) => Promise + setItem: (key: string, value: string) => Promise + removeItem: (key: string) => Promise } } +/* + * UnknownSearchProviderPlugin can be any search Companion plugin (such as Unsplash). + * As the plugins are passed around throughout Uppy we need a generic type for this. + * It may seems like duplication, but this type safe. Changing the type of `title` + * will error in the `SearchProvider` class of @uppy/companion-client and vice versa. + * + * Note that this is the *plugin* class, not a version of the `SearchProvider` class. + * `SearchProvider` does operate on Companion plugins with `uppy.getPlugin()`. + */ +export type UnknownSearchProviderPluginState = { + isInputMode?: boolean + searchTerm?: string | null +} & Pick< + UnknownProviderPluginState, + | 'loading' + | 'files' + | 'folders' + | 'currentSelection' + | 'filterInput' + | 'didFirstRender' +> +export type UnknownSearchProviderPlugin< + M extends Meta, + B extends Body, +> = UnknownPlugin & { + onFirstRender: () => void + title: string + icon: () => JSX.Element + provider: CompanionClientSearchProvider +} + // The user facing type for UppyFile used in uppy.addFile() and uppy.setOptions() export type MinimalRequiredUppyFile = Required< Pick, 'name' | 'data' | 'type' | 'source'> diff --git a/packages/@uppy/core/src/index.ts b/packages/@uppy/core/src/index.ts index d626cc56a1..ca8462d6c9 100644 --- a/packages/@uppy/core/src/index.ts +++ b/packages/@uppy/core/src/index.ts @@ -1,5 +1,12 @@ export { default } from './Uppy.ts' -export { default as Uppy, type UppyEventMap, type State } from './Uppy.ts' +export { + default as Uppy, + type UppyEventMap, + type State, + type UnknownPlugin, + type UnknownProviderPlugin, + type UnknownSearchProviderPlugin, +} from './Uppy.ts' export { default as UIPlugin } from './UIPlugin.ts' export { default as BasePlugin } from './BasePlugin.ts' export { debugLogger } from './loggers.ts' diff --git a/packages/@uppy/utils/package.json b/packages/@uppy/utils/package.json index ad351240ca..1755e38d56 100644 --- a/packages/@uppy/utils/package.json +++ b/packages/@uppy/utils/package.json @@ -66,6 +66,8 @@ "./lib/fileFilters": "./lib/fileFilters.js", "./lib/VirtualList": "./lib/VirtualList.js", "./lib/UppyFile": "./lib/UppyFile.js", + "./lib/CompanionFile": "./lib/CompanionFile.js", + "./lib/CompanionClientProvider": "./lib/CompanionClientProvider.js", "./lib/FileProgress": "./lib/FileProgress.js", "./src/microtip.scss": "./src/microtip.scss", "./lib/UserFacingApiError": "./lib/UserFacingApiError.js" diff --git a/packages/@uppy/utils/src/CompanionClientProvider.ts b/packages/@uppy/utils/src/CompanionClientProvider.ts new file mode 100644 index 0000000000..a7f2cba108 --- /dev/null +++ b/packages/@uppy/utils/src/CompanionClientProvider.ts @@ -0,0 +1,35 @@ +export type RequestOptions = { + method?: string + data?: Record + skipPostResponse?: boolean + signal?: AbortSignal + authFormData?: unknown + qs?: Record +} + +/** + * CompanionClientProvider is subset of the types of the `Provider` + * class from @uppy/companion-client. + * + * This is needed as the `Provider` class is passed around in Uppy and we + * need to have shared types for it. Although we are duplicating some types, + * this is still safe as `Provider implements CompanionClientProvider` + * so any changes here will error there and vice versa. + * + * TODO: remove this once companion-client and provider-views are merged into a single plugin. + */ +export interface CompanionClientProvider { + name: string + provider: string + login(options?: RequestOptions): Promise + logout(options?: RequestOptions): Promise + list( + directory: string | undefined, + options: RequestOptions, + ): Promise +} +export interface CompanionClientSearchProvider { + name: string + provider: string + search(text: string, queries?: string): Promise +} diff --git a/packages/@uppy/utils/src/CompanionFile.ts b/packages/@uppy/utils/src/CompanionFile.ts new file mode 100644 index 0000000000..44a2f1db9b --- /dev/null +++ b/packages/@uppy/utils/src/CompanionFile.ts @@ -0,0 +1,25 @@ +/** + * CompanionFile represents a file object returned by the Companion API. + */ +export type CompanionFile = { + id: string + name: string + /* + * Url to the thumbnail icon + */ + icon: string + type: string + mimeType: string + extension: string + size: number + isFolder: boolean + modifiedDate: string + thumbnail?: string + requestPath: string + relDirPath?: string + absDirPath?: string + author?: { + name?: string + url?: string + } +} From 89a2fc5d24ed00614f96e77265957c56fe95ef03 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Wed, 21 Feb 2024 10:49:45 +0100 Subject: [PATCH 14/16] remove unnecessary `'use strict'` directives (#4943) --- packages/@uppy/companion-client/src/RequestClient.ts | 2 -- packages/@uppy/companion-client/src/SearchProvider.ts | 2 -- packages/@uppy/companion-client/src/tokenStorage.ts | 2 -- packages/@uppy/react/src/nonHtmlPropsHaveChanged.js | 2 -- 4 files changed, 8 deletions(-) diff --git a/packages/@uppy/companion-client/src/RequestClient.ts b/packages/@uppy/companion-client/src/RequestClient.ts index e7affb3cee..a60dcf667e 100644 --- a/packages/@uppy/companion-client/src/RequestClient.ts +++ b/packages/@uppy/companion-client/src/RequestClient.ts @@ -1,5 +1,3 @@ -'use strict' - import UserFacingApiError from '@uppy/utils/lib/UserFacingApiError' // eslint-disable-next-line import/no-extraneous-dependencies import pRetry, { AbortError } from 'p-retry' diff --git a/packages/@uppy/companion-client/src/SearchProvider.ts b/packages/@uppy/companion-client/src/SearchProvider.ts index 7a365a1808..f3699168c4 100644 --- a/packages/@uppy/companion-client/src/SearchProvider.ts +++ b/packages/@uppy/companion-client/src/SearchProvider.ts @@ -1,5 +1,3 @@ -'use strict' - import type { Body, Meta } from '@uppy/utils/lib/UppyFile.ts' import type { Uppy } from '@uppy/core' import type { CompanionClientSearchProvider } from '@uppy/utils/lib/CompanionClientProvider' diff --git a/packages/@uppy/companion-client/src/tokenStorage.ts b/packages/@uppy/companion-client/src/tokenStorage.ts index 0ce6a3a36d..24de0685cd 100644 --- a/packages/@uppy/companion-client/src/tokenStorage.ts +++ b/packages/@uppy/companion-client/src/tokenStorage.ts @@ -1,5 +1,3 @@ -'use strict' - /** * This module serves as an Async wrapper for LocalStorage */ diff --git a/packages/@uppy/react/src/nonHtmlPropsHaveChanged.js b/packages/@uppy/react/src/nonHtmlPropsHaveChanged.js index 13426df91b..9aee5a556f 100644 --- a/packages/@uppy/react/src/nonHtmlPropsHaveChanged.js +++ b/packages/@uppy/react/src/nonHtmlPropsHaveChanged.js @@ -1,5 +1,3 @@ -'use strict' - export default function nonHtmlPropsHaveChanged (props, prevProps) { return Object.keys(props).some(key => !Object.hasOwn(props, key) && props[key] !== prevProps[key]) } From 9fb5162bd227032e2f1b21bf8dd5f2ee262ab685 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Wed, 21 Feb 2024 13:24:55 +0100 Subject: [PATCH 15/16] meta: disable `@typescript-eslint/no-non-null-assertion` lint rule (#4945) --- .eslintrc.js | 1 + .../tus-js-client-npm-3.1.3-dc57874d23.patch | 36 +++++++++++++++++++ package.json | 3 +- .../companion-client/src/RequestClient.ts | 1 - packages/@uppy/companion-client/src/Socket.ts | 5 ++- packages/@uppy/core/src/Uppy.test.ts | 2 -- packages/@uppy/image-editor/src/Editor.tsx | 4 +-- .../@uppy/image-editor/src/ImageEditor.tsx | 1 - .../src/utils/limitCropboxMovementOnMove.ts | 14 ++++---- .../src/utils/limitCropboxMovementOnResize.ts | 14 ++++---- packages/@uppy/status-bar/src/Components.tsx | 7 ++-- packages/@uppy/status-bar/src/StatusBar.tsx | 6 ++-- .../src/calculateProcessingProgress.ts | 2 +- packages/@uppy/tus/src/getFingerprint.ts | 4 +-- packages/@uppy/tus/src/index.ts | 9 +++-- .../utils/webkitGetAsEntryApi/index.ts | 1 - packages/@uppy/xhr-upload/src/index.test.ts | 1 - yarn.lock | 17 ++++++++- 18 files changed, 86 insertions(+), 42 deletions(-) create mode 100644 .yarn/patches/tus-js-client-npm-3.1.3-dc57874d23.patch diff --git a/.eslintrc.js b/.eslintrc.js index 2c643ed905..9e749f1436 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -466,6 +466,7 @@ module.exports = { '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/no-extra-semi': 'off', '@typescript-eslint/no-namespace': 'off', + '@typescript-eslint/no-non-null-assertion': 'off', }, }, { diff --git a/.yarn/patches/tus-js-client-npm-3.1.3-dc57874d23.patch b/.yarn/patches/tus-js-client-npm-3.1.3-dc57874d23.patch new file mode 100644 index 0000000000..9bc37127da --- /dev/null +++ b/.yarn/patches/tus-js-client-npm-3.1.3-dc57874d23.patch @@ -0,0 +1,36 @@ +diff --git a/lib/index.d.ts b/lib/index.d.ts +index 7a4efead6df94263db77b12c72ddaeafaeaa406c..e47e63f1159f19dd780986f7e33ffdd70bfdc371 100644 +--- a/lib/index.d.ts ++++ b/lib/index.d.ts +@@ -2,7 +2,12 @@ + + export const isSupported: boolean + export const canStoreURLs: boolean +-export const defaultOptions: UploadOptions ++export const defaultOptions: UploadOptions & Required> + + // TODO: Consider using { read: () => Promise<{ done: boolean; value?: any; }>; } as type + export class Upload { +@@ -12,7 +17,7 @@ export class Upload { + options: UploadOptions + url: string | null + +- static terminate(url: string, options?: UploadOptions): Promise ++ static terminate(url: string, options: UploadOptions): Promise + start(): void + abort(shouldTerminate?: boolean): Promise + findPreviousUploads(): Promise +@@ -25,7 +30,7 @@ interface UploadOptions { + + uploadUrl?: string | null + metadata?: { [key: string]: string } +- fingerprint?: (file: File, options?: UploadOptions) => Promise ++ fingerprint?: (file: File, options: UploadOptions) => Promise + uploadSize?: number | null + + onProgress?: ((bytesSent: number, bytesTotal: number) => void) | null diff --git a/package.json b/package.json index 14a47e8183..d4d398d58a 100644 --- a/package.json +++ b/package.json @@ -175,6 +175,7 @@ "preact": "patch:preact@npm:10.10.0#.yarn/patches/preact-npm-10.10.0-dd04de05e8.patch", "start-server-and-test": "patch:start-server-and-test@npm:1.14.0#.yarn/patches/start-server-and-test-npm-1.14.0-841aa34fdf.patch", "stylelint-config-rational-order": "patch:stylelint-config-rational-order@npm%3A0.1.2#./.yarn/patches/stylelint-config-rational-order-npm-0.1.2-d8336e84ed.patch", - "uuid@^8.3.2": "patch:uuid@npm:8.3.2#.yarn/patches/uuid-npm-8.3.2-eca0baba53.patch" + "uuid@^8.3.2": "patch:uuid@npm:8.3.2#.yarn/patches/uuid-npm-8.3.2-eca0baba53.patch", + "tus-js-client": "patch:tus-js-client@npm%3A3.1.3#./.yarn/patches/tus-js-client-npm-3.1.3-dc57874d23.patch" } } diff --git a/packages/@uppy/companion-client/src/RequestClient.ts b/packages/@uppy/companion-client/src/RequestClient.ts index a60dcf667e..7d7644a066 100644 --- a/packages/@uppy/companion-client/src/RequestClient.ts +++ b/packages/@uppy/companion-client/src/RequestClient.ts @@ -374,7 +374,6 @@ export default class RequestClient { try { return await new Promise((resolve, reject) => { const token = file.serverToken - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion const host = getSocketHost(file.remote!.companionUrl) let socket: WebSocket | undefined diff --git a/packages/@uppy/companion-client/src/Socket.ts b/packages/@uppy/companion-client/src/Socket.ts index 3de816b8f4..72c3284407 100644 --- a/packages/@uppy/companion-client/src/Socket.ts +++ b/packages/@uppy/companion-client/src/Socket.ts @@ -50,9 +50,8 @@ export default class UppySocket { this.#isOpen = true while (this.#queued.length > 0 && this.#isOpen) { - const first = this.#queued.shift() - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - this.send(first!.action, first!.payload) + const first = this.#queued.shift()! + this.send(first.action, first.payload) } } diff --git a/packages/@uppy/core/src/Uppy.test.ts b/packages/@uppy/core/src/Uppy.test.ts index 04b4e61971..6f73e34452 100644 --- a/packages/@uppy/core/src/Uppy.test.ts +++ b/packages/@uppy/core/src/Uppy.test.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-non-null-assertion */ /* eslint-disable @typescript-eslint/ban-ts-comment */ /* eslint no-console: "off", no-restricted-syntax: "off" */ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' @@ -166,7 +165,6 @@ describe('src/Core', () => { core.use(AcquirerPlugin1) const plugin = core.getPlugin('TestSelector1') - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion expect(plugin!.id).toEqual('TestSelector1') expect(plugin instanceof UIPlugin) }) diff --git a/packages/@uppy/image-editor/src/Editor.tsx b/packages/@uppy/image-editor/src/Editor.tsx index a2aa71ea4f..19b6cbfd56 100644 --- a/packages/@uppy/image-editor/src/Editor.tsx +++ b/packages/@uppy/image-editor/src/Editor.tsx @@ -77,7 +77,7 @@ export default class Editor extends Component< const newCropboxData = limitCropboxMovementOnMove( canvasData, cropboxData, - prevCropboxData, + prevCropboxData!, ) if (newCropboxData) this.cropper.setCropBoxData(newCropboxData) // 2. When we stretch the cropbox by one of its sides @@ -85,7 +85,7 @@ export default class Editor extends Component< const newCropboxData = limitCropboxMovementOnResize( canvasData, cropboxData, - prevCropboxData, + prevCropboxData!, ) if (newCropboxData) this.cropper.setCropBoxData(newCropboxData) } diff --git a/packages/@uppy/image-editor/src/ImageEditor.tsx b/packages/@uppy/image-editor/src/ImageEditor.tsx index d66db50410..a96a068d46 100644 --- a/packages/@uppy/image-editor/src/ImageEditor.tsx +++ b/packages/@uppy/image-editor/src/ImageEditor.tsx @@ -185,7 +185,6 @@ export default class ImageEditor< this.cropper .getCroppedCanvas(this.opts.cropperOptions.croppedCanvasOptions) - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion .toBlob(saveBlobCallback, currentImage!.type, this.opts.quality) } diff --git a/packages/@uppy/image-editor/src/utils/limitCropboxMovementOnMove.ts b/packages/@uppy/image-editor/src/utils/limitCropboxMovementOnMove.ts index 41875cf1cc..ea8b4cf295 100644 --- a/packages/@uppy/image-editor/src/utils/limitCropboxMovementOnMove.ts +++ b/packages/@uppy/image-editor/src/utils/limitCropboxMovementOnMove.ts @@ -3,13 +3,13 @@ import type Cropper from 'cropperjs' function limitCropboxMovementOnMove( canvas: Cropper.CanvasData, cropbox: Cropper.CropBoxData, - prevCropbox: Cropper.CropBoxData | null, + prevCropbox: Cropper.CropBoxData, ): { left?: number; top?: number; width?: number; height?: number } | null { // For the left boundary if (cropbox.left < canvas.left) { return { left: canvas.left, - width: prevCropbox!.width, + width: prevCropbox.width, } } @@ -17,23 +17,23 @@ function limitCropboxMovementOnMove( if (cropbox.top < canvas.top) { return { top: canvas.top, - height: prevCropbox!.height, + height: prevCropbox.height, } } // For the right boundary if (cropbox.left + cropbox.width > canvas.left + canvas.width) { return { - left: canvas.left + canvas.width - prevCropbox!.width, - width: prevCropbox!.width, + left: canvas.left + canvas.width - prevCropbox.width, + width: prevCropbox.width, } } // For the bottom boundary if (cropbox.top + cropbox.height > canvas.top + canvas.height) { return { - top: canvas.top + canvas.height - prevCropbox!.height, - height: prevCropbox!.height, + top: canvas.top + canvas.height - prevCropbox.height, + height: prevCropbox.height, } } diff --git a/packages/@uppy/image-editor/src/utils/limitCropboxMovementOnResize.ts b/packages/@uppy/image-editor/src/utils/limitCropboxMovementOnResize.ts index 06876d05fb..a548f06e55 100644 --- a/packages/@uppy/image-editor/src/utils/limitCropboxMovementOnResize.ts +++ b/packages/@uppy/image-editor/src/utils/limitCropboxMovementOnResize.ts @@ -3,13 +3,13 @@ import type Cropper from 'cropperjs' function limitCropboxMovementOnResize( canvas: Cropper.CanvasData, cropboxData: Cropper.CropBoxData, - prevCropbox: Cropper.CropBoxData | null, + prevCropbox: Cropper.CropBoxData, ): { left?: number; top?: number; width?: number; height?: number } | null { // For the left boundary if (cropboxData.left < canvas.left) { return { left: canvas.left, - width: prevCropbox!.left + prevCropbox!.width - canvas.left, + width: prevCropbox.left + prevCropbox.width - canvas.left, } } @@ -17,23 +17,23 @@ function limitCropboxMovementOnResize( if (cropboxData.top < canvas.top) { return { top: canvas.top, - height: prevCropbox!.top + prevCropbox!.height - canvas.top, + height: prevCropbox.top + prevCropbox.height - canvas.top, } } // For the right boundary if (cropboxData.left + cropboxData.width > canvas.left + canvas.width) { return { - left: prevCropbox!.left, - width: canvas.left + canvas.width - prevCropbox!.left, + left: prevCropbox.left, + width: canvas.left + canvas.width - prevCropbox.left, } } // For the bottom boundary if (cropboxData.top + cropboxData.height > canvas.top + canvas.height) { return { - top: prevCropbox!.top, - height: canvas.top + canvas.height - prevCropbox!.top, + top: prevCropbox.top, + height: canvas.top + canvas.height - prevCropbox.top, } } diff --git a/packages/@uppy/status-bar/src/Components.tsx b/packages/@uppy/status-bar/src/Components.tsx index 5890a36c64..ee5cd83332 100644 --- a/packages/@uppy/status-bar/src/Components.tsx +++ b/packages/@uppy/status-bar/src/Components.tsx @@ -209,7 +209,7 @@ function PauseResumeButton( interface DoneBtnProps { i18n: I18n - doneButtonHandler: (() => void) | null + doneButtonHandler: (() => void) | undefined } function DoneBtn(props: DoneBtnProps): JSX.Element { @@ -219,7 +219,7 @@ function DoneBtn(props: DoneBtnProps): JSX.Element {