refactor(editor): Restructure features code into domains (no-changelog) (#20902)

This commit is contained in:
Alex Grozav 2025-10-17 15:42:50 +03:00 committed by GitHub
parent 71d271a964
commit aee48295f7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
983 changed files with 1296 additions and 1256 deletions

View File

@ -1,8 +1,8 @@
<script setup lang="ts">
import '@/polyfills';
import AssistantsHub from '@/features/assistant/components/AssistantsHub.vue';
import AskAssistantFloatingButton from '@/features/assistant/components/Chat/AskAssistantFloatingButton.vue';
import AssistantsHub from '@/features/ai/assistant/components/AssistantsHub.vue';
import AskAssistantFloatingButton from '@/features/ai/assistant/components/Chat/AskAssistantFloatingButton.vue';
import BannerStack from '@/components/banners/BannerStack.vue';
import Modals from '@/components/Modals.vue';
import Telemetry from '@/components/Telemetry.vue';
@ -15,12 +15,12 @@ import {
HIRING_BANNER,
VIEWS,
} from '@/constants';
import { useChatPanelStore } from '@/features/assistant/chatPanel.store';
import { useAssistantStore } from '@/features/assistant/assistant.store';
import { useChatPanelStore } from '@/features/ai/assistant/chatPanel.store';
import { useAssistantStore } from '@/features/ai/assistant/assistant.store';
import { useNDVStore } from '@/stores/ndv.store';
import { useSettingsStore } from '@/stores/settings.store';
import { useUIStore } from '@/stores/ui.store';
import { useUsersStore } from '@/features/users/users.store';
import { useUsersStore } from '@/features/settings/users/users.store';
import LoadingView from '@/views/LoadingView.vue';
import { locale, N8nCommandBar } from '@n8n/design-system';
import { setLanguage } from '@n8n/i18n';
@ -32,7 +32,7 @@ import { useRoute } from 'vue-router';
import { useStyles } from './composables/useStyles';
import { useExposeCssVar } from '@/composables/useExposeCssVar';
import { useFloatingUiOffsets } from '@/composables/useFloatingUiOffsets';
import { useCommandBar } from '@/features/ui/commandBar/composables/useCommandBar';
import { useCommandBar } from '@/features/shared/commandBar/composables/useCommandBar';
import { hasPermission } from './utils/rbac/permissions';
const route = useRoute();

View File

@ -7,7 +7,7 @@ import type {
IVersionNotificationSettings,
Role,
} from '@n8n/api-types';
import type { ILogInStatus } from '@/features/users/users.types';
import type { ILogInStatus } from '@/features/settings/users/users.types';
import type { IUsedCredential } from '@/features/credentials/credentials.types';
import type { Scope } from '@n8n/permissions';
import type { NodeCreatorTag } from '@n8n/design-system';
@ -56,13 +56,13 @@ import type {
import type { CREDENTIAL_EDIT_MODAL_KEY } from '@/features/credentials/credentials.constants';
import type { BulkCommand, Undoable } from '@/models/history';
import type { ProjectSharingData } from '@/features/projects/projects.types';
import type { ProjectSharingData } from '@/features/collaboration/projects/projects.types';
import type { IconName } from '@n8n/design-system/src/components/N8nIcon/icons';
import type {
BaseFolderItem,
FolderListItem,
ResourceParentFolder,
} from '@/features/folders/folders.types';
} from '@/features/core/folders/folders.types';
export * from '@n8n/design-system/types';

View File

@ -29,8 +29,8 @@ import {
STICKY_NODE_TYPE,
} from '@/constants';
import type { INodeUi, IWorkflowDb } from '@/Interface';
import type { IExecutionResponse } from '@/features/executions/executions.types';
import { CanvasNodeRenderType } from '@/features/canvas/canvas.types';
import type { IExecutionResponse } from '@/features/execution/executions/executions.types';
import { CanvasNodeRenderType } from '@/features/workflows/canvas/canvas.types';
import type { FrontendSettings } from '@n8n/api-types';
import type { ExpressionLocalResolveContext } from '@/types/expressions';

View File

@ -2,7 +2,7 @@ import type { Server, Request } from 'miragejs';
import { Response } from 'miragejs';
import { jsonParse } from 'n8n-workflow';
import type { AppSchema } from '@/__tests__/server/types';
import type { SourceControlPreferences } from '@/features/sourceControl.ee/sourceControl.types';
import type { SourceControlPreferences } from '@/features/integrations/sourceControl.ee/sourceControl.types';
export function routesForSourceControl(server: Server) {
const sourceControlApiRoot = '/rest/source-control';

View File

@ -2,7 +2,7 @@ import type { Request, Server } from 'miragejs';
import { Response } from 'miragejs';
import type { AppSchema } from '../types';
import { jsonParse } from 'n8n-workflow';
import type { EnvironmentVariable } from '@/features/environments.ee/environments.types';
import type { EnvironmentVariable } from '@/features/settings/environments.ee/environments.types';
export function routesForVariables(server: Server) {
server.get('/rest/variables', (schema: AppSchema) => {

View File

@ -1,6 +1,6 @@
import { Factory } from 'miragejs';
import { faker } from '@faker-js/faker';
import type { EnvironmentVariable } from '@/features/environments.ee/environments.types';
import type { EnvironmentVariable } from '@/features/settings/environments.ee/environments.types';
export const variableFactory = Factory.extend<EnvironmentVariable>({
id(i: number) {

View File

@ -1,4 +1,4 @@
import type { EnvironmentVariable } from '@/features/environments.ee/environments.types';
import type { EnvironmentVariable } from '@/features/settings/environments.ee/environments.types';
import { Model } from 'miragejs';
import type { ModelDefinition } from 'miragejs/-types';

View File

@ -1,7 +1,7 @@
import { chatWithBuilder, getBuilderCredits } from './ai';
import * as apiUtils from '@n8n/rest-api-client';
import type { IRestApiContext } from '@n8n/rest-api-client';
import type { ChatRequest } from '@/features/assistant/assistant.types';
import type { ChatRequest } from '@/features/ai/assistant/assistant.types';
import { vi, describe, it, beforeEach, afterEach, expect } from 'vitest';
import type { MockInstance } from 'vitest';

View File

@ -1,4 +1,4 @@
import { useAIAssistantHelpers } from '@/features/assistant/composables/useAIAssistantHelpers';
import { useAIAssistantHelpers } from '@/features/ai/assistant/composables/useAIAssistantHelpers';
import { AI_ASSISTANT_MAX_CONTENT_LENGTH } from '@/constants';
import type { ICredentialsResponse } from '@/features/credentials/credentials.types';
import type { IRestApiContext } from '@n8n/rest-api-client';
@ -6,7 +6,7 @@ import type {
AskAiRequest,
ChatRequest,
ReplaceCodeRequest,
} from '@/features/assistant/assistant.types';
} from '@/features/ai/assistant/assistant.types';
import { makeRestApiRequest, streamRequest } from '@n8n/rest-api-client';
import { getObjectSizeInKB } from '@/utils/objectUtils';
import type { IDataObject } from 'n8n-workflow';

View File

@ -7,7 +7,7 @@ import type {
import type {
IExecutionResponse,
IExecutionsCurrentSummaryExtended,
} from '@/features/executions/executions.types';
} from '@/features/execution/executions/executions.types';
import type { IRestApiContext } from '@n8n/rest-api-client';
import type {
ExecutionFilters,

View File

@ -13,7 +13,7 @@ import { useUIStore } from '@/stores/ui.store';
import { useWorkflowsStore } from '@/stores/workflows.store';
import { useNodeTypesStore } from '@/stores/nodeTypes.store';
import { useStorage } from '@/composables/useStorage';
import { useExecutionsStore } from '@/features/executions/executions.store';
import { useExecutionsStore } from '@/features/execution/executions/executions.store';
import { useRouter } from 'vue-router';
import { useI18n } from '@n8n/i18n';

View File

@ -5,7 +5,7 @@ import ParameterInputFull from '@/components/ParameterInputFull.vue';
import ParameterInputHint from '@/components/ParameterInputHint.vue';
import ParameterIssues from '@/components/ParameterIssues.vue';
import { useResolvedExpression } from '@/composables/useResolvedExpression';
import useEnvironmentsStore from '@/features/environments.ee/environments.store';
import useEnvironmentsStore from '@/features/settings/environments.ee/environments.store';
import { useNDVStore } from '@/stores/ndv.store';
import type { AssignmentValue, INodeProperties } from 'n8n-workflow';
import { computed, ref } from 'vue';

View File

@ -16,9 +16,9 @@ import Assignment from './Assignment.vue';
import { inputDataToAssignments, typeFromExpression } from './utils';
import { propertyNameFromExpression } from '@/utils/mappingUtils';
import Draggable from 'vuedraggable';
import ExperimentalEmbeddedNdvMapper from '@/features/canvas/experimental/components/ExperimentalEmbeddedNdvMapper.vue';
import ExperimentalEmbeddedNdvMapper from '@/features/workflows/canvas/experimental/components/ExperimentalEmbeddedNdvMapper.vue';
import { ExpressionLocalResolveContextSymbol } from '@/constants';
import { useExperimentalNdvStore } from '@/features/canvas/experimental/experimentalNdv.store';
import { useExperimentalNdvStore } from '@/features/workflows/canvas/experimental/experimentalNdv.store';
import { N8nInputLabel } from '@n8n/design-system';
interface Props {

View File

@ -11,7 +11,7 @@ import type { RenderOptions } from '@/__tests__/render';
import { createComponentRenderer } from '@/__tests__/render';
import { waitFor } from '@testing-library/vue';
import { useUIStore } from '@/stores/ui.store';
import { useUsersStore } from '@/features/users/users.store';
import { useUsersStore } from '@/features/settings/users/users.store';
let uiStore: ReturnType<typeof useUIStore>;

View File

@ -2,7 +2,7 @@ import { describe, it, expect, vi, beforeEach } from 'vitest';
import { generateCodeForAiTransform, reducePayloadSizeOrThrow } from './utils';
import { createPinia, setActivePinia } from 'pinia';
import { generateCodeForPrompt } from '@/api/ai';
import type { AskAiRequest } from '@/features/assistant/assistant.types';
import type { AskAiRequest } from '@/features/ai/assistant/assistant.types';
import type { Schema } from '@/Interface';
vi.mock('./utils', async () => {

View File

@ -6,7 +6,7 @@ import { useDataSchema } from '@/composables/useDataSchema';
import { executionDataToJson } from '@/utils/nodeTypesUtils';
import { generateCodeForPrompt } from '@/api/ai';
import { useRootStore } from '@n8n/stores/useRootStore';
import { type AskAiRequest } from '@/features/assistant/assistant.types';
import { type AskAiRequest } from '@/features/ai/assistant/assistant.types';
import { useSettingsStore } from '@/stores/settings.store';
import { format } from 'prettier';
import jsParser from 'prettier/plugins/babel';

View File

@ -6,8 +6,8 @@ import Modal from './Modal.vue';
import { CHAT_EMBED_MODAL_KEY, CHAT_TRIGGER_NODE_TYPE, WEBHOOK_NODE_TYPE } from '../constants';
import { useRootStore } from '@n8n/stores/useRootStore';
import { useWorkflowsStore } from '@/stores/workflows.store';
import HtmlEditor from '@/features/editors/components/HtmlEditor/HtmlEditor.vue';
import JsEditor from '@/features/editors/components/JsEditor/JsEditor.vue';
import HtmlEditor from '@/features/shared/editors/components/HtmlEditor/HtmlEditor.vue';
import JsEditor from '@/features/shared/editors/components/JsEditor/JsEditor.vue';
import { useI18n } from '@n8n/i18n';
import { I18nT } from 'vue-i18n';

View File

@ -5,7 +5,7 @@ import type { ModalKey } from '@/Interface';
import { VALID_EMAIL_REGEX } from '@/constants';
import Modal from '@/components/Modal.vue';
import { useRootStore } from '@n8n/stores/useRootStore';
import { useUsersStore } from '@/features/users/users.store';
import { useUsersStore } from '@/features/settings/users/users.store';
import { createEventBus } from '@n8n/utils/event-bus';
import { useToast } from '@/composables/useToast';
import { useNpsSurveyStore } from '@/stores/npsSurvey.store';

View File

@ -4,9 +4,9 @@ import userEvent from '@testing-library/user-event';
import type { NodeError } from 'n8n-workflow';
import { mockedStore } from '@/__tests__/utils';
import { createComponentRenderer } from '@/__tests__/render';
import type { IExecutionResponse } from '@/features/executions/executions.types';
import type { IExecutionResponse } from '@/features/execution/executions/executions.types';
import NodeErrorView from '@/components/Error/NodeErrorView.vue';
import { useChatPanelStore } from '@/features/assistant/chatPanel.store';
import { useChatPanelStore } from '@/features/ai/assistant/chatPanel.store';
import { useNodeTypesStore } from '@/stores/nodeTypes.store';
import { useNDVStore } from '@/stores/ndv.store';
import { useWorkflowsStore } from '@/stores/workflows.store';

View File

@ -21,11 +21,11 @@ import { isCommunityPackageName } from 'n8n-workflow';
import { sanitizeHtml } from '@/utils/htmlUtils';
import { MAX_DISPLAY_DATA_SIZE, NEW_ASSISTANT_SESSION_MODAL, VIEWS } from '@/constants';
import type { BaseTextKey } from '@n8n/i18n';
import { useChatPanelStore } from '@/features/assistant/chatPanel.store';
import { useAssistantStore } from '@/features/assistant/assistant.store';
import type { ChatRequest } from '@/features/assistant/assistant.types';
import { useChatPanelStore } from '@/features/ai/assistant/chatPanel.store';
import { useAssistantStore } from '@/features/ai/assistant/assistant.store';
import type { ChatRequest } from '@/features/ai/assistant/assistant.types';
import { useUIStore } from '@/stores/ui.store';
import { useAIAssistantHelpers } from '@/features/assistant/composables/useAIAssistantHelpers';
import { useAIAssistantHelpers } from '@/features/ai/assistant/composables/useAIAssistantHelpers';
import {
N8nInlineAskAssistantButton,
N8nButton,

View File

@ -13,13 +13,13 @@ import type { Segment } from '@/types/expressions';
import type { INodeProperties } from 'n8n-workflow';
import { NodeConnectionTypes } from 'n8n-workflow';
import { outputTheme } from './ExpressionEditorModal/theme';
import ExpressionOutput from '@/features/editors/components/InlineExpressionEditor/ExpressionOutput.vue';
import ExpressionOutput from '@/features/shared/editors/components/InlineExpressionEditor/ExpressionOutput.vue';
import VirtualSchema from '@/components/VirtualSchema.vue';
import OutputItemSelect from '@/features/editors/components/InlineExpressionEditor/OutputItemSelect.vue';
import OutputItemSelect from '@/features/shared/editors/components/InlineExpressionEditor/OutputItemSelect.vue';
import { useI18n } from '@n8n/i18n';
import { useDebounce } from '@/composables/useDebounce';
import DraggableTarget from './DraggableTarget.vue';
import { dropInExpressionEditor } from '@/features/editors/plugins/codemirror/dragAndDrop';
import { dropInExpressionEditor } from '@/features/shared/editors/plugins/codemirror/dragAndDrop';
import { APP_MODALS_ELEMENT_ID } from '@/constants';
import { useThrottleFn } from '@vueuse/core';

View File

@ -4,17 +4,17 @@ import { Prec } from '@codemirror/state';
import { dropCursor, EditorView, keymap } from '@codemirror/view';
import { computed, onMounted, ref, watch } from 'vue';
import { n8nAutocompletion, n8nLang } from '@/features/editors/plugins/codemirror/n8nLang';
import { n8nAutocompletion, n8nLang } from '@/features/shared/editors/plugins/codemirror/n8nLang';
import { forceParse } from '@/utils/forceParse';
import { inputTheme } from './theme';
import { useExpressionEditor } from '@/features/editors/composables/useExpressionEditor';
import { infoBoxTooltips } from '@/features/editors/plugins/codemirror/tooltips/InfoBoxTooltip';
import { useExpressionEditor } from '@/features/shared/editors/composables/useExpressionEditor';
import { infoBoxTooltips } from '@/features/shared/editors/plugins/codemirror/tooltips/InfoBoxTooltip';
import type { Segment } from '@/types/expressions';
import { removeExpressionPrefix } from '@/utils/expressions';
import { mappingDropCursor } from '@/features/editors/plugins/codemirror/dragAndDrop';
import { editorKeymap } from '@/features/editors/plugins/codemirror/keymap';
import { expressionCloseBrackets } from '@/features/editors/plugins/codemirror/expressionCloseBrackets';
import { mappingDropCursor } from '@/features/shared/editors/plugins/codemirror/dragAndDrop';
import { editorKeymap } from '@/features/shared/editors/plugins/codemirror/keymap';
import { expressionCloseBrackets } from '@/features/shared/editors/plugins/codemirror/expressionCloseBrackets';
import type { TargetNodeParameterContext } from '@/Interface';
type Props = {

View File

@ -1,5 +1,5 @@
import { EditorView } from '@codemirror/view';
import { highlighter } from '@/features/editors/plugins/codemirror/resolvableHighlighter';
import { highlighter } from '@/features/shared/editors/plugins/codemirror/resolvableHighlighter';
const commonThemeProps = (isReadOnly = false) => ({
'&': {

View File

@ -4,21 +4,21 @@ import { onClickOutside } from '@vueuse/core';
import DraggableTarget from '@/components/DraggableTarget.vue';
import ExpressionFunctionIcon from '@/components/ExpressionFunctionIcon.vue';
import InlineExpressionEditorInput from '@/features/editors/components/InlineExpressionEditor/InlineExpressionEditorInput.vue';
import InlineExpressionEditorOutput from '@/features/editors/components/InlineExpressionEditor/InlineExpressionEditorOutput.vue';
import InlineExpressionEditorInput from '@/features/shared/editors/components/InlineExpressionEditor/InlineExpressionEditorInput.vue';
import InlineExpressionEditorOutput from '@/features/shared/editors/components/InlineExpressionEditor/InlineExpressionEditorOutput.vue';
import { useNDVStore } from '@/stores/ndv.store';
import { useWorkflowsStore } from '@/stores/workflows.store';
import { createExpressionTelemetryPayload } from '@/utils/telemetryUtils';
import { useTelemetry } from '@/composables/useTelemetry';
import { dropInExpressionEditor } from '@/features/editors/plugins/codemirror/dragAndDrop';
import { dropInExpressionEditor } from '@/features/shared/editors/plugins/codemirror/dragAndDrop';
import type { Segment } from '@/types/expressions';
import { startCompletion } from '@codemirror/autocomplete';
import type { EditorState, SelectionRange } from '@codemirror/state';
import type { IDataObject } from 'n8n-workflow';
import { createEventBus, type EventBus } from '@n8n/utils/event-bus';
import { CanvasKey } from '@/constants';
import { useIsInExperimentalNdv } from '@/features/canvas/experimental/composables/useIsInExperimentalNdv';
import { useIsInExperimentalNdv } from '@/features/workflows/canvas/experimental/composables/useIsInExperimentalNdv';
import { isEventTargetContainedBy } from '@/utils/htmlUtils';
import { N8nButton } from '@n8n/design-system';

View File

@ -1,4 +1,4 @@
import { createCanvasGraphNode } from '@/features/canvas/__tests__/utils';
import { createCanvasGraphNode } from '@/features/workflows/canvas/__tests__/utils';
import { createTestNode, createTestWorkflow, mockNodeTypeDescription } from '@/__tests__/mocks';
import { createComponentRenderer } from '@/__tests__/render';
import { mockedStore } from '@/__tests__/utils';
@ -11,7 +11,7 @@ import { useVueFlow } from '@vue-flow/core';
import type { INodeProperties } from 'n8n-workflow';
import { setActivePinia } from 'pinia';
import { reactive } from 'vue';
import { useExperimentalNdvStore } from '@/features/canvas/experimental/experimentalNdv.store';
import { useExperimentalNdvStore } from '@/features/workflows/canvas/experimental/experimentalNdv.store';
import FocusPanel from './FocusPanel.vue';
vi.mock('vue-router', () => ({

View File

@ -1,13 +1,13 @@
<script setup lang="ts">
import CodeNodeEditor from '@/features/editors/components/CodeNodeEditor/CodeNodeEditor.vue';
import CssEditor from '@/features/editors/components/CssEditor/CssEditor.vue';
import CodeNodeEditor from '@/features/shared/editors/components/CodeNodeEditor/CodeNodeEditor.vue';
import CssEditor from '@/features/shared/editors/components/CssEditor/CssEditor.vue';
import ExpressionEditorModalInput from '@/components/ExpressionEditorModal/ExpressionEditorModalInput.vue';
import HtmlEditor from '@/features/editors/components/HtmlEditor/HtmlEditor.vue';
import JsEditor from '@/features/editors/components/JsEditor/JsEditor.vue';
import JsonEditor from '@/features/editors/components/JsonEditor/JsonEditor.vue';
import HtmlEditor from '@/features/shared/editors/components/HtmlEditor/HtmlEditor.vue';
import JsEditor from '@/features/shared/editors/components/JsEditor/JsEditor.vue';
import JsonEditor from '@/features/shared/editors/components/JsonEditor/JsonEditor.vue';
import NodeExecuteButton from '@/components/NodeExecuteButton.vue';
import ParameterOptions from '@/components/ParameterOptions.vue';
import SqlEditor from '@/features/editors/components/SqlEditor/SqlEditor.vue';
import SqlEditor from '@/features/shared/editors/components/SqlEditor/SqlEditor.vue';
import { useFocusPanelStore } from '@/stores/focusPanel.store';
import { useNodeTypesStore } from '@/stores/nodeTypes.store';
import { computed, nextTick, ref, watch, toRef, useTemplateRef } from 'vue';
@ -32,22 +32,22 @@ import {
type INodeProperties,
isResourceLocatorValue,
} from 'n8n-workflow';
import { useEnvironmentsStore } from '@/features/environments.ee/environments.store';
import { useEnvironmentsStore } from '@/features/settings/environments.ee/environments.store';
import { htmlEditorEventBus } from '@/event-bus';
import { hasFocusOnInput, isFocusableEl } from '@/utils/typesUtils';
import type { INodeUi, ResizeData, TargetNodeParameterContext } from '@/Interface';
import { useTelemetry } from '@/composables/useTelemetry';
import { useActiveElement, useThrottleFn } from '@vueuse/core';
import { useExecutionData } from '@/features/executions/composables/useExecutionData';
import { useExecutionData } from '@/features/execution/executions/composables/useExecutionData';
import { useWorkflowsStore } from '@/stores/workflows.store';
import ExperimentalNodeDetailsDrawer from '@/features/canvas/experimental/components/ExperimentalNodeDetailsDrawer.vue';
import { useExperimentalNdvStore } from '@/features/canvas/experimental/experimentalNdv.store';
import ExperimentalNodeDetailsDrawer from '@/features/workflows/canvas/experimental/components/ExperimentalNodeDetailsDrawer.vue';
import { useExperimentalNdvStore } from '@/features/workflows/canvas/experimental/experimentalNdv.store';
import { useNDVStore } from '@/stores/ndv.store';
import { useVueFlow } from '@vue-flow/core';
import ExperimentalFocusPanelHeader from '@/features/canvas/experimental/components/ExperimentalFocusPanelHeader.vue';
import ExperimentalFocusPanelHeader from '@/features/workflows/canvas/experimental/components/ExperimentalFocusPanelHeader.vue';
import { useTelemetryContext } from '@/composables/useTelemetryContext';
import { type ContextMenuAction } from '@/features/ui/contextMenu/composables/useContextMenuItems';
import { type CanvasNode, CanvasNodeRenderType } from '@/features/canvas/canvas.types';
import { type ContextMenuAction } from '@/features/shared/contextMenu/composables/useContextMenuItems';
import { type CanvasNode, CanvasNodeRenderType } from '@/features/workflows/canvas/canvas.types';
import { useCanvasOperations } from '@/composables/useCanvasOperations';
import {

View File

@ -3,9 +3,9 @@ import { fireEvent, screen } from '@testing-library/vue';
import FreeAiCreditsCallout from '@/components/FreeAiCreditsCallout.vue';
import { useCredentialsStore } from '@/features/credentials/credentials.store';
import { useSettingsStore } from '@/stores/settings.store';
import { useUsersStore } from '@/features/users/users.store';
import { useUsersStore } from '@/features/settings/users/users.store';
import { useNDVStore } from '@/stores/ndv.store';
import { useProjectsStore } from '@/features/projects/projects.store';
import { useProjectsStore } from '@/features/collaboration/projects/projects.store';
import { useRootStore } from '@n8n/stores/useRootStore';
import { useToast } from '@/composables/useToast';
import { renderComponent } from '@/__tests__/render';
@ -28,7 +28,7 @@ vi.mock('@/features/credentials/credentials.store', () => ({
useCredentialsStore: vi.fn(),
}));
vi.mock('@/features/users/users.store', () => ({
vi.mock('@/features/settings/users/users.store', () => ({
useUsersStore: vi.fn(),
}));
@ -36,7 +36,7 @@ vi.mock('@/stores/ndv.store', () => ({
useNDVStore: vi.fn(),
}));
vi.mock('@/features/projects/projects.store', () => ({
vi.mock('@/features/collaboration/projects/projects.store', () => ({
useProjectsStore: vi.fn(),
}));

View File

@ -4,9 +4,9 @@ import { useTelemetry } from '@/composables/useTelemetry';
import { useToast } from '@/composables/useToast';
import { useCredentialsStore } from '@/features/credentials/credentials.store';
import { useNDVStore } from '@/stores/ndv.store';
import { useProjectsStore } from '@/features/projects/projects.store';
import { useProjectsStore } from '@/features/collaboration/projects/projects.store';
import { useSettingsStore } from '@/stores/settings.store';
import { useUsersStore } from '@/features/users/users.store';
import { useUsersStore } from '@/features/settings/users/users.store';
import { computed, ref } from 'vue';
import { OPEN_AI_API_CREDENTIAL_TYPE } from 'n8n-workflow';
import { N8nButton, N8nCallout, N8nText } from '@n8n/design-system';

View File

@ -6,7 +6,7 @@ import { STORES } from '@n8n/stores';
import userEvent from '@testing-library/user-event';
import { useWorkflowsStore } from '@/stores/workflows.store';
import { useAgentRequestStore } from '@n8n/stores/useAgentRequestStore';
import { useProjectsStore } from '@/features/projects/projects.store';
import { useProjectsStore } from '@/features/collaboration/projects/projects.store';
import { useRouter } from 'vue-router';
import type { Workflow } from 'n8n-workflow';
import { NodeConnectionTypes } from 'n8n-workflow';

View File

@ -20,7 +20,7 @@ import { useTelemetry } from '@/composables/useTelemetry';
import { useNDVStore } from '@/stores/ndv.store';
import { useNodeTypesStore } from '@/stores/nodeTypes.store';
import { type JSONSchema7 } from 'json-schema';
import { useProjectsStore } from '@/features/projects/projects.store';
import { useProjectsStore } from '@/features/collaboration/projects/projects.store';
import { ElCol, ElRow } from 'element-plus';
import { N8nButton, N8nCallout, N8nFormInputs, N8nText } from '@n8n/design-system';

View File

@ -10,7 +10,7 @@ import {
} from '@/constants';
import { useNodeTypesStore } from '@/stores/nodeTypes.store';
import { useWorkflowsStore } from '@/stores/workflows.store';
import { waitingNodeTooltip } from '@/features/executions/executions.utils';
import { waitingNodeTooltip } from '@/features/execution/executions/executions.utils';
import uniqBy from 'lodash/uniqBy';
import {
type INodeInputConfiguration,
@ -29,7 +29,7 @@ import WireMeUp from './WireMeUp.vue';
import { usePostHog } from '@/stores/posthog.store';
import { type IRunDataDisplayMode } from '@/Interface';
import { I18nT } from 'vue-i18n';
import { type SearchShortcut } from '@/features/canvas/canvas.types';
import { type SearchShortcut } from '@/features/workflows/canvas/canvas.types';
import { useRouter } from 'vue-router';
import { useRunWorkflow } from '@/composables/useRunWorkflow';

View File

@ -11,10 +11,10 @@ import {
VIEWS,
N8N_MAIN_GITHUB_REPO_URL,
} from '@/constants';
import { useExecutionsStore } from '@/features/executions/executions.store';
import { useExecutionsStore } from '@/features/execution/executions/executions.store';
import { useNDVStore } from '@/stores/ndv.store';
import { useSettingsStore } from '@/stores/settings.store';
import { useSourceControlStore } from '@/features/sourceControl.ee/sourceControl.store';
import { useSourceControlStore } from '@/features/integrations/sourceControl.ee/sourceControl.store';
import { useUIStore } from '@/stores/ui.store';
import { useWorkflowsStore } from '@/stores/workflows.store';
import { computed, onBeforeMount, onBeforeUnmount, onMounted, ref, watch } from 'vue';
@ -23,7 +23,7 @@ import { useRoute, useRouter } from 'vue-router';
import { useLocalStorage } from '@vueuse/core';
import GithubButton from 'vue-github-button';
import type { FolderShortInfo } from '@/features/folders/folders.types';
import type { FolderShortInfo } from '@/features/core/folders/folders.types';
import { N8nIcon } from '@n8n/design-system';
import { useToast } from '@/composables/useToast';

View File

@ -7,7 +7,7 @@ import {
VIEWS,
WORKFLOW_SHARE_MODAL_KEY,
} from '@/constants';
import { PROJECT_MOVE_RESOURCE_MODAL } from '@/features/projects/projects.constants';
import { PROJECT_MOVE_RESOURCE_MODAL } from '@/features/collaboration/projects/projects.constants';
import type { IWorkflowDb } from '@/Interface';
import { STORES } from '@n8n/stores';
import { createTestingPinia } from '@pinia/testing';
@ -18,8 +18,8 @@ import { useRoute, useRouter } from 'vue-router';
import { useMessage } from '@/composables/useMessage';
import { useToast } from '@/composables/useToast';
import { useWorkflowsStore } from '@/stores/workflows.store';
import { useProjectsStore } from '@/features/projects/projects.store';
import type { Project } from '@/features/projects/projects.types';
import { useProjectsStore } from '@/features/collaboration/projects/projects.store';
import type { Project } from '@/features/collaboration/projects/projects.types';
vi.mock('vue-router', async (importOriginal) => ({
// eslint-disable-next-line @typescript-eslint/consistent-type-imports

View File

@ -1,9 +1,9 @@
<script lang="ts" setup>
import BreakpointsObserver from '@/components/BreakpointsObserver.vue';
import EnterpriseEdition from '@/components/EnterpriseEdition.ee.vue';
import FolderBreadcrumbs from '@/features/folders/components/FolderBreadcrumbs.vue';
import CollaborationPane from '@/features/collaboration/components/CollaborationPane.vue';
import WorkflowHistoryButton from '@/features/workflowHistory/components/WorkflowHistoryButton.vue';
import FolderBreadcrumbs from '@/features/core/folders/components/FolderBreadcrumbs.vue';
import CollaborationPane from '@/features/collaboration/collaboration/components/CollaborationPane.vue';
import WorkflowHistoryButton from '@/features/workflows/workflowHistory/components/WorkflowHistoryButton.vue';
import PushConnectionTracker from '@/components/PushConnectionTracker.vue';
import SaveButton from '@/components/SaveButton.vue';
import WorkflowActivator from '@/components/WorkflowActivator.vue';
@ -22,15 +22,15 @@ import {
WORKFLOW_SETTINGS_MODAL_KEY,
WORKFLOW_SHARE_MODAL_KEY,
} from '@/constants';
import { PROJECT_MOVE_RESOURCE_MODAL } from '@/features/projects/projects.constants';
import { ResourceType } from '@/features/projects/projects.utils';
import { PROJECT_MOVE_RESOURCE_MODAL } from '@/features/collaboration/projects/projects.constants';
import { ResourceType } from '@/features/collaboration/projects/projects.utils';
import { useProjectsStore } from '@/features/projects/projects.store';
import { useProjectsStore } from '@/features/collaboration/projects/projects.store';
import { useSettingsStore } from '@/stores/settings.store';
import { useSourceControlStore } from '@/features/sourceControl.ee/sourceControl.store';
import { useSourceControlStore } from '@/features/integrations/sourceControl.ee/sourceControl.store';
import { useTagsStore } from '@/stores/tags.store';
import { useUIStore } from '@/stores/ui.store';
import { useUsersStore } from '@/features/users/users.store';
import { useUsersStore } from '@/features/settings/users/users.store';
import { useWorkflowsStore } from '@/stores/workflows.store';
import { useRootStore } from '@n8n/stores/useRootStore';
@ -43,10 +43,10 @@ import { useWorkflowHelpers } from '@/composables/useWorkflowHelpers';
import { useWorkflowSaving } from '@/composables/useWorkflowSaving';
import { nodeViewEventBus } from '@/event-bus';
import type { ActionDropdownItem, IWorkflowDb, IWorkflowToShare } from '@/Interface';
import type { FolderShortInfo } from '@/features/folders/folders.types';
import { useFoldersStore } from '@/features/folders/folders.store';
import type { FolderShortInfo } from '@/features/core/folders/folders.types';
import { useFoldersStore } from '@/features/core/folders/folders.store';
import { useNpsSurveyStore } from '@/stores/npsSurvey.store';
import { ProjectTypes } from '@/features/projects/projects.types';
import { ProjectTypes } from '@/features/collaboration/projects/projects.types';
import { sanitizeFilename } from '@/utils/fileUtils';
import { hasPermission } from '@/utils/rbac/permissions';
import type { PathItem } from '@n8n/design-system/components/N8nBreadcrumbs/Breadcrumbs.vue';

View File

@ -6,9 +6,9 @@ import { defaultSettings } from '@/__tests__/defaults';
import MainSidebar from '@/components/MainSidebar.vue';
import { useSettingsStore } from '@/stores/settings.store';
import { useUIStore } from '@/stores/ui.store';
import { useSourceControlStore } from '@/features/sourceControl.ee/sourceControl.store';
import { useSourceControlStore } from '@/features/integrations/sourceControl.ee/sourceControl.store';
import { useVersionsStore } from '@/stores/versions.store';
import { useUsersStore } from '@/features/users/users.store';
import { useUsersStore } from '@/features/settings/users/users.store';
import type { Version } from '@n8n/rest-api-client/api/versions';
vi.mock('vue-router', () => ({

View File

@ -28,17 +28,17 @@ import {
WHATS_NEW_MODAL_KEY,
} from '@/constants';
import { EXTERNAL_LINKS } from '@/constants/externalLinks';
import { CHAT_VIEW } from '@/features/chatHub/constants';
import { CHAT_VIEW } from '@/features/ai/chatHub/constants';
import { hasPermission } from '@/utils/rbac/permissions';
import { useCloudPlanStore } from '@/stores/cloudPlan.store';
import { useRootStore } from '@n8n/stores/useRootStore';
import { useSettingsStore } from '@/stores/settings.store';
import { useTemplatesStore } from '@/features/templates/templates.store';
import { useTemplatesStore } from '@/features/workflows/templates/templates.store';
import { useUIStore } from '@/stores/ui.store';
import { useUsersStore } from '@/features/users/users.store';
import { useUsersStore } from '@/features/settings/users/users.store';
import { useVersionsStore } from '@/stores/versions.store';
import { useWorkflowsStore } from '@/stores/workflows.store';
import { useSourceControlStore } from '@/features/sourceControl.ee/sourceControl.store';
import { useSourceControlStore } from '@/features/integrations/sourceControl.ee/sourceControl.store';
import { useDebounce } from '@/composables/useDebounce';
import { useExternalHooks } from '@/composables/useExternalHooks';
import { useTelemetry } from '@/composables/useTelemetry';
@ -55,7 +55,7 @@ import { usePersonalizedTemplatesV3Store } from '@/experiments/personalizedTempl
import TemplateTooltip from '@/experiments/personalizedTemplatesV3/components/TemplateTooltip.vue';
import { useKeybindings } from '@/composables/useKeybindings';
import { useCalloutHelpers } from '@/composables/useCalloutHelpers';
import ProjectNavigation from '@/features/projects/components/ProjectNavigation.vue';
import ProjectNavigation from '@/features/collaboration/projects/components/ProjectNavigation.vue';
import MainSidebarSourceControl from './MainSidebarSourceControl.vue';
import MainSidebarUserArea from '@/components/MainSidebarUserArea.vue';
import { usePostHog } from '@/stores/posthog.store';

View File

@ -7,10 +7,10 @@ import { reactive } from 'vue';
import { STORES } from '@n8n/stores';
import { SETTINGS_STORE_DEFAULT_STATE } from '@/__tests__/utils';
import MainSidebarSourceControl from '@/components/MainSidebarSourceControl.vue';
import { useSourceControlStore } from '@/features/sourceControl.ee/sourceControl.store';
import { useSourceControlStore } from '@/features/integrations/sourceControl.ee/sourceControl.store';
import { useRBACStore } from '@/stores/rbac.store';
import { createComponentRenderer } from '@/__tests__/render';
import { useProjectsStore } from '@/features/projects/projects.store';
import { useProjectsStore } from '@/features/collaboration/projects/projects.store';
let pinia: ReturnType<typeof createTestingPinia>;
let sourceControlStore: ReturnType<typeof useSourceControlStore>;

View File

@ -3,8 +3,8 @@ import { computed, ref } from 'vue';
import { useI18n } from '@n8n/i18n';
import { hasPermission } from '@/utils/rbac/permissions';
import { getResourcePermissions } from '@n8n/permissions';
import { useSourceControlStore } from '@/features/sourceControl.ee/sourceControl.store';
import { useProjectsStore } from '@/features/projects/projects.store';
import { useSourceControlStore } from '@/features/integrations/sourceControl.ee/sourceControl.store';
import { useProjectsStore } from '@/features/collaboration/projects/projects.store';
import { useRoute, useRouter } from 'vue-router';
import { N8nButton, N8nIcon, N8nTooltip } from '@n8n/design-system';

View File

@ -1,6 +1,6 @@
<script setup lang="ts">
import { VIEWS } from '@/constants';
import { useUsersStore } from '@/features/users/users.store';
import { useUsersStore } from '@/features/settings/users/users.store';
import {
type IMenuItem,
N8nAvatar,

View File

@ -31,8 +31,8 @@ import {
EXPERIMENT_TEMPLATE_RECO_V3_KEY,
CONFIRM_PASSWORD_MODAL_KEY,
} from '@/constants';
import { DEBUG_PAYWALL_MODAL_KEY } from '@/features/executions/executions.constants';
import { VARIABLE_MODAL_KEY } from '@/features/environments.ee/environments.constants';
import { DEBUG_PAYWALL_MODAL_KEY } from '@/features/execution/executions/executions.constants';
import { VARIABLE_MODAL_KEY } from '@/features/settings/environments.ee/environments.constants';
import {
CREDENTIAL_EDIT_MODAL_KEY,
CREDENTIAL_SELECT_MODAL_KEY,
@ -41,71 +41,71 @@ import {
DELETE_USER_MODAL_KEY,
INVITE_USER_MODAL_KEY,
PERSONALIZATION_MODAL_KEY,
} from '@/features/users/users.constants';
import { COMMUNITY_PLUS_ENROLLMENT_MODAL } from '@/features/usage/usage.constants';
} from '@/features/settings/users/users.constants';
import { COMMUNITY_PLUS_ENROLLMENT_MODAL } from '@/features/settings/usage/usage.constants';
import {
DELETE_FOLDER_MODAL_KEY,
MOVE_FOLDER_MODAL_KEY,
} from '@/features/folders/folders.constants';
} from '@/features/core/folders/folders.constants';
import {
SOURCE_CONTROL_PULL_MODAL_KEY,
SOURCE_CONTROL_PUSH_MODAL_KEY,
} from '@/features/sourceControl.ee/sourceControl.constants';
import { PROJECT_MOVE_RESOURCE_MODAL } from '@/features/projects/projects.constants';
} from '@/features/integrations/sourceControl.ee/sourceControl.constants';
import { PROJECT_MOVE_RESOURCE_MODAL } from '@/features/collaboration/projects/projects.constants';
import {
COMMUNITY_PACKAGE_CONFIRM_MODAL_KEY,
COMMUNITY_PACKAGE_INSTALL_MODAL_KEY,
} from '@/features/communityNodes/communityNodes.constants';
import { API_KEY_CREATE_OR_EDIT_MODAL_KEY } from '@/features/apiKeys/apiKeys.constants';
} from '@/features/settings/communityNodes/communityNodes.constants';
import { API_KEY_CREATE_OR_EDIT_MODAL_KEY } from '@/features/settings/apiKeys/apiKeys.constants';
import AboutModal from '@/components/AboutModal.vue';
import ActivationModal from '@/components/ActivationModal.vue';
import ApiKeyCreateOrEditModal from '@/features/apiKeys/components/ApiKeyCreateOrEditModal.vue';
import NewAssistantSessionModal from '@/features/assistant/components/Chat/NewAssistantSessionModal.vue';
import ChangePasswordModal from '@/features/auth/components/ChangePasswordModal.vue';
import ConfirmPasswordModal from '@/features/auth/components/ConfirmPasswordModal.vue';
import ApiKeyCreateOrEditModal from '@/features/settings/apiKeys/components/ApiKeyCreateOrEditModal.vue';
import NewAssistantSessionModal from '@/features/ai/assistant/components/Chat/NewAssistantSessionModal.vue';
import ChangePasswordModal from '@/features/core/auth/components/ChangePasswordModal.vue';
import ConfirmPasswordModal from '@/features/core/auth/components/ConfirmPasswordModal.vue';
import ChatEmbedModal from '@/components/ChatEmbedModal.vue';
import CommunityPackageInstallModal from '@/features/communityNodes/components/CommunityPackageInstallModal.vue';
import CommunityPackageManageConfirmModal from '@/features/communityNodes/components/CommunityPackageManageConfirmModal.vue';
import CommunityPlusEnrollmentModal from '@/features/usage/components/CommunityPlusEnrollmentModal.vue';
import CommunityPackageInstallModal from '@/features/settings/communityNodes/components/CommunityPackageInstallModal.vue';
import CommunityPackageManageConfirmModal from '@/features/settings/communityNodes/components/CommunityPackageManageConfirmModal.vue';
import CommunityPlusEnrollmentModal from '@/features/settings/usage/components/CommunityPlusEnrollmentModal.vue';
import ContactPromptModal from '@/components/ContactPromptModal.vue';
import CredentialEdit from '@/features/credentials/components/CredentialEdit/CredentialEdit.vue';
import CredentialsSelectModal from '@/features/credentials/components/CredentialsSelectModal.vue';
import DebugPaywallModal from '@/features/executions/components/DebugPaywallModal.vue';
import DeleteFolderModal from '@/features/folders/components/DeleteFolderModal.vue';
import MoveToFolderModal from '@/features/folders/components/MoveToFolderModal.vue';
import DeleteUserModal from '@/features/users/components/DeleteUserModal.vue';
import DebugPaywallModal from '@/features/execution/executions/components/DebugPaywallModal.vue';
import DeleteFolderModal from '@/features/core/folders/components/DeleteFolderModal.vue';
import MoveToFolderModal from '@/features/core/folders/components/MoveToFolderModal.vue';
import DeleteUserModal from '@/features/settings/users/components/DeleteUserModal.vue';
import DuplicateWorkflowDialog from '@/components/DuplicateWorkflowDialog.vue';
import ExternalSecretsProviderModal from '@/features/externalSecrets/components/ExternalSecretsProviderModal.ee.vue';
import ExternalSecretsProviderModal from '@/features/integrations/externalSecrets.ee/components/ExternalSecretsProviderModal.ee.vue';
import FromAiParametersModal from '@/components/FromAiParametersModal.vue';
import ImportCurlModal from '@/components/ImportCurlModal.vue';
import ImportWorkflowUrlModal from '@/components/ImportWorkflowUrlModal.vue';
import InviteUsersModal from '@/features/users/components/InviteUsersModal.vue';
import MfaSetupModal from '@/features/auth/components/MfaSetupModal.vue';
import InviteUsersModal from '@/features/settings/users/components/InviteUsersModal.vue';
import MfaSetupModal from '@/features/core/auth/components/MfaSetupModal.vue';
import ModalRoot from '@/components/ModalRoot.vue';
import NpsSurvey from '@/components/NpsSurvey.vue';
import PersonalizationModal from '@/features/users/components/PersonalizationModal.vue';
import PersonalizationModal from '@/features/settings/users/components/PersonalizationModal.vue';
import PreBuiltAgentsModal from '@/components/PreBuiltAgentsModal.vue';
import ProjectMoveResourceModal from '@/features/projects/components/ProjectMoveResourceModal.vue';
import EventDestinationSettingsModal from '@/features/logStreaming.ee/components/EventDestinationSettingsModal.vue';
import SetupWorkflowCredentialsModal from '@/features/templates/components/SetupWorkflowCredentialsModal.vue';
import SourceControlPullModal from '@/features/sourceControl.ee/components/SourceControlPullModal.vue';
import SourceControlPushModal from '@/features/sourceControl.ee/components/SourceControlPushModal.vue';
import ProjectMoveResourceModal from '@/features/collaboration/projects/components/ProjectMoveResourceModal.vue';
import EventDestinationSettingsModal from '@/features/integrations/logStreaming.ee/components/EventDestinationSettingsModal.vue';
import SetupWorkflowCredentialsModal from '@/features/workflows/templates/components/SetupWorkflowCredentialsModal.vue';
import SourceControlPullModal from '@/features/integrations/sourceControl.ee/components/SourceControlPullModal.vue';
import SourceControlPushModal from '@/features/integrations/sourceControl.ee/components/SourceControlPushModal.vue';
import AnnotationTagsManager from '@/components/TagsManager/AnnotationTagsManager.ee.vue';
import WorkflowTagsManager from '@/components/TagsManager/WorkflowTagsManager.vue';
import UpdatesPanel from '@/components/UpdatesPanel.vue';
import WhatsNewModal from '@/components/WhatsNewModal.vue';
import WorkflowActivationConflictingWebhookModal from '@/components/WorkflowActivationConflictingWebhookModal.vue';
import WorkflowExtractionNameModal from '@/components/WorkflowExtractionNameModal.vue';
import WorkflowHistoryVersionRestoreModal from '@/features/workflowHistory/components/WorkflowHistoryVersionRestoreModal.vue';
import WorkflowHistoryVersionRestoreModal from '@/features/workflows/workflowHistory/components/WorkflowHistoryVersionRestoreModal.vue';
import WorkflowSettings from '@/components/WorkflowSettings.vue';
import WorkflowShareModal from '@/components/WorkflowShareModal.ee.vue';
import WorkflowDiffModal from '@/features/workflow-diff/WorkflowDiffModal.vue';
import WorkflowDiffModal from '@/features/workflows/workflowDiff/WorkflowDiffModal.vue';
import type { EventBus } from '@n8n/utils/event-bus';
import PromptMfaCodeModal from '@/features/auth/components/PromptMfaCodeModal.vue';
import PromptMfaCodeModal from '@/features/core/auth/components/PromptMfaCodeModal.vue';
import DynamicModalLoader from './DynamicModalLoader.vue';
import NodeRecommendationModalV2 from '@/experiments/templateRecoV2/components/NodeRecommendationModal.vue';
import NodeRecommendationModalV3 from '@/experiments/personalizedTemplatesV3/components/NodeRecommendationModal.vue';
import VariableModal from '@/features/environments.ee/components/VariableModal.vue';
import VariableModal from '@/features/settings/environments.ee/components/VariableModal.vue';
</script>
<template>

View File

@ -19,10 +19,10 @@ import { useActions } from './NodeCreator/composables/useActions';
import KeyboardShortcutTooltip from '@/components/KeyboardShortcutTooltip.vue';
import { useI18n } from '@n8n/i18n';
import { useTelemetry } from '@/composables/useTelemetry';
import { useAssistantStore } from '@/features/assistant/assistant.store';
import { useBuilderStore } from '@/features/assistant/builder.store';
import { useChatPanelStore } from '@/features/assistant/chatPanel.store';
import { useCommandBar } from '@/features/ui/commandBar/composables/useCommandBar';
import { useAssistantStore } from '@/features/ai/assistant/assistant.store';
import { useBuilderStore } from '@/features/ai/assistant/builder.store';
import { useChatPanelStore } from '@/features/ai/assistant/chatPanel.store';
import { useCommandBar } from '@/features/shared/commandBar/composables/useCommandBar';
import { N8nAssistantIcon, N8nButton, N8nIconButton, N8nTooltip } from '@n8n/design-system';

View File

@ -1,6 +1,6 @@
<script setup lang="ts">
import { useI18n } from '@n8n/i18n';
import CommunityNodeInstallHint from '@/features/communityNodes/components/nodeCreator/CommunityNodeInstallHint.vue';
import CommunityNodeInstallHint from '@/features/settings/communityNodes/components/nodeCreator/CommunityNodeInstallHint.vue';
import { N8nButton } from '@n8n/design-system';
export interface Props {
isPreview: boolean;

View File

@ -6,7 +6,7 @@ import {
DRAG_EVENT_DATA_KEY,
HITL_SUBCATEGORY,
} from '@/constants';
import { COMMUNITY_NODES_INSTALLATION_DOCS_URL } from '@/features/communityNodes/communityNodes.constants';
import { COMMUNITY_NODES_INSTALLATION_DOCS_URL } from '@/features/settings/communityNodes/communityNodes.constants';
import { computed, ref } from 'vue';
import NodeIcon from '@/components/NodeIcon.vue';

View File

@ -15,7 +15,7 @@ import {
OPEN_AI_NODE_TYPE,
} from '@/constants';
import { useUsersStore } from '@/features/users/users.store';
import { useUsersStore } from '@/features/settings/users/users.store';
import { useExternalHooks } from '@/composables/useExternalHooks';
import { useActions } from '../composables/useActions';
@ -31,8 +31,8 @@ import { useNodeCreatorStore } from '@/stores/nodeCreator.store';
import OrderSwitcher from './../OrderSwitcher.vue';
import { getActiveViewCallouts, isNodePreviewKey } from '../utils';
import CommunityNodeInfo from '@/features/communityNodes/components/nodeCreator/CommunityNodeInfo.vue';
import CommunityNodeFooter from '@/features/communityNodes/components/nodeCreator/CommunityNodeFooter.vue';
import CommunityNodeInfo from '@/features/settings/communityNodes/components/nodeCreator/CommunityNodeInfo.vue';
import CommunityNodeFooter from '@/features/settings/communityNodes/components/nodeCreator/CommunityNodeFooter.vue';
import { useCalloutHelpers } from '@/composables/useCalloutHelpers';
import { N8nCallout, N8nInfoTip } from '@n8n/design-system';

View File

@ -12,7 +12,7 @@ import NodesListPanel from './Panel/NodesListPanel.vue';
import { useCredentialsStore } from '@/features/credentials/credentials.store';
import { useUIStore } from '@/stores/ui.store';
import { DRAG_EVENT_DATA_KEY } from '@/constants';
import { useChatPanelStore } from '@/features/assistant/chatPanel.store';
import { useChatPanelStore } from '@/features/ai/assistant/chatPanel.store';
import type { NodeTypeSelectedPayload } from '@/Interface';
import { onClickOutside } from '@vueuse/core';

View File

@ -1,7 +1,7 @@
<script setup lang="ts">
import { useInstallNode } from '@/features/communityNodes/composables/useInstallNode';
import { useInstallNode } from '@/features/settings/communityNodes/composables/useInstallNode';
import { useNodeCreatorStore } from '@/stores/nodeCreator.store';
import { useUsersStore } from '@/features/users/users.store';
import { useUsersStore } from '@/features/settings/users/users.store';
import { getNodeIconSource } from '@/utils/nodeIcon';
import { N8nButton, N8nIcon, N8nText, N8nTooltip } from '@n8n/design-system';
import { i18n } from '@n8n/i18n';

View File

@ -22,11 +22,11 @@ import { useI18n } from '@n8n/i18n';
import { useDebounce } from '@/composables/useDebounce';
import NodeIcon from '@/components/NodeIcon.vue';
import CommunityNodeDetails from '@/features/communityNodes/components/nodeCreator/CommunityNodeDetails.vue';
import CommunityNodeInfo from '@/features/communityNodes/components/nodeCreator/CommunityNodeInfo.vue';
import CommunityNodeDocsLink from '@/features/communityNodes/components/nodeCreator/CommunityNodeDocsLink.vue';
import CommunityNodeFooter from '@/features/communityNodes/components/nodeCreator/CommunityNodeFooter.vue';
import { useUsersStore } from '@/features/users/users.store';
import CommunityNodeDetails from '@/features/settings/communityNodes/components/nodeCreator/CommunityNodeDetails.vue';
import CommunityNodeInfo from '@/features/settings/communityNodes/components/nodeCreator/CommunityNodeInfo.vue';
import CommunityNodeDocsLink from '@/features/settings/communityNodes/components/nodeCreator/CommunityNodeDocsLink.vue';
import CommunityNodeFooter from '@/features/settings/communityNodes/components/nodeCreator/CommunityNodeFooter.vue';
import { useUsersStore } from '@/features/settings/users/users.store';
import { N8nIcon, N8nNotice } from '@n8n/design-system';
const i18n = useI18n();

View File

@ -10,7 +10,7 @@ import ItemsRenderer from './ItemsRenderer.vue';
import CategoryItem from '../ItemTypes/CategoryItem.vue';
import { useNodeCreatorStore } from '@/stores/nodeCreator.store';
import CommunityNodeInstallHint from '@/features/communityNodes/components/nodeCreator/CommunityNodeInstallHint.vue';
import CommunityNodeInstallHint from '@/features/settings/communityNodes/components/nodeCreator/CommunityNodeInstallHint.vue';
export interface Props {
elements: INodeCreateElement[];

View File

@ -20,7 +20,7 @@ import { i18n } from '@n8n/i18n';
import { getCredentialOnlyNodeType } from '@/utils/credentialOnlyNodes';
import { formatTriggerActionName } from '../utils';
import { useEvaluationStore } from '@/features/evaluation.ee/evaluation.store';
import { useEvaluationStore } from '@/features/ai/evaluation.ee/evaluation.store';
import { useSettingsStore } from '@/stores/settings.store';
const PLACEHOLDER_RECOMMENDED_ACTION_KEY = 'placeholder_recommended';

View File

@ -43,7 +43,7 @@ import type { CommunityNodeDetails, ViewStack } from './composables/useViewStack
import {
PrebuiltAgentTemplates,
SampleTemplates,
} from '@/features/templates/utils/workflowSamples';
} from '@/features/workflows/templates/utils/workflowSamples';
const COMMUNITY_NODE_TYPE_PREVIEW_TOKEN = '-preview';

View File

@ -11,7 +11,7 @@ import { START_NODE_TYPE } from 'n8n-workflow';
import { useSettingsStore } from '@/stores/settings.store';
import { AIView } from './viewsData';
import { mockNodeTypeDescription } from '@/__tests__/mocks';
import { useTemplatesStore } from '@/features/templates/templates.store';
import { useTemplatesStore } from '@/features/workflows/templates/templates.store';
import { usePostHog } from '@/stores/posthog.store';
let posthogStore: ReturnType<typeof usePostHog>;

View File

@ -64,11 +64,11 @@ import { useNodeTypesStore } from '@/stores/nodeTypes.store';
import type { SimplifiedNodeType } from '@/Interface';
import type { INodeTypeDescription, NodeConnectionType, Themed } from 'n8n-workflow';
import { EVALUATION_TRIGGER_NODE_TYPE, NodeConnectionTypes } from 'n8n-workflow';
import { useTemplatesStore } from '@/features/templates/templates.store';
import { useTemplatesStore } from '@/features/workflows/templates/templates.store';
import type { BaseTextKey } from '@n8n/i18n';
import camelCase from 'lodash/camelCase';
import { useSettingsStore } from '@/stores/settings.store';
import { useEvaluationStore } from '@/features/evaluation.ee/evaluation.store';
import { useEvaluationStore } from '@/features/ai/evaluation.ee/evaluation.store';
import { getAiTemplatesCallout, getPreBuiltAgentsCalloutWithDivider } from './utils';
import { useCalloutHelpers } from '@/composables/useCalloutHelpers';

View File

@ -4,7 +4,7 @@ import { waitFor, fireEvent } from '@testing-library/vue';
import NodeDetailsView from '@/components/NodeDetailsView.vue';
import { VIEWS } from '@/constants';
import { useSettingsStore } from '@/stores/settings.store';
import { useUsersStore } from '@/features/users/users.store';
import { useUsersStore } from '@/features/settings/users/users.store';
import { useNDVStore } from '@/stores/ndv.store';
import { useNodeTypesStore } from '@/stores/nodeTypes.store';
import { useWorkflowsStore } from '@/stores/workflows.store';

View File

@ -24,25 +24,25 @@ import NodeWebhooks from '@/components/NodeWebhooks.vue';
import ParameterInputList from '@/components/ParameterInputList.vue';
import get from 'lodash/get';
import ExperimentalEmbeddedNdvHeader from '@/features/canvas/experimental/components/ExperimentalEmbeddedNdvHeader.vue';
import ExperimentalEmbeddedNdvHeader from '@/features/workflows/canvas/experimental/components/ExperimentalEmbeddedNdvHeader.vue';
import FreeAiCreditsCallout from '@/components/FreeAiCreditsCallout.vue';
import NodeActionsList from '@/components/NodeActionsList.vue';
import NodeSettingsInvalidNodeWarning from '@/components/NodeSettingsInvalidNodeWarning.vue';
import { useExternalHooks } from '@/composables/useExternalHooks';
import { useInstalledCommunityPackage } from '@/features/communityNodes/composables/useInstalledCommunityPackage';
import { useInstalledCommunityPackage } from '@/features/settings/communityNodes/composables/useInstalledCommunityPackage';
import { useNodeCredentialOptions } from '@/features/credentials/composables/useNodeCredentialOptions';
import { useNodeHelpers } from '@/composables/useNodeHelpers';
import { useNodeSettingsParameters } from '@/composables/useNodeSettingsParameters';
import { useTelemetry } from '@/composables/useTelemetry';
import { importCurlEventBus, ndvEventBus } from '@/event-bus';
import NodeStorageLimitCallout from '@/features/dataTable/components/NodeStorageLimitCallout.vue';
import NodeStorageLimitCallout from '@/features/core/dataTable/components/NodeStorageLimitCallout.vue';
import NodeTitle from '@/components/NodeTitle.vue';
import { RenameNodeCommand } from '@/models/history';
import { useCredentialsStore } from '@/features/credentials/credentials.store';
import { useHistoryStore } from '@/stores/history.store';
import { useNDVStore } from '@/stores/ndv.store';
import { useNodeTypesStore } from '@/stores/nodeTypes.store';
import { useUsersStore } from '@/features/users/users.store';
import { useUsersStore } from '@/features/settings/users/users.store';
import { useWorkflowsStore } from '@/stores/workflows.store';
import type { NodeSettingsTab } from '@/types/nodeSettings';
import { getNodeIconSource } from '@/utils/nodeIcon';
@ -56,15 +56,15 @@ import {
import { useI18n } from '@n8n/i18n';
import type { EventBus } from '@n8n/utils/event-bus';
import { useResizeObserver } from '@vueuse/core';
import CommunityNodeFooter from '@/features/communityNodes/components/nodeCreator/CommunityNodeFooter.vue';
import CommunityNodeUpdateInfo from '@/features/communityNodes/components/nodeCreator/CommunityNodeUpdateInfo.vue';
import CommunityNodeFooter from '@/features/settings/communityNodes/components/nodeCreator/CommunityNodeFooter.vue';
import CommunityNodeUpdateInfo from '@/features/settings/communityNodes/components/nodeCreator/CommunityNodeUpdateInfo.vue';
import NodeExecuteButton from './NodeExecuteButton.vue';
import { N8nBlockUi, N8nIcon, N8nNotice, N8nText } from '@n8n/design-system';
import { useRoute } from 'vue-router';
import { useSettingsStore } from '@/stores/settings.store';
import { injectWorkflowState } from '@/composables/useWorkflowState';
import { ProjectTypes } from '@/features/projects/projects.types';
import { ProjectTypes } from '@/features/collaboration/projects/projects.types';
const props = withDefaults(
defineProps<{

View File

@ -1,13 +1,13 @@
import { mockNode } from '@/__tests__/mocks';
import { renderComponent } from '@/__tests__/render';
import { mockedStore, type MockedStore } from '@/__tests__/utils';
import { useInstallNode } from '@/features/communityNodes/composables/useInstallNode';
import { useInstallNode } from '@/features/settings/communityNodes/composables/useInstallNode';
import { type NodeTypesByTypeNameAndVersion } from '@/Interface';
import { useNDVStore } from '@/stores/ndv.store';
import { useNodeCreatorStore } from '@/stores/nodeCreator.store';
import { useNodeTypesStore } from '@/stores/nodeTypes.store';
import { useUIStore } from '@/stores/ui.store';
import { useUsersStore } from '@/features/users/users.store';
import { useUsersStore } from '@/features/settings/users/users.store';
import type { CommunityNodeType } from '@n8n/api-types';
import type { TestingPinia } from '@pinia/testing';
import { createTestingPinia } from '@pinia/testing';
@ -16,7 +16,7 @@ import { vi, type MockedFunction } from 'vitest';
import { ref } from 'vue';
import NodeSettingsInvalidNodeWarning from './NodeSettingsInvalidNodeWarning.vue';
vi.mock('@/features/communityNodes/composables/useInstallNode');
vi.mock('@/features/settings/communityNodes/composables/useInstallNode');
vi.mock('@/composables/useTelemetry', () => ({
useTelemetry: () => ({
track: vi.fn(),

View File

@ -1,20 +1,20 @@
<script setup lang="ts">
import { useInstallNode } from '@/features/communityNodes/composables/useInstallNode';
import { useInstallNode } from '@/features/settings/communityNodes/composables/useInstallNode';
import { useTelemetry } from '@/composables/useTelemetry';
import { CUSTOM_NODES_DOCS_URL } from '@/constants';
import { COMMUNITY_PACKAGE_INSTALL_MODAL_KEY } from '@/features/communityNodes/communityNodes.constants';
import { COMMUNITY_PACKAGE_INSTALL_MODAL_KEY } from '@/features/settings/communityNodes/communityNodes.constants';
import type { INodeUi } from '@/Interface';
import { useNDVStore } from '@/stores/ndv.store';
import { useNodeCreatorStore } from '@/stores/nodeCreator.store';
import { useNodeTypesStore } from '@/stores/nodeTypes.store';
import { useUIStore } from '@/stores/ui.store';
import { useUsersStore } from '@/features/users/users.store';
import { useUsersStore } from '@/features/settings/users/users.store';
import { N8nButton, N8nIcon, N8nText } from '@n8n/design-system';
import { useI18n } from '@n8n/i18n';
import { isCommunityPackageName } from 'n8n-workflow';
import { computed, watch } from 'vue';
import { I18nT } from 'vue-i18n';
import ContactAdministratorToInstall from '@/features/communityNodes/components/ContactAdministratorToInstall.vue';
import ContactAdministratorToInstall from '@/features/settings/communityNodes/components/ContactAdministratorToInstall.vue';
import { removePreviewToken } from './Node/NodeCreator/utils';
const { node, previewMode = false } = defineProps<{ node: INodeUi; previewMode?: boolean }>();

View File

@ -4,12 +4,12 @@ import { createComponentRenderer } from '@/__tests__/render';
import { createTestingPinia } from '@pinia/testing';
import NodeSettingsTabs from '@/components/NodeSettingsTabs.vue';
import { ref } from 'vue';
import type { ExtendedPublicInstalledPackage } from '@/features/communityNodes/communityNodes.utils';
import { useInstalledCommunityPackage } from '@/features/communityNodes/composables/useInstalledCommunityPackage';
import type { ExtendedPublicInstalledPackage } from '@/features/settings/communityNodes/communityNodes.utils';
import { useInstalledCommunityPackage } from '@/features/settings/communityNodes/composables/useInstalledCommunityPackage';
const renderComponent = createComponentRenderer(NodeSettingsTabs);
vi.mock('@/features/communityNodes/composables/useInstalledCommunityPackage', () => ({
vi.mock('@/features/settings/communityNodes/composables/useInstalledCommunityPackage', () => ({
useInstalledCommunityPackage: vi.fn(() => ({
installedPackage: ref<ExtendedPublicInstalledPackage | undefined>(undefined),
isCommunityNode: ref(false),

View File

@ -1,6 +1,6 @@
<script setup lang="ts">
import type { ITab } from '@/Interface';
import { COMMUNITY_NODES_INSTALLATION_DOCS_URL } from '@/features/communityNodes/communityNodes.constants';
import { COMMUNITY_NODES_INSTALLATION_DOCS_URL } from '@/features/settings/communityNodes/communityNodes.constants';
import { useNDVStore } from '@/stores/ndv.store';
import { useWorkflowsStore } from '@/stores/workflows.store';
import type { INodeTypeDescription } from 'n8n-workflow';
@ -8,7 +8,7 @@ import { NodeConnectionTypes } from 'n8n-workflow';
import { computed } from 'vue';
import { useExternalHooks } from '@/composables/useExternalHooks';
import { useInstalledCommunityPackage } from '@/features/communityNodes/composables/useInstalledCommunityPackage';
import { useInstalledCommunityPackage } from '@/features/settings/communityNodes/composables/useInstalledCommunityPackage';
import { useNodeDocsUrl } from '@/composables/useNodeDocsUrl';
import { useTelemetry } from '@/composables/useTelemetry';
import type { NodeSettingsTab } from '@/types/nodeSettings';

View File

@ -12,14 +12,14 @@ import { useNodeType } from '@/composables/useNodeType';
import { usePinnedData } from '@/composables/usePinnedData';
import { useTelemetry } from '@/composables/useTelemetry';
import { useI18n } from '@n8n/i18n';
import { waitingNodeTooltip } from '@/features/executions/executions.utils';
import { waitingNodeTooltip } from '@/features/execution/executions/executions.utils';
import { useNodeDirtiness } from '@/composables/useNodeDirtiness';
import { CanvasNodeDirtiness } from '@/features/canvas/canvas.types';
import { CanvasNodeDirtiness } from '@/features/workflows/canvas/canvas.types';
import { NDV_UI_OVERHAUL_EXPERIMENT } from '@/constants';
import { usePostHog } from '@/stores/posthog.store';
import { type IRunDataDisplayMode } from '@/Interface';
import { I18nT } from 'vue-i18n';
import { useExecutionData } from '@/features/executions/composables/useExecutionData';
import { useExecutionData } from '@/features/execution/executions/composables/useExecutionData';
import NDVEmptyState from '@/components/NDVEmptyState.vue';
import NodeExecuteButton from '@/components/NodeExecuteButton.vue';

View File

@ -75,7 +75,7 @@ vi.mock('@/stores/nodeTypes.store', () => {
};
});
vi.mock('@/features/editors/plugins/codemirror/completions/datatype.completions', () => {
vi.mock('@/features/shared/editors/plugins/codemirror/completions/datatype.completions', () => {
return {
datatypeCompletions: vi.fn(() => mockCompletionResult),
};

View File

@ -27,18 +27,18 @@ import {
resolveRelativePath,
} from 'n8n-workflow';
import type { CodeNodeLanguageOption } from '@/features/editors/components/CodeNodeEditor/CodeNodeEditor.vue';
import CodeNodeEditor from '@/features/editors/components/CodeNodeEditor/CodeNodeEditor.vue';
import type { CodeNodeLanguageOption } from '@/features/shared/editors/components/CodeNodeEditor/CodeNodeEditor.vue';
import CodeNodeEditor from '@/features/shared/editors/components/CodeNodeEditor/CodeNodeEditor.vue';
import CredentialsSelect from '@/features/credentials/components/CredentialsSelect.vue';
import ExpressionEditModal from '@/components/ExpressionEditModal.vue';
import ExpressionParameterInput from '@/components/ExpressionParameterInput.vue';
import HtmlEditor from '@/features/editors/components/HtmlEditor/HtmlEditor.vue';
import InlineExpressionTip from '@/features/editors/components/InlineExpressionEditor/InlineExpressionTip.vue';
import JsEditor from '@/features/editors/components/JsEditor/JsEditor.vue';
import JsonEditor from '@/features/editors/components/JsonEditor/JsonEditor.vue';
import HtmlEditor from '@/features/shared/editors/components/HtmlEditor/HtmlEditor.vue';
import InlineExpressionTip from '@/features/shared/editors/components/InlineExpressionEditor/InlineExpressionTip.vue';
import JsEditor from '@/features/shared/editors/components/JsEditor/JsEditor.vue';
import JsonEditor from '@/features/shared/editors/components/JsonEditor/JsonEditor.vue';
import ParameterIssues from '@/components/ParameterIssues.vue';
import ResourceLocator from '@/components/ResourceLocator/ResourceLocator.vue';
import SqlEditor from '@/features/editors/components/SqlEditor/SqlEditor.vue';
import SqlEditor from '@/features/shared/editors/components/SqlEditor/SqlEditor.vue';
import TextEdit from '@/components/TextEdit.vue';
import WorkflowSelectorParameterInput from '@/components/WorkflowSelectorParameterInput/WorkflowSelectorParameterInput.vue';
@ -89,11 +89,11 @@ import {
isSelectableEl,
} from '@/utils/typesUtils';
import { completeExpressionSyntax, shouldConvertToExpression } from '@/utils/expressions';
import CssEditor from '@/features/editors/components/CssEditor/CssEditor.vue';
import CssEditor from '@/features/shared/editors/components/CssEditor/CssEditor.vue';
import { useFocusPanelStore } from '@/stores/focusPanel.store';
import ExperimentalEmbeddedNdvMapper from '@/features/canvas/experimental/components/ExperimentalEmbeddedNdvMapper.vue';
import { useExperimentalNdvStore } from '@/features/canvas/experimental/experimentalNdv.store';
import { useProjectsStore } from '@/features/projects/projects.store';
import ExperimentalEmbeddedNdvMapper from '@/features/workflows/canvas/experimental/components/ExperimentalEmbeddedNdvMapper.vue';
import { useExperimentalNdvStore } from '@/features/workflows/canvas/experimental/experimentalNdv.store';
import { useProjectsStore } from '@/features/collaboration/projects/projects.store';
import { getParameterDisplayableOptions } from '@/utils/nodes/nodeTransforms';
import { ElColorPicker, ElDatePicker, ElDialog, ElSwitch } from 'element-plus';

View File

@ -12,8 +12,8 @@ import {
} from 'n8n-workflow';
import { useResolvedExpression } from '@/composables/useResolvedExpression';
import useEnvironmentsStore from '@/features/environments.ee/environments.store';
import { useExternalSecretsStore } from '@/features/externalSecrets/externalSecrets.ee.store';
import useEnvironmentsStore from '@/features/settings/environments.ee/environments.store';
import { useExternalSecretsStore } from '@/features/integrations/externalSecrets.ee/externalSecrets.ee.store';
import { useNDVStore } from '@/stores/ndv.store';
import { isValueExpression, parseResourceMapperFieldName } from '@/utils/nodeTypesUtils';
import type { EventBus } from '@n8n/utils/event-bus';

View File

@ -10,8 +10,8 @@ import { computed } from 'vue';
import { useNDVStore } from '@/stores/ndv.store';
import { AI_TRANSFORM_NODE_TYPE } from '@/constants';
import { getParameterTypeOption } from '@/utils/nodeSettingsUtils';
import { useIsInExperimentalNdv } from '@/features/canvas/experimental/composables/useIsInExperimentalNdv';
import { useExperimentalNdvStore } from '@/features/canvas/experimental/experimentalNdv.store';
import { useIsInExperimentalNdv } from '@/features/workflows/canvas/experimental/composables/useIsInExperimentalNdv';
import { useExperimentalNdvStore } from '@/features/workflows/canvas/experimental/experimentalNdv.store';
import { N8nActionToggle, N8nIcon, N8nRadioButtons, N8nText, N8nTooltip } from '@n8n/design-system';
interface Props {

View File

@ -1,6 +1,6 @@
import { createComponentRenderer } from '@/__tests__/render';
import { useNodeTypesStore } from '@/stores/nodeTypes.store';
import { useProjectsStore } from '@/features/projects/projects.store';
import { useProjectsStore } from '@/features/collaboration/projects/projects.store';
import ResourceLocator from './ResourceLocator.vue';
import { createTestingPinia } from '@pinia/testing';
import userEvent from '@testing-library/user-event';

View File

@ -54,7 +54,7 @@ import {
type FromAIOverride,
} from '../../utils/fromAIOverrideUtils';
import { completeExpressionSyntax } from '@/utils/expressions';
import { useProjectsStore } from '@/features/projects/projects.store';
import { useProjectsStore } from '@/features/collaboration/projects/projects.store';
import FromAiOverrideButton from '@/components/ParameterInputOverrides/FromAiOverrideButton.vue';
import FromAiOverrideField from '@/components/ParameterInputOverrides/FromAiOverrideField.vue';
import ParameterOverrideSelectableList from '@/components/ParameterInputOverrides/ParameterOverrideSelectableList.vue';

View File

@ -10,7 +10,7 @@ import ResourceMapper from '@/components/ResourceMapper/ResourceMapper.vue';
import userEvent from '@testing-library/user-event';
import { createComponentRenderer } from '@/__tests__/render';
import type { MockInstance } from 'vitest';
import { useProjectsStore } from '@/features/projects/projects.store';
import { useProjectsStore } from '@/features/collaboration/projects/projects.store';
import type { ResourceMapperTypeOptions } from 'n8n-workflow';
import { createTestNode, createTestNodeProperties } from '@/__tests__/mocks';

View File

@ -29,7 +29,7 @@ import { useNDVStore } from '@/stores/ndv.store';
import { useWorkflowsStore } from '@/stores/workflows.store';
import { useDocumentVisibility } from '@/composables/useDocumentVisibility';
import isEqual from 'lodash/isEqual';
import { useProjectsStore } from '@/features/projects/projects.store';
import { useProjectsStore } from '@/features/collaboration/projects/projects.store';
import ParameterInputFull from '@/components/ParameterInputFull.vue';
import { N8nButton, N8nCallout, N8nIcon, N8nNotice, N8nText } from '@n8n/design-system';

View File

@ -38,7 +38,7 @@ vi.mock('vue-router', () => {
};
});
vi.mock('@/features/executions/composables/useExecutionHelpers', () => ({
vi.mock('@/features/execution/executions/composables/useExecutionHelpers', () => ({
useExecutionHelpers: () => ({
trackOpeningRelatedExecution,
resolveRelatedExecutionUrl,

View File

@ -38,7 +38,7 @@ import {
import BinaryDataDisplay from '@/components/BinaryDataDisplay.vue';
import NodeErrorView from '@/components/Error/NodeErrorView.vue';
import JsonEditor from '@/features/editors/components/JsonEditor/JsonEditor.vue';
import JsonEditor from '@/features/shared/editors/components/JsonEditor/JsonEditor.vue';
import RunDataPinButton from '@/components/RunDataPinButton.vue';
import { useExternalHooks } from '@/composables/useExternalHooks';
@ -53,7 +53,7 @@ import { dataPinningEventBus, ndvEventBus } from '@/event-bus';
import { useNDVStore } from '@/stores/ndv.store';
import { useNodeTypesStore } from '@/stores/nodeTypes.store';
import { useRootStore } from '@n8n/stores/useRootStore';
import { useSourceControlStore } from '@/features/sourceControl.ee/sourceControl.store';
import { useSourceControlStore } from '@/features/integrations/sourceControl.ee/sourceControl.store';
import { useWorkflowsStore } from '@/stores/workflows.store';
import { executionDataToJson } from '@/utils/nodeTypesUtils';
import { getGenericHints } from '@/utils/nodeViewUtils';
@ -65,7 +65,7 @@ import { storeToRefs } from 'pinia';
import { useRoute } from 'vue-router';
import { useSchemaPreviewStore } from '@/stores/schemaPreview.store';
import { asyncComputed } from '@vueuse/core';
import ViewSubExecution from '@/features/executions/components/ViewSubExecution.vue';
import ViewSubExecution from '@/features/execution/executions/components/ViewSubExecution.vue';
import RunDataItemCount from '@/components/RunDataItemCount.vue';
import RunDataDisplayModeSelect from '@/components/RunDataDisplayModeSelect.vue';
import RunDataPaginationBar from '@/components/RunDataPaginationBar.vue';
@ -73,9 +73,9 @@ import { parseAiContent } from '@/utils/aiUtils';
import { usePostHog } from '@/stores/posthog.store';
import { I18nT } from 'vue-i18n';
import RunDataBinary from '@/components/RunDataBinary.vue';
import { hasTrimmedRunData } from '@/features/executions/executions.utils';
import { hasTrimmedRunData } from '@/features/execution/executions/executions.utils';
import NDVEmptyState from '@/components/NDVEmptyState.vue';
import { type SearchShortcut } from '@/features/canvas/canvas.types';
import { type SearchShortcut } from '@/features/workflows/canvas/canvas.types';
import {
N8nBlockUi,

View File

@ -1,9 +1,9 @@
<script lang="ts" setup>
import LogsOverviewRows from '@/features/logs/components/LogsOverviewRows.vue';
import { useLogsExecutionData } from '@/features/logs/composables/useLogsExecutionData';
import { useLogsTreeExpand } from '@/features/logs/composables/useLogsTreeExpand';
import type { LogEntry, LogTreeFilter } from '@/features/logs/logs.types';
import { findLogEntryById } from '@/features/logs/logs.utils';
import LogsOverviewRows from '@/features/execution/logs/components/LogsOverviewRows.vue';
import { useLogsExecutionData } from '@/features/execution/logs/composables/useLogsExecutionData';
import { useLogsTreeExpand } from '@/features/execution/logs/composables/useLogsTreeExpand';
import type { LogEntry, LogTreeFilter } from '@/features/execution/logs/logs.types';
import { findLogEntryById } from '@/features/execution/logs/logs.utils';
import type { INodeUi } from '@/Interface';
import { N8nText } from '@n8n/design-system';
import { useI18n } from '@n8n/i18n';

View File

@ -6,12 +6,12 @@ import { computed } from 'vue';
import NodeIcon from '@/components/NodeIcon.vue';
import AiRunContentBlock from './AiRunContentBlock.vue';
import { useI18n } from '@n8n/i18n';
import { getConsumedTokens } from '@/features/logs/logs.utils';
import { getConsumedTokens } from '@/features/execution/logs/logs.utils';
import ConsumedTokensDetails from '@/components/ConsumedTokensDetails.vue';
import ViewSubExecution from '@/features/executions/components/ViewSubExecution.vue';
import ViewSubExecution from '@/features/execution/executions/components/ViewSubExecution.vue';
import { formatTokenUsageCount } from '@/utils/aiUtils';
import { getReferencedData } from '@/components/RunDataAi/utils';
import { type LogEntry } from '@/features/logs/logs.types';
import { type LogEntry } from '@/features/execution/logs/logs.types';
import { N8nInfoTip, N8nTooltip } from '@n8n/design-system';
interface RunMeta {

View File

@ -6,7 +6,7 @@ import { useDebounce } from '@/composables/useDebounce';
import { useDeviceSupport } from '@n8n/composables/useDeviceSupport';
import { useEventListener } from '@vueuse/core';
import { PopOutWindowKey } from '@/constants';
import { type SearchShortcut } from '@/features/canvas/canvas.types';
import { type SearchShortcut } from '@/features/workflows/canvas/canvas.types';
import { N8nIcon, N8nInput } from '@n8n/design-system';
type Props = {

View File

@ -23,7 +23,7 @@ const { trackOpeningRelatedExecution, resolveRelatedExecutionUrl } = vi.hoisted(
resolveRelatedExecutionUrl: vi.fn().mockReturnValue('https://test.com'),
}));
vi.mock('@/features/executions/composables/useExecutionHelpers', () => ({
vi.mock('@/features/execution/executions/composables/useExecutionHelpers', () => ({
useExecutionHelpers: () => ({
trackOpeningRelatedExecution,
resolveRelatedExecutionUrl,

View File

@ -14,7 +14,7 @@ import TextWithHighlights from './TextWithHighlights.vue';
import { useI18n } from '@n8n/i18n';
import { useTelemetry } from '@/composables/useTelemetry';
import { storeToRefs } from 'pinia';
import { useExecutionHelpers } from '@/features/executions/composables/useExecutionHelpers';
import { useExecutionHelpers } from '@/features/execution/executions/composables/useExecutionHelpers';
import { I18nT } from 'vue-i18n';
import { useTelemetryContext } from '@/composables/useTelemetryContext';

View File

@ -6,7 +6,7 @@ import { mockedStore } from '@/__tests__/utils';
import Telemetry from './Telemetry.vue';
import { useRootStore } from '@n8n/stores/useRootStore';
import { useSettingsStore } from '@/stores/settings.store';
import { useUsersStore } from '@/features/users/users.store';
import { useUsersStore } from '@/features/settings/users/users.store';
import { useTelemetry } from '@/composables/useTelemetry';
vi.mock('vue-router', () => {

View File

@ -2,8 +2,8 @@
import type { ITelemetrySettings } from '@n8n/api-types';
import { useRootStore } from '@n8n/stores/useRootStore';
import { useSettingsStore } from '@/stores/settings.store';
import { useUsersStore } from '@/features/users/users.store';
import { useProjectsStore } from '@/features/projects/projects.store';
import { useUsersStore } from '@/features/settings/users/users.store';
import { useProjectsStore } from '@/features/collaboration/projects/projects.store';
import { computed, onMounted, watch, ref } from 'vue';
import { useTelemetry } from '@/composables/useTelemetry';
import { useRoute } from 'vue-router';

View File

@ -35,7 +35,7 @@ import {
import MappingPill from './MappingPill.vue';
import { EnterpriseEditionFeature, PLACEHOLDER_FILLED_AT_EXECUTION_TIME } from '@/constants';
import useEnvironmentsStore from '@/features/environments.ee/environments.store';
import useEnvironmentsStore from '@/features/settings/environments.ee/environments.store';
import { useSchemaPreviewStore } from '@/stores/schemaPreview.store';
import { useSettingsStore } from '@/stores/settings.store';
import { isEmpty } from '@/utils/typesUtils';

View File

@ -6,7 +6,7 @@ import { mockedStore, type MockedStore } from '@/__tests__/utils';
import { useUIStore } from '@/stores/ui.store';
import { WHATS_NEW_MODAL_KEY, VERSIONS_MODAL_KEY } from '@/constants';
import { useVersionsStore } from '@/stores/versions.store';
import { useUsersStore } from '@/features/users/users.store';
import { useUsersStore } from '@/features/settings/users/users.store';
import type { Version } from '@n8n/rest-api-client/api/versions';
import WhatsNewModal from './WhatsNewModal.vue';

View File

@ -8,7 +8,7 @@ import { computed, nextTick, ref } from 'vue';
import { useTelemetry } from '@/composables/useTelemetry';
import { usePageRedirectionHelper } from '@/composables/usePageRedirectionHelper';
import { useUIStore } from '@/stores/ui.store';
import { useUsersStore } from '@/features/users/users.store';
import { useUsersStore } from '@/features/settings/users/users.store';
import Modal from '@/components/Modal.vue';
import {

View File

@ -7,7 +7,7 @@ import { MODAL_CONFIRM, VIEWS } from '@/constants';
import WorkflowCard from '@/components/WorkflowCard.vue';
import type { WorkflowResource } from '@/Interface';
import * as vueRouter from 'vue-router';
import { useProjectsStore } from '@/features/projects/projects.store';
import { useProjectsStore } from '@/features/collaboration/projects/projects.store';
import { useMessage } from '@/composables/useMessage';
import { useToast } from '@/composables/useToast';
import { useWorkflowsStore } from '@/stores/workflows.store';

View File

@ -1,28 +1,31 @@
<script setup lang="ts">
import { computed, ref } from 'vue';
import { DUPLICATE_MODAL_KEY, MODAL_CONFIRM, VIEWS, WORKFLOW_SHARE_MODAL_KEY } from '@/constants';
import { PROJECT_MOVE_RESOURCE_MODAL } from '@/features/projects/projects.constants';
import { PROJECT_MOVE_RESOURCE_MODAL } from '@/features/collaboration/projects/projects.constants';
import { useMessage } from '@/composables/useMessage';
import { useToast } from '@/composables/useToast';
import { getResourcePermissions } from '@n8n/permissions';
import dateformat from 'dateformat';
import WorkflowActivator from '@/components/WorkflowActivator.vue';
import { useUIStore } from '@/stores/ui.store';
import { useUsersStore } from '@/features/users/users.store';
import { useUsersStore } from '@/features/settings/users/users.store';
import { useWorkflowsStore } from '@/stores/workflows.store';
import TimeAgo from '@/components/TimeAgo.vue';
import { useProjectsStore } from '@/features/projects/projects.store';
import ProjectCardBadge from '@/features/projects/components/ProjectCardBadge.vue';
import { useProjectsStore } from '@/features/collaboration/projects/projects.store';
import ProjectCardBadge from '@/features/collaboration/projects/components/ProjectCardBadge.vue';
import { useI18n } from '@n8n/i18n';
import { useRoute, useRouter } from 'vue-router';
import { useTelemetry } from '@/composables/useTelemetry';
import { ResourceType } from '@/features/projects/projects.utils';
import { ResourceType } from '@/features/collaboration/projects/projects.utils';
import type { EventBus } from '@n8n/utils/event-bus';
import type { UserAction, WorkflowResource } from '@/Interface';
import type { IUser } from 'n8n-workflow';
import { type ProjectSharingData, ProjectTypes } from '@/features/projects/projects.types';
import {
type ProjectSharingData,
ProjectTypes,
} from '@/features/collaboration/projects/projects.types';
import type { PathItem } from '@n8n/design-system/components/N8nBreadcrumbs/Breadcrumbs.vue';
import { useFoldersStore } from '@/features/folders/folders.store';
import { useFoldersStore } from '@/features/core/folders/folders.store';
import {
N8nActionToggle,
@ -34,8 +37,8 @@ import {
N8nText,
N8nTooltip,
} from '@n8n/design-system';
import { useMCPStore } from '@/features/mcpAccess/mcp.store';
import { useMcp } from '@/features/mcpAccess/composables/useMcp';
import { useMCPStore } from '@/features/ai/mcpAccess/mcp.store';
import { useMcp } from '@/features/ai/mcpAccess/composables/useMcp';
const WORKFLOW_LIST_ITEM_ACTIONS = {
OPEN: 'open',
SHARE: 'share',

View File

@ -5,8 +5,8 @@ import type { ExecutionSummary } from 'n8n-workflow';
import { createComponentRenderer } from '@/__tests__/render';
import type { INodeUi, IWorkflowDb } from '@/Interface';
import WorkflowPreview from '@/components/WorkflowPreview.vue';
import { useExecutionsStore } from '@/features/executions/executions.store';
import { useProjectsStore } from '@/features/projects/projects.store';
import { useExecutionsStore } from '@/features/execution/executions/executions.store';
import { useProjectsStore } from '@/features/collaboration/projects/projects.store';
const renderComponent = createComponentRenderer(WorkflowPreview);

View File

@ -4,8 +4,8 @@ import { useI18n } from '@n8n/i18n';
import { useToast } from '@/composables/useToast';
import type { IWorkflowDb } from '@/Interface';
import type { IWorkflowTemplate } from '@n8n/rest-api-client/api/templates';
import { useExecutionsStore } from '@/features/executions/executions.store';
import { useProjectsStore } from '@/features/projects/projects.store';
import { useExecutionsStore } from '@/features/execution/executions/executions.store';
import { useProjectsStore } from '@/features/collaboration/projects/projects.store';
import { N8nLoading, N8nSpinner } from '@n8n/design-system';
const props = withDefaults(

View File

@ -2,16 +2,16 @@ import { createComponentRenderer } from '@/__tests__/render';
import { createTestingPinia } from '@pinia/testing';
import { ref } from 'vue';
import WorkflowProductionChecklist from '@/components/WorkflowProductionChecklist.vue';
import { useEvaluationStore } from '@/features/evaluation.ee/evaluation.store';
import { useEvaluationStore } from '@/features/ai/evaluation.ee/evaluation.store';
import { useNodeTypesStore } from '@/stores/nodeTypes.store';
import { useWorkflowSettingsCache } from '@/composables/useWorkflowsCache';
import { useUIStore } from '@/stores/ui.store';
import { useMessage } from '@/composables/useMessage';
import { useTelemetry } from '@/composables/useTelemetry';
import { useSourceControlStore } from '@/features/sourceControl.ee/sourceControl.store';
import { useSourceControlStore } from '@/features/integrations/sourceControl.ee/sourceControl.store';
import { useRouter } from 'vue-router';
import type { IWorkflowDb } from '@/Interface';
import type { SourceControlPreferences } from '@/features/sourceControl.ee/sourceControl.types';
import type { SourceControlPreferences } from '@/features/integrations/sourceControl.ee/sourceControl.types';
import {
WORKFLOW_SETTINGS_MODAL_KEY,
WORKFLOW_ACTIVE_MODAL_KEY,

View File

@ -2,7 +2,7 @@
import { computed, ref, onMounted, watch } from 'vue';
import { useI18n } from '@n8n/i18n';
import { useRouter } from 'vue-router';
import { useEvaluationStore } from '@/features/evaluation.ee/evaluation.store';
import { useEvaluationStore } from '@/features/ai/evaluation.ee/evaluation.store';
import { useNodeTypesStore } from '@/stores/nodeTypes.store';
import type { ActionType, WorkflowSettings } from '@/composables/useWorkflowsCache';
import { useWorkflowSettingsCache } from '@/composables/useWorkflowsCache';
@ -19,9 +19,9 @@ import {
} from '@/constants';
import { useMessage } from '@/composables/useMessage';
import { useTelemetry } from '@/composables/useTelemetry';
import { useSourceControlStore } from '@/features/sourceControl.ee/sourceControl.store';
import { MCP_DOCS_PAGE_URL } from '@/features/mcpAccess/mcp.constants';
import { useMcp } from '@/features/mcpAccess/composables/useMcp';
import { useSourceControlStore } from '@/features/integrations/sourceControl.ee/sourceControl.store';
import { MCP_DOCS_PAGE_URL } from '@/features/ai/mcpAccess/mcp.constants';
import { useMcp } from '@/features/ai/mcpAccess/composables/useMcp';
import { N8nSuggestedActions } from '@n8n/design-system';
import { useSettingsStore } from '@/stores/settings.store';

View File

@ -10,7 +10,7 @@ import WorkflowSelectorParameterInput, {
} from '@/components/WorkflowSelectorParameterInput/WorkflowSelectorParameterInput.vue';
import { createComponentRenderer } from '@/__tests__/render';
import { mockedStore } from '@/__tests__/utils';
import { useProjectsStore } from '@/features/projects/projects.store';
import { useProjectsStore } from '@/features/collaboration/projects/projects.store';
import { useWorkflowsStore } from '@/stores/workflows.store';
const { onDocumentVisible } = vi.hoisted(() => ({

View File

@ -20,7 +20,7 @@ import { useRouter } from 'vue-router';
import { useWorkflowResourceLocatorDropdown } from './useWorkflowResourceLocatorDropdown';
import { useWorkflowResourceLocatorModes } from './useWorkflowResourceLocatorModes';
import { useWorkflowResourcesLocator } from './useWorkflowResourcesLocator';
import { useProjectsStore } from '@/features/projects/projects.store';
import { useProjectsStore } from '@/features/collaboration/projects/projects.store';
import { useTelemetry } from '@/composables/useTelemetry';
import { VIEWS } from '@/constants';
import { SAMPLE_SUBWORKFLOW_TRIGGER_ID, SAMPLE_SUBWORKFLOW_WORKFLOW } from '@/constants.workflows';

View File

@ -10,7 +10,7 @@ import { EnterpriseEditionFeature } from '@/constants';
import WorkflowSettingsVue from '@/components/WorkflowSettings.vue';
import { useWorkflowsStore } from '@/stores/workflows.store';
import { useSettingsStore } from '@/stores/settings.store';
import { useSourceControlStore } from '@/features/sourceControl.ee/sourceControl.store';
import { useSourceControlStore } from '@/features/integrations/sourceControl.ee/sourceControl.store';
vi.mock('vue-router', async () => ({
useRouter: vi.fn(),

View File

@ -18,14 +18,14 @@ import { useWorkflowsEEStore } from '@/stores/workflows.ee.store';
import { useWorkflowsStore } from '@/stores/workflows.store';
import { createEventBus } from '@n8n/utils/event-bus';
import { useExternalHooks } from '@/composables/useExternalHooks';
import { useSourceControlStore } from '@/features/sourceControl.ee/sourceControl.store';
import { ProjectTypes } from '@/features/projects/projects.types';
import { useSourceControlStore } from '@/features/integrations/sourceControl.ee/sourceControl.store';
import { ProjectTypes } from '@/features/collaboration/projects/projects.types';
import { getResourcePermissions } from '@n8n/permissions';
import { useI18n } from '@n8n/i18n';
import { useTelemetry } from '@/composables/useTelemetry';
import { useDebounce } from '@/composables/useDebounce';
import { injectWorkflowState } from '@/composables/useWorkflowState';
import { useMcp } from '@/features/mcpAccess/composables/useMcp';
import { useMcp } from '@/features/ai/mcpAccess/composables/useMcp';
import { ElCol, ElRow, ElSwitch } from 'element-plus';
import { N8nButton, N8nIcon, N8nInput, N8nOption, N8nSelect, N8nTooltip } from '@n8n/design-system';

View File

@ -4,7 +4,7 @@ import userEvent from '@testing-library/user-event';
import { waitFor } from '@testing-library/vue';
import { useRouter } from 'vue-router';
import type { FrontendSettings } from '@n8n/api-types';
import { createProjectListItem } from '@/features/projects/__tests__/utils';
import { createProjectListItem } from '@/features/collaboration/projects/__tests__/utils';
import type { MockedStore } from '@/__tests__/utils';
import { mockedStore, getDropdownItems } from '@/__tests__/utils';
import { createComponentRenderer } from '@/__tests__/render';
@ -13,7 +13,7 @@ import { PLACEHOLDER_EMPTY_WORKFLOW_ID } from '@/constants';
import { useSettingsStore } from '@/stores/settings.store';
import { useWorkflowsStore } from '@/stores/workflows.store';
import { useWorkflowsEEStore } from '@/stores/workflows.ee.store';
import { useProjectsStore } from '@/features/projects/projects.store';
import { useProjectsStore } from '@/features/collaboration/projects/projects.store';
import { useRolesStore } from '@/stores/roles.store';
import { useWorkflowSaving } from '@/composables/useWorkflowSaving';

View File

@ -15,15 +15,15 @@ import { useMessage } from '@/composables/useMessage';
import { useToast } from '@/composables/useToast';
import { useSettingsStore } from '@/stores/settings.store';
import { useUIStore } from '@/stores/ui.store';
import { useUsersStore } from '@/features/users/users.store';
import { useUsersStore } from '@/features/settings/users/users.store';
import { useWorkflowsStore } from '@/stores/workflows.store';
import { useWorkflowsEEStore } from '@/stores/workflows.ee.store';
import type { ITelemetryTrackProperties } from 'n8n-workflow';
import type { BaseTextKey } from '@n8n/i18n';
import ProjectSharing from '@/features/projects/components/ProjectSharing.vue';
import { useProjectsStore } from '@/features/projects/projects.store';
import type { ProjectSharingData, Project } from '@/features/projects/projects.types';
import { ProjectTypes } from '@/features/projects/projects.types';
import ProjectSharing from '@/features/collaboration/projects/components/ProjectSharing.vue';
import { useProjectsStore } from '@/features/collaboration/projects/projects.store';
import type { ProjectSharingData, Project } from '@/features/collaboration/projects/projects.types';
import { ProjectTypes } from '@/features/collaboration/projects/projects.types';
import { useRolesStore } from '@/stores/roles.store';
import { usePageRedirectionHelper } from '@/composables/usePageRedirectionHelper';
import { useI18n } from '@n8n/i18n';

View File

@ -1,7 +1,7 @@
<script lang="ts" setup>
import { useI18n } from '@n8n/i18n';
import BaseBanner from '@/components/banners/BaseBanner.vue';
import { useDataTableStore } from '@/features/dataTable/dataTable.store';
import { useDataTableStore } from '@/features/core/dataTable/dataTable.store';
const dataTableStore = useDataTableStore();
const i18n = useI18n();

View File

@ -1,7 +1,7 @@
<script lang="ts" setup>
import { useI18n } from '@n8n/i18n';
import BaseBanner from '@/components/banners/BaseBanner.vue';
import { useDataTableStore } from '@/features/dataTable/dataTable.store';
import { useDataTableStore } from '@/features/core/dataTable/dataTable.store';
const dataTableStore = useDataTableStore();
const i18n = useI18n();

View File

@ -2,7 +2,7 @@
import BaseBanner from '@/components/banners/BaseBanner.vue';
import { useToast } from '@/composables/useToast';
import { i18n as locale } from '@n8n/i18n';
import { useUsersStore } from '@/features/users/users.store';
import { useUsersStore } from '@/features/settings/users/users.store';
import { computed } from 'vue';
import { useCloudPlanStore } from '@/stores/cloudPlan.store';

View File

@ -1,7 +1,7 @@
import { createComponentRenderer } from '@/__tests__/render';
import V1Banner from './V1Banner.vue';
import { createPinia, setActivePinia } from 'pinia';
import { useUsersStore } from '@/features/users/users.store';
import { useUsersStore } from '@/features/settings/users/users.store';
import { ROLE } from '@n8n/api-types';
import type { IUser } from '@n8n/rest-api-client/api/users';

View File

@ -2,9 +2,9 @@
import { computed, watch, onBeforeMount } from 'vue';
import { EnterpriseEditionFeature } from '@/constants';
import EnterpriseEdition from '@/components/EnterpriseEdition.ee.vue';
import { useProjectsStore } from '@/features/projects/projects.store';
import type { ProjectSharingData } from '@/features/projects/projects.types';
import ProjectSharing from '@/features/projects/components/ProjectSharing.vue';
import { useProjectsStore } from '@/features/collaboration/projects/projects.store';
import type { ProjectSharingData } from '@/features/collaboration/projects/projects.types';
import ProjectSharing from '@/features/collaboration/projects/components/ProjectSharing.vue';
import type { BaseFilters } from '@/Interface';
import { useI18n } from '@n8n/i18n';

View File

@ -5,7 +5,7 @@ import ResourcesListLayout from '@/components/layouts/ResourcesListLayout.vue';
import type { Resource } from '@/Interface';
import type router from 'vue-router';
import { waitAllPromises } from '@/__tests__/utils';
import type { ProjectSharingData } from '@/features/projects/projects.types';
import type { ProjectSharingData } from '@/features/collaboration/projects/projects.types';
const TEST_HOME_PROJECT: ProjectSharingData = vi.hoisted(() => ({
id: '1',

View File

@ -4,7 +4,7 @@ import { computed, nextTick, ref, onMounted, watch, onBeforeUnmount } from 'vue'
import PageViewLayout from '@/components/layouts/PageViewLayout.vue';
import PageViewLayoutList from '@/components/layouts/PageViewLayoutList.vue';
import ResourceFiltersDropdown from '@/components/forms/ResourceFiltersDropdown.vue';
import { useUsersStore } from '@/features/users/users.store';
import { useUsersStore } from '@/features/settings/users/users.store';
import type { DatatableColumn } from '@n8n/design-system';
import { useDebounce } from '@/composables/useDebounce';
import { useTelemetry } from '@/composables/useTelemetry';

View File

@ -4,7 +4,7 @@ import { createTestingPinia } from '@pinia/testing';
import {
PrebuiltAgentTemplates,
SampleTemplates,
} from '@/features/templates/utils/workflowSamples';
} from '@/features/workflows/templates/utils/workflowSamples';
import { useNDVStore } from '@/stores/ndv.store';
import { mockedStore } from '@/__tests__/utils';
import { NODE_CREATOR_OPEN_SOURCES, VIEWS } from '@/constants';
@ -40,7 +40,7 @@ vi.mock('@/stores/posthog.store', () => ({
}),
}));
vi.mock('@/features/users/users.store', () => ({
vi.mock('@/features/settings/users/users.store', () => ({
useUsersStore: () => ({
isCalloutDismissed: mocks.isCalloutDismissed,
setCalloutDismissed: mocks.setCalloutDismissed,
@ -67,7 +67,7 @@ vi.mock('@n8n/rest-api-client/api/users', () => ({
updateCurrentUserSettings: vi.fn(),
}));
vi.mock('@/features/projects/projects.store', () => ({
vi.mock('@/features/collaboration/projects/projects.store', () => ({
useProjectsStore: () => ({
currentProjectId: 'test-project-id',
}),

View File

@ -3,7 +3,7 @@ import { useRoute, useRouter } from 'vue-router';
import { useTelemetry } from '@/composables/useTelemetry';
import { useRootStore } from '@n8n/stores/useRootStore';
import { useI18n } from '@n8n/i18n';
import { useUsersStore } from '@/features/users/users.store';
import { useUsersStore } from '@/features/settings/users/users.store';
import { useWorkflowsStore } from '@/stores/workflows.store';
import { usePostHog } from '@/stores/posthog.store';
import { useNDVStore } from '@/stores/ndv.store';
@ -26,10 +26,10 @@ import {
isPrebuiltAgentTemplateId,
isTutorialTemplateId,
SampleTemplates,
} from '@/features/templates/utils/workflowSamples';
} from '@/features/workflows/templates/utils/workflowSamples';
import type { INodeCreateElement, OpenTemplateElement } from '@/Interface';
import { useUIStore } from '@/stores/ui.store';
import { useProjectsStore } from '@/features/projects/projects.store';
import { useProjectsStore } from '@/features/collaboration/projects/projects.store';
export function useCalloutHelpers() {
const route = useRoute();

Some files were not shown because too many files have changed in this diff Show More