- Introduced Aggregator.sol for Chainlink-compatible oracle functionality, including round-based updates and access control. - Added OracleWithCCIP.sol to extend Aggregator with CCIP cross-chain messaging capabilities. - Created .gitmodules to include OpenZeppelin contracts as a submodule. - Developed a comprehensive deployment guide in NEXT_STEPS_COMPLETE_GUIDE.md for Phase 2 and smart contract deployment. - Implemented Vite configuration for the orchestration portal, supporting both Vue and React frameworks. - Added server-side logic for the Multi-Cloud Orchestration Portal, including API endpoints for environment management and monitoring. - Created scripts for resource import and usage validation across non-US regions. - Added tests for CCIP error handling and integration to ensure robust functionality. - Included various new files and directories for the orchestration portal and deployment scripts.
184 lines
3.5 KiB
Markdown
184 lines
3.5 KiB
Markdown
# Python to TypeScript Migration Guide
|
|
|
|
## ✅ Migration Complete
|
|
|
|
All Python code has been successfully migrated to TypeScript/Node.js.
|
|
|
|
## 📋 What Changed
|
|
|
|
### Backend
|
|
- **Flask → Express.js**: Web framework
|
|
- **Python → TypeScript**: Language migration
|
|
- **sqlite3 → better-sqlite3**: Database library
|
|
- **PyYAML → yaml**: YAML parsing
|
|
- **Jinja2 → EJS**: Template engine
|
|
|
|
### Templates
|
|
- Converted from Jinja2 to EJS syntax
|
|
- All templates updated and tested
|
|
|
|
## 🚀 Quick Start
|
|
|
|
### Install Dependencies
|
|
```bash
|
|
# Install pnpm (if not already installed)
|
|
npm install -g pnpm
|
|
# Or using corepack
|
|
corepack enable && corepack prepare pnpm@latest --activate
|
|
|
|
cd orchestration/portal
|
|
pnpm install
|
|
```
|
|
|
|
### Development
|
|
```bash
|
|
pnpm dev
|
|
```
|
|
|
|
### Production
|
|
```bash
|
|
pnpm build
|
|
pnpm start
|
|
```
|
|
|
|
## 📝 Template Syntax Changes
|
|
|
|
### Variables
|
|
```jinja2
|
|
# Jinja2 (Python)
|
|
{{ variable }}
|
|
```
|
|
|
|
```ejs
|
|
// EJS (TypeScript)
|
|
<%= variable %>
|
|
```
|
|
|
|
### Conditionals
|
|
```jinja2
|
|
# Jinja2
|
|
{% if condition %}
|
|
content
|
|
{% endif %}
|
|
```
|
|
|
|
```ejs
|
|
// EJS
|
|
<% if (condition) { %>
|
|
content
|
|
<% } %>
|
|
```
|
|
|
|
### Loops
|
|
```jinja2
|
|
# Jinja2
|
|
{% for item in items %}
|
|
{{ item }}
|
|
{% endfor %}
|
|
```
|
|
|
|
```ejs
|
|
// EJS
|
|
<% items.forEach(item => { %>
|
|
<%= item %>
|
|
<% }); %>
|
|
```
|
|
|
|
### Filters
|
|
```jinja2
|
|
# Jinja2
|
|
{{ value|upper }}
|
|
{{ value|title }}
|
|
{{ value|round(2) }}
|
|
```
|
|
|
|
```ejs
|
|
// EJS
|
|
<%= value.toUpperCase() %>
|
|
<%= value.charAt(0).toUpperCase() + value.slice(1) %>
|
|
<%= value.toFixed(2) %>
|
|
```
|
|
|
|
## 🔄 API Compatibility
|
|
|
|
All API endpoints remain the same:
|
|
- Same routes
|
|
- Same request/response formats
|
|
- Same functionality
|
|
|
|
## 📦 File Structure
|
|
|
|
```
|
|
orchestration/portal/
|
|
├── src/ # TypeScript source
|
|
│ ├── server.ts # Main server
|
|
│ ├── config.ts # Configuration
|
|
│ ├── database.ts # Database operations
|
|
│ └── types/ # Type definitions
|
|
├── templates/ # EJS templates
|
|
├── static/ # Static assets
|
|
├── dist/ # Compiled JavaScript
|
|
├── package.json # Dependencies
|
|
└── tsconfig.json # TypeScript config
|
|
```
|
|
|
|
## 🎯 Benefits
|
|
|
|
1. **Type Safety**: Compile-time error checking
|
|
2. **Better IDE Support**: Autocomplete, refactoring
|
|
3. **Modern JavaScript**: ES2022 features
|
|
4. **Performance**: Node.js performance
|
|
5. **Ecosystem**: Access to npm packages
|
|
|
|
## 🔧 Configuration
|
|
|
|
### Environment Variables
|
|
```bash
|
|
PORT=5000 # Server port
|
|
HOST=0.0.0.0 # Server host
|
|
DB_PATH=... # Database path (optional)
|
|
```
|
|
|
|
### TypeScript Config
|
|
See `tsconfig.json` for compiler options.
|
|
|
|
## 📚 Documentation
|
|
|
|
- [TypeScript README](README_TYPESCRIPT.md) - Complete TypeScript documentation
|
|
- [Original README](README_ENHANCED.md) - Original Python documentation
|
|
|
|
## 🐛 Troubleshooting
|
|
|
|
### Build Errors
|
|
```bash
|
|
rm -rf dist node_modules
|
|
pnpm install
|
|
pnpm build
|
|
```
|
|
|
|
### Template Errors
|
|
- Check EJS syntax
|
|
- Ensure variables are passed correctly
|
|
- Use `<%- JSON.stringify(data) %>` for objects
|
|
|
|
### Database Issues
|
|
- Ensure `logs/` directory exists
|
|
- Check file permissions
|
|
- Database auto-creates on first run
|
|
|
|
## ✅ Migration Checklist
|
|
|
|
- [x] Convert Flask to Express
|
|
- [x] Convert Python functions to TypeScript
|
|
- [x] Update database operations
|
|
- [x] Convert templates to EJS
|
|
- [x] Create TypeScript types
|
|
- [x] Update configuration
|
|
- [x] Create build scripts
|
|
- [x] Update documentation
|
|
|
|
## 🎉 Status
|
|
|
|
**Migration Complete!** All Python code has been successfully migrated to TypeScript.
|
|
|