repomix
Version:
A tool to pack repository contents to single file for AI consumption
42 lines (41 loc) • 1.96 kB
JavaScript
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`);
}
};