|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import { app } from "../../scripts/app.js"; |
|
import { api } from "../../scripts/api.js"; |
|
|
|
class WorkflowMetadataExtension { |
|
constructor() { |
|
this.name = "Comfy.CustomNodesManager.WorkflowMetadata"; |
|
this.installedNodes = {}; |
|
this.comfyCoreVersion = null; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async getInstalledNodes() { |
|
const res = await api.fetchApi("/customnode/installed"); |
|
return await res.json(); |
|
} |
|
|
|
async init() { |
|
this.installedNodes = await this.getInstalledNodes(); |
|
this.comfyCoreVersion = (await api.getSystemStats()).system.comfyui_version; |
|
} |
|
|
|
|
|
|
|
|
|
|
|
nodeCreated(node) { |
|
try { |
|
|
|
if (!node?.constructor?.nodeData?.python_module) return; |
|
|
|
const nodeProperties = (node.properties ??= {}); |
|
const modules = node.constructor.nodeData.python_module.split("."); |
|
const moduleType = modules[0]; |
|
|
|
if (moduleType === "custom_nodes") { |
|
const nodePackageName = modules[1]; |
|
const { cnr_id, aux_id, ver } = |
|
this.installedNodes[nodePackageName] ?? |
|
this.installedNodes[nodePackageName.toLowerCase()] ?? |
|
{}; |
|
|
|
if (cnr_id === "comfy-core") return; |
|
if (cnr_id) nodeProperties.cnr_id = cnr_id; |
|
else nodeProperties.aux_id = aux_id; |
|
if (ver) nodeProperties.ver = ver; |
|
} else if (["nodes", "comfy_extras"].includes(moduleType)) { |
|
nodeProperties.cnr_id = "comfy-core"; |
|
nodeProperties.ver = this.comfyCoreVersion; |
|
} |
|
} catch (e) { |
|
console.error(e); |
|
} |
|
} |
|
} |
|
|
|
app.registerExtension(new WorkflowMetadataExtension()); |
|
|