UNPKG

ngx-uploadx

Version:
98 lines (97 loc) 3.29 kB
import { Canceler } from './canceler'; import { RetryConfig } from './retry-handler'; export type ResponseBody = any; export type RequestHeaders = Record<string, boolean | number | string>; export type Metadata = Record<string, unknown>; export interface RequestConfig { body?: BodyInit | null; canceler: Canceler; signal?: AbortSignal; headers: RequestHeaders; method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS'; onUploadProgress?: (evt: ProgressEvent) => void; responseType?: 'arraybuffer' | 'blob' | 'document' | 'json' | 'text'; url: string; validateStatus?: (status: number) => boolean; withCredentials?: boolean; } export type RequestOptions = Partial<RequestConfig> & { skipAuthorization?: boolean; }; export type AuthorizeRequest = (req: RequestConfig, token?: string) => RequestConfig | Promise<RequestConfig>; export type PreRequest = (req: RequestConfig) => Promise<RequestOptions> | RequestOptions | void; export type UploadStatus = 'added' | 'queue' | 'uploading' | 'complete' | 'error' | 'cancelled' | 'paused' | 'retry' | 'updated'; export type UploadAction = 'upload' | 'cancel' | 'pause' | 'update'; export interface UploadState { /** Uploaded file */ readonly file: File; /** Original file name */ readonly name: string; /** Progress percentage */ readonly progress: number; /** Estimated remaining time */ readonly remaining: number; /** HTTP response body */ readonly response: ResponseBody; /** HTTP response status code */ readonly responseStatus: number; /** HTTP response headers */ readonly responseHeaders: Record<string, string>; /** File size in bytes */ readonly size: number; /** Upload speed bytes/sec */ readonly speed: number; /** Upload status */ readonly status: UploadStatus; /** Unique upload id */ readonly uploadId: string; /** File url */ readonly url: string; } interface UploadItem { /** * URL to create new uploads. * @defaultValue '/upload' */ endpoint?: string; /** * Headers to be appended to each HTTP request */ headers?: RequestHeaders | ((file: File) => RequestHeaders); /** * Custom uploads metadata */ metadata?: Metadata | ((file: File) => Metadata); /** * Authorization token as a `string` or function returning a `string` or `Promise<string>` */ token?: string | ((httpStatus: number) => string | Promise<string>); } export interface UploadxControlEvent extends UploadItem { readonly uploadId?: string; action?: UploadAction; } export interface UploaderOptions extends UploadItem { retryConfig?: RetryConfig; /** * Set a fixed chunk size. * If not specified, the optimal size will be automatically adjusted based on the network speed. */ chunkSize?: number; /** Adaptive chunk size limit */ maxChunkSize?: number; withCredentials?: boolean; /** * Set the expected server response type */ responseType?: 'json' | 'text' | 'document'; /** * Function called before every request */ prerequest?: PreRequest; /** * Function used to apply authorization token */ authorize?: AuthorizeRequest; } export {};