/** * Sync Workflow * * Synchronizes plugins between production and test servers. * Supports per-file progress tracking for large file operations. * * @since v1.0.0 * @updated v1.38.0 - Added per-file progress tracking */ import { type SyncAction, type SyncDirection, type SyncOptions, type SyncProgress, type SyncResult } from './sync-types.js'; export type { SyncDirection, SyncAction, SyncProgress, SyncResult, SyncOptions, } from './sync-types.js'; /** * Sync workflow class */ export declare class SyncWorkflow { private options; private currentPhase; private totalBytes; private bytesTransferred; private largeFileThreshold; constructor(options: SyncOptions); /** * Execute sync in the specified direction */ sync(direction: SyncDirection): Promise; /** * Report progress with enhanced tracking */ private reportProgress; /** * Internal sync implementation (wrapped by sleep prevention) */ private syncInternal; /** * Record action result */ private recordAction; /** * Execute action with per-file progress tracking */ private executeActionWithProgress; /** * Copy a single JAR to its target path. Uses byte-level progress callbacks * for files above {@link largeFileThreshold}; falls back to atomic copy * (no per-byte updates) for small files. Bumps {@link bytesTransferred} * either way. Extracted from copy/disable/enable cases that all shared * this exact pattern (v2.11.15). */ private copyJarWithProgress; /** * Safely disable a file by renaming to .jarDIS instead of deleting. * If the file is already disabled (.jarDIS etc.), delete it since it's already been displaced. */ private safeDisableFile; /** * Clean stale duplicate files for a plugin before writing. * Renames .jar files to .jarDIS for recovery; removes already-disabled files. */ private cleanStaleFiles; /** * Check if a filename is a disabled JAR file */ private isDisabledJar; /** * Get the enabled filename from a disabled filename. * Delegates to the canonical {@link fromDisabledJar} helper in scanner.ts. */ private getEnabledFilename; /** * Plan sync actions */ private planSync; /** * Get sync preview (dry run) */ preview(direction: SyncDirection): Promise; } /** * Create a sync workflow */ export declare function createSyncWorkflow(options: SyncOptions): SyncWorkflow; /** * Quick sync from prod to test */ export declare function syncProdToTest(prodDir: string, testDir: string, disableOnTest?: string[], onProgress?: (progress: SyncProgress) => void): Promise; //# sourceMappingURL=sync.d.ts.map