@samiyev/guardian
Version:
Research-backed code quality guardian for AI-assisted development. Detects hardcodes, secrets, circular deps, framework leaks, entity exposure, and 9 architecture violations. Enforces Clean Architecture/DDD principles. Works with GitHub Copilot, Cursor, W
50 lines • 1.83 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CollectFiles = void 0;
const SourceFile_1 = require("../../../domain/entities/SourceFile");
const ProjectPath_1 = require("../../../domain/value-objects/ProjectPath");
const constants_1 = require("../../../shared/constants");
/**
* Pipeline step responsible for file collection and basic parsing
*/
class CollectFiles {
fileScanner;
constructor(fileScanner) {
this.fileScanner = fileScanner;
}
async execute(request) {
const filePaths = await this.fileScanner.scan({
rootDir: request.rootDir,
include: request.include,
exclude: request.exclude,
});
const sourceFiles = [];
for (const filePath of filePaths) {
const content = await this.fileScanner.readFile(filePath);
const projectPath = ProjectPath_1.ProjectPath.create(filePath, request.rootDir);
const imports = this.extractImports(content);
const exports = this.extractExports(content);
const sourceFile = new SourceFile_1.SourceFile(projectPath, content, imports, exports);
sourceFiles.push(sourceFile);
}
return { sourceFiles };
}
extractImports(content) {
const imports = [];
let match;
while ((match = constants_1.REGEX_PATTERNS.IMPORT_STATEMENT.exec(content)) !== null) {
imports.push(match[1]);
}
return imports;
}
extractExports(content) {
const exports = [];
let match;
while ((match = constants_1.REGEX_PATTERNS.EXPORT_STATEMENT.exec(content)) !== null) {
exports.push(match[1]);
}
return exports;
}
}
exports.CollectFiles = CollectFiles;
//# sourceMappingURL=CollectFiles.js.map