From 184276caa904c60dadae0f72b919f3ca91287db7 Mon Sep 17 00:00:00 2001 From: Simon Roesch Date: Thu, 5 Mar 2026 17:39:27 +0100 Subject: [PATCH 01/20] Encapsualtion and WebDev inclusion in README seperate component for View. Enables visualization design in browser. Instructions in README. --- README.md | 11 + media/programflow-visualization/linkerline.js | 2 - media/programflow-visualization/webview.js | 199 -- package-lock.json | 1670 +++++------------ package.json | 19 +- scripts/build-web.mjs | 79 + src/programflow-visualization/FileHandler.ts | 1 + .../frontend/frontend.ts | 29 - .../frontend/visualization_panel.ts | 400 ++-- src/programflow-visualization/main.ts | 9 +- src/programflow-visualization/trace_cache.ts | 1 + src/programflow-visualization/types.ts | 26 +- .../web/example-trace-content.js | 426 +++++ .../html-generator.ts} | 9 + src/programflow-visualization/web/index.html | 73 + .../web/tsconfig.json | 9 + .../web/vscode-host-adapter.ts | 41 + .../web}/webview.css | 0 src/programflow-visualization/web/webview.ts | 329 ++++ tsconfig.json | 4 +- webpack.config.js | 12 - 21 files changed, 1681 insertions(+), 1668 deletions(-) delete mode 100644 media/programflow-visualization/linkerline.js delete mode 100644 media/programflow-visualization/webview.js create mode 100644 scripts/build-web.mjs delete mode 100644 src/programflow-visualization/frontend/frontend.ts create mode 100644 src/programflow-visualization/web/example-trace-content.js rename src/programflow-visualization/{frontend/HTMLGenerator.ts => web/html-generator.ts} (98%) create mode 100644 src/programflow-visualization/web/index.html create mode 100644 src/programflow-visualization/web/tsconfig.json create mode 100644 src/programflow-visualization/web/vscode-host-adapter.ts rename {media/programflow-visualization => src/programflow-visualization/web}/webview.css (100%) create mode 100644 src/programflow-visualization/web/webview.ts delete mode 100644 webpack.config.js diff --git a/README.md b/README.md index 8e39ad27..43c9682e 100644 --- a/README.md +++ b/README.md @@ -218,3 +218,14 @@ You can debug the extension from Visual Studio Code: * Open the main folder of the plugin with vscode. * Open the file `extension.ts`. * Choose "Run" from the menu, then "Start Debugging". + +## WebDev + +You can develop the design of the visualization using an example trace in your browser: + +* `npm install` +* `npm run build` +* `npm run watch:web` +* In console: `cd out/programflow-visualization/web` + `python3 -m http.server 5173` +* Then open http://localhost:5173/index.web.html +* Now you can edit files in `src/programflow-visualization/web`, watch:web will rebuild automatically and you can refresh your browser tab to see the changes \ No newline at end of file diff --git a/media/programflow-visualization/linkerline.js b/media/programflow-visualization/linkerline.js deleted file mode 100644 index 23781b77..00000000 --- a/media/programflow-visualization/linkerline.js +++ /dev/null @@ -1,2 +0,0 @@ -import LinkerLine from "linkerline"; -window.LinkerLine = LinkerLine; diff --git a/media/programflow-visualization/webview.js b/media/programflow-visualization/webview.js deleted file mode 100644 index 56f326f3..00000000 --- a/media/programflow-visualization/webview.js +++ /dev/null @@ -1,199 +0,0 @@ -const vscode = acquireVsCodeApi(); - -let refTags = []; - -/** - * Event Listener that listens to all incoming messages from the extension. - * Needs to be done so that Webview and js Script can communication with one another. - */ -window.addEventListener("message", (event) => { - // Data send from extension - const message = event.data; - - switch (message.command) { - case "updateButtons": - document.querySelector("#nextButton").disabled = !message.next; - document.querySelector("#prevButton").disabled = !message.prev; - document.querySelector("#firstButton").disabled = !message.first; - document.querySelector("#lastButton").disabled = !message.last; - break; - case "updateContent": - var traceMax = message.traceLen - 1; - if (traceMax < 0) { - traceMax = 0; - } - document.querySelector("#traceSlider").max = traceMax; - document.querySelector("#traceSlider").value = message.traceIndex; - document.querySelector("#traceMax").innerHTML = "/" + (message.traceComplete ? traceMax.toString() : "?"); - document.querySelector("#indexCounter").innerHTML = message.traceIndex; - updateVisualization(message.traceElem); - updateIntend(message.traceElem); - updateRefArrows(message.traceElem); - break; - } -}); - -/** - * Updates the Visualization in the Webview, with the given BackendTraceElem. - * - * @param traceElem A FrontendTraceElem - */ -function updateVisualization(traceElem) { - const data = ` -
-
-
- Frames -
-
-
-
-
- Objects -
-
-
-
-
-
- ${traceElem.stackHTML} -
-
- ${traceElem.heapHTML} -
-
- `; - const viz = document.getElementById("viz"); - viz.innerHTML = data; - - // Scroll to the end of the stack - const frames = document.getElementById("frames"); - if (frames.lastElementChild !== null) { - const framesHeight = frames.lastElementChild.offsetTop + frames.lastElementChild.offsetHeight; - var y = framesHeight - viz.clientHeight; - if (y < 0) { - y = 0; - } - viz.scrollTo(0, y); - } - - const stdoutLog = document.getElementById("stdout-log"); - stdoutLog.innerHTML = traceElem.outputState; - stdoutLog.scrollTo(0, stdoutLog.scrollHeight); -} - -/** - * Updates the indendation for heap elements, if a other heap element references it. - * - * @param traceElem A FrontendTraceElem - */ -function updateIntend(traceElem) { - const heapTags = traceElem.heapHTML.match(/(?<=startPointer)[0-9]+/g); - if (heapTags) { - heapTags.forEach((tag) => { - const element = document.getElementById("objectItem" + tag); - if (element) { element.classList.add("object-intendation"); } - }); - } -} - -/** - * Updates the Reference Arrows from frame items to heap & heap items to heap items. - * - * @param traceElem A BackendTraceElem with 3 fields (line, stack, heap) - */ -function updateRefArrows(traceElem) { - const tags = getCurrentTags(traceElem); - refTags.forEach((tag) => tag.remove()); - refTags = []; - - if (!tags) { - return; - } - - refTags = tags - .filter((tag) => tag.elem1 && tag.elem2) - .map((tag) => { - return new LinkerLine({ - parent: document.getElementById("viz"), - start: tag.elem1, - end: tag.elem2, - size: 2, - path: "magnet", - startSocket: "right", - endSocket: "left", - startPlug: "square", - startSocketGravity: [50, -10], - endSocketGravity: [-5, -5], - endPlug: "arrow1", - color: getColor(tag), - }); - }); -} - -/** - * Retrieves all id's on the frame side and heap side, that have a potential start or end pointer in there id. - * Is later used to create Reference Arrows. - * - * @param traceElem A BackendTraceElem with 3 fields (line, stack, heap) - * @returns A list with all ids that have either a start or end pointer id in the html - */ -function getCurrentTags(traceElem) { - const stackTags = traceElem.stackHTML.match(/(?<=id=")(.+)Pointer[0-9]+/g); - const heapTags = traceElem.heapHTML.match(/(?<=startPointer)[0-9]+/g); - const uniqueId = traceElem.heapHTML.match(/(?<=)\d+(?=startPointer)/g); - - if (!stackTags) { - return; - } - - const stackRefs = stackTags.map((tag) => { - const id = tag.match(/(?<=.*Pointer)[\d]+/g); - return { - tag: id, - elem1: document.getElementById(tag), - elem2: document.getElementById("heapEndPointer" + id), - }; - }); - - let heapRefs = []; - if (heapTags) { - heapRefs = heapTags.map((reference, index) => { - return { - tag: reference, - elem1: document.getElementById( - uniqueId[index] + "startPointer" + reference - ), - elem2: document.getElementById("heapEndPointer" + reference), - }; - }); - } - - return [...heapRefs, ...stackRefs]; -} - -/** - * Creates a color based on the tag number (variable reference). - * - * @param tag The tag number (variable reference) is used to create a color. - * @returns - */ -function getColor(tag) { - const hue = ((0.618033988749895 + tag.tag / 10) % 1) * 100; - return `hsl(${hue}, 60%, 45%)`; -} - -function onLoad() { - document.querySelector("#nextButton").disabled = false; - document.querySelector("#lastButton").disabled = false; - document.querySelector("#prevButton").disabled = true; - document.querySelector("#firstButton").disabled = true; -} - -async function onClick(type) { - await vscode.postMessage({ command: "onClick", type: type }); -} - -async function onSlide(sliderValue) { - await vscode.postMessage({ command: "onSlide", sliderValue: sliderValue }); -} diff --git a/package-lock.json b/package-lock.json index 9e3958a8..75e0e67b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,14 @@ { "name": "write-your-python-program", - "version": "1.2.1", + "version": "2.1.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "write-your-python-program", - "version": "1.2.1", + "version": "2.1.2", "license": "See license in LICENSE", "dependencies": { - "@types/node": "^18.11.13", "linkerline": "^1.5.0", "stringify-json": "^2.0.0", "tmp": "^0.2.3", @@ -17,31 +16,436 @@ }, "devDependencies": { "@types/mocha": "^8.2.3", - "@types/node": "^18.11.13", + "@types/node": "^18.19.130", "@types/tmp": "^0.2.6", "@types/vscode": "^1.85.0", "@typescript-eslint/eslint-plugin": "^5.30.0", "@typescript-eslint/parser": "^5.30.0", "@vscode/test-electron": "^1.6.1", + "esbuild": "^0.27.3", "eslint": "^8.18.0", "glob": "^11.0.0", "mocha": "^10.7.3", - "typescript": "^5.4.2", - "webpack": "^5.96.1", - "webpack-cli": "^5.1.4" + "typescript": "^5.4.2" }, "engines": { - "vscode": "^1.85.0" + "vscode": "^1.94.2" } }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", + "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", + "cpu": [ + "ppc64" + ], "dev": true, - "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", + "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", + "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", + "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", + "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", + "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", + "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", + "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", + "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", + "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", + "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", + "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", + "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", + "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", + "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", + "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", + "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", + "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", + "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", + "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", + "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", + "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", + "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", + "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", + "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", + "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=10.0.0" + "node": ">=18" } }, "node_modules/@eslint-community/eslint-utils": { @@ -264,70 +668,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -375,35 +715,6 @@ "node": ">= 6" } }, - "node_modules/@types/eslint": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", - "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -418,11 +729,10 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.19.51", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.51.tgz", - "integrity": "sha512-IIMkWEIVQDlBpi6pPeGqTqOx7KbzGC3EgIyH8NrxplXOwWw0uVl9vthJUMFrxD7kcEfcRp7jIkgpB28M6JnfWA==", + "version": "18.19.130", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.130.tgz", + "integrity": "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==", "dev": true, - "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } @@ -613,280 +923,58 @@ "@typescript-eslint/types": "5.62.0", "@typescript-eslint/typescript-estree": "5.62.0", "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/@vscode/test-electron": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-1.6.2.tgz", - "integrity": "sha512-W01ajJEMx6223Y7J5yaajGjVs1QfW3YGkkOJHVKfAMEqNB1ZHN9wCcViehv5ZwVSSJnjhu6lYEYgwBdHtCxqhQ==", - "dev": true, - "dependencies": { - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "rimraf": "^3.0.2", - "unzipper": "^0.10.11" - }, - "engines": { - "node": ">=8.9.3" - } - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", - "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", - "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", - "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", - "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", - "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.13.2", - "@webassemblyjs/helper-api-error": "1.13.2", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", - "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", - "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/wasm-gen": "1.14.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", - "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", - "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", - "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", - "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/helper-wasm-section": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-opt": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1", - "@webassemblyjs/wast-printer": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", - "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", - "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", - "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-api-error": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", - "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webpack-cli/configtest": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", - "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.15.0" + "semver": "^7.3.7" }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" - } - }, - "node_modules/@webpack-cli/info": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", - "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", - "dev": true, - "license": "MIT", "engines": { - "node": ">=14.15.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@webpack-cli/serve": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", - "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=14.15.0" + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@xtuc/ieee754": { + "node_modules/@ungap/structured-clone": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", "dev": true, - "license": "BSD-3-Clause" + "license": "ISC" }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "node_modules/@vscode/test-electron": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-1.6.2.tgz", + "integrity": "sha512-W01ajJEMx6223Y7J5yaajGjVs1QfW3YGkkOJHVKfAMEqNB1ZHN9wCcViehv5ZwVSSJnjhu6lYEYgwBdHtCxqhQ==", "dev": true, - "license": "Apache-2.0" + "dependencies": { + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "rimraf": "^3.0.2", + "unzipper": "^0.10.11" + }, + "engines": { + "node": ">=8.9.3" + } }, "node_modules/acorn": { "version": "8.14.0", @@ -940,16 +1028,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, "node_modules/ansi-colors": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", @@ -1088,46 +1166,6 @@ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, - "node_modules/browserslist": { - "version": "4.24.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", - "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001669", - "electron-to-chromium": "^1.5.41", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.1" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true, - "license": "MIT" - }, "node_modules/buffer-indexof-polyfill": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", @@ -1168,27 +1206,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001680", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz", - "integrity": "sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, "node_modules/chainsaw": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", @@ -1253,16 +1270,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/chrome-trace-event": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0" - } - }, "node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -1274,21 +1281,6 @@ "wrap-ansi": "^7.0.0" } }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1307,20 +1299,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true, - "license": "MIT" - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1435,53 +1413,53 @@ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true }, - "node_modules/electron-to-chromium": { - "version": "1.5.63", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.63.tgz", - "integrity": "sha512-ddeXKuY9BHo/mw145axlyWjlJ1UBt4WK3AlvkT7W2AbqfRQoacVoRUCF6wL3uIx/8wT9oLKXzI+rFqHHscByaA==", - "dev": true, - "license": "ISC" - }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "node_modules/enhanced-resolve": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", - "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "node_modules/esbuild": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", + "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/envinfo": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz", - "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==", - "dev": true, - "license": "MIT", + "hasInstallScript": true, "bin": { - "envinfo": "dist/cli.js" + "esbuild": "bin/esbuild" }, "engines": { - "node": ">=4" + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.3", + "@esbuild/android-arm": "0.27.3", + "@esbuild/android-arm64": "0.27.3", + "@esbuild/android-x64": "0.27.3", + "@esbuild/darwin-arm64": "0.27.3", + "@esbuild/darwin-x64": "0.27.3", + "@esbuild/freebsd-arm64": "0.27.3", + "@esbuild/freebsd-x64": "0.27.3", + "@esbuild/linux-arm": "0.27.3", + "@esbuild/linux-arm64": "0.27.3", + "@esbuild/linux-ia32": "0.27.3", + "@esbuild/linux-loong64": "0.27.3", + "@esbuild/linux-mips64el": "0.27.3", + "@esbuild/linux-ppc64": "0.27.3", + "@esbuild/linux-riscv64": "0.27.3", + "@esbuild/linux-s390x": "0.27.3", + "@esbuild/linux-x64": "0.27.3", + "@esbuild/netbsd-arm64": "0.27.3", + "@esbuild/netbsd-x64": "0.27.3", + "@esbuild/openbsd-arm64": "0.27.3", + "@esbuild/openbsd-x64": "0.27.3", + "@esbuild/openharmony-arm64": "0.27.3", + "@esbuild/sunos-x64": "0.27.3", + "@esbuild/win32-arm64": "0.27.3", + "@esbuild/win32-ia32": "0.27.3", + "@esbuild/win32-x64": "0.27.3" } }, - "node_modules/es-module-lexer": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", - "dev": true, - "license": "MIT" - }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -1724,16 +1702,6 @@ "node": ">=0.10.0" } }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -1772,16 +1740,6 @@ "dev": true, "license": "MIT" }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.9.1" - } - }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", @@ -1963,16 +1921,6 @@ "rimraf": "bin.js" } }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -2017,13 +1965,6 @@ "node": ">= 6" } }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true, - "license": "BSD-2-Clause" - }, "node_modules/glob/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -2109,19 +2050,6 @@ "node": ">=8" } }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -2185,26 +2113,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -2232,16 +2140,6 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "node_modules/interpret": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", - "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -2254,22 +2152,6 @@ "node": ">=8" } }, - "node_modules/is-core-module": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -2330,19 +2212,6 @@ "node": ">=8" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", @@ -2367,16 +2236,6 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/jackspeak": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.2.tgz", @@ -2392,21 +2251,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -2427,13 +2271,6 @@ "dev": true, "license": "MIT" }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true, - "license": "MIT" - }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -2458,16 +2295,6 @@ "json-buffer": "3.0.1" } }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -2494,16 +2321,6 @@ "integrity": "sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc=", "dev": true }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.11.5" - } - }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -2557,13 +2374,6 @@ "integrity": "sha512-JpaZKIuEcjxjcyLSykhirzd706MIVa6agPbidZbNCifl+6MHdFZ7U0Bg8cno3PN0Z9a1A690OsvxMSjc/gc9gg==", "license": "MIT" }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "license": "MIT" - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -2588,29 +2398,6 @@ "node": ">=8.6" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/minimatch": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", @@ -2738,20 +2525,6 @@ "dev": true, "license": "MIT" }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", - "dev": true, - "license": "MIT" - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -2815,17 +2588,7 @@ "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/package-json-from-dist": { @@ -2875,13 +2638,6 @@ "node": ">=8" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, - "license": "MIT" - }, "node_modules/path-scurry": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", @@ -2908,13 +2664,6 @@ "node": ">=8" } }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -2928,75 +2677,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -3086,19 +2766,6 @@ "node": ">=8.10.0" } }, - "node_modules/rechoir": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", - "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve": "^1.20.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -3108,47 +2775,6 @@ "node": ">=0.10.0" } }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -3263,25 +2889,6 @@ } ] }, - "node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/semver": { "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", @@ -3310,19 +2917,6 @@ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", "dev": true }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "license": "MIT", - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -3368,27 +2962,6 @@ "node": ">=8" } }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, "node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -3498,83 +3071,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/terser": { - "version": "5.36.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.36.0.tgz", - "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.20", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.26.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -3709,37 +3205,6 @@ "setimmediate": "~1.0.4" } }, - "node_modules/update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -3756,148 +3221,6 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "node_modules/watchpack": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", - "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack": { - "version": "5.96.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.96.1.tgz", - "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/eslint-scope": "^3.7.7", - "@types/estree": "^1.0.6", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.14.0", - "browserslist": "^4.24.0", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-cli": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", - "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^2.1.1", - "@webpack-cli/info": "^2.0.2", - "@webpack-cli/serve": "^2.0.5", - "colorette": "^2.0.14", - "commander": "^10.0.1", - "cross-spawn": "^7.0.3", - "envinfo": "^7.7.3", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^3.1.1", - "rechoir": "^0.8.0", - "webpack-merge": "^5.7.3" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "5.x.x" - }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/webpack-merge": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", - "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "clone-deep": "^4.0.1", - "flat": "^5.0.2", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -3913,13 +3236,6 @@ "node": ">= 8" } }, - "node_modules/wildcard": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", - "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", - "dev": true, - "license": "MIT" - }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", diff --git a/package.json b/package.json index b4a543cf..565a2607 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,11 @@ }, "write-your-python-program.language": { "type": "string", - "enum": ["german", "english", "system default"], + "enum": [ + "german", + "english", + "system default" + ], "default": "system default", "description": "Choose the language for error messages." } @@ -84,11 +88,11 @@ "lint": "eslint src --ext ts", "watch": "tsc -watch -p ./", "test": "npm run compile && npm run lint", - "bundle": "webpack", - "build": "npm run compile && npm run bundle" + "build:web": "node scripts/build-web.mjs", + "watch:web": "node scripts/build-web.mjs --watch", + "build": "npm run compile && npm run build:web" }, "dependencies": { - "@types/node": "^18.11.13", "linkerline": "^1.5.0", "stringify-json": "^2.0.0", "tmp": "^0.2.3", @@ -96,17 +100,16 @@ }, "devDependencies": { "@types/mocha": "^8.2.3", - "@types/node": "^18.11.13", + "@types/node": "^18.19.130", "@types/tmp": "^0.2.6", "@types/vscode": "^1.85.0", "@typescript-eslint/eslint-plugin": "^5.30.0", "@typescript-eslint/parser": "^5.30.0", "@vscode/test-electron": "^1.6.1", + "esbuild": "^0.27.3", "eslint": "^8.18.0", "glob": "^11.0.0", "mocha": "^10.7.3", - "typescript": "^5.4.2", - "webpack": "^5.96.1", - "webpack-cli": "^5.1.4" + "typescript": "^5.4.2" } } diff --git a/scripts/build-web.mjs b/scripts/build-web.mjs new file mode 100644 index 00000000..2a173c3d --- /dev/null +++ b/scripts/build-web.mjs @@ -0,0 +1,79 @@ +import * as esbuild from "esbuild"; +import fs from "fs"; +import path from "path"; +import { fileURLToPath } from "url"; + +const _dirname = path.dirname(fileURLToPath(import.meta.url)); +const root = path.resolve(_dirname, ".."); + +const webSrc = path.join(root, "src/programflow-visualization/web"); +const webOut = path.join(root, "out/programflow-visualization/web"); +const watch = process.argv.includes("--watch"); + +fs.mkdirSync(webOut, { recursive: true }); + +// Bundle webview.ts -> out/.../webview.js +const webviewCtx = await esbuild.context({ + entryPoints: [path.join(webSrc, "webview.ts")], + bundle: true, + platform: "browser", + format: "iife", // classic - - Code Visualization - - -
-
-
- Frames -
-
-
- Objects -
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-

Step 

-

0

-

/?

-
-
- - - - -
-
-
-

-          
-        
- - - `; + public dispose() { + this._panel?.dispose(); } - private async updateLineHighlight(remove: boolean = false) { - try { - if (this._trace.length === 0) { - this._outChannel.appendLine("updateLineHighlight: no trace available, aborting"); - return; - } - const traceFile = this._trace[this._traceIndex].filename; - this._outChannel.appendLine( - `updateLineHighlight: traceFile=${traceFile}, traceIndex=${this._traceIndex}, remove=${remove}`); + // HTML loader: reads web/index.html and replaces placeholders + private getWebviewHtml(webview: vscode.Webview): string { + const webDir = path.join(this._context.extensionPath, VisualizationPanel.webComponentDir); + const indexPath = path.join(webDir, "index.html"); + let html = fs.readFileSync(indexPath, "utf8"); - // Use vscode.Uri.file() for proper file path to URI conversion - const openPath = vscode.Uri.file(traceFile); + const cssUri = webview.asWebviewUri(vscode.Uri.file(path.join(webDir, "webview.css"))); + const jsUri = webview.asWebviewUri(vscode.Uri.file(path.join(webDir, "webview.js"))); + const adapterUri = webview.asWebviewUri(vscode.Uri.file(path.join(webDir, "vscode-host-adapter.js"))); + const nonce = getNonce(); - // Find editor by full normalized path, not just basename - let editor: vscode.TextEditor | undefined = vscode.window.visibleTextEditors.find( - editor => editor.document.uri.fsPath === openPath.fsPath - ); + html = replaceAll(html, "{{WEBVIEW_CSS}}", String(cssUri)); + html = replaceAll(html, "{{VSCODE_HOST_ADAPTER_JS}}", String(adapterUri)); + html = replaceAll(html, "{{WEBVIEW_JS}}", String(jsUri)); + html = replaceAll(html, "{{NONCE}}", nonce); + html = replaceAll(html, "{{CSP_SOURCE}}", webview.cspSource); - if (!editor && remove) { - return; - } else if (!editor){ - this._outChannel.appendLine(`updateLineHighlight: editor not found, opening document: ${openPath.fsPath}`); - await vscode.commands.executeCommand('workbench.action.focusFirstEditorGroup'); - const document = await vscode.workspace.openTextDocument(openPath); - editor = await vscode.window.showTextDocument(document, { preserveFocus: false }); - // Give the editor time to fully initialize - await new Promise(resolve => setTimeout(resolve, 100)); - if (!editor) { - this._outChannel.appendLine(`updateLineHighlight: failed to get editor after opening document`); - return; - } - } + return html; + } - const traceLine = this._trace[this._traceIndex].lineNumber; - const lineNo = traceLine - 1; // zero-based indexing in vscode - if (remove) { - this._outChannel.appendLine( - "updateLineHighlight: removing highlighting in " + editor.document.fileName); - editor.setDecorations(nextLineExecuteHighlightType, []); - } else if (lineNo < 0 || lineNo >= editor.document.lineCount) { - this._outChannel.appendLine( - "updateLineHighlight: traceLine " + traceLine + " out of range (doc has " + - editor.document.lineCount + " lines) in " + editor.document.fileName); - editor.setDecorations(nextLineExecuteHighlightType, []); - } else { - this._outChannel.appendLine( - "updateLineHighlight: highlighting line " + traceLine + " in " + editor.document.fileName); - this.setEditorDecorations(editor, nextLineExecuteHighlightType, lineNo); - } - } catch (error) { - this._outChannel.appendLine(`updateLineHighlight: ERROR - ${error}`); - if (error instanceof Error) { - this._outChannel.appendLine(`Stack: ${error.stack}`); - } - } + // Posting data into the web component + private async postReset() { + if (!this._panel) {return;} + + await this._panel.webview.postMessage({ + command: "reset", + trace: this._backendTrace.trace, + complete: this._backendTrace.complete, + index: this._traceIndex, + }); } - private setEditorDecorations(editor: vscode.TextEditor, highlightType: vscode.TextEditorDecorationType, line: number) { - editor.setDecorations( - highlightType, - this.createDecorationOptions( - new vscode.Range(new vscode.Position(line, 0), new vscode.Position(line, 999)) - ) - ); + private async postAppend(elem: BackendTraceElem) { + if (!this._panel) {return;} + + await this._panel.webview.postMessage({ + command: "append", + elem, + complete: this._backendTrace.complete, + index: this._traceIndex, + len: this._backendTrace.trace.length, + }); } + // Compatibility navigation handlers private async onClick(type: string) { this.updateTraceIndex(type); - await this.postMessagesToWebview('updateButtons', 'updateContent'); + await this.postReset(); this.updateLineHighlight(); } private async onSlide(sliderValue: number) { this._traceIndex = Number(sliderValue); - await this.postMessagesToWebview('updateButtons', 'updateContent'); + await this.postReset(); this.updateLineHighlight(); } private updateTraceIndex(actionType: string) { + const max = Math.max(0, this._backendTrace.trace.length - 1); switch (actionType) { - case 'next': ++this._traceIndex; - break; - case 'prev': --this._traceIndex; + case "next": + this._traceIndex = Math.min(max, this._traceIndex + 1); break; - case 'first': this._traceIndex = 0; + case "prev": + this._traceIndex = Math.max(0, this._traceIndex - 1); break; - case 'last': this._traceIndex = this._trace.length - 1; + case "first": + this._traceIndex = 0; break; - default: + case "last": + this._traceIndex = max; break; } } - private async postMessagesToWebview(...args: string[]) { - for (const message of args) { - switch (message) { - case 'updateButtons': - const nextActive = this._traceIndex < this._trace.length - 1; - const prevActive = this._traceIndex > 0; - const firstActive = this._traceIndex > 0; - const lastActive = this._traceIndex !== this._trace.length - 1; - await this._panel!.webview.postMessage({ - command: 'updateButtons', - next: nextActive, - prev: prevActive, - first: firstActive, - last: lastActive, - }); - break; - case 'updateContent': - await this._panel!.webview.postMessage({ - command: 'updateContent', - traceComplete: this._backendTrace.complete, - traceElem: this._trace[this._traceIndex], - traceIndex: this._traceIndex, - traceLen: this._trace.length, - }); - break; + // Editor highlighting + private async updateLineHighlight(remove: boolean = false, overrideFile?: string, overrideLine?: number) { + try { + if (this._backendTrace.trace.length === 0) { + return; } - }; - } - private createDecorationOptions(range: vscode.Range): vscode.DecorationOptions[] { - return [ - { - range: range, - }, - ]; + const current = this._backendTrace.trace[this._traceIndex]; + const traceFile = overrideFile ?? current.filePath; + const traceLine = overrideLine ?? current.line; + + const openPath = vscode.Uri.file(traceFile); + + let editor: vscode.TextEditor | undefined = vscode.window.visibleTextEditors.find( + (ed) => ed.document.uri.fsPath === openPath.fsPath + ); + + if (!editor && !remove) { + await vscode.commands.executeCommand("workbench.action.focusFirstEditorGroup"); + const doc = await vscode.workspace.openTextDocument(openPath); + editor = await vscode.window.showTextDocument(doc, { preserveFocus: false }); + await new Promise((r) => setTimeout(r, 50)); + } + + if (!editor) {return;} + + if (remove) { + editor.setDecorations(nextLineExecuteHighlightType, []); + return; + } + + const lineNo = traceLine - 1; + if (lineNo < 0 || lineNo >= editor.document.lineCount) { + editor.setDecorations(nextLineExecuteHighlightType, []); + return; + } + + const range = new vscode.Range(new vscode.Position(lineNo, 0), new vscode.Position(lineNo, 999)); + editor.revealRange(range, vscode.TextEditorRevealType.InCenterIfOutsideViewport); + editor.setDecorations(nextLineExecuteHighlightType, [{ range }]); + } catch (e: any) { + this._outChannel.appendLine(`updateLineHighlight failed: ${e?.message ?? String(e)}`); + } } } + +function getNonce(): string { + const possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + let text = ""; + for (let i = 0; i < 32; i++) {text += possible.charAt(Math.floor(Math.random() * possible.length));} + return text; +} + +function replaceAll(str: string, search: string, replacement: string): string { + return str.split(search).join(replacement); +} diff --git a/src/programflow-visualization/main.ts b/src/programflow-visualization/main.ts index a56e0ab8..60c138d3 100644 --- a/src/programflow-visualization/main.ts +++ b/src/programflow-visualization/main.ts @@ -2,7 +2,7 @@ import * as vscode from 'vscode'; import { startBackend } from './backend/backend'; import * as FileHandler from './FileHandler'; import { Md5 } from 'ts-md5'; -import { startFrontend } from './frontend/frontend'; +import { VisualizationPanel } from './frontend/visualization_panel'; import { traceAlreadyExists } from './trace_cache'; export function getProgFlowVizCallback(context: vscode.ExtensionContext, outChannel: vscode.OutputChannel): () => Promise { @@ -29,11 +29,8 @@ export function getProgFlowVizCallback(context: vscode.ExtensionContext, outChan tracePort = startBackend(context, file, outChannel); } - const result = await startFrontend(context, outChannel, file.fsPath, fileHash, tracePort); - if (result) { - await vscode.window.showErrorMessage("Error ProgramFlow-Visualization: " + result.errorMessage); - return; - } + await VisualizationPanel.start(context, outChannel, file.fsPath, fileHash, tracePort); + } catch (e: any) { if (e instanceof Error) { outChannel.appendLine(e.stack?.toString() ?? "Error: "); diff --git a/src/programflow-visualization/trace_cache.ts b/src/programflow-visualization/trace_cache.ts index 0cc049d8..49d72871 100644 --- a/src/programflow-visualization/trace_cache.ts +++ b/src/programflow-visualization/trace_cache.ts @@ -5,6 +5,7 @@ import path = require('path'); import stringify from 'stringify-json'; import util = require('util'); import * as FileHandler from './FileHandler'; +import type { BackendTrace } from "./types"; export async function initTraceCache(context: vscode.ExtensionContext): Promise { tmp.setGracefulCleanup(); diff --git a/src/programflow-visualization/types.ts b/src/programflow-visualization/types.ts index e2528ac4..0a65ba49 100644 --- a/src/programflow-visualization/types.ts +++ b/src/programflow-visualization/types.ts @@ -1,14 +1,14 @@ /** * For better readable code */ -type Try = Success | Failure; -type Success = { result: any }; -type Failure = { errorMessage: string }; +export type Try = Success | Failure; +export type Success = { result: any }; +export type Failure = { errorMessage: string }; // State Types for the Frontend -type FrontendTrace = Array; +export type FrontendTrace = Array; -type FrontendTraceElem = { +export type FrontendTraceElem = { lineNumber: number, // 1-based stackHTML: string, heapHTML: string, @@ -18,12 +18,12 @@ type FrontendTraceElem = { // ############################################################################################ // State Types for the Backend -type PartialBackendTrace = { +export type PartialBackendTrace = { trace: BackendTrace; complete: boolean; }; -type BackendTrace = Array; -type BackendTraceElem = { +export type BackendTrace = Array; +export type BackendTraceElem = { line: number; filePath: string, stack: Array; @@ -32,9 +32,9 @@ type BackendTraceElem = { traceback: string | undefined; }; -type Address = number; +export type Address = number; -type Value = +export type Value = | { type: 'int'; value: number } | { type: 'float'; value: number } | { type: 'str'; value: string } @@ -44,17 +44,17 @@ type Value = | { type: 'function'; value: string } | { type: 'ref'; value: Address }; -type NamedValue = Value & { +export type NamedValue = Value & { name: string; }; -type StackElem = { +export type StackElem = { frameName: string; locals: Array; }; -type HeapValue = +export type HeapValue = | { type: 'list'; value: Array } | { type: 'tuple'; value: Array } | { type: 'set'; value: Array } diff --git a/src/programflow-visualization/web/example-trace-content.js b/src/programflow-visualization/web/example-trace-content.js new file mode 100644 index 00000000..0213b1cf --- /dev/null +++ b/src/programflow-visualization/web/example-trace-content.js @@ -0,0 +1,426 @@ +/* eslint-disable @typescript-eslint/naming-convention */ +// placeholder trace for design development +window.__PROGRAMFLOW_TRACE__ = { + complete: true, + trace: [ + { + "line": 1, + "filePath": "wyppSimple.py", + "stack": [ + { + "frameName": "", + "locals": [] + } + ], + "heap": {}, + "stdout": "" + }, + { + "line": 2, + "filePath": "wyppSimple.py", + "stack": [ + { + "frameName": "", + "locals": [] + } + ], + "heap": {}, + "stdout": "" + }, + { + "line": 5, + "filePath": "wyppSimple.py", + "stack": [ + { + "frameName": "", + "locals": [] + } + ], + "heap": {}, + "stdout": "" + }, + { + "line": 8, + "filePath": "wyppSimple.py", + "stack": [ + { + "frameName": "", + "locals": [ + { + "type": "type", + "value": "", + "name": "Bar" + } + ] + } + ], + "heap": {}, + "stdout": "" + }, + { + "line": 11, + "filePath": "wyppSimple.py", + "stack": [ + { + "frameName": "", + "locals": [ + { + "type": "type", + "value": "", + "name": "Bar" + }, + { + "type": "function", + "value": "", + "name": "generate_bar" + } + ] + } + ], + "heap": {}, + "stdout": "" + }, + { + "line": 12, + "filePath": "wyppSimple.py", + "stack": [ + { + "frameName": "", + "locals": [ + { + "type": "type", + "value": "", + "name": "Bar" + }, + { + "type": "function", + "value": "", + "name": "generate_bar" + }, + { + "type": "ref", + "value": 0, + "name": "obj1" + } + ] + } + ], + "heap": { + "0": { + "type": "instance", + "value": { + "baz": { + "type": "str", + "value": "baz value" + } + }, + "name": "Bar" + } + }, + "stdout": "" + }, + { + "line": 13, + "filePath": "wyppSimple.py", + "stack": [ + { + "frameName": "", + "locals": [ + { + "type": "type", + "value": "", + "name": "Bar" + }, + { + "type": "function", + "value": "", + "name": "generate_bar" + }, + { + "type": "ref", + "value": 0, + "name": "obj1" + } + ] + } + ], + "heap": { + "0": { + "type": "instance", + "value": { + "baz": { + "type": "str", + "value": "baz value" + } + }, + "name": "Bar" + } + }, + "stdout": "baz value\n" + }, + { + "line": 9, + "filePath": "wyppSimple.py", + "stack": [ + { + "frameName": "", + "locals": [ + { + "type": "type", + "value": "", + "name": "Bar" + }, + { + "type": "function", + "value": "", + "name": "generate_bar" + }, + { + "type": "ref", + "value": 0, + "name": "obj1" + } + ] + }, + { + "frameName": "generate_bar", + "locals": [] + } + ], + "heap": { + "0": { + "type": "instance", + "value": { + "baz": { + "type": "str", + "value": "baz value" + } + }, + "name": "Bar" + } + }, + "stdout": "baz value\n" + }, + { + "line": 9, + "filePath": "wyppSimple.py", + "stack": [ + { + "frameName": "", + "locals": [ + { + "type": "type", + "value": "", + "name": "Bar" + }, + { + "type": "function", + "value": "", + "name": "generate_bar" + }, + { + "type": "ref", + "value": 0, + "name": "obj1" + } + ] + }, + { + "frameName": "generate_bar", + "locals": [ + { + "type": "ref", + "value": 1, + "name": "return" + } + ] + } + ], + "heap": { + "0": { + "type": "instance", + "value": { + "baz": { + "type": "str", + "value": "baz value" + } + }, + "name": "Bar" + }, + "1": { + "type": "instance", + "value": { + "baz": { + "type": "str", + "value": "baz value" + } + }, + "name": "Bar" + } + }, + "stdout": "baz value\n" + }, + { + "line": 14, + "filePath": "wyppSimple.py", + "stack": [ + { + "frameName": "", + "locals": [ + { + "type": "type", + "value": "", + "name": "Bar" + }, + { + "type": "function", + "value": "", + "name": "generate_bar" + }, + { + "type": "ref", + "value": 0, + "name": "obj1" + }, + { + "type": "ref", + "value": 1, + "name": "obj2" + } + ] + } + ], + "heap": { + "0": { + "type": "instance", + "value": { + "baz": { + "type": "str", + "value": "baz value" + } + }, + "name": "Bar" + }, + "1": { + "type": "instance", + "value": { + "baz": { + "type": "str", + "value": "baz value" + } + }, + "name": "Bar" + } + }, + "stdout": "baz value\n" + }, + { + "line": 16, + "filePath": "wyppSimple.py", + "stack": [ + { + "frameName": "", + "locals": [ + { + "type": "type", + "value": "", + "name": "Bar" + }, + { + "type": "function", + "value": "", + "name": "generate_bar" + }, + { + "type": "ref", + "value": 0, + "name": "obj1" + }, + { + "type": "ref", + "value": 1, + "name": "obj2" + } + ] + } + ], + "heap": { + "0": { + "type": "instance", + "value": { + "baz": { + "type": "str", + "value": "baz value" + } + }, + "name": "Bar" + }, + "1": { + "type": "instance", + "value": { + "baz": { + "type": "str", + "value": "baz value" + } + }, + "name": "Bar" + } + }, + "stdout": "baz value\nbaz value\n" + }, + { + "line": 18, + "filePath": "wyppSimple.py", + "stack": [ + { + "frameName": "", + "locals": [ + { + "type": "type", + "value": "", + "name": "Bar" + }, + { + "type": "function", + "value": "", + "name": "generate_bar" + }, + { + "type": "ref", + "value": 0, + "name": "obj1" + }, + { + "type": "ref", + "value": 1, + "name": "obj2" + } + ] + } + ], + "heap": { + "0": { + "type": "instance", + "value": { + "baz": { + "type": "str", + "value": "baz value" + } + }, + "name": "Bar" + }, + "1": { + "type": "instance", + "value": { + "baz": { + "type": "str", + "value": "baz value" + } + }, + "name": "Bar" + } + }, + "stdout": "baz value\nbaz value\n" + } +] +}; diff --git a/src/programflow-visualization/frontend/HTMLGenerator.ts b/src/programflow-visualization/web/html-generator.ts similarity index 98% rename from src/programflow-visualization/frontend/HTMLGenerator.ts rename to src/programflow-visualization/web/html-generator.ts index bab8730f..3700f3fb 100644 --- a/src/programflow-visualization/frontend/HTMLGenerator.ts +++ b/src/programflow-visualization/web/html-generator.ts @@ -1,3 +1,12 @@ +import type { + BackendTraceElem, + FrontendTraceElem, + HeapValue, + NamedValue, + StackElem, + Value +} from "../types"; + function escapeHTML(s: any) { if (s !== undefined && s !== null) { return s.toString().replace(/[^0-9A-Za-z ]/g, (c: string) => "&#" + c.charCodeAt(0) + ";"); diff --git a/src/programflow-visualization/web/index.html b/src/programflow-visualization/web/index.html new file mode 100644 index 00000000..f3186a6c --- /dev/null +++ b/src/programflow-visualization/web/index.html @@ -0,0 +1,73 @@ + + + + + + + + + + Code Visualization + + + +
+
+
+ Frames +
+
+
+ Objects +
+
+
+ +
+
+
+
+
+ +
+
+
+ +
+ +
+

Step 

+

0

+

/?

+
+ +
+ + + + +
+
+ +
+

+    
+
+ + + + + + + + + + + diff --git a/src/programflow-visualization/web/tsconfig.json b/src/programflow-visualization/web/tsconfig.json new file mode 100644 index 00000000..722cd406 --- /dev/null +++ b/src/programflow-visualization/web/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "lib": ["es2017", "dom"], + "types": [] + }, + "include": ["**/*.ts"], + "exclude": ["../../../node_modules", "../../../.vscode-test"] +} \ No newline at end of file diff --git a/src/programflow-visualization/web/vscode-host-adapter.ts b/src/programflow-visualization/web/vscode-host-adapter.ts new file mode 100644 index 00000000..9ac5092e --- /dev/null +++ b/src/programflow-visualization/web/vscode-host-adapter.ts @@ -0,0 +1,41 @@ +declare const acquireVsCodeApi: undefined | (() => { postMessage: (msg: any) => void }); + +const vscode = typeof acquireVsCodeApi === "function" + ? acquireVsCodeApi() + : { postMessage: (_: any) => {} }; + +window.addEventListener("message", (event: MessageEvent) => { + const msg = event.data; + if (!msg?.command) {return;} + + switch (msg.command) { + case "reset": + window.dispatchEvent(new CustomEvent("programflow:reset", { detail: msg })); + break; + case "append": + window.dispatchEvent(new CustomEvent("programflow:append", { detail: msg })); + break; + + case "updateButtons": + window.dispatchEvent(new CustomEvent("programflow:updateButtons", { detail: msg })); + break; + case "updateContent": + window.dispatchEvent(new CustomEvent("programflow:updateContent", { detail: msg })); + break; + } +}); + +window.addEventListener("programflow:select", (e: Event) => { + const ce = e as CustomEvent; + vscode.postMessage({ command: "select", ...ce.detail }); +}); + +window.addEventListener("programflow:onClick", (e: Event) => { + const ce = e as CustomEvent<{ type: string }>; + vscode.postMessage({ command: "onClick", type: ce.detail.type }); +}); + +window.addEventListener("programflow:onSlide", (e: Event) => { + const ce = e as CustomEvent<{ value: string }>; + vscode.postMessage({ command: "onSlide", sliderValue: ce.detail.value }); +}); \ No newline at end of file diff --git a/media/programflow-visualization/webview.css b/src/programflow-visualization/web/webview.css similarity index 100% rename from media/programflow-visualization/webview.css rename to src/programflow-visualization/web/webview.css diff --git a/src/programflow-visualization/web/webview.ts b/src/programflow-visualization/web/webview.ts new file mode 100644 index 00000000..ebd51386 --- /dev/null +++ b/src/programflow-visualization/web/webview.ts @@ -0,0 +1,329 @@ +import { HTMLGenerator } from "./html-generator"; +import LinkerLine from "linkerline"; +import type { BackendTraceElem } from "../types"; + +const isVscode = typeof (window as any).acquireVsCodeApi === "function"; + +type ResetMsg = { + command: "reset"; + trace: BackendTraceElem[]; + complete: boolean; + index: number; +}; + +type AppendMsg = { + command: "append"; + elem: BackendTraceElem; + complete: boolean; + index: number; + len: number; +}; + +// Optional example trace format (designer mode) +type StaticTrace = { complete: boolean; trace: BackendTraceElem[] }; + +let refLines: any[] = []; +let trace: BackendTraceElem[] = []; +let traceComplete = false; +let traceIndex = 0; + +const gen = new HTMLGenerator(); + +//DOM helpers +function $(sel: string): HTMLElement { + const el = document.querySelector(sel); + if (!el) {throw new Error(`Missing element: ${sel}`);} + return el as HTMLElement; +} + +function setDisabled(id: string, disabled: boolean) { + (document.querySelector(id) as HTMLButtonElement).disabled = disabled; +} + +function clamp(n: number, min: number, max: number) { + return Math.max(min, Math.min(max, n)); +} + +//Rendering +function renderCurrent() { + const max = Math.max(0, trace.length - 1); + traceIndex = clamp(traceIndex, 0, max); + + // Update slider + counters + const slider = $("#traceSlider") as HTMLInputElement; + slider.max = String(max); + slider.value = String(traceIndex); + + $("#traceMax").innerHTML = "/" + (traceComplete ? String(max) : "?"); + $("#indexCounter").innerHTML = String(traceIndex); + + // Update button enable/disable + setDisabled("#firstButton", traceIndex <= 0); + setDisabled("#prevButton", traceIndex <= 0); + setDisabled("#nextButton", traceIndex >= max); + setDisabled("#lastButton", traceIndex >= max); + + // Nothing to show yet + if (trace.length === 0) { + $("#stdout-log").innerHTML = ""; + clearArrows(); + return; + } + + const backendElem = trace[traceIndex]; + const frontendElem = gen.generateHTML(backendElem); + + updateVisualization(frontendElem); + updateIndent(frontendElem); + updateRefArrows(frontendElem); +} + +function updateVisualization(traceElem: any /* FrontendTraceElem */) { + clearArrows(); + const data = ` +
+
+
Frames
+
+
+
+
Objects
+
+
+
+
+
+ ${traceElem.stackHTML} +
+
+ ${traceElem.heapHTML} +
+
+ `; + + const viz = document.getElementById("viz")!; + viz.innerHTML = data; + + const stdoutLog = document.getElementById("stdout-log")!; + stdoutLog.innerHTML = traceElem.outputState; + stdoutLog.scrollTo(0, stdoutLog.scrollHeight); +} + +function updateIndent(traceElem: any /* FrontendTraceElem */) { + const heapTags = traceElem.heapHTML.match(/(?<=startPointer)[0-9]+/g); + if (heapTags) { + heapTags.forEach((tag: string) => { + const element = document.getElementById("objectItem" + tag); + if (element) {element.classList.add("object-intendation");} + }); + } +} + +//Arrows +function clearArrows() { + refLines.forEach((l) => { + try { + l.remove(); + } catch {} + }); + refLines = []; +} + +function updateRefArrows(traceElem: any /* FrontendTraceElem */) { + const tags = getCurrentTags(traceElem); + if (!tags) { return; } + + requestAnimationFrame(() => { + const parent = document.getElementById("viz"); + if (!parent) { return; } + + const usable = tags.filter((t: any) => { + const a = t.elem1 as HTMLElement | null | undefined; + const b = t.elem2 as HTMLElement | null | undefined; + return !!a && !!b && a.isConnected && b.isConnected; + }); + + const lines: any[] = []; + for (const t of usable) { + try { + lines.push( + new (LinkerLine as any)({ + parent, + start: t.elem1, + end: t.elem2, + size: 2, + path: "magnet", + startSocket: "right", + endSocket: "left", + startPlug: "square", + startSocketGravity: [50, -10], + endSocketGravity: [-5, -5], + endPlug: "arrow1", + color: getColor(t), + }) + ); + } catch (err) { + // Keep going if one arrow fails (prevents breaking the whole render) + console.warn("LinkerLine failed for one tag:", t, err); + } + } + + refLines = lines; + }); +} + +function getCurrentTags(traceElem: any /* FrontendTraceElem */) { + const stackTags = traceElem.stackHTML.match(/(?<=id=")(.+)Pointer[0-9]+/g); + const heapTags = traceElem.heapHTML.match(/(?<=startPointer)[0-9]+/g); + const uniqueId = traceElem.heapHTML.match(/\d+(?=startPointer)/g); + + if (!stackTags) {return;} + + const stackRefs = stackTags.map((tag: string) => { + const id = tag.match(/(?<=.*Pointer)[\d]+/g); + return { + tag: id, + elem1: document.getElementById(tag), + elem2: document.getElementById("heapEndPointer" + id), + }; + }); + + let heapRefs: any[] = []; + if (heapTags && uniqueId) { + heapRefs = heapTags.map((reference: string, index: number) => { + return { + tag: reference, + elem1: document.getElementById(uniqueId[index] + "startPointer" + reference), + elem2: document.getElementById("heapEndPointer" + reference), + }; + }); + } + + return [...heapRefs, ...stackRefs]; +} + +function getColor(tag: any) { + const hue = ((0.618033988749895 + Number(tag.tag) / 10) % 1) * 100; + return `hsl(${hue}, 60%, 45%)`; +} + +//Incoming events (from vscode-host-adapter.ts) +window.addEventListener("programflow:reset", (e: Event) => { + const msg = (e as CustomEvent).detail; + trace = msg.trace ?? []; + traceComplete = !!msg.complete; + traceIndex = Number(msg.index ?? 0); + renderCurrent(); +}); + +window.addEventListener("programflow:append", (e: Event) => { + const msg = (e as CustomEvent).detail; + trace.push(msg.elem); + traceComplete = !!msg.complete; + traceIndex = Number(msg.index ?? traceIndex); + renderCurrent(); +}); + +window.addEventListener("programflow:updateButtons", (e: Event) => { + const msg = (e as CustomEvent).detail; + setDisabled("#nextButton", !msg.next); + setDisabled("#prevButton", !msg.prev); + setDisabled("#firstButton", !msg.first); + setDisabled("#lastButton", !msg.last); +}); + +window.addEventListener("programflow:updateContent", (e: Event) => { + const msg = (e as CustomEvent).detail; + + const max = Math.max(0, (msg.traceLen ?? 0) - 1); + const slider = $("#traceSlider") as HTMLInputElement; + slider.max = String(max); + slider.value = String(msg.traceIndex ?? 0); + + $("#traceMax").innerHTML = "/" + (msg.traceComplete ? String(max) : "?"); + $("#indexCounter").innerHTML = String(msg.traceIndex ?? 0); + + updateVisualization(msg.traceElem); + updateIndent(msg.traceElem); + updateRefArrows(msg.traceElem); +}); + +// Browser-only navigation handling +if (!isVscode) { + + window.addEventListener("programflow:onClick", (e: Event) => { + const ce = e as CustomEvent<{ type: "first" | "prev" | "next" | "last" }>; + const max = Math.max(0, trace.length - 1); + + switch (ce.detail.type) { + case "first": + traceIndex = 0; + break; + + case "prev": + traceIndex = Math.max(0, traceIndex - 1); + break; + + case "next": + traceIndex = Math.min(max, traceIndex + 1); + break; + + case "last": + traceIndex = max; + break; + } + + renderCurrent(); + }); + + window.addEventListener("programflow:onSlide", (e: Event) => { + const ce = e as CustomEvent<{ value: string }>; + traceIndex = Number(ce.detail.value) || 0; + renderCurrent(); + }); + +} + + +function setupUi() { + // Disable until first reset arrives + setDisabled("#nextButton", true); + setDisabled("#lastButton", true); + setDisabled("#prevButton", true); + setDisabled("#firstButton", true); + + // Button clicks -> dispatch events (adapter forwards to VS Code) + $("#firstButton").addEventListener("click", () => { + window.dispatchEvent(new CustomEvent("programflow:onClick", { detail: { type: "first" } })); + }); + $("#prevButton").addEventListener("click", () => { + window.dispatchEvent(new CustomEvent("programflow:onClick", { detail: { type: "prev" } })); + }); + $("#nextButton").addEventListener("click", () => { + window.dispatchEvent(new CustomEvent("programflow:onClick", { detail: { type: "next" } })); + }); + $("#lastButton").addEventListener("click", () => { + window.dispatchEvent(new CustomEvent("programflow:onClick", { detail: { type: "last" } })); + }); + + // Slider input -> dispatch event + ($("#traceSlider") as HTMLInputElement).addEventListener("input", (e: Event) => { + const value = (e.target as HTMLInputElement).value; + window.dispatchEvent(new CustomEvent("programflow:onSlide", { detail: { value } })); + }); + + // Optional: example trace mode + const anyWin = window as any; + const staticTrace: StaticTrace | undefined = anyWin.__PROGRAMFLOW_TRACE__; + + console.log("static trace mode:", !!staticTrace?.trace, staticTrace?.trace?.length); + + if (staticTrace?.trace) { + trace = staticTrace.trace; + traceComplete = !!staticTrace.complete; + traceIndex = 0; + renderCurrent(); + } +} + +document.addEventListener("DOMContentLoaded", setupUi); \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index b65c7451..342b7493 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,6 +6,7 @@ "lib": [ "es6" ], + "types": ["node"], "sourceMap": true, "rootDir": "src", "strict": true /* enable all strict type-checking options */ @@ -16,6 +17,7 @@ }, "exclude": [ "node_modules", - ".vscode-test" + ".vscode-test", + "src/programflow-visualization/web/**" ] } diff --git a/webpack.config.js b/webpack.config.js deleted file mode 100644 index 136b385b..00000000 --- a/webpack.config.js +++ /dev/null @@ -1,12 +0,0 @@ -const path = require('path'); - -module.exports = { - entry: { - linkerline: './media/programflow-visualization/linkerline.js', - }, - output: { - path: path.resolve(__dirname, 'out'), - filename: '[name].bundle.js', - }, - mode: "production" -}; From baf7e4067c2d58a7469cb6fc057534c43e98979e Mon Sep 17 00:00:00 2001 From: Simon Roesch Date: Fri, 6 Mar 2026 13:35:35 +0100 Subject: [PATCH 02/20] Moved last html out of webview.ts --- src/programflow-visualization/web/index.html | 22 +++++++---- src/programflow-visualization/web/webview.ts | 41 +++++++------------- 2 files changed, 28 insertions(+), 35 deletions(-) diff --git a/src/programflow-visualization/web/index.html b/src/programflow-visualization/web/index.html index f3186a6c..fd1f1102 100644 --- a/src/programflow-visualization/web/index.html +++ b/src/programflow-visualization/web/index.html @@ -19,27 +19,33 @@
-
- Frames +
+
Frames
-
- Objects +
+
Objects
-
-
+
+
- +
diff --git a/src/programflow-visualization/web/webview.ts b/src/programflow-visualization/web/webview.ts index ebd51386..1c00b80b 100644 --- a/src/programflow-visualization/web/webview.ts +++ b/src/programflow-visualization/web/webview.ts @@ -1,7 +1,8 @@ import { HTMLGenerator } from "./html-generator"; import LinkerLine from "linkerline"; -import type { BackendTraceElem } from "../types"; +import type { BackendTraceElem, FrontendTraceElem } from "../types"; +// only used to add seperate Browser navigation if not in vscode const isVscode = typeof (window as any).acquireVsCodeApi === "function"; type ResetMsg = { @@ -80,31 +81,17 @@ function renderCurrent() { function updateVisualization(traceElem: any /* FrontendTraceElem */) { clearArrows(); - const data = ` -
-
-
Frames
-
-
-
-
Objects
-
-
-
-
-
- ${traceElem.stackHTML} -
-
- ${traceElem.heapHTML} -
-
- `; - - const viz = document.getElementById("viz")!; - viz.innerHTML = data; - - const stdoutLog = document.getElementById("stdout-log")!; + + const frames = document.getElementById("frames"); + const objects = document.getElementById("objects"); + const stdoutLog = document.getElementById("stdout-log"); + + if (!frames || !objects || !stdoutLog) { + throw new Error("Missing required visualization containers"); + } + + frames.innerHTML = traceElem.stackHTML; + objects.innerHTML = traceElem.heapHTML; stdoutLog.innerHTML = traceElem.outputState; stdoutLog.scrollTo(0, stdoutLog.scrollHeight); } @@ -172,7 +159,7 @@ function updateRefArrows(traceElem: any /* FrontendTraceElem */) { }); } -function getCurrentTags(traceElem: any /* FrontendTraceElem */) { +function getCurrentTags(traceElem: FrontendTraceElem) { const stackTags = traceElem.stackHTML.match(/(?<=id=")(.+)Pointer[0-9]+/g); const heapTags = traceElem.heapHTML.match(/(?<=startPointer)[0-9]+/g); const uniqueId = traceElem.heapHTML.match(/\d+(?=startPointer)/g); From 16fae7f97ffc99ae6ea0601799617d7df5948be3 Mon Sep 17 00:00:00 2001 From: Simon Roesch Date: Thu, 19 Mar 2026 16:35:40 +0100 Subject: [PATCH 03/20] Added and enhanced documentation --- README.md | 6 +++--- src/programflow-visualization/README.md | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 src/programflow-visualization/README.md diff --git a/README.md b/README.md index 43c9682e..a31a1de3 100644 --- a/README.md +++ b/README.md @@ -225,7 +225,7 @@ You can develop the design of the visualization using an example trace in your b * `npm install` * `npm run build` -* `npm run watch:web` +* `npm run watch:web` this starts a process which will build the contents of `src/programflow-visualization/web` into `out/programflow-visualization/web` on any changes * In console: `cd out/programflow-visualization/web` + `python3 -m http.server 5173` -* Then open http://localhost:5173/index.web.html -* Now you can edit files in `src/programflow-visualization/web`, watch:web will rebuild automatically and you can refresh your browser tab to see the changes \ No newline at end of file +* Then open http://localhost:5173/index.web.html in your browser +* Now you can edit files in `src/programflow-visualization/web`, watch:web will rebuild automatically and you can refresh your browser tab to see the changes instantly \ No newline at end of file diff --git a/src/programflow-visualization/README.md b/src/programflow-visualization/README.md new file mode 100644 index 00000000..8b70f041 --- /dev/null +++ b/src/programflow-visualization/README.md @@ -0,0 +1,16 @@ +# Communication +In `setupUi()` in [webview.ts](web/webview.ts#L276) EventListeners for clicks are attatched to Buttons, which dispatch new CustomEvent `programflow:onClick` including info on specific Button. + +## Web + +* [webview.ts](web/webview.ts#L241) adds an EventListener for that specific CustomEvent, if the application is running in a web environment +* In this EventListener `traceIndex` is adjusted depending on which Button was pressed +* `renderCurrent()` re-renders the application using the new `traceIndex` + +## VSCode +* [vscode-host-adapter.ts](web/vscode-host-adapter.ts) adds EventListeners which forward the CustomEvents to the extension via `vscode.postMessage(...)` +* In [visualization_panel.ts](frontend/visualization_panel.ts#L88) the function `onClick` is then called asynchronously +* Here, the `traceIndex` is updated, the view is re-rendered via asynchronous `reset`-event and the VSCode highlighting is updated according to `new traceIndex` +* The `reset`-event, is caught by the EventListener in [vscode-host-adapter.ts](web/vscode-host-adapter.ts#L7), which handles incoming MessageEvents from the VSCode extension and dispatches CustomEvents for [webview.ts](web/webview.ts) +* In [webview.ts](web/webview.ts#L203) the actual re-rendering happens +* TLDR; [vscode-host-adapter.ts](web/vscode-host-adapter.ts) works as an event-bridge for messages between the extension and the view and keeps VSCode-specific code out of the webview component From c467fb5d55f1893706bc4e26af24cec43b070344 Mon Sep 17 00:00:00 2001 From: Simon Roesch Date: Tue, 31 Mar 2026 14:03:17 +0200 Subject: [PATCH 04/20] Improvemnets added comments at the top of files reworked readme removed dead code got rid of communication roundtrip -> only highlight message --- src/programflow-visualization/README.md | 66 +++++++-- .../frontend/visualization_panel.ts | 70 ++++----- .../web/html-generator.ts | 2 +- src/programflow-visualization/web/index.html | 8 +- .../web/tsconfig.json | 1 + .../web/vscode-host-adapter.ts | 19 +-- src/programflow-visualization/web/webview.css | 2 +- src/programflow-visualization/web/webview.ts | 134 ++++++++---------- 8 files changed, 149 insertions(+), 153 deletions(-) diff --git a/src/programflow-visualization/README.md b/src/programflow-visualization/README.md index 8b70f041..cc0c2f22 100644 --- a/src/programflow-visualization/README.md +++ b/src/programflow-visualization/README.md @@ -1,16 +1,56 @@ -# Communication -In `setupUi()` in [webview.ts](web/webview.ts#L276) EventListeners for clicks are attatched to Buttons, which dispatch new CustomEvent `programflow:onClick` including info on specific Button. +# Architecture Overview -## Web +## Components -* [webview.ts](web/webview.ts#L241) adds an EventListener for that specific CustomEvent, if the application is running in a web environment -* In this EventListener `traceIndex` is adjusted depending on which Button was pressed -* `renderCurrent()` re-renders the application using the new `traceIndex` +### **Webview (web/)** +The self-contained UI component that the user interacts with: +- **webview.ts**: Manages trace navigation, rendering, and local state. Navigation (prev/next/first/last) is fully local; after updating the visualization, it emits a `highlight` message for line highlighting in the editor. +- **html-generator.ts**: Converts backend trace elements into HTML fragments for display. +- **vscode-host-adapter.ts**: Bridges between the webview's custom events and the VS Code webview API. Non-VS Code environments work unchanged (mock postMessage). +- **index.html**: DOM structure, control buttons, and output panes. +- **webview.css**: Layout and styling. +- **example-trace-content.js**: Optional sample trace for design/development mode. -## VSCode -* [vscode-host-adapter.ts](web/vscode-host-adapter.ts) adds EventListeners which forward the CustomEvents to the extension via `vscode.postMessage(...)` -* In [visualization_panel.ts](frontend/visualization_panel.ts#L88) the function `onClick` is then called asynchronously -* Here, the `traceIndex` is updated, the view is re-rendered via asynchronous `reset`-event and the VSCode highlighting is updated according to `new traceIndex` -* The `reset`-event, is caught by the EventListener in [vscode-host-adapter.ts](web/vscode-host-adapter.ts#L7), which handles incoming MessageEvents from the VSCode extension and dispatches CustomEvents for [webview.ts](web/webview.ts) -* In [webview.ts](web/webview.ts#L203) the actual re-rendering happens -* TLDR; [vscode-host-adapter.ts](web/vscode-host-adapter.ts) works as an event-bridge for messages between the extension and the view and keeps VSCode-specific code out of the webview component +### **Panel (frontend/)** +The VS Code extension-side host that owns the webview: +- **visualization_panel.ts**: Creates and manages the webview panel lifecycle. Receives `reset` and `append` messages from the trace backend, posts them to the webview. Handles `highlight` and `select` messages from the webview to update editor line highlighting. + +## Message Flow + +```mermaid +graph TB + subgraph backend["Backend (Python)"] + trace["Trace Generator"] + end + + subgraph extension["Extension Host (VS Code)"] + panel["VisualizationPanel"] + end + + subgraph webview["Webview (Sandboxed)"] + ui["webview.ts
(UI + Navigation)"] + gen["html-generator.ts
(Rendering)"] + end + + subgraph editor["Editor"] + highlight["Line Highlighting"] + end + + trace -->|trace array via IPC| panel + panel -->|postMessage reset/append| webview + + webview -->|custom events| adapter["vscode-host-adapter.ts"] + adapter -->|postMessage highlight/select| panel + panel -->|updateLineHighlight| editor + + ui -->|local navigation| gen + gen -->|innerHTML| ui +``` + +## Data Flow + +1. **Initial Load / Panel Refocus**: Panel sends full trace array to webview via `reset` message. +2. **Streaming Trace**: Backend sends trace elements; panel forwards via `append` message. +3. **User Navigation**: User clicks buttons or moves slider → local navigation in webview updates `traceIndex` → renders visualization → emits `highlight` message. +4. **Editor Synchronization**: Panel receives `highlight` message → opens file and highlights line in editor. +5. **Standalone Mode**: webview works standalone (desktop or browser) via static trace injection in development, no postMessage needed. diff --git a/src/programflow-visualization/frontend/visualization_panel.ts b/src/programflow-visualization/frontend/visualization_panel.ts index ce8c4084..a09f386d 100644 --- a/src/programflow-visualization/frontend/visualization_panel.ts +++ b/src/programflow-visualization/frontend/visualization_panel.ts @@ -1,3 +1,4 @@ +// Host the visualization webview panel and synchronize editor highlighting with trace events import * as vscode from "vscode"; import * as path from "path"; import * as fs from "fs"; @@ -23,7 +24,8 @@ export class VisualizationPanel { private _tracePortSelfClose = false; private _backendTrace: PartialBackendTrace = { trace: [], complete: false }; - private _traceIndex = 0; + private _highlightFilePath: string | undefined; + private _highlightLine: number | undefined; private static readonly webComponentDir = "out/programflow-visualization/web"; @@ -42,7 +44,6 @@ export class VisualizationPanel { this._tracePort = tracePort; this._backendTrace = { trace: initialTrace, complete: initialTrace.length > 0 }; - this._traceIndex = 0; this._panel = vscode.window.createWebviewPanel( "programflow-visualization", @@ -88,11 +89,10 @@ export class VisualizationPanel { this._panel.webview.onDidReceiveMessage( async (msg) => { switch (msg?.command) { - case "onClick": - await this.onClick(String(msg.type)); - break; - case "onSlide": - await this.onSlide(Number(msg.sliderValue)); + case "highlight": + if (typeof msg.filePath === "string" && typeof msg.line === "number") { + await this.updateLineHighlight(false, msg.filePath, msg.line); + } break; case "select": if (typeof msg.filePath === "string" && typeof msg.line === "number") { @@ -179,7 +179,6 @@ export class VisualizationPanel { command: "reset", trace: this._backendTrace.trace, complete: this._backendTrace.complete, - index: this._traceIndex, }); } @@ -190,52 +189,33 @@ export class VisualizationPanel { command: "append", elem, complete: this._backendTrace.complete, - index: this._traceIndex, len: this._backendTrace.trace.length, }); } - // Compatibility navigation handlers - private async onClick(type: string) { - this.updateTraceIndex(type); - await this.postReset(); - this.updateLineHighlight(); - } - - private async onSlide(sliderValue: number) { - this._traceIndex = Number(sliderValue); - await this.postReset(); - this.updateLineHighlight(); - } - - private updateTraceIndex(actionType: string) { - const max = Math.max(0, this._backendTrace.trace.length - 1); - switch (actionType) { - case "next": - this._traceIndex = Math.min(max, this._traceIndex + 1); - break; - case "prev": - this._traceIndex = Math.max(0, this._traceIndex - 1); - break; - case "first": - this._traceIndex = 0; - break; - case "last": - this._traceIndex = max; - break; - } - } - // Editor highlighting private async updateLineHighlight(remove: boolean = false, overrideFile?: string, overrideLine?: number) { try { - if (this._backendTrace.trace.length === 0) { - return; + let traceFile: string; + let traceLine: number; + + if (typeof overrideFile === "string" && typeof overrideLine === "number") { + traceFile = overrideFile; + traceLine = overrideLine; + } else if (typeof this._highlightFilePath === "string" && typeof this._highlightLine === "number") { + traceFile = this._highlightFilePath; + traceLine = this._highlightLine; + } else { + if (this._backendTrace.trace.length === 0) { + return; + } + const current = this._backendTrace.trace[0]; + traceFile = current.filePath; + traceLine = current.line; } - const current = this._backendTrace.trace[this._traceIndex]; - const traceFile = overrideFile ?? current.filePath; - const traceLine = overrideLine ?? current.line; + this._highlightFilePath = traceFile; + this._highlightLine = traceLine; const openPath = vscode.Uri.file(traceFile); diff --git a/src/programflow-visualization/web/html-generator.ts b/src/programflow-visualization/web/html-generator.ts index 3700f3fb..71760bca 100644 --- a/src/programflow-visualization/web/html-generator.ts +++ b/src/programflow-visualization/web/html-generator.ts @@ -1,3 +1,4 @@ +// Convert backend trace elements into HTML fragments for the visualization panes import type { BackendTraceElem, FrontendTraceElem, @@ -127,7 +128,6 @@ export class HTMLGenerator {
`; break; - break; /* tuple, list, int[], int[][], ...*/ default: result = ` diff --git a/src/programflow-visualization/web/index.html b/src/programflow-visualization/web/index.html index fd1f1102..f0382ab6 100644 --- a/src/programflow-visualization/web/index.html +++ b/src/programflow-visualization/web/index.html @@ -55,10 +55,10 @@
- - - - + + + +
diff --git a/src/programflow-visualization/web/tsconfig.json b/src/programflow-visualization/web/tsconfig.json index 722cd406..36c3b4c1 100644 --- a/src/programflow-visualization/web/tsconfig.json +++ b/src/programflow-visualization/web/tsconfig.json @@ -1,3 +1,4 @@ +// Configure TypeScript compilation for the webview-specific source files { "extends": "../../../tsconfig.json", "compilerOptions": { diff --git a/src/programflow-visualization/web/vscode-host-adapter.ts b/src/programflow-visualization/web/vscode-host-adapter.ts index 9ac5092e..187a7e05 100644 --- a/src/programflow-visualization/web/vscode-host-adapter.ts +++ b/src/programflow-visualization/web/vscode-host-adapter.ts @@ -1,3 +1,4 @@ +// Bridge messages between the VS Code host API and webview custom events declare const acquireVsCodeApi: undefined | (() => { postMessage: (msg: any) => void }); const vscode = typeof acquireVsCodeApi === "function" @@ -15,13 +16,6 @@ window.addEventListener("message", (event: MessageEvent) => { case "append": window.dispatchEvent(new CustomEvent("programflow:append", { detail: msg })); break; - - case "updateButtons": - window.dispatchEvent(new CustomEvent("programflow:updateButtons", { detail: msg })); - break; - case "updateContent": - window.dispatchEvent(new CustomEvent("programflow:updateContent", { detail: msg })); - break; } }); @@ -30,12 +24,7 @@ window.addEventListener("programflow:select", (e: Event) => { vscode.postMessage({ command: "select", ...ce.detail }); }); -window.addEventListener("programflow:onClick", (e: Event) => { - const ce = e as CustomEvent<{ type: string }>; - vscode.postMessage({ command: "onClick", type: ce.detail.type }); +window.addEventListener("programflow:highlight", (e: Event) => { + const ce = e as CustomEvent<{ filePath: string; line: number }>; + vscode.postMessage({ command: "highlight", ...ce.detail }); }); - -window.addEventListener("programflow:onSlide", (e: Event) => { - const ce = e as CustomEvent<{ value: string }>; - vscode.postMessage({ command: "onSlide", sliderValue: ce.detail.value }); -}); \ No newline at end of file diff --git a/src/programflow-visualization/web/webview.css b/src/programflow-visualization/web/webview.css index c5d5a385..d2b57d1a 100644 --- a/src/programflow-visualization/web/webview.css +++ b/src/programflow-visualization/web/webview.css @@ -34,7 +34,7 @@ body { } .scrollable { - overflow: scroll; + overflow: auto; } #viz { diff --git a/src/programflow-visualization/web/webview.ts b/src/programflow-visualization/web/webview.ts index 1c00b80b..75000bd8 100644 --- a/src/programflow-visualization/web/webview.ts +++ b/src/programflow-visualization/web/webview.ts @@ -1,3 +1,4 @@ +// Render and control the program-flow visualization UI inside the webview import { HTMLGenerator } from "./html-generator"; import LinkerLine from "linkerline"; import type { BackendTraceElem, FrontendTraceElem } from "../types"; @@ -9,15 +10,15 @@ type ResetMsg = { command: "reset"; trace: BackendTraceElem[]; complete: boolean; - index: number; + index?: number; }; type AppendMsg = { command: "append"; elem: BackendTraceElem; complete: boolean; - index: number; - len: number; + index?: number; + len?: number; }; // Optional example trace format (designer mode) @@ -28,6 +29,8 @@ let trace: BackendTraceElem[] = []; let traceComplete = false; let traceIndex = 0; +type NavType = "first" | "prev" | "next" | "last"; + const gen = new HTMLGenerator(); //DOM helpers @@ -79,7 +82,50 @@ function renderCurrent() { updateRefArrows(frontendElem); } -function updateVisualization(traceElem: any /* FrontendTraceElem */) { +function postCurrentHighlight() { + if (!isVscode || trace.length === 0) { + return; + } + window.dispatchEvent(new CustomEvent("programflow:highlight", { + detail: { + filePath: trace[traceIndex].filePath, + line: trace[traceIndex].line, + }, + })); +} + +function navigate(type: NavType) { + const max = Math.max(0, trace.length - 1); + + switch (type) { + case "first": + traceIndex = 0; + break; + + case "prev": + traceIndex = Math.max(0, traceIndex - 1); + break; + + case "next": + traceIndex = Math.min(max, traceIndex + 1); + break; + + case "last": + traceIndex = max; + break; + } + + renderCurrent(); + postCurrentHighlight(); +} + +function slideTo(rawValue: string) { + traceIndex = Number(rawValue) || 0; + renderCurrent(); + postCurrentHighlight(); +} + +function updateVisualization(traceElem: FrontendTraceElem) { clearArrows(); const frames = document.getElementById("frames"); @@ -96,7 +142,7 @@ function updateVisualization(traceElem: any /* FrontendTraceElem */) { stdoutLog.scrollTo(0, stdoutLog.scrollHeight); } -function updateIndent(traceElem: any /* FrontendTraceElem */) { +function updateIndent(traceElem: FrontendTraceElem) { const heapTags = traceElem.heapHTML.match(/(?<=startPointer)[0-9]+/g); if (heapTags) { heapTags.forEach((tag: string) => { @@ -116,7 +162,7 @@ function clearArrows() { refLines = []; } -function updateRefArrows(traceElem: any /* FrontendTraceElem */) { +function updateRefArrows(traceElem: FrontendTraceElem) { const tags = getCurrentTags(traceElem); if (!tags) { return; } @@ -199,7 +245,7 @@ window.addEventListener("programflow:reset", (e: Event) => { const msg = (e as CustomEvent).detail; trace = msg.trace ?? []; traceComplete = !!msg.complete; - traceIndex = Number(msg.index ?? 0); + traceIndex = Number(msg.index ?? traceIndex); renderCurrent(); }); @@ -211,66 +257,6 @@ window.addEventListener("programflow:append", (e: Event) => { renderCurrent(); }); -window.addEventListener("programflow:updateButtons", (e: Event) => { - const msg = (e as CustomEvent).detail; - setDisabled("#nextButton", !msg.next); - setDisabled("#prevButton", !msg.prev); - setDisabled("#firstButton", !msg.first); - setDisabled("#lastButton", !msg.last); -}); - -window.addEventListener("programflow:updateContent", (e: Event) => { - const msg = (e as CustomEvent).detail; - - const max = Math.max(0, (msg.traceLen ?? 0) - 1); - const slider = $("#traceSlider") as HTMLInputElement; - slider.max = String(max); - slider.value = String(msg.traceIndex ?? 0); - - $("#traceMax").innerHTML = "/" + (msg.traceComplete ? String(max) : "?"); - $("#indexCounter").innerHTML = String(msg.traceIndex ?? 0); - - updateVisualization(msg.traceElem); - updateIndent(msg.traceElem); - updateRefArrows(msg.traceElem); -}); - -// Browser-only navigation handling -if (!isVscode) { - - window.addEventListener("programflow:onClick", (e: Event) => { - const ce = e as CustomEvent<{ type: "first" | "prev" | "next" | "last" }>; - const max = Math.max(0, trace.length - 1); - - switch (ce.detail.type) { - case "first": - traceIndex = 0; - break; - - case "prev": - traceIndex = Math.max(0, traceIndex - 1); - break; - - case "next": - traceIndex = Math.min(max, traceIndex + 1); - break; - - case "last": - traceIndex = max; - break; - } - - renderCurrent(); - }); - - window.addEventListener("programflow:onSlide", (e: Event) => { - const ce = e as CustomEvent<{ value: string }>; - traceIndex = Number(ce.detail.value) || 0; - renderCurrent(); - }); - -} - function setupUi() { // Disable until first reset arrives @@ -279,24 +265,24 @@ function setupUi() { setDisabled("#prevButton", true); setDisabled("#firstButton", true); - // Button clicks -> dispatch events (adapter forwards to VS Code) + // Button clicks -> local navigation $("#firstButton").addEventListener("click", () => { - window.dispatchEvent(new CustomEvent("programflow:onClick", { detail: { type: "first" } })); + navigate("first"); }); $("#prevButton").addEventListener("click", () => { - window.dispatchEvent(new CustomEvent("programflow:onClick", { detail: { type: "prev" } })); + navigate("prev"); }); $("#nextButton").addEventListener("click", () => { - window.dispatchEvent(new CustomEvent("programflow:onClick", { detail: { type: "next" } })); + navigate("next"); }); $("#lastButton").addEventListener("click", () => { - window.dispatchEvent(new CustomEvent("programflow:onClick", { detail: { type: "last" } })); + navigate("last"); }); - // Slider input -> dispatch event + // Slider input -> local navigation ($("#traceSlider") as HTMLInputElement).addEventListener("input", (e: Event) => { const value = (e.target as HTMLInputElement).value; - window.dispatchEvent(new CustomEvent("programflow:onSlide", { detail: { value } })); + slideTo(value); }); // Optional: example trace mode From 5bbf0f61ecbea1ffe22f1c7b4b3945f52fc36edd Mon Sep 17 00:00:00 2001 From: Simon Roesch Date: Tue, 31 Mar 2026 15:07:23 +0200 Subject: [PATCH 05/20] Further simplification and dead code removal --- src/programflow-visualization/README.md | 4 ++-- .../frontend/visualization_panel.ts | 18 +++--------------- .../web/html-generator.ts | 6 +++--- .../web/vscode-host-adapter.ts | 10 ++++------ src/programflow-visualization/web/webview.ts | 12 +----------- 5 files changed, 13 insertions(+), 37 deletions(-) diff --git a/src/programflow-visualization/README.md b/src/programflow-visualization/README.md index cc0c2f22..a5f95113 100644 --- a/src/programflow-visualization/README.md +++ b/src/programflow-visualization/README.md @@ -13,7 +13,7 @@ The self-contained UI component that the user interacts with: ### **Panel (frontend/)** The VS Code extension-side host that owns the webview: -- **visualization_panel.ts**: Creates and manages the webview panel lifecycle. Receives `reset` and `append` messages from the trace backend, posts them to the webview. Handles `highlight` and `select` messages from the webview to update editor line highlighting. +- **visualization_panel.ts**: Creates and manages the webview panel lifecycle. Receives `reset` and `append` messages from the trace backend, posts them to the webview. Handles `highlight` messages from the webview to update editor line highlighting. ## Message Flow @@ -40,7 +40,7 @@ graph TB panel -->|postMessage reset/append| webview webview -->|custom events| adapter["vscode-host-adapter.ts"] - adapter -->|postMessage highlight/select| panel + adapter -->|postMessage highlight| panel panel -->|updateLineHighlight| editor ui -->|local navigation| gen diff --git a/src/programflow-visualization/frontend/visualization_panel.ts b/src/programflow-visualization/frontend/visualization_panel.ts index a09f386d..fb18a8e3 100644 --- a/src/programflow-visualization/frontend/visualization_panel.ts +++ b/src/programflow-visualization/frontend/visualization_panel.ts @@ -17,7 +17,6 @@ export class VisualizationPanel { private readonly _context: vscode.ExtensionContext; private readonly _outChannel: vscode.OutputChannel; - private readonly _filePath: string; private readonly _fileHash: string; private readonly _tracePort: MessagePort | null; @@ -39,7 +38,6 @@ export class VisualizationPanel { ) { this._context = context; this._outChannel = outChannel; - this._filePath = filePath; this._fileHash = fileHash; this._tracePort = tracePort; @@ -88,18 +86,9 @@ export class VisualizationPanel { this._panel.webview.onDidReceiveMessage( async (msg) => { - switch (msg?.command) { - case "highlight": - if (typeof msg.filePath === "string" && typeof msg.line === "number") { - await this.updateLineHighlight(false, msg.filePath, msg.line); - } - break; - case "select": - if (typeof msg.filePath === "string" && typeof msg.line === "number") { - await this.updateLineHighlight(false, msg.filePath, msg.line); - } - break; - } + if (msg?.command !== "highlight") {return;} + if (typeof msg.filePath !== "string" || typeof msg.line !== "number") {return;} + await this.updateLineHighlight(false, msg.filePath, msg.line); }, undefined, context.subscriptions @@ -189,7 +178,6 @@ export class VisualizationPanel { command: "append", elem, complete: this._backendTrace.complete, - len: this._backendTrace.trace.length, }); } diff --git a/src/programflow-visualization/web/html-generator.ts b/src/programflow-visualization/web/html-generator.ts index 71760bca..3ee2a436 100644 --- a/src/programflow-visualization/web/html-generator.ts +++ b/src/programflow-visualization/web/html-generator.ts @@ -185,11 +185,11 @@ export class HTMLGenerator { private frameItem(index: number, stackElem: StackElem): string { return ` -
-
+
+
${stackElem.frameName === '' ? 'Global' : escapeHTML(stackElem.frameName)}
-
+
${stackElem.locals.map(namedValue => this.frameSubItem(stackElem.frameName, namedValue)).join('')}
diff --git a/src/programflow-visualization/web/vscode-host-adapter.ts b/src/programflow-visualization/web/vscode-host-adapter.ts index 187a7e05..413a6e80 100644 --- a/src/programflow-visualization/web/vscode-host-adapter.ts +++ b/src/programflow-visualization/web/vscode-host-adapter.ts @@ -1,6 +1,8 @@ // Bridge messages between the VS Code host API and webview custom events declare const acquireVsCodeApi: undefined | (() => { postMessage: (msg: any) => void }); +type HighlightMsg = { command: "highlight"; filePath: string; line: number }; + const vscode = typeof acquireVsCodeApi === "function" ? acquireVsCodeApi() : { postMessage: (_: any) => {} }; @@ -19,12 +21,8 @@ window.addEventListener("message", (event: MessageEvent) => { } }); -window.addEventListener("programflow:select", (e: Event) => { - const ce = e as CustomEvent; - vscode.postMessage({ command: "select", ...ce.detail }); -}); - window.addEventListener("programflow:highlight", (e: Event) => { const ce = e as CustomEvent<{ filePath: string; line: number }>; - vscode.postMessage({ command: "highlight", ...ce.detail }); + const msg: HighlightMsg = { command: "highlight", ...ce.detail }; + vscode.postMessage(msg); }); diff --git a/src/programflow-visualization/web/webview.ts b/src/programflow-visualization/web/webview.ts index 75000bd8..cf824e6c 100644 --- a/src/programflow-visualization/web/webview.ts +++ b/src/programflow-visualization/web/webview.ts @@ -3,22 +3,16 @@ import { HTMLGenerator } from "./html-generator"; import LinkerLine from "linkerline"; import type { BackendTraceElem, FrontendTraceElem } from "../types"; -// only used to add seperate Browser navigation if not in vscode -const isVscode = typeof (window as any).acquireVsCodeApi === "function"; - type ResetMsg = { command: "reset"; trace: BackendTraceElem[]; complete: boolean; - index?: number; }; type AppendMsg = { command: "append"; elem: BackendTraceElem; complete: boolean; - index?: number; - len?: number; }; // Optional example trace format (designer mode) @@ -83,7 +77,7 @@ function renderCurrent() { } function postCurrentHighlight() { - if (!isVscode || trace.length === 0) { + if (trace.length === 0) { return; } window.dispatchEvent(new CustomEvent("programflow:highlight", { @@ -245,7 +239,6 @@ window.addEventListener("programflow:reset", (e: Event) => { const msg = (e as CustomEvent).detail; trace = msg.trace ?? []; traceComplete = !!msg.complete; - traceIndex = Number(msg.index ?? traceIndex); renderCurrent(); }); @@ -253,7 +246,6 @@ window.addEventListener("programflow:append", (e: Event) => { const msg = (e as CustomEvent).detail; trace.push(msg.elem); traceComplete = !!msg.complete; - traceIndex = Number(msg.index ?? traceIndex); renderCurrent(); }); @@ -288,8 +280,6 @@ function setupUi() { // Optional: example trace mode const anyWin = window as any; const staticTrace: StaticTrace | undefined = anyWin.__PROGRAMFLOW_TRACE__; - - console.log("static trace mode:", !!staticTrace?.trace, staticTrace?.trace?.length); if (staticTrace?.trace) { trace = staticTrace.trace; From 635e335f1370c4869d68c1948e7d47db309158a7 Mon Sep 17 00:00:00 2001 From: Simon Roesch Date: Tue, 31 Mar 2026 15:18:04 +0200 Subject: [PATCH 06/20] README adjustment --- src/programflow-visualization/README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/programflow-visualization/README.md b/src/programflow-visualization/README.md index a5f95113..4699e20d 100644 --- a/src/programflow-visualization/README.md +++ b/src/programflow-visualization/README.md @@ -54,3 +54,8 @@ graph TB 3. **User Navigation**: User clicks buttons or moves slider → local navigation in webview updates `traceIndex` → renders visualization → emits `highlight` message. 4. **Editor Synchronization**: Panel receives `highlight` message → opens file and highlights line in editor. 5. **Standalone Mode**: webview works standalone (desktop or browser) via static trace injection in development, no postMessage needed. + + +## WebDev + +You can develop the design of the visualization using an example trace in your browser. For concrete instructions check out base-repo README. \ No newline at end of file From 864e6026d222539d5864924334cbf08f5d439f95 Mon Sep 17 00:00:00 2001 From: Stefan Wehr Date: Fri, 17 Apr 2026 16:58:00 +0200 Subject: [PATCH 07/20] minor fixes after review --- scripts/build-web.mjs | 3 +++ src/programflow-visualization/README.md | 19 ++++++++++--------- .../frontend/visualization_panel.ts | 14 +++++++++----- src/programflow-visualization/web/webview.ts | 5 +++-- 4 files changed, 25 insertions(+), 16 deletions(-) diff --git a/scripts/build-web.mjs b/scripts/build-web.mjs index 2a173c3d..a7bd2ae1 100644 --- a/scripts/build-web.mjs +++ b/scripts/build-web.mjs @@ -1,3 +1,6 @@ +// This script builds the artifacts for the web-view of the visualization. +// It translates typescript to javascript and replaces placeholders in html files. + import * as esbuild from "esbuild"; import fs from "fs"; import path from "path"; diff --git a/src/programflow-visualization/README.md b/src/programflow-visualization/README.md index 4699e20d..3ce22a96 100644 --- a/src/programflow-visualization/README.md +++ b/src/programflow-visualization/README.md @@ -22,27 +22,28 @@ graph TB subgraph backend["Backend (Python)"] trace["Trace Generator"] end - + subgraph extension["Extension Host (VS Code)"] panel["VisualizationPanel"] end - + subgraph webview["Webview (Sandboxed)"] ui["webview.ts
(UI + Navigation)"] gen["html-generator.ts
(Rendering)"] end - + subgraph editor["Editor"] highlight["Line Highlighting"] end - + trace -->|trace array via IPC| panel - panel -->|postMessage reset/append| webview - - webview -->|custom events| adapter["vscode-host-adapter.ts"] + panel -->|postMessage reset/append| adapter + + webview -->|custom event: programflow:highlight| adapter["vscode-host-adapter.ts"] + adapter -->|custom event: programflow:reset, programflow:append| webview adapter -->|postMessage highlight| panel panel -->|updateLineHighlight| editor - + ui -->|local navigation| gen gen -->|innerHTML| ui ``` @@ -58,4 +59,4 @@ graph TB ## WebDev -You can develop the design of the visualization using an example trace in your browser. For concrete instructions check out base-repo README. \ No newline at end of file +You can develop the design of the visualization using an example trace in your browser. For concrete instructions check out base-repo README. diff --git a/src/programflow-visualization/frontend/visualization_panel.ts b/src/programflow-visualization/frontend/visualization_panel.ts index fb18a8e3..dcbaf982 100644 --- a/src/programflow-visualization/frontend/visualization_panel.ts +++ b/src/programflow-visualization/frontend/visualization_panel.ts @@ -86,9 +86,13 @@ export class VisualizationPanel { this._panel.webview.onDidReceiveMessage( async (msg) => { - if (msg?.command !== "highlight") {return;} - if (typeof msg.filePath !== "string" || typeof msg.line !== "number") {return;} - await this.updateLineHighlight(false, msg.filePath, msg.line); + if ( + msg?.command === "highlight" && + typeof msg.filePath === "string" && + typeof msg.line === "number" + ) { + await this.updateLineHighlight(false, msg.filePath, msg.line); + } }, undefined, context.subscriptions @@ -187,10 +191,10 @@ export class VisualizationPanel { let traceFile: string; let traceLine: number; - if (typeof overrideFile === "string" && typeof overrideLine === "number") { + if (overrideFile !== undefined && overrideLine !== undefined) { traceFile = overrideFile; traceLine = overrideLine; - } else if (typeof this._highlightFilePath === "string" && typeof this._highlightLine === "number") { + } else if (this._highlightFilePath !== undefined && this._highlightLine !== undefined) { traceFile = this._highlightFilePath; traceLine = this._highlightLine; } else { diff --git a/src/programflow-visualization/web/webview.ts b/src/programflow-visualization/web/webview.ts index cf824e6c..5b6bf949 100644 --- a/src/programflow-visualization/web/webview.ts +++ b/src/programflow-visualization/web/webview.ts @@ -240,6 +240,7 @@ window.addEventListener("programflow:reset", (e: Event) => { trace = msg.trace ?? []; traceComplete = !!msg.complete; renderCurrent(); + postCurrentHighlight(); }); window.addEventListener("programflow:append", (e: Event) => { @@ -280,7 +281,7 @@ function setupUi() { // Optional: example trace mode const anyWin = window as any; const staticTrace: StaticTrace | undefined = anyWin.__PROGRAMFLOW_TRACE__; - + if (staticTrace?.trace) { trace = staticTrace.trace; traceComplete = !!staticTrace.complete; @@ -289,4 +290,4 @@ function setupUi() { } } -document.addEventListener("DOMContentLoaded", setupUi); \ No newline at end of file +document.addEventListener("DOMContentLoaded", setupUi); From 01b29bcb95cb75006fa6362493842e2935de398f Mon Sep 17 00:00:00 2001 From: Simon Roesch Date: Wed, 9 Sep 2026 15:39:38 +0200 Subject: [PATCH 08/20] elk-restyling start and plan --- elk-task/current.png | Bin 0 -> 394885 bytes elk-task/elk-plan.md | 258 +++++++++++++++++++++++++ elk-task/example.elkt | 259 ++++++++++++++++++++++++++ elk-task/example.py | 38 ++++ elk-task/veryRoughMockupOfExample.png | Bin 0 -> 62362 bytes 5 files changed, 555 insertions(+) create mode 100644 elk-task/current.png create mode 100644 elk-task/elk-plan.md create mode 100644 elk-task/example.elkt create mode 100644 elk-task/example.py create mode 100644 elk-task/veryRoughMockupOfExample.png diff --git a/elk-task/current.png b/elk-task/current.png new file mode 100644 index 0000000000000000000000000000000000000000..9c6d2afa9c654d39eb208f05e360026e3ca4cc6a GIT binary patch literal 394885 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%0D+Bs!$|p2kta0C0M0ChEFi&N#y5-J#wkai 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

QoS~UFHydjr2;q))}M>JRy>c0;x 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

