@uppy/xhr-upload
Version:
Plain and simple classic HTML multipart form uploads with Uppy, as well as uploads using the HTTP PUT method.
70 lines • 2.99 kB
TypeScript
import type { Body, DefinePluginOpts, Meta, PluginOpts, State, Uppy, UppyFile } from '@uppy/core';
import { BasePlugin, EventManager } from '@uppy/core';
import { type FetcherOptions, type LocalUppyFile } from '@uppy/utils';
export interface XhrUploadOpts<M extends Meta, B extends Body> extends PluginOpts {
endpoint: string | ((fileOrBundle: UppyFile<M, B> | UppyFile<M, B>[]) => string | Promise<string>);
method?: 'GET' | 'HEAD' | 'POST' | 'PUT' | 'DELETE' | 'OPTIONS' | 'PATCH' | 'delete' | 'get' | 'head' | 'options' | 'post' | 'put' | string;
formData?: boolean;
fieldName?: string;
headers?: Record<string, string> | ((file: UppyFile<M, B>) => Record<string, string>);
timeout?: number;
limit?: number;
responseType?: XMLHttpRequestResponseType;
withCredentials?: boolean;
onBeforeRequest?: (xhr: XMLHttpRequest, retryCount: number,
/** The files to be uploaded. When `bundle` is `false` only one file is in the array. */
files: UppyFile<M, B>[]) => void | Promise<void>;
shouldRetry?: FetcherOptions['shouldRetry'];
onAfterResponse?: FetcherOptions['onAfterResponse'];
getResponseData?: (xhr: XMLHttpRequest) => B | Promise<B>;
allowedMetaFields?: boolean | string[];
bundle?: boolean;
}
export type { XhrUploadOpts as XHRUploadOptions };
declare module '@uppy/utils' {
interface LocalUppyFile<M extends Meta, B extends Body> {
xhrUpload?: XhrUploadOpts<M, B>;
}
interface RemoteUppyFile<M extends Meta, B extends Body> {
xhrUpload?: XhrUploadOpts<M, B>;
}
}
declare module '@uppy/core' {
interface State<M extends Meta, B extends Body> {
xhrUpload?: XhrUploadOpts<M, B>;
}
}
declare module '@uppy/core' {
interface PluginTypeRegistry<M extends Meta, B extends Body> {
XHRUpload: XHRUpload<M, B>;
}
}
declare const defaultOptions: {
formData: true;
fieldName: string;
method: string;
allowedMetaFields: true;
bundle: false;
headers: {};
timeout: number;
limit: number;
withCredentials: false;
responseType: "";
};
type Opts<M extends Meta, B extends Body> = DefinePluginOpts<XhrUploadOpts<M, B>, keyof typeof defaultOptions>;
interface OptsWithHeaders<M extends Meta, B extends Body> extends Opts<M, B> {
headers: Record<string, string>;
}
export default class XHRUpload<M extends Meta, B extends Body> extends BasePlugin<Opts<M, B>, M, B> {
#private;
static VERSION: string;
uploaderEvents: Record<string, EventManager<M, B> | null>;
constructor(uppy: Uppy<M, B>, opts: XhrUploadOpts<M, B>);
getOptions(file: UppyFile<M, B>): OptsWithHeaders<M, B>;
addMetadata(formData: FormData, meta: State<M, B>['meta'], opts: Opts<M, B>): void;
createFormDataUpload(file: LocalUppyFile<M, B>, opts: Opts<M, B>): FormData;
createBundledUpload(files: LocalUppyFile<M, B>[], opts: Opts<M, B>): FormData;
install(): void;
uninstall(): void;
}
//# sourceMappingURL=index.d.ts.map