UNPKG

@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
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;