@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
61 lines • 3.73 kB
TypeScript
import { IHardcodeDetector } from "../../../domain/services/IHardcodeDetector";
import { INamingConventionDetector } from "../../../domain/services/INamingConventionDetector";
import { IFrameworkLeakDetector } from "../../../domain/services/IFrameworkLeakDetector";
import { IEntityExposureDetector } from "../../../domain/services/IEntityExposureDetector";
import { IDependencyDirectionDetector } from "../../../domain/services/IDependencyDirectionDetector";
import { IRepositoryPatternDetector } from "../../../domain/services/RepositoryPatternDetectorService";
import { IAggregateBoundaryDetector } from "../../../domain/services/IAggregateBoundaryDetector";
import { ISecretDetector } from "../../../domain/services/ISecretDetector";
import { IAnemicModelDetector } from "../../../domain/services/IAnemicModelDetector";
import { IDuplicateValueTracker } from "../../../domain/services/IDuplicateValueTracker";
import { SourceFile } from "../../../domain/entities/SourceFile";
import { DependencyGraph } from "../../../domain/entities/DependencyGraph";
import type { AggregateBoundaryViolation, AnemicModelViolation, ArchitectureViolation, CircularDependencyViolation, DependencyDirectionViolation, EntityExposureViolation, FrameworkLeakViolation, HardcodeViolation, NamingConventionViolation, RepositoryPatternViolation, SecretViolation } from "../AnalyzeProject";
export interface DetectionRequest {
sourceFiles: SourceFile[];
dependencyGraph: DependencyGraph;
}
export interface DetectionResult {
violations: ArchitectureViolation[];
hardcodeViolations: HardcodeViolation[];
circularDependencyViolations: CircularDependencyViolation[];
namingViolations: NamingConventionViolation[];
frameworkLeakViolations: FrameworkLeakViolation[];
entityExposureViolations: EntityExposureViolation[];
dependencyDirectionViolations: DependencyDirectionViolation[];
repositoryPatternViolations: RepositoryPatternViolation[];
aggregateBoundaryViolations: AggregateBoundaryViolation[];
secretViolations: SecretViolation[];
anemicModelViolations: AnemicModelViolation[];
}
/**
* Pipeline step responsible for running all detectors
*/
export declare class ExecuteDetection {
private readonly hardcodeDetector;
private readonly namingConventionDetector;
private readonly frameworkLeakDetector;
private readonly entityExposureDetector;
private readonly dependencyDirectionDetector;
private readonly repositoryPatternDetector;
private readonly aggregateBoundaryDetector;
private readonly secretDetector;
private readonly anemicModelDetector;
private readonly duplicateValueTracker;
constructor(hardcodeDetector: IHardcodeDetector, namingConventionDetector: INamingConventionDetector, frameworkLeakDetector: IFrameworkLeakDetector, entityExposureDetector: IEntityExposureDetector, dependencyDirectionDetector: IDependencyDirectionDetector, repositoryPatternDetector: IRepositoryPatternDetector, aggregateBoundaryDetector: IAggregateBoundaryDetector, secretDetector: ISecretDetector, anemicModelDetector: IAnemicModelDetector, duplicateValueTracker: IDuplicateValueTracker);
execute(request: DetectionRequest): Promise<DetectionResult>;
private detectViolations;
private detectLayerFromImport;
private detectHardcode;
private detectCircularDependencies;
private detectNamingConventions;
private detectFrameworkLeaks;
private detectEntityExposures;
private detectDependencyDirections;
private detectRepositoryPatternViolations;
private detectAggregateBoundaryViolations;
private detectSecrets;
private detectAnemicModels;
private sortBySeverity;
}
//# sourceMappingURL=ExecuteDetection.d.ts.map