/** * @angular-modernizer/plugin-angular - Boundary Rules * * Concrete analysis rules that detect architectural violations using the * dependency graph and architecture analyzer. */ import type { AnalysisRule, AnalysisContext, AnalysisResult } from '@angular-modernizer/plugin-system'; /** * Layer Violation Rule - detects when modules import from forbidden layers */ export declare class LayerViolationRule implements AnalysisRule { readonly id = "angular:architecture-layer-violation"; readonly name = "Layer Violation"; readonly description = "Detects when modules import from forbidden architectural layers"; readonly severity = "error"; readonly category = "angular-architecture"; readonly tags: string[]; private dependencyGraph; private architectureAnalyzer; initialize(context: AnalysisContext): Promise; analyze(context: AnalysisContext): Promise; } /** * Circular Dependency Rule - detects circular dependencies between modules */ export declare class CircularDependencyRule implements AnalysisRule { readonly id = "angular:architecture-circular-dependency"; readonly name = "Circular Dependency"; readonly description = "Detects circular dependencies between modules"; readonly severity = "error"; readonly category = "angular-architecture"; readonly tags: string[]; private dependencyGraph; private architectureAnalyzer; initialize(context: AnalysisContext): Promise; analyze(context: AnalysisContext): Promise; } /** * God Object Rule - detects classes with too many responsibilities */ export declare class GodObjectRule implements AnalysisRule { readonly id = "angular:architecture-god-object"; readonly name = "God Object"; readonly description = "Detects classes with too many methods (God objects)"; readonly severity = "warning"; readonly category = "angular-architecture"; readonly tags: string[]; private dependencyGraph; private architectureAnalyzer; initialize(context: AnalysisContext): Promise; analyze(context: AnalysisContext): Promise; } /** * Single Responsibility Rule - detects classes with multiple responsibilities */ export declare class SingleResponsibilityRule implements AnalysisRule { readonly id = "angular:architecture-single-responsibility"; readonly name = "Single Responsibility Violation"; readonly description = "Detects classes that violate the Single Responsibility Principle"; readonly severity = "warning"; readonly category = "angular-architecture"; readonly tags: string[]; private dependencyGraph; private architectureAnalyzer; initialize(context: AnalysisContext): Promise; analyze(context: AnalysisContext): Promise; } /** * Open Closed Rule - detects classes that need modification for extension */ export declare class OpenClosedRule implements AnalysisRule { readonly id = "angular:architecture-open-closed"; readonly name = "Open/Closed Principle Violation"; readonly description = "Detects classes that violate the Open/Closed Principle"; readonly severity = "info"; readonly category = "angular-architecture"; readonly tags: string[]; private dependencyGraph; private architectureAnalyzer; initialize(context: AnalysisContext): Promise; analyze(context: AnalysisContext): Promise; } /** * Direct Instantiation Rule - detects direct service instantiation */ export declare class DirectInstantiationRule implements AnalysisRule { readonly id = "angular:architecture-direct-instantiation"; readonly name = "Direct Service Instantiation"; readonly description = "Detects direct instantiation of services instead of dependency injection"; readonly severity = "warning"; readonly category = "angular-architecture"; readonly tags: string[]; private dependencyGraph; private architectureAnalyzer; initialize(context: AnalysisContext): Promise; analyze(context: AnalysisContext): Promise; } /** * Missing Interface Rule - detects services without interfaces */ export declare class MissingInterfaceRule implements AnalysisRule { readonly id = "angular:architecture-missing-interface"; readonly name = "Missing Service Interface"; readonly description = "Detects services that don't implement interfaces"; readonly severity = "info"; readonly category = "angular-architecture"; readonly tags: string[]; private dependencyGraph; private architectureAnalyzer; initialize(context: AnalysisContext): Promise; analyze(context: AnalysisContext): Promise; } /** * Service Locator Rule - detects service locator pattern usage */ export declare class ServiceLocatorRule implements AnalysisRule { readonly id = "angular:architecture-service-locator"; readonly name = "Service Locator Pattern"; readonly description = "Detects usage of the Service Locator anti-pattern"; readonly severity = "warning"; readonly category = "angular-architecture"; readonly tags: string[]; private dependencyGraph; private architectureAnalyzer; initialize(context: AnalysisContext): Promise; analyze(context: AnalysisContext): Promise; } /** * Dumb Component Business Logic Rule - detects presentation components with business logic */ export declare class DumbComponentBusinessLogicRule implements AnalysisRule { readonly id = "angular:architecture-dumb-component-business-logic"; readonly name = "Dumb Component Business Logic"; readonly description = "Detects presentation components that contain business logic"; readonly severity = "warning"; readonly category = "angular-architecture"; readonly tags: string[]; private dependencyGraph; private architectureAnalyzer; initialize(context: AnalysisContext): Promise; analyze(context: AnalysisContext): Promise; } /** * Smart Component Presentation Rule - detects container components with presentation logic */ export declare class SmartComponentPresentationRule implements AnalysisRule { readonly id = "angular:architecture-smart-component-presentation"; readonly name = "Smart Component Presentation Logic"; readonly description = "Detects container components with complex presentation logic"; readonly severity = "info"; readonly category = "angular-architecture"; readonly tags: string[]; private dependencyGraph; private architectureAnalyzer; initialize(context: AnalysisContext): Promise; analyze(context: AnalysisContext): Promise; } //# sourceMappingURL=boundary-rules.d.ts.map