markmv
Version:
TypeScript CLI for markdown file operations with intelligent link refactoring
110 lines • 3.94 kB
TypeScript
/**
* File system statistics and metadata.
*
* Provides comprehensive information about a file or directory including size, type, and timestamp
* information.
*
* @category Utilities
*/
export interface FileStats {
path: string;
size: number;
isFile: boolean;
isDirectory: boolean;
modified: Date;
created: Date;
}
/**
* Configuration options for file copy operations.
*
* Controls behavior during file copying including overwrite handling, timestamp preservation, and
* directory creation.
*
* @category Utilities
*/
export interface CopyOptions {
overwrite?: boolean;
preserveTimestamps?: boolean;
createDirectories?: boolean;
}
/**
* Configuration options for file move operations.
*
* Extends copy options with move-specific features like backup creation. Move operations are
* typically implemented as copy-then-delete.
*
* @category Utilities
*/
export interface MoveOptions extends CopyOptions {
backup?: boolean;
}
/**
* Utility class for common file system operations.
*
* Provides a comprehensive set of static methods for file and directory manipulation, with proper
* error handling and cross-platform compatibility. All methods are async and use Node.js
* promises-based file system APIs.
*
* @category Utilities
*
* @example
* Basic file operations
* ```typescript
* // Check if file exists
* const exists = await FileUtils.exists('document.md');
*
* // Read file content
* const content = await FileUtils.readTextFile('document.md');
*
* // Write new content
* await FileUtils.writeTextFile('output.md', content, {
* createDirectories: true
* });
*
* // Find markdown files
* const files = await FileUtils.findMarkdownFiles('./docs', true);
* ```
*/
export declare class FileUtils {
/** Check if a file or directory exists */
static exists(path: string): Promise<boolean>;
/** Check if a path is readable */
static isReadable(path: string): Promise<boolean>;
/** Check if a path is writable */
static isWritable(path: string): Promise<boolean>;
/** Get file statistics */
static getStats(path: string): Promise<FileStats>;
/** Ensure directory exists, creating it if necessary */
static ensureDirectory(dirPath: string): Promise<void>;
/** Safely read a file with encoding detection */
static readTextFile(filePath: string): Promise<string>;
/** Safely write a file with directory creation */
static writeTextFile(filePath: string, content: string, options?: {
createDirectories?: boolean;
}): Promise<void>;
/** Copy a file with options */
static copyFile(sourcePath: string, destinationPath: string, options?: CopyOptions): Promise<void>;
/** Move a file with options */
static moveFile(sourcePath: string, destinationPath: string, options?: MoveOptions): Promise<void>;
/** Delete a file safely */
static deleteFile(filePath: string): Promise<void>;
/** List files in a directory with filtering */
static listFiles(dirPath: string, options?: {
recursive?: boolean;
extensions?: string[];
includeDirectories?: boolean;
}): Promise<string[]>;
/** Find markdown files in a directory */
static findMarkdownFiles(dirPath: string, recursive?: boolean): Promise<string[]>;
/** Create a backup of a file */
static createBackup(filePath: string, suffix?: string): Promise<string>;
/** Get file size in bytes */
static getFileSize(filePath: string): Promise<number>;
/** Check if two files have the same content */
static filesEqual(path1: string, path2: string): Promise<boolean>;
/** Generate a safe filename by removing invalid characters */
static sanitizeFilename(filename: string): string;
/** Get relative path between two files */
static getRelativePath(fromFile: string, toFile: string): string;
}
//# sourceMappingURL=file-utils.d.ts.map