ipull
Version:
The only file downloader you'll ever need. For node.js and the browser, CLI and library for fast and reliable file downloads.
30 lines (29 loc) • 1.13 kB
TypeScript
import { SaveProgressInfo } from "../../types.js";
export type ProgramSlice = {
start: number;
end: number;
};
export type DownloadSlice = (startChunk: number, endChunk: number) => Promise<void>;
export default abstract class BaseDownloadProgram {
protected savedProgress: SaveProgressInfo;
protected readonly _downloadSlice: DownloadSlice;
protected _aborted: boolean;
protected _parallelStreams: number;
protected _reload?: () => void;
protected _activeDownloads: Promise<any>[];
protected constructor(_savedProgress: SaveProgressInfo, _downloadSlice: DownloadSlice);
get parallelStreams(): number;
set parallelStreams(value: number);
incParallelStreams(): void;
decParallelStreams(): void;
waitForStreamToEnd(): Promise<any>;
download(): Promise<void>;
private _waitForStreamEndWithReload;
private _createDownload;
/**
* Create all the first slices at one - make sure they will not overlap to reduce stream aborts at later stages
*/
private _createFirstSlices;
protected abstract _createOneSlice(): ProgramSlice | null;
abort(): void;
}