Bläddra i källkod

@uppy/tus: add file argument to `onBeforeRequest` (#3984)

Add file argument to `onBeforeRequest`.
Merlijn Vos 2 år sedan
förälder
incheckning
8195b22de3
3 ändrade filer med 10 tillägg och 4 borttagningar
  1. 1 1
      packages/@uppy/tus/src/index.js
  2. 4 2
      packages/@uppy/tus/types/index.d.ts
  3. 5 1
      website/src/docs/tus.md

+ 1 - 1
packages/@uppy/tus/src/index.js

@@ -217,7 +217,7 @@ export default class Tus extends BasePlugin {
 
         let userProvidedPromise
         if (typeof opts.onBeforeRequest === 'function') {
-          userProvidedPromise = opts.onBeforeRequest(req)
+          userProvidedPromise = opts.onBeforeRequest(req, file)
         }
 
         if (hasProperty(queuedRequest, 'shouldBeRequeued')) {

+ 4 - 2
packages/@uppy/tus/types/index.d.ts

@@ -1,9 +1,10 @@
-import type { PluginOptions, BasePlugin } from '@uppy/core'
-import type { UploadOptions } from 'tus-js-client'
+import type { PluginOptions, BasePlugin, UppyFile } from '@uppy/core'
+import type { UploadOptions, HttpRequest } from 'tus-js-client'
 
 type TusUploadOptions = Pick<UploadOptions, Exclude<keyof UploadOptions,
   | 'fingerprint'
   | 'metadata'
+  | 'onBeforeRequest'
   | 'onProgress'
   | 'onChunkComplete'
   | 'onShouldRetry'
@@ -21,6 +22,7 @@ export interface TusOptions extends PluginOptions, TusUploadOptions {
     useFastRemoteRetry?: boolean
     withCredentials?: boolean
     onShouldRetry?: (err: Error | undefined, retryAttempt: number, options: TusOptions, next: Next) => boolean
+    onBeforeRequest?: (req: HttpRequest, file: UppyFile) => Promise<void>
   }
 
 declare class Tus extends BasePlugin<TusOptions> {}

+ 5 - 1
website/src/docs/tus.md

@@ -37,7 +37,7 @@ const { Tus } = Uppy
 
 ## Options
 
-**Note**: all options are passed to `tus-js-client` and we document the ones here that we added or changed. This means you can also pass functions like [`onBeforeRequest`](https://github.com/tus/tus-js-client/blob/master/docs/api.md#onbeforerequest) and [`onAfterResponse`](https://github.com/tus/tus-js-client/blob/master/docs/api.md#onafterresponse).
+**Note**: all options are passed to `tus-js-client` and we document the ones here that we added or changed. This means you can also pass functions like [`onAfterResponse`](https://github.com/tus/tus-js-client/blob/master/docs/api.md#onafterresponse).
 
 We recommended taking a look at the [API reference](https://github.com/tus/tus-js-client/blob/master/docs/api.md) from `tus-js-client` to know what is supported.
 
@@ -91,6 +91,10 @@ When uploading a chunk fails, automatically try again after the millisecond inte
 
 Set to `null` to disable automatic retries, and fail instantly if any chunk fails to upload.
 
+### `onBeforeRequest(req, file)`
+
+Behaves like the [`onBeforeRequest`](https://github.com/tus/tus-js-client/blob/master/docs/api.md#onbeforerequest) function from `tus-js-client` but with the added `file` argument.
+
 ### `onShouldRetry: (err, retryAttempt, options, next) => next(err)`
 
 When an upload fails `onShouldRetry` is called with the error and the default retry logic as the second argument. The default retry logic is an [exponential backoff](https://en.wikipedia.org/wiki/Exponential_backoff) algorithm triggered on HTTP 429 (Too Many Requests) errors. Meaning if your server (or proxy) returns HTTP 429 because it’s being overloaded, @uppy/tus will find the ideal sweet spot to keep uploading without overloading.