mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-04-29 18:52:19 +00:00
[refactor] Migrate manager code to DDD structure (#5662)
## Summary Reorganized custom nodes manager functionality from scattered technical layers into a cohesive domain-focused module following [domain-driven design](https://en.wikipedia.org/wiki/Domain-driven_design) principles. ## Changes - **What**: Migrated all manager code from technical layers (`src/components/`, `src/stores/`, etc.) to unified domain structure at `src/workbench/extensions/manager/` - **Breaking**: Import paths changed for all manager-related modules (40+ files updated) ## Review Focus Verify all import path updates are correct and no circular dependencies introduced. Check that [Vue 3 composition API](https://vuejs.org/guide/reusability/composables.html) patterns remain consistent across relocated composables. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-5662-refactor-Migrate-manager-code-to-DDD-structure-2736d73d3650812c87faf6ed0fffb196) by [Unito](https://www.unito.io)
This commit is contained in:
2
.gitattributes
vendored
2
.gitattributes
vendored
@@ -13,4 +13,4 @@
|
|||||||
|
|
||||||
# Generated files
|
# Generated files
|
||||||
src/types/comfyRegistryTypes.ts linguist-generated=true
|
src/types/comfyRegistryTypes.ts linguist-generated=true
|
||||||
src/types/generatedManagerTypes.ts linguist-generated=true
|
src/workbench/extensions/manager/types/generatedManagerTypes.ts linguist-generated=true
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ const config: KnipConfig = {
|
|||||||
],
|
],
|
||||||
ignore: [
|
ignore: [
|
||||||
// Auto generated manager types
|
// Auto generated manager types
|
||||||
'src/types/generatedManagerTypes.ts',
|
'src/workbench/extensions/manager/types/generatedManagerTypes.ts',
|
||||||
'src/types/comfyRegistryTypes.ts',
|
'src/types/comfyRegistryTypes.ts',
|
||||||
// Used by a custom node (that should move off of this)
|
// Used by a custom node (that should move off of this)
|
||||||
'src/scripts/ui/components/splitButton.ts',
|
'src/scripts/ui/components/splitButton.ts',
|
||||||
|
|||||||
@@ -59,14 +59,13 @@ import { useI18n } from 'vue-i18n'
|
|||||||
import NoResultsPlaceholder from '@/components/common/NoResultsPlaceholder.vue'
|
import NoResultsPlaceholder from '@/components/common/NoResultsPlaceholder.vue'
|
||||||
import MissingCoreNodesMessage from '@/components/dialog/content/MissingCoreNodesMessage.vue'
|
import MissingCoreNodesMessage from '@/components/dialog/content/MissingCoreNodesMessage.vue'
|
||||||
import { useMissingNodes } from '@/composables/nodePack/useMissingNodes'
|
import { useMissingNodes } from '@/composables/nodePack/useMissingNodes'
|
||||||
import { useManagerState } from '@/composables/useManagerState'
|
|
||||||
import { useToastStore } from '@/platform/updates/common/toastStore'
|
import { useToastStore } from '@/platform/updates/common/toastStore'
|
||||||
import { useComfyManagerStore } from '@/stores/comfyManagerStore'
|
|
||||||
import { useDialogStore } from '@/stores/dialogStore'
|
import { useDialogStore } from '@/stores/dialogStore'
|
||||||
import type { MissingNodeType } from '@/types/comfy'
|
import type { MissingNodeType } from '@/types/comfy'
|
||||||
import { ManagerTab } from '@/types/comfyManagerTypes'
|
import PackInstallButton from '@/workbench/extensions/manager/components/manager/button/PackInstallButton.vue'
|
||||||
|
import { useManagerState } from '@/workbench/extensions/manager/composables/useManagerState'
|
||||||
import PackInstallButton from './manager/button/PackInstallButton.vue'
|
import { useComfyManagerStore } from '@/workbench/extensions/manager/stores/comfyManagerStore'
|
||||||
|
import { ManagerTab } from '@/workbench/extensions/manager/types/comfyManagerTypes'
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
missingNodeTypes: MissingNodeType[]
|
missingNodeTypes: MissingNodeType[]
|
||||||
|
|||||||
@@ -142,14 +142,14 @@ import { useI18n } from 'vue-i18n'
|
|||||||
|
|
||||||
import PuzzleIcon from '@/components/icons/PuzzleIcon.vue'
|
import PuzzleIcon from '@/components/icons/PuzzleIcon.vue'
|
||||||
import { useConflictAcknowledgment } from '@/composables/useConflictAcknowledgment'
|
import { useConflictAcknowledgment } from '@/composables/useConflictAcknowledgment'
|
||||||
import { useManagerState } from '@/composables/useManagerState'
|
|
||||||
import { useSettingStore } from '@/platform/settings/settingStore'
|
import { useSettingStore } from '@/platform/settings/settingStore'
|
||||||
import type { ReleaseNote } from '@/platform/updates/common/releaseService'
|
import type { ReleaseNote } from '@/platform/updates/common/releaseService'
|
||||||
import { useReleaseStore } from '@/platform/updates/common/releaseStore'
|
import { useReleaseStore } from '@/platform/updates/common/releaseStore'
|
||||||
import { useCommandStore } from '@/stores/commandStore'
|
import { useCommandStore } from '@/stores/commandStore'
|
||||||
import { ManagerTab } from '@/types/comfyManagerTypes'
|
|
||||||
import { electronAPI, isElectron } from '@/utils/envUtil'
|
import { electronAPI, isElectron } from '@/utils/envUtil'
|
||||||
import { formatVersionAnchor } from '@/utils/formatUtil'
|
import { formatVersionAnchor } from '@/utils/formatUtil'
|
||||||
|
import { useManagerState } from '@/workbench/extensions/manager/composables/useManagerState'
|
||||||
|
import { ManagerTab } from '@/workbench/extensions/manager/types/comfyManagerTypes'
|
||||||
|
|
||||||
// Types
|
// Types
|
||||||
interface MenuItem {
|
interface MenuItem {
|
||||||
|
|||||||
@@ -82,7 +82,6 @@ import { useI18n } from 'vue-i18n'
|
|||||||
|
|
||||||
import SubgraphBreadcrumb from '@/components/breadcrumb/SubgraphBreadcrumb.vue'
|
import SubgraphBreadcrumb from '@/components/breadcrumb/SubgraphBreadcrumb.vue'
|
||||||
import SettingDialogHeader from '@/components/dialog/header/SettingDialogHeader.vue'
|
import SettingDialogHeader from '@/components/dialog/header/SettingDialogHeader.vue'
|
||||||
import { useManagerState } from '@/composables/useManagerState'
|
|
||||||
import SettingDialogContent from '@/platform/settings/components/SettingDialogContent.vue'
|
import SettingDialogContent from '@/platform/settings/components/SettingDialogContent.vue'
|
||||||
import { useSettingStore } from '@/platform/settings/settingStore'
|
import { useSettingStore } from '@/platform/settings/settingStore'
|
||||||
import { useColorPaletteService } from '@/services/colorPaletteService'
|
import { useColorPaletteService } from '@/services/colorPaletteService'
|
||||||
@@ -90,10 +89,11 @@ import { useCommandStore } from '@/stores/commandStore'
|
|||||||
import { useDialogStore } from '@/stores/dialogStore'
|
import { useDialogStore } from '@/stores/dialogStore'
|
||||||
import { useMenuItemStore } from '@/stores/menuItemStore'
|
import { useMenuItemStore } from '@/stores/menuItemStore'
|
||||||
import { useColorPaletteStore } from '@/stores/workspace/colorPaletteStore'
|
import { useColorPaletteStore } from '@/stores/workspace/colorPaletteStore'
|
||||||
import { ManagerTab } from '@/types/comfyManagerTypes'
|
|
||||||
import { showNativeSystemMenu } from '@/utils/envUtil'
|
import { showNativeSystemMenu } from '@/utils/envUtil'
|
||||||
import { normalizeI18nKey } from '@/utils/formatUtil'
|
import { normalizeI18nKey } from '@/utils/formatUtil'
|
||||||
import { whileMouseDown } from '@/utils/mouseDownUtil'
|
import { whileMouseDown } from '@/utils/mouseDownUtil'
|
||||||
|
import { useManagerState } from '@/workbench/extensions/manager/composables/useManagerState'
|
||||||
|
import { ManagerTab } from '@/workbench/extensions/manager/types/comfyManagerTypes'
|
||||||
|
|
||||||
const colorPaletteStore = useColorPaletteStore()
|
const colorPaletteStore = useColorPaletteStore()
|
||||||
const colorPaletteService = useColorPaletteService()
|
const colorPaletteService = useColorPaletteService()
|
||||||
|
|||||||
@@ -2,9 +2,9 @@ import { whenever } from '@vueuse/core'
|
|||||||
import { computed, onUnmounted, ref } from 'vue'
|
import { computed, onUnmounted, ref } from 'vue'
|
||||||
|
|
||||||
import { useNodePacks } from '@/composables/nodePack/useNodePacks'
|
import { useNodePacks } from '@/composables/nodePack/useNodePacks'
|
||||||
import { useComfyManagerStore } from '@/stores/comfyManagerStore'
|
|
||||||
import type { UseNodePacksOptions } from '@/types/comfyManagerTypes'
|
|
||||||
import type { components } from '@/types/comfyRegistryTypes'
|
import type { components } from '@/types/comfyRegistryTypes'
|
||||||
|
import { useComfyManagerStore } from '@/workbench/extensions/manager/stores/comfyManagerStore'
|
||||||
|
import type { UseNodePacksOptions } from '@/workbench/extensions/manager/types/comfyManagerTypes'
|
||||||
|
|
||||||
export const useInstalledPacks = (options: UseNodePacksOptions = {}) => {
|
export const useInstalledPacks = (options: UseNodePacksOptions = {}) => {
|
||||||
const comfyManagerStore = useComfyManagerStore()
|
const comfyManagerStore = useComfyManagerStore()
|
||||||
|
|||||||
@@ -5,10 +5,10 @@ import { useWorkflowPacks } from '@/composables/nodePack/useWorkflowPacks'
|
|||||||
import type { NodeProperty } from '@/lib/litegraph/src/LGraphNode'
|
import type { NodeProperty } from '@/lib/litegraph/src/LGraphNode'
|
||||||
import type { LGraphNode } from '@/lib/litegraph/src/litegraph'
|
import type { LGraphNode } from '@/lib/litegraph/src/litegraph'
|
||||||
import { app } from '@/scripts/app'
|
import { app } from '@/scripts/app'
|
||||||
import { useComfyManagerStore } from '@/stores/comfyManagerStore'
|
|
||||||
import { useNodeDefStore } from '@/stores/nodeDefStore'
|
import { useNodeDefStore } from '@/stores/nodeDefStore'
|
||||||
import type { components } from '@/types/comfyRegistryTypes'
|
import type { components } from '@/types/comfyRegistryTypes'
|
||||||
import { collectAllNodes } from '@/utils/graphTraversalUtil'
|
import { collectAllNodes } from '@/utils/graphTraversalUtil'
|
||||||
|
import { useComfyManagerStore } from '@/workbench/extensions/manager/stores/comfyManagerStore'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Composable to find missing NodePacks from workflow
|
* Composable to find missing NodePacks from workflow
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { get, useAsyncState } from '@vueuse/core'
|
|||||||
import type { Ref } from 'vue'
|
import type { Ref } from 'vue'
|
||||||
|
|
||||||
import { useComfyRegistryStore } from '@/stores/comfyRegistryStore'
|
import { useComfyRegistryStore } from '@/stores/comfyRegistryStore'
|
||||||
import type { UseNodePacksOptions } from '@/types/comfyManagerTypes'
|
import type { UseNodePacksOptions } from '@/workbench/extensions/manager/types/comfyManagerTypes'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles fetching node packs from the registry given a list of node pack IDs
|
* Handles fetching node packs from the registry given a list of node pack IDs
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { computed } from 'vue'
|
import { computed } from 'vue'
|
||||||
|
|
||||||
import { useComfyManagerStore } from '@/stores/comfyManagerStore'
|
|
||||||
import type { components } from '@/types/comfyRegistryTypes'
|
import type { components } from '@/types/comfyRegistryTypes'
|
||||||
import { compareVersions, isSemVer } from '@/utils/formatUtil'
|
import { compareVersions, isSemVer } from '@/utils/formatUtil'
|
||||||
|
import { useComfyManagerStore } from '@/workbench/extensions/manager/stores/comfyManagerStore'
|
||||||
|
|
||||||
export const usePackUpdateStatus = (
|
export const usePackUpdateStatus = (
|
||||||
nodePack: components['schemas']['Node']
|
nodePack: components['schemas']['Node']
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { type Ref, computed } from 'vue'
|
import { type Ref, computed } from 'vue'
|
||||||
|
|
||||||
import { useComfyManagerStore } from '@/stores/comfyManagerStore'
|
|
||||||
import type { components } from '@/types/comfyRegistryTypes'
|
import type { components } from '@/types/comfyRegistryTypes'
|
||||||
|
import { useComfyManagerStore } from '@/workbench/extensions/manager/stores/comfyManagerStore'
|
||||||
|
|
||||||
type NodePack = components['schemas']['Node']
|
type NodePack = components['schemas']['Node']
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { computed, onMounted } from 'vue'
|
import { computed, onMounted } from 'vue'
|
||||||
|
|
||||||
import { useInstalledPacks } from '@/composables/nodePack/useInstalledPacks'
|
import { useInstalledPacks } from '@/composables/nodePack/useInstalledPacks'
|
||||||
import { useComfyManagerStore } from '@/stores/comfyManagerStore'
|
|
||||||
import type { components } from '@/types/comfyRegistryTypes'
|
import type { components } from '@/types/comfyRegistryTypes'
|
||||||
import { compareVersions, isSemVer } from '@/utils/formatUtil'
|
import { compareVersions, isSemVer } from '@/utils/formatUtil'
|
||||||
|
import { useComfyManagerStore } from '@/workbench/extensions/manager/stores/comfyManagerStore'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Composable to find NodePacks that have updates available
|
* Composable to find NodePacks that have updates available
|
||||||
|
|||||||
@@ -7,9 +7,9 @@ import { app } from '@/scripts/app'
|
|||||||
import { useComfyRegistryStore } from '@/stores/comfyRegistryStore'
|
import { useComfyRegistryStore } from '@/stores/comfyRegistryStore'
|
||||||
import { useNodeDefStore } from '@/stores/nodeDefStore'
|
import { useNodeDefStore } from '@/stores/nodeDefStore'
|
||||||
import { useSystemStatsStore } from '@/stores/systemStatsStore'
|
import { useSystemStatsStore } from '@/stores/systemStatsStore'
|
||||||
import type { UseNodePacksOptions } from '@/types/comfyManagerTypes'
|
|
||||||
import type { components } from '@/types/comfyRegistryTypes'
|
import type { components } from '@/types/comfyRegistryTypes'
|
||||||
import { collectAllNodes } from '@/utils/graphTraversalUtil'
|
import { collectAllNodes } from '@/utils/graphTraversalUtil'
|
||||||
|
import type { UseNodePacksOptions } from '@/workbench/extensions/manager/types/comfyManagerTypes'
|
||||||
|
|
||||||
type WorkflowPack = {
|
type WorkflowPack = {
|
||||||
id:
|
id:
|
||||||
|
|||||||
@@ -5,9 +5,7 @@ import { computed, getCurrentInstance, onUnmounted, readonly, ref } from 'vue'
|
|||||||
import { useInstalledPacks } from '@/composables/nodePack/useInstalledPacks'
|
import { useInstalledPacks } from '@/composables/nodePack/useInstalledPacks'
|
||||||
import { useConflictAcknowledgment } from '@/composables/useConflictAcknowledgment'
|
import { useConflictAcknowledgment } from '@/composables/useConflictAcknowledgment'
|
||||||
import config from '@/config'
|
import config from '@/config'
|
||||||
import { useComfyManagerService } from '@/services/comfyManagerService'
|
|
||||||
import { useComfyRegistryService } from '@/services/comfyRegistryService'
|
import { useComfyRegistryService } from '@/services/comfyRegistryService'
|
||||||
import { useComfyManagerStore } from '@/stores/comfyManagerStore'
|
|
||||||
import { useConflictDetectionStore } from '@/stores/conflictDetectionStore'
|
import { useConflictDetectionStore } from '@/stores/conflictDetectionStore'
|
||||||
import { useSystemStatsStore } from '@/stores/systemStatsStore'
|
import { useSystemStatsStore } from '@/stores/systemStatsStore'
|
||||||
import type { SystemStats } from '@/types'
|
import type { SystemStats } from '@/types'
|
||||||
@@ -28,6 +26,8 @@ import {
|
|||||||
satisfiesVersion,
|
satisfiesVersion,
|
||||||
utilCheckVersionCompatibility
|
utilCheckVersionCompatibility
|
||||||
} from '@/utils/versionUtil'
|
} from '@/utils/versionUtil'
|
||||||
|
import { useComfyManagerService } from '@/workbench/extensions/manager/services/comfyManagerService'
|
||||||
|
import { useComfyManagerStore } from '@/workbench/extensions/manager/stores/comfyManagerStore'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Composable for conflict detection system.
|
* Composable for conflict detection system.
|
||||||
@@ -641,7 +641,9 @@ export function useConflictDetection() {
|
|||||||
async function initializeConflictDetection(): Promise<void> {
|
async function initializeConflictDetection(): Promise<void> {
|
||||||
try {
|
try {
|
||||||
// Check if manager is new Manager before proceeding
|
// Check if manager is new Manager before proceeding
|
||||||
const { useManagerState } = await import('@/composables/useManagerState')
|
const { useManagerState } = await import(
|
||||||
|
'@/workbench/extensions/manager/composables/useManagerState'
|
||||||
|
)
|
||||||
const managerState = useManagerState()
|
const managerState = useManagerState()
|
||||||
|
|
||||||
if (!managerState.isNewManagerUI.value) {
|
if (!managerState.isNewManagerUI.value) {
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import { useFirebaseAuthActions } from '@/composables/auth/useFirebaseAuthActions'
|
import { useFirebaseAuthActions } from '@/composables/auth/useFirebaseAuthActions'
|
||||||
import { useSelectedLiteGraphItems } from '@/composables/canvas/useSelectedLiteGraphItems'
|
import { useSelectedLiteGraphItems } from '@/composables/canvas/useSelectedLiteGraphItems'
|
||||||
import { ManagerUIState, useManagerState } from '@/composables/useManagerState'
|
|
||||||
import { useModelSelectorDialog } from '@/composables/useModelSelectorDialog'
|
import { useModelSelectorDialog } from '@/composables/useModelSelectorDialog'
|
||||||
import {
|
import {
|
||||||
DEFAULT_DARK_COLOR_PALETTE,
|
DEFAULT_DARK_COLOR_PALETTE,
|
||||||
@@ -41,12 +40,16 @@ import { useBottomPanelStore } from '@/stores/workspace/bottomPanelStore'
|
|||||||
import { useColorPaletteStore } from '@/stores/workspace/colorPaletteStore'
|
import { useColorPaletteStore } from '@/stores/workspace/colorPaletteStore'
|
||||||
import { useSearchBoxStore } from '@/stores/workspace/searchBoxStore'
|
import { useSearchBoxStore } from '@/stores/workspace/searchBoxStore'
|
||||||
import { useWorkspaceStore } from '@/stores/workspaceStore'
|
import { useWorkspaceStore } from '@/stores/workspaceStore'
|
||||||
import { ManagerTab } from '@/types/comfyManagerTypes'
|
|
||||||
import {
|
import {
|
||||||
getAllNonIoNodesInSubgraph,
|
getAllNonIoNodesInSubgraph,
|
||||||
getExecutionIdsForSelectedNodes
|
getExecutionIdsForSelectedNodes
|
||||||
} from '@/utils/graphTraversalUtil'
|
} from '@/utils/graphTraversalUtil'
|
||||||
import { filterOutputNodes } from '@/utils/nodeFilterUtil'
|
import { filterOutputNodes } from '@/utils/nodeFilterUtil'
|
||||||
|
import {
|
||||||
|
ManagerUIState,
|
||||||
|
useManagerState
|
||||||
|
} from '@/workbench/extensions/manager/composables/useManagerState'
|
||||||
|
import { ManagerTab } from '@/workbench/extensions/manager/types/comfyManagerTypes'
|
||||||
|
|
||||||
const moveSelectedNodesVersionAdded = '1.22.2'
|
const moveSelectedNodesVersionAdded = '1.22.2'
|
||||||
|
|
||||||
|
|||||||
@@ -2,9 +2,9 @@ import { type ComputedRef, computed, unref } from 'vue'
|
|||||||
import { useI18n } from 'vue-i18n'
|
import { useI18n } from 'vue-i18n'
|
||||||
|
|
||||||
import { useDialogService } from '@/services/dialogService'
|
import { useDialogService } from '@/services/dialogService'
|
||||||
import { useComfyManagerStore } from '@/stores/comfyManagerStore'
|
|
||||||
import { useConflictDetectionStore } from '@/stores/conflictDetectionStore'
|
import { useConflictDetectionStore } from '@/stores/conflictDetectionStore'
|
||||||
import type { ConflictDetail } from '@/types/conflictDetectionTypes'
|
import type { ConflictDetail } from '@/types/conflictDetectionTypes'
|
||||||
|
import { useComfyManagerStore } from '@/workbench/extensions/manager/stores/comfyManagerStore'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Extracting import failed conflicts from conflict list
|
* Extracting import failed conflicts from conflict list
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ import { computed, ref, watch } from 'vue'
|
|||||||
import { DEFAULT_PAGE_SIZE } from '@/constants/searchConstants'
|
import { DEFAULT_PAGE_SIZE } from '@/constants/searchConstants'
|
||||||
import { useRegistrySearchGateway } from '@/services/gateway/registrySearchGateway'
|
import { useRegistrySearchGateway } from '@/services/gateway/registrySearchGateway'
|
||||||
import type { SearchAttribute } from '@/types/algoliaTypes'
|
import type { SearchAttribute } from '@/types/algoliaTypes'
|
||||||
import { SortableAlgoliaField } from '@/types/comfyManagerTypes'
|
|
||||||
import type { components } from '@/types/comfyRegistryTypes'
|
import type { components } from '@/types/comfyRegistryTypes'
|
||||||
import type { QuerySuggestion, SearchMode } from '@/types/searchServiceTypes'
|
import type { QuerySuggestion, SearchMode } from '@/types/searchServiceTypes'
|
||||||
|
import { SortableAlgoliaField } from '@/workbench/extensions/manager/types/comfyManagerTypes'
|
||||||
|
|
||||||
type RegistryNodePack = components['schemas']['Node']
|
type RegistryNodePack = components['schemas']['Node']
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { onUnmounted, ref } from 'vue'
|
|||||||
|
|
||||||
import type { LogsWsMessage } from '@/schemas/apiSchema'
|
import type { LogsWsMessage } from '@/schemas/apiSchema'
|
||||||
import { api } from '@/scripts/api'
|
import { api } from '@/scripts/api'
|
||||||
import type { components } from '@/types/generatedManagerTypes'
|
import type { components } from '@/workbench/extensions/manager/types/generatedManagerTypes'
|
||||||
|
|
||||||
const LOGS_MESSAGE_TYPE = 'logs'
|
const LOGS_MESSAGE_TYPE = 'logs'
|
||||||
const MANAGER_WS_TASK_DONE_NAME = 'cm-task-completed'
|
const MANAGER_WS_TASK_DONE_NAME = 'cm-task-completed'
|
||||||
|
|||||||
@@ -5,20 +5,12 @@ import ApiNodesSignInContent from '@/components/dialog/content/ApiNodesSignInCon
|
|||||||
import ConfirmationDialogContent from '@/components/dialog/content/ConfirmationDialogContent.vue'
|
import ConfirmationDialogContent from '@/components/dialog/content/ConfirmationDialogContent.vue'
|
||||||
import ErrorDialogContent from '@/components/dialog/content/ErrorDialogContent.vue'
|
import ErrorDialogContent from '@/components/dialog/content/ErrorDialogContent.vue'
|
||||||
import LoadWorkflowWarning from '@/components/dialog/content/LoadWorkflowWarning.vue'
|
import LoadWorkflowWarning from '@/components/dialog/content/LoadWorkflowWarning.vue'
|
||||||
import ManagerProgressDialogContent from '@/components/dialog/content/ManagerProgressDialogContent.vue'
|
|
||||||
import MissingModelsWarning from '@/components/dialog/content/MissingModelsWarning.vue'
|
import MissingModelsWarning from '@/components/dialog/content/MissingModelsWarning.vue'
|
||||||
import PromptDialogContent from '@/components/dialog/content/PromptDialogContent.vue'
|
import PromptDialogContent from '@/components/dialog/content/PromptDialogContent.vue'
|
||||||
import SignInContent from '@/components/dialog/content/SignInContent.vue'
|
import SignInContent from '@/components/dialog/content/SignInContent.vue'
|
||||||
import TopUpCreditsDialogContent from '@/components/dialog/content/TopUpCreditsDialogContent.vue'
|
import TopUpCreditsDialogContent from '@/components/dialog/content/TopUpCreditsDialogContent.vue'
|
||||||
import UpdatePasswordContent from '@/components/dialog/content/UpdatePasswordContent.vue'
|
import UpdatePasswordContent from '@/components/dialog/content/UpdatePasswordContent.vue'
|
||||||
import ManagerDialogContent from '@/components/dialog/content/manager/ManagerDialogContent.vue'
|
|
||||||
import ManagerHeader from '@/components/dialog/content/manager/ManagerHeader.vue'
|
|
||||||
import NodeConflictDialogContent from '@/components/dialog/content/manager/NodeConflictDialogContent.vue'
|
|
||||||
import NodeConflictFooter from '@/components/dialog/content/manager/NodeConflictFooter.vue'
|
|
||||||
import NodeConflictHeader from '@/components/dialog/content/manager/NodeConflictHeader.vue'
|
|
||||||
import ManagerProgressFooter from '@/components/dialog/footer/ManagerProgressFooter.vue'
|
|
||||||
import ComfyOrgHeader from '@/components/dialog/header/ComfyOrgHeader.vue'
|
import ComfyOrgHeader from '@/components/dialog/header/ComfyOrgHeader.vue'
|
||||||
import ManagerProgressHeader from '@/components/dialog/header/ManagerProgressHeader.vue'
|
|
||||||
import SettingDialogHeader from '@/components/dialog/header/SettingDialogHeader.vue'
|
import SettingDialogHeader from '@/components/dialog/header/SettingDialogHeader.vue'
|
||||||
import TemplateWorkflowsContent from '@/components/templates/TemplateWorkflowsContent.vue'
|
import TemplateWorkflowsContent from '@/components/templates/TemplateWorkflowsContent.vue'
|
||||||
import TemplateWorkflowsDialogHeader from '@/components/templates/TemplateWorkflowsDialogHeader.vue'
|
import TemplateWorkflowsDialogHeader from '@/components/templates/TemplateWorkflowsDialogHeader.vue'
|
||||||
@@ -31,6 +23,14 @@ import {
|
|||||||
useDialogStore
|
useDialogStore
|
||||||
} from '@/stores/dialogStore'
|
} from '@/stores/dialogStore'
|
||||||
import type { ConflictDetectionResult } from '@/types/conflictDetectionTypes'
|
import type { ConflictDetectionResult } from '@/types/conflictDetectionTypes'
|
||||||
|
import ManagerProgressDialogContent from '@/workbench/extensions/manager/components/ManagerProgressDialogContent.vue'
|
||||||
|
import ManagerProgressFooter from '@/workbench/extensions/manager/components/ManagerProgressFooter.vue'
|
||||||
|
import ManagerProgressHeader from '@/workbench/extensions/manager/components/ManagerProgressHeader.vue'
|
||||||
|
import ManagerDialogContent from '@/workbench/extensions/manager/components/manager/ManagerDialogContent.vue'
|
||||||
|
import ManagerHeader from '@/workbench/extensions/manager/components/manager/ManagerHeader.vue'
|
||||||
|
import NodeConflictDialogContent from '@/workbench/extensions/manager/components/manager/NodeConflictDialogContent.vue'
|
||||||
|
import NodeConflictFooter from '@/workbench/extensions/manager/components/manager/NodeConflictFooter.vue'
|
||||||
|
import NodeConflictHeader from '@/workbench/extensions/manager/components/manager/NodeConflictHeader.vue'
|
||||||
|
|
||||||
export type ConfirmationDialogType =
|
export type ConfirmationDialogType =
|
||||||
| 'default'
|
| 'default'
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ import type {
|
|||||||
SearchAttribute,
|
SearchAttribute,
|
||||||
SearchNodePacksParams
|
SearchNodePacksParams
|
||||||
} from '@/types/algoliaTypes'
|
} from '@/types/algoliaTypes'
|
||||||
import { SortableAlgoliaField } from '@/types/comfyManagerTypes'
|
|
||||||
import type { components } from '@/types/comfyRegistryTypes'
|
import type { components } from '@/types/comfyRegistryTypes'
|
||||||
import type {
|
import type {
|
||||||
NodePackSearchProvider,
|
NodePackSearchProvider,
|
||||||
@@ -24,6 +23,7 @@ import type {
|
|||||||
SortableField
|
SortableField
|
||||||
} from '@/types/searchServiceTypes'
|
} from '@/types/searchServiceTypes'
|
||||||
import { paramsToCacheKey } from '@/utils/formatUtil'
|
import { paramsToCacheKey } from '@/utils/formatUtil'
|
||||||
|
import { SortableAlgoliaField } from '@/workbench/extensions/manager/types/comfyManagerTypes'
|
||||||
|
|
||||||
type RegistryNodePack = components['schemas']['Node']
|
type RegistryNodePack = components['schemas']['Node']
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ const defaultMockTaskLogs = [
|
|||||||
{ taskName: 'Task 2', logs: ['Log 3', 'Log 4'] }
|
{ taskName: 'Task 2', logs: ['Log 3', 'Log 4'] }
|
||||||
]
|
]
|
||||||
|
|
||||||
vi.mock('@/stores/comfyManagerStore', () => ({
|
vi.mock('@/workbench/extensions/manager/stores/comfyManagerStore', () => ({
|
||||||
useComfyManagerStore: vi.fn(() => ({
|
useComfyManagerStore: vi.fn(() => ({
|
||||||
taskLogs: [...defaultMockTaskLogs],
|
taskLogs: [...defaultMockTaskLogs],
|
||||||
succeededTasksLogs: [...defaultMockTaskLogs],
|
succeededTasksLogs: [...defaultMockTaskLogs],
|
||||||
@@ -88,7 +88,7 @@ import { computed, onBeforeUnmount, onMounted, ref } from 'vue'
|
|||||||
import {
|
import {
|
||||||
useComfyManagerStore,
|
useComfyManagerStore,
|
||||||
useManagerProgressDialogStore
|
useManagerProgressDialogStore
|
||||||
} from '@/stores/comfyManagerStore'
|
} from '@/workbench/extensions/manager/stores/comfyManagerStore'
|
||||||
|
|
||||||
const comfyManagerStore = useComfyManagerStore()
|
const comfyManagerStore = useComfyManagerStore()
|
||||||
const progressDialogContent = useManagerProgressDialogStore()
|
const progressDialogContent = useManagerProgressDialogStore()
|
||||||
@@ -78,13 +78,13 @@ import { useConflictDetection } from '@/composables/useConflictDetection'
|
|||||||
import { useSettingStore } from '@/platform/settings/settingStore'
|
import { useSettingStore } from '@/platform/settings/settingStore'
|
||||||
import { useWorkflowService } from '@/platform/workflow/core/services/workflowService'
|
import { useWorkflowService } from '@/platform/workflow/core/services/workflowService'
|
||||||
import { api } from '@/scripts/api'
|
import { api } from '@/scripts/api'
|
||||||
import { useComfyManagerService } from '@/services/comfyManagerService'
|
import { useCommandStore } from '@/stores/commandStore'
|
||||||
|
import { useDialogStore } from '@/stores/dialogStore'
|
||||||
|
import { useComfyManagerService } from '@/workbench/extensions/manager/services/comfyManagerService'
|
||||||
import {
|
import {
|
||||||
useComfyManagerStore,
|
useComfyManagerStore,
|
||||||
useManagerProgressDialogStore
|
useManagerProgressDialogStore
|
||||||
} from '@/stores/comfyManagerStore'
|
} from '@/workbench/extensions/manager/stores/comfyManagerStore'
|
||||||
import { useCommandStore } from '@/stores/commandStore'
|
|
||||||
import { useDialogStore } from '@/stores/dialogStore'
|
|
||||||
|
|
||||||
const { t } = useI18n()
|
const { t } = useI18n()
|
||||||
const dialogStore = useDialogStore()
|
const dialogStore = useDialogStore()
|
||||||
@@ -24,7 +24,7 @@ import { useI18n } from 'vue-i18n'
|
|||||||
import {
|
import {
|
||||||
useComfyManagerStore,
|
useComfyManagerStore,
|
||||||
useManagerProgressDialogStore
|
useManagerProgressDialogStore
|
||||||
} from '@/stores/comfyManagerStore'
|
} from '@/workbench/extensions/manager/stores/comfyManagerStore'
|
||||||
|
|
||||||
const progressDialogContent = useManagerProgressDialogStore()
|
const progressDialogContent = useManagerProgressDialogStore()
|
||||||
const comfyManagerStore = useComfyManagerStore()
|
const comfyManagerStore = useComfyManagerStore()
|
||||||
@@ -143,24 +143,24 @@ import IconButton from '@/components/button/IconButton.vue'
|
|||||||
import ContentDivider from '@/components/common/ContentDivider.vue'
|
import ContentDivider from '@/components/common/ContentDivider.vue'
|
||||||
import NoResultsPlaceholder from '@/components/common/NoResultsPlaceholder.vue'
|
import NoResultsPlaceholder from '@/components/common/NoResultsPlaceholder.vue'
|
||||||
import VirtualGrid from '@/components/common/VirtualGrid.vue'
|
import VirtualGrid from '@/components/common/VirtualGrid.vue'
|
||||||
import ManagerNavSidebar from '@/components/dialog/content/manager/ManagerNavSidebar.vue'
|
|
||||||
import InfoPanel from '@/components/dialog/content/manager/infoPanel/InfoPanel.vue'
|
|
||||||
import InfoPanelMultiItem from '@/components/dialog/content/manager/infoPanel/InfoPanelMultiItem.vue'
|
|
||||||
import PackCard from '@/components/dialog/content/manager/packCard/PackCard.vue'
|
|
||||||
import RegistrySearchBar from '@/components/dialog/content/manager/registrySearchBar/RegistrySearchBar.vue'
|
|
||||||
import GridSkeleton from '@/components/dialog/content/manager/skeleton/GridSkeleton.vue'
|
|
||||||
import { useResponsiveCollapse } from '@/composables/element/useResponsiveCollapse'
|
import { useResponsiveCollapse } from '@/composables/element/useResponsiveCollapse'
|
||||||
import { useManagerStatePersistence } from '@/composables/manager/useManagerStatePersistence'
|
|
||||||
import { useInstalledPacks } from '@/composables/nodePack/useInstalledPacks'
|
import { useInstalledPacks } from '@/composables/nodePack/useInstalledPacks'
|
||||||
import { usePackUpdateStatus } from '@/composables/nodePack/usePackUpdateStatus'
|
import { usePackUpdateStatus } from '@/composables/nodePack/usePackUpdateStatus'
|
||||||
import { useWorkflowPacks } from '@/composables/nodePack/useWorkflowPacks'
|
import { useWorkflowPacks } from '@/composables/nodePack/useWorkflowPacks'
|
||||||
import { useConflictAcknowledgment } from '@/composables/useConflictAcknowledgment'
|
import { useConflictAcknowledgment } from '@/composables/useConflictAcknowledgment'
|
||||||
import { useRegistrySearch } from '@/composables/useRegistrySearch'
|
import { useRegistrySearch } from '@/composables/useRegistrySearch'
|
||||||
import { useComfyManagerStore } from '@/stores/comfyManagerStore'
|
|
||||||
import { useComfyRegistryStore } from '@/stores/comfyRegistryStore'
|
import { useComfyRegistryStore } from '@/stores/comfyRegistryStore'
|
||||||
import type { TabItem } from '@/types/comfyManagerTypes'
|
|
||||||
import { ManagerTab } from '@/types/comfyManagerTypes'
|
|
||||||
import type { components } from '@/types/comfyRegistryTypes'
|
import type { components } from '@/types/comfyRegistryTypes'
|
||||||
|
import ManagerNavSidebar from '@/workbench/extensions/manager/components/manager/ManagerNavSidebar.vue'
|
||||||
|
import InfoPanel from '@/workbench/extensions/manager/components/manager/infoPanel/InfoPanel.vue'
|
||||||
|
import InfoPanelMultiItem from '@/workbench/extensions/manager/components/manager/infoPanel/InfoPanelMultiItem.vue'
|
||||||
|
import PackCard from '@/workbench/extensions/manager/components/manager/packCard/PackCard.vue'
|
||||||
|
import RegistrySearchBar from '@/workbench/extensions/manager/components/manager/registrySearchBar/RegistrySearchBar.vue'
|
||||||
|
import GridSkeleton from '@/workbench/extensions/manager/components/manager/skeleton/GridSkeleton.vue'
|
||||||
|
import { useManagerStatePersistence } from '@/workbench/extensions/manager/composables/useManagerStatePersistence'
|
||||||
|
import { useComfyManagerStore } from '@/workbench/extensions/manager/stores/comfyManagerStore'
|
||||||
|
import type { TabItem } from '@/workbench/extensions/manager/types/comfyManagerTypes'
|
||||||
|
import { ManagerTab } from '@/workbench/extensions/manager/types/comfyManagerTypes'
|
||||||
|
|
||||||
const { initialTab } = defineProps<{
|
const { initialTab } = defineProps<{
|
||||||
initialTab?: ManagerTab
|
initialTab?: ManagerTab
|
||||||
@@ -32,7 +32,7 @@ import Listbox from 'primevue/listbox'
|
|||||||
import ScrollPanel from 'primevue/scrollpanel'
|
import ScrollPanel from 'primevue/scrollpanel'
|
||||||
|
|
||||||
import ContentDivider from '@/components/common/ContentDivider.vue'
|
import ContentDivider from '@/components/common/ContentDivider.vue'
|
||||||
import type { TabItem } from '@/types/comfyManagerTypes'
|
import type { TabItem } from '@/workbench/extensions/manager/types/comfyManagerTypes'
|
||||||
|
|
||||||
defineProps<{
|
defineProps<{
|
||||||
tabs: TabItem[]
|
tabs: TabItem[]
|
||||||
@@ -35,7 +35,7 @@ const mockInstalledPacks = {
|
|||||||
|
|
||||||
const mockIsPackEnabled = vi.fn(() => true)
|
const mockIsPackEnabled = vi.fn(() => true)
|
||||||
|
|
||||||
vi.mock('@/stores/comfyManagerStore', () => ({
|
vi.mock('@/workbench/extensions/manager/stores/comfyManagerStore', () => ({
|
||||||
useComfyManagerStore: vi.fn(() => ({
|
useComfyManagerStore: vi.fn(() => ({
|
||||||
installedPacks: mockInstalledPacks,
|
installedPacks: mockInstalledPacks,
|
||||||
isPackInstalled: (id: string) =>
|
isPackInstalled: (id: string) =>
|
||||||
@@ -45,11 +45,11 @@
|
|||||||
import Popover from 'primevue/popover'
|
import Popover from 'primevue/popover'
|
||||||
import { computed, ref, watch } from 'vue'
|
import { computed, ref, watch } from 'vue'
|
||||||
|
|
||||||
import PackVersionSelectorPopover from '@/components/dialog/content/manager/PackVersionSelectorPopover.vue'
|
|
||||||
import { usePackUpdateStatus } from '@/composables/nodePack/usePackUpdateStatus'
|
import { usePackUpdateStatus } from '@/composables/nodePack/usePackUpdateStatus'
|
||||||
import { useComfyManagerStore } from '@/stores/comfyManagerStore'
|
|
||||||
import type { components } from '@/types/comfyRegistryTypes'
|
import type { components } from '@/types/comfyRegistryTypes'
|
||||||
import { isSemVer } from '@/utils/formatUtil'
|
import { isSemVer } from '@/utils/formatUtil'
|
||||||
|
import PackVersionSelectorPopover from '@/workbench/extensions/manager/components/manager/PackVersionSelectorPopover.vue'
|
||||||
|
import { useComfyManagerStore } from '@/workbench/extensions/manager/stores/comfyManagerStore'
|
||||||
|
|
||||||
const TRUNCATED_HASH_LENGTH = 7
|
const TRUNCATED_HASH_LENGTH = 7
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@ vi.mock('@/services/comfyRegistryService', () => ({
|
|||||||
}))
|
}))
|
||||||
|
|
||||||
// Mock the manager store
|
// Mock the manager store
|
||||||
vi.mock('@/stores/comfyManagerStore', () => ({
|
vi.mock('@/workbench/extensions/manager/stores/comfyManagerStore', () => ({
|
||||||
useComfyManagerStore: vi.fn(() => ({
|
useComfyManagerStore: vi.fn(() => ({
|
||||||
installPack: {
|
installPack: {
|
||||||
call: mockInstallPack,
|
call: mockInstallPack,
|
||||||
@@ -92,11 +92,11 @@ import NoResultsPlaceholder from '@/components/common/NoResultsPlaceholder.vue'
|
|||||||
import VerifiedIcon from '@/components/icons/VerifiedIcon.vue'
|
import VerifiedIcon from '@/components/icons/VerifiedIcon.vue'
|
||||||
import { useConflictDetection } from '@/composables/useConflictDetection'
|
import { useConflictDetection } from '@/composables/useConflictDetection'
|
||||||
import { useComfyRegistryService } from '@/services/comfyRegistryService'
|
import { useComfyRegistryService } from '@/services/comfyRegistryService'
|
||||||
import { useComfyManagerStore } from '@/stores/comfyManagerStore'
|
|
||||||
import type { components } from '@/types/comfyRegistryTypes'
|
import type { components } from '@/types/comfyRegistryTypes'
|
||||||
import type { components as ManagerComponents } from '@/types/generatedManagerTypes'
|
|
||||||
import { getJoinedConflictMessages } from '@/utils/conflictMessageUtil'
|
import { getJoinedConflictMessages } from '@/utils/conflictMessageUtil'
|
||||||
import { isSemVer } from '@/utils/formatUtil'
|
import { isSemVer } from '@/utils/formatUtil'
|
||||||
|
import { useComfyManagerStore } from '@/workbench/extensions/manager/stores/comfyManagerStore'
|
||||||
|
import type { components as ManagerComponents } from '@/workbench/extensions/manager/types/generatedManagerTypes'
|
||||||
|
|
||||||
type ManagerChannel = ManagerComponents['schemas']['ManagerChannel']
|
type ManagerChannel = ManagerComponents['schemas']['ManagerChannel']
|
||||||
type ManagerDatabaseSource =
|
type ManagerDatabaseSource =
|
||||||
@@ -8,7 +8,7 @@ import { nextTick } from 'vue'
|
|||||||
import { createI18n } from 'vue-i18n'
|
import { createI18n } from 'vue-i18n'
|
||||||
|
|
||||||
import enMessages from '@/locales/en/main.json' with { type: 'json' }
|
import enMessages from '@/locales/en/main.json' with { type: 'json' }
|
||||||
import { useComfyManagerStore } from '@/stores/comfyManagerStore'
|
import { useComfyManagerStore } from '@/workbench/extensions/manager/stores/comfyManagerStore'
|
||||||
|
|
||||||
import PackEnableToggle from './PackEnableToggle.vue'
|
import PackEnableToggle from './PackEnableToggle.vue'
|
||||||
|
|
||||||
@@ -33,7 +33,7 @@ const mockNodePack = {
|
|||||||
const mockIsPackEnabled = vi.fn()
|
const mockIsPackEnabled = vi.fn()
|
||||||
const mockEnablePack = { call: vi.fn().mockResolvedValue(undefined) }
|
const mockEnablePack = { call: vi.fn().mockResolvedValue(undefined) }
|
||||||
const mockDisablePack = vi.fn().mockResolvedValue(undefined)
|
const mockDisablePack = vi.fn().mockResolvedValue(undefined)
|
||||||
vi.mock('@/stores/comfyManagerStore', () => ({
|
vi.mock('@/workbench/extensions/manager/stores/comfyManagerStore', () => ({
|
||||||
useComfyManagerStore: vi.fn(() => ({
|
useComfyManagerStore: vi.fn(() => ({
|
||||||
isPackEnabled: mockIsPackEnabled,
|
isPackEnabled: mockIsPackEnabled,
|
||||||
enablePack: mockEnablePack,
|
enablePack: mockEnablePack,
|
||||||
@@ -36,10 +36,10 @@ import { useI18n } from 'vue-i18n'
|
|||||||
|
|
||||||
import { useConflictAcknowledgment } from '@/composables/useConflictAcknowledgment'
|
import { useConflictAcknowledgment } from '@/composables/useConflictAcknowledgment'
|
||||||
import { useDialogService } from '@/services/dialogService'
|
import { useDialogService } from '@/services/dialogService'
|
||||||
import { useComfyManagerStore } from '@/stores/comfyManagerStore'
|
|
||||||
import { useConflictDetectionStore } from '@/stores/conflictDetectionStore'
|
import { useConflictDetectionStore } from '@/stores/conflictDetectionStore'
|
||||||
import type { components } from '@/types/comfyRegistryTypes'
|
import type { components } from '@/types/comfyRegistryTypes'
|
||||||
import type { components as ManagerComponents } from '@/types/generatedManagerTypes'
|
import { useComfyManagerStore } from '@/workbench/extensions/manager/stores/comfyManagerStore'
|
||||||
|
import type { components as ManagerComponents } from '@/workbench/extensions/manager/types/generatedManagerTypes'
|
||||||
|
|
||||||
const TOGGLE_DEBOUNCE_MS = 256
|
const TOGGLE_DEBOUNCE_MS = 256
|
||||||
|
|
||||||
@@ -30,12 +30,12 @@ import DotSpinner from '@/components/common/DotSpinner.vue'
|
|||||||
import { useConflictDetection } from '@/composables/useConflictDetection'
|
import { useConflictDetection } from '@/composables/useConflictDetection'
|
||||||
import { t } from '@/i18n'
|
import { t } from '@/i18n'
|
||||||
import { useDialogService } from '@/services/dialogService'
|
import { useDialogService } from '@/services/dialogService'
|
||||||
import { useComfyManagerStore } from '@/stores/comfyManagerStore'
|
|
||||||
import type { ButtonSize } from '@/types/buttonTypes'
|
import type { ButtonSize } from '@/types/buttonTypes'
|
||||||
import type { components } from '@/types/comfyRegistryTypes'
|
import type { components } from '@/types/comfyRegistryTypes'
|
||||||
import type { ConflictDetectionResult } from '@/types/conflictDetectionTypes'
|
import type { ConflictDetectionResult } from '@/types/conflictDetectionTypes'
|
||||||
import type { ConflictDetail } from '@/types/conflictDetectionTypes'
|
import type { ConflictDetail } from '@/types/conflictDetectionTypes'
|
||||||
import type { components as ManagerComponents } from '@/types/generatedManagerTypes'
|
import { useComfyManagerStore } from '@/workbench/extensions/manager/stores/comfyManagerStore'
|
||||||
|
import type { components as ManagerComponents } from '@/workbench/extensions/manager/types/generatedManagerTypes'
|
||||||
|
|
||||||
type NodePack = components['schemas']['Node']
|
type NodePack = components['schemas']['Node']
|
||||||
|
|
||||||
@@ -16,10 +16,10 @@
|
|||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import IconTextButton from '@/components/button/IconTextButton.vue'
|
import IconTextButton from '@/components/button/IconTextButton.vue'
|
||||||
import { useComfyManagerStore } from '@/stores/comfyManagerStore'
|
|
||||||
import type { ButtonSize } from '@/types/buttonTypes'
|
import type { ButtonSize } from '@/types/buttonTypes'
|
||||||
import type { components } from '@/types/comfyRegistryTypes'
|
import type { components } from '@/types/comfyRegistryTypes'
|
||||||
import type { components as ManagerComponents } from '@/types/generatedManagerTypes'
|
import { useComfyManagerStore } from '@/workbench/extensions/manager/stores/comfyManagerStore'
|
||||||
|
import type { components as ManagerComponents } from '@/workbench/extensions/manager/types/generatedManagerTypes'
|
||||||
|
|
||||||
type NodePack = components['schemas']['Node']
|
type NodePack = components['schemas']['Node']
|
||||||
|
|
||||||
@@ -22,8 +22,8 @@ import { ref } from 'vue'
|
|||||||
|
|
||||||
import IconTextButton from '@/components/button/IconTextButton.vue'
|
import IconTextButton from '@/components/button/IconTextButton.vue'
|
||||||
import DotSpinner from '@/components/common/DotSpinner.vue'
|
import DotSpinner from '@/components/common/DotSpinner.vue'
|
||||||
import { useComfyManagerStore } from '@/stores/comfyManagerStore'
|
|
||||||
import type { components } from '@/types/comfyRegistryTypes'
|
import type { components } from '@/types/comfyRegistryTypes'
|
||||||
|
import { useComfyManagerStore } from '@/workbench/extensions/manager/stores/comfyManagerStore'
|
||||||
|
|
||||||
type NodePack = components['schemas']['Node']
|
type NodePack = components['schemas']['Node']
|
||||||
|
|
||||||
@@ -64,20 +64,20 @@ import { useScroll, whenever } from '@vueuse/core'
|
|||||||
import { computed, provide, ref } from 'vue'
|
import { computed, provide, ref } from 'vue'
|
||||||
import { useI18n } from 'vue-i18n'
|
import { useI18n } from 'vue-i18n'
|
||||||
|
|
||||||
import PackStatusMessage from '@/components/dialog/content/manager/PackStatusMessage.vue'
|
|
||||||
import PackVersionBadge from '@/components/dialog/content/manager/PackVersionBadge.vue'
|
|
||||||
import PackEnableToggle from '@/components/dialog/content/manager/button/PackEnableToggle.vue'
|
|
||||||
import InfoPanelHeader from '@/components/dialog/content/manager/infoPanel/InfoPanelHeader.vue'
|
|
||||||
import InfoTabs from '@/components/dialog/content/manager/infoPanel/InfoTabs.vue'
|
|
||||||
import MetadataRow from '@/components/dialog/content/manager/infoPanel/MetadataRow.vue'
|
|
||||||
import { useConflictDetection } from '@/composables/useConflictDetection'
|
import { useConflictDetection } from '@/composables/useConflictDetection'
|
||||||
import { useImportFailedDetection } from '@/composables/useImportFailedDetection'
|
import { useImportFailedDetection } from '@/composables/useImportFailedDetection'
|
||||||
import { useComfyManagerStore } from '@/stores/comfyManagerStore'
|
|
||||||
import { useConflictDetectionStore } from '@/stores/conflictDetectionStore'
|
import { useConflictDetectionStore } from '@/stores/conflictDetectionStore'
|
||||||
import { IsInstallingKey } from '@/types/comfyManagerTypes'
|
|
||||||
import type { components } from '@/types/comfyRegistryTypes'
|
import type { components } from '@/types/comfyRegistryTypes'
|
||||||
import type { ConflictDetectionResult } from '@/types/conflictDetectionTypes'
|
import type { ConflictDetectionResult } from '@/types/conflictDetectionTypes'
|
||||||
import { ImportFailedKey } from '@/types/importFailedTypes'
|
import { ImportFailedKey } from '@/types/importFailedTypes'
|
||||||
|
import PackStatusMessage from '@/workbench/extensions/manager/components/manager/PackStatusMessage.vue'
|
||||||
|
import PackVersionBadge from '@/workbench/extensions/manager/components/manager/PackVersionBadge.vue'
|
||||||
|
import PackEnableToggle from '@/workbench/extensions/manager/components/manager/button/PackEnableToggle.vue'
|
||||||
|
import InfoPanelHeader from '@/workbench/extensions/manager/components/manager/infoPanel/InfoPanelHeader.vue'
|
||||||
|
import InfoTabs from '@/workbench/extensions/manager/components/manager/infoPanel/InfoTabs.vue'
|
||||||
|
import MetadataRow from '@/workbench/extensions/manager/components/manager/infoPanel/MetadataRow.vue'
|
||||||
|
import { useComfyManagerStore } from '@/workbench/extensions/manager/stores/comfyManagerStore'
|
||||||
|
import { IsInstallingKey } from '@/workbench/extensions/manager/types/comfyManagerTypes'
|
||||||
|
|
||||||
interface InfoItem {
|
interface InfoItem {
|
||||||
key: string
|
key: string
|
||||||
@@ -45,14 +45,14 @@
|
|||||||
import { computed, inject, ref, watch } from 'vue'
|
import { computed, inject, ref, watch } from 'vue'
|
||||||
|
|
||||||
import NoResultsPlaceholder from '@/components/common/NoResultsPlaceholder.vue'
|
import NoResultsPlaceholder from '@/components/common/NoResultsPlaceholder.vue'
|
||||||
import PackInstallButton from '@/components/dialog/content/manager/button/PackInstallButton.vue'
|
|
||||||
import PackUninstallButton from '@/components/dialog/content/manager/button/PackUninstallButton.vue'
|
|
||||||
import PackIcon from '@/components/dialog/content/manager/packIcon/PackIcon.vue'
|
|
||||||
import { useConflictDetection } from '@/composables/useConflictDetection'
|
import { useConflictDetection } from '@/composables/useConflictDetection'
|
||||||
import { useComfyManagerStore } from '@/stores/comfyManagerStore'
|
|
||||||
import type { components } from '@/types/comfyRegistryTypes'
|
import type { components } from '@/types/comfyRegistryTypes'
|
||||||
import type { ConflictDetail } from '@/types/conflictDetectionTypes'
|
import type { ConflictDetail } from '@/types/conflictDetectionTypes'
|
||||||
import { ImportFailedKey } from '@/types/importFailedTypes'
|
import { ImportFailedKey } from '@/types/importFailedTypes'
|
||||||
|
import PackInstallButton from '@/workbench/extensions/manager/components/manager/button/PackInstallButton.vue'
|
||||||
|
import PackUninstallButton from '@/workbench/extensions/manager/components/manager/button/PackUninstallButton.vue'
|
||||||
|
import PackIcon from '@/workbench/extensions/manager/components/manager/packIcon/PackIcon.vue'
|
||||||
|
import { useComfyManagerStore } from '@/workbench/extensions/manager/stores/comfyManagerStore'
|
||||||
|
|
||||||
const { nodePacks, hasConflict } = defineProps<{
|
const { nodePacks, hasConflict } = defineProps<{
|
||||||
nodePacks: components['schemas']['Node'][]
|
nodePacks: components['schemas']['Node'][]
|
||||||
@@ -57,12 +57,6 @@
|
|||||||
import { useAsyncState } from '@vueuse/core'
|
import { useAsyncState } from '@vueuse/core'
|
||||||
import { computed, onUnmounted, provide, toRef } from 'vue'
|
import { computed, onUnmounted, provide, toRef } from 'vue'
|
||||||
|
|
||||||
import PackStatusMessage from '@/components/dialog/content/manager/PackStatusMessage.vue'
|
|
||||||
import PackInstallButton from '@/components/dialog/content/manager/button/PackInstallButton.vue'
|
|
||||||
import PackUninstallButton from '@/components/dialog/content/manager/button/PackUninstallButton.vue'
|
|
||||||
import InfoPanelHeader from '@/components/dialog/content/manager/infoPanel/InfoPanelHeader.vue'
|
|
||||||
import MetadataRow from '@/components/dialog/content/manager/infoPanel/MetadataRow.vue'
|
|
||||||
import PackIconStacked from '@/components/dialog/content/manager/packIcon/PackIconStacked.vue'
|
|
||||||
import { usePacksSelection } from '@/composables/nodePack/usePacksSelection'
|
import { usePacksSelection } from '@/composables/nodePack/usePacksSelection'
|
||||||
import { usePacksStatus } from '@/composables/nodePack/usePacksStatus'
|
import { usePacksStatus } from '@/composables/nodePack/usePacksStatus'
|
||||||
import { useConflictDetection } from '@/composables/useConflictDetection'
|
import { useConflictDetection } from '@/composables/useConflictDetection'
|
||||||
@@ -70,6 +64,12 @@ import { useComfyRegistryStore } from '@/stores/comfyRegistryStore'
|
|||||||
import type { components } from '@/types/comfyRegistryTypes'
|
import type { components } from '@/types/comfyRegistryTypes'
|
||||||
import type { ConflictDetail } from '@/types/conflictDetectionTypes'
|
import type { ConflictDetail } from '@/types/conflictDetectionTypes'
|
||||||
import { ImportFailedKey } from '@/types/importFailedTypes'
|
import { ImportFailedKey } from '@/types/importFailedTypes'
|
||||||
|
import PackStatusMessage from '@/workbench/extensions/manager/components/manager/PackStatusMessage.vue'
|
||||||
|
import PackInstallButton from '@/workbench/extensions/manager/components/manager/button/PackInstallButton.vue'
|
||||||
|
import PackUninstallButton from '@/workbench/extensions/manager/components/manager/button/PackUninstallButton.vue'
|
||||||
|
import InfoPanelHeader from '@/workbench/extensions/manager/components/manager/infoPanel/InfoPanelHeader.vue'
|
||||||
|
import MetadataRow from '@/workbench/extensions/manager/components/manager/infoPanel/MetadataRow.vue'
|
||||||
|
import PackIconStacked from '@/workbench/extensions/manager/components/manager/packIcon/PackIconStacked.vue'
|
||||||
|
|
||||||
const { nodePacks } = defineProps<{
|
const { nodePacks } = defineProps<{
|
||||||
nodePacks: components['schemas']['Node'][]
|
nodePacks: components['schemas']['Node'][]
|
||||||
@@ -45,12 +45,12 @@ import TabPanels from 'primevue/tabpanels'
|
|||||||
import Tabs from 'primevue/tabs'
|
import Tabs from 'primevue/tabs'
|
||||||
import { computed, inject, ref, watchEffect } from 'vue'
|
import { computed, inject, ref, watchEffect } from 'vue'
|
||||||
|
|
||||||
import DescriptionTabPanel from '@/components/dialog/content/manager/infoPanel/tabs/DescriptionTabPanel.vue'
|
|
||||||
import NodesTabPanel from '@/components/dialog/content/manager/infoPanel/tabs/NodesTabPanel.vue'
|
|
||||||
import WarningTabPanel from '@/components/dialog/content/manager/infoPanel/tabs/WarningTabPanel.vue'
|
|
||||||
import type { components } from '@/types/comfyRegistryTypes'
|
import type { components } from '@/types/comfyRegistryTypes'
|
||||||
import type { ConflictDetectionResult } from '@/types/conflictDetectionTypes'
|
import type { ConflictDetectionResult } from '@/types/conflictDetectionTypes'
|
||||||
import { ImportFailedKey } from '@/types/importFailedTypes'
|
import { ImportFailedKey } from '@/types/importFailedTypes'
|
||||||
|
import DescriptionTabPanel from '@/workbench/extensions/manager/components/manager/infoPanel/tabs/DescriptionTabPanel.vue'
|
||||||
|
import NodesTabPanel from '@/workbench/extensions/manager/components/manager/infoPanel/tabs/NodesTabPanel.vue'
|
||||||
|
import WarningTabPanel from '@/workbench/extensions/manager/components/manager/infoPanel/tabs/WarningTabPanel.vue'
|
||||||
|
|
||||||
const { nodePack, hasCompatibilityIssues, conflictResult } = defineProps<{
|
const { nodePack, hasCompatibilityIssues, conflictResult } = defineProps<{
|
||||||
nodePack: components['schemas']['Node']
|
nodePack: components['schemas']['Node']
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import MarkdownText from '@/components/dialog/content/manager/infoPanel/MarkdownText.vue'
|
import MarkdownText from '@/workbench/extensions/manager/components/manager/infoPanel/MarkdownText.vue'
|
||||||
|
|
||||||
export interface TextSection {
|
export interface TextSection {
|
||||||
title: string
|
title: string
|
||||||
@@ -26,11 +26,11 @@
|
|||||||
import { computed } from 'vue'
|
import { computed } from 'vue'
|
||||||
import { useI18n } from 'vue-i18n'
|
import { useI18n } from 'vue-i18n'
|
||||||
|
|
||||||
import InfoTextSection, {
|
|
||||||
type TextSection
|
|
||||||
} from '@/components/dialog/content/manager/infoPanel/InfoTextSection.vue'
|
|
||||||
import type { components } from '@/types/comfyRegistryTypes'
|
import type { components } from '@/types/comfyRegistryTypes'
|
||||||
import { isValidUrl } from '@/utils/formatUtil'
|
import { isValidUrl } from '@/utils/formatUtil'
|
||||||
|
import InfoTextSection, {
|
||||||
|
type TextSection
|
||||||
|
} from '@/workbench/extensions/manager/components/manager/infoPanel/InfoTextSection.vue'
|
||||||
|
|
||||||
const { t } = useI18n()
|
const { t } = useI18n()
|
||||||
|
|
||||||
@@ -75,17 +75,17 @@ import Card from 'primevue/card'
|
|||||||
import { computed, provide } from 'vue'
|
import { computed, provide } from 'vue'
|
||||||
import { useI18n } from 'vue-i18n'
|
import { useI18n } from 'vue-i18n'
|
||||||
|
|
||||||
import PackVersionBadge from '@/components/dialog/content/manager/PackVersionBadge.vue'
|
|
||||||
import PackBanner from '@/components/dialog/content/manager/packBanner/PackBanner.vue'
|
|
||||||
import PackCardFooter from '@/components/dialog/content/manager/packCard/PackCardFooter.vue'
|
|
||||||
import { useComfyManagerStore } from '@/stores/comfyManagerStore'
|
|
||||||
import { useColorPaletteStore } from '@/stores/workspace/colorPaletteStore'
|
import { useColorPaletteStore } from '@/stores/workspace/colorPaletteStore'
|
||||||
|
import PackVersionBadge from '@/workbench/extensions/manager/components/manager/PackVersionBadge.vue'
|
||||||
|
import PackBanner from '@/workbench/extensions/manager/components/manager/packBanner/PackBanner.vue'
|
||||||
|
import PackCardFooter from '@/workbench/extensions/manager/components/manager/packCard/PackCardFooter.vue'
|
||||||
|
import { useComfyManagerStore } from '@/workbench/extensions/manager/stores/comfyManagerStore'
|
||||||
import {
|
import {
|
||||||
IsInstallingKey,
|
IsInstallingKey,
|
||||||
type MergedNodePack,
|
type MergedNodePack,
|
||||||
type RegistryPack,
|
type RegistryPack,
|
||||||
isMergedNodePack
|
isMergedNodePack
|
||||||
} from '@/types/comfyManagerTypes'
|
} from '@/workbench/extensions/manager/types/comfyManagerTypes'
|
||||||
|
|
||||||
const { nodePack, isSelected = false } = defineProps<{
|
const { nodePack, isSelected = false } = defineProps<{
|
||||||
nodePack: MergedNodePack | RegistryPack
|
nodePack: MergedNodePack | RegistryPack
|
||||||
@@ -25,13 +25,13 @@
|
|||||||
import { computed, inject } from 'vue'
|
import { computed, inject } from 'vue'
|
||||||
import { useI18n } from 'vue-i18n'
|
import { useI18n } from 'vue-i18n'
|
||||||
|
|
||||||
import PackEnableToggle from '@/components/dialog/content/manager/button/PackEnableToggle.vue'
|
|
||||||
import PackInstallButton from '@/components/dialog/content/manager/button/PackInstallButton.vue'
|
|
||||||
import { useConflictDetection } from '@/composables/useConflictDetection'
|
import { useConflictDetection } from '@/composables/useConflictDetection'
|
||||||
import { useComfyManagerStore } from '@/stores/comfyManagerStore'
|
|
||||||
import { IsInstallingKey } from '@/types/comfyManagerTypes'
|
|
||||||
import type { components } from '@/types/comfyRegistryTypes'
|
import type { components } from '@/types/comfyRegistryTypes'
|
||||||
import type { ConflictDetail } from '@/types/conflictDetectionTypes'
|
import type { ConflictDetail } from '@/types/conflictDetectionTypes'
|
||||||
|
import PackEnableToggle from '@/workbench/extensions/manager/components/manager/button/PackEnableToggle.vue'
|
||||||
|
import PackInstallButton from '@/workbench/extensions/manager/components/manager/button/PackInstallButton.vue'
|
||||||
|
import { useComfyManagerStore } from '@/workbench/extensions/manager/stores/comfyManagerStore'
|
||||||
|
import { IsInstallingKey } from '@/workbench/extensions/manager/types/comfyManagerTypes'
|
||||||
|
|
||||||
const { nodePack } = defineProps<{
|
const { nodePack } = defineProps<{
|
||||||
nodePack: components['schemas']['Node']
|
nodePack: components['schemas']['Node']
|
||||||
@@ -18,8 +18,8 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import PackIcon from '@/components/dialog/content/manager/packIcon/PackIcon.vue'
|
|
||||||
import type { components } from '@/types/comfyRegistryTypes'
|
import type { components } from '@/types/comfyRegistryTypes'
|
||||||
|
import PackIcon from '@/workbench/extensions/manager/components/manager/packIcon/PackIcon.vue'
|
||||||
|
|
||||||
const {
|
const {
|
||||||
nodePacks,
|
nodePacks,
|
||||||
@@ -67,21 +67,21 @@ import AutoComplete from 'primevue/autocomplete'
|
|||||||
import { computed } from 'vue'
|
import { computed } from 'vue'
|
||||||
import { useI18n } from 'vue-i18n'
|
import { useI18n } from 'vue-i18n'
|
||||||
|
|
||||||
import PackInstallButton from '@/components/dialog/content/manager/button/PackInstallButton.vue'
|
|
||||||
import PackUpdateButton from '@/components/dialog/content/manager/button/PackUpdateButton.vue'
|
|
||||||
import SearchFilterDropdown from '@/components/dialog/content/manager/registrySearchBar/SearchFilterDropdown.vue'
|
|
||||||
import { useMissingNodes } from '@/composables/nodePack/useMissingNodes'
|
import { useMissingNodes } from '@/composables/nodePack/useMissingNodes'
|
||||||
import { useUpdateAvailableNodes } from '@/composables/nodePack/useUpdateAvailableNodes'
|
import { useUpdateAvailableNodes } from '@/composables/nodePack/useUpdateAvailableNodes'
|
||||||
import {
|
|
||||||
type SearchOption,
|
|
||||||
SortableAlgoliaField
|
|
||||||
} from '@/types/comfyManagerTypes'
|
|
||||||
import type { components } from '@/types/comfyRegistryTypes'
|
import type { components } from '@/types/comfyRegistryTypes'
|
||||||
import type {
|
import type {
|
||||||
QuerySuggestion,
|
QuerySuggestion,
|
||||||
SearchMode,
|
SearchMode,
|
||||||
SortableField
|
SortableField
|
||||||
} from '@/types/searchServiceTypes'
|
} from '@/types/searchServiceTypes'
|
||||||
|
import PackInstallButton from '@/workbench/extensions/manager/components/manager/button/PackInstallButton.vue'
|
||||||
|
import PackUpdateButton from '@/workbench/extensions/manager/components/manager/button/PackUpdateButton.vue'
|
||||||
|
import SearchFilterDropdown from '@/workbench/extensions/manager/components/manager/registrySearchBar/SearchFilterDropdown.vue'
|
||||||
|
import {
|
||||||
|
type SearchOption,
|
||||||
|
SortableAlgoliaField
|
||||||
|
} from '@/workbench/extensions/manager/types/comfyManagerTypes'
|
||||||
|
|
||||||
const { searchResults, sortOptions } = defineProps<{
|
const { searchResults, sortOptions } = defineProps<{
|
||||||
searchResults?: components['schemas']['Node'][]
|
searchResults?: components['schemas']['Node'][]
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
// eslint-disable-next-line no-restricted-imports -- TODO: Migrate to Select component
|
// eslint-disable-next-line no-restricted-imports -- TODO: Migrate to Select component
|
||||||
import Dropdown from 'primevue/dropdown'
|
import Dropdown from 'primevue/dropdown'
|
||||||
|
|
||||||
import type { SearchOption } from '@/types/comfyManagerTypes'
|
import type { SearchOption } from '@/workbench/extensions/manager/types/comfyManagerTypes'
|
||||||
|
|
||||||
defineProps<{
|
defineProps<{
|
||||||
options: SearchOption<T>[]
|
options: SearchOption<T>[]
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import PackCardSkeleton from '@/components/dialog/content/manager/skeleton/PackCardSkeleton.vue'
|
import PackCardSkeleton from '@/workbench/extensions/manager/components/manager/skeleton/PackCardSkeleton.vue'
|
||||||
|
|
||||||
const { skeletonCardCount = 12, gridStyle } = defineProps<{
|
const { skeletonCardCount = 12, gridStyle } = defineProps<{
|
||||||
skeletonCardCount?: number
|
skeletonCardCount?: number
|
||||||
@@ -5,8 +5,8 @@ import { computed, ref } from 'vue'
|
|||||||
|
|
||||||
import { app } from '@/scripts/app'
|
import { app } from '@/scripts/app'
|
||||||
import { useDialogService } from '@/services/dialogService'
|
import { useDialogService } from '@/services/dialogService'
|
||||||
import type { components } from '@/types/generatedManagerTypes'
|
|
||||||
import { normalizePackKeys } from '@/utils/packUtils'
|
import { normalizePackKeys } from '@/utils/packUtils'
|
||||||
|
import type { components } from '@/workbench/extensions/manager/types/generatedManagerTypes'
|
||||||
|
|
||||||
type ManagerTaskHistory = Record<
|
type ManagerTaskHistory = Record<
|
||||||
string,
|
string,
|
||||||
@@ -7,7 +7,7 @@ import { api } from '@/scripts/api'
|
|||||||
import { useDialogService } from '@/services/dialogService'
|
import { useDialogService } from '@/services/dialogService'
|
||||||
import { useCommandStore } from '@/stores/commandStore'
|
import { useCommandStore } from '@/stores/commandStore'
|
||||||
import { useSystemStatsStore } from '@/stores/systemStatsStore'
|
import { useSystemStatsStore } from '@/stores/systemStatsStore'
|
||||||
import { ManagerTab } from '@/types/comfyManagerTypes'
|
import { ManagerTab } from '@/workbench/extensions/manager/types/comfyManagerTypes'
|
||||||
|
|
||||||
export enum ManagerUIState {
|
export enum ManagerUIState {
|
||||||
DISABLED = 'disabled',
|
DISABLED = 'disabled',
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
import type { ManagerState } from '@/types/comfyManagerTypes'
|
import type { ManagerState } from '@/workbench/extensions/manager/types/comfyManagerTypes'
|
||||||
import { ManagerTab, SortableAlgoliaField } from '@/types/comfyManagerTypes'
|
import {
|
||||||
|
ManagerTab,
|
||||||
|
SortableAlgoliaField
|
||||||
|
} from '@/workbench/extensions/manager/types/comfyManagerTypes'
|
||||||
|
|
||||||
const STORAGE_KEY = 'Comfy.Manager.UI.State'
|
const STORAGE_KEY = 'Comfy.Manager.UI.State'
|
||||||
|
|
||||||
@@ -3,10 +3,10 @@ import axios from 'axios'
|
|||||||
import { v4 as uuidv4 } from 'uuid'
|
import { v4 as uuidv4 } from 'uuid'
|
||||||
import { ref } from 'vue'
|
import { ref } from 'vue'
|
||||||
|
|
||||||
import { useManagerState } from '@/composables/useManagerState'
|
|
||||||
import { api } from '@/scripts/api'
|
import { api } from '@/scripts/api'
|
||||||
import type { components } from '@/types/generatedManagerTypes'
|
|
||||||
import { isAbortError } from '@/utils/typeGuardUtil'
|
import { isAbortError } from '@/utils/typeGuardUtil'
|
||||||
|
import { useManagerState } from '@/workbench/extensions/manager/composables/useManagerState'
|
||||||
|
import type { components } from '@/workbench/extensions/manager/types/generatedManagerTypes'
|
||||||
|
|
||||||
type ManagerQueueStatus = components['schemas']['QueueStatus']
|
type ManagerQueueStatus = components['schemas']['QueueStatus']
|
||||||
type InstallPackParams = components['schemas']['InstallPackParams']
|
type InstallPackParams = components['schemas']['InstallPackParams']
|
||||||
@@ -5,15 +5,15 @@ import { ref, watch } from 'vue'
|
|||||||
import { useI18n } from 'vue-i18n'
|
import { useI18n } from 'vue-i18n'
|
||||||
|
|
||||||
import { useCachedRequest } from '@/composables/useCachedRequest'
|
import { useCachedRequest } from '@/composables/useCachedRequest'
|
||||||
import { useManagerQueue } from '@/composables/useManagerQueue'
|
|
||||||
import { useServerLogs } from '@/composables/useServerLogs'
|
import { useServerLogs } from '@/composables/useServerLogs'
|
||||||
import { api } from '@/scripts/api'
|
import { api } from '@/scripts/api'
|
||||||
import { app } from '@/scripts/app'
|
import { app } from '@/scripts/app'
|
||||||
import { useComfyManagerService } from '@/services/comfyManagerService'
|
|
||||||
import { useDialogService } from '@/services/dialogService'
|
import { useDialogService } from '@/services/dialogService'
|
||||||
import type { TaskLog } from '@/types/comfyManagerTypes'
|
|
||||||
import type { components } from '@/types/generatedManagerTypes'
|
|
||||||
import { normalizePackKeys } from '@/utils/packUtils'
|
import { normalizePackKeys } from '@/utils/packUtils'
|
||||||
|
import { useManagerQueue } from '@/workbench/extensions/manager/composables/useManagerQueue'
|
||||||
|
import { useComfyManagerService } from '@/workbench/extensions/manager/services/comfyManagerService'
|
||||||
|
import type { TaskLog } from '@/workbench/extensions/manager/types/comfyManagerTypes'
|
||||||
|
import type { components } from '@/workbench/extensions/manager/types/generatedManagerTypes'
|
||||||
|
|
||||||
type InstallPackParams = components['schemas']['InstallPackParams']
|
type InstallPackParams = components['schemas']['InstallPackParams']
|
||||||
type InstalledPacksResponse = components['schemas']['InstalledPacksResponse']
|
type InstalledPacksResponse = components['schemas']['InstalledPacksResponse']
|
||||||
@@ -4,8 +4,8 @@ import Button from 'primevue/button'
|
|||||||
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
||||||
import { computed, ref } from 'vue'
|
import { computed, ref } from 'vue'
|
||||||
|
|
||||||
import NodeConflictDialogContent from '@/components/dialog/content/manager/NodeConflictDialogContent.vue'
|
|
||||||
import type { ConflictDetectionResult } from '@/types/conflictDetectionTypes'
|
import type { ConflictDetectionResult } from '@/types/conflictDetectionTypes'
|
||||||
|
import NodeConflictDialogContent from '@/workbench/extensions/manager/components/manager/NodeConflictDialogContent.vue'
|
||||||
|
|
||||||
// Mock getConflictMessage utility
|
// Mock getConflictMessage utility
|
||||||
vi.mock('@/utils/conflictMessageUtil', () => ({
|
vi.mock('@/utils/conflictMessageUtil', () => ({
|
||||||
|
|||||||
@@ -4,8 +4,11 @@ import Card from 'primevue/card'
|
|||||||
import ProgressSpinner from 'primevue/progressspinner'
|
import ProgressSpinner from 'primevue/progressspinner'
|
||||||
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
||||||
|
|
||||||
import PackCard from '@/components/dialog/content/manager/packCard/PackCard.vue'
|
import PackCard from '@/workbench/extensions/manager/components/manager/packCard/PackCard.vue'
|
||||||
import type { MergedNodePack, RegistryPack } from '@/types/comfyManagerTypes'
|
import type {
|
||||||
|
MergedNodePack,
|
||||||
|
RegistryPack
|
||||||
|
} from '@/workbench/extensions/manager/types/comfyManagerTypes'
|
||||||
|
|
||||||
// Mock dependencies
|
// Mock dependencies
|
||||||
vi.mock('vue-i18n', () => ({
|
vi.mock('vue-i18n', () => ({
|
||||||
@@ -21,7 +24,7 @@ vi.mock('vue-i18n', () => ({
|
|||||||
}))
|
}))
|
||||||
}))
|
}))
|
||||||
|
|
||||||
vi.mock('@/stores/comfyManagerStore', () => ({
|
vi.mock('@/workbench/extensions/manager/stores/comfyManagerStore', () => ({
|
||||||
useComfyManagerStore: vi.fn(() => ({
|
useComfyManagerStore: vi.fn(() => ({
|
||||||
isPackInstalled: vi.fn(() => false),
|
isPackInstalled: vi.fn(() => false),
|
||||||
isPackEnabled: vi.fn(() => true),
|
isPackEnabled: vi.fn(() => true),
|
||||||
|
|||||||
@@ -5,23 +5,23 @@ import { beforeEach, describe, expect, it, vi } from 'vitest'
|
|||||||
import { nextTick } from 'vue'
|
import { nextTick } from 'vue'
|
||||||
import { createI18n } from 'vue-i18n'
|
import { createI18n } from 'vue-i18n'
|
||||||
|
|
||||||
import ManagerProgressFooter from '@/components/dialog/footer/ManagerProgressFooter.vue'
|
|
||||||
import { useSettingStore } from '@/platform/settings/settingStore'
|
import { useSettingStore } from '@/platform/settings/settingStore'
|
||||||
import { useComfyManagerService } from '@/services/comfyManagerService'
|
import { useCommandStore } from '@/stores/commandStore'
|
||||||
|
import { useDialogStore } from '@/stores/dialogStore'
|
||||||
|
import ManagerProgressFooter from '@/workbench/extensions/manager/components/ManagerProgressFooter.vue'
|
||||||
|
import { useComfyManagerService } from '@/workbench/extensions/manager/services/comfyManagerService'
|
||||||
import {
|
import {
|
||||||
useComfyManagerStore,
|
useComfyManagerStore,
|
||||||
useManagerProgressDialogStore
|
useManagerProgressDialogStore
|
||||||
} from '@/stores/comfyManagerStore'
|
} from '@/workbench/extensions/manager/stores/comfyManagerStore'
|
||||||
import { useCommandStore } from '@/stores/commandStore'
|
import type { TaskLog } from '@/workbench/extensions/manager/types/comfyManagerTypes'
|
||||||
import { useDialogStore } from '@/stores/dialogStore'
|
|
||||||
import type { TaskLog } from '@/types/comfyManagerTypes'
|
|
||||||
|
|
||||||
// Mock modules
|
// Mock modules
|
||||||
vi.mock('@/stores/comfyManagerStore')
|
vi.mock('@/workbench/extensions/manager/stores/comfyManagerStore')
|
||||||
vi.mock('@/stores/dialogStore')
|
vi.mock('@/stores/dialogStore')
|
||||||
vi.mock('@/platform/settings/settingStore')
|
vi.mock('@/platform/settings/settingStore')
|
||||||
vi.mock('@/stores/commandStore')
|
vi.mock('@/stores/commandStore')
|
||||||
vi.mock('@/services/comfyManagerService')
|
vi.mock('@/workbench/extensions/manager/services/comfyManagerService')
|
||||||
vi.mock('@/composables/useConflictDetection', () => ({
|
vi.mock('@/composables/useConflictDetection', () => ({
|
||||||
useConflictDetection: vi.fn(() => ({
|
useConflictDetection: vi.fn(() => ({
|
||||||
conflictedPackages: { value: [] },
|
conflictedPackages: { value: [] },
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
|||||||
import { ref } from 'vue'
|
import { ref } from 'vue'
|
||||||
|
|
||||||
import { usePacksSelection } from '@/composables/nodePack/usePacksSelection'
|
import { usePacksSelection } from '@/composables/nodePack/usePacksSelection'
|
||||||
import { useComfyManagerStore } from '@/stores/comfyManagerStore'
|
|
||||||
import type { components } from '@/types/comfyRegistryTypes'
|
import type { components } from '@/types/comfyRegistryTypes'
|
||||||
|
import { useComfyManagerStore } from '@/workbench/extensions/manager/stores/comfyManagerStore'
|
||||||
|
|
||||||
vi.mock('vue-i18n', async () => {
|
vi.mock('vue-i18n', async () => {
|
||||||
const actual = await vi.importActual('vue-i18n')
|
const actual = await vi.importActual('vue-i18n')
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { nextTick } from 'vue'
|
|||||||
|
|
||||||
import { useConflictDetection } from '@/composables/useConflictDetection'
|
import { useConflictDetection } from '@/composables/useConflictDetection'
|
||||||
import type { components } from '@/types/comfyRegistryTypes'
|
import type { components } from '@/types/comfyRegistryTypes'
|
||||||
import type { components as ManagerComponents } from '@/types/generatedManagerTypes'
|
import type { components as ManagerComponents } from '@/workbench/extensions/manager/types/generatedManagerTypes'
|
||||||
|
|
||||||
type InstalledPacksResponse =
|
type InstalledPacksResponse =
|
||||||
ManagerComponents['schemas']['InstalledPacksResponse']
|
ManagerComponents['schemas']['InstalledPacksResponse']
|
||||||
@@ -27,7 +27,7 @@ vi.mock('@/scripts/api', () => ({
|
|||||||
}
|
}
|
||||||
}))
|
}))
|
||||||
|
|
||||||
vi.mock('@/services/comfyManagerService', () => ({
|
vi.mock('@/workbench/extensions/manager/services/comfyManagerService', () => ({
|
||||||
useComfyManagerService: vi.fn()
|
useComfyManagerService: vi.fn()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
@@ -57,7 +57,7 @@ vi.mock('@/composables/nodePack/useInstalledPacks', () => ({
|
|||||||
}))
|
}))
|
||||||
}))
|
}))
|
||||||
|
|
||||||
vi.mock('@/stores/comfyManagerStore', () => ({
|
vi.mock('@/workbench/extensions/manager/stores/comfyManagerStore', () => ({
|
||||||
useComfyManagerStore: vi.fn(() => ({
|
useComfyManagerStore: vi.fn(() => ({
|
||||||
isPackInstalled: vi.fn(),
|
isPackInstalled: vi.fn(),
|
||||||
installedPacks: { value: [] }
|
installedPacks: { value: [] }
|
||||||
@@ -140,7 +140,7 @@ describe.skip('useConflictDetection with Registry Store', () => {
|
|||||||
|
|
||||||
// Mock useComfyManagerService
|
// Mock useComfyManagerService
|
||||||
const { useComfyManagerService } = await import(
|
const { useComfyManagerService } = await import(
|
||||||
'@/services/comfyManagerService'
|
'@/workbench/extensions/manager/services/comfyManagerService'
|
||||||
)
|
)
|
||||||
vi.mocked(useComfyManagerService).mockReturnValue(
|
vi.mocked(useComfyManagerService).mockReturnValue(
|
||||||
mockComfyManagerService as any
|
mockComfyManagerService as any
|
||||||
|
|||||||
@@ -4,11 +4,11 @@ import { computed, ref } from 'vue'
|
|||||||
|
|
||||||
import { useImportFailedDetection } from '@/composables/useImportFailedDetection'
|
import { useImportFailedDetection } from '@/composables/useImportFailedDetection'
|
||||||
import * as dialogService from '@/services/dialogService'
|
import * as dialogService from '@/services/dialogService'
|
||||||
import * as comfyManagerStore from '@/stores/comfyManagerStore'
|
|
||||||
import * as conflictDetectionStore from '@/stores/conflictDetectionStore'
|
import * as conflictDetectionStore from '@/stores/conflictDetectionStore'
|
||||||
|
import * as comfyManagerStore from '@/workbench/extensions/manager/stores/comfyManagerStore'
|
||||||
|
|
||||||
// Mock the stores and services
|
// Mock the stores and services
|
||||||
vi.mock('@/stores/comfyManagerStore')
|
vi.mock('@/workbench/extensions/manager/stores/comfyManagerStore')
|
||||||
vi.mock('@/stores/conflictDetectionStore')
|
vi.mock('@/stores/conflictDetectionStore')
|
||||||
vi.mock('@/services/dialogService')
|
vi.mock('@/services/dialogService')
|
||||||
vi.mock('vue-i18n', async (importOriginal) => {
|
vi.mock('vue-i18n', async (importOriginal) => {
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
||||||
import { ref } from 'vue'
|
import { ref } from 'vue'
|
||||||
|
|
||||||
import { useManagerQueue } from '@/composables/useManagerQueue'
|
import { useManagerQueue } from '@/workbench/extensions/manager/composables/useManagerQueue'
|
||||||
import type { components } from '@/types/generatedManagerTypes'
|
import type { components } from '@/workbench/extensions/manager/types/generatedManagerTypes'
|
||||||
|
|
||||||
// Mock dialog service
|
// Mock dialog service
|
||||||
vi.mock('@/services/dialogService', () => ({
|
vi.mock('@/services/dialogService', () => ({
|
||||||
|
|||||||
@@ -2,10 +2,13 @@ import { beforeEach, describe, expect, it, vi } from 'vitest'
|
|||||||
import { ref } from 'vue'
|
import { ref } from 'vue'
|
||||||
|
|
||||||
import { useFeatureFlags } from '@/composables/useFeatureFlags'
|
import { useFeatureFlags } from '@/composables/useFeatureFlags'
|
||||||
import { ManagerUIState, useManagerState } from '@/composables/useManagerState'
|
|
||||||
import { api } from '@/scripts/api'
|
import { api } from '@/scripts/api'
|
||||||
import { useExtensionStore } from '@/stores/extensionStore'
|
import { useExtensionStore } from '@/stores/extensionStore'
|
||||||
import { useSystemStatsStore } from '@/stores/systemStatsStore'
|
import { useSystemStatsStore } from '@/stores/systemStatsStore'
|
||||||
|
import {
|
||||||
|
ManagerUIState,
|
||||||
|
useManagerState
|
||||||
|
} from '@/workbench/extensions/manager/composables/useManagerState'
|
||||||
|
|
||||||
// Mock dependencies
|
// Mock dependencies
|
||||||
vi.mock('@/scripts/api', () => ({
|
vi.mock('@/scripts/api', () => ({
|
||||||
|
|||||||
@@ -5,9 +5,9 @@ import { useMissingNodes } from '@/composables/nodePack/useMissingNodes'
|
|||||||
import { useWorkflowPacks } from '@/composables/nodePack/useWorkflowPacks'
|
import { useWorkflowPacks } from '@/composables/nodePack/useWorkflowPacks'
|
||||||
import type { LGraphNode } from '@/lib/litegraph/src/litegraph'
|
import type { LGraphNode } from '@/lib/litegraph/src/litegraph'
|
||||||
import { app } from '@/scripts/app'
|
import { app } from '@/scripts/app'
|
||||||
import { useComfyManagerStore } from '@/stores/comfyManagerStore'
|
|
||||||
import { useNodeDefStore } from '@/stores/nodeDefStore'
|
import { useNodeDefStore } from '@/stores/nodeDefStore'
|
||||||
import { collectAllNodes } from '@/utils/graphTraversalUtil'
|
import { collectAllNodes } from '@/utils/graphTraversalUtil'
|
||||||
|
import { useComfyManagerStore } from '@/workbench/extensions/manager/stores/comfyManagerStore'
|
||||||
|
|
||||||
// Mock Vue's onMounted to execute immediately for testing
|
// Mock Vue's onMounted to execute immediately for testing
|
||||||
vi.mock('vue', async () => {
|
vi.mock('vue', async () => {
|
||||||
@@ -23,7 +23,7 @@ vi.mock('@/composables/nodePack/useWorkflowPacks', () => ({
|
|||||||
useWorkflowPacks: vi.fn()
|
useWorkflowPacks: vi.fn()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
vi.mock('@/stores/comfyManagerStore', () => ({
|
vi.mock('@/workbench/extensions/manager/stores/comfyManagerStore', () => ({
|
||||||
useComfyManagerStore: vi.fn()
|
useComfyManagerStore: vi.fn()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ import { nextTick, ref } from 'vue'
|
|||||||
|
|
||||||
import { useInstalledPacks } from '@/composables/nodePack/useInstalledPacks'
|
import { useInstalledPacks } from '@/composables/nodePack/useInstalledPacks'
|
||||||
import { useUpdateAvailableNodes } from '@/composables/nodePack/useUpdateAvailableNodes'
|
import { useUpdateAvailableNodes } from '@/composables/nodePack/useUpdateAvailableNodes'
|
||||||
import { useComfyManagerStore } from '@/stores/comfyManagerStore'
|
|
||||||
// Import mocked utils
|
// Import mocked utils
|
||||||
import { compareVersions, isSemVer } from '@/utils/formatUtil'
|
import { compareVersions, isSemVer } from '@/utils/formatUtil'
|
||||||
|
import { useComfyManagerStore } from '@/workbench/extensions/manager/stores/comfyManagerStore'
|
||||||
|
|
||||||
// Mock Vue's onMounted to execute immediately for testing
|
// Mock Vue's onMounted to execute immediately for testing
|
||||||
vi.mock('vue', async () => {
|
vi.mock('vue', async () => {
|
||||||
@@ -21,7 +21,7 @@ vi.mock('@/composables/nodePack/useInstalledPacks', () => ({
|
|||||||
useInstalledPacks: vi.fn()
|
useInstalledPacks: vi.fn()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
vi.mock('@/stores/comfyManagerStore', () => ({
|
vi.mock('@/workbench/extensions/manager/stores/comfyManagerStore', () => ({
|
||||||
useComfyManagerStore: vi.fn()
|
useComfyManagerStore: vi.fn()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { liteClient as algoliasearch } from 'algoliasearch/dist/lite/builds/brow
|
|||||||
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
||||||
|
|
||||||
import { useAlgoliaSearchProvider } from '@/services/providers/algoliaSearchProvider'
|
import { useAlgoliaSearchProvider } from '@/services/providers/algoliaSearchProvider'
|
||||||
import { SortableAlgoliaField } from '@/types/comfyManagerTypes'
|
import { SortableAlgoliaField } from '@/workbench/extensions/manager/types/comfyManagerTypes'
|
||||||
|
|
||||||
// Mock global Algolia constants
|
// Mock global Algolia constants
|
||||||
|
|
||||||
|
|||||||
@@ -2,9 +2,9 @@ import { createPinia, setActivePinia } from 'pinia'
|
|||||||
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
||||||
import { nextTick, ref } from 'vue'
|
import { nextTick, ref } from 'vue'
|
||||||
|
|
||||||
import { useComfyManagerService } from '@/services/comfyManagerService'
|
import { useComfyManagerService } from '@/workbench/extensions/manager/services/comfyManagerService'
|
||||||
import { useComfyManagerStore } from '@/stores/comfyManagerStore'
|
import { useComfyManagerStore } from '@/workbench/extensions/manager/stores/comfyManagerStore'
|
||||||
import type { components as ManagerComponents } from '@/types/generatedManagerTypes'
|
import type { components as ManagerComponents } from '@/workbench/extensions/manager/types/generatedManagerTypes'
|
||||||
|
|
||||||
type InstalledPacksResponse =
|
type InstalledPacksResponse =
|
||||||
ManagerComponents['schemas']['InstalledPacksResponse']
|
ManagerComponents['schemas']['InstalledPacksResponse']
|
||||||
@@ -13,7 +13,7 @@ type ManagerDatabaseSource =
|
|||||||
ManagerComponents['schemas']['ManagerDatabaseSource']
|
ManagerComponents['schemas']['ManagerDatabaseSource']
|
||||||
type ManagerPackInstalled = ManagerComponents['schemas']['ManagerPackInstalled']
|
type ManagerPackInstalled = ManagerComponents['schemas']['ManagerPackInstalled']
|
||||||
|
|
||||||
vi.mock('@/services/comfyManagerService', () => ({
|
vi.mock('@/workbench/extensions/manager/services/comfyManagerService', () => ({
|
||||||
useComfyManagerService: vi.fn()
|
useComfyManagerService: vi.fn()
|
||||||
}))
|
}))
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ vi.mock('@/services/dialogService', () => ({
|
|||||||
})
|
})
|
||||||
}))
|
}))
|
||||||
|
|
||||||
vi.mock('@/composables/useManagerQueue', () => {
|
vi.mock('@/workbench/extensions/manager/composables/useManagerQueue', () => {
|
||||||
const enqueueTaskMock = vi.fn()
|
const enqueueTaskMock = vi.fn()
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -36,6 +36,7 @@
|
|||||||
"global.d.ts",
|
"global.d.ts",
|
||||||
"eslint.config.ts",
|
"eslint.config.ts",
|
||||||
"vite.config.mts",
|
"vite.config.mts",
|
||||||
|
"knip.config.ts",
|
||||||
".storybook/**/*"
|
".storybook/**/*"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user