推进 INI 面板 launch manifest compatibility predicate

This commit is contained in:
2026-06-15 07:05:53 +08:00
parent 6b5999930a
commit 01d168e247
8 changed files with 121 additions and 1 deletions

View File

@@ -76,6 +76,7 @@
import {
createIniPanelLauncherLinkViewModel,
createIniPanelShellViewModel,
isSupportedIniPanelLaunchApiManifest,
} from "./ui-shell.js";
const shellViewModel = createIniPanelShellViewModel();
@@ -90,6 +91,7 @@
}
window.linuxCncIniPanelLaunchApi = {
isSupportedLaunchApiManifest: isSupportedIniPanelLaunchApiManifest,
getLaunchApiSchema: () => shellViewModel.launchApiSchema,
getLaunchApiManifest: () => shellViewModel.launchApiManifest,
getLauncherLinks: () => shellViewModel.launcherLinks,

View File

@@ -77,12 +77,23 @@ export function createIniPanelLaunchApiSchema() {
};
}
export function isSupportedIniPanelLaunchApiManifest(manifest, schema = createIniPanelLaunchApiSchema()) {
if (!manifest || typeof manifest !== "object") {
return false;
}
if (manifest.apiName !== schema.apiName || manifest.manifestVersion !== schema.manifestVersion) {
return false;
}
return schema.fields.every((fieldName) => Object.hasOwn(manifest, fieldName));
}
export function createIniPanelLaunchApiManifest(entries = getVisibleIniPanelEntries()) {
const schema = createIniPanelLaunchApiSchema();
return {
apiName: schema.apiName,
manifestVersion: schema.manifestVersion,
methods: [
"isSupportedLaunchApiManifest",
"getLaunchApiSchema",
"getLaunchApiManifest",
"getLauncherLinks",