From 6383282b93d4e18af5fe0aa223f4e8a974e2b31e Mon Sep 17 00:00:00 2001 From: Dobes Vandermeer Date: Sat, 17 May 2025 20:50:49 -0700 Subject: [PATCH] Refine signedUrl response type The implementation only requires `signedUrl` to be present, and supports `headers` if provided. Otherwise it passes through the S3 response you provide based on how your server or `getSignedUrl` implementation works. This change tries to better capture this. It was a bit strange that the other fields like `publicUrl`, `filename`, and `fileKey` were included before when they were not used in any way by the library. --- index.d.ts | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/index.d.ts b/index.d.ts index 29b0195..49887ba 100644 --- a/index.d.ts +++ b/index.d.ts @@ -3,22 +3,20 @@ declare module 'react-s3-uploader' { export interface S3Response { signedUrl: string; - publicUrl: string; - filename: string; - fileKey: string; + headers?: Record | null; } - export interface ReactS3UploaderProps { + export interface ReactS3UploaderProps { signingUrl?: string; signingUrlMethod?: 'GET' | 'POST'; - getSignedUrl?: (file: File, callback: (params: S3Response) => void) => void; + getSignedUrl?: (file: File, callback: (params: R) => void) => void; accept?: string; s3path?: string; preprocess?: (file: File, next: (file: File) => void) => void; - onSignedUrl?: (response: S3Response) => void; + onSignedUrl?: (response: R) => void; onProgress?: (percent: number, status: string, file: File) => void; onError?: (message: string) => void; - onFinish?: (result: S3Response, file: File) => void; + onFinish?: (result: R, file: File) => void; signingUrlHeaders?: { additional: object; }; @@ -35,7 +33,7 @@ declare module 'react-s3-uploader' { [key: string]: any; } - class ReactS3Uploader extends Component { } + class ReactS3Uploader extends Component, unknown> { } export default ReactS3Uploader; } @@ -43,8 +41,8 @@ declare module 'react-s3-uploader' { declare module 'react-s3-uploader/s3upload' { import { ReactS3UploaderProps, S3Response } from 'react-s3-uploader'; - export interface S3UploadOptions extends Pick< - ReactS3UploaderProps, + export interface S3UploadOptions extends Pick< + ReactS3UploaderProps, | 'contentDisposition' | 'getSignedUrl' | 'onProgress' @@ -61,16 +59,16 @@ declare module 'react-s3-uploader/s3upload' { | 'uploadRequestHeaders'> { fileElement?: HTMLInputElement | null; files?: HTMLInputElement['files'] | null; - onFinishS3Put?: ReactS3UploaderProps['onFinish']; + onFinishS3Put?: ReactS3UploaderProps['onFinish']; successResponses?: number[]; scrubFilename?: (filename: string) => string; } - class S3Upload { - constructor(options: ReactS3UploaderProps); + class S3Upload { + constructor(options: ReactS3UploaderProps); abortUpload(): void; - uploadFile(file: File): Promise; - uploadToS3(file: File, signResult: S3Response): void; + uploadFile(file: File): Promise; + uploadToS3(file: File, signResult: R): void; } export default S3Upload;