FVW)nOSqGxJj4Q{<-2eBP^*sL>s$45T2C|Vil#x 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

  • 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

    s6lY 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 Mtt?d{Ve;Ys0iOXsrvLx| literal 0 HcmV?d00001 diff --git a/elk-task/elk-plan.md b/elk-task/elk-plan.md new file mode 100644 index 00000000..ac4da2a7 --- /dev/null +++ b/elk-task/elk-plan.md @@ -0,0 +1,258 @@ +# ELK-based visualization: plan + +Replace the current CSS-flexbox + linkerline rendering of the programflow visualization +with a real graph model laid out by [elkjs](https://github.com/kieler/elkjs), add +collapsible heap nodes, and make the whole thing themable from CSS. + +`example.elkt` in the repo root is the hand-written target shape (prototype for +). It is a *specification*, +not a runtime artifact: elkjs consumes a JSON graph, not the `.elkt` text notation. + +--- + +## 1. Where we are today + +| Concern | Current implementation | +| --- | --- | +| Model | none — `html-generator.ts` builds two raw HTML strings (`stackHTML`, `heapHTML`) | +| Layout | CSS flex, two floated columns (`.floating-left` = frames 35%, `.floating-right` = objects 65%) | +| Edges | `linkerline`, drawn *after* render by measuring DOM elements found via `id="…Pointer"` / `id="heapEndPointer"` regex-scraped out of the HTML strings | +| Styling | hardcoded colors in `webview.css` (`.box`, `.frame`, `.current-frame`, …) | +| Collapsing | not supported | + +Blast radius is small: `FrontendTraceElem` / `HTMLGenerator` are referenced **only** by +`web/webview.ts` and `web/html-generator.ts`. The extension host +(`frontend/visualization_panel.ts`) only ships `BackendTraceElem`s, so nothing on the +VS Code side changes. + +## 2. Constraints found while checking the code + +- **`heap` is not a `Map`.** `types.ts` declares `heap: Map`, but after + IPC/JSON it is a plain object — today's code works around this with `Object.keys(...)`. + Same for `HeapValue.value` / `.keys` on `dict` and `instance`. Use `Object.entries`. +- **CSP blocks Web Workers.** `web/index.html` has `default-src 'none'` and no + `worker-src`, so `worker-src` falls back to `none`. → Use the synchronous bundled build + `elkjs/lib/elk.bundled.js` (main thread, no worker). Revisit the worker build only if + layout is too slow; that would also need `worker-src blob:;` in the CSP. +- **Bundling.** `localResourceRoots` contains only `out/programflow-visualization/web`, so + elkjs must be bundled *into* `webview.js` by esbuild (`scripts/build-web.mjs`), not + loaded as a separate asset. `elk.bundled.js` is plain JS and bundles fine; elkjs ships + its own type declarations, so no `@types/*` package. +- **`StackElem` has no line number**, so `example.elkt`'s `"createGradeList (line 36)"` is + not derivable — only `BackendTraceElem.line` (the currently executing line) exists. + Decided: no per-frame line, frame headers show the name only. +- **Pre-existing bug.** `html-generator.frameItem` marks `index === 0` as `current-frame`, + but `stack[0]` is ``, the *outermost* frame (the example trace confirms + `[, generate_bar]`). The current frame is the **last** element. Fix while porting. +- **`linkerline` becomes dead** once edges come from ELK bend points → drop the dependency. + +## 3. `example.elkt` vs. the current layout + +Structurally faithful, visually different. Node *content* is rendered by us as HTML and +only *placement* comes from ELK (§5), so most differences are free choices. + +| Aspect | Current extension | `example.elkt` | Decision | +| --- | --- | --- | --- | +| Overall split | Frames left, Objects right, fixed % columns | `frames` / `objects` containers, `direction: RIGHT` | same idea, see §4 | +| Column grouping | **no box** — `Frames`/`Objects` titles + `.divider` chrome in `index.html` | visible group boxes with labels | keep current (§4) | +| Frame box | `border-left` 4px, grey / blue for the current frame | plain container node | keep current | +| Frame header | `` shown as `Global` | ``, plus `(line 36)` | keep current, no line | +| Variable row | two columns `name` \| `value`, value empty when it's a ref | single label `"tim"` | keep current | +| list / tuple | **horizontal** strip of boxes, index above value | **vertical** text lines `[0] 3.3` | keep current | +| set | wrapping row of value boxes, no index | not modelled | keep current | +| dict | vertical `key` \| `value` pairs, key width from longest key | not modelled | keep current | +| instance | headline = class name, then `key` \| `value` pairs | labels `name = 'Tim'` | keep current | +| Edge labels | none — index/key lives inside the source box | `"students"`, `"0"`, … on the edge | keep current (no labels) | +| Edge colors | per-address hue via `getColor()` | none | **replaced**, see §6.4 | +| Pointed-to objects | `.object-intendation`, flat 65px left margin | real layout | ELK replaces the hack | +| Collapsed summary | not supported | `"list" / "12 elements"` | the new feature, mocked | + +So: **take layout from `example.elkt`, keep content rendering as it is today.** Where the +two disagree, the current extension wins; edge coloring (§6.4) is the one deliberate +exception. That keeps the visible change to "same boxes, better placement, real arrows", +which is much easier to review than a simultaneous restyle. + +Two further things `example.elkt` gets wrong for runtime use: it hardcodes every label size +(`layout [ size: 90, 16 ]` — real sizes must be measured, §6.2), and it models rows as +child nodes, which lets `layered` reorder them (§5.2). + +## 4. Layout shape: flat graph, headers computed after layout + +No outer `frames` / `objects` container nodes: + +- The current UI has no box around either column — the headings and dividers are chrome in + `index.html`, outside the content. Containers would add visual weight that isn't there. +- Instead pin frame nodes to the leftmost layer with + `elk.layered.layering.layerConstraint: FIRST`. Every heap object is then strictly right + of every frame — same split, but ELK can compact the rest freely. +- No hierarchy means no cross-hierarchy edges, so `hierarchyHandling: INCLUDE_CHILDREN` + and the lowest-common-ancestor bookkeeping that `example.elkt` needs both disappear. +- `layerConstraint: FIRST` only admits nodes without incoming edges. After the collapse + filter (§6.3) every rendered object is reachable from a frame, i.e. has at least one + incoming edge, so no object can slip into the frames layer. The split stays well-defined. + +**The `Frames` / `Objects` headers stay above their areas**, recomputed from the layout +instead of fixed percentages: + +- `framesRight = max(x + width)` over frame nodes, `objectsLeft = min(x)` over object nodes. +- Two absolutely positioned header divs at `y = 0` in the canvas, spanning `[0, framesRight]` + and `[objectsLeft, canvasWidth]`, reusing the existing `.title` + `.divider` markup. All + node `y` values shift down by the header height. +- Matches today's behaviour: the headers live inside `#viz`, the scroll container, so they + scroll with the content rather than sticking. +- Fallback if the computed split looks unstable between steps: switch the model builder to + the two container nodes (rendered borderless) and read the extents from their geometry. + Keep that switchable. + +## 5. Graph modelling decisions + +### 5.1 One node per frame / object, content rendered by us + +ELK only places boxes and routes edges; the inside of every box is our HTML, exactly as +rendered today. + +### 5.2 Rows are **ports**, not child nodes + +`example.elkt` models each variable/field as a child node, which makes `layered` run a +layout inside every frame and is free to reorder rows. Instead, each referencing row +becomes an ELK **port** on its node: + +- `elk.portConstraints: FIXED_POS` with explicit port `x`/`y` (row index × measured row + height) → row order always matches source order, boxes stay compact, no wasted layout. +- Ports get zero width/height; edges reference them directly in `sources` / `targets`, + which puts each arrow's origin on the exact row holding the reference — what linkerline + only approximates today. +- Fallback if ports prove awkward: child nodes plus + `elk.layered.considerModelOrder.strategy: NODES_AND_EDGES` to force ordering. + +## 6. Implementation + +``` +BackendTraceElem + │ + ├─ graph-model.ts buildGraph(elem, collapsed) -> ElkNode (no sizes yet) + ├─ measure.ts fill width/height/port offsets from real text metrics + ├─ elk layout elk.layout(graph) (elk.bundled.js, main thread) + └─ graph-renderer.ts absolutely-positioned divs + one SVG edge overlay +``` + +New files under `src/programflow-visualization/web/`: `graph-model.ts`, `measure.ts`, +`graph-renderer.ts`. Removed at the end: `html-generator.ts`, the `linkerline` dependency, +and the `stackHTML` / `heapHTML` fields of `FrontendTraceElem`. + +### 6.1 Graph model (`graph-model.ts`) + +`buildGraph(elem: BackendTraceElem, collapsed: Set

    ): ElkNode` + +- Flat graph: root → one node per `StackElem` + one node per heap address. +- Frame nodes get `layerConstraint: FIRST` and a port per `local` with `type === 'ref'`. +- Object nodes: content per `HeapValue.type` (`list` | `tuple` | `set` | `dict` | + `instance`), a port per `ref` element/field. A collapsed node has no ports. +- Reference edges are plain `ElkExtendedEdge`s on the root. +- Stable ids — `frame:`, `frame::`, `obj:
    `, + `obj:
    :` — so collapse and hover state survive a re-render. +- Every node carries a `data.kind` tag (`frame`, `current-frame`, `list`, `tuple`, `set`, + `dict`, `instance`, `collapsed`) that the renderer turns into CSS classes. + **No colors or fonts in TS.** +- Layout options, from `example.elkt`: `algorithm: layered`, `direction: RIGHT`, + `spacing.nodeNode`, `layered.spacing.nodeNodeBetweenLayers`, plus `edgeRouting: ORTHOGONAL`. + +### 6.2 Measurement (`measure.ts`) + +Before layout, walk the graph and set `width`/`height` on every node and `x`/`y` on every +port — ELK needs sizes up front, unlike flexbox which measures during render, and content +changes every trace step. Text width via a cached `CanvasRenderingContext2D.measureText` +using the font resolved from the webview's computed style, so it matches VS Code's editor +font. Row height comes from a single CSS custom property, so CSS and layout can't drift. + +### 6.3 Rendering (`graph-renderer.ts`) and collapsing + +Rendering: + +- One positioned container `#viz-canvas`; each ELK node becomes an absolutely positioned + `
    ` at its computed `x`/`y`/`width`/`height`, classed from `data.kind`, with the row + markup inside. +- Edges: a single `` overlay, one `` per edge built from its ELK `sections` + (start point, bend points, end point) plus an arrowhead ``. This fully replaces + linkerline — no post-hoc DOM measurement, no regex id scraping. +- Headers placed from the layout extents (§4); node `y` shifted by the header height. +- ELK coordinates are parent-relative → accumulate parent offsets when flattening. A no-op + for the flat graph, but keep it so the container fallback of §4 works. + +Collapsing — state is `collapsed: Set
    ` in `webview.ts`, **persisted across trace +steps**, toggled by clicking the header of any `list`, `tuple`, `set`, `dict` or `instance` +node, and passed into `buildGraph` on every render. No auto-collapse. The filter runs +**before** layout: + +1. Roots = all `ref` values in all stack frames. +2. Traverse the reference graph, **but do not traverse edges leaving a collapsed node**. + The collapsed node still renders, as a closed box with a one-line summary + (`list, 12 elements`, `dict, 3 entries`, `Student, 2 fields`), just without its + outgoing edges. +3. Drop every heap object not reached, and every edge touching a dropped object. + +This gives the requested semantics exactly: a node disappears only if it is *exclusively* +downstream of the collapsed node; anything reachable by another path stays. + +Accepted caveat: collapse state is keyed by heap address and CPython reuses addresses after +GC, so a collapse can "jump" to an unrelated object many steps later. Cheap mitigation if +it becomes annoying — drop an address from the set when the object at that address changes +`type`. + +### 6.4 Styling + +- Class-per-kind in `webview.css`: `.elk-node`, `.elk-frame`, `.elk-current-frame`, + `.elk-list`, `.elk-tuple`, `.elk-set`, `.elk-dict`, `.elk-instance`, `.elk-row`, + `.elk-collapsed`, `.elk-edge`. +- Colors from VS Code theme variables (`var(--vscode-editor-foreground)`, + `var(--vscode-panel-border)`, `var(--vscode-charts-*)`) instead of today's hardcoded + `rgba(56, 56, 56, 0.8)`, so the visualization follows light/dark/high-contrast themes. + +**Edge coloring: neutral + hover highlight**, replacing `getColor()`. The current formula +`((0.618033988749895 + addr / 10) % 1) * 100` → `hsl(h, 60%, 45%)` exists only because +linkerline draws unrouted, overlapping arrows and color was the only way to tell them +apart. It also has two bugs: `* 100` instead of `* 360` squeezes all hues into a red→green +sliver, and `addr / 10` on small addresses moves the hue by ~10 per object, so neighbouring +objects look identical. Encoding the heap address is meaningless to a learner anyway, and +ELK's orthogonal routing separates edges by construction. Therefore: + +- All edges in one neutral theme color (`var(--vscode-editor-foreground)`, reduced opacity). +- Disambiguation on interaction: hovering a variable row or object node adds + `.elk-edge-active` to its incoming/outgoing edges and `.elk-dimmed` to the rest. Scales + to dense heaps, theme-friendly, works for color-blind users. +- The renderer only sets `data-source` / `data-target` and toggles classes, so going back + to per-address hues (or coloring by edge kind) is a CSS change plus one attribute. + +## 7. Rollout order + +Each step keeps the extension working. + +1. **Spike.** Add `elkjs`; build a graph from `example-trace-content.js` and render it in + browser dev mode (`npm run watch:web`, `out/programflow-visualization/web/index.web.html`). + Check bundle size and layout time on the largest example step. +2. **Model + measure + render** behind a flag; `html-generator.ts` stays as fallback. +3. **Switch** `webview.ts` (`updateVisualization` / `updateRefArrows` / `updateIndent`) to + the new pipeline once output looks right. +4. **Collapsing**: click handling + reachability filter. +5. **Styling pass**: theme variables, per-kind classes, neutral edges + hover highlighting. +6. **Cleanup**: delete `html-generator.ts`, drop `linkerline`, trim `FrontendTraceElem`, + update `src/programflow-visualization/README.md` (its diagram still shows + `html-generator.ts` → `innerHTML`). + +## 8. Decisions at a glance + +| Decision | Where | +| --- | --- | +| Content rendering stays as today; current extension wins over `example.elkt` | §3 | +| Flat graph, frames pinned to first layer, no outer containers | §4 | +| `Frames` / `Objects` headers stay, positioned from layout extents | §4 | +| Rows modelled as fixed-position ports | §5.2 | +| No per-frame line number in frame headers | §2 | +| Collapse persists across steps; address-reuse caveat accepted | §6.3 | +| Collapsible types: `list`, `tuple`, `set`, `dict`, `instance` | §6.3 | +| No auto-collapse for long lists | §6.3 | +| Neutral edges + hover highlighting instead of per-address hues | §6.4 | +| Sync `elk.bundled.js`, no Web Worker (CSP) | §2 | + +Nothing blocking is open. Revisit only if the spike shows the computed header extents +jittering between steps → fall back to the borderless-container variant (§4). diff --git a/elk-task/example.elkt b/elk-task/example.elkt new file mode 100644 index 00000000..a103135e --- /dev/null +++ b/elk-task/example.elkt @@ -0,0 +1,259 @@ +// complicated.py — Step 35 (about to execute line 36: `return result`) +// Reconstructed from the real trace of write-your-python-program's +// pytrace-generator (trace entry index 34). +// +// Paste into the ELK demonstrator: https://rtsys.informatik.uni-kiel.de/elklive/elkgraph.html + +org.eclipse.elk.algorithm: layered +org.eclipse.elk.direction: RIGHT +org.eclipse.elk.hierarchyHandling: INCLUDE_CHILDREN +org.eclipse.elk.spacing.nodeNode: 20 +org.eclipse.elk.layered.spacing.nodeNodeBetweenLayers: 45 + +node frames { + org.eclipse.elk.padding: "[top=36,left=16,bottom=16,right=16]" + org.eclipse.elk.nodeSize.constraints: "[MINIMUM_SIZE]" + org.eclipse.elk.nodeSize.minimum: "(320, 220)" + label "frames" + + node moduleFrame { + org.eclipse.elk.padding: "[top=34,left=14,bottom=14,right=14]" + org.eclipse.elk.nodeSize.constraints: "[MINIMUM_SIZE]" + org.eclipse.elk.nodeSize.minimum: "(260, 160)" + label "" + + node Student { layout [ size: 170, 28 ] org.eclipse.elk.alignment: LEFT label "Student = " } + node Subject { layout [ size: 170, 28 ] org.eclipse.elk.alignment: LEFT label "Subject = " } + node createGradeList { layout [ size: 170, 28 ] org.eclipse.elk.alignment: LEFT label "createGradeList = " } + + node tim { layout [ size: 100, 28 ] org.eclipse.elk.alignment: LEFT label "tim" } + node karl { layout [ size: 100, 28 ] org.eclipse.elk.alignment: LEFT label "karl" } + node tom { layout [ size: 100, 28 ] org.eclipse.elk.alignment: LEFT label "tom" } + node karl2 { layout [ size: 100, 28 ] org.eclipse.elk.alignment: LEFT label "karl2" } + node mariam { layout [ size: 100, 28 ] org.eclipse.elk.alignment: LEFT label "mariam" } + node hector { layout [ size: 100, 28 ] org.eclipse.elk.alignment: LEFT label "hector" } + node quentin { layout [ size: 100, 28 ] org.eclipse.elk.alignment: LEFT label "quentin" } + node fabio { layout [ size: 100, 28 ] org.eclipse.elk.alignment: LEFT label "fabio" } + node jonas { layout [ size: 100, 28 ] org.eclipse.elk.alignment: LEFT label "jonas" } + node lara { layout [ size: 100, 28 ] org.eclipse.elk.alignment: LEFT label "lara" } + node gerd { layout [ size: 100, 28 ] org.eclipse.elk.alignment: LEFT label "gerd" } + node joerg { layout [ size: 100, 28 ] org.eclipse.elk.alignment: LEFT label "joerg" } + node aud { layout [ size: 100, 28 ] org.eclipse.elk.alignment: LEFT label "aud" } + node prog1 { layout [ size: 100, 28 ] org.eclipse.elk.alignment: LEFT label "prog1" } + node subjectList { layout [ size: 100, 28 ] org.eclipse.elk.alignment: LEFT label "subjectList" } + } + + node createGradeListFrame { + org.eclipse.elk.padding: "[top=34,left=14,bottom=14,right=14]" + org.eclipse.elk.nodeSize.constraints: "[MINIMUM_SIZE]" + org.eclipse.elk.nodeSize.minimum: "(260, 160)" + label "createGradeList (line 36)" + + node subject { layout [ size: 100, 28 ] label "subject" } + node result { layout [ size: 100, 28 ] label "result" } + node student { layout [ size: 100, 28 ] label "student" } + } +} + +node objects { + org.eclipse.elk.padding: "[top=36,left=16,bottom=16,right=16]" + org.eclipse.elk.nodeSize.constraints: "[MINIMUM_SIZE]" + org.eclipse.elk.nodeSize.minimum: "(320, 220)" + label "objects" + + node timObj { + layout [ size: 160, 62 ] + org.eclipse.elk.nodeLabels.placement: "[H_LEFT, V_TOP, INSIDE]" + org.eclipse.elk.nodeLabels.padding: "[top=6,left=10,bottom=6,right=10]" + label "Student" { layout [ size: 55, 16 ] } + label "name = 'Tim'" { layout [ size: 90, 16 ] } + label "grade = 1.0" { layout [ size: 82, 16 ] } + } + node karlObj { + layout [ size: 160, 62 ] + org.eclipse.elk.nodeLabels.placement: "[H_LEFT, V_TOP, INSIDE]" + org.eclipse.elk.nodeLabels.padding: "[top=6,left=10,bottom=6,right=10]" + label "Student" { layout [ size: 55, 16 ] } + label "name = 'karl'" { layout [ size: 96, 16 ] } + label "grade = 2.0" { layout [ size: 82, 16 ] } + } + node tomObj { + layout [ size: 160, 62 ] + org.eclipse.elk.nodeLabels.placement: "[H_LEFT, V_TOP, INSIDE]" + org.eclipse.elk.nodeLabels.padding: "[top=6,left=10,bottom=6,right=10]" + label "Student" { layout [ size: 55, 16 ] } + label "name = 'Tom'" { layout [ size: 90, 16 ] } + label "grade = 1.3" { layout [ size: 82, 16 ] } + } + node karl2Obj { + layout [ size: 160, 62 ] + org.eclipse.elk.nodeLabels.placement: "[H_LEFT, V_TOP, INSIDE]" + org.eclipse.elk.nodeLabels.padding: "[top=6,left=10,bottom=6,right=10]" + label "Student" { layout [ size: 55, 16 ] } + label "name = 'karl'" { layout [ size: 96, 16 ] } + label "grade = 2.6" { layout [ size: 82, 16 ] } + } + node mariamObj { + layout [ size: 160, 62 ] + org.eclipse.elk.nodeLabels.placement: "[H_LEFT, V_TOP, INSIDE]" + org.eclipse.elk.nodeLabels.padding: "[top=6,left=10,bottom=6,right=10]" + label "Student" { layout [ size: 55, 16 ] } + label "name = 'Mariam'" { layout [ size: 110, 16 ] } + label "grade = 1.0" { layout [ size: 82, 16 ] } + } + node hectorObj { + layout [ size: 160, 62 ] + org.eclipse.elk.nodeLabels.placement: "[H_LEFT, V_TOP, INSIDE]" + org.eclipse.elk.nodeLabels.padding: "[top=6,left=10,bottom=6,right=10]" + label "Student" { layout [ size: 55, 16 ] } + label "name = 'Hector'" { layout [ size: 110, 16 ] } + label "grade = 3.0" { layout [ size: 82, 16 ] } + } + node quentinObj { + layout [ size: 160, 62 ] + org.eclipse.elk.nodeLabels.placement: "[H_LEFT, V_TOP, INSIDE]" + org.eclipse.elk.nodeLabels.padding: "[top=6,left=10,bottom=6,right=10]" + label "Student" { layout [ size: 55, 16 ] } + label "name = 'Quentin'" { layout [ size: 118, 16 ] } + label "grade = 1.7" { layout [ size: 82, 16 ] } + } + node fabioObj { + layout [ size: 160, 62 ] + org.eclipse.elk.nodeLabels.placement: "[H_LEFT, V_TOP, INSIDE]" + org.eclipse.elk.nodeLabels.padding: "[top=6,left=10,bottom=6,right=10]" + label "Student" { layout [ size: 55, 16 ] } + label "name = 'Fabio'" { layout [ size: 102, 16 ] } + label "grade = 4.0" { layout [ size: 82, 16 ] } + } + node jonasObj { + layout [ size: 160, 62 ] + org.eclipse.elk.nodeLabels.placement: "[H_LEFT, V_TOP, INSIDE]" + org.eclipse.elk.nodeLabels.padding: "[top=6,left=10,bottom=6,right=10]" + label "Student" { layout [ size: 55, 16 ] } + label "name = 'Jonas'" { layout [ size: 102, 16 ] } + label "grade = 5.0" { layout [ size: 82, 16 ] } + } + node laraObj { + layout [ size: 160, 62 ] + org.eclipse.elk.nodeLabels.placement: "[H_LEFT, V_TOP, INSIDE]" + org.eclipse.elk.nodeLabels.padding: "[top=6,left=10,bottom=6,right=10]" + label "Student" { layout [ size: 55, 16 ] } + label "name = 'Lara'" { layout [ size: 96, 16 ] } + label "grade = 3.3" { layout [ size: 82, 16 ] } + } + node gerdObj { + layout [ size: 160, 62 ] + org.eclipse.elk.nodeLabels.placement: "[H_LEFT, V_TOP, INSIDE]" + org.eclipse.elk.nodeLabels.padding: "[top=6,left=10,bottom=6,right=10]" + label "Student" { layout [ size: 55, 16 ] } + label "name = 'Gerd'" { layout [ size: 96, 16 ] } + label "grade = 2.6" { layout [ size: 82, 16 ] } + } + node joergObj { + layout [ size: 160, 62 ] + org.eclipse.elk.nodeLabels.placement: "[H_LEFT, V_TOP, INSIDE]" + org.eclipse.elk.nodeLabels.padding: "[top=6,left=10,bottom=6,right=10]" + label "Student" { layout [ size: 55, 16 ] } + label "name = 'Joerg'" { layout [ size: 104, 16 ] } + label "grade = 2.6" { layout [ size: 82, 16 ] } + } + + node audObj { + layout [ size: 150, 46 ] + org.eclipse.elk.nodeLabels.placement: "[H_LEFT, V_TOP, INSIDE]" + org.eclipse.elk.nodeLabels.padding: "[top=6,left=10,bottom=6,right=10]" + label "Subject" { layout [ size: 55, 16 ] } + label "name = 'AuD'" { layout [ size: 90, 16 ] } + } + node prog1Obj { + layout [ size: 150, 46 ] + org.eclipse.elk.nodeLabels.placement: "[H_LEFT, V_TOP, INSIDE]" + org.eclipse.elk.nodeLabels.padding: "[top=6,left=10,bottom=6,right=10]" + label "Subject" { layout [ size: 55, 16 ] } + label "name = 'Prog1'" { layout [ size: 102, 16 ] } + } + + node audStudentsList { + layout [ size: 130, 46 ] + org.eclipse.elk.nodeLabels.placement: "[H_LEFT, V_TOP, INSIDE]" + org.eclipse.elk.nodeLabels.padding: "[top=6,left=10,bottom=6,right=10]" + label "list" { layout [ size: 30, 16 ] } + label "12 elements" { layout [ size: 82, 16 ] } + } + node prog1StudentsList { + layout [ size: 130, 46 ] + org.eclipse.elk.nodeLabels.placement: "[H_LEFT, V_TOP, INSIDE]" + org.eclipse.elk.nodeLabels.padding: "[top=6,left=10,bottom=6,right=10]" + label "list" { layout [ size: 30, 16 ] } + label "6 elements" { layout [ size: 76, 16 ] } + } + node subjectListList { + layout [ size: 130, 46 ] + org.eclipse.elk.nodeLabels.placement: "[H_LEFT, V_TOP, INSIDE]" + org.eclipse.elk.nodeLabels.padding: "[top=6,left=10,bottom=6,right=10]" + label "list" { layout [ size: 30, 16 ] } + label "2 elements" { layout [ size: 76, 16 ] } + } + node resultList { + layout [ size: 170, 140 ] + org.eclipse.elk.nodeLabels.placement: "[H_LEFT, V_TOP, INSIDE]" + org.eclipse.elk.nodeLabels.padding: "[top=6,left=10,bottom=6,right=10]" + label "list" { layout [ size: 30, 16 ] } + label "[0] " { layout [ size: 138, 16 ] } + label "[1] 3.3" { layout [ size: 54, 16 ] } + label "[2] 1.7" { layout [ size: 54, 16 ] } + label "[3] 5.0" { layout [ size: 54, 16 ] } + label "[4] 4.0" { layout [ size: 54, 16 ] } + label "[5] 3.0" { layout [ size: 54, 16 ] } + label "[6] 2.6" { layout [ size: 54, 16 ] } + } + + edge audObj -> audStudentsList { label "students" } + edge prog1Obj -> prog1StudentsList { label "students" } + + edge subjectListList -> audObj { label "0" } + edge subjectListList -> prog1Obj { label "1" } + + edge audStudentsList -> timObj { label "0" } + edge audStudentsList -> karlObj { label "1" } + edge audStudentsList -> tomObj { label "2" } + edge audStudentsList -> karl2Obj { label "3" } + edge audStudentsList -> mariamObj { label "4" } + edge audStudentsList -> hectorObj { label "5" } + edge audStudentsList -> quentinObj { label "6" } + edge audStudentsList -> fabioObj { label "7" } + edge audStudentsList -> jonasObj { label "8" } + edge audStudentsList -> laraObj { label "9" } + edge audStudentsList -> gerdObj { label "10" } + edge audStudentsList -> joergObj { label "11" } + + edge prog1StudentsList -> laraObj { label "0" } + edge prog1StudentsList -> quentinObj { label "1" } + edge prog1StudentsList -> jonasObj { label "2" } + edge prog1StudentsList -> fabioObj { label "3" } + edge prog1StudentsList -> hectorObj { label "4" } + edge prog1StudentsList -> gerdObj { label "5" } +} + +// Cross-hierarchy edges: declared at the root, the lowest common ancestor +// of "frames" and "objects", using qualified references. + +edge frames.moduleFrame.tim -> objects.timObj +edge frames.moduleFrame.karl -> objects.karlObj +edge frames.moduleFrame.tom -> objects.tomObj +edge frames.moduleFrame.karl2 -> objects.karl2Obj +edge frames.moduleFrame.mariam -> objects.mariamObj +edge frames.moduleFrame.hector -> objects.hectorObj +edge frames.moduleFrame.quentin -> objects.quentinObj +edge frames.moduleFrame.fabio -> objects.fabioObj +edge frames.moduleFrame.jonas -> objects.jonasObj +edge frames.moduleFrame.lara -> objects.laraObj +edge frames.moduleFrame.gerd -> objects.gerdObj +edge frames.moduleFrame.joerg -> objects.joergObj +edge frames.moduleFrame.aud -> objects.audObj +edge frames.moduleFrame.prog1 -> objects.prog1Obj +edge frames.moduleFrame.subjectList -> objects.subjectListList + +edge frames.createGradeListFrame.subject -> objects.prog1Obj +edge frames.createGradeListFrame.result -> objects.resultList +edge frames.createGradeListFrame.student -> objects.gerdObj diff --git a/elk-task/example.py b/elk-task/example.py new file mode 100644 index 00000000..4f0281a8 --- /dev/null +++ b/elk-task/example.py @@ -0,0 +1,38 @@ +from wypp import * + +@record +class Student: + name: str + grade: float + +@record +class Subject: + name: str + students: list[Student] + + +tim = Student('Tim', 1.0) +karl = Student('karl', 2.0) +tom = Student('Tom', 1.3) +karl2 = Student('karl', 2.6) +mariam = Student('Mariam', 1.0) +hector = Student('Hector', 3.0) +quentin = Student('Quentin', 1.7) +fabio = Student('Fabio', 4.0) +jonas = Student('Jonas', 5.0) +lara = Student('Lara', 3.3) +gerd = Student('Gerd', 2.6) +joerg = Student('Joerg', 2.6) + +aud = Subject('AuD', [tim, karl, tom, karl2, mariam, hector, quentin, fabio, jonas, lara, gerd, joerg]) +prog1 = Subject('Prog1', [lara, quentin, jonas, fabio, hector, gerd]) + +subjectList = [aud, prog1] + +def createGradeList(subject: Subject) -> list[float]: + result = [float] + for student in subject.students: + result.append(student.grade) + return result + +gradeList = createGradeList(prog1) \ No newline at end of file diff --git a/elk-task/veryRoughMockupOfExample.png b/elk-task/veryRoughMockupOfExample.png new file mode 100644 index 0000000000000000000000000000000000000000..e47c6d007145aefa61b0c48b56e639e61807a5a3 GIT binary patch literal 62362 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 Date: Fri, 11 Sep 2026 13:15:03 +0200 Subject: [PATCH 09/20] finished plan (including reachability.ts) --- elk-task/elk-plan.md | 378 ++++++++++++++---- elk-task/example-anonymous.py | 39 ++ elk-task/example-cycles.py | 28 ++ elk-task/example-error.py | 21 + package.json | 3 +- src/programflow-visualization/reachability.ts | 88 ++++ src/test/unit/reachability.test.ts | 249 ++++++++++++ 7 files changed, 717 insertions(+), 89 deletions(-) create mode 100644 elk-task/example-anonymous.py create mode 100644 elk-task/example-cycles.py create mode 100644 elk-task/example-error.py create mode 100644 src/programflow-visualization/reachability.ts create mode 100644 src/test/unit/reachability.test.ts diff --git a/elk-task/elk-plan.md b/elk-task/elk-plan.md index ac4da2a7..1b5be884 100644 --- a/elk-task/elk-plan.md +++ b/elk-task/elk-plan.md @@ -34,10 +34,12 @@ VS Code side changes. `worker-src`, so `worker-src` falls back to `none`. → Use the synchronous bundled build `elkjs/lib/elk.bundled.js` (main thread, no worker). Revisit the worker build only if layout is too slow; that would also need `worker-src blob:;` in the CSP. -- **Bundling.** `localResourceRoots` contains only `out/programflow-visualization/web`, so - elkjs must be bundled *into* `webview.js` by esbuild (`scripts/build-web.mjs`), not - loaded as a separate asset. `elk.bundled.js` is plain JS and bundles fine; elkjs ships - its own type declarations, so no `@types/*` package. +- **Bundling.** `elk.bundled.js` is plain JS and bundles fine into `webview.js` via esbuild + (`scripts/build-web.mjs`); elkjs ships its own type declarations, so no `@types/*` + package. This is a *choice, not a constraint*: `script-src` includes `{{CSP_SOURCE}}` and + `copyStatic()` in `build-web.mjs` already copies assets into `localResourceRoots`, so if + elkjs's size hurts webview startup (measure in §7.1) shipping it as a separate + `