UNPKG

@agility/cli

Version:

Agility CLI for working with your content. (Public Beta)

129 lines (128 loc) 3.4 kB
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; }