@re-shell/cli
Version:
Full-stack development platform uniting microservices and microfrontends. Build complete applications with .NET (ASP.NET Core Web API, Minimal API), Java (Spring Boot, Quarkus, Micronaut, Vert.x), Rust (Actix-Web, Warp, Rocket, Axum), Python (FastAPI, Dja
118 lines (117 loc) • 3.83 kB
TypeScript
import { EventEmitter } from 'events';
import { Template, TemplateCategory } from './template-engine';
export interface ValidationResult {
valid: boolean;
errors: ValidationError[];
warnings: ValidationWarning[];
compatibility: CompatibilityReport;
suggestions: string[];
score: number;
}
export interface ValidationError {
type: ErrorType;
severity: 'error' | 'critical';
field: string;
message: string;
details?: any;
}
export interface ValidationWarning {
type: WarningType;
field: string;
message: string;
suggestion?: string;
}
export declare enum ErrorType {
MISSING_FIELD = "missing_field",
INVALID_TYPE = "invalid_type",
INVALID_VALUE = "invalid_value",
INVALID_REFERENCE = "invalid_reference",
CIRCULAR_DEPENDENCY = "circular_dependency",
VERSION_CONFLICT = "version_conflict",
FILE_NOT_FOUND = "file_not_found",
SYNTAX_ERROR = "syntax_error",
SECURITY_ISSUE = "security_issue",
COMPATIBILITY_ISSUE = "compatibility_issue"
}
export declare enum WarningType {
DEPRECATED_FEATURE = "deprecated_feature",
MISSING_OPTIONAL = "missing_optional",
PERFORMANCE_ISSUE = "performance_issue",
BEST_PRACTICE = "best_practice",
NAMING_CONVENTION = "naming_convention",
DOCUMENTATION = "documentation",
ACCESSIBILITY = "accessibility"
}
export interface CompatibilityReport {
nodeVersion: CompatibilityCheck;
cliVersion: CompatibilityCheck;
dependencies: CompatibilityCheck[];
platforms: PlatformCompatibility[];
frameworks: FrameworkCompatibility[];
overallScore: number;
}
export interface CompatibilityCheck {
name: string;
required: string;
current?: string;
compatible: boolean;
recommendation?: string;
}
export interface PlatformCompatibility {
platform: 'windows' | 'darwin' | 'linux';
compatible: boolean;
issues: string[];
}
export interface FrameworkCompatibility {
framework: string;
version: string;
compatible: boolean;
issues: string[];
}
export interface ValidationConfig {
strict: boolean;
checkSecurity: boolean;
checkPerformance: boolean;
checkBestPractices: boolean;
checkAccessibility: boolean;
customRules?: ValidationRule[];
trustedAuthors?: string[];
allowedCategories?: TemplateCategory[];
maxComplexity?: number;
}
export interface ValidationRule {
name: string;
description: string;
check: (template: Template) => ValidationError | ValidationWarning | null;
}
export declare class TemplateValidator extends EventEmitter {
private config;
private defaultConfig;
private builtinRules;
private securityPatterns;
constructor(config?: Partial<ValidationConfig>);
private initializeBuiltinRules;
validate(template: Template): Promise<ValidationResult>;
private validateStructure;
private validateFiles;
private validateVariables;
private validateHooks;
private validateSecurity;
private validatePerformance;
private validateBestPractices;
private checkCompatibility;
private checkNodeCompatibility;
private checkCliCompatibility;
private checkDependencyCompatibility;
private checkPlatformCompatibility;
private checkFrameworkCompatibility;
private calculateComplexity;
private calculateScore;
validateTemplateFile(filePath: string): Promise<ValidationResult>;
updateConfig(config: Partial<ValidationConfig>): void;
addCustomRule(rule: ValidationRule): void;
removeCustomRule(name: string): boolean;
}
export declare function createTemplateValidator(config?: Partial<ValidationConfig>): TemplateValidator;
export declare function getGlobalTemplateValidator(): TemplateValidator;
export declare function setGlobalTemplateValidator(validator: TemplateValidator): void;