fluxforge
Version:
基于 Web Worker 的文件分片库,提供并发处理、可暂停/取消任务控制、自动重试与 MD5 校验。
51 lines (50 loc) • 1.21 kB
TypeScript
export interface Chunk {
blob: Blob;
hash: string;
index: number;
start: number;
end: number;
}
export interface ChunkOptions {
chunkSize?: number;
workerCount?: number;
}
export interface ProcessOptions {
concurrency?: number;
maxRetries?: number;
retryBaseDelayMs?: number;
retryMaxDelayMs?: number;
onProgress?: (completed: number, total: number) => void;
}
export type ChunkProcessor = (chunk: Chunk, signal: AbortSignal) => void | Promise<void>;
export interface ProcessController {
pause: () => void;
resume: () => void;
cancel: () => void;
readonly promise: Promise<void>;
}
export declare class CancellationError extends Error {
constructor(message?: string);
}
export declare class RetryExhaustedError extends Error {
readonly cause: unknown;
readonly attempts: number;
constructor(attempts: number, cause: unknown);
}
export interface WorkerRequest {
start: number;
end: number;
chunkSize: number;
file: File;
}
export type WorkerResponse = {
type: 'chunk';
index: number;
start: number;
end: number;
hash: string;
} | {
type: 'error';
index: number;
message: string;
};