UNPKG

prprompts-flutter-generator

Version:

AI-powered Flutter development with full automation + official extension support - Generate 32 security-audited guides & auto-implement in 2-3 hours. NEW v5.1: Official Claude Code plugin with hooks, Gemini TOML commands, Qwen MCP settings. Features: Comp

262 lines (237 loc) 6.74 kB
/** * PRPROMPTS Flutter Generator - Validation System * * Phase 5: Comprehensive validation framework for React-to-Flutter refactoring * * Exports: * - Core Validators (Code, Architecture, Security, Performance, Accessibility) * - Behavior Validators (State, Props, API) * - Orchestrator (coordinates all validators) * - Report Generator (JSON, HTML, Markdown reports) */ // Core Validators const CodeValidator = require('./CodeValidator'); const ArchitectureValidator = require('./ArchitectureValidator'); const SecurityValidator = require('./SecurityValidator'); const PerformanceValidator = require('./PerformanceValidator'); const AccessibilityValidator = require('./AccessibilityValidator'); // Orchestration const ValidationOrchestrator = require('./ValidationOrchestrator'); const ReportGenerator = require('./ReportGenerator'); // Models const { ValidationResult } = require('../models/ValidationResult'); /** * Quick validation functions */ /** * Validate a single Dart file * @param {string} filePath - Path to Dart file * @param {string} code - Dart source code (optional, will read from file if not provided) * @param {object} config - Validation configuration * @returns {Promise<object>} Validation results */ async function validateFile(filePath, code = null, config = {}) { const orchestrator = new ValidationOrchestrator(config); return await orchestrator.validateFile(filePath, code); } /** * Validate entire Flutter project * @param {string} projectPath - Path to Flutter project root * @param {object} config - Validation configuration * @returns {Promise<object>} Comprehensive validation results */ async function validateProject(projectPath, config = {}) { const orchestrator = new ValidationOrchestrator(config); return await orchestrator.validateProject(projectPath); } /** * Validate code against specific validator * @param {string} validator - Validator name (code, architecture, security, performance, accessibility) * @param {string} target - File path or project path * @param {string} code - Optional source code * @param {object} config - Validator configuration * @returns {ValidationResult} */ function validateWith(validator, target, code = null, config = {}) { const validators = { code: CodeValidator, architecture: ArchitectureValidator, security: SecurityValidator, performance: PerformanceValidator, accessibility: AccessibilityValidator }; const ValidatorClass = validators[validator.toLowerCase()]; if (!ValidatorClass) { throw new Error(`Unknown validator: ${validator}. Available: ${Object.keys(validators).join(', ')}`); } const validatorInstance = new ValidatorClass(config); // Architecture validator expects project path only if (validator.toLowerCase() === 'architecture') { return validatorInstance.validate(target); } // Other validators expect (filePath, code) return validatorInstance.validate(target, code); } /** * Generate validation report * @param {object} results - Validation results * @param {string} format - Report format (json, html, markdown) * @returns {string} Report content */ function generateReport(results, format = 'json') { const generator = new ReportGenerator(); switch (format.toLowerCase()) { case 'html': return generator.generateHTML(results); case 'markdown': case 'md': return generator.generateMarkdown(results); case 'json': default: return JSON.stringify(results, null, 2); } } /** * Validation configuration templates */ const ValidationConfig = { // Strict configuration - for production code strict: { enabledValidators: { code: true, architecture: true, security: true, performance: true, accessibility: true }, thresholds: { minimumScore: 90, errorTolerance: 0, warningTolerance: 5 }, code: { strictNullSafety: true, requireConstConstructors: true, requireKeyParameter: true }, security: { checkSecrets: true, checkCompliance: true, strictMode: true } }, // Standard configuration - for development standard: { enabledValidators: { code: true, architecture: true, security: true, performance: true, accessibility: true }, thresholds: { minimumScore: 80, errorTolerance: 0, warningTolerance: 10 }, code: { strictNullSafety: true, requireConstConstructors: false, requireKeyParameter: true } }, // Lenient configuration - for legacy code lenient: { enabledValidators: { code: true, architecture: false, security: true, performance: false, accessibility: false }, thresholds: { minimumScore: 60, errorTolerance: 5, warningTolerance: 20 }, code: { strictNullSafety: false, requireConstConstructors: false, requireKeyParameter: false }, security: { checkSecrets: true, checkCompliance: false, strictMode: false } }, // Security-focused configuration security: { enabledValidators: { code: false, architecture: false, security: true, performance: false, accessibility: false }, thresholds: { minimumScore: 100, errorTolerance: 0, warningTolerance: 0 }, security: { checkSecrets: true, checkCompliance: true, strictMode: true } }, // Performance-focused configuration performance: { enabledValidators: { code: false, architecture: false, security: false, performance: true, accessibility: false }, thresholds: { minimumScore: 85, errorTolerance: 0, warningTolerance: 5 }, performance: { enforceConst: true, checkListViews: true, checkImageOptimization: true } } }; // Exports module.exports = { // Validators CodeValidator, ArchitectureValidator, SecurityValidator, PerformanceValidator, AccessibilityValidator, // Orchestration ValidationOrchestrator, ReportGenerator, // Models ValidationResult, // Quick functions validateFile, validateProject, validateWith, generateReport, // Configuration templates ValidationConfig, // Default export default: { validateFile, validateProject, validateWith, generateReport, ValidationConfig } };