Skip to content

Commit

Permalink
[Reland] Restrict applyToGraph to PrimitiveNode (#2724)
Browse files Browse the repository at this point in the history
  • Loading branch information
huchenlei authored Feb 25, 2025
1 parent 1a7145f commit 156013a
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 11 deletions.
9 changes: 2 additions & 7 deletions src/extensions/core/widgetInputs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { INodeSlot } from '@comfyorg/litegraph'
import { useNodeDefStore } from '@/stores/nodeDefStore'
import { useSettingStore } from '@/stores/settingStore'
import type { InputSpec } from '@/types/apiTypes'
import { isPrimitiveNode } from '@/utils/typeGuardUtil'

import { app } from '../../scripts/app'
import { applyTextReplacements } from '../../scripts/utils'
Expand All @@ -30,10 +31,8 @@ const CONFIG = Symbol()
const GET_CONFIG = Symbol()
const TARGET = Symbol() // Used for reroutes to specify the real target widget

interface PrimitiveNode extends LGraphNode {}

const replacePropertyName = 'Run widget replace on values'
class PrimitiveNode extends LGraphNode {
export class PrimitiveNode extends LGraphNode {
controlValues: any[]
lastType: string
static category: string
Expand Down Expand Up @@ -577,10 +576,6 @@ function isValidCombo(combo: string[], obj: unknown) {
return true
}

function isPrimitiveNode(node: LGraphNode): node is PrimitiveNode {
return node.type === 'PrimitiveNode'
}

export function setWidgetConfig(slot, config, target?: IWidget) {
if (!slot.widget) return
if (config) {
Expand Down
2 changes: 0 additions & 2 deletions src/types/litegraph-augmentation.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,6 @@ declare module '@comfyorg/litegraph' {
convertToNodes?(): LGraphNode[]
recreate?(): Promise<LGraphNode>
refreshComboInNode?(defs: Record<string, ComfyNodeDef>)
/** Used by virtual nodes (primitives) to insert their values into the graph prior to queueing. */
applyToGraph?(extraLinks?: LLink[]): void
/** @deprecated groupNode */
updateLink?(link: LLink): LLink | null
onExecutionStart?(): unknown
Expand Down
4 changes: 2 additions & 2 deletions src/utils/executionUtil.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import type { LGraph } from '@comfyorg/litegraph'
import { LGraphEventMode } from '@comfyorg/litegraph'

import type { ComfyApiWorkflow, ComfyWorkflowJSON } from '@/types/comfyWorkflow'
import { isPrimitiveNode } from '@/utils/typeGuardUtil'

/**
* Converts the current graph workflow for sending to the API.
Expand All @@ -17,8 +18,7 @@ export const graphToPrompt = async (
for (const node of graph.computeExecutionOrder(false)) {
const innerNodes = node.getInnerNodes ? node.getInnerNodes() : [node]
for (const innerNode of innerNodes) {
// Don't serialize frontend only nodes but let them make changes
if (innerNode.isVirtualNode) {
if (isPrimitiveNode(innerNode)) {
innerNode.applyToGraph?.()
}
}
Expand Down
9 changes: 9 additions & 0 deletions src/utils/typeGuardUtil.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { LGraphNode } from '@comfyorg/litegraph'

import type { PrimitiveNode } from '@/extensions/core/widgetInputs'

export function isPrimitiveNode(
node: LGraphNode
): node is PrimitiveNode & LGraphNode {
return node.type === 'PrimitiveNode'
}

0 comments on commit 156013a

Please sign in to comment.