kv-music/js/progressEvents.ts
2026-03-12 20:47:47 +00:00

43 lines
1.1 KiB
TypeScript

declare global {
type MonochromeProgress<T = {}> = {
stage: string;
} & T;
type MonochromeProgressMessage<T = MonochromeProgress> = {
message: string;
};
type MonochromeProgressListener<T = MonochromeProgress> = (progress: T) => void;
}
export class DownloadProgress implements MonochromeProgress {
public readonly stage = 'downloading';
constructor(
public readonly receivedBytes: number,
public readonly totalBytes: number | undefined
) {}
}
export class SegmentedDownloadProgress extends DownloadProgress {
public readonly stage = 'downloading';
constructor(
public readonly receivedBytes: number,
public readonly totalBytes: number | undefined,
public readonly currentSegment: number,
public readonly totalSegments: number
) {
super(receivedBytes, totalBytes);
}
}
export class ProgressMessage implements MonochromeProgressMessage {
constructor(public readonly message: string) {}
}
export class DownloadProgressMessage extends ProgressMessage {
constructor(message: string) {
super(message);
}
}