Spaces:
Runtime error
Runtime error
| import type { LGraphGroup as TLGraphGroup, LGraphNode as TLGraphNode, IWidget, SerializedLGraphNode, LGraph as TLGraph, LGraphCanvas as TLGraphCanvas, LiteGraph as TLiteGraph } from "./litegraph.js"; | |
| import type {Constructor, SerializedGraph} from './index.js'; | |
| declare global { | |
| const LiteGraph: typeof TLiteGraph; | |
| const LGraph: typeof TLGraph; | |
| const LGraphNode: typeof TLGraphNode; | |
| const LGraphCanvas: typeof TLGraphCanvas; | |
| const LGraphGroup: typeof TLGraphGroup; | |
| } | |
| // @rgthree: Types on ComfyApp as needed. | |
| export interface ComfyApp { | |
| extensions: ComfyExtension[]; | |
| async queuePrompt(number?: number, batchCount = 1): Promise<void>; | |
| graph: TLGraph; | |
| canvas: TLGraphCanvas; | |
| clean() : void; | |
| registerExtension(extension: ComfyExtension): void; | |
| getPreviewFormatParam(): string; | |
| getRandParam(): string; | |
| loadApiJson(apiData: {}, fileName: string): void; | |
| async graphToPrompt(graph?: TLGraph, clean?: boolean): Promise<void>; | |
| // workflow: ComfyWorkflowInstance ??? | |
| async loadGraphData(graphData: {}, clean?: boolean, restore_view?: boolean, workflow?: any|null): Promise<void> | |
| ui: { | |
| settings: { | |
| addSetting(config: {id: string, name: string, type: () => HTMLElement}) : void; | |
| } | |
| } | |
| // Just marking as any for now. | |
| menu?: any; | |
| } | |
| export interface ComfyWidget extends IWidget { | |
| // https://github.com/comfyanonymous/ComfyUI/issues/2193 Changes from SerializedLGraphNode to | |
| // LGraphNode... | |
| serializeValue(nodeType: TLGraphNode, index: number): Promise<TValue>; | |
| afterQueued(): void; | |
| inputEl?: HTMLTextAreaElement; | |
| width: number; | |
| } | |
| export interface ComfyGraphNode extends TLGraphNode { | |
| getExtraMenuOptions: (node: TLGraphNode, options: ContextMenuItem[]) => void; | |
| onExecuted(message: any): void; | |
| } | |
| export interface ComfyNode extends TLGraphNode { | |
| comfyClass: string; | |
| } | |
| // @rgthree | |
| export interface ComfyNodeConstructor extends Constructor<ComfyNode> { | |
| static title: string; | |
| static type?: string; | |
| static comfyClass: string; | |
| } | |
| export type NodeMode = 0|1|2|3|4|undefined; | |
| export interface ComfyExtension { | |
| /** | |
| * The name of the extension | |
| */ | |
| name: string; | |
| /** | |
| * Allows any initialisation, e.g. loading resources. Called after the canvas is created but before nodes are added | |
| * @param app The ComfyUI app instance | |
| */ | |
| init?(app: ComfyApp): Promise<void>; | |
| /** | |
| * Allows any additonal setup, called after the application is fully set up and running | |
| * @param app The ComfyUI app instance | |
| */ | |
| setup?(app: ComfyApp): Promise<void>; | |
| /** | |
| * Called before nodes are registered with the graph | |
| * @param defs The collection of node definitions, add custom ones or edit existing ones | |
| * @param app The ComfyUI app instance | |
| */ | |
| addCustomNodeDefs?(defs: Record<string, ComfyObjectInfo>, app: ComfyApp): Promise<void>; | |
| /** | |
| * Allows the extension to add custom widgets | |
| * @param app The ComfyUI app instance | |
| * @returns An array of {[widget name]: widget data} | |
| */ | |
| getCustomWidgets?( | |
| app: ComfyApp | |
| ): Promise< | |
| Record<string, (node, inputName, inputData, app) => { widget?: IWidget; minWidth?: number; minHeight?: number }> | |
| >; | |
| /** | |
| * Allows the extension to add additional handling to the node before it is registered with LGraph | |
| * @rgthree changed nodeType from `typeof LGraphNode` to `ComfyNodeConstructor` | |
| * @param nodeType The node class (not an instance) | |
| * @param nodeData The original node object info config object | |
| * @param app The ComfyUI app instance | |
| */ | |
| beforeRegisterNodeDef?(nodeType: ComfyNodeConstructor, nodeData: ComfyObjectInfo, app: ComfyApp): Promise<void>; | |
| /** | |
| * Allows the extension to register additional nodes with LGraph after standard nodes are added | |
| * @param app The ComfyUI app instance | |
| */ | |
| // @rgthree - add void for non async | |
| registerCustomNodes?(app: ComfyApp): void|Promise<void>; | |
| /** | |
| * Allows the extension to modify a node that has been reloaded onto the graph. | |
| * If you break something in the backend and want to patch workflows in the frontend | |
| * This is the place to do this | |
| * @param node The node that has been loaded | |
| * @param app The ComfyUI app instance | |
| */ | |
| loadedGraphNode?(node: TLGraphNode, app: ComfyApp); | |
| /** | |
| * Allows the extension to run code after the constructor of the node | |
| * @param node The node that has been created | |
| * @param app The ComfyUI app instance | |
| */ | |
| nodeCreated?(node: TLGraphNode, app: ComfyApp); | |
| } | |
| export type ComfyObjectInfo = { | |
| name: string; | |
| display_name?: string; | |
| description?: string; | |
| category: string; | |
| input?: { | |
| required?: Record<string, ComfyObjectInfoConfig>; | |
| optional?: Record<string, ComfyObjectInfoConfig>; | |
| hidden?: Record<string, ComfyObjectInfoConfig>; | |
| }; | |
| output?: string[]; | |
| output_name: string[]; | |
| // @rgthree | |
| output_node?: boolean; | |
| }; | |
| export type ComfyObjectInfoConfig = [string | any[]] | [string | any[], any]; | |
| // @rgthree | |
| type ComfyApiInputLink = [ | |
| /** The id string of the connected node. */ | |
| string, | |
| /** The output index. */ | |
| number, | |
| ] | |
| // @rgthree | |
| export type ComfyApiFormatNode = { | |
| "inputs": { | |
| [input_name: string]: string|number|boolean|ComfyApiInputLink, | |
| }, | |
| "class_type": string, | |
| "_meta": { | |
| "title": string, | |
| } | |
| } | |
| // @rgthree | |
| export type ComfyApiFormat = { | |
| [node_id: string]: ComfyApiFormatNode | |
| } | |
| // @rgthree | |
| export type ComfyApiPrompt = { | |
| workflow: SerializedGraph, | |
| output: ComfyApiFormat, | |
| } | |
| // @rgthree | |
| export type ComfyApiEventDetailStatus = { | |
| exec_info: { | |
| queue_remaining: number; | |
| }; | |
| }; | |
| // @rgthree | |
| export type ComfyApiEventDetailExecutionStart = { | |
| prompt_id: string; | |
| }; | |
| // @rgthree | |
| export type ComfyApiEventDetailExecuting = null | string; | |
| // @rgthree | |
| export type ComfyApiEventDetailProgress = { | |
| node: string; | |
| prompt_id: string; | |
| max: number; | |
| value: number; | |
| }; | |
| // @rgthree | |
| export type ComfyApiEventDetailExecuted = { | |
| node: string; | |
| prompt_id: string; | |
| output: any; | |
| }; | |
| // @rgthree | |
| export type ComfyApiEventDetailCached = { | |
| nodes: string[]; | |
| prompt_id: string; | |
| }; | |
| // @rgthree | |
| export type ComfyApiEventDetailExecuted = { | |
| prompt_id: string; | |
| node: string; | |
| output: any; | |
| }; | |
| // @rgthree | |
| export type ComfyApiEventDetailError = { | |
| prompt_id: string; | |
| exception_type: string; | |
| exception_message: string; | |
| node_id: string; | |
| node_type: string; | |
| node_id: string; | |
| traceback: string; | |
| executed: any[]; | |
| current_inputs: {[key: string]: (number[]|string[])}; | |
| current_outputs: {[key: string]: (number[]|string[])}; | |
| } | |