From 7619e9159b791748b29efadb2bea1ff8df28dbb8 Mon Sep 17 00:00:00 2001 From: Chenlei Hu Date: Wed, 17 Jul 2024 20:57:14 -0400 Subject: [PATCH] Convert pos object to array on parsing (#147) --- src/scripts/defaultGraph.ts | 14 +++++++------- src/types/comfyWorkflow.ts | 2 +- tests-ui/tests/comfyWorkflow.test.ts | 9 ++++++--- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/scripts/defaultGraph.ts b/src/scripts/defaultGraph.ts index 9bda0ff8d..e247219aa 100644 --- a/src/scripts/defaultGraph.ts +++ b/src/scripts/defaultGraph.ts @@ -8,7 +8,7 @@ export const defaultGraph: ComfyWorkflowJSON = { id: 7, type: "CLIPTextEncode", pos: [413, 389], - size: { 0: 425.27801513671875, 1: 180.6060791015625 }, + size: [425.27801513671875, 180.6060791015625], flags: {}, order: 3, mode: 0, @@ -28,7 +28,7 @@ export const defaultGraph: ComfyWorkflowJSON = { id: 6, type: "CLIPTextEncode", pos: [415, 186], - size: { 0: 422.84503173828125, 1: 164.31304931640625 }, + size: [422.84503173828125, 164.31304931640625], flags: {}, order: 2, mode: 0, @@ -50,7 +50,7 @@ export const defaultGraph: ComfyWorkflowJSON = { id: 5, type: "EmptyLatentImage", pos: [473, 609], - size: { 0: 315, 1: 106 }, + size: [315, 106], flags: {}, order: 1, mode: 0, @@ -62,7 +62,7 @@ export const defaultGraph: ComfyWorkflowJSON = { id: 3, type: "KSampler", pos: [863, 186], - size: { 0: 315, 1: 262 }, + size: [315, 262], flags: {}, order: 4, mode: 0, @@ -80,7 +80,7 @@ export const defaultGraph: ComfyWorkflowJSON = { id: 8, type: "VAEDecode", pos: [1209, 188], - size: { 0: 210, 1: 46 }, + size: [210, 46], flags: {}, order: 5, mode: 0, @@ -95,7 +95,7 @@ export const defaultGraph: ComfyWorkflowJSON = { id: 9, type: "SaveImage", pos: [1451, 189], - size: { 0: 210, 1: 26 }, + size: [210, 26], flags: {}, order: 6, mode: 0, @@ -106,7 +106,7 @@ export const defaultGraph: ComfyWorkflowJSON = { id: 4, type: "CheckpointLoaderSimple", pos: [26, 474], - size: { 0: 315, 1: 98 }, + size: [315, 98], flags: {}, order: 0, mode: 0, diff --git a/src/types/comfyWorkflow.ts b/src/types/comfyWorkflow.ts index 9af444ba4..e1b5e20bd 100644 --- a/src/types/comfyWorkflow.ts +++ b/src/types/comfyWorkflow.ts @@ -45,7 +45,7 @@ const zProperties = z .passthrough(); const zVector2 = z.union([ - z.object({ 0: z.number(), 1: z.number() }), + z.object({ 0: z.number(), 1: z.number() }).transform((v) => [v[0], v[1]]), z.tuple([z.number(), z.number()]), ]); diff --git a/tests-ui/tests/comfyWorkflow.test.ts b/tests-ui/tests/comfyWorkflow.test.ts index edf7334d8..f35b8d85d 100644 --- a/tests-ui/tests/comfyWorkflow.test.ts +++ b/tests-ui/tests/comfyWorkflow.test.ts @@ -56,15 +56,18 @@ describe("parseComfyWorkflow", () => { it("workflow.nodes.pos", async () => { const workflow = JSON.parse(JSON.stringify(defaultGraph)); workflow.nodes[0].pos = [1, 2, 3]; - await expect(parseComfyWorkflow(JSON.stringify(workflow))).rejects.toBeTruthy(); + await expect(parseComfyWorkflow(JSON.stringify(workflow))).rejects.toThrow(); workflow.nodes[0].pos = [1, 2]; await expect(parseComfyWorkflow(JSON.stringify(workflow))).resolves.not.toThrow(); + // Should automatically transform the legacy format object to array. workflow.nodes[0].pos = {"0": 3, "1": 4}; - await expect(parseComfyWorkflow(JSON.stringify(workflow))).resolves.not.toThrow(); + let parsedWorkflow = await parseComfyWorkflow(JSON.stringify(workflow)); + expect(parsedWorkflow.nodes[0].pos).toEqual([3, 4]); workflow.nodes[0].pos = {0: 3, 1: 4}; - await expect(parseComfyWorkflow(JSON.stringify(workflow))).resolves.not.toThrow(); + parsedWorkflow = await parseComfyWorkflow(JSON.stringify(workflow)); + expect(parsedWorkflow.nodes[0].pos).toEqual([3, 4]); }); });