diff --git a/src/extensions/core/widgetInputs.ts b/src/extensions/core/widgetInputs.ts index 40aef8a56a6..889cb4cbe1c 100644 --- a/src/extensions/core/widgetInputs.ts +++ b/src/extensions/core/widgetInputs.ts @@ -110,7 +110,7 @@ export class PrimitiveNode extends LGraphNode { for (let i = 0; i < this.widgets_values.length; i++) { const w = this.widgets[i] if (w) { - w.value = this.widgets_values[i] as any + w.value = this.widgets_values[i] } } } diff --git a/src/platform/cloud/onboarding/auth.ts b/src/platform/cloud/onboarding/auth.ts index 88399d25106..e5d148303f7 100644 --- a/src/platform/cloud/onboarding/auth.ts +++ b/src/platform/cloud/onboarding/auth.ts @@ -18,9 +18,9 @@ function captureApiError( errorType: 'http_error' | 'network_error', httpStatus?: number, operation?: string, - extraContext?: Record + extraContext?: Record ) { - const tags: Record = { + const tags: Record = { api_endpoint: endpoint, error_type: errorType } @@ -33,7 +33,7 @@ function captureApiError( tags.operation = operation } - const sentryOptions: any = { + const sentryOptions: Sentry.ExclusiveEventHintOrCaptureContext = { tags, extra: extraContext ? { ...extraContext } : undefined } diff --git a/src/platform/telemetry/providers/cloud/MixpanelTelemetryProvider.ts b/src/platform/telemetry/providers/cloud/MixpanelTelemetryProvider.ts index 6f8c0ccbb6a..c512d701bfb 100644 --- a/src/platform/telemetry/providers/cloud/MixpanelTelemetryProvider.ts +++ b/src/platform/telemetry/providers/cloud/MixpanelTelemetryProvider.ts @@ -8,6 +8,7 @@ import { startTopupTracking as startTopupUtil } from '@/platform/telemetry/topupTracker' import { useWorkflowStore } from '@/platform/workflow/management/stores/workflowStore' +import type { AuditLog } from '@/services/customerEventsService' import { useWorkflowTemplatesStore } from '@/platform/workflow/templates/repositories/workflowTemplatesStore' import { app } from '@/scripts/app' import { useNodeDefStore } from '@/stores/nodeDefStore' @@ -261,7 +262,7 @@ export class MixpanelTelemetryProvider implements TelemetryProvider { startTopupUtil() } - checkForCompletedTopup(events: any[] | undefined | null): boolean { + checkForCompletedTopup(events: AuditLog[] | undefined | null): boolean { return checkTopupUtil(events) } diff --git a/src/platform/workflow/management/stores/workflowStore.ts b/src/platform/workflow/management/stores/workflowStore.ts index 364f952bb88..25bd68b021d 100644 --- a/src/platform/workflow/management/stores/workflowStore.ts +++ b/src/platform/workflow/management/stores/workflowStore.ts @@ -387,11 +387,12 @@ export const useWorkflowStore = defineStore('workflow', () => { ) as ComfyWorkflowJSON state.id = id - const workflow: ComfyWorkflow = new (existingWorkflow.constructor as any)({ - path, - modified: Date.now(), - size: -1 - }) + const workflow: ComfyWorkflow = + new (existingWorkflow.constructor as typeof ComfyWorkflow)({ + path, + modified: Date.now(), + size: -1 + }) workflow.originalContent = workflow.content = JSON.stringify(state) workflowLookup.value[workflow.path] = workflow return workflow diff --git a/src/scripts/app.ts b/src/scripts/app.ts index 7c174998239..a2f75880a85 100644 --- a/src/scripts/app.ts +++ b/src/scripts/app.ts @@ -123,7 +123,7 @@ type Clipspace = { widgets?: Pick[] | null imgs?: HTMLImageElement[] | null original_imgs?: HTMLImageElement[] | null - images?: any[] | null + images?: ResultItem[] | null selectedIndex: number img_paste_mode: string paintedIndex: number diff --git a/src/services/colorPaletteService.ts b/src/services/colorPaletteService.ts index 25f87195fe0..612d4fab2cc 100644 --- a/src/services/colorPaletteService.ts +++ b/src/services/colorPaletteService.ts @@ -161,22 +161,25 @@ export const useColorPaletteService = () => { } app.canvas._pattern = undefined - for (const [key, value] of Object.entries(palette)) { - if (Object.prototype.hasOwnProperty.call(LiteGraph, key)) { - if (key === 'NODE_DEFAULT_SHAPE' && typeof value === 'string') { - console.warn( - `litegraph_base.NODE_DEFAULT_SHAPE only accepts [${[ - LiteGraph.BOX_SHAPE, - LiteGraph.ROUND_SHAPE, - LiteGraph.CARD_SHAPE - ].join(', ')}] but got ${value}` - ) - LiteGraph.NODE_DEFAULT_SHAPE = LiteGraph.ROUND_SHAPE - } else { - ;(LiteGraph as any)[key] = value - } - } + if (typeof palette.NODE_DEFAULT_SHAPE === 'string') + console.warn( + `litegraph_base.NODE_DEFAULT_SHAPE only accepts [${[ + LiteGraph.BOX_SHAPE, + LiteGraph.ROUND_SHAPE, + LiteGraph.CARD_SHAPE + ].join(', ')}] but got ${palette.NODE_DEFAULT_SHAPE}` + ) + + const default_shape = + typeof palette.NODE_DEFAULT_SHAPE === 'string' + ? LiteGraph.ROUND_SHAPE + : palette.NODE_DEFAULT_SHAPE + const sanitizedPalette: Partial = { + ...palette, + NODE_DEFAULT_SHAPE: default_shape } + + Object.assign(LiteGraph, sanitizedPalette) } /** diff --git a/src/services/customerEventsService.ts b/src/services/customerEventsService.ts index 830b2fc2d10..6980f029d9e 100644 --- a/src/services/customerEventsService.ts +++ b/src/services/customerEventsService.ts @@ -122,7 +122,7 @@ export const useCustomerEventsService = () => { .join(' ') } - function formatJsonValue(value: any) { + function formatJsonValue(value: unknown) { if (typeof value === 'number') { // Format numbers with commas and decimals if needed return value.toLocaleString() diff --git a/src/services/load3dService.ts b/src/services/load3dService.ts index 6e569ab85a0..687fd421a9a 100644 --- a/src/services/load3dService.ts +++ b/src/services/load3dService.ts @@ -7,6 +7,15 @@ import type Load3d from '@/extensions/core/load3d/Load3d' import type { LGraphNode } from '@/lib/litegraph/src/litegraph' import type { NodeId } from '@/platform/workflow/validation/schemas/workflowSchema' +// Type definitions for Load3D node +interface SceneConfig { + backgroundImage?: string +} + +interface Load3DNode extends LGraphNode { + syncLoad3dConfig?: () => void +} + const viewerInstances = new Map() export class Load3dService { @@ -139,7 +148,9 @@ export class Load3dService { .getCurrentBackgroundInfo() if (sourceBackgroundInfo.type === 'image') { const sourceNode = this.getNodeByLoad3d(source) - const sceneConfig = sourceNode?.properties?.['Scene Config'] as any + const sceneConfig = sourceNode?.properties?.['Scene Config'] as + | SceneConfig + | undefined const backgroundPath = sceneConfig?.backgroundImage if (backgroundPath) { await target.setBackgroundImage(backgroundPath) @@ -179,8 +190,9 @@ export class Load3dService { await viewer.applyChanges() // Sync configuration back to the node's UI - if ((node as any).syncLoad3dConfig) { - ;(node as any).syncLoad3dConfig() + const load3DNode = node as Load3DNode + if (load3DNode.syncLoad3dConfig) { + load3DNode.syncLoad3dConfig() } } diff --git a/src/types/litegraph-augmentation.d.ts b/src/types/litegraph-augmentation.d.ts index 0b283b1586c..4912867c219 100644 --- a/src/types/litegraph-augmentation.d.ts +++ b/src/types/litegraph-augmentation.d.ts @@ -5,7 +5,10 @@ import type { LLink, Size } from '@/lib/litegraph/src/litegraph' -import type { IBaseWidget } from '@/lib/litegraph/src/types/widgets' +import type { + IBaseWidget, + TWidgetValue +} from '@/lib/litegraph/src/types/widgets' import type { NodeId } from '@/platform/workflow/validation/schemas/workflowSchema' import type { NodeExecutionOutput } from '@/schemas/apiSchema' import type { ComfyNodeDef as ComfyNodeDefV2 } from '@/schemas/nodeDef/nodeDefSchemaV2' @@ -210,6 +213,6 @@ declare module '@/lib/litegraph/src/litegraph' { * used by litegraph internally. We should remove the dependency on it later. */ interface LGraphNode { - widgets_values?: unknown[] + widgets_values?: TWidgetValue[] } } diff --git a/src/utils/envUtil.ts b/src/utils/envUtil.ts index d31efdec7d2..8e411bf0331 100644 --- a/src/utils/envUtil.ts +++ b/src/utils/envUtil.ts @@ -1,11 +1,16 @@ import type { ElectronAPI } from '@comfyorg/comfyui-electron-types' +// Extend Window interface to include electronAPI +type ElectronWindow = typeof window & { + electronAPI?: ElectronAPI +} + export function isElectron() { return 'electronAPI' in window && window.electronAPI !== undefined } export function electronAPI() { - return (window as any).electronAPI as ElectronAPI + return (window as ElectronWindow).electronAPI as ElectronAPI } export function showNativeSystemMenu() { diff --git a/src/workbench/extensions/manager/stores/comfyManagerStore.ts b/src/workbench/extensions/manager/stores/comfyManagerStore.ts index df6df758a6f..22d01701987 100644 --- a/src/workbench/extensions/manager/stores/comfyManagerStore.ts +++ b/src/workbench/extensions/manager/stores/comfyManagerStore.ts @@ -59,14 +59,18 @@ export const useComfyManagerStore = defineStore('comfyManager', () => { const managerQueue = useManagerQueue(taskHistory, taskQueue, installedPacks) // Listen for task completion events to clean up installing state - useEventListener(app.api, 'cm-task-completed', (event: any) => { - const taskId = event.detail?.ui_id - if (taskId && taskIdToPackId.value.has(taskId)) { - const packId = taskIdToPackId.value.get(taskId)! - installingPacksIds.value.delete(packId) - taskIdToPackId.value.delete(taskId) + useEventListener( + app.api, + 'cm-task-completed', + (event: CustomEvent<{ ui_id?: string }>) => { + const taskId = event.detail?.ui_id + if (taskId && taskIdToPackId.value.has(taskId)) { + const packId = taskIdToPackId.value.get(taskId)! + installingPacksIds.value.delete(packId) + taskIdToPackId.value.delete(taskId) + } } - }) + ) const setStale = () => { isStale.value = true