import { Event, EventTarget } from 'event-target-shim'; export class ProgressEvent extends Event { lengthComputable: boolean; total: number; loaded: number; constructor( type: string, { lengthComputable, total, loaded, ...meta }: ProgressEventInit = {} ) { super(type, meta); this.lengthComputable = lengthComputable; this.total = total; this.loaded = loaded; } } export async function fromAsync( iterableOrArrayLike: | AsyncIterable | Iterable> | ArrayLike> ): Promise { if (typeof iterableOrArrayLike[Symbol.asyncIterator] !== 'function') iterableOrArrayLike = Array.from( iterableOrArrayLike as ArrayLike> ); const result: T[] = []; for await (const item of iterableOrArrayLike as Iterable>) result.push(item); return result; }