UNPKG

ripple-ai-detector

Version:

🌊 Ripple AI Bug Detector - Built by an AI that knows its flaws. Catch AI-generated bugs before you commit.

111 lines • 3.75 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.FileUtils = void 0; const fs_extra_1 = __importDefault(require("fs-extra")); const path_1 = __importDefault(require("path")); const glob_1 = require("glob"); class FileUtils { // Check if file exists static async exists(filePath) { try { await fs_extra_1.default.access(filePath); return true; } catch { return false; } } // Read file content static async readFile(filePath) { return fs_extra_1.default.readFile(filePath, 'utf-8'); } // Write file content static async writeFile(filePath, content) { await fs_extra_1.default.ensureDir(path_1.default.dirname(filePath)); await fs_extra_1.default.writeFile(filePath, content, 'utf-8'); } // Get file info static async getFileInfo(filePath) { const content = await this.readFile(filePath); const extension = path_1.default.extname(filePath); return { path: filePath, content, extension, isTypeScript: ['.ts', '.tsx'].includes(extension), isJavaScript: ['.js', '.jsx', '.ts', '.tsx'].includes(extension) }; } // Find files matching patterns static async findFiles(patterns, cwd = process.cwd()) { const allFiles = []; for (const pattern of patterns) { const files = await (0, glob_1.glob)(pattern, { cwd, ignore: ['node_modules/**', 'dist/**', 'build/**', '.git/**'] }); allFiles.push(...files.map(f => path_1.default.resolve(cwd, f))); } // Remove duplicates return [...new Set(allFiles)]; } // Get JavaScript/TypeScript files in directory static async getJSFiles(directory = process.cwd()) { return this.findFiles([ '**/*.js', '**/*.jsx', '**/*.ts', '**/*.tsx' ], directory); } // Check if file is supported static isSupportedFile(filePath) { const extension = path_1.default.extname(filePath); return ['.js', '.jsx', '.ts', '.tsx'].includes(extension); } // Get relative path from cwd static getRelativePath(filePath, basePath = process.cwd()) { return path_1.default.relative(basePath, filePath); } // Ensure directory exists static async ensureDir(dirPath) { await fs_extra_1.default.ensureDir(dirPath); } // Get file stats static async getStats(filePath) { return fs_extra_1.default.stat(filePath); } // Check if path is directory static async isDirectory(filePath) { try { const stats = await this.getStats(filePath); return stats.isDirectory(); } catch { return false; } } // Get files modified in last N minutes static async getRecentlyModified(directory, minutes = 60) { const files = await this.getJSFiles(directory); const cutoff = Date.now() - (minutes * 60 * 1000); const recentFiles = []; for (const file of files) { try { const stats = await this.getStats(file); if (stats.mtime.getTime() > cutoff) { recentFiles.push(file); } } catch { // Skip files that can't be accessed } } return recentFiles; } } exports.FileUtils = FileUtils; //# sourceMappingURL=file-utils.js.map