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
407 lines (311 loc) • 10.8 kB
Markdown
**Phase 1: Core Infrastructure and Models** - COMPLETED
This directory contains the core infrastructure for converting React/React Native applications to Flutter using AI-enhanced parsing and code generation. The system is designed to be modular, extensible, and maintainable.
```
lib/refactoring/
├── models/
│ ├── ComponentModel.js
│ ├── WidgetModel.js
│ ├── ConversionContext.js
│ └── ValidationResult.js
├── parsers/
├── generators/
├── ai/
├── validation/
└── utils/
├── logger.js
├── fileHandler.js
└── config.js
```
Represents a parsed React component with all its properties and metadata.
**Features:**
- Props and state tracking
- Hook detection
- API endpoint mapping
- Complexity analysis
- State management pattern detection
- Automatic Flutter state management recommendation
**Usage:**
```javascript
const { ComponentModel, ComponentType } = require('./models/ComponentModel');
const component = new ComponentModel({
filePath: 'src/components/LoginPage.tsx',
name: 'LoginPage',
type: ComponentType.PAGE,
props: [
{ name: 'onSuccess', type: 'function', isRequired: false }
],
state: [
{ name: 'email', type: 'string', initialValue: '""' },
{ name: 'password', type: 'string', initialValue: '""' }
],
apiEndpoints: [
{ method: 'POST', path: '/auth/login' }
]
});
// Get complexity score
const score = component.getComplexityScore(); // 0-10
// Get recommended Flutter state management
const stateManagement = component.recommendedFlutterStateManagement(); // 'bloc' or 'cubit'
```
Represents a Flutter widget with all its properties and metadata.
**Features:**
- Property management with Dart type support
- Import statement generation
- Child widget hierarchy
- Code skeleton generation
- Naming convention support
**Usage:**
```javascript
const { WidgetModel, WidgetType } = require('./models/WidgetModel');
const widget = new WidgetModel({
name: 'LoginPage',
type: WidgetType.STATEFUL,
properties: [
{ name: 'title', type: 'String', isRequired: true }
],
imports: [
{ package: 'flutter/material.dart' }
]
});
// Generate Dart code skeleton
const code = widget.generateSkeletonCode();
// Get file name
const fileName = widget.getFileName(); // 'login_page.dart'
```
Maintains state and context during the entire conversion process.
**Features:**
- Component and widget tracking
- Element and type mappings
- Error and warning management
- Statistics and progress tracking
- Serialization support
**Usage:**
```javascript
const { ConversionContext, ConversionPhase } = require('./models/ConversionContext');
const context = new ConversionContext({
projectName: 'My App',
sourceRoot: './react-app',
targetRoot: './flutter-app'
});
// Start conversion
context.start(ConversionPhase.PARSING);
// Initialize default mappings
context.initializeDefaultMappings();
// Add components and widgets
context.addComponent(reactComponent);
context.addWidget(flutterWidget);
// Track errors and warnings
context.addError({
message: 'Failed to parse component',
component: 'LoginPage',
phase: ConversionPhase.PARSING
});
// Get statistics
const stats = context.getStatistics();
console.log(context.getSummary());
```
Represents validation results with severity levels and suggestions.
**Features:**
- Multi-level severity (error, warning, info, success)
- Categorization (syntax, type, structure, etc.)
- Scoring and grading (0-100, A-F)
- Detailed reporting
**Usage:**
```javascript
const { ValidationResult, ValidationSeverity } = require('./models/ValidationResult');
const result = new ValidationResult({
target: 'LoginPage.tsx',
valid: true
});
// Add issues
result.addError('Missing required prop: onPress', {
file: 'src/components/Button.tsx',
line: 42,
suggestions: ['Add onPress prop to Button component']
});
result.addWarning('Consider using memo for performance', {
category: 'performance'
});
// Get score and grade
const score = result.getScore(); // 0-100
const grade = result.getGrade(); // A-F
// Generate report
console.log(result.getDetailedReport());
```
Comprehensive logging utility with multiple levels and file output support.
**Features:**
- Multiple log levels (DEBUG, INFO, WARN, ERROR, SILENT)
- Colorized terminal output
- File logging support
- Child logger creation
- Progress indicators
**Usage:**
```javascript
const { createModuleLogger, LogLevel } = require('./utils/logger');
const logger = createModuleLogger('MyModule');
logger.debug('Debug message');
logger.info('Info message');
logger.warn('Warning message');
logger.error('Error message');
logger.success('Operation completed successfully');
logger.failure('Operation failed');
// Progress tracking
logger.progress(5, 10, 'Converting components');
// Create child logger
const childLogger = logger.child('SubModule');
```
Safe file operations with error handling and validation.
**Features:**
- Read, write, copy, delete operations
- Directory management
- JSON file support
- Recursive file search
- Path resolution
**Usage:**
```javascript
const { createFileHandler } = require('./utils/fileHandler');
const fileHandler = createFileHandler({
baseDir: process.cwd(),
createMissing: true,
overwrite: false
});
// Read file
const content = await fileHandler.readFile('src/component.tsx');
// Write file
await fileHandler.writeFile('lib/widget.dart', dartCode);
// Ensure directory exists
await fileHandler.ensureDir('lib/features/auth');
// Find files
const components = await fileHandler.findFiles('src', /\.tsx$/);
// JSON operations
const config = await fileHandler.readJSON('config.json');
await fileHandler.writeJSON('output.json', data);
```
Configuration management with validation and persistence.
**Features:**
- Default configuration
- Deep merging
- Validation
- File persistence (JSON, JS)
- Dot-notation access
**Usage:**
```javascript
const { createConfig, loadConfig } = require('./utils/config');
// Create with custom config
const config = createConfig({
conversion: {
stateManagement: {
default: 'cubit'
}
}
});
// Get values
const stateManagement = config.get('conversion.stateManagement.default');
// Set values
config.set('logging.level', 'debug');
// Load from file
const config2 = await loadConfig('refactoring.config.json');
// Save to file
await config.saveToFile('my-config.json');
```
All models and utilities have comprehensive unit tests.
**Run tests:**
```bash
npm test -- tests/refactoring/models/ComponentModel.test.js
npm test -- tests/refactoring/models/WidgetModel.test.js
```
**Test coverage:**
- ComponentModel: All methods and edge cases
- WidgetModel: All methods and edge cases
- Serialization/deserialization
- Validation and error handling
**Completed:**
- ✅ Directory structure
- ✅ ComponentModel with props, state, hooks, methods
- ✅ WidgetModel with properties, children, imports
- ✅ ConversionContext with mappings and error tracking
- ✅ ValidationResult with severity levels and scoring
- ✅ Logger utility with multiple levels and colors
- ✅ FileHandler utility with comprehensive file operations
- ✅ Config utility with validation and persistence
- ✅ Comprehensive test suites for ComponentModel and WidgetModel
- ✅ Complete JSDoc documentation
**Key Features:**
- Immutable model design where appropriate
- Comprehensive validation and error handling
- ES6+ best practices (classes, async/await, const/let)
- Full serialization/deserialization support
- Testable and maintainable code
### Phase 2: Parsers and Generators (NEXT)
**Planned:**
- React/JSX parser using AST (Abstract Syntax Tree)
- TypeScript type extractor
- State management pattern detector
- Flutter widget generator
- Dart code formatter
- Import organizer
### Phase 3: AI Integration
**Planned:**
- OpenAI/Anthropic integration for complex conversions
- Code quality analyzer
- Best practice recommender
- Documentation generator
### Phase 4: CLI and Tooling
**Planned:**
- Command-line interface
- Interactive mode
- Watch mode for incremental conversion
- Progress reporting
- Diff viewer
## Design Principles
1. **Modularity** - Each module has a single responsibility
2. **Testability** - All code is unit-testable
3. **Documentation** - Comprehensive JSDoc comments
4. **Error Handling** - Graceful error handling with detailed messages
5. **Immutability** - Models are immutable where appropriate
6. **Type Safety** - Input validation on all constructors
7. **Extensibility** - Easy to add new features and mappings
## Next Steps
To continue implementation:
1. **Phase 2 - Parsers:**
- Implement React component parser using `@babel/parser`
- Extract component structure, props, state, hooks
- Detect state management patterns
- Extract styling information
2. **Phase 2 - Generators:**
- Implement Flutter widget generator
- Generate Clean Architecture structure (domain/data/presentation)
- Generate BLoC/Cubit based on complexity
- Generate tests
3. **Phase 3 - AI Integration:**
- Integrate with Claude API for complex conversions
- Generate documentation
- Suggest optimizations
4. **Phase 4 - CLI:**
- Create command-line interface
- Add interactive prompts
- Implement watch mode
## Contributing
When adding new features:
1. Follow existing patterns and conventions
2. Add comprehensive JSDoc documentation
3. Write unit tests with good coverage
4. Update this README
5. Follow ES6+ best practices
## License
MIT License - Part of prprompts-flutter-generator project