From 9ac5842fbe15aab5e1006c2c4425e14bd61ffc1e Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Thu, 13 Jul 2023 17:18:39 +0200 Subject: [PATCH 01/17] @uppy/transloadit: implement Server-sent event API (#4098) --- packages/@uppy/transloadit/src/Assembly.js | 69 ++++++++++++++++++++-- 1 file changed, 65 insertions(+), 4 deletions(-) diff --git a/packages/@uppy/transloadit/src/Assembly.js b/packages/@uppy/transloadit/src/Assembly.js index f93acf03e4..1ab89ee134 100644 --- a/packages/@uppy/transloadit/src/Assembly.js +++ b/packages/@uppy/transloadit/src/Assembly.js @@ -36,6 +36,8 @@ class TransloaditAssembly extends Emitter { #previousFetchStatusStillPending = false + #sse + constructor (assembly, rateLimitedQueue) { super() @@ -53,6 +55,7 @@ class TransloaditAssembly extends Emitter { } connect () { + this.#connectServerSentEvents() this.#connectSocket() this.#beginPolling() } @@ -62,6 +65,63 @@ class TransloaditAssembly extends Emitter { this.close() } + #connectServerSentEvents () { + this.#sse = new EventSource(`${this.status.websocket_url}?assembly=${this.status.assembly_id}`) + + this.#sse.addEventListener('open', () => { + // if server side events works, we don't need websockets anymore (it's just a fallback) + if (this.socket) { + this.socket.disconnect() + this.socket = null + } + clearInterval(this.pollInterval) + this.pollInterval = null + }) + + /* + * The event "message" is a special case, as it + * will capture events without an event field + * as well as events that have the specific type + * other event type. + */ + this.#sse.addEventListener('message', (e) => { + if (e.data === 'assembly_finished') { + this.#onFinished() + } + + if (e.data === 'assembly_uploading_finished') { + this.emit('executing') + } + + if (e.data === 'assembly_upload_meta_data_extracted') { + this.emit('metadata') + this.#fetchStatus({ diff: false }) + } + }) + + this.#sse.addEventListener('assembly_upload_finished', (e) => { + const file = JSON.parse(e.data) + this.emit('upload', file) + this.status.uploads.push(file) + }) + + this.#sse.addEventListener('assembly_result_finished', (e) => { + const [stepName, result] = JSON.parse(e.data) + this.emit('result', stepName, result) + ;(this.status.results[stepName] ??= []).push(result) + }) + + this.#sse.addEventListener('assembly_error', (e) => { + try { + this.#onError(JSON.parse(e.data)) + } catch { + this.#onError({ msg: e.data }) + } + // Refetch for updated status code + this.#fetchStatus({ diff: false }) + }) + } + #connectSocket () { const parsed = parseUrl(this.status.websocket_url) const socket = io(parsed.origin, { @@ -102,10 +162,7 @@ class TransloaditAssembly extends Emitter { socket.on('assembly_result_finished', (stepName, result) => { this.emit('result', stepName, result) - if (!this.status.results[stepName]) { - this.status.results[stepName] = [] - } - this.status.results[stepName].push(result) + ;(this.status.results[stepName] ??= []).push(result) }) socket.on('assembly_error', (status) => { @@ -262,6 +319,10 @@ class TransloaditAssembly extends Emitter { */ close () { this.closed = true + if (this.#sse) { + this.#sse.close() + this.#sse = null + } if (this.socket) { this.socket.disconnect() this.socket = null From e054a25ab26aae6ca303c20ebf55d7f79712c312 Mon Sep 17 00:00:00 2001 From: Mikael Finstad Date: Thu, 13 Jul 2023 18:12:42 +0200 Subject: [PATCH 02/17] @uppy/provider-views: add support for remote file paths (#4537) Fixes: https://github.com/transloadit/uppy/issues/4034 Co-authored-by: Merlijn Vos --- .../@uppy/google-drive/src/GoogleDrive.jsx | 2 +- packages/@uppy/provider-views/README.md | 2 +- .../@uppy/provider-views/src/Breadcrumbs.jsx | 10 +- .../src/ProviderView/Header.jsx | 2 +- .../src/ProviderView/ProviderView.jsx | 161 ++++++++++++------ .../SearchProviderView/SearchProviderView.jsx | 2 +- packages/@uppy/provider-views/src/View.js | 5 + .../utils/webkitGetAsEntryApi/index.js | 6 +- 8 files changed, 127 insertions(+), 63 deletions(-) diff --git a/packages/@uppy/google-drive/src/GoogleDrive.jsx b/packages/@uppy/google-drive/src/GoogleDrive.jsx index e4d6a26b17..96433c33ef 100644 --- a/packages/@uppy/google-drive/src/GoogleDrive.jsx +++ b/packages/@uppy/google-drive/src/GoogleDrive.jsx @@ -72,7 +72,7 @@ export default class GoogleDrive extends UIPlugin { onFirstRender () { return Promise.all([ this.provider.fetchPreAuthToken(), - this.view.getFolder('root', '/'), + this.view.getFolder('root'), ]) } diff --git a/packages/@uppy/provider-views/README.md b/packages/@uppy/provider-views/README.md index e5992537a9..c3be4986bb 100644 --- a/packages/@uppy/provider-views/README.md +++ b/packages/@uppy/provider-views/README.md @@ -26,7 +26,7 @@ class GoogleDrive extends UIPlugin { onFirstRender () { return Promise.all([ this.provider.fetchPreAuthToken(), - this.view.getFolder('root', '/'), + this.view.getFolder('root'), ]) } diff --git a/packages/@uppy/provider-views/src/Breadcrumbs.jsx b/packages/@uppy/provider-views/src/Breadcrumbs.jsx index 74bd91f3c1..b2d33ec766 100644 --- a/packages/@uppy/provider-views/src/Breadcrumbs.jsx +++ b/packages/@uppy/provider-views/src/Breadcrumbs.jsx @@ -18,18 +18,18 @@ const Breadcrumb = (props) => { } export default (props) => { - const { getFolder, title, breadcrumbsIcon, directories } = props + const { getFolder, title, breadcrumbsIcon, breadcrumbs } = props return (
{breadcrumbsIcon}
{ - directories.map((directory, i) => ( + breadcrumbs.map((directory, i) => ( getFolder(directory.id)} - title={i === 0 ? title : directory.title} - isLast={i + 1 === directories.length} + getFolder={() => getFolder(directory.requestPath)} + title={i === 0 ? title : directory.name} + isLast={i + 1 === breadcrumbs.length} /> )) } diff --git a/packages/@uppy/provider-views/src/ProviderView/Header.jsx b/packages/@uppy/provider-views/src/ProviderView/Header.jsx index eeb36417f2..1683ff4860 100644 --- a/packages/@uppy/provider-views/src/ProviderView/Header.jsx +++ b/packages/@uppy/provider-views/src/ProviderView/Header.jsx @@ -6,7 +6,7 @@ export default (props) => { if (props.showBreadcrumbs) { components.push(Breadcrumbs({ getFolder: props.getFolder, - directories: props.directories, + breadcrumbs: props.breadcrumbs, breadcrumbsIcon: props.pluginIcon && props.pluginIcon(), title: props.title, })) diff --git a/packages/@uppy/provider-views/src/ProviderView/ProviderView.jsx b/packages/@uppy/provider-views/src/ProviderView/ProviderView.jsx index 756d8dae28..a766184acc 100644 --- a/packages/@uppy/provider-views/src/ProviderView/ProviderView.jsx +++ b/packages/@uppy/provider-views/src/ProviderView/ProviderView.jsx @@ -32,6 +32,15 @@ function isOriginAllowed (origin, allowedOrigin) { .some((pattern) => pattern?.test(origin) || pattern?.test(`${origin}/`)) // allowing for trailing '/' } +function formatBreadcrumbs (breadcrumbs) { + return breadcrumbs.slice(1).map((directory) => directory.name).join('/') +} + +function prependPath (path, component) { + if (!path) return component + return `${path}/${component}` +} + /** * Class to easily generate generic views for Provider plugins */ @@ -74,7 +83,7 @@ export default class ProviderView extends View { authenticated: false, files: [], folders: [], - directories: [], + breadcrumbs: [], filterInput: '', isSearchVisible: false, currentSelection: [], @@ -86,9 +95,30 @@ export default class ProviderView extends View { // Nothing. } - #updateFilesAndFolders (res, files, folders) { - this.nextPagePath = res.nextPagePath - res.items.forEach((item) => { + async #list ({ requestPath, absDirPath, signal }) { + const { username, nextPagePath, items } = await this.provider.list(requestPath, { signal }) + this.username = username || this.username + + return { + items: items.map((item) => ({ + ...item, + absDirPath, + })), + nextPagePath, + } + } + + async #listFilesAndFolders ({ requestPath, breadcrumbs, signal }) { + const absDirPath = formatBreadcrumbs(breadcrumbs) + + const { items, nextPagePath } = await this.#list({ requestPath, absDirPath, signal }) + + this.nextPagePath = nextPagePath + + const files = [] + const folders = [] + + items.forEach((item) => { if (item.isFolder) { folders.push(item) } else { @@ -96,59 +126,60 @@ export default class ProviderView extends View { } }) - this.plugin.setPluginState({ folders, files }) + return { files, folders } } /** - * Based on folder ID, fetch a new folder and update it to state + * Select a folder based on its id: fetches the folder and then updates state with its contents + * TODO rename to something better like selectFolder or navigateToFolder (breaking change?) * - * @param {string} id Folder id + * @param {string} requestPath + * the path we need to use when sending list request to companion (for some providers it's different from ID) + * @param {string} name used in the UI and to build the absDirPath * @returns {Promise} Folders/files in folder */ - async getFolder (id, name) { + async getFolder (requestPath, name) { const controller = new AbortController() const cancelRequest = () => { controller.abort() this.clearSelection() } - const getNewBreadcrumbsDirectories = () => { - const state = this.plugin.getPluginState() - const index = state.directories.findIndex((dir) => id === dir.id) - - if (index !== -1) { - return state.directories.slice(0, index + 1) - } - return state.directories.concat([{ id, title: name }]) - } this.plugin.uppy.on('dashboard:close-panel', cancelRequest) this.plugin.uppy.on('cancel-all', cancelRequest) - this.setLoading(true) + this.setLoading(true) try { - const folders = [] - const files = [] - this.nextPagePath = id + this.lastCheckbox = undefined + + let { breadcrumbs } = this.plugin.getPluginState() + + const index = breadcrumbs.findIndex((dir) => requestPath === dir.requestPath) + + if (index !== -1) { + // means we navigated back to a known directory (already in the stack), so cut the stack off there + breadcrumbs = breadcrumbs.slice(0, index + 1) + } else { + // we have navigated into a new (unknown) folder, add it to the stack + breadcrumbs = [...breadcrumbs, { requestPath, name }] + } + let files = [] + let folders = [] do { - const res = await this.provider.list(this.nextPagePath, { signal: controller.signal }) + const { files: newFiles, folders: newFolders } = await this.#listFilesAndFolders({ + requestPath, breadcrumbs, signal: controller.signal, + }) - for (const f of res.items) { - if (f.isFolder) folders.push(f) - else files.push(f) - } + files = files.concat(newFiles) + folders = folders.concat(newFolders) - this.nextPagePath = res.nextPagePath - if (res.username) this.username = res.username this.setLoading(this.plugin.uppy.i18n('loadedXFiles', { numFiles: files.length + folders.length })) } while ( - this.nextPagePath && this.opts.loadAllFiles + this.opts.loadAllFiles && this.nextPagePath ) - const directories = getNewBreadcrumbsDirectories(this.nextPagePath) - - this.plugin.setPluginState({ files, folders, directories, filterInput: '' }) - this.lastCheckbox = undefined + this.plugin.setPluginState({ folders, files, breadcrumbs, filterInput: '' }) } catch (err) { if (err.cause?.name === 'AbortError') { // Expected, user clicked “cancel” @@ -191,7 +222,7 @@ export default class ProviderView extends View { authenticated: false, files: [], folders: [], - directories: [], + breadcrumbs: [], filterInput: '', } this.plugin.setPluginState(newState) @@ -250,16 +281,22 @@ export default class ProviderView extends View { } async handleScroll (event) { - const path = this.nextPagePath || null + const requestPath = this.nextPagePath || null - if (this.shouldHandleScroll(event) && path) { + if (this.shouldHandleScroll(event) && requestPath) { this.isHandlingScroll = true try { - const response = await this.provider.list(path) - const { files, folders } = this.plugin.getPluginState() + const { files, folders, breadcrumbs } = this.plugin.getPluginState() - this.#updateFilesAndFolders(response, files, folders) + const { files: newFiles, folders: newFolders } = await this.#listFilesAndFolders({ + requestPath, breadcrumbs, + }) + + const combinedFiles = files.concat(newFiles) + const combinedFolders = folders.concat(newFolders) + + this.plugin.setPluginState({ folders: combinedFolders, files: combinedFiles }) } catch (error) { this.handleError(error) } finally { @@ -268,11 +305,11 @@ export default class ProviderView extends View { } } - async recursivelyListAllFiles (path, queue, onFiles) { - let curPath = path + async #recursivelyListAllFiles ({ requestPath, absDirPath, relDirPath, queue, onFiles }) { + let curPath = requestPath while (curPath) { - const res = await this.provider.list(curPath) + const res = await this.#list({ requestPath: curPath, absDirPath }) curPath = res.nextPagePath const files = res.items.filter((item) => !item.isFolder) @@ -282,7 +319,13 @@ export default class ProviderView extends View { // recursively queue call to self for each folder const promises = folders.map(async (folder) => queue.add(async () => ( - this.recursivelyListAllFiles(folder.requestPath, queue, onFiles) + this.#recursivelyListAllFiles({ + requestPath: folder.requestPath, + absDirPath: prependPath(absDirPath, folder.name), + relDirPath: prependPath(relDirPath, folder.name), + queue, + onFiles, + }) ))) await Promise.all(promises) // in case we get an error } @@ -296,9 +339,17 @@ export default class ProviderView extends View { const messages = [] const newFiles = [] - for (const file of currentSelection) { - if (file.isFolder) { - const { requestPath, name } = file + for (const selectedItem of currentSelection) { + const { requestPath } = selectedItem + + const withRelDirPath = (newItem) => ({ + ...newItem, + // calculate the file's path relative to the user's selected item's path + // see https://github.com/transloadit/uppy/pull/4537#issuecomment-1614236655 + relDirPath: newItem.absDirPath.replace(selectedItem.absDirPath, '').replace(/^\//, ''), + }) + + if (selectedItem.isFolder) { let isEmpty = true let numNewFiles = 0 @@ -313,7 +364,7 @@ export default class ProviderView extends View { // the folder was already added. This checks if all files are duplicate, // if that's the case, we don't add the files. if (!this.plugin.uppy.checkIfFileAlreadyExists(id)) { - newFiles.push(newFile) + newFiles.push(withRelDirPath(newFile)) numNewFiles++ this.setLoading(this.plugin.uppy.i18n('addedNumFiles', { numFiles: numNewFiles })) } @@ -321,7 +372,13 @@ export default class ProviderView extends View { } } - await this.recursivelyListAllFiles(requestPath, queue, onFiles) + await this.#recursivelyListAllFiles({ + requestPath, + absDirPath: prependPath(selectedItem.absDirPath, selectedItem.name), + relDirPath: selectedItem.name, + queue, + onFiles, + }) await queue.onIdle() let message @@ -329,20 +386,20 @@ export default class ProviderView extends View { message = this.plugin.uppy.i18n('emptyFolderAdded') } else if (numNewFiles === 0) { message = this.plugin.uppy.i18n('folderAlreadyAdded', { - folder: name, + folder: selectedItem.name, }) } else { // TODO we don't really know at this point whether any files were actually added // (only later after addFiles has been called) so we should probably rewrite this. // Example: If all files fail to add due to restriction error, it will still say "Added 100 files from folder" message = this.plugin.uppy.i18n('folderAdded', { - smart_count: numNewFiles, folder: name, + smart_count: numNewFiles, folder: selectedItem.name, }) } messages.push(message) } else { - newFiles.push(file) + newFiles.push(withRelDirPath(selectedItem)) } } @@ -380,7 +437,7 @@ export default class ProviderView extends View { const headerProps = { showBreadcrumbs: targetViewOptions.showBreadcrumbs, getFolder: this.getFolder, - directories: this.plugin.getPluginState().directories, + breadcrumbs: this.plugin.getPluginState().breadcrumbs, pluginIcon: this.plugin.icon, title: this.plugin.title, logout: this.logout, diff --git a/packages/@uppy/provider-views/src/SearchProviderView/SearchProviderView.jsx b/packages/@uppy/provider-views/src/SearchProviderView/SearchProviderView.jsx index f77e98477e..48a64a3605 100644 --- a/packages/@uppy/provider-views/src/SearchProviderView/SearchProviderView.jsx +++ b/packages/@uppy/provider-views/src/SearchProviderView/SearchProviderView.jsx @@ -46,7 +46,7 @@ export default class SearchProviderView extends View { isInputMode: true, files: [], folders: [], - directories: [], + breadcrumbs: [], filterInput: '', currentSelection: [], searchTerm: null, diff --git a/packages/@uppy/provider-views/src/View.js b/packages/@uppy/provider-views/src/View.js index 48e5be6913..81fffef3d9 100644 --- a/packages/@uppy/provider-views/src/View.js +++ b/packages/@uppy/provider-views/src/View.js @@ -92,6 +92,11 @@ export default class View { if (file.author.url) tagFile.meta.authorUrl = file.author.url } + // add relativePath similar to non-remote files: https://github.com/transloadit/uppy/pull/4486#issuecomment-1579203717 + if (file.relDirPath != null) tagFile.meta.relativePath = file.relDirPath ? `${file.relDirPath}/${tagFile.name}` : null + // and absolutePath (with leading slash) https://github.com/transloadit/uppy/pull/4537#issuecomment-1614236655 + if (file.absDirPath != null) tagFile.meta.absolutePath = file.absDirPath ? `/${file.absDirPath}/${tagFile.name}` : `/${tagFile.name}` + return tagFile } diff --git a/packages/@uppy/utils/src/getDroppedFiles/utils/webkitGetAsEntryApi/index.js b/packages/@uppy/utils/src/getDroppedFiles/utils/webkitGetAsEntryApi/index.js index 08ee4fd3b8..c84d62e39d 100644 --- a/packages/@uppy/utils/src/getDroppedFiles/utils/webkitGetAsEntryApi/index.js +++ b/packages/@uppy/utils/src/getDroppedFiles/utils/webkitGetAsEntryApi/index.js @@ -27,17 +27,19 @@ function getAsFileSystemHandleFromEntry (entry, logDropError) { } async function* createPromiseToAddFileOrParseDirectory (entry, relativePath, lastResortFile = undefined) { + const getNextRelativePath = () => `${relativePath}/${entry.name}` + // For each dropped item, - make sure it's a file/directory, and start deepening in! if (entry.kind === 'file') { const file = await entry.getFile() if (file != null) { - file.relativePath = relativePath ? `${relativePath}/${entry.name}` : null + file.relativePath = relativePath ? getNextRelativePath() : null yield file } else if (lastResortFile != null) yield lastResortFile } else if (entry.kind === 'directory') { for await (const handle of entry.values()) { // Recurse on the directory, appending the dir name to the relative path - yield* createPromiseToAddFileOrParseDirectory(handle, `${relativePath}/${entry.name}`) + yield* createPromiseToAddFileOrParseDirectory(handle, relativePath ? getNextRelativePath() : entry.name) } } else if (lastResortFile != null) yield lastResortFile } From d09145f97e7dc07ba0b3776d2958e62d92488ccd Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Thu, 13 Jul 2023 18:12:57 +0200 Subject: [PATCH 03/17] @uppy/transloadit: fix error message (#4572) --- packages/@uppy/transloadit/src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@uppy/transloadit/src/index.js b/packages/@uppy/transloadit/src/index.js index 31e23891b8..c86b6e924d 100644 --- a/packages/@uppy/transloadit/src/index.js +++ b/packages/@uppy/transloadit/src/index.js @@ -379,7 +379,7 @@ export default class Transloadit extends BasePlugin { const state = this.getPluginState() const file = this.#findFile(uploadedFile) if (!file) { - this.uppy.log('[Transloadit] Couldn’t file the file, it was likely removed in the process') + this.uppy.log('[Transloadit] Couldn’t find the file, it was likely removed in the process') return } this.setPluginState({ From a93e6cdd4d84549e0e46d1490f1daa5939a58037 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 13 Jul 2023 16:34:41 +0000 Subject: [PATCH 04/17] Release: uppy@3.12.0 (#4574) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit | Package | Version | Package | Version | | ---------------------- | ------- | ---------------------- | ------- | | @uppy/aws-s3-multipart | 3.5.0 | @uppy/locales | 3.2.3 | | @uppy/box | 2.1.2 | @uppy/onedrive | 3.1.2 | | @uppy/companion | 4.7.0 | @uppy/provider-views | 3.4.0 | | @uppy/companion-client | 3.2.1 | @uppy/react | 3.1.3 | | @uppy/core | 3.3.1 | @uppy/status-bar | 3.2.2 | | @uppy/dashboard | 3.4.2 | @uppy/transloadit | 3.2.0 | | @uppy/dropbox | 3.1.2 | @uppy/utils | 5.4.1 | | @uppy/google-drive | 3.2.0 | uppy | 3.12.0 | - @uppy/transloadit: fix error message (Antoine du Hamel / #4572) - @uppy/provider-views: add support for remote file paths (Mikael Finstad / #4537) - @uppy/transloadit: implement Server-sent event API (Antoine du Hamel / #4098) - @uppy/aws-s3-multipart: add support for signing on the client (Antoine du Hamel / #4519) - @uppy/react: allow `id` from props (Merlijn Vos / #4570) - @uppy/aws-s3-multipart: fix lint warning (Antoine du Hamel / #4569) - @uppy/status-bar: listen to `upload` event instead of button click (Antoine du Hamel / #4563) - @uppy/aws-s3-multipart: fix support for non-multipart PUT upload (Antoine du Hamel / #4568) - @uppy/companion: fix esm imports in production/transpiled builds (Dominik Schmidt / #4561) - @uppy/locales: fix expression and spelling errors in es_ES (Rubén / #4567) - meta: upgrade dev dependencies (dependabot\[bot\]) - meta: Don't use triage label (Artur Paikin / #4552) - meta: update Cypress (Antoine du Hamel / #4562) - @uppy/box,@uppy/companion,@uppy/dropbox,@uppy/google-drive,@uppy/onedrive,@uppy/provider-views: Load Google Drive / OneDrive lists 5-10x faster & always load all files (Merlijn Vos / #4513) - @uppy/locales: Add missing pt-BR locales for ImageEditor plugin (Mateus Cruz / #4558) --- BUNDLE-README.md | 2 +- CHANGELOG.md | 32 ++++ README.md | 172 +++++++++--------- 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/aws-s3-multipart/CHANGELOG.md | 9 + packages/@uppy/aws-s3-multipart/package.json | 2 +- packages/@uppy/box/CHANGELOG.md | 7 + packages/@uppy/box/package.json | 2 +- packages/@uppy/companion-client/package.json | 2 +- packages/@uppy/companion/CHANGELOG.md | 8 + packages/@uppy/companion/package.json | 2 +- packages/@uppy/core/package.json | 2 +- packages/@uppy/dashboard/package.json | 2 +- packages/@uppy/dropbox/CHANGELOG.md | 7 + packages/@uppy/dropbox/package.json | 2 +- packages/@uppy/google-drive/CHANGELOG.md | 7 + packages/@uppy/google-drive/package.json | 2 +- packages/@uppy/locales/CHANGELOG.md | 8 + packages/@uppy/locales/package.json | 2 +- packages/@uppy/onedrive/CHANGELOG.md | 7 + packages/@uppy/onedrive/package.json | 2 +- packages/@uppy/provider-views/CHANGELOG.md | 8 + packages/@uppy/provider-views/package.json | 2 +- packages/@uppy/react/CHANGELOG.md | 7 + packages/@uppy/react/package.json | 2 +- packages/@uppy/status-bar/CHANGELOG.md | 7 + packages/@uppy/status-bar/package.json | 2 +- packages/@uppy/transloadit/CHANGELOG.md | 8 + packages/@uppy/transloadit/package.json | 2 +- packages/@uppy/utils/package.json | 2 +- packages/uppy/package.json | 2 +- 34 files changed, 229 insertions(+), 110 deletions(-) diff --git a/BUNDLE-README.md b/BUNDLE-README.md index df82e4fc05..99f72da017 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 1d3b01e859..1c8e7b20ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,38 @@ Please add your entries in this format: In the current stage we aim to release a new version at least every month. +## 3.12.0 + +Released: 2023-07-13 + +| Package | Version | Package | Version | +| ---------------------- | ------- | ---------------------- | ------- | +| @uppy/aws-s3-multipart | 3.5.0 | @uppy/locales | 3.2.3 | +| @uppy/box | 2.1.2 | @uppy/onedrive | 3.1.2 | +| @uppy/companion | 4.7.0 | @uppy/provider-views | 3.4.0 | +| @uppy/companion-client | 3.2.1 | @uppy/react | 3.1.3 | +| @uppy/core | 3.3.1 | @uppy/status-bar | 3.2.2 | +| @uppy/dashboard | 3.4.2 | @uppy/transloadit | 3.2.0 | +| @uppy/dropbox | 3.1.2 | @uppy/utils | 5.4.1 | +| @uppy/google-drive | 3.2.0 | uppy | 3.12.0 | + +- @uppy/transloadit: fix error message (Antoine du Hamel / #4572) +- @uppy/provider-views: add support for remote file paths (Mikael Finstad / #4537) +- @uppy/transloadit: implement Server-sent event API (Antoine du Hamel / #4098) +- @uppy/aws-s3-multipart: add support for signing on the client (Antoine du Hamel / #4519) +- @uppy/react: allow `id` from props (Merlijn Vos / #4570) +- @uppy/aws-s3-multipart: fix lint warning (Antoine du Hamel / #4569) +- @uppy/status-bar: listen to `upload` event instead of button click (Antoine du Hamel / #4563) +- @uppy/aws-s3-multipart: fix support for non-multipart PUT upload (Antoine du Hamel / #4568) +- @uppy/companion: fix esm imports in production/transpiled builds (Dominik Schmidt / #4561) +- @uppy/locales: fix expression and spelling errors in es_ES (Rubén / #4567) +- meta: upgrade dev dependencies (dependabot\[bot\]) +- meta: Don't use triage label (Artur Paikin / #4552) +- meta: update Cypress (Antoine du Hamel / #4562) +- @uppy/box,@uppy/companion,@uppy/dropbox,@uppy/google-drive,@uppy/onedrive,@uppy/provider-views: Load Google Drive / OneDrive lists 5-10x faster & always load all files (Merlijn Vos / #4513) +- @uppy/locales: Add missing pt-BR locales for ImageEditor plugin (Mateus Cruz / #4558) + + ## 3.11.0 Released: 2023-07-06 diff --git a/README.md b/README.md index 3cd7a73a09..46b0aca1e0 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ const uppy = new Uppy() npm install @uppy/core @uppy/dashboard @uppy/tus ``` -Add CSS [uppy.min.css](https://releases.transloadit.com/uppy/v3.11.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.12.0/uppy.min.css), either to your HTML page’s `` or include in JS, if your bundler of choice supports it. Alternatively, you can also use a pre-built bundle from Transloadit’s CDN: Edgly. In that case `Uppy` will attach itself to the global `window.Uppy` object. @@ -75,12 +75,12 @@ Alternatively, you can also use a pre-built bundle from Transloadit’s CDN: Edg ```html - +
+ ``` ## FAQ @@ -241,13 +241,13 @@ 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) | -[AJvanLoon](https://github.com/AJvanLoon) |[nqst](https://github.com/nqst) |[Murderlon](https://github.com/Murderlon) |[mifi](https://github.com/mifi) |[lakesare](https://github.com/lakesare) |[kiloreux](https://github.com/kiloreux) | +[AJvanLoon](https://github.com/AJvanLoon) |[nqst](https://github.com/nqst) |[Murderlon](https://github.com/Murderlon) |[mifi](https://github.com/mifi) |[lakesare](https://github.com/lakesare) |[github-actions[bot]](https://github.com/apps/github-actions) | :---: |:---: |:---: |:---: |:---: |:---: | -[AJvanLoon](https://github.com/AJvanLoon) |[nqst](https://github.com/nqst) |[Murderlon](https://github.com/Murderlon) |[mifi](https://github.com/mifi) |[lakesare](https://github.com/lakesare) |[kiloreux](https://github.com/kiloreux) | +[AJvanLoon](https://github.com/AJvanLoon) |[nqst](https://github.com/nqst) |[Murderlon](https://github.com/Murderlon) |[mifi](https://github.com/mifi) |[lakesare](https://github.com/lakesare) |[github-actions\[bot\]](https://github.com/apps/github-actions) | -[github-actions[bot]](https://github.com/apps/github-actions) |[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) |[sadovnychyi](https://github.com/sadovnychyi) |[samuelayo](https://github.com/samuelayo) |[richardwillars](https://github.com/richardwillars) |[ajkachnic](https://github.com/ajkachnic) | :---: |:---: |:---: |:---: |:---: |:---: | -[github-actions\[bot\]](https://github.com/apps/github-actions) |[dependabot\[bot\]](https://github.com/apps/dependabot) |[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) |[sadovnychyi](https://github.com/sadovnychyi) |[samuelayo](https://github.com/samuelayo) |[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) |[wilkoklak](https://github.com/wilkoklak) |[oliverpool](https://github.com/oliverpool) |[Botz](https://github.com/Botz) | :---: |:---: |:---: |:---: |:---: |:---: | @@ -317,25 +317,25 @@ Use Uppy in your project? [Let us know](https://github.com/transloadit/uppy/issu :---: |:---: |:---: |:---: |:---: |:---: | [adamelmore](https://github.com/adamelmore) |[ajh-sr](https://github.com/ajh-sr) |[adamvigneault](https://github.com/adamvigneault) |[Adrrei](https://github.com/Adrrei) |[adritasharma](https://github.com/adritasharma) |[ahmadissa](https://github.com/ahmadissa) | -[alexnj](https://github.com/alexnj) |[aalepis](https://github.com/aalepis) |[Dogfalo](https://github.com/Dogfalo) |[tekacs](https://github.com/tekacs) |[amitport](https://github.com/amitport) |[functino](https://github.com/functino) | +[asmt3](https://github.com/asmt3) |[alexnj](https://github.com/alexnj) |[aalepis](https://github.com/aalepis) |[Dogfalo](https://github.com/Dogfalo) |[tekacs](https://github.com/tekacs) |[amitport](https://github.com/amitport) | :---: |:---: |:---: |:---: |:---: |:---: | -[alexnj](https://github.com/alexnj) |[aalepis](https://github.com/aalepis) |[Dogfalo](https://github.com/Dogfalo) |[tekacs](https://github.com/tekacs) |[amitport](https://github.com/amitport) |[functino](https://github.com/functino) | +[asmt3](https://github.com/asmt3) |[alexnj](https://github.com/alexnj) |[aalepis](https://github.com/aalepis) |[Dogfalo](https://github.com/Dogfalo) |[tekacs](https://github.com/tekacs) |[amitport](https://github.com/amitport) | -[radarhere](https://github.com/radarhere) |[superandrew213](https://github.com/superandrew213) |[andrii-bodnar](https://github.com/andrii-bodnar) |[andychongyz](https://github.com/andychongyz) |[anthony0030](https://github.com/anthony0030) |[tyndria](https://github.com/tyndria) | +[functino](https://github.com/functino) |[radarhere](https://github.com/radarhere) |[superandrew213](https://github.com/superandrew213) |[andrii-bodnar](https://github.com/andrii-bodnar) |[andychongyz](https://github.com/andychongyz) |[anthony0030](https://github.com/anthony0030) | :---: |:---: |:---: |:---: |:---: |:---: | -[radarhere](https://github.com/radarhere) |[superandrew213](https://github.com/superandrew213) |[andrii-bodnar](https://github.com/andrii-bodnar) |[andychongyz](https://github.com/andychongyz) |[anthony0030](https://github.com/anthony0030) |[tyndria](https://github.com/tyndria) | +[functino](https://github.com/functino) |[radarhere](https://github.com/radarhere) |[superandrew213](https://github.com/superandrew213) |[andrii-bodnar](https://github.com/andrii-bodnar) |[andychongyz](https://github.com/andychongyz) |[anthony0030](https://github.com/anthony0030) | -[Abourass](https://github.com/Abourass) |[arthurdenner](https://github.com/arthurdenner) |[apuyou](https://github.com/apuyou) |[ash-jc-allen](https://github.com/ash-jc-allen) |[atsawin](https://github.com/atsawin) |[ayhankesicioglu](https://github.com/ayhankesicioglu) | +[tyndria](https://github.com/tyndria) |[Abourass](https://github.com/Abourass) |[arthurdenner](https://github.com/arthurdenner) |[apuyou](https://github.com/apuyou) |[ash-jc-allen](https://github.com/ash-jc-allen) |[atsawin](https://github.com/atsawin) | :---: |:---: |:---: |:---: |:---: |:---: | -[Abourass](https://github.com/Abourass) |[arthurdenner](https://github.com/arthurdenner) |[apuyou](https://github.com/apuyou) |[ash-jc-allen](https://github.com/ash-jc-allen) |[atsawin](https://github.com/atsawin) |[ayhankesicioglu](https://github.com/ayhankesicioglu) | +[tyndria](https://github.com/tyndria) |[Abourass](https://github.com/Abourass) |[arthurdenner](https://github.com/arthurdenner) |[apuyou](https://github.com/apuyou) |[ash-jc-allen](https://github.com/ash-jc-allen) |[atsawin](https://github.com/atsawin) | -[azeemba](https://github.com/azeemba) |[azizk](https://github.com/azizk) |[bducharme](https://github.com/bducharme) |[Quorafind](https://github.com/Quorafind) |[wbaaron](https://github.com/wbaaron) |[bedgerotto](https://github.com/bedgerotto) | +[ayhankesicioglu](https://github.com/ayhankesicioglu) |[azeemba](https://github.com/azeemba) |[azizk](https://github.com/azizk) |[bducharme](https://github.com/bducharme) |[Quorafind](https://github.com/Quorafind) |[wbaaron](https://github.com/wbaaron) | :---: |:---: |:---: |:---: |:---: |:---: | -[azeemba](https://github.com/azeemba) |[azizk](https://github.com/azizk) |[bducharme](https://github.com/bducharme) |[Quorafind](https://github.com/Quorafind) |[wbaaron](https://github.com/wbaaron) |[bedgerotto](https://github.com/bedgerotto) | +[ayhankesicioglu](https://github.com/ayhankesicioglu) |[azeemba](https://github.com/azeemba) |[azizk](https://github.com/azizk) |[bducharme](https://github.com/bducharme) |[Quorafind](https://github.com/Quorafind) |[wbaaron](https://github.com/wbaaron) | -[cyu](https://github.com/cyu) |[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) | +[bedgerotto](https://github.com/bedgerotto) |[cyu](https://github.com/cyu) |[cartfisk](https://github.com/cartfisk) |[cellvinchung](https://github.com/cellvinchung) |[chao](https://github.com/chao) |[Cretezy](https://github.com/Cretezy) | :---: |:---: |:---: |:---: |:---: |:---: | -[cyu](https://github.com/cyu) |[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) | +[bedgerotto](https://github.com/bedgerotto) |[cyu](https://github.com/cyu) |[cartfisk](https://github.com/cartfisk) |[cellvinchung](https://github.com/cellvinchung) |[chao](https://github.com/chao) |[Cretezy](https://github.com/Cretezy) | [charlybillaud](https://github.com/charlybillaud) |[csprance](https://github.com/csprance) |[cfra](https://github.com/cfra) |[Aarbel](https://github.com/Aarbel) |[cbush06](https://github.com/cbush06) |[czj](https://github.com/czj) | :---: |:---: |:---: |:---: |:---: |:---: | @@ -349,137 +349,141 @@ Use Uppy in your project? [Let us know](https://github.com/transloadit/uppy/issu :---: |:---: |:---: |:---: |:---: |:---: | [danilat](https://github.com/danilat) |[mrboomer](https://github.com/mrboomer) |[Cantabar](https://github.com/Cantabar) |[KaminskiDaniell](https://github.com/KaminskiDaniell) |[akizor](https://github.com/akizor) |[davilima6](https://github.com/davilima6) | -[DennisKofflard](https://github.com/DennisKofflard) |[jeetiss](https://github.com/jeetiss) |[sweetro](https://github.com/sweetro) |[EdgarSantiago93](https://github.com/EdgarSantiago93) |[emuell](https://github.com/emuell) |[efbautista](https://github.com/efbautista) | +[DennisKofflard](https://github.com/DennisKofflard) |[jeetiss](https://github.com/jeetiss) |[dschmidt](https://github.com/dschmidt) |[sweetro](https://github.com/sweetro) |[EdgarSantiago93](https://github.com/EdgarSantiago93) |[emuell](https://github.com/emuell) | :---: |:---: |:---: |:---: |:---: |:---: | -[DennisKofflard](https://github.com/DennisKofflard) |[jeetiss](https://github.com/jeetiss) |[sweetro](https://github.com/sweetro) |[EdgarSantiago93](https://github.com/EdgarSantiago93) |[emuell](https://github.com/emuell) |[efbautista](https://github.com/efbautista) | +[DennisKofflard](https://github.com/DennisKofflard) |[jeetiss](https://github.com/jeetiss) |[dschmidt](https://github.com/dschmidt) |[sweetro](https://github.com/sweetro) |[EdgarSantiago93](https://github.com/EdgarSantiago93) |[emuell](https://github.com/emuell) | -[yoldar](https://github.com/yoldar) |[eliOcs](https://github.com/eliOcs) |[EnricoSottile](https://github.com/EnricoSottile) |[epexa](https://github.com/epexa) |[Gkleinereva](https://github.com/Gkleinereva) |[fgallinari](https://github.com/fgallinari) | +[efbautista](https://github.com/efbautista) |[yoldar](https://github.com/yoldar) |[eliOcs](https://github.com/eliOcs) |[EnricoSottile](https://github.com/EnricoSottile) |[epexa](https://github.com/epexa) |[Gkleinereva](https://github.com/Gkleinereva) | :---: |:---: |:---: |:---: |:---: |:---: | -[yoldar](https://github.com/yoldar) |[eliOcs](https://github.com/eliOcs) |[EnricoSottile](https://github.com/EnricoSottile) |[epexa](https://github.com/epexa) |[Gkleinereva](https://github.com/Gkleinereva) |[fgallinari](https://github.com/fgallinari) | +[efbautista](https://github.com/efbautista) |[yoldar](https://github.com/yoldar) |[eliOcs](https://github.com/eliOcs) |[EnricoSottile](https://github.com/EnricoSottile) |[epexa](https://github.com/epexa) |[Gkleinereva](https://github.com/Gkleinereva) | -[dtrucs](https://github.com/dtrucs) |[fuadscodes](https://github.com/fuadscodes) |[gabiganam](https://github.com/gabiganam) |[geoffappleford](https://github.com/geoffappleford) |[gjungb](https://github.com/gjungb) |[roenschg](https://github.com/roenschg) | +[fgallinari](https://github.com/fgallinari) |[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[dtrucs](https://github.com/dtrucs) |[fuadscodes](https://github.com/fuadscodes) |[gabiganam](https://github.com/gabiganam) |[geoffappleford](https://github.com/geoffappleford) |[gjungb](https://github.com/gjungb) |[roenschg](https://github.com/roenschg) | +[fgallinari](https://github.com/fgallinari) |[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) | -[giacomocerquone](https://github.com/giacomocerquone) |[HughbertD](https://github.com/HughbertD) |[HussainAlkhalifah](https://github.com/HussainAlkhalifah) |[huydod](https://github.com/huydod) |[IanVS](https://github.com/IanVS) |[ishendyweb](https://github.com/ishendyweb) | +[gjungb](https://github.com/gjungb) |[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[giacomocerquone](https://github.com/giacomocerquone) |[HughbertD](https://github.com/HughbertD) |[HussainAlkhalifah](https://github.com/HussainAlkhalifah) |[huydod](https://github.com/huydod) |[IanVS](https://github.com/IanVS) |[ishendyweb](https://github.com/ishendyweb) | +[gjungb](https://github.com/gjungb) |[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) | -[NaxYo](https://github.com/NaxYo) |[intenzive](https://github.com/intenzive) |[GreenJimmy](https://github.com/GreenJimmy) |[mazoruss](https://github.com/mazoruss) |[JacobMGEvans](https://github.com/JacobMGEvans) |[gaejabong](https://github.com/gaejabong) | +[IanVS](https://github.com/IanVS) |[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[NaxYo](https://github.com/NaxYo) |[intenzive](https://github.com/intenzive) |[GreenJimmy](https://github.com/GreenJimmy) |[mazoruss](https://github.com/mazoruss) |[JacobMGEvans](https://github.com/JacobMGEvans) |[gaejabong](https://github.com/gaejabong) | +[IanVS](https://github.com/IanVS) |[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) | -[JakubHaladej](https://github.com/JakubHaladej) |[Jbithell](https://github.com/Jbithell) |[jcjmcclean](https://github.com/jcjmcclean) |[jamestiotio](https://github.com/jamestiotio) |[janklimo](https://github.com/janklimo) |[janwilts](https://github.com/janwilts) | +[JacobMGEvans](https://github.com/JacobMGEvans) |[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[JakubHaladej](https://github.com/JakubHaladej) |[Jbithell](https://github.com/Jbithell) |[jcjmcclean](https://github.com/jcjmcclean) |[jamestiotio](https://github.com/jamestiotio) |[janklimo](https://github.com/janklimo) |[janwilts](https://github.com/janwilts) | +[JacobMGEvans](https://github.com/JacobMGEvans) |[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) | -[vith](https://github.com/vith) |[jessica-coursera](https://github.com/jessica-coursera) |[Jmales](https://github.com/Jmales) |[theJoeBiz](https://github.com/theJoeBiz) |[profsmallpine](https://github.com/profsmallpine) |[chromacoma](https://github.com/chromacoma) | +[janklimo](https://github.com/janklimo) |[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[vith](https://github.com/vith) |[jessica-coursera](https://github.com/jessica-coursera) |[Jmales](https://github.com/Jmales) |[theJoeBiz](https://github.com/theJoeBiz) |[profsmallpine](https://github.com/profsmallpine) |[chromacoma](https://github.com/chromacoma) | +[janklimo](https://github.com/janklimo) |[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) | -[chromacoma](https://github.com/chromacoma) |[jsanchez034](https://github.com/jsanchez034) |[jonathanarbely](https://github.com/jonathanarbely) |[jderrough](https://github.com/jderrough) |[jorgeepc](https://github.com/jorgeepc) |[jszobody](https://github.com/jszobody) | +[profsmallpine](https://github.com/profsmallpine) |[chromacoma](https://github.com/chromacoma) |[jsanchez034](https://github.com/jsanchez034) |[jonathanarbely](https://github.com/jonathanarbely) |[jderrough](https://github.com/jderrough) |[jorgeepc](https://github.com/jorgeepc) | :---: |:---: |:---: |:---: |:---: |:---: | -[chromacoma](https://github.com/chromacoma) |[jsanchez034](https://github.com/jsanchez034) |[jonathanarbely](https://github.com/jonathanarbely) |[jderrough](https://github.com/jderrough) |[jorgeepc](https://github.com/jorgeepc) |[jszobody](https://github.com/jszobody) | +[profsmallpine](https://github.com/profsmallpine) |[chromacoma](https://github.com/chromacoma) |[jsanchez034](https://github.com/jsanchez034) |[jonathanarbely](https://github.com/jonathanarbely) |[jderrough](https://github.com/jderrough) |[jorgeepc](https://github.com/jorgeepc) | -[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) |[tykarol](https://github.com/tykarol) | +[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[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) |[tykarol](https://github.com/tykarol) | +[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) | -[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) |[elkebab](https://github.com/elkebab) | +[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[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) |[elkebab](https://github.com/elkebab) | +[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) | -[kyleparisi](https://github.com/kyleparisi) |[labohkip81](https://github.com/labohkip81) |[hoangbits](https://github.com/hoangbits) |[leaanthony](https://github.com/leaanthony) |[larowlan](https://github.com/larowlan) |[dviry](https://github.com/dviry) | +[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[kyleparisi](https://github.com/kyleparisi) |[labohkip81](https://github.com/labohkip81) |[hoangbits](https://github.com/hoangbits) |[leaanthony](https://github.com/leaanthony) |[larowlan](https://github.com/larowlan) |[dviry](https://github.com/dviry) | +[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) | -[galli-leo](https://github.com/galli-leo) |[leods92](https://github.com/leods92) |[dolphinigle](https://github.com/dolphinigle) |[louim](https://github.com/louim) |[ombr](https://github.com/ombr) |[lucaperret](https://github.com/lucaperret) | +[dviry](https://github.com/dviry) |[galli-leo](https://github.com/galli-leo) |[leods92](https://github.com/leods92) |[dolphinigle](https://github.com/dolphinigle) |[louim](https://github.com/louim) |[ombr](https://github.com/ombr) | :---: |:---: |:---: |:---: |:---: |:---: | -[galli-leo](https://github.com/galli-leo) |[leods92](https://github.com/leods92) |[dolphinigle](https://github.com/dolphinigle) |[louim](https://github.com/louim) |[ombr](https://github.com/ombr) |[lucaperret](https://github.com/lucaperret) | +[dviry](https://github.com/dviry) |[galli-leo](https://github.com/galli-leo) |[leods92](https://github.com/leods92) |[dolphinigle](https://github.com/dolphinigle) |[louim](https://github.com/louim) |[ombr](https://github.com/ombr) | -[marc-mabe](https://github.com/marc-mabe) |[onhate](https://github.com/onhate) |[mperrando](https://github.com/mperrando) |[marcosthejew](https://github.com/marcosthejew) |[marcusforsberg](https://github.com/marcusforsberg) |[Acconut](https://github.com/Acconut) | +[lucaperret](https://github.com/lucaperret) |[lucax88x](https://github.com/lucax88x) |[marc-mabe](https://github.com/marc-mabe) |[onhate](https://github.com/onhate) |[mperrando](https://github.com/mperrando) |[marcosthejew](https://github.com/marcosthejew) | :---: |:---: |:---: |:---: |:---: |:---: | -[marc-mabe](https://github.com/marc-mabe) |[onhate](https://github.com/onhate) |[mperrando](https://github.com/mperrando) |[marcosthejew](https://github.com/marcosthejew) |[marcusforsberg](https://github.com/marcusforsberg) |[Acconut](https://github.com/Acconut) | +[lucaperret](https://github.com/lucaperret) |[lucax88x](https://github.com/lucax88x) |[marc-mabe](https://github.com/marc-mabe) |[onhate](https://github.com/onhate) |[mperrando](https://github.com/mperrando) |[marcosthejew](https://github.com/marcosthejew) | -[martin-brennan](https://github.com/martin-brennan) |[masaok](https://github.com/masaok) |[mattfik](https://github.com/mattfik) |[mjesuele](https://github.com/mjesuele) |[matthewhartstonge](https://github.com/matthewhartstonge) |[mauricioribeiro](https://github.com/mauricioribeiro) | +[marcusforsberg](https://github.com/marcusforsberg) |[Acconut](https://github.com/Acconut) |[martin-brennan](https://github.com/martin-brennan) |[masaok](https://github.com/masaok) |[masumulu28](https://github.com/masumulu28) |[mateuscruz](https://github.com/mateuscruz) | :---: |:---: |:---: |:---: |:---: |:---: | -[martin-brennan](https://github.com/martin-brennan) |[masaok](https://github.com/masaok) |[mattfik](https://github.com/mattfik) |[mjesuele](https://github.com/mjesuele) |[matthewhartstonge](https://github.com/matthewhartstonge) |[mauricioribeiro](https://github.com/mauricioribeiro) | +[marcusforsberg](https://github.com/marcusforsberg) |[Acconut](https://github.com/Acconut) |[martin-brennan](https://github.com/martin-brennan) |[masaok](https://github.com/masaok) |[masumulu28](https://github.com/masumulu28) |[mateuscruz](https://github.com/mateuscruz) | -[hrsh](https://github.com/hrsh) |[mhulet](https://github.com/mhulet) |[mkopinsky](https://github.com/mkopinsky) |[ken-kuro](https://github.com/ken-kuro) |[achmiral](https://github.com/achmiral) |[boudra](https://github.com/boudra) | +[mattfik](https://github.com/mattfik) |[mjesuele](https://github.com/mjesuele) |[matthewhartstonge](https://github.com/matthewhartstonge) |[mauricioribeiro](https://github.com/mauricioribeiro) |[hrsh](https://github.com/hrsh) |[mhulet](https://github.com/mhulet) | :---: |:---: |:---: |:---: |:---: |:---: | -[hrsh](https://github.com/hrsh) |[mhulet](https://github.com/mhulet) |[mkopinsky](https://github.com/mkopinsky) |[ken-kuro](https://github.com/ken-kuro) |[achmiral](https://github.com/achmiral) |[boudra](https://github.com/boudra) | +[mattfik](https://github.com/mattfik) |[mjesuele](https://github.com/mjesuele) |[matthewhartstonge](https://github.com/matthewhartstonge) |[mauricioribeiro](https://github.com/mauricioribeiro) |[hrsh](https://github.com/hrsh) |[mhulet](https://github.com/mhulet) | -[mnafees](https://github.com/mnafees) |[shahimclt](https://github.com/shahimclt) |[mogzol](https://github.com/mogzol) |[navruzm](https://github.com/navruzm) |[marton-laszlo-attila](https://github.com/marton-laszlo-attila) |[pleasespammelater](https://github.com/pleasespammelater) | +[mkopinsky](https://github.com/mkopinsky) |[ken-kuro](https://github.com/ken-kuro) |[achmiral](https://github.com/achmiral) |[boudra](https://github.com/boudra) |[mnafees](https://github.com/mnafees) |[shahimclt](https://github.com/shahimclt) | :---: |:---: |:---: |:---: |:---: |:---: | -[mnafees](https://github.com/mnafees) |[shahimclt](https://github.com/shahimclt) |[mogzol](https://github.com/mogzol) |[navruzm](https://github.com/navruzm) |[marton-laszlo-attila](https://github.com/marton-laszlo-attila) |[pleasespammelater](https://github.com/pleasespammelater) | +[mkopinsky](https://github.com/mkopinsky) |[ken-kuro](https://github.com/ken-kuro) |[achmiral](https://github.com/achmiral) |[boudra](https://github.com/boudra) |[mnafees](https://github.com/mnafees) |[shahimclt](https://github.com/shahimclt) | -[naveed-ahmad](https://github.com/naveed-ahmad) |[trungcva10a6tn](https://github.com/trungcva10a6tn) |[nicojones](https://github.com/nicojones) |[coreprocess](https://github.com/coreprocess) |[nil1511](https://github.com/nil1511) |[leftdevel](https://github.com/leftdevel) | +[mogzol](https://github.com/mogzol) |[navruzm](https://github.com/navruzm) |[marton-laszlo-attila](https://github.com/marton-laszlo-attila) |[pleasespammelater](https://github.com/pleasespammelater) |[naveed-ahmad](https://github.com/naveed-ahmad) |[trungcva10a6tn](https://github.com/trungcva10a6tn) | :---: |:---: |:---: |:---: |:---: |:---: | -[naveed-ahmad](https://github.com/naveed-ahmad) |[trungcva10a6tn](https://github.com/trungcva10a6tn) |[nicojones](https://github.com/nicojones) |[coreprocess](https://github.com/coreprocess) |[nil1511](https://github.com/nil1511) |[leftdevel](https://github.com/leftdevel) | +[mogzol](https://github.com/mogzol) |[navruzm](https://github.com/navruzm) |[marton-laszlo-attila](https://github.com/marton-laszlo-attila) |[pleasespammelater](https://github.com/pleasespammelater) |[naveed-ahmad](https://github.com/naveed-ahmad) |[trungcva10a6tn](https://github.com/trungcva10a6tn) | -[Ozodbek1405](https://github.com/Ozodbek1405) |[cryptic022](https://github.com/cryptic022) |[pascalwengerter](https://github.com/pascalwengerter) |[patricklindsay](https://github.com/patricklindsay) |[plneto](https://github.com/plneto) |[pedrofs](https://github.com/pedrofs) | +[nicojones](https://github.com/nicojones) |[coreprocess](https://github.com/coreprocess) |[nil1511](https://github.com/nil1511) |[leftdevel](https://github.com/leftdevel) |[Ozodbek1405](https://github.com/Ozodbek1405) |[cryptic022](https://github.com/cryptic022) | :---: |:---: |:---: |:---: |:---: |:---: | -[Ozodbek1405](https://github.com/Ozodbek1405) |[cryptic022](https://github.com/cryptic022) |[pascalwengerter](https://github.com/pascalwengerter) |[patricklindsay](https://github.com/patricklindsay) |[plneto](https://github.com/plneto) |[pedrofs](https://github.com/pedrofs) | +[nicojones](https://github.com/nicojones) |[coreprocess](https://github.com/coreprocess) |[nil1511](https://github.com/nil1511) |[leftdevel](https://github.com/leftdevel) |[Ozodbek1405](https://github.com/Ozodbek1405) |[cryptic022](https://github.com/cryptic022) | -[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) | +[pascalwengerter](https://github.com/pascalwengerter) |[patricklindsay](https://github.com/patricklindsay) |[plneto](https://github.com/plneto) |[pedrofs](https://github.com/pedrofs) |[pmusaraj](https://github.com/pmusaraj) |[phillipalexander](https://github.com/phillipalexander) | :---: |:---: |:---: |:---: |:---: |:---: | -[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) | +[pascalwengerter](https://github.com/pascalwengerter) |[patricklindsay](https://github.com/patricklindsay) |[plneto](https://github.com/plneto) |[pedrofs](https://github.com/pedrofs) |[pmusaraj](https://github.com/pmusaraj) |[phillipalexander](https://github.com/phillipalexander) | -[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) | +[ppadmavilasom](https://github.com/ppadmavilasom) |[Pzoco](https://github.com/Pzoco) |[eman8519](https://github.com/eman8519) |[luarmr](https://github.com/luarmr) |[raulibanez](https://github.com/raulibanez) |[refo](https://github.com/refo) | :---: |:---: |:---: |:---: |:---: |:---: | -[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) | +[ppadmavilasom](https://github.com/ppadmavilasom) |[Pzoco](https://github.com/Pzoco) |[eman8519](https://github.com/eman8519) |[luarmr](https://github.com/luarmr) |[raulibanez](https://github.com/raulibanez) |[refo](https://github.com/refo) | -[rart](https://github.com/rart) |[fortunto2](https://github.com/fortunto2) |[samuelcolburn](https://github.com/samuelcolburn) |[sdebacker](https://github.com/sdebacker) |[sebasegovia01](https://github.com/sebasegovia01) |[sergei-zelinsky](https://github.com/sergei-zelinsky) | +[SxDx](https://github.com/SxDx) |[robwilson1](https://github.com/robwilson1) |[scherroman](https://github.com/scherroman) |[rossng](https://github.com/rossng) |[rart](https://github.com/rart) |[GNURub](https://github.com/GNURub) | :---: |:---: |:---: |:---: |:---: |:---: | -[rart](https://github.com/rart) |[fortunto2](https://github.com/fortunto2) |[samuelcolburn](https://github.com/samuelcolburn) |[sdebacker](https://github.com/sdebacker) |[sebasegovia01](https://github.com/sebasegovia01) |[sergei-zelinsky](https://github.com/sergei-zelinsky) | +[SxDx](https://github.com/SxDx) |[robwilson1](https://github.com/robwilson1) |[scherroman](https://github.com/scherroman) |[rossng](https://github.com/rossng) |[rart](https://github.com/rart) |[GNURub](https://github.com/GNURub) | -[szh](https://github.com/szh) |[SpazzMarticus](https://github.com/SpazzMarticus) |[schonert](https://github.com/schonert) |[waptik](https://github.com/waptik) |[quigebo](https://github.com/quigebo) |[amaitu](https://github.com/amaitu) | +[fortunto2](https://github.com/fortunto2) |[samuelcolburn](https://github.com/samuelcolburn) |[sdebacker](https://github.com/sdebacker) |[sebasegovia01](https://github.com/sebasegovia01) |[sergei-zelinsky](https://github.com/sergei-zelinsky) |[szh](https://github.com/szh) | :---: |:---: |:---: |:---: |:---: |:---: | -[szh](https://github.com/szh) |[SpazzMarticus](https://github.com/SpazzMarticus) |[schonert](https://github.com/schonert) |[waptik](https://github.com/waptik) |[quigebo](https://github.com/quigebo) |[amaitu](https://github.com/amaitu) | +[fortunto2](https://github.com/fortunto2) |[samuelcolburn](https://github.com/samuelcolburn) |[sdebacker](https://github.com/sdebacker) |[sebasegovia01](https://github.com/sebasegovia01) |[sergei-zelinsky](https://github.com/sergei-zelinsky) |[szh](https://github.com/szh) | -[amaitu](https://github.com/amaitu) |[steverob](https://github.com/steverob) |[sjauld](https://github.com/sjauld) |[strayer](https://github.com/strayer) |[taj](https://github.com/taj) |[Tashows](https://github.com/Tashows) | +[SpazzMarticus](https://github.com/SpazzMarticus) |[waptik](https://github.com/waptik) |[quigebo](https://github.com/quigebo) |[amaitu](https://github.com/amaitu) |[steverob](https://github.com/steverob) |[sjauld](https://github.com/sjauld) | :---: |:---: |:---: |:---: |:---: |:---: | -[amaitu](https://github.com/amaitu) |[steverob](https://github.com/steverob) |[sjauld](https://github.com/sjauld) |[strayer](https://github.com/strayer) |[taj](https://github.com/taj) |[Tashows](https://github.com/Tashows) | +[SpazzMarticus](https://github.com/SpazzMarticus) |[waptik](https://github.com/waptik) |[quigebo](https://github.com/quigebo) |[amaitu](https://github.com/amaitu) |[steverob](https://github.com/steverob) |[sjauld](https://github.com/sjauld) | -[tcgj](https://github.com/tcgj) |[twarlop](https://github.com/twarlop) |[tmaier](https://github.com/tmaier) |[WIStudent](https://github.com/WIStudent) |[tomsaleeba](https://github.com/tomsaleeba) |[tomekp](https://github.com/tomekp) | +[strayer](https://github.com/strayer) |[taj](https://github.com/taj) |[Tashows](https://github.com/Tashows) |[tcgj](https://github.com/tcgj) |[twarlop](https://github.com/twarlop) |[tmaier](https://github.com/tmaier) | :---: |:---: |:---: |:---: |:---: |:---: | -[tcgj](https://github.com/tcgj) |[twarlop](https://github.com/twarlop) |[tmaier](https://github.com/tmaier) |[WIStudent](https://github.com/WIStudent) |[tomsaleeba](https://github.com/tomsaleeba) |[tomekp](https://github.com/tomekp) | +[strayer](https://github.com/strayer) |[taj](https://github.com/taj) |[Tashows](https://github.com/Tashows) |[tcgj](https://github.com/tcgj) |[twarlop](https://github.com/twarlop) |[tmaier](https://github.com/tmaier) | -[tvaliasek](https://github.com/tvaliasek) |[top-master](https://github.com/top-master) |[vially](https://github.com/vially) |[valentinoli](https://github.com/valentinoli) |[stiig](https://github.com/stiig) |[nagyv](https://github.com/nagyv) | +[WIStudent](https://github.com/WIStudent) |[tomsaleeba](https://github.com/tomsaleeba) |[tomekp](https://github.com/tomekp) |[tvaliasek](https://github.com/tvaliasek) |[top-master](https://github.com/top-master) |[vially](https://github.com/vially) | :---: |:---: |:---: |:---: |:---: |:---: | -[tvaliasek](https://github.com/tvaliasek) |[top-master](https://github.com/top-master) |[vially](https://github.com/vially) |[valentinoli](https://github.com/valentinoli) |[stiig](https://github.com/stiig) |[nagyv](https://github.com/nagyv) | +[WIStudent](https://github.com/WIStudent) |[tomsaleeba](https://github.com/tomsaleeba) |[tomekp](https://github.com/tomekp) |[tvaliasek](https://github.com/tvaliasek) |[top-master](https://github.com/top-master) |[vially](https://github.com/vially) | -[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) | +[valentinoli](https://github.com/valentinoli) |[stiig](https://github.com/stiig) |[nagyv](https://github.com/nagyv) |[dwnste](https://github.com/dwnste) |[weston-sankey-mark43](https://github.com/weston-sankey-mark43) |[willycamargo](https://github.com/willycamargo) | :---: |:---: |:---: |:---: |:---: |:---: | -[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) | +[valentinoli](https://github.com/valentinoli) |[stiig](https://github.com/stiig) |[nagyv](https://github.com/nagyv) |[dwnste](https://github.com/dwnste) |[weston-sankey-mark43](https://github.com/weston-sankey-mark43) |[willycamargo](https://github.com/willycamargo) | -[zacharylawson](https://github.com/zacharylawson) |[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) | +[xhocquet](https://github.com/xhocquet) |[YehudaKremer](https://github.com/YehudaKremer) |[zachconner](https://github.com/zachconner) |[zacharylawson](https://github.com/zacharylawson) |[zackbloom](https://github.com/zackbloom) |[sartoshi-foot-dao](https://github.com/sartoshi-foot-dao) | :---: |:---: |:---: |:---: |:---: |:---: | -[zacharylawson](https://github.com/zacharylawson) |[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) | +[xhocquet](https://github.com/xhocquet) |[YehudaKremer](https://github.com/YehudaKremer) |[zachconner](https://github.com/zachconner) |[zacharylawson](https://github.com/zacharylawson) |[zackbloom](https://github.com/zackbloom) |[sartoshi-foot-dao](https://github.com/sartoshi-foot-dao) | -[avalla](https://github.com/avalla) |[bdirito](https://github.com/bdirito) |[c0b41](https://github.com/c0b41) |[canvasbh](https://github.com/canvasbh) |[christianwengert](https://github.com/christianwengert) |[craigcbrunner](https://github.com/craigcbrunner) | +[aduh95-test-account](https://github.com/aduh95-test-account) |[agreene-coursera](https://github.com/agreene-coursera) |[alfatv](https://github.com/alfatv) |[arggh](https://github.com/arggh) |[avalla](https://github.com/avalla) |[bdirito](https://github.com/bdirito) | :---: |:---: |:---: |:---: |:---: |:---: | -[avalla](https://github.com/avalla) |[bdirito](https://github.com/bdirito) |[c0b41](https://github.com/c0b41) |[canvasbh](https://github.com/canvasbh) |[christianwengert](https://github.com/christianwengert) |[craigcbrunner](https://github.com/craigcbrunner) | +[aduh95-test-account](https://github.com/aduh95-test-account) |[agreene-coursera](https://github.com/agreene-coursera) |[alfatv](https://github.com/alfatv) |[arggh](https://github.com/arggh) |[avalla](https://github.com/avalla) |[bdirito](https://github.com/bdirito) | -[darthf1](https://github.com/darthf1) |[dkisic](https://github.com/dkisic) |[elliotsayes](https://github.com/elliotsayes) |[fingul](https://github.com/fingul) |[franckl](https://github.com/franckl) |[gaelicwinter](https://github.com/gaelicwinter) | +[c0b41](https://github.com/c0b41) |[canvasbh](https://github.com/canvasbh) |[christianwengert](https://github.com/christianwengert) |[craigcbrunner](https://github.com/craigcbrunner) |[darthf1](https://github.com/darthf1) |[dkisic](https://github.com/dkisic) | :---: |:---: |:---: |:---: |:---: |:---: | -[darthf1](https://github.com/darthf1) |[dkisic](https://github.com/dkisic) |[elliotsayes](https://github.com/elliotsayes) |[fingul](https://github.com/fingul) |[franckl](https://github.com/franckl) |[gaelicwinter](https://github.com/gaelicwinter) | +[c0b41](https://github.com/c0b41) |[canvasbh](https://github.com/canvasbh) |[christianwengert](https://github.com/christianwengert) |[craigcbrunner](https://github.com/craigcbrunner) |[darthf1](https://github.com/darthf1) |[dkisic](https://github.com/dkisic) | -[green-mike](https://github.com/green-mike) |[hxgf](https://github.com/hxgf) |[johnmanjiro13](https://github.com/johnmanjiro13) |[sontixyou](https://github.com/sontixyou) |[kode-ninja](https://github.com/kode-ninja) |[jx-zyf](https://github.com/jx-zyf) | +[elliotsayes](https://github.com/elliotsayes) |[fingul](https://github.com/fingul) |[franckl](https://github.com/franckl) |[gaelicwinter](https://github.com/gaelicwinter) |[green-mike](https://github.com/green-mike) |[hxgf](https://github.com/hxgf) | :---: |:---: |:---: |:---: |:---: |:---: | -[green-mike](https://github.com/green-mike) |[hxgf](https://github.com/hxgf) |[johnmanjiro13](https://github.com/johnmanjiro13) |[sontixyou](https://github.com/sontixyou) |[kode-ninja](https://github.com/kode-ninja) |[jx-zyf](https://github.com/jx-zyf) | +[elliotsayes](https://github.com/elliotsayes) |[fingul](https://github.com/fingul) |[franckl](https://github.com/franckl) |[gaelicwinter](https://github.com/gaelicwinter) |[green-mike](https://github.com/green-mike) |[hxgf](https://github.com/hxgf) | -[magumbo](https://github.com/magumbo) |[mosi-kha](https://github.com/mosi-kha) |[neuronet77](https://github.com/neuronet77) |[ninesalt](https://github.com/ninesalt) |[phil714](https://github.com/phil714) |[luntta](https://github.com/luntta) | +[johnmanjiro13](https://github.com/johnmanjiro13) |[sontixyou](https://github.com/sontixyou) |[kode-ninja](https://github.com/kode-ninja) |[jx-zyf](https://github.com/jx-zyf) |[magumbo](https://github.com/magumbo) |[mosi-kha](https://github.com/mosi-kha) | :---: |:---: |:---: |:---: |:---: |:---: | -[magumbo](https://github.com/magumbo) |[mosi-kha](https://github.com/mosi-kha) |[neuronet77](https://github.com/neuronet77) |[ninesalt](https://github.com/ninesalt) |[phil714](https://github.com/phil714) |[luntta](https://github.com/luntta) | +[johnmanjiro13](https://github.com/johnmanjiro13) |[sontixyou](https://github.com/sontixyou) |[kode-ninja](https://github.com/kode-ninja) |[jx-zyf](https://github.com/jx-zyf) |[magumbo](https://github.com/magumbo) |[mosi-kha](https://github.com/mosi-kha) | -[rhymes](https://github.com/rhymes) |[rlebosse](https://github.com/rlebosse) |[rtaieb](https://github.com/rtaieb) |[slawexxx44](https://github.com/slawexxx44) |[stduhpf](https://github.com/stduhpf) |[thanhthot](https://github.com/thanhthot) | +[neuronet77](https://github.com/neuronet77) |[ninesalt](https://github.com/ninesalt) |[phil714](https://github.com/phil714) |[luntta](https://github.com/luntta) |[rhymes](https://github.com/rhymes) |[rlebosse](https://github.com/rlebosse) | :---: |:---: |:---: |:---: |:---: |:---: | -[rhymes](https://github.com/rhymes) |[rlebosse](https://github.com/rlebosse) |[rtaieb](https://github.com/rtaieb) |[slawexxx44](https://github.com/slawexxx44) |[stduhpf](https://github.com/stduhpf) |[thanhthot](https://github.com/thanhthot) | +[neuronet77](https://github.com/neuronet77) |[ninesalt](https://github.com/ninesalt) |[phil714](https://github.com/phil714) |[luntta](https://github.com/luntta) |[rhymes](https://github.com/rhymes) |[rlebosse](https://github.com/rlebosse) | -[thanhthot](https://github.com/thanhthot) |[tusharjkhunt](https://github.com/tusharjkhunt) |[vedran555](https://github.com/vedran555) |[yoann-hellopret](https://github.com/yoann-hellopret) |[olitomas](https://github.com/olitomas) |[JimmyLv](https://github.com/JimmyLv) | +[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[thanhthot](https://github.com/thanhthot) |[tusharjkhunt](https://github.com/tusharjkhunt) |[vedran555](https://github.com/vedran555) |[yoann-hellopret](https://github.com/yoann-hellopret) |[olitomas](https://github.com/olitomas) |[JimmyLv](https://github.com/JimmyLv) | +[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) | + +[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) | diff --git a/examples/aws-nodejs/public/drag.html b/examples/aws-nodejs/public/drag.html index 3c5581063f..4bde071adc 100644 --- a/examples/aws-nodejs/public/drag.html +++ b/examples/aws-nodejs/public/drag.html @@ -3,7 +3,7 @@ Uppy - +
@@ -14,7 +14,7 @@
Uploaded files:
    - + `) 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 1c8e7b20ed..17d43f05ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,30 @@ Please add your entries in this format: In the current stage we aim to release a new version at least every month. +## 3.13.0 + +Released: 2023-07-20 + +| Package | Version | Package | Version | +| ---------------------- | ------- | ---------------------- | ------- | +| @uppy/aws-s3-multipart | 3.5.1 | @uppy/provider-views | 3.4.1 | +| @uppy/companion-client | 3.2.2 | @uppy/status-bar | 3.2.3 | +| @uppy/dashboard | 3.5.0 | @uppy/utils | 5.4.2 | +| @uppy/locales | 3.2.4 | uppy | 3.13.0 | + +- meta: Add i18n to CONTRIBUTING.md (Mikael Finstad / #4591) +- @uppy/provider-views: Add VirtualList to ProviderView (Merlijn Vos / #4566) +- @uppy/provider-views: fix race conditions with folder loading (Mikael Finstad / #4578) +- @uppy/status-bar: fix ETA when status bar is installed during upload (Antoine du Hamel / #4588) +- @uppy/provider-views: fix infinite folder loading (Mikael Finstad / #4590) +- meta: examples/aws: client-side signing (Antoine du Hamel / #4463) +- meta: Bump word-wrap from 1.2.3 to 1.2.4 (dependabot[bot] / #4586) +- meta: e2e: increase `requestTimeout` to 16s (Antoine du Hamel / #4587) +- @uppy/locales: update zh_TW translation (5idereal / #4583) +- @uppy/aws-s3-multipart: fix crash on pause/resume (Merlijn Vos / #4581) +- @uppy/aws-s3-multipart: do not access `globalThis.crypto` on the top-level (Bryan J Swift / #4584) + + ## 3.12.0 Released: 2023-07-13 diff --git a/README.md b/README.md index 46b0aca1e0..62482127ad 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ const uppy = new Uppy() npm install @uppy/core @uppy/dashboard @uppy/tus ``` -Add CSS [uppy.min.css](https://releases.transloadit.com/uppy/v3.12.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.13.0/uppy.min.css), either to your HTML page’s `` or include in JS, if your bundler of choice supports it. Alternatively, you can also use a pre-built bundle from Transloadit’s CDN: Edgly. In that case `Uppy` will attach itself to the global `window.Uppy` object. @@ -75,12 +75,12 @@ Alternatively, you can also use a pre-built bundle from Transloadit’s CDN: Edg ```html - +
    + ``` ## FAQ @@ -277,41 +277,41 @@ Use Uppy in your project? [Let us know](https://github.com/transloadit/uppy/issu :---: |:---: |:---: |:---: |:---: |:---: | [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) | -[ahmedkandel](https://github.com/ahmedkandel) |[btrice](https://github.com/btrice) |[AndrwM](https://github.com/AndrwM) |[behnammodi](https://github.com/behnammodi) |[BePo65](https://github.com/BePo65) |[bradedelman](https://github.com/bradedelman) | +[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[ahmedkandel](https://github.com/ahmedkandel) |[btrice](https://github.com/btrice) |[AndrwM](https://github.com/AndrwM) |[behnammodi](https://github.com/behnammodi) |[BePo65](https://github.com/BePo65) |[bradedelman](https://github.com/bradedelman) | +[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) | -[camiloforero](https://github.com/camiloforero) |[command-tab](https://github.com/command-tab) |[craigjennings11](https://github.com/craigjennings11) |[davekiss](https://github.com/davekiss) |[denysdesign](https://github.com/denysdesign) |[ethanwillis](https://github.com/ethanwillis) | +[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[camiloforero](https://github.com/camiloforero) |[command-tab](https://github.com/command-tab) |[craigjennings11](https://github.com/craigjennings11) |[davekiss](https://github.com/davekiss) |[denysdesign](https://github.com/denysdesign) |[ethanwillis](https://github.com/ethanwillis) | +[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) | -[frobinsonj](https://github.com/frobinsonj) |[geertclerx](https://github.com/geertclerx) |[ghasrfakhri](https://github.com/ghasrfakhri) |[jasonbosco](https://github.com/jasonbosco) |[jedwood](https://github.com/jedwood) |[dogrocker](https://github.com/dogrocker) | +[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[frobinsonj](https://github.com/frobinsonj) |[geertclerx](https://github.com/geertclerx) |[ghasrfakhri](https://github.com/ghasrfakhri) |[jasonbosco](https://github.com/jasonbosco) |[jedwood](https://github.com/jedwood) |[dogrocker](https://github.com/dogrocker) | +[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) | -[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) |[martiuslim](https://github.com/martiuslim) | +[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[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) |[martiuslim](https://github.com/martiuslim) | +[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) | -[msand](https://github.com/msand) |[paescuj](https://github.com/paescuj) |[richartkeil](https://github.com/richartkeil) |[richmeij](https://github.com/richmeij) |[rdimartino](https://github.com/rdimartino) |[rosenfeld](https://github.com/rosenfeld) | +[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[msand](https://github.com/msand) |[paescuj](https://github.com/paescuj) |[richartkeil](https://github.com/richartkeil) |[richmeij](https://github.com/richmeij) |[rdimartino](https://github.com/rdimartino) |[rosenfeld](https://github.com/rosenfeld) | +[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) | -[jrschumacher](https://github.com/jrschumacher) |[scottbessler](https://github.com/scottbessler) |[SlavikTraktor](https://github.com/SlavikTraktor) |[schonert](https://github.com/schonert) |[ThomasG77](https://github.com/ThomasG77) |[sparanoid](https://github.com/sparanoid) | +[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) |[ThomasG77](https://github.com/ThomasG77) | :---: |:---: |:---: |:---: |:---: |:---: | -[jrschumacher](https://github.com/jrschumacher) |[scottbessler](https://github.com/scottbessler) |[SlavikTraktor](https://github.com/SlavikTraktor) |[schonert](https://github.com/schonert) |[ThomasG77](https://github.com/ThomasG77) |[sparanoid](https://github.com/sparanoid) | +[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) |[ThomasG77](https://github.com/ThomasG77) | -[zhuangya](https://github.com/zhuangya) |[yaegor](https://github.com/yaegor) |[Youssef1313](https://github.com/Youssef1313) |[allenfantasy](https://github.com/allenfantasy) |[Zyclotrop-j](https://github.com/Zyclotrop-j) |[anark](https://github.com/anark) | +[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) |[Zyclotrop-j](https://github.com/Zyclotrop-j) | :---: |:---: |:---: |:---: |:---: |:---: | -[zhuangya](https://github.com/zhuangya) |[yaegor](https://github.com/yaegor) |[Youssef1313](https://github.com/Youssef1313) |[allenfantasy](https://github.com/allenfantasy) |[Zyclotrop-j](https://github.com/Zyclotrop-j) |[anark](https://github.com/anark) | +[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) |[Zyclotrop-j](https://github.com/Zyclotrop-j) | -[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) |[mkabatek](https://github.com/mkabatek) | +[anark](https://github.com/anark) |[fortrieb](https://github.com/fortrieb) |[heocoi](https://github.com/heocoi) |[jarey](https://github.com/jarey) |[muhammadInam](https://github.com/muhammadInam) |[rettgerst](https://github.com/rettgerst) | :---: |:---: |:---: |:---: |:---: |:---: | -[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) |[mkabatek](https://github.com/mkabatek) | +[anark](https://github.com/anark) |[fortrieb](https://github.com/fortrieb) |[heocoi](https://github.com/heocoi) |[jarey](https://github.com/jarey) |[muhammadInam](https://github.com/muhammadInam) |[rettgerst](https://github.com/rettgerst) | -[jukakoski](https://github.com/jukakoski) |[olemoign](https://github.com/olemoign) |[5idereal](https://github.com/5idereal) |[ajschmidt8](https://github.com/ajschmidt8) |[superhawk610](https://github.com/superhawk610) |[abannach](https://github.com/abannach) | +[mkabatek](https://github.com/mkabatek) |[jukakoski](https://github.com/jukakoski) |[olemoign](https://github.com/olemoign) |[ajschmidt8](https://github.com/ajschmidt8) |[superhawk610](https://github.com/superhawk610) |[abannach](https://github.com/abannach) | :---: |:---: |:---: |:---: |:---: |:---: | -[jukakoski](https://github.com/jukakoski) |[olemoign](https://github.com/olemoign) |[5idereal](https://github.com/5idereal) |[ajschmidt8](https://github.com/ajschmidt8) |[superhawk610](https://github.com/superhawk610) |[abannach](https://github.com/abannach) | +[mkabatek](https://github.com/mkabatek) |[jukakoski](https://github.com/jukakoski) |[olemoign](https://github.com/olemoign) |[ajschmidt8](https://github.com/ajschmidt8) |[superhawk610](https://github.com/superhawk610) |[abannach](https://github.com/abannach) | [adamelmore](https://github.com/adamelmore) |[ajh-sr](https://github.com/ajh-sr) |[adamvigneault](https://github.com/adamvigneault) |[Adrrei](https://github.com/Adrrei) |[adritasharma](https://github.com/adritasharma) |[ahmadissa](https://github.com/ahmadissa) | :---: |:---: |:---: |:---: |:---: |:---: | @@ -333,157 +333,157 @@ Use Uppy in your project? [Let us know](https://github.com/transloadit/uppy/issu :---: |:---: |:---: |:---: |:---: |:---: | [ayhankesicioglu](https://github.com/ayhankesicioglu) |[azeemba](https://github.com/azeemba) |[azizk](https://github.com/azizk) |[bducharme](https://github.com/bducharme) |[Quorafind](https://github.com/Quorafind) |[wbaaron](https://github.com/wbaaron) | -[bedgerotto](https://github.com/bedgerotto) |[cyu](https://github.com/cyu) |[cartfisk](https://github.com/cartfisk) |[cellvinchung](https://github.com/cellvinchung) |[chao](https://github.com/chao) |[Cretezy](https://github.com/Cretezy) | +[bedgerotto](https://github.com/bedgerotto) |[bryanjswift](https://github.com/bryanjswift) |[cyu](https://github.com/cyu) |[cartfisk](https://github.com/cartfisk) |[cellvinchung](https://github.com/cellvinchung) |[chao](https://github.com/chao) | :---: |:---: |:---: |:---: |:---: |:---: | -[bedgerotto](https://github.com/bedgerotto) |[cyu](https://github.com/cyu) |[cartfisk](https://github.com/cartfisk) |[cellvinchung](https://github.com/cellvinchung) |[chao](https://github.com/chao) |[Cretezy](https://github.com/Cretezy) | +[bedgerotto](https://github.com/bedgerotto) |[bryanjswift](https://github.com/bryanjswift) |[cyu](https://github.com/cyu) |[cartfisk](https://github.com/cartfisk) |[cellvinchung](https://github.com/cellvinchung) |[chao](https://github.com/chao) | -[charlybillaud](https://github.com/charlybillaud) |[csprance](https://github.com/csprance) |[cfra](https://github.com/cfra) |[Aarbel](https://github.com/Aarbel) |[cbush06](https://github.com/cbush06) |[czj](https://github.com/czj) | +[Cretezy](https://github.com/Cretezy) |[charlybillaud](https://github.com/charlybillaud) |[csprance](https://github.com/csprance) |[cfra](https://github.com/cfra) |[Aarbel](https://github.com/Aarbel) |[cbush06](https://github.com/cbush06) | :---: |:---: |:---: |:---: |:---: |:---: | -[charlybillaud](https://github.com/charlybillaud) |[csprance](https://github.com/csprance) |[cfra](https://github.com/cfra) |[Aarbel](https://github.com/Aarbel) |[cbush06](https://github.com/cbush06) |[czj](https://github.com/czj) | +[Cretezy](https://github.com/Cretezy) |[charlybillaud](https://github.com/charlybillaud) |[csprance](https://github.com/csprance) |[cfra](https://github.com/cfra) |[Aarbel](https://github.com/Aarbel) |[cbush06](https://github.com/cbush06) | -[CommanderRoot](https://github.com/CommanderRoot) |[ardeois](https://github.com/ardeois) |[sercraig](https://github.com/sercraig) |[Cruaier](https://github.com/Cruaier) |[danmichaelo](https://github.com/danmichaelo) |[danschalow](https://github.com/danschalow) | +[czj](https://github.com/czj) |[CommanderRoot](https://github.com/CommanderRoot) |[ardeois](https://github.com/ardeois) |[sercraig](https://github.com/sercraig) |[Cruaier](https://github.com/Cruaier) |[danmichaelo](https://github.com/danmichaelo) | :---: |:---: |:---: |:---: |:---: |:---: | -[CommanderRoot](https://github.com/CommanderRoot) |[ardeois](https://github.com/ardeois) |[sercraig](https://github.com/sercraig) |[Cruaier](https://github.com/Cruaier) |[danmichaelo](https://github.com/danmichaelo) |[danschalow](https://github.com/danschalow) | +[czj](https://github.com/czj) |[CommanderRoot](https://github.com/CommanderRoot) |[ardeois](https://github.com/ardeois) |[sercraig](https://github.com/sercraig) |[Cruaier](https://github.com/Cruaier) |[danmichaelo](https://github.com/danmichaelo) | -[danilat](https://github.com/danilat) |[mrboomer](https://github.com/mrboomer) |[Cantabar](https://github.com/Cantabar) |[KaminskiDaniell](https://github.com/KaminskiDaniell) |[akizor](https://github.com/akizor) |[davilima6](https://github.com/davilima6) | +[danschalow](https://github.com/danschalow) |[danilat](https://github.com/danilat) |[mrboomer](https://github.com/mrboomer) |[Cantabar](https://github.com/Cantabar) |[KaminskiDaniell](https://github.com/KaminskiDaniell) |[akizor](https://github.com/akizor) | :---: |:---: |:---: |:---: |:---: |:---: | -[danilat](https://github.com/danilat) |[mrboomer](https://github.com/mrboomer) |[Cantabar](https://github.com/Cantabar) |[KaminskiDaniell](https://github.com/KaminskiDaniell) |[akizor](https://github.com/akizor) |[davilima6](https://github.com/davilima6) | +[danschalow](https://github.com/danschalow) |[danilat](https://github.com/danilat) |[mrboomer](https://github.com/mrboomer) |[Cantabar](https://github.com/Cantabar) |[KaminskiDaniell](https://github.com/KaminskiDaniell) |[akizor](https://github.com/akizor) | -[DennisKofflard](https://github.com/DennisKofflard) |[jeetiss](https://github.com/jeetiss) |[dschmidt](https://github.com/dschmidt) |[sweetro](https://github.com/sweetro) |[EdgarSantiago93](https://github.com/EdgarSantiago93) |[emuell](https://github.com/emuell) | +[davilima6](https://github.com/davilima6) |[DennisKofflard](https://github.com/DennisKofflard) |[jeetiss](https://github.com/jeetiss) |[dschmidt](https://github.com/dschmidt) |[sweetro](https://github.com/sweetro) |[EdgarSantiago93](https://github.com/EdgarSantiago93) | :---: |:---: |:---: |:---: |:---: |:---: | -[DennisKofflard](https://github.com/DennisKofflard) |[jeetiss](https://github.com/jeetiss) |[dschmidt](https://github.com/dschmidt) |[sweetro](https://github.com/sweetro) |[EdgarSantiago93](https://github.com/EdgarSantiago93) |[emuell](https://github.com/emuell) | +[davilima6](https://github.com/davilima6) |[DennisKofflard](https://github.com/DennisKofflard) |[jeetiss](https://github.com/jeetiss) |[dschmidt](https://github.com/dschmidt) |[sweetro](https://github.com/sweetro) |[EdgarSantiago93](https://github.com/EdgarSantiago93) | -[efbautista](https://github.com/efbautista) |[yoldar](https://github.com/yoldar) |[eliOcs](https://github.com/eliOcs) |[EnricoSottile](https://github.com/EnricoSottile) |[epexa](https://github.com/epexa) |[Gkleinereva](https://github.com/Gkleinereva) | +[emuell](https://github.com/emuell) |[efbautista](https://github.com/efbautista) |[yoldar](https://github.com/yoldar) |[eliOcs](https://github.com/eliOcs) |[EnricoSottile](https://github.com/EnricoSottile) |[epexa](https://github.com/epexa) | :---: |:---: |:---: |:---: |:---: |:---: | -[efbautista](https://github.com/efbautista) |[yoldar](https://github.com/yoldar) |[eliOcs](https://github.com/eliOcs) |[EnricoSottile](https://github.com/EnricoSottile) |[epexa](https://github.com/epexa) |[Gkleinereva](https://github.com/Gkleinereva) | +[emuell](https://github.com/emuell) |[efbautista](https://github.com/efbautista) |[yoldar](https://github.com/yoldar) |[eliOcs](https://github.com/eliOcs) |[EnricoSottile](https://github.com/EnricoSottile) |[epexa](https://github.com/epexa) | -[fgallinari](https://github.com/fgallinari) |[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) | +[Gkleinereva](https://github.com/Gkleinereva) |[fgallinari](https://github.com/fgallinari) |[ferdiusa](https://github.com/ferdiusa) |[dtrucs](https://github.com/dtrucs) |[fuadscodes](https://github.com/fuadscodes) |[gabiganam](https://github.com/gabiganam) | :---: |:---: |:---: |:---: |:---: |:---: | -[fgallinari](https://github.com/fgallinari) |[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) | +[Gkleinereva](https://github.com/Gkleinereva) |[fgallinari](https://github.com/fgallinari) |[ferdiusa](https://github.com/ferdiusa) |[dtrucs](https://github.com/dtrucs) |[fuadscodes](https://github.com/fuadscodes) |[gabiganam](https://github.com/gabiganam) | -[gjungb](https://github.com/gjungb) |[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) | +[geoffappleford](https://github.com/geoffappleford) |[gjungb](https://github.com/gjungb) |[roenschg](https://github.com/roenschg) |[giacomocerquone](https://github.com/giacomocerquone) |[HughbertD](https://github.com/HughbertD) |[HussainAlkhalifah](https://github.com/HussainAlkhalifah) | :---: |:---: |:---: |:---: |:---: |:---: | -[gjungb](https://github.com/gjungb) |[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) | +[geoffappleford](https://github.com/geoffappleford) |[gjungb](https://github.com/gjungb) |[roenschg](https://github.com/roenschg) |[giacomocerquone](https://github.com/giacomocerquone) |[HughbertD](https://github.com/HughbertD) |[HussainAlkhalifah](https://github.com/HussainAlkhalifah) | -[IanVS](https://github.com/IanVS) |[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) | +[huydod](https://github.com/huydod) |[IanVS](https://github.com/IanVS) |[ishendyweb](https://github.com/ishendyweb) |[NaxYo](https://github.com/NaxYo) |[intenzive](https://github.com/intenzive) |[GreenJimmy](https://github.com/GreenJimmy) | :---: |:---: |:---: |:---: |:---: |:---: | -[IanVS](https://github.com/IanVS) |[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) | +[huydod](https://github.com/huydod) |[IanVS](https://github.com/IanVS) |[ishendyweb](https://github.com/ishendyweb) |[NaxYo](https://github.com/NaxYo) |[intenzive](https://github.com/intenzive) |[GreenJimmy](https://github.com/GreenJimmy) | -[JacobMGEvans](https://github.com/JacobMGEvans) |[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) | +[mazoruss](https://github.com/mazoruss) |[JacobMGEvans](https://github.com/JacobMGEvans) |[gaejabong](https://github.com/gaejabong) |[JakubHaladej](https://github.com/JakubHaladej) |[Jbithell](https://github.com/Jbithell) |[jcjmcclean](https://github.com/jcjmcclean) | :---: |:---: |:---: |:---: |:---: |:---: | -[JacobMGEvans](https://github.com/JacobMGEvans) |[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) | +[mazoruss](https://github.com/mazoruss) |[JacobMGEvans](https://github.com/JacobMGEvans) |[gaejabong](https://github.com/gaejabong) |[JakubHaladej](https://github.com/JakubHaladej) |[Jbithell](https://github.com/Jbithell) |[jcjmcclean](https://github.com/jcjmcclean) | -[janklimo](https://github.com/janklimo) |[janwilts](https://github.com/janwilts) |[vith](https://github.com/vith) |[jessica-coursera](https://github.com/jessica-coursera) |[Jmales](https://github.com/Jmales) |[theJoeBiz](https://github.com/theJoeBiz) | +[jamestiotio](https://github.com/jamestiotio) |[janklimo](https://github.com/janklimo) |[janwilts](https://github.com/janwilts) |[vith](https://github.com/vith) |[jessica-coursera](https://github.com/jessica-coursera) |[Jmales](https://github.com/Jmales) | :---: |:---: |:---: |:---: |:---: |:---: | -[janklimo](https://github.com/janklimo) |[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) | +[jamestiotio](https://github.com/jamestiotio) |[janklimo](https://github.com/janklimo) |[janwilts](https://github.com/janwilts) |[vith](https://github.com/vith) |[jessica-coursera](https://github.com/jessica-coursera) |[Jmales](https://github.com/Jmales) | -[profsmallpine](https://github.com/profsmallpine) |[chromacoma](https://github.com/chromacoma) |[jsanchez034](https://github.com/jsanchez034) |[jonathanarbely](https://github.com/jonathanarbely) |[jderrough](https://github.com/jderrough) |[jorgeepc](https://github.com/jorgeepc) | +[theJoeBiz](https://github.com/theJoeBiz) |[profsmallpine](https://github.com/profsmallpine) |[chromacoma](https://github.com/chromacoma) |[jsanchez034](https://github.com/jsanchez034) |[jonathanarbely](https://github.com/jonathanarbely) |[jderrough](https://github.com/jderrough) | :---: |:---: |:---: |:---: |:---: |:---: | -[profsmallpine](https://github.com/profsmallpine) |[chromacoma](https://github.com/chromacoma) |[jsanchez034](https://github.com/jsanchez034) |[jonathanarbely](https://github.com/jonathanarbely) |[jderrough](https://github.com/jderrough) |[jorgeepc](https://github.com/jorgeepc) | +[theJoeBiz](https://github.com/theJoeBiz) |[profsmallpine](https://github.com/profsmallpine) |[chromacoma](https://github.com/chromacoma) |[jsanchez034](https://github.com/jsanchez034) |[jonathanarbely](https://github.com/jonathanarbely) |[jderrough](https://github.com/jderrough) | -[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) | +[jorgeepc](https://github.com/jorgeepc) |[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[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) | +[jorgeepc](https://github.com/jorgeepc) |[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) | -[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) | +[jvelten](https://github.com/jvelten) |[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[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) | +[jvelten](https://github.com/jvelten) |[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) | -[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) | +[kidonng](https://github.com/kidonng) |[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[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) | +[kidonng](https://github.com/kidonng) |[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) | -[dviry](https://github.com/dviry) |[galli-leo](https://github.com/galli-leo) |[leods92](https://github.com/leods92) |[dolphinigle](https://github.com/dolphinigle) |[louim](https://github.com/louim) |[ombr](https://github.com/ombr) | +[larowlan](https://github.com/larowlan) |[dviry](https://github.com/dviry) |[galli-leo](https://github.com/galli-leo) |[leods92](https://github.com/leods92) |[dolphinigle](https://github.com/dolphinigle) |[louim](https://github.com/louim) | :---: |:---: |:---: |:---: |:---: |:---: | -[dviry](https://github.com/dviry) |[galli-leo](https://github.com/galli-leo) |[leods92](https://github.com/leods92) |[dolphinigle](https://github.com/dolphinigle) |[louim](https://github.com/louim) |[ombr](https://github.com/ombr) | +[larowlan](https://github.com/larowlan) |[dviry](https://github.com/dviry) |[galli-leo](https://github.com/galli-leo) |[leods92](https://github.com/leods92) |[dolphinigle](https://github.com/dolphinigle) |[louim](https://github.com/louim) | -[lucaperret](https://github.com/lucaperret) |[lucax88x](https://github.com/lucax88x) |[marc-mabe](https://github.com/marc-mabe) |[onhate](https://github.com/onhate) |[mperrando](https://github.com/mperrando) |[marcosthejew](https://github.com/marcosthejew) | +[ombr](https://github.com/ombr) |[lucaperret](https://github.com/lucaperret) |[lucax88x](https://github.com/lucax88x) |[marc-mabe](https://github.com/marc-mabe) |[onhate](https://github.com/onhate) |[mperrando](https://github.com/mperrando) | :---: |:---: |:---: |:---: |:---: |:---: | -[lucaperret](https://github.com/lucaperret) |[lucax88x](https://github.com/lucax88x) |[marc-mabe](https://github.com/marc-mabe) |[onhate](https://github.com/onhate) |[mperrando](https://github.com/mperrando) |[marcosthejew](https://github.com/marcosthejew) | +[ombr](https://github.com/ombr) |[lucaperret](https://github.com/lucaperret) |[lucax88x](https://github.com/lucax88x) |[marc-mabe](https://github.com/marc-mabe) |[onhate](https://github.com/onhate) |[mperrando](https://github.com/mperrando) | -[marcusforsberg](https://github.com/marcusforsberg) |[Acconut](https://github.com/Acconut) |[martin-brennan](https://github.com/martin-brennan) |[masaok](https://github.com/masaok) |[masumulu28](https://github.com/masumulu28) |[mateuscruz](https://github.com/mateuscruz) | +[marcosthejew](https://github.com/marcosthejew) |[marcusforsberg](https://github.com/marcusforsberg) |[Acconut](https://github.com/Acconut) |[martin-brennan](https://github.com/martin-brennan) |[masaok](https://github.com/masaok) |[masumulu28](https://github.com/masumulu28) | :---: |:---: |:---: |:---: |:---: |:---: | -[marcusforsberg](https://github.com/marcusforsberg) |[Acconut](https://github.com/Acconut) |[martin-brennan](https://github.com/martin-brennan) |[masaok](https://github.com/masaok) |[masumulu28](https://github.com/masumulu28) |[mateuscruz](https://github.com/mateuscruz) | +[marcosthejew](https://github.com/marcosthejew) |[marcusforsberg](https://github.com/marcusforsberg) |[Acconut](https://github.com/Acconut) |[martin-brennan](https://github.com/martin-brennan) |[masaok](https://github.com/masaok) |[masumulu28](https://github.com/masumulu28) | -[mattfik](https://github.com/mattfik) |[mjesuele](https://github.com/mjesuele) |[matthewhartstonge](https://github.com/matthewhartstonge) |[mauricioribeiro](https://github.com/mauricioribeiro) |[hrsh](https://github.com/hrsh) |[mhulet](https://github.com/mhulet) | +[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[mattfik](https://github.com/mattfik) |[mjesuele](https://github.com/mjesuele) |[matthewhartstonge](https://github.com/matthewhartstonge) |[mauricioribeiro](https://github.com/mauricioribeiro) |[hrsh](https://github.com/hrsh) |[mhulet](https://github.com/mhulet) | +[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) | -[mkopinsky](https://github.com/mkopinsky) |[ken-kuro](https://github.com/ken-kuro) |[achmiral](https://github.com/achmiral) |[boudra](https://github.com/boudra) |[mnafees](https://github.com/mnafees) |[shahimclt](https://github.com/shahimclt) | +[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[mkopinsky](https://github.com/mkopinsky) |[ken-kuro](https://github.com/ken-kuro) |[achmiral](https://github.com/achmiral) |[boudra](https://github.com/boudra) |[mnafees](https://github.com/mnafees) |[shahimclt](https://github.com/shahimclt) | +[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) | -[mogzol](https://github.com/mogzol) |[navruzm](https://github.com/navruzm) |[marton-laszlo-attila](https://github.com/marton-laszlo-attila) |[pleasespammelater](https://github.com/pleasespammelater) |[naveed-ahmad](https://github.com/naveed-ahmad) |[trungcva10a6tn](https://github.com/trungcva10a6tn) | +[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[mogzol](https://github.com/mogzol) |[navruzm](https://github.com/navruzm) |[marton-laszlo-attila](https://github.com/marton-laszlo-attila) |[pleasespammelater](https://github.com/pleasespammelater) |[naveed-ahmad](https://github.com/naveed-ahmad) |[trungcva10a6tn](https://github.com/trungcva10a6tn) | +[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) | -[nicojones](https://github.com/nicojones) |[coreprocess](https://github.com/coreprocess) |[nil1511](https://github.com/nil1511) |[leftdevel](https://github.com/leftdevel) |[Ozodbek1405](https://github.com/Ozodbek1405) |[cryptic022](https://github.com/cryptic022) | +[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[nicojones](https://github.com/nicojones) |[coreprocess](https://github.com/coreprocess) |[nil1511](https://github.com/nil1511) |[leftdevel](https://github.com/leftdevel) |[Ozodbek1405](https://github.com/Ozodbek1405) |[cryptic022](https://github.com/cryptic022) | +[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) | -[pascalwengerter](https://github.com/pascalwengerter) |[patricklindsay](https://github.com/patricklindsay) |[plneto](https://github.com/plneto) |[pedrofs](https://github.com/pedrofs) |[pmusaraj](https://github.com/pmusaraj) |[phillipalexander](https://github.com/phillipalexander) | +[cryptic022](https://github.com/cryptic022) |[pascalwengerter](https://github.com/pascalwengerter) |[patricklindsay](https://github.com/patricklindsay) |[plneto](https://github.com/plneto) |[pedrofs](https://github.com/pedrofs) |[pmusaraj](https://github.com/pmusaraj) | :---: |:---: |:---: |:---: |:---: |:---: | -[pascalwengerter](https://github.com/pascalwengerter) |[patricklindsay](https://github.com/patricklindsay) |[plneto](https://github.com/plneto) |[pedrofs](https://github.com/pedrofs) |[pmusaraj](https://github.com/pmusaraj) |[phillipalexander](https://github.com/phillipalexander) | +[cryptic022](https://github.com/cryptic022) |[pascalwengerter](https://github.com/pascalwengerter) |[patricklindsay](https://github.com/patricklindsay) |[plneto](https://github.com/plneto) |[pedrofs](https://github.com/pedrofs) |[pmusaraj](https://github.com/pmusaraj) | -[ppadmavilasom](https://github.com/ppadmavilasom) |[Pzoco](https://github.com/Pzoco) |[eman8519](https://github.com/eman8519) |[luarmr](https://github.com/luarmr) |[raulibanez](https://github.com/raulibanez) |[refo](https://github.com/refo) | +[phillipalexander](https://github.com/phillipalexander) |[ppadmavilasom](https://github.com/ppadmavilasom) |[Pzoco](https://github.com/Pzoco) |[eman8519](https://github.com/eman8519) |[luarmr](https://github.com/luarmr) |[raulibanez](https://github.com/raulibanez) | :---: |:---: |:---: |:---: |:---: |:---: | -[ppadmavilasom](https://github.com/ppadmavilasom) |[Pzoco](https://github.com/Pzoco) |[eman8519](https://github.com/eman8519) |[luarmr](https://github.com/luarmr) |[raulibanez](https://github.com/raulibanez) |[refo](https://github.com/refo) | +[phillipalexander](https://github.com/phillipalexander) |[ppadmavilasom](https://github.com/ppadmavilasom) |[Pzoco](https://github.com/Pzoco) |[eman8519](https://github.com/eman8519) |[luarmr](https://github.com/luarmr) |[raulibanez](https://github.com/raulibanez) | -[SxDx](https://github.com/SxDx) |[robwilson1](https://github.com/robwilson1) |[scherroman](https://github.com/scherroman) |[rossng](https://github.com/rossng) |[rart](https://github.com/rart) |[GNURub](https://github.com/GNURub) | +[refo](https://github.com/refo) |[SxDx](https://github.com/SxDx) |[robwilson1](https://github.com/robwilson1) |[scherroman](https://github.com/scherroman) |[rossng](https://github.com/rossng) |[rart](https://github.com/rart) | :---: |:---: |:---: |:---: |:---: |:---: | -[SxDx](https://github.com/SxDx) |[robwilson1](https://github.com/robwilson1) |[scherroman](https://github.com/scherroman) |[rossng](https://github.com/rossng) |[rart](https://github.com/rart) |[GNURub](https://github.com/GNURub) | +[refo](https://github.com/refo) |[SxDx](https://github.com/SxDx) |[robwilson1](https://github.com/robwilson1) |[scherroman](https://github.com/scherroman) |[rossng](https://github.com/rossng) |[rart](https://github.com/rart) | -[fortunto2](https://github.com/fortunto2) |[samuelcolburn](https://github.com/samuelcolburn) |[sdebacker](https://github.com/sdebacker) |[sebasegovia01](https://github.com/sebasegovia01) |[sergei-zelinsky](https://github.com/sergei-zelinsky) |[szh](https://github.com/szh) | +[GNURub](https://github.com/GNURub) |[fortunto2](https://github.com/fortunto2) |[samuelcolburn](https://github.com/samuelcolburn) |[sdebacker](https://github.com/sdebacker) |[sebasegovia01](https://github.com/sebasegovia01) |[sergei-zelinsky](https://github.com/sergei-zelinsky) | :---: |:---: |:---: |:---: |:---: |:---: | -[fortunto2](https://github.com/fortunto2) |[samuelcolburn](https://github.com/samuelcolburn) |[sdebacker](https://github.com/sdebacker) |[sebasegovia01](https://github.com/sebasegovia01) |[sergei-zelinsky](https://github.com/sergei-zelinsky) |[szh](https://github.com/szh) | +[GNURub](https://github.com/GNURub) |[fortunto2](https://github.com/fortunto2) |[samuelcolburn](https://github.com/samuelcolburn) |[sdebacker](https://github.com/sdebacker) |[sebasegovia01](https://github.com/sebasegovia01) |[sergei-zelinsky](https://github.com/sergei-zelinsky) | -[SpazzMarticus](https://github.com/SpazzMarticus) |[waptik](https://github.com/waptik) |[quigebo](https://github.com/quigebo) |[amaitu](https://github.com/amaitu) |[steverob](https://github.com/steverob) |[sjauld](https://github.com/sjauld) | +[szh](https://github.com/szh) |[SpazzMarticus](https://github.com/SpazzMarticus) |[waptik](https://github.com/waptik) |[quigebo](https://github.com/quigebo) |[amaitu](https://github.com/amaitu) |[steverob](https://github.com/steverob) | :---: |:---: |:---: |:---: |:---: |:---: | -[SpazzMarticus](https://github.com/SpazzMarticus) |[waptik](https://github.com/waptik) |[quigebo](https://github.com/quigebo) |[amaitu](https://github.com/amaitu) |[steverob](https://github.com/steverob) |[sjauld](https://github.com/sjauld) | +[szh](https://github.com/szh) |[SpazzMarticus](https://github.com/SpazzMarticus) |[waptik](https://github.com/waptik) |[quigebo](https://github.com/quigebo) |[amaitu](https://github.com/amaitu) |[steverob](https://github.com/steverob) | -[strayer](https://github.com/strayer) |[taj](https://github.com/taj) |[Tashows](https://github.com/Tashows) |[tcgj](https://github.com/tcgj) |[twarlop](https://github.com/twarlop) |[tmaier](https://github.com/tmaier) | +[sjauld](https://github.com/sjauld) |[strayer](https://github.com/strayer) |[taj](https://github.com/taj) |[Tashows](https://github.com/Tashows) |[tcgj](https://github.com/tcgj) |[twarlop](https://github.com/twarlop) | :---: |:---: |:---: |:---: |:---: |:---: | -[strayer](https://github.com/strayer) |[taj](https://github.com/taj) |[Tashows](https://github.com/Tashows) |[tcgj](https://github.com/tcgj) |[twarlop](https://github.com/twarlop) |[tmaier](https://github.com/tmaier) | +[sjauld](https://github.com/sjauld) |[strayer](https://github.com/strayer) |[taj](https://github.com/taj) |[Tashows](https://github.com/Tashows) |[tcgj](https://github.com/tcgj) |[twarlop](https://github.com/twarlop) | -[WIStudent](https://github.com/WIStudent) |[tomsaleeba](https://github.com/tomsaleeba) |[tomekp](https://github.com/tomekp) |[tvaliasek](https://github.com/tvaliasek) |[top-master](https://github.com/top-master) |[vially](https://github.com/vially) | +[tmaier](https://github.com/tmaier) |[WIStudent](https://github.com/WIStudent) |[tomsaleeba](https://github.com/tomsaleeba) |[tomekp](https://github.com/tomekp) |[tvaliasek](https://github.com/tvaliasek) |[top-master](https://github.com/top-master) | :---: |:---: |:---: |:---: |:---: |:---: | -[WIStudent](https://github.com/WIStudent) |[tomsaleeba](https://github.com/tomsaleeba) |[tomekp](https://github.com/tomekp) |[tvaliasek](https://github.com/tvaliasek) |[top-master](https://github.com/top-master) |[vially](https://github.com/vially) | +[tmaier](https://github.com/tmaier) |[WIStudent](https://github.com/WIStudent) |[tomsaleeba](https://github.com/tomsaleeba) |[tomekp](https://github.com/tomekp) |[tvaliasek](https://github.com/tvaliasek) |[top-master](https://github.com/top-master) | -[valentinoli](https://github.com/valentinoli) |[stiig](https://github.com/stiig) |[nagyv](https://github.com/nagyv) |[dwnste](https://github.com/dwnste) |[weston-sankey-mark43](https://github.com/weston-sankey-mark43) |[willycamargo](https://github.com/willycamargo) | +[vially](https://github.com/vially) |[valentinoli](https://github.com/valentinoli) |[stiig](https://github.com/stiig) |[nagyv](https://github.com/nagyv) |[dwnste](https://github.com/dwnste) |[weston-sankey-mark43](https://github.com/weston-sankey-mark43) | :---: |:---: |:---: |:---: |:---: |:---: | -[valentinoli](https://github.com/valentinoli) |[stiig](https://github.com/stiig) |[nagyv](https://github.com/nagyv) |[dwnste](https://github.com/dwnste) |[weston-sankey-mark43](https://github.com/weston-sankey-mark43) |[willycamargo](https://github.com/willycamargo) | +[vially](https://github.com/vially) |[valentinoli](https://github.com/valentinoli) |[stiig](https://github.com/stiig) |[nagyv](https://github.com/nagyv) |[dwnste](https://github.com/dwnste) |[weston-sankey-mark43](https://github.com/weston-sankey-mark43) | -[xhocquet](https://github.com/xhocquet) |[YehudaKremer](https://github.com/YehudaKremer) |[zachconner](https://github.com/zachconner) |[zacharylawson](https://github.com/zacharylawson) |[zackbloom](https://github.com/zackbloom) |[sartoshi-foot-dao](https://github.com/sartoshi-foot-dao) | +[willycamargo](https://github.com/willycamargo) |[xhocquet](https://github.com/xhocquet) |[YehudaKremer](https://github.com/YehudaKremer) |[zachconner](https://github.com/zachconner) |[zacharylawson](https://github.com/zacharylawson) |[zackbloom](https://github.com/zackbloom) | :---: |:---: |:---: |:---: |:---: |:---: | -[xhocquet](https://github.com/xhocquet) |[YehudaKremer](https://github.com/YehudaKremer) |[zachconner](https://github.com/zachconner) |[zacharylawson](https://github.com/zacharylawson) |[zackbloom](https://github.com/zackbloom) |[sartoshi-foot-dao](https://github.com/sartoshi-foot-dao) | +[willycamargo](https://github.com/willycamargo) |[xhocquet](https://github.com/xhocquet) |[YehudaKremer](https://github.com/YehudaKremer) |[zachconner](https://github.com/zachconner) |[zacharylawson](https://github.com/zacharylawson) |[zackbloom](https://github.com/zackbloom) | -[aduh95-test-account](https://github.com/aduh95-test-account) |[agreene-coursera](https://github.com/agreene-coursera) |[alfatv](https://github.com/alfatv) |[arggh](https://github.com/arggh) |[avalla](https://github.com/avalla) |[bdirito](https://github.com/bdirito) | +[sartoshi-foot-dao](https://github.com/sartoshi-foot-dao) |[aduh95-test-account](https://github.com/aduh95-test-account) |[agreene-coursera](https://github.com/agreene-coursera) |[alfatv](https://github.com/alfatv) |[arggh](https://github.com/arggh) |[avalla](https://github.com/avalla) | :---: |:---: |:---: |:---: |:---: |:---: | -[aduh95-test-account](https://github.com/aduh95-test-account) |[agreene-coursera](https://github.com/agreene-coursera) |[alfatv](https://github.com/alfatv) |[arggh](https://github.com/arggh) |[avalla](https://github.com/avalla) |[bdirito](https://github.com/bdirito) | +[sartoshi-foot-dao](https://github.com/sartoshi-foot-dao) |[aduh95-test-account](https://github.com/aduh95-test-account) |[agreene-coursera](https://github.com/agreene-coursera) |[alfatv](https://github.com/alfatv) |[arggh](https://github.com/arggh) |[avalla](https://github.com/avalla) | -[c0b41](https://github.com/c0b41) |[canvasbh](https://github.com/canvasbh) |[christianwengert](https://github.com/christianwengert) |[craigcbrunner](https://github.com/craigcbrunner) |[darthf1](https://github.com/darthf1) |[dkisic](https://github.com/dkisic) | +[bdirito](https://github.com/bdirito) |[c0b41](https://github.com/c0b41) |[canvasbh](https://github.com/canvasbh) |[christianwengert](https://github.com/christianwengert) |[craigcbrunner](https://github.com/craigcbrunner) |[darthf1](https://github.com/darthf1) | :---: |:---: |:---: |:---: |:---: |:---: | -[c0b41](https://github.com/c0b41) |[canvasbh](https://github.com/canvasbh) |[christianwengert](https://github.com/christianwengert) |[craigcbrunner](https://github.com/craigcbrunner) |[darthf1](https://github.com/darthf1) |[dkisic](https://github.com/dkisic) | +[bdirito](https://github.com/bdirito) |[c0b41](https://github.com/c0b41) |[canvasbh](https://github.com/canvasbh) |[christianwengert](https://github.com/christianwengert) |[craigcbrunner](https://github.com/craigcbrunner) |[darthf1](https://github.com/darthf1) | -[elliotsayes](https://github.com/elliotsayes) |[fingul](https://github.com/fingul) |[franckl](https://github.com/franckl) |[gaelicwinter](https://github.com/gaelicwinter) |[green-mike](https://github.com/green-mike) |[hxgf](https://github.com/hxgf) | +[dkisic](https://github.com/dkisic) |[elliotsayes](https://github.com/elliotsayes) |[fingul](https://github.com/fingul) |[franckl](https://github.com/franckl) |[gaelicwinter](https://github.com/gaelicwinter) |[green-mike](https://github.com/green-mike) | :---: |:---: |:---: |:---: |:---: |:---: | -[elliotsayes](https://github.com/elliotsayes) |[fingul](https://github.com/fingul) |[franckl](https://github.com/franckl) |[gaelicwinter](https://github.com/gaelicwinter) |[green-mike](https://github.com/green-mike) |[hxgf](https://github.com/hxgf) | +[dkisic](https://github.com/dkisic) |[elliotsayes](https://github.com/elliotsayes) |[fingul](https://github.com/fingul) |[franckl](https://github.com/franckl) |[gaelicwinter](https://github.com/gaelicwinter) |[green-mike](https://github.com/green-mike) | -[johnmanjiro13](https://github.com/johnmanjiro13) |[sontixyou](https://github.com/sontixyou) |[kode-ninja](https://github.com/kode-ninja) |[jx-zyf](https://github.com/jx-zyf) |[magumbo](https://github.com/magumbo) |[mosi-kha](https://github.com/mosi-kha) | +[hxgf](https://github.com/hxgf) |[johnmanjiro13](https://github.com/johnmanjiro13) |[sontixyou](https://github.com/sontixyou) |[kode-ninja](https://github.com/kode-ninja) |[jx-zyf](https://github.com/jx-zyf) |[magumbo](https://github.com/magumbo) | :---: |:---: |:---: |:---: |:---: |:---: | -[johnmanjiro13](https://github.com/johnmanjiro13) |[sontixyou](https://github.com/sontixyou) |[kode-ninja](https://github.com/kode-ninja) |[jx-zyf](https://github.com/jx-zyf) |[magumbo](https://github.com/magumbo) |[mosi-kha](https://github.com/mosi-kha) | +[hxgf](https://github.com/hxgf) |[johnmanjiro13](https://github.com/johnmanjiro13) |[sontixyou](https://github.com/sontixyou) |[kode-ninja](https://github.com/kode-ninja) |[jx-zyf](https://github.com/jx-zyf) |[magumbo](https://github.com/magumbo) | -[neuronet77](https://github.com/neuronet77) |[ninesalt](https://github.com/ninesalt) |[phil714](https://github.com/phil714) |[luntta](https://github.com/luntta) |[rhymes](https://github.com/rhymes) |[rlebosse](https://github.com/rlebosse) | +[mosi-kha](https://github.com/mosi-kha) |[neuronet77](https://github.com/neuronet77) |[ninesalt](https://github.com/ninesalt) |[phil714](https://github.com/phil714) |[luntta](https://github.com/luntta) |[rhymes](https://github.com/rhymes) | :---: |:---: |:---: |:---: |:---: |:---: | -[neuronet77](https://github.com/neuronet77) |[ninesalt](https://github.com/ninesalt) |[phil714](https://github.com/phil714) |[luntta](https://github.com/luntta) |[rhymes](https://github.com/rhymes) |[rlebosse](https://github.com/rlebosse) | +[mosi-kha](https://github.com/mosi-kha) |[neuronet77](https://github.com/neuronet77) |[ninesalt](https://github.com/ninesalt) |[phil714](https://github.com/phil714) |[luntta](https://github.com/luntta) |[rhymes](https://github.com/rhymes) | -[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) | +[rlebosse](https://github.com/rlebosse) |[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) | :---: |:---: |:---: |:---: |:---: |:---: | -[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) | +[rlebosse](https://github.com/rlebosse) |[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) | -[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) | +[vedran555](https://github.com/vedran555) |[yoann-hellopret](https://github.com/yoann-hellopret) |[olitomas](https://github.com/olitomas) |[JimmyLv](https://github.com/JimmyLv) | +:---: |:---: |:---: |:---: | +[vedran555](https://github.com/vedran555) |[yoann-hellopret](https://github.com/yoann-hellopret) |[olitomas](https://github.com/olitomas) |[JimmyLv](https://github.com/JimmyLv) | diff --git a/examples/aws-nodejs/public/drag.html b/examples/aws-nodejs/public/drag.html index 4bde071adc..3f80b23873 100644 --- a/examples/aws-nodejs/public/drag.html +++ b/examples/aws-nodejs/public/drag.html @@ -3,7 +3,7 @@ Uppy - +
    @@ -14,7 +14,7 @@
    Uploaded files:
      - +