qraft
Version:
A powerful CLI tool to qraft structured project setups from GitHub template repositories
95 lines • 3.77 kB
TypeScript
import { DirectoryStructure, FileInfo } from './directoryScanner';
import { ManifestComparisonResult, ManifestManager } from './manifestManager';
export interface FileComparison {
path: string;
status: 'added' | 'deleted' | 'modified' | 'unchanged';
oldFile?: FileInfo;
newFile?: FileInfo;
similarity?: number;
changes?: {
sizeChange: number;
contentChanged: boolean;
extensionChanged: boolean;
};
}
export interface DirectoryComparison {
files: FileComparison[];
summary: {
added: number;
deleted: number;
modified: number;
unchanged: number;
totalOld: number;
totalNew: number;
};
conflicts: ConflictInfo[];
manifest?: ManifestComparison;
}
export interface ManifestComparison {
hasLocalManifest: boolean;
hasRemoteManifest: boolean;
manifestComparison?: ManifestComparisonResult;
manifestConflicts: ManifestConflictInfo[];
manifestSummary: {
status: 'identical' | 'modified' | 'new' | 'missing' | 'corrupted';
riskLevel: 'low' | 'medium' | 'high' | 'critical';
requiresReview: boolean;
};
}
export interface ManifestConflictInfo extends ConflictInfo {
type: 'manifest_version' | 'manifest_metadata' | 'manifest_missing' | 'manifest_corrupted' | 'file_exists' | 'directory_structure' | 'metadata_mismatch';
manifestField?: string;
}
export interface ConflictInfo {
type: 'file_exists' | 'directory_structure' | 'metadata_mismatch' | 'manifest_version' | 'manifest_metadata' | 'manifest_missing' | 'manifest_corrupted';
severity: 'low' | 'medium' | 'high';
path: string;
description: string;
oldValue?: any;
newValue?: any;
suggestions: string[];
}
export declare class ContentComparison {
private manifestManager;
constructor(manifestManager?: ManifestManager);
compareDirectories(oldStructure: DirectoryStructure | null, newStructure: DirectoryStructure, targetDirectory?: string): Promise<DirectoryComparison>;
private compareFiles;
private calculateSimilarity;
private levenshteinDistance;
private getConflictSeverity;
private generateConflictSuggestions;
private generateSummary;
getConflictingFiles(comparison: DirectoryComparison): FileComparison[];
getSafeFiles(comparison: DirectoryComparison): FileComparison[];
getManifestConflicts(comparison: DirectoryComparison): ManifestConflictInfo[];
hasHighRiskManifestChanges(comparison: DirectoryComparison): boolean;
hasManifestConflicts(comparison: DirectoryComparison): boolean;
generateSummaryText(comparison: DirectoryComparison): string;
generateDetailedSummary(comparison: DirectoryComparison): string;
isSafeUpdate(comparison: DirectoryComparison): boolean;
getChangeStats(comparison: DirectoryComparison): {
totalChanges: number;
riskLevel: 'low' | 'medium' | 'high';
requiresReview: boolean;
};
/**
* Compare manifests for the target directory
* @param targetDirectory Directory to check for local manifest
* @param newStructure New directory structure (may contain manifest)
* @returns Promise<ManifestComparison> Manifest comparison result
*/
private compareManifests;
/**
* Convert manifest differences to conflict info
* @param manifestComparison Manifest comparison result
* @returns ManifestConflictInfo[] Array of manifest conflicts
*/
private convertManifestDifferencesToConflicts;
/**
* Generate suggestions for manifest conflicts
* @param diff Manifest field difference
* @returns string[] Array of suggestions
*/
private generateManifestConflictSuggestions;
}
//# sourceMappingURL=contentComparison.d.ts.map