====== 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]]