mirror of
https://github.com/n8n-io/n8n.git
synced 2026-05-30 08:17:06 +02:00
refactor(editor): Restructure features code into domains (no-changelog) (#20902)
This commit is contained in:
parent
71d271a964
commit
aee48295f7
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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) => {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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>;
|
||||
|
||||
|
|
|
|||
|
|
@ -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 () => {
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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 = {
|
||||
|
|
|
|||
|
|
@ -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) => ({
|
||||
'&': {
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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', () => ({
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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(),
|
||||
}));
|
||||
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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', () => ({
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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>;
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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[];
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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>;
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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<{
|
||||
|
|
|
|||
|
|
@ -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(),
|
||||
|
|
|
|||
|
|
@ -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 }>();
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ vi.mock('vue-router', () => {
|
|||
};
|
||||
});
|
||||
|
||||
vi.mock('@/features/executions/composables/useExecutionHelpers', () => ({
|
||||
vi.mock('@/features/execution/executions/composables/useExecutionHelpers', () => ({
|
||||
useExecutionHelpers: () => ({
|
||||
trackOpeningRelatedExecution,
|
||||
resolveRelatedExecutionUrl,
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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 = {
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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', () => {
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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(() => ({
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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(),
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
}),
|
||||
|
|
|
|||
|
|
@ -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
Loading…
Reference in New Issue
Block a user