UNPKG

ngx-uploadx

Version:
107 lines (106 loc) 3.26 kB
import { Ajax } from './ajax'; import { Canceler } from './canceler'; import { AuthorizeRequest, Metadata, PreRequest, RequestHeaders, RequestOptions, ResponseBody, UploaderOptions, UploadState, UploadStatus, UploadxControlEvent } from './interfaces'; import { RetryHandler } from './retry-handler'; /** * Uploader Base Class */ export declare abstract class Uploader implements UploadState { readonly file: File; readonly options: Readonly<UploaderOptions>; readonly stateChange: (uploader: Uploader) => void; readonly ajax: Ajax; name: string; readonly size: number; readonly uploadId: string; response: ResponseBody; responseStatus: number; responseHeaders: Record<string, string>; progress: number; remaining: number; speed: number; /** Custom headers */ headers: RequestHeaders; /** Metadata Object */ metadata: Metadata; /** Upload endpoint */ endpoint: string; /** Chunk size in bytes */ chunkSize: number; /** Auth token/tokenGetter */ token: UploadxControlEvent['token']; /** Byte offset within the whole file */ offset?: number; /** Retries handler */ retry: RetryHandler; canceler: Canceler; abortController: AbortController; /** Set HttpRequest responseType */ responseType?: 'json' | 'text' | 'document'; protected _authorize: AuthorizeRequest; protected _prerequest: PreRequest; protected _token: string; private _eventsCount; constructor(file: File, options: Readonly<UploaderOptions>, stateChange: (uploader: Uploader) => void, ajax: Ajax); private _url; get url(): string; set url(value: string); private _status; get status(): UploadStatus; set status(s: UploadStatus); /** * Configure uploader */ configure({ metadata, headers, token, endpoint, action }: UploadxControlEvent): void; /** * Starts uploading */ upload(): Promise<void>; /** * Performs http requests */ request(requestOptions: RequestOptions): Promise<void>; /** * Set auth token string */ updateToken: () => string | Promise<string>; /** * Get file URI */ protected abstract getFileUrl(): Promise<string>; /** * Send file content and return an offset for the next request */ protected abstract sendFileContent(): Promise<number | undefined>; /** * Get an offset for the next request */ protected abstract getOffset(): Promise<number | undefined>; /** * Updating the metadata of the upload */ protected update<T = { metadata?: Metadata; }>(_data: T): Promise<string>; protected abort(): void; protected cancel(): Promise<void>; /** * Gets the value from the response */ protected getValueFromResponse(key: string): string | null; /** * Get file chunk * @param offset - number of bytes of the file to skip * @param size - chunk size */ getChunk(offset?: number, size?: number): { start: number; end: number; body: Blob; }; private getRetryAfterFromBackend; private cancelAndSendState; private updateAndSendState; private cleanup; private onProgress; }