Files

56 lines
1.8 KiB
JavaScript

import assert from "node:assert/strict";
import { readFile } from "node:fs/promises";
const source = await readFile(new URL("../js/mce_image_source.js", import.meta.url), "utf8");
const moduleUrl = `data:text/javascript;base64,${Buffer.from(source).toString("base64")}`;
const { parseImageWidgetValue, resolveConnectedImageSource } = await import(moduleUrl);
assert.deepEqual(parseImageWidgetValue("portrait.png"), {
filename: "portrait.png",
subfolder: "",
type: "input",
});
assert.deepEqual(parseImageWidgetValue("people/portrait.webp [output]"), {
filename: "portrait.webp",
subfolder: "people",
type: "output",
});
assert.equal(parseImageWidgetValue("model.safetensors"), null);
const loadImage = {
id: 1,
type: "LoadImage",
comfyClass: "LoadImage",
widgets: [{ name: "image", value: "shots/source.jpg" }],
};
const editor = {
inputs: [{ name: "image", link: 10 }],
graph: {
links: { 10: { origin_id: 1 } },
getNodeById: (id) => id === 1 ? loadImage : null,
},
};
assert.deepEqual(resolveConnectedImageSource(editor), {
imageRef: { filename: "source.jpg", subfolder: "shots", type: "input" },
sourceNode: loadImage,
});
const reroute = { id: 3, type: "Reroute", widgets: [], inputs: [{ name: "", link: 11 }] };
editor.graph.links = {
10: { origin_id: 3 },
11: { origin_id: 1 },
};
editor.graph.getNodeById = (id) => ({ 1: loadImage, 3: reroute })[id] || null;
assert.deepEqual(resolveConnectedImageSource(editor)?.imageRef, {
filename: "source.jpg",
subfolder: "shots",
type: "input",
});
const generatedNode = { id: 2, type: "VAEDecode", widgets: [] };
editor.graph.links = { 10: { origin_id: 2 } };
editor.graph.getNodeById = (id) => id === 2 ? generatedNode : null;
assert.equal(resolveConnectedImageSource(editor), null);
console.log("connected image source resolution: OK");