====== Entwicklungsumgebung ====== Projektstruktur und Pfade für die WvdS FPC VSCode Extensions. ===== Projektstruktur ===== D:\Workspace\repos\sources\WvdS\ ├── fpc-core/ # Shared Pascal Library (alle Extensions) │ ├── core/ # Models, Parser (FpcModels, IssModels, ...) │ ├── services/ # Platform, WebView, Logger, CliRunner │ ├── utils/ # Constants, Interop │ └── build/ # Build-Logik (FpcDirect, BuildTask) │ ├── pas2js/ # pas2js API Bindings (Shared) │ ├── NodeJS/ # Node.js (FS, Path, ChildProcess, ...) │ ├── VSCode/ # VSCode Extension API │ ├── Browser/ # Browser/DOM API │ └── Components/ # WvdS UI Komponenten │ ├── Designer/ # Design-Time Renderer │ ├── Runtime/ # Runtime Renderer (WebView) │ ├── Data/ # Daten-Komponenten │ ├── System/Common/ # System-Basis │ └── GUI/ # GUI-Komponenten │ ├── Core/Common/ # Basis-Controls │ ├── Standard/ # Panels, Labels, ... │ ├── Editors/ # TextEdit, ComboBox, ... │ ├── Layouts/ # StackPanel, GridPanel │ ├── Navigation/ # PageControl, Accordion │ ├── Grids/ # TableView, BandedView, ... │ ├── Charts/ # Chart-Komponenten │ └── Gauges/ # Gauge-Komponenten │ └── vsce/ # VSCode Extensions ├── ci-build.ps1 # CI-Orchestrator ├── wvds-fpc-solution-manager/ # Extension: Solution Manager │ ├── src-pas/ # Pascal-Quellen │ │ ├── extension.pas # Entry Point │ │ ├── tree/ # Tree View Provider │ │ ├── services/ # Extension Services │ │ ├── editor/ # WebView Panels │ │ ├── build/ # Build-Logik │ │ ├── debug/ # Debug-Adapter │ │ └── tests/ # Unit-Tests │ ├── dist/ # Build-Output │ ├── media/ # Icons, CSS │ ├── syntaxes/ # TextMate Grammars │ ├── build.ps1 # Build-Script │ └── package.json # VSCode Manifest │ ├── wvds-fpc-pas2js-studio/ # Extension: PAS2JS Studio │ ├── src-pas/ # (gleiche Struktur wie SM) │ ├── dist/ │ ├── build.ps1 │ └── package.json │ ├── wvds-fpc-iss-designer/ # Extension: ISS Designer │ ├── src-pas/ │ ├── dist/ │ ├── build.ps1 │ └── package.json │ └── wvds-fpc-tools/ # Extension Pack (Bundle) └── package.json # extensionPack Deklaration ===== Abhängigkeitskette ===== wvds-fpc-tools (Extension Pack) ├── wvds-fpc-solution-manager ← Basis-Extension (eigenständig lauffähig) ├── wvds-fpc-pas2js-studio ← Abhängig von Solution Manager └── wvds-fpc-iss-designer ← Abhängig von Solution Manager Shared Code: Extension (src-pas/) └── nutzt → fpc-core/ (core, services, utils, build) └── nutzt → pas2js/ (NodeJS, VSCode, Components) ===== Compiler und Toolchain ===== ^ Tool ^ Pfad ^ Beschreibung ^ | pas2js | ''C:\Lazarus\fpc\3.3.1\bin\pas2js.exe'' | Pascal → JavaScript Compiler | | esbuild | ''node_modules\.bin\esbuild.cmd'' | JS Bundler + Minifier | | vsce | ''npx @vscode/vsce'' | VSIX Paketierung | | FPC | ''C:\Lazarus\fpc\3.3.1\bin'' | Free Pascal (für native Tools) | | FPC Source | ''C:\Lazarus\fpc\3.3.1\source'' | FPC Quellcode (Referenz) | ==== pas2js RTL ==== ^ Paket ^ Pfad ^ | RTL | ''C:\Lazarus\fpc\pas2js-windows-2.2.0\packages\rtl'' | | Node.js | ''C:\Lazarus\fpc\pas2js-windows-2.2.0\packages\nodejs'' | Die pas2js-Konfiguration (''pas2js.cfg'') im Compiler-Verzeichnis definiert die RTL-Pfade automatisch. ===== Externe Referenzen ===== Optional — nur für Entwickler die Referenz-Implementierungen studieren möchten. ^ Variable ^ Pfad ^ Beschreibung ^ | DXVCL | ''D:\Workspace\3rd\DevExpress\VCL'' | DevExpress VCL (Delphi) | | DXNET | ''C:\Program Files\DevExpress 25.1\Components\Sources'' | DevExpress .NET | | NODEJS_SRC | ''D:\Workspace\3rd\node-main'' | Node.js Quellcode | | VSCODE_SRC | ''D:\Workspace\3rd\vscode-main'' | VSCode Quellcode | | WEZTERM_SRC | ''D:\Workspace\3rd\wezterm'' | WezTerm (TUI-Referenz) | ===== Build-Output ===== ==== Lokaler Build ==== {extension}/dist/ ├── extension.pas2js.js # Intermediate (pas2js) ├── extension.pas2js.js.map # Source Map (Debug) ├── extension.js # Final Bundle (esbuild) └── extension.js.map # Bundled Source Map (Debug) ==== VSIX-Pakete ==== D:\Workspace\binaries\ ├── wvds-fpc-solution-manager\vscode\ │ ├── Debug\*.vsix │ └── Release\*.vsix ├── wvds-fpc-pas2js-studio\vscode\ │ ├── Debug\*.vsix │ └── Release\*.vsix └── nightly\ ├── 2026-02-28\ # Tages-Archiv └── 2026-02-27\ ==== Installierte Extensions ==== %USERPROFILE%\.vscode\extensions\ ├── wvds.wvds-fpc-solution-manager-0.1.0\ │ ├── dist\extension.js ← Deploy-Ziel │ ├── media\ │ ├── syntaxes\ │ └── package.json ├── wvds.wvds-fpc-pas2js-studio-0.1.0\ │ └── dist\extension.js ├── wvds.wvds-fpc-iss-designer-0.1.0\ │ └── dist\extension.js └── wvds.wvds-fpc-tools-0.1.0\ └── package.json ← Nur Manifest (Extension Pack) ===== Dokumentation ===== ^ Pfad ^ Beschreibung ^ | ''D:\DokuWikiStick\dokuwiki\data\pages\de\int\vsce\fpc\i\'' | Interne Entwickler-Doku | | ''D:\Workspace\WvdS.Media\'' | Icons und Assets | ===== SSOT-Regeln ===== **Single Source of Truth** — Diese Regeln sind verbindlich! - **Pascal-Quellen** sind die einzige Codequelle (kein handgeschriebenes JavaScript) - **''dist/''** ist komplett wegwerfbar und regenerierbar - **Shared Code** gehört in ''fpc-core/'' oder ''pas2js/'', nie in eine einzelne Extension - **Keine ''.ts'' Dateien** — alles wird in Object Pascal geschrieben und mit pas2js kompiliert ===== Siehe auch ===== * [[.:architektur|Architektur-Übersicht]] * [[.:build-pipeline|Build-Pipeline]] * [[.:extension-entwicklung|Extension-Entwicklung]]