@agility/cli
Version:
Agility CLI for working with your content. (Public Beta)
129 lines (128 loc) • 3.4 kB
TypeScript
export type ProgressStatus = 'pending' | 'success' | 'error' | 'progress';
export type ProgressCallbackType = (processed: number, total: number, status?: "success" | "error" | "progress") => void;
export interface StepStatus {
name: string;
status: ProgressStatus;
percentage: number;
startTime?: Date;
endTime?: Date;
error?: string;
}
export interface ProgressSummary {
totalSteps: number;
successfulSteps: number;
errorSteps: number;
pendingSteps: number;
overallSuccess: boolean;
totalDuration: number;
durationFormatted: string;
}
export interface ProgressCallbacks {
onStepStart?: (stepIndex: number, stepName: string) => void;
onStepProgress?: (stepIndex: number, stepName: string, percentage: number) => void;
onStepComplete?: (stepIndex: number, stepName: string, status: ProgressStatus) => void;
onOverallProgress?: (summary: ProgressSummary) => void;
}
export declare class ProgressTracker {
private steps;
private callbacks;
private startTime;
private operationName;
constructor(operationName?: string);
/**
* Initialize steps for tracking
*/
initializeSteps(stepNames: string[]): void;
/**
* Set progress callbacks for different events
*/
setCallbacks(callbacks: ProgressCallbacks): void;
/**
* Start a step
*/
startStep(stepIndex: number): void;
/**
* Update step progress
*/
updateStepProgress(stepIndex: number, percentage: number, status?: ProgressStatus): void;
/**
* Mark step as successful
*/
completeStep(stepIndex: number): void;
/**
* Mark step as failed
*/
failStep(stepIndex: number, error?: string): void;
/**
* Create a progress callback for a specific step
*/
createStepProgressCallback(stepIndex: number): ProgressCallbackType;
/**
* Get current progress summary
*/
getSummary(): ProgressSummary;
/**
* Get step status by index
*/
getStep(stepIndex: number): StepStatus | null;
/**
* Get step status by name
*/
getStepByName(stepName: string): StepStatus | null;
/**
* Get all steps
*/
getAllSteps(): StepStatus[];
/**
* Get step index by name
*/
getStepIndex(stepName: string): number;
/**
* Check if all steps are complete
*/
isComplete(): boolean;
/**
* Check if any steps have errors
*/
hasErrors(): boolean;
/**
* Get steps with errors
*/
getFailedSteps(): StepStatus[];
/**
* Get completed steps
*/
getCompletedSteps(): StepStatus[];
/**
* Get pending steps
*/
getPendingSteps(): StepStatus[];
/**
* Get overall progress percentage (0-100)
*/
getOverallProgress(): number;
/**
* Reset all steps to pending
*/
reset(): void;
/**
* Format summary for logging
*/
formatSummary(includeDetails?: boolean): string[];
/**
* Create a throttled progress callback for memory optimization
*/
createThrottledProgressCallback(stepIndex: number, updateInterval?: number): ProgressCallbackType;
/**
* Get operation name
*/
getOperationName(): string;
/**
* Set operation name
*/
setOperationName(name: string): void;
/**
* Get start time
*/
getStartTime(): Date;
}