UNPKG

repomix

Version:

A tool to pack repository contents to single file for AI consumption

42 lines (41 loc) 1.96 kB
import { logger } from '../../shared/logger.js'; import { filterOutUntrustedFiles } from './filterOutUntrustedFiles.js'; import { runSecurityCheck } from './securityCheck.js'; export const validateFileSafety = async (rawFiles, progressCallback, config, gitDiffResult, gitLogResult, deps = { runSecurityCheck, filterOutUntrustedFiles, }) => { let suspiciousFilesResults = []; let suspiciousGitDiffResults = []; let suspiciousGitLogResults = []; if (config.security.enableSecurityCheck) { progressCallback('Running security check...'); const allResults = await deps.runSecurityCheck(rawFiles, progressCallback, gitDiffResult, gitLogResult); suspiciousFilesResults = allResults.filter((result) => result.type === 'file'); suspiciousGitDiffResults = allResults.filter((result) => result.type === 'gitDiff'); suspiciousGitLogResults = allResults.filter((result) => result.type === 'gitLog'); logSuspiciousContentWarning('Git diffs', suspiciousGitDiffResults); logSuspiciousContentWarning('Git logs', suspiciousGitLogResults); } const safeRawFiles = deps.filterOutUntrustedFiles(rawFiles, suspiciousFilesResults); const safeFilePaths = safeRawFiles.map((file) => file.path); logger.trace('Safe files count:', safeRawFiles.length); return { safeRawFiles, safeFilePaths, suspiciousFilesResults, suspiciousGitDiffResults, suspiciousGitLogResults, }; }; const logSuspiciousContentWarning = (contentType, results) => { if (results.length === 0) { return; } logger.warn(`Security issues found in ${contentType}, but they will still be included in the output`); for (const result of results) { const issueCount = result.messages.length; const issueText = issueCount === 1 ? 'issue' : 'issues'; logger.warn(` - ${result.filePath}: ${issueCount} ${issueText} detected`); } };