Merge stable branch

This commit is contained in:
Antoine du Hamel 2024-05-22 09:41:54 +02:00
commit 8090eacdf2
No known key found for this signature in database
GPG key ID: 21D900FFDB233756
21 changed files with 910 additions and 845 deletions

View file

@ -309,6 +309,24 @@ Released: 2024-03-28
- @uppy/vue: [v4.x] remove manual types (Antoine du Hamel / #4803)
- meta: prepare release workflow for beta versions (Antoine du Hamel)
## 3.25.4
Released: 2024-05-22
| Package | Version | Package | Version |
| --------------- | ------- | --------------- | ------- |
| @uppy/companion | 4.13.3 | @uppy/tus | 3.5.5 |
| @uppy/svelte | 3.1.5 | uppy | 3.25.4 |
- @uppy/svelte: do not attempt removing plugin before it's created (Antoine du Hamel / #5186)
- docs: Update `facebook.mdx` (Evgenia Karunus)
- @uppy/tus: fix no headers passed to companion if argument is a function (netdown / #5182)
- @uppy/companion: fix google drive gsuite export large size (Milan Nakum / #5144)
- meta: Improve provider docs: Box & Zoom (Evgenia Karunus / #5166)
- meta: add MDX file to `lint-staged` list (Antoine du Hamel / #5174)
- @uppy/companion: handle ws `'error'` event (Mikael Finstad / #5167)
## 3.25.3
Released: 2024-05-14

View file

@ -203,48 +203,7 @@ server-side component, is needed for a plugin to work.
## Browser Support
<<<<<<< HEAD We aim to support recent versions of Chrome, Firefox, and Safari.
\======= We aim to support recent versions of Chrome, Firefox, Safari and Edge.
We still provide a bundle which should work on IE11, but we are not running
tests on it.
### Polyfills
Heres a list of polyfills youll need to include to make Uppy work in older
browsers, such as IE11:
- [abortcontroller-polyfill](https://github.com/mo/abortcontroller-polyfill)
- [core-js](https://github.com/zloirock/core-js)
- [md-gum-polyfill](https://github.com/mozdevs/mediaDevices-getUserMedia-polyfill)
- [resize-observer-polyfill](https://github.com/que-etc/resize-observer-polyfill)
- [whatwg-fetch](https://github.com/github/fetch)
If youre using a bundler, you need to import them before Uppy:
```js
import 'core-js'
import 'whatwg-fetch'
import 'abortcontroller-polyfill/dist/polyfill-patch-fetch'
// Order matters: AbortController needs fetch which needs Promise (provided by core-js).
import 'md-gum-polyfill'
import ResizeObserver from 'resize-observer-polyfill'
window.ResizeObserver ??= ResizeObserver
export { default } from '@uppy/core'
export * from '@uppy/core'
```
If youre using Uppy from CDN, those polyfills are already included in the
legacy bundle, so no need to include anything additionally:
```html
<script src="https://releases.transloadit.com/uppy/v4.0.0-beta.7/uppy.legacy.min.js"></script>
```
> > > > > > > 86e2e6750192055bfba24abf62e227976be5e085
We aim to support recent versions of Chrome, Firefox, and Safari.
## FAQ
@ -350,11 +309,11 @@ Use Uppy in your project?
<tr><td><a href=https://github.com/darthf1><img width="117" alt="darthf1" src="https://avatars.githubusercontent.com/u/17253332?v=4&s=117"></a></td><td><a href=https://github.com/fortrieb><img width="117" alt="fortrieb" src="https://avatars.githubusercontent.com/u/4126707?v=4&s=117"></a></td><td><a href=https://github.com/frederikhors><img width="117" alt="frederikhors" src="https://avatars.githubusercontent.com/u/41120635?v=4&s=117"></a></td><td><a href=https://github.com/heocoi><img width="117" alt="heocoi" src="https://avatars.githubusercontent.com/u/13751011?v=4&s=117"></a></td><td><a href=https://github.com/jarey><img width="117" alt="jarey" src="https://avatars.githubusercontent.com/u/5025224?v=4&s=117"></a></td><td><a href=https://github.com/muhammadInam><img width="117" alt="muhammadInam" src="https://avatars.githubusercontent.com/u/7801708?v=4&s=117"></a></td></tr>
<tr><td><a href=https://github.com/rettgerst><img width="117" alt="rettgerst" src="https://avatars.githubusercontent.com/u/11684948?v=4&s=117"></a></td><td><a href=https://github.com/mkabatek><img width="117" alt="mkabatek" src="https://avatars.githubusercontent.com/u/1764486?v=4&s=117"></a></td><td><a href=https://github.com/jukakoski><img width="117" alt="jukakoski" src="https://avatars.githubusercontent.com/u/52720967?v=4&s=117"></a></td><td><a href=https://github.com/olemoign><img width="117" alt="olemoign" src="https://avatars.githubusercontent.com/u/11632871?v=4&s=117"></a></td><td><a href=https://github.com/btrice><img width="117" alt="btrice" src="https://avatars.githubusercontent.com/u/4358225?v=4&s=117"></a></td><td><a href=https://github.com/5idereal><img width="117" alt="5idereal" src="https://avatars.githubusercontent.com/u/30827929?v=4&s=117"></a></td></tr>
<tr><td><a href=https://github.com/AndrwM><img width="117" alt="AndrwM" src="https://avatars.githubusercontent.com/u/565743?v=4&s=117"></a></td><td><a href=https://github.com/behnammodi><img width="117" alt="behnammodi" src="https://avatars.githubusercontent.com/u/1549069?v=4&s=117"></a></td><td><a href=https://github.com/BePo65><img width="117" alt="BePo65" src="https://avatars.githubusercontent.com/u/6582465?v=4&s=117"></a></td><td><a href=https://github.com/bradedelman><img width="117" alt="bradedelman" src="https://avatars.githubusercontent.com/u/124367?v=4&s=117"></a></td><td><a href=https://github.com/camiloforero><img width="117" alt="camiloforero" src="https://avatars.githubusercontent.com/u/6606686?v=4&s=117"></a></td><td><a href=https://github.com/command-tab><img width="117" alt="command-tab" src="https://avatars.githubusercontent.com/u/3069?v=4&s=117"></a></td></tr>
<tr><td><a href=https://github.com/craig-jennings><img width="117" alt="craig-jennings" src="https://avatars.githubusercontent.com/u/1683368?v=4&s=117"></a></td><td><a href=https://github.com/davekiss><img width="117" alt="davekiss" src="https://avatars.githubusercontent.com/u/1256071?v=4&s=117"></a></td><td><a href=https://github.com/denysdesign><img width="117" alt="denysdesign" src="https://avatars.githubusercontent.com/u/1041797?v=4&s=117"></a></td><td><a href=https://github.com/ethanwillis><img width="117" alt="ethanwillis" src="https://avatars.githubusercontent.com/u/182492?v=4&s=117"></a></td><td><a href=https://github.com/frobinsonj><img width="117" alt="frobinsonj" src="https://avatars.githubusercontent.com/u/16726902?v=4&s=117"></a></td><td><a href=https://github.com/richartkeil><img width="117" alt="richartkeil" src="https://avatars.githubusercontent.com/u/8680858?v=4&s=117"></a></td></tr>
<tr><td><a href=https://github.com/paescuj><img width="117" alt="paescuj" src="https://avatars.githubusercontent.com/u/5363448?v=4&s=117"></a></td><td><a href=https://github.com/richmeij><img width="117" alt="richmeij" src="https://avatars.githubusercontent.com/u/9741858?v=4&s=117"></a></td><td><a href=https://github.com/msand><img width="117" alt="msand" src="https://avatars.githubusercontent.com/u/1131362?v=4&s=117"></a></td><td><a href=https://github.com/martiuslim><img width="117" alt="martiuslim" src="https://avatars.githubusercontent.com/u/17944339?v=4&s=117"></a></td><td><a href=https://github.com/Martin005><img width="117" alt="Martin005" src="https://avatars.githubusercontent.com/u/10096404?v=4&s=117"></a></td><td><a href=https://github.com/mskelton><img width="117" alt="mskelton" src="https://avatars.githubusercontent.com/u/25914066?v=4&s=117"></a></td></tr>
<tr><td><a href=https://github.com/mactavishz><img width="117" alt="mactavishz" src="https://avatars.githubusercontent.com/u/12948083?v=4&s=117"></a></td><td><a href=https://github.com/lafe><img width="117" alt="lafe" src="https://avatars.githubusercontent.com/u/4070008?v=4&s=117"></a></td><td><a href=https://github.com/dogrocker><img width="117" alt="dogrocker" src="https://avatars.githubusercontent.com/u/8379027?v=4&s=117"></a></td><td><a href=https://github.com/jedwood><img width="117" alt="jedwood" src="https://avatars.githubusercontent.com/u/369060?v=4&s=117"></a></td><td><a href=https://github.com/jasonbosco><img width="117" alt="jasonbosco" src="https://avatars.githubusercontent.com/u/458383?v=4&s=117"></a></td><td><a href=https://github.com/ghasrfakhri><img width="117" alt="ghasrfakhri" src="https://avatars.githubusercontent.com/u/4945963?v=4&s=117"></a></td></tr>
<tr><td><a href=https://github.com/geertclerx><img width="117" alt="geertclerx" src="https://avatars.githubusercontent.com/u/1381327?v=4&s=117"></a></td><td><a href=https://github.com/eman8519><img width="117" alt="eman8519" src="https://avatars.githubusercontent.com/u/2380804?v=4&s=117"></a></td><td><a href=https://github.com/luarmr><img width="117" alt="luarmr" src="https://avatars.githubusercontent.com/u/817416?v=4&s=117"></a></td><td><a href=https://github.com/raulibanez><img width="117" alt="raulibanez" src="https://avatars.githubusercontent.com/u/1070825?v=4&s=117"></a></td><td><a href=https://github.com/refo><img width="117" alt="refo" src="https://avatars.githubusercontent.com/u/1114116?v=4&s=117"></a></td><td><a href=https://github.com/SxDx><img width="117" alt="SxDx" src="https://avatars.githubusercontent.com/u/2004247?v=4&s=117"></a></td></tr>
<tr><td><a href=https://github.com/robwilson1><img width="117" alt="robwilson1" src="https://avatars.githubusercontent.com/u/7114944?v=4&s=117"></a></td><td><a href=https://github.com/scherroman><img width="117" alt="scherroman" src="https://avatars.githubusercontent.com/u/7923938?v=4&s=117"></a></td><td><a href=https://github.com/Tashows><img width="117" alt="Tashows" src="https://avatars.githubusercontent.com/u/16656928?v=4&s=117"></a></td><td><a href=https://github.com/Pzoco><img width="117" alt="Pzoco" src="https://avatars.githubusercontent.com/u/3101348?v=4&s=117"></a></td><td><a href=https://github.com/ppadmavilasom><img width="117" alt="ppadmavilasom" src="https://avatars.githubusercontent.com/u/11167452?v=4&s=117"></a></td><td><a href=https://github.com/phillipalexander><img width="117" alt="phillipalexander" src="https://avatars.githubusercontent.com/u/1577682?v=4&s=117"></a></td></tr>
<tr><td><a href=https://github.com/craig-jennings><img width="117" alt="craig-jennings" src="https://avatars.githubusercontent.com/u/1683368?v=4&s=117"></a></td><td><a href=https://github.com/davekiss><img width="117" alt="davekiss" src="https://avatars.githubusercontent.com/u/1256071?v=4&s=117"></a></td><td><a href=https://github.com/denysdesign><img width="117" alt="denysdesign" src="https://avatars.githubusercontent.com/u/1041797?v=4&s=117"></a></td><td><a href=https://github.com/ethanwillis><img width="117" alt="ethanwillis" src="https://avatars.githubusercontent.com/u/182492?v=4&s=117"></a></td><td><a href=https://github.com/frobinsonj><img width="117" alt="frobinsonj" src="https://avatars.githubusercontent.com/u/16726902?v=4&s=117"></a></td><td><a href=https://github.com/richmeij><img width="117" alt="richmeij" src="https://avatars.githubusercontent.com/u/9741858?v=4&s=117"></a></td></tr>
<tr><td><a href=https://github.com/richartkeil><img width="117" alt="richartkeil" src="https://avatars.githubusercontent.com/u/8680858?v=4&s=117"></a></td><td><a href=https://github.com/paescuj><img width="117" alt="paescuj" src="https://avatars.githubusercontent.com/u/5363448?v=4&s=117"></a></td><td><a href=https://github.com/msand><img width="117" alt="msand" src="https://avatars.githubusercontent.com/u/1131362?v=4&s=117"></a></td><td><a href=https://github.com/martiuslim><img width="117" alt="martiuslim" src="https://avatars.githubusercontent.com/u/17944339?v=4&s=117"></a></td><td><a href=https://github.com/Martin005><img width="117" alt="Martin005" src="https://avatars.githubusercontent.com/u/10096404?v=4&s=117"></a></td><td><a href=https://github.com/mskelton><img width="117" alt="mskelton" src="https://avatars.githubusercontent.com/u/25914066?v=4&s=117"></a></td></tr>
<tr><td><a href=https://github.com/mactavishz><img width="117" alt="mactavishz" src="https://avatars.githubusercontent.com/u/12948083?v=4&s=117"></a></td><td><a href=https://github.com/lafe><img width="117" alt="lafe" src="https://avatars.githubusercontent.com/u/4070008?v=4&s=117"></a></td><td><a href=https://github.com/dogrocker><img width="117" alt="dogrocker" src="https://avatars.githubusercontent.com/u/8379027?v=4&s=117"></a></td><td><a href=https://github.com/jedwood><img width="117" alt="jedwood" src="https://avatars.githubusercontent.com/u/369060?v=4&s=117"></a></td><td><a href=https://github.com/geertclerx><img width="117" alt="geertclerx" src="https://avatars.githubusercontent.com/u/1381327?v=4&s=117"></a></td><td><a href=https://github.com/jasonbosco><img width="117" alt="jasonbosco" src="https://avatars.githubusercontent.com/u/458383?v=4&s=117"></a></td></tr>
<tr><td><a href=https://github.com/ghasrfakhri><img width="117" alt="ghasrfakhri" src="https://avatars.githubusercontent.com/u/4945963?v=4&s=117"></a></td><td><a href=https://github.com/rossng><img width="117" alt="rossng" src="https://avatars.githubusercontent.com/u/565371?v=4&s=117"></a></td><td><a href=https://github.com/scherroman><img width="117" alt="scherroman" src="https://avatars.githubusercontent.com/u/7923938?v=4&s=117"></a></td><td><a href=https://github.com/robwilson1><img width="117" alt="robwilson1" src="https://avatars.githubusercontent.com/u/7114944?v=4&s=117"></a></td><td><a href=https://github.com/SxDx><img width="117" alt="SxDx" src="https://avatars.githubusercontent.com/u/2004247?v=4&s=117"></a></td><td><a href=https://github.com/refo><img width="117" alt="refo" src="https://avatars.githubusercontent.com/u/1114116?v=4&s=117"></a></td></tr>
<tr><td><a href=https://github.com/raulibanez><img width="117" alt="raulibanez" src="https://avatars.githubusercontent.com/u/1070825?v=4&s=117"></a></td><td><a href=https://github.com/luarmr><img width="117" alt="luarmr" src="https://avatars.githubusercontent.com/u/817416?v=4&s=117"></a></td><td><a href=https://github.com/eman8519><img width="117" alt="eman8519" src="https://avatars.githubusercontent.com/u/2380804?v=4&s=117"></a></td><td><a href=https://github.com/Pzoco><img width="117" alt="Pzoco" src="https://avatars.githubusercontent.com/u/3101348?v=4&s=117"></a></td><td><a href=https://github.com/ppadmavilasom><img width="117" alt="ppadmavilasom" src="https://avatars.githubusercontent.com/u/11167452?v=4&s=117"></a></td><td><a href=https://github.com/phillipalexander><img width="117" alt="phillipalexander" src="https://avatars.githubusercontent.com/u/1577682?v=4&s=117"></a></td></tr>
<tr><td><a href=https://github.com/pmusaraj><img width="117" alt="pmusaraj" src="https://avatars.githubusercontent.com/u/368961?v=4&s=117"></a></td><td><a href=https://github.com/pedrofs><img width="117" alt="pedrofs" src="https://avatars.githubusercontent.com/u/56484?v=4&s=117"></a></td><td><a href=https://github.com/plneto><img width="117" alt="plneto" src="https://avatars.githubusercontent.com/u/5697434?v=4&s=117"></a></td><td><a href=https://github.com/patricklindsay><img width="117" alt="patricklindsay" src="https://avatars.githubusercontent.com/u/7923681?v=4&s=117"></a></td><td><a href=https://github.com/pascalwengerter><img width="117" alt="pascalwengerter" src="https://avatars.githubusercontent.com/u/16822008?v=4&s=117"></a></td><td><a href=https://github.com/ParsaArvanehPA><img width="117" alt="ParsaArvanehPA" src="https://avatars.githubusercontent.com/u/62149413?v=4&s=117"></a></td></tr>
<tr><td><a href=https://github.com/taj><img width="117" alt="taj" src="https://avatars.githubusercontent.com/u/16062635?v=4&s=117"></a></td><td><a href=https://github.com/strayer><img width="117" alt="strayer" src="https://avatars.githubusercontent.com/u/310624?v=4&s=117"></a></td><td><a href=https://github.com/sjauld><img width="117" alt="sjauld" src="https://avatars.githubusercontent.com/u/8232503?v=4&s=117"></a></td><td><a href=https://github.com/steverob><img width="117" alt="steverob" src="https://avatars.githubusercontent.com/u/1220480?v=4&s=117"></a></td><td><a href=https://github.com/amaitu><img width="117" alt="amaitu" src="https://avatars.githubusercontent.com/u/15688439?v=4&s=117"></a></td><td><a href=https://github.com/quigebo><img width="117" alt="quigebo" src="https://avatars.githubusercontent.com/u/741?v=4&s=117"></a></td></tr>
<tr><td><a href=https://github.com/waptik><img width="117" alt="waptik" src="https://avatars.githubusercontent.com/u/1687551?v=4&s=117"></a></td><td><a href=https://github.com/SpazzMarticus><img width="117" alt="SpazzMarticus" src="https://avatars.githubusercontent.com/u/5716457?v=4&s=117"></a></td><td><a href=https://github.com/szh><img width="117" alt="szh" src="https://avatars.githubusercontent.com/u/546965?v=4&s=117"></a></td><td><a href=https://github.com/sergei-zelinsky><img width="117" alt="sergei-zelinsky" src="https://avatars.githubusercontent.com/u/19428086?v=4&s=117"></a></td><td><a href=https://github.com/sebasegovia01><img width="117" alt="sebasegovia01" src="https://avatars.githubusercontent.com/u/35777287?v=4&s=117"></a></td><td><a href=https://github.com/sdebacker><img width="117" alt="sdebacker" src="https://avatars.githubusercontent.com/u/134503?v=4&s=117"></a></td></tr>

View file

@ -1,3 +1,4 @@
# Uppy documentation
To build the documentation, see <https://github.com/transloadit/uppy.io>.
See instructions for linting this documentation and seeing this documentation in
the browser in <https://github.com/transloadit/uppy.io>.

View file

@ -88,8 +88,7 @@ You can create a Box App on the
Things to note:
- Choose `Custom App` and select the `Standard OAuth 2.0 (User Authentication)`
app type.
- Choose `Custom App` and select the `User Authentication (OAuth 2.0)` app type.
- You must enable full write access, or you will get
[403 when downloading files](https://support.box.com/hc/en-us/community/posts/360049195613-403-error-while-file-download-API-Call)

View file

@ -84,7 +84,7 @@ new Uppy()
### Use in Companion
You can create a Facebook App on the
[Facebook Developers site](https://developers.facebook.com/).
[Facebook Developers site](https://developers.facebook.com/apps).
The app page has a “Redirect URIs” field. Here, add:

View file

@ -9,8 +9,11 @@ import UppyCdnExample from '/src/components/UppyCdnExample';
# Zoom
The `@uppy/zoom` plugin lets users import files from their
[Zoom](https://zoom.com) account.
The `@uppy/zoom` plugin lets users import cloud video recordings from their
[Zoom](https://zoom.com) account. Note that
[only licensed](https://support.zoom.com/hc/en/article?id=zm_kb&sysparm_article=KB0063923)
Zoom accounts can store their recordings in the cloud, so this functionality
will only be available to users with a paid Zoom account.
:::tip
@ -21,8 +24,8 @@ The `@uppy/zoom` plugin lets users import files from their
## When should I use this?
When you want to let users import files from their [Zoom](https://zoom.com)
account.
When you want to let users import cloud video recordings from their
[Zoom](https://zoom.com) account.
A [Companion](/docs/companion) instance is required for the Zoom plugin to work.
Companion handles authentication with Zoom, downloads the files, and uploads
@ -83,26 +86,52 @@ new Uppy()
### Use in Companion
Configure the Zoom key and secret. With the standalone Companion server, specify
environment variables:
To sign up for API keys, go through the following steps:
```shell
export COMPANION_ZOOM_KEY="Zoom API key"
export COMPANION_ZOOM_SECRET="Zoom API secret"
```
1. Sign up on [Zoom Marketplace](https://marketplace.zoom.us)
When using the Companion Node.js API, configure these options:
2. Go to [https://marketplace.zoom.us](https://marketplace.zoom.us). There will
be a dropdown in the header called “Develop”. From that dropdown, select
“Build app”.
```js
companion.app({
providerOptions: {
zoom: {
key: 'Zoom API key',
secret: 'Zoom API secret',
},
},
});
```
3. In the “Basic Information” tab, Zoom shows your new “Client ID” and “Client
Secret” - copy them.
With the standalone Companion server, specify environment variables:
```shell
export COMPANION_ZOOM_KEY="Zoom API key"
export COMPANION_ZOOM_SECRET="Zoom API secret"
```
When using the Companion Node.js API, configure these options:
```js
companion.app({
providerOptions: {
zoom: {
key: 'Zoom API key',
secret: 'Zoom API secret',
},
},
});
```
4. In the “Basic Information” tab, set “OAuth Redirect URL” input field to:
```
https://$YOUR_COMPANION_HOST_NAME/zoom/redirect
```
If you are using Transloadit hosted Companion:
```
https://api2.transloadit.com/companion/zoom/redirect
```
5. In the “Scopes” tab, add “cloud_recording:read:list_user_recordings” and
“user:read:user” scopes. If Zoom asks for further permissions when you
interact with your Zoom integration - add those too.
## API

View file

@ -16,6 +16,9 @@
"eslint --fix",
"prettier -w",
"eslint"
],
"*.mdx": [
"prettier -w"
]
},
"remarkConfig": {

View file

@ -32,6 +32,14 @@ Included in: Uppy v4.0.0-beta.1
- @uppy/companion: improve error msg (Mikael Finstad / #5010)
- @uppy/companion: crash if trying to set path to / (Mikael Finstad / #5003)
## 4.13.3
Released: 2024-05-22
Included in: Uppy v3.25.4
- @uppy/companion: fix google drive gsuite export large size (Milan Nakum / #5144)
- @uppy/companion: handle ws `'error'` event (Mikael Finstad / #5167)
## 4.13.2
Released: 2024-05-03

View file

@ -16,7 +16,7 @@ const mockAccessTokenExpiredError = undefined
// const mockAccessTokenExpiredError = true
// const mockAccessTokenExpiredError = ''
const DRIVE_FILE_FIELDS = 'kind,id,imageMediaMetadata,name,mimeType,ownedByMe,size,modifiedTime,iconLink,thumbnailLink,teamDriveId,videoMediaMetadata,shortcutDetails(targetId,targetMimeType)'
const DRIVE_FILE_FIELDS = 'kind,id,imageMediaMetadata,name,mimeType,ownedByMe,size,modifiedTime,iconLink,thumbnailLink,teamDriveId,videoMediaMetadata,exportLinks,shortcutDetails(targetId,targetMimeType)'
const DRIVE_FILES_FIELDS = `kind,nextPageToken,incompleteSearch,files(${DRIVE_FILE_FIELDS})`
// using wildcard to get all 'drive' fields because specifying fields seems no to work for the /drives endpoint
const SHARED_DRIVE_FIELDS = '*'
@ -138,14 +138,29 @@ class Drive extends Provider {
return this.#withErrorHandling('provider.drive.download.error', async () => {
const client = await getClient({ token })
const { mimeType, id } = await getStats({ id: idIn, token })
const { mimeType, id, exportLinks } = await getStats({ id: idIn, token })
let stream
if (isGsuiteFile(mimeType)) {
const mimeType2 = getGsuiteExportType(mimeType)
logger.info(`calling google file export for ${id} to ${mimeType2}`, 'provider.drive.export')
stream = client.stream.get(`files/${encodeURIComponent(id)}/export`, { searchParams: { supportsAllDrives: true, mimeType: mimeType2 }, responseType: 'json' })
// GSuite files exported with large converted size results in error using standard export method.
// Error message: "This file is too large to be exported.".
// Issue logged in Google APIs: https://github.com/googleapis/google-api-nodejs-client/issues/3446
// Implemented based on the answer from StackOverflow: https://stackoverflow.com/a/59168288
const mimeTypeExportLink = exportLinks?.[mimeType2]
if (mimeTypeExportLink) {
const gSuiteFilesClient = got.extend({
headers: {
authorization: `Bearer ${token}`,
},
})
stream = gSuiteFilesClient.stream.get(mimeTypeExportLink, { responseType: 'json' })
} else {
stream = client.stream.get(`files/${encodeURIComponent(id)}/export`, { searchParams: { supportsAllDrives: true, mimeType: mimeType2 }, responseType: 'json' })
}
} else {
stream = client.stream.get(`files/${encodeURIComponent(id)}`, { searchParams: { alt: 'media', supportsAllDrives: true }, responseType: 'json' })
}

View file

@ -48,6 +48,16 @@ module.exports = (server) => {
emitter().emit(`connection:${token}`)
emitter().on(token, send)
ws.on('error', (err) => {
// https://github.com/websockets/ws/issues/1543
// https://github.com/websockets/ws/blob/b73b11828d166e9692a9bffe9c01a7e93bab04a8/test/receiver.test.js#L936
if (err?.name === 'RangeError' && 'code' in err && err.code === 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH') {
logger.error('WebSocket message too large', 'websocket.error', shortenToken(token))
} else {
logger.error(err, 'websocket.error', shortenToken(token))
}
})
ws.on('message', (jsonData) => {
const data = JSON.parse(jsonData.toString())
// whitelist triggered actions

View file

@ -157,7 +157,7 @@ describe('list provider files', () => {
kind: 'drive#driveList', drives: [],
})
nock('https://www.googleapis.com').get('/drive/v3/files?fields=kind%2CnextPageToken%2CincompleteSearch%2Cfiles%28kind%2Cid%2CimageMediaMetadata%2Cname%2CmimeType%2CownedByMe%2Csize%2CmodifiedTime%2CiconLink%2CthumbnailLink%2CteamDriveId%2CvideoMediaMetadata%2CshortcutDetails%28targetId%2CtargetMimeType%29%29&q=%28%27root%27+in+parents%29+and+trashed%3Dfalse&pageSize=1000&orderBy=folder%2Cname&includeItemsFromAllDrives=true&supportsAllDrives=true').reply(200, {
nock('https://www.googleapis.com').get('/drive/v3/files?fields=kind%2CnextPageToken%2CincompleteSearch%2Cfiles%28kind%2Cid%2CimageMediaMetadata%2Cname%2CmimeType%2CownedByMe%2Csize%2CmodifiedTime%2CiconLink%2CthumbnailLink%2CteamDriveId%2CvideoMediaMetadata%2CexportLinks%2CshortcutDetails%28targetId%2CtargetMimeType%29%29&q=%28%27root%27+in+parents%29+and+trashed%3Dfalse&pageSize=1000&orderBy=folder%2Cname&includeItemsFromAllDrives=true&supportsAllDrives=true').reply(200, {
kind: 'drive#fileList',
nextPageToken: defaults.NEXT_PAGE_TOKEN,
files: [

View file

@ -6,7 +6,7 @@ module.exports.expects = {}
module.exports.nockGoogleDriveAboutCall = () => nock('https://www.googleapis.com').get((uri) => uri.includes('about')).reply(200, { user: { emailAddress: 'john.doe@transloadit.com' } })
module.exports.nockGoogleDownloadFile = ({ times = 1 } = {}) => {
nock('https://www.googleapis.com').get(`/drive/v3/files/${defaults.ITEM_ID}?fields=kind%2Cid%2CimageMediaMetadata%2Cname%2CmimeType%2CownedByMe%2Csize%2CmodifiedTime%2CiconLink%2CthumbnailLink%2CteamDriveId%2CvideoMediaMetadata%2CshortcutDetails%28targetId%2CtargetMimeType%29&supportsAllDrives=true`).times(times).reply(200, {
nock('https://www.googleapis.com').get(`/drive/v3/files/${defaults.ITEM_ID}?fields=kind%2Cid%2CimageMediaMetadata%2Cname%2CmimeType%2CownedByMe%2Csize%2CmodifiedTime%2CiconLink%2CthumbnailLink%2CteamDriveId%2CvideoMediaMetadata%2CexportLinks%2CshortcutDetails%28targetId%2CtargetMimeType%29&supportsAllDrives=true`).times(times).reply(200, {
kind: 'drive#file',
id: defaults.ITEM_ID,
name: 'MY DUMMY FILE NAME.mp4',

View file

@ -14,6 +14,12 @@ Included in: Uppy v4.0.0-beta.1
- @uppy/svelte: remove UMD output and make it use newer types (Antoine du Hamel / #5023)
## 3.1.5
Released: 2024-05-22
Included in: Uppy v3.25.4
- @uppy/svelte: do not attempt removing plugin before it's created (Antoine du Hamel / #5186)
## 3.1.4

View file

@ -23,7 +23,7 @@
plugin = uppy.getPlugin(options.id) as DashboardPlugin<M, B>;
}
const uninstallPlugin = (uppyInstance: Uppy<M, B> = uppy) => {
uppyInstance.removePlugin(plugin);
if (plugin != null) uppyInstance.removePlugin(plugin);
}
onMount(() => installPlugin())

View file

@ -26,7 +26,7 @@
if(open) plugin.openModal();
}
const uninstallPlugin = (uppyInstance: Uppy<M, B> = uppy) => {
uppyInstance.removePlugin(plugin);
if (plugin != null) uppyInstance.removePlugin(plugin);
}
onMount(() => installPlugin())

View file

@ -21,7 +21,7 @@
plugin = uppy.getPlugin(options.id) as DragDropPlugin<M, B>;
}
const uninstallPlugin = (uppyInstance: Uppy<M, B> = uppy) => {
uppyInstance.removePlugin(plugin);
if (plugin != null) uppyInstance.removePlugin(plugin);
}
onMount(() => installPlugin())

View file

@ -21,7 +21,7 @@
plugin = uppy.getPlugin(options.id) as ProgressBarPlugin<M, B>;
}
const uninstallPlugin = (uppyInstance: Uppy<M, B> = uppy) => {
uppyInstance.removePlugin(plugin);
if (plugin != null) uppyInstance.removePlugin(plugin);
}
onMount(() => installPlugin())

View file

@ -21,7 +21,7 @@
plugin = uppy.getPlugin(options.id) as StatusBarPlugin<M, B>;
}
const uninstallPlugin = (uppyInstance: Uppy<M, B> = uppy) => {
uppyInstance.removePlugin(plugin);
if (plugin != null) uppyInstance.removePlugin(plugin);
}
onMount(() => installPlugin())

View file

@ -14,6 +14,13 @@ Included in: Uppy v4.0.0-beta.1
- @uppy/aws-s3-multipart,@uppy/tus,@uppy/utils,@uppy/xhr-upload: Make `allowedMetaFields` consistent (Merlijn Vos / #5011)
## 3.5.5
Released: 2024-05-22
Included in: Uppy v3.25.4
- @uppy/tus: fix no headers passed to companion if argument is a function (netdown / #5182)
## 3.5.1
Released: 2024-02-19

View file

@ -546,6 +546,10 @@ export default class Tus<M extends Meta, B extends Body> extends BasePlugin<
Object.assign(opts, file.tus)
}
if (typeof opts.headers === 'function') {
opts.headers = opts.headers(file)
}
return {
...file.remote?.body,
endpoint: opts.endpoint,

1532
yarn.lock

File diff suppressed because it is too large Load diff