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!
  1. Pascal-Quellen sind die einzige Codequelle (kein handgeschriebenes JavaScript)
  2. dist/ ist komplett wegwerfbar und regenerierbar
  3. Shared Code gehört in fpc-core/ oder pas2js/, nie in eine einzelne Extension
  4. Keine .ts Dateien — alles wird in Object Pascal geschrieben und mit pas2js kompiliert

Siehe auch

Zuletzt geändert: den 28.02.2026 um 21:16