WvdS FPC RAD Studio - Documentazione per sviluppatori
Documentazione interna per gli sviluppatori della WvdS FPC RAD Suite
Questa documentazione è destinata agli
sviluppatori interni della suite, non agli utenti finali. Per la documentazione utente vedere
Public Documentation.
Panoramica
WvdS FPC RAD Studio è una suite di estensioni per Visual Studio Code, scritta interamente in Pascal e transpilata in JavaScript tramite pas2js.
Principi fondamentali
Nessun TypeScript - Tutte le estensioni sono basate su Pascal
SSOT - Single Source of Truth in sources/
Separation of Concerns - Architettura a strati rigorosa
Conforme a KRITIS/NIS2 - Sicurezza come requisito fondamentale
Indice della documentazione
Architettura
Sviluppo
Build e release
Sviluppo TUI
| Documento | Contenuto |
| Panoramica TUI | Architettura, requisiti di qualità, quando usare TUI |
| TUI Engine | CellBuffer, DiffEngine, rendering flicker-free |
| Controlli TUI | Pattern Model+Renderer, stati, input, focus |
| Layout TUI | Anchoring, responsive, breakpoint, container |
Assicurazione qualità
| Documento | Contenuto |
| Panoramica QA | Workflow, matrice profili, processi di audit |
| Checklist core | Production-ready, gestione errori, logging |
| Checklist sicurezza | KRITIS/NIS2, OWASP, crittografia |
| Checklist qualità codice | Naming, funzioni, DRY, SSOT |
| Standard di commento | PasDoc, doc-comments, review |
| Checklist VSCode | Specifico per estensioni, pas2js |
Riferimento API
| Documento | Contenuto |
| Core API | Servizi condivisi, accesso toolchain |
| Meta API | Registry componenti, provider IntelliSense |
| VSCode Wrapper | Unit WvdS.VSCode.* |
Libreria controlli
Riferimento API controlli
| Documento | Contenuto |
| Controlli base | Label, Button, CheckBox, ecc. (12) |
| Controlli editor | TextEdit, SpinEdit, DateEdit, ecc. (18) |
| Navigazione | TabControl, Wizard, NavBar, ecc. (7) |
| Controlli dati | DataGrid, TreeList, PivotGrid, ecc. (10) |
| Grafici | LineSeries, PieSeries, Sparkline, ecc. (16) |
| Indicatori | CircularGauge, LED, Thermometer, ecc. (10) |
| Layout | LayoutControl, DockingManager, ecc. (10) |
| Barre/Ribbon | RibbonControl, StatusBar, ecc. (10) |
| Specializzati | Scheduler, Spreadsheet, Map, ecc. (15) |
Guida rapida per nuovi sviluppatori
1. Configurare l'ambiente di sviluppo
# Clonare il repository
git clone https://github.com/ArmandoFilho/WvdS.FPC.git
cd WvdS.FPC
# Aprire VS Code
code .
2. Installare gli strumenti
3. Prima compilazione
cd sources/extensions/wvds.vscode.core
pas2js -Jc -Jirtl.js -Tbrowser -Fu../../common -FE./dist extension_main.pas
4. Testare l'estensione
F5 in VS Code per avviare l'Extension Development Host
Si apre una nuova finestra VS Code con le estensioni caricate
Palette comandi: WVDS: Hello per testare
Struttura del repository
WvdS.FPC/
├── sources/ # SSOT - Versionato
│ ├── common/ # Unit condivise
│ │ ├── core/ # Unit base
│ │ ├── ui/ # UI Framework
│ │ └── web/ # Host Bridges (Node, VSCode)
│ ├── extensions/ # Estensioni VSIX
│ │ ├── wvds.vscode.core/
│ │ ├── wvds.vscode.build/
│ │ ├── wvds.vscode.projects/
│ │ ├── wvds.vscode.packaging/
│ │ ├── wvds.vscode.ui.designer/
│ │ ├── wvds.vscode.ui.meta/
│ │ └── wvds.vscode.ui.preview/
│ ├── applications/ # Applicazioni standalone
│ ├── tools/ # Strumenti CLI (wvds-build, ecc.)
│ └── packages/ # Pacchetti IDE
│
├── binaries/ # Output build (non versionato)
│ ├── out/ # Artefatti compilati
│ ├── cache/ # Cache compilatore
│ ├── dist/ # Pacchetti release
│ └── logs/ # Log di build
│
└── .claude/ # Configurazione Claude
└── CLAUDE.md # Regole repository
Regole di policy
Queste regole sono non negoziabili e vengono verificate da wvds-lint:
P0: Single Source of Truth
CONSENTITO: sources/common/WvdS.System.pas
VIETATO: sources/extensions/wvds.vscode.core/WvdS.System.pas (duplicato!)
P1: Niente TypeScript
CONSENTITO: *.pas -> pas2js -> *.js
VIETATO: *.ts, *.js scritto a mano
P2: Wrapper solo in common
CONSENTITO: sources/common/web/vscode/VSCode.API.pas
VIETATO: sources/extensions/wvds.vscode.build/VSCode.API.pas
P3: Output autocontenuto
dist/extension_main.js deve contenere tutte le unit necessarie
Contatti
Prossimi passi