From 51a1691c36ec1e4f8200db4d0f85efb0f6379906 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Fri, 10 Jul 2026 12:33:34 +0100 Subject: [PATCH] Own Electron capture dependency and provider inputs --- README.md | 9 +- package-lock.json | 162 ++++++++++++++++++++++++++++++++ package.json | 3 + scripts/capture-conformance.ps1 | 8 +- 4 files changed, 175 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 865da77..bc2e969 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,8 @@ npm run pack:check npm run capture:conformance ``` -The capture runner uses a consumer-supplied Electron executable and emits -native offscreen-painted PNGs plus `gamecult.eve.runtime_witness.v1` documents -for the generic world fixture and Aetheria. Provider state remains input data; -the runtime owns the window, projection, pixels, and evidence. +The capture runner uses EveElectron's development Electron dependency and emits +native offscreen-painted PNGs plus `gamecult.eve.runtime_witness.v1` documents. +The generic control comes from Eve; the Aetheria case comes from Aetheria's +provider-owned conformance pack. Provider state remains input data; the runtime +owns the window, projection, pixels, and evidence. diff --git a/package-lock.json b/package-lock.json index 3483baa..d41e011 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,9 @@ "name": "@gamecult/eve-electron", "version": "0.1.0", "license": "MPL-2.0", + "devDependencies": { + "electron": "^42.4.1" + }, "peerDependencies": { "electron": ">=30" }, @@ -16,6 +19,165 @@ "optional": true } } + }, + "node_modules/@electron-internal/extract-zip": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@electron-internal/extract-zip/-/extract-zip-1.0.4.tgz", + "integrity": "sha512-Zr1Vs7E9tpCNhZHDAbFVXc2gEVCG9RqPDjrno5+bdgB6LRAuvgyMHJut4NCVyYwtAieapMzc3fiQ3CSTi75ARg==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=22.12.0" + } + }, + "node_modules/@electron/get": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-5.0.0.tgz", + "integrity": "sha512-pjoBpru1KdEtcExBnuHAP1cAc/5faoedw0hzJkL3o4/IJp7HNF1+fbrdxT3gMYRX2oJfvnA/WXeCTVQpYYxyJA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "env-paths": "^3.0.0", + "graceful-fs": "^4.2.11", + "progress": "^2.0.3", + "semver": "^7.6.3", + "sumchecker": "^3.0.1" + }, + "engines": { + "node": ">=22.12.0" + }, + "optionalDependencies": { + "undici": "^7.24.4" + } + }, + "node_modules/@types/node": { + "version": "24.13.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.13.3.tgz", + "integrity": "sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.18.0" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/electron": { + "version": "42.6.1", + "resolved": "https://registry.npmjs.org/electron/-/electron-42.6.1.tgz", + "integrity": "sha512-HR9yiOyl+kZpSAugjOpBNvKpoh1wNpTK4wl6geD9W9Xmo6L6IgEzVB/JKlbEUDdXYeqRaaEhTUSSfyQ/g9iXvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@electron-internal/extract-zip": "^1.0.1", + "@electron/get": "^5.0.0", + "@types/node": "^24.9.0" + }, + "bin": { + "electron": "cli.js", + "install-electron": "install.js" + }, + "engines": { + "node": ">= 22.12.0" + } + }, + "node_modules/env-paths": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz", + "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sumchecker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "debug": "^4.1.0" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/undici": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.28.0.tgz", + "integrity": "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=20.18.1" + } + }, + "node_modules/undici-types": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "dev": true, + "license": "MIT" } } } diff --git a/package.json b/package.json index 86f5b2e..371db6f 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,9 @@ "pack:check": "npm pack --dry-run", "capture:conformance": "powershell -ExecutionPolicy Bypass -File scripts/capture-conformance.ps1" }, + "devDependencies": { + "electron": "^42.4.1" + }, "peerDependencies": { "electron": ">=30" }, diff --git a/scripts/capture-conformance.ps1 b/scripts/capture-conformance.ps1 index e644ec3..5b48eb7 100644 --- a/scripts/capture-conformance.ps1 +++ b/scripts/capture-conformance.ps1 @@ -1,11 +1,13 @@ param( [string] $EveRoot = "E:\Projects\Eve", - [string] $ElectronPath = "E:\Projects\Aetheria\Aetheria.Rts.Web\node_modules\electron\dist\electron.exe", + [string] $AetheriaRoot = "E:\Projects\Aetheria", + [string] $ElectronPath = "node_modules\electron\dist\electron.exe", [string] $OutputRoot = "artifacts\capture" ) $ErrorActionPreference = "Stop" $repoRoot = Split-Path -Parent $PSScriptRoot +$ElectronPath = if ([IO.Path]::IsPathRooted($ElectronPath)) { $ElectronPath } else { Join-Path $repoRoot $ElectronPath } $output = if ([IO.Path]::IsPathRooted($OutputRoot)) { $OutputRoot } else { Join-Path $repoRoot $OutputRoot } $captureApp = Join-Path $repoRoot "capture" if (-not (Test-Path -LiteralPath $ElectronPath)) { throw "Electron executable not found: $ElectronPath" } @@ -19,8 +21,8 @@ $cases = @( }, @{ id = "aetheria-world" - advertisement = Join-Path $EveRoot "web\fixtures\aetheria.provider-advertisement.json" - surface = Join-Path $EveRoot "web\fixtures\aetheria-world-surface.json" + advertisement = Join-Path $AetheriaRoot "conformance\eve\aetheria.provider-advertisement.json" + surface = Join-Path $AetheriaRoot "conformance\eve\aetheria-world-surface.json" surfaceId = "aetheria.daemon.game" } )