refactor(core): Refactor some imports to reduce baseline memory usage (#15916)

This commit is contained in:
कारतोफ्फेलस्क्रिप्ट™
2025-06-03 11:23:44 +02:00
committed by GitHub
parent 8abd556597
commit 7c806ff532
133 changed files with 237 additions and 238 deletions

View File

@@ -1,5 +1,5 @@
import { stringify } from 'flatted';
import { pick } from 'lodash';
import pick from 'lodash/pick';
import type {
IDataObject,
IRunData,

View File

@@ -453,6 +453,7 @@ const config = (module.exports = {
'unicorn/no-useless-promise-resolve-reject': 'error',
'lodash/path-style': ['error', 'as-needed'],
'lodash/import-scope': ['error', 'method'],
},
overrides: [

View File

@@ -1,6 +1,6 @@
import { RunnableSequence } from '@langchain/core/runnables';
import { AgentExecutor, createToolCallingAgent } from 'langchain/agents';
import { omit } from 'lodash';
import omit from 'lodash/omit';
import { jsonParse, NodeOperationError } from 'n8n-workflow';
import type { IExecuteFunctions, INodeExecutionData } from 'n8n-workflow';

View File

@@ -1,7 +1,7 @@
import type { ChatPromptTemplate } from '@langchain/core/prompts';
import { RunnableSequence } from '@langchain/core/runnables';
import { AgentExecutor, createToolCallingAgent } from 'langchain/agents';
import { omit } from 'lodash';
import omit from 'lodash/omit';
import { jsonParse, NodeOperationError, sleep } from 'n8n-workflow';
import type { IExecuteFunctions, INodeExecutionData } from 'n8n-workflow';

View File

@@ -9,7 +9,7 @@ import type {
import type { BaseMessage } from '@langchain/core/messages';
import type { LLMResult } from '@langchain/core/outputs';
import { encodingForModel } from '@langchain/core/utils/tiktoken';
import { pick } from 'lodash';
import pick from 'lodash/pick';
import type { IDataObject, ISupplyDataFunctions, JsonObject } from 'n8n-workflow';
import { NodeConnectionTypes, NodeError, NodeOperationError } from 'n8n-workflow';

View File

@@ -1,6 +1,7 @@
import type { CallbackManagerForToolRun } from '@langchain/core/callbacks/manager';
import { DynamicStructuredTool, DynamicTool } from '@langchain/core/tools';
import { isArray, isObject } from 'lodash';
import isArray from 'lodash/isArray';
import isObject from 'lodash/isObject';
import type { SetField, SetNodeOptions } from 'n8n-nodes-base/dist/nodes/Set/v2/helpers/interfaces';
import * as manual from 'n8n-nodes-base/dist/nodes/Set/v2/manual.mode';
import { getCurrentWorkflowInputData } from 'n8n-nodes-base/dist/utils/workflowInputsResourceMapping/GenericFunctions';

View File

@@ -1,5 +1,5 @@
import type { BaseChatMemory } from '@langchain/community/memory/chat_memory';
import { pick } from 'lodash';
import pick from 'lodash/pick';
import { Node, NodeConnectionTypes } from 'n8n-workflow';
import type {
IDataObject,

View File

@@ -1,5 +1,5 @@
import { NodeTestHarness } from '@nodes-testing/node-test-harness';
import { pick } from 'lodash';
import pick from 'lodash/pick';
import type { WorkflowTestData } from 'n8n-workflow';
import path from 'node:path';

View File

@@ -1,4 +1,4 @@
import { isObject } from 'lodash';
import isObject from 'lodash/isObject';
import set from 'lodash/set';
import { DateTime, Duration, Interval } from 'luxon';
import { getAdditionalKeys } from 'n8n-core';

View File

@@ -5,7 +5,7 @@ import type { WorkflowEntity, IWorkflowDb } from '@n8n/db';
import { WorkflowRepository } from '@n8n/db';
import { OnLeaderStepdown, OnLeaderTakeover, OnShutdown } from '@n8n/decorators';
import { Service } from '@n8n/di';
import { chunk } from 'lodash';
import chunk from 'lodash/chunk';
import {
ActiveWorkflows,
ErrorReporter,

View File

@@ -1,7 +1,7 @@
import { Logger } from '@n8n/backend-common';
import { ExecutionRepository } from '@n8n/db';
import { Service } from '@n8n/di';
import { capitalize } from 'lodash';
import capitalize from 'lodash/capitalize';
import type { WorkflowExecuteMode as ExecutionMode } from 'n8n-workflow';
import config from '@/config';

View File

@@ -6,7 +6,7 @@ import { Container, Service } from '@n8n/di';
import type { Application } from 'express';
import { ServerResponse } from 'http';
import type { Server } from 'http';
import { pick } from 'lodash';
import pick from 'lodash/pick';
import { InstanceSettings } from 'n8n-core';
import { deepCopy } from 'n8n-workflow';
import { parse as parseUrl } from 'url';

View File

@@ -5,7 +5,7 @@ import cookieParser from 'cookie-parser';
import express from 'express';
import { access as fsAccess } from 'fs/promises';
import helmet from 'helmet';
import { isEmpty } from 'lodash';
import isEmpty from 'lodash/isEmpty';
import { InstanceSettings } from 'n8n-core';
import { jsonParse } from 'n8n-workflow';
import { resolve } from 'path';

View File

@@ -1,5 +1,6 @@
import { mock } from 'jest-mock-extended';
import { get, set } from 'lodash';
import get from 'lodash/get';
import set from 'lodash/set';
import type { NodeTypes } from '@/node-types';
import type { Task } from '@/task-runners/task-managers/task-requester';

View File

@@ -1,7 +1,7 @@
import { Logger } from '@n8n/backend-common';
import { GlobalConfig } from '@n8n/config';
import { Service } from '@n8n/di';
import { pick } from 'lodash';
import pick from 'lodash/pick';
import { ErrorReporter } from 'n8n-core';
import path from 'node:path';
import type { Transporter } from 'nodemailer';

View File

@@ -3,7 +3,7 @@ import { Container } from '@n8n/di';
import callsites from 'callsites';
import glob from 'fast-glob';
import { mock } from 'jest-mock-extended';
import { isEmpty } from 'lodash';
import isEmpty from 'lodash/isEmpty';
import type {
ICredentialDataDecryptedObject,
IRun,

View File

@@ -1,5 +1,5 @@
import { mock } from 'jest-mock-extended';
import { get } from 'lodash';
import get from 'lodash/get';
import type {
DeclarativeRestApiSettings,
IExecuteData,

View File

@@ -15,7 +15,7 @@ process.env.N8N_RUNNERS_ENABLED = 'false';
// PD denotes that the node has pinned data
import { mock } from 'jest-mock-extended';
import { pick } from 'lodash';
import pick from 'lodash/pick';
import type {
ExecutionBaseError,
IConnection,

View File

@@ -1,5 +1,5 @@
import { Container } from '@n8n/di';
import { get } from 'lodash';
import get from 'lodash/get';
import type {
Workflow,
INode,

View File

@@ -1,4 +1,4 @@
import { get } from 'lodash';
import get from 'lodash/get';
import type {
ICredentialDataDecryptedObject,
IGetNodeParameterOptions,

View File

@@ -1,4 +1,4 @@
import lodash from 'lodash';
import get from 'lodash/get';
import { ApplicationError, Workflow } from 'n8n-workflow';
import type {
INodeParameterResourceLocator,
@@ -65,8 +65,6 @@ export class LocalLoadOptionsContext implements ILocalLoadOptionsFunctions {
parameterPath = `${this.path.split('.').slice(1, -1).join('.')}.${parameterPath.slice(1)}`;
}
const returnData = lodash.get(nodeParameters, parameterPath);
return returnData;
return get(nodeParameters, parameterPath);
}
}

View File

@@ -1,7 +1,7 @@
import { Logger } from '@n8n/backend-common';
import { Memoized } from '@n8n/decorators';
import { Container } from '@n8n/di';
import { get } from 'lodash';
import get from 'lodash/get';
import type {
FunctionsBase,
ICredentialDataDecryptedObject,

View File

@@ -23,7 +23,6 @@ export default mergeConfig(
alias: {
'@': srcPath,
'@n8n/chat': srcPath,
lodash: 'lodash-es',
},
},
define: {

View File

@@ -26,6 +26,7 @@
"@testing-library/jest-dom": "catalog:frontend",
"@testing-library/user-event": "catalog:frontend",
"@testing-library/vue": "catalog:frontend",
"@types/lodash": "catalog:",
"@types/markdown-it": "^13.0.9",
"@types/markdown-it-emoji": "^2.0.2",
"@types/markdown-it-link-attributes": "^3.0.5",
@@ -52,6 +53,7 @@
"@tanstack/vue-table": "^8.21.2",
"element-plus": "catalog:frontend",
"is-emoji-supported": "^0.0.5",
"lodash": "catalog:",
"markdown-it": "^13.0.2",
"markdown-it-emoji": "^2.0.2",
"markdown-it-link-attributes": "^4.0.1",

View File

@@ -33,7 +33,7 @@ import type {
} from '@tanstack/vue-table';
import { createColumnHelper, FlexRender, getCoreRowModel, useVueTable } from '@tanstack/vue-table';
import { ElCheckbox } from 'element-plus';
import { get } from 'lodash-es';
import get from 'lodash/get';
import { computed, h, ref, shallowRef, useSlots, watch } from 'vue';
import N8nPagination from '../N8nPagination';

View File

@@ -32,7 +32,6 @@ export default mergeConfig(
'@n8n/design-system': resolve(__dirname, 'src'),
'@n8n/composables(.*)': resolve(packagesDir, 'frontend', '@n8n', 'composables', 'src$1'),
'@n8n/utils(.*)': resolve(packagesDir, '@n8n', 'utils', 'src$1'),
lodash: 'lodash-es',
},
},
build: {

View File

@@ -70,7 +70,7 @@
"highlight.js": "catalog:frontend",
"humanize-duration": "^3.27.2",
"jsonpath": "^1.1.1",
"lodash-es": "^4.17.21",
"lodash": "catalog:",
"luxon": "catalog:",
"n8n-workflow": "workspace:*",
"pinia": "catalog:frontend",
@@ -107,7 +107,7 @@
"@types/humanize-duration": "^3.27.1",
"@types/json-schema": "^7.0.15",
"@types/jsonpath": "^0.2.0",
"@types/lodash-es": "^4.17.6",
"@types/lodash": "catalog:",
"@types/uuid": "catalog:",
"@vitejs/plugin-legacy": "^6.0.2",
"@vitejs/plugin-vue": "catalog:frontend",

View File

@@ -8,7 +8,7 @@ import type { Pinia } from 'pinia';
import { PiniaVuePlugin } from 'pinia';
import type { Telemetry } from '@/plugins/telemetry';
import vueJsonPretty from 'vue-json-pretty';
import { merge } from 'lodash-es';
import merge from 'lodash/merge';
import type { TestingPinia } from '@pinia/testing';
export type RenderComponent = Parameters<typeof render>[0];

View File

@@ -4,7 +4,7 @@ import userEvent from '@testing-library/user-event';
import Assignment from './Assignment.vue';
import { defaultSettings } from '@/__tests__/defaults';
import { STORES } from '@n8n/stores';
import { merge } from 'lodash-es';
import merge from 'lodash/merge';
import { cleanupAppModals, createAppModals } from '@/__tests__/utils';
const DEFAULT_SETUP = {

View File

@@ -1,4 +1,4 @@
import { isObject } from 'lodash-es';
import isObject from 'lodash/isObject';
import type { AssignmentValue, IDataObject } from 'n8n-workflow';
import { resolveParameter } from '@/composables/useWorkflowHelpers';
import { v4 as uuid } from 'uuid';

View File

@@ -1,4 +1,4 @@
import { merge } from 'lodash-es';
import merge from 'lodash/merge';
import userEvent from '@testing-library/user-event';
import { SETTINGS_STORE_DEFAULT_STATE } from '@/__tests__/utils';

View File

@@ -2,7 +2,7 @@
import { computed, nextTick, useTemplateRef, watch } from 'vue';
import { N8nButton, N8nIcon, N8nIconButton, N8nText } from '@n8n/design-system';
import { useNodeTypesStore } from '@/stores/nodeTypes.store';
import { upperFirst } from 'lodash-es';
import upperFirst from 'lodash/upperFirst';
import { useI18n } from '@n8n/i18n';
import LogsViewConsumedTokenCountText from '@/components/CanvasChat/future/components/LogsViewConsumedTokenCountText.vue';
import { I18nT } from 'vue-i18n';

View File

@@ -4,7 +4,7 @@ import { useI18n } from '@n8n/i18n';
import { type LlmTokenUsageData } from '@/Interface';
import { N8nText } from '@n8n/design-system';
import { useTimestamp } from '@vueuse/core';
import { upperFirst } from 'lodash-es';
import upperFirst from 'lodash/upperFirst';
import { type ExecutionStatus } from 'n8n-workflow';
import { computed } from 'vue';

View File

@@ -1,7 +1,8 @@
import { CHAT_TRIGGER_NODE_TYPE, MANUAL_CHAT_TRIGGER_NODE_TYPE } from '@/constants';
import { type IExecutionResponse, type INodeUi, type IWorkflowDb } from '@/Interface';
import { type ChatMessage } from '@n8n/chat/types';
import { get, isEmpty } from 'lodash-es';
import get from 'lodash/get';
import isEmpty from 'lodash/isEmpty';
import { NodeConnectionTypes, type IDataObject, type IRunExecutionData } from 'n8n-workflow';
import { v4 as uuid } from 'uuid';

View File

@@ -1,6 +1,6 @@
<script setup lang="ts">
import { ref, computed, onMounted } from 'vue';
import { snakeCase } from 'lodash-es';
import snakeCase from 'lodash/snakeCase';
import { useSessionStorage } from '@vueuse/core';
import { N8nButton, N8nInput, N8nTooltip } from '@n8n/design-system/components';

View File

@@ -10,7 +10,7 @@ import type {
} from 'n8n-workflow';
import { deepCopy } from 'n8n-workflow';
import { get } from 'lodash-es';
import get from 'lodash/get';
import { useNDVStore } from '@/stores/ndv.store';
import { useNodeHelpers } from '@/composables/useNodeHelpers';

View File

@@ -1,4 +1,4 @@
import { merge } from 'lodash-es';
import merge from 'lodash/merge';
import { SETTINGS_STORE_DEFAULT_STATE } from '@/__tests__/utils';
import { STORES } from '@n8n/stores';

View File

@@ -2,7 +2,7 @@
import { N8nIcon, N8nTooltip } from '@n8n/design-system';
import type { TableInstance } from 'element-plus';
import { ElTable, ElTableColumn } from 'element-plus';
import { isEqual } from 'lodash-es';
import isEqual from 'lodash/isEqual';
import { nextTick, ref, watch } from 'vue';
import type { RouteLocationRaw } from 'vue-router';
/**

View File

@@ -7,7 +7,7 @@ import { createTestingPinia } from '@pinia/testing';
import userEvent from '@testing-library/user-event';
import { within, waitFor } from '@testing-library/vue';
import { getFilterOperator } from './utils';
import { get } from 'lodash-es';
import get from 'lodash/get';
const DEFAULT_SETUP = {
pinia: createTestingPinia({

View File

@@ -1,5 +1,6 @@
<script setup lang="ts">
import { isEmpty, isEqual } from 'lodash-es';
import isEmpty from 'lodash/isEmpty';
import isEqual from 'lodash/isEqual';
import {
type FilterConditionValue,

View File

@@ -4,7 +4,7 @@ import type { IUpdateInformation } from '@/Interface';
import type { INodeParameters, INodeProperties, NodeParameterValueType } from 'n8n-workflow';
import { deepCopy, isINodePropertyCollectionList } from 'n8n-workflow';
import { get } from 'lodash-es';
import get from 'lodash/get';
import { computed, ref, watch, onBeforeMount } from 'vue';
import { useI18n } from '@n8n/i18n';

View File

@@ -11,7 +11,7 @@ import { useNodeTypesStore } from '@/stores/nodeTypes.store';
import { useWorkflowsStore } from '@/stores/workflows.store';
import { useNDVStore } from '@/stores/ndv.store';
import { waitingNodeTooltip } from '@/utils/executionUtils';
import { uniqBy } from 'lodash-es';
import uniqBy from 'lodash/uniqBy';
import { N8nIcon, N8nRadioButtons, N8nText, N8nTooltip } from '@n8n/design-system';
import {
type INodeInputConfiguration,

View File

@@ -2,7 +2,7 @@ import { describe, it, expect, vi } from 'vitest';
import { waitFor } from '@testing-library/vue';
import userEvent from '@testing-library/user-event';
import { createTestingPinia } from '@pinia/testing';
import { merge } from 'lodash-es';
import merge from 'lodash/merge';
import { SOURCE_CONTROL_PULL_MODAL_KEY, SOURCE_CONTROL_PUSH_MODAL_KEY } from '@/constants';
import { STORES } from '@n8n/stores';
import { SETTINGS_STORE_DEFAULT_STATE } from '@/__tests__/utils';

View File

@@ -1,6 +1,6 @@
<script setup lang="ts">
import { ref, watch, computed } from 'vue';
import { get } from 'lodash-es';
import get from 'lodash/get';
import type { INodeParameters, INodeProperties } from 'n8n-workflow';
import { deepCopy } from 'n8n-workflow';

View File

@@ -1,6 +1,6 @@
<script setup lang="ts">
import type { SubcategoryItemProps } from '@/Interface';
import { camelCase } from 'lodash-es';
import camelCase from 'lodash/camelCase';
import { computed } from 'vue';
import { useI18n } from '@n8n/i18n';
import type { BaseTextKey } from '@n8n/i18n';

View File

@@ -1,5 +1,5 @@
<script setup lang="ts">
import { camelCase } from 'lodash-es';
import camelCase from 'lodash/camelCase';
import { computed } from 'vue';
import type {
ActionTypeDescription,

View File

@@ -6,7 +6,8 @@ import {
CUSTOM_API_CALL_KEY,
HTTP_REQUEST_NODE_TYPE,
} from '@/constants';
import { memoize, startCase } from 'lodash-es';
import memoize from 'lodash/memoize';
import startCase from 'lodash/startCase';
import type {
ICredentialType,
INodeProperties,

View File

@@ -19,7 +19,7 @@ import {
import { defineStore } from 'pinia';
import { v4 as uuid } from 'uuid';
import { computed, nextTick, ref } from 'vue';
import difference from 'lodash-es/difference';
import difference from 'lodash/difference';
import { useNodeCreatorStore } from '@/stores/nodeCreator.store';

View File

@@ -22,7 +22,7 @@ import { v4 as uuidv4 } from 'uuid';
import { sublimeSearch } from '@n8n/utils/search/sublimeSearch';
import type { NodeViewItemSection } from './viewsData';
import { i18n } from '@n8n/i18n';
import { sortBy } from 'lodash-es';
import sortBy from 'lodash/sortBy';
import * as changeCase from 'change-case';
import { useSettingsStore } from '@/stores/settings.store';

View File

@@ -65,7 +65,7 @@ import type { INodeTypeDescription, NodeConnectionType, Themed } from 'n8n-workf
import { EVALUATION_TRIGGER_NODE_TYPE, NodeConnectionTypes } from 'n8n-workflow';
import { useTemplatesStore } from '@/stores/templates.store';
import type { BaseTextKey } from '@n8n/i18n';
import { camelCase } from 'lodash-es';
import camelCase from 'lodash/camelCase';
import { useSettingsStore } from '@/stores/settings.store';
import { useEvaluationStore } from '@/stores/evaluation.store.ee';
export interface NodeViewItemSection {

View File

@@ -32,7 +32,9 @@ import NodeCredentials from '@/components/NodeCredentials.vue';
import NodeSettingsTabs from '@/components/NodeSettingsTabs.vue';
import NodeWebhooks from '@/components/NodeWebhooks.vue';
import NDVSubConnections from '@/components/NDVSubConnections.vue';
import { get, set, unset } from 'lodash-es';
import get from 'lodash/get';
import set from 'lodash/set';
import unset from 'lodash/unset';
import NodeExecuteButton from './NodeExecuteButton.vue';
import { isCommunityPackageName } from '@/utils/nodeTypesUtils';

View File

@@ -1,7 +1,7 @@
<script setup lang="ts">
import { computed, nextTick, onBeforeUnmount, onMounted, onUpdated, ref, watch } from 'vue';
import { get } from 'lodash-es';
import get from 'lodash/get';
import type {
INodeUi,

View File

@@ -36,7 +36,8 @@ import {
} from '@/utils/nodeTypesUtils';
import { captureException } from '@sentry/vue';
import { computedWithControl } from '@vueuse/core';
import { get, set } from 'lodash-es';
import get from 'lodash/get';
import set from 'lodash/set';
import { N8nIcon, N8nIconButton, N8nInputLabel, N8nNotice, N8nText } from '@n8n/design-system';
import { useRouter } from 'vue-router';
import { storeToRefs } from 'pinia';

View File

@@ -29,7 +29,7 @@ import { useNDVStore } from '@/stores/ndv.store';
import { useWorkflowsStore } from '@/stores/workflows.store';
import { useDocumentVisibility } from '@/composables/useDocumentVisibility';
import { N8nButton, N8nCallout, N8nNotice } from '@n8n/design-system';
import { isEqual } from 'lodash-es';
import isEqual from 'lodash/isEqual';
type Props = {
parameter: INodeProperties;

View File

@@ -68,7 +68,8 @@ import { executionDataToJson } from '@/utils/nodeTypesUtils';
import { getGenericHints } from '@/utils/nodeViewUtils';
import { searchInObject } from '@/utils/objectUtils';
import { clearJsonKey, isEmpty, isPresent } from '@/utils/typesUtils';
import { isEqual, isObject } from 'lodash-es';
import isEqual from 'lodash/isEqual';
import isObject from 'lodash/isObject';
import {
N8nBlockUi,
N8nButton,

View File

@@ -1,6 +1,6 @@
<script lang="ts" setup>
import type { IAiDataContent } from '@/Interface';
import { capitalize } from 'lodash-es';
import capitalize from 'lodash/capitalize';
import { computed, ref } from 'vue';
import { NodeConnectionTypes } from 'n8n-workflow';
import type { NodeConnectionType, NodeError } from 'n8n-workflow';

View File

@@ -1,5 +1,5 @@
import { createTestingPinia } from '@pinia/testing';
import { merge } from 'lodash-es';
import merge from 'lodash/merge';
import SSOLogin from '@/components/SSOLogin.vue';
import { STORES } from '@n8n/stores';
import { useSSOStore } from '@/stores/sso.store';

View File

@@ -1,6 +1,8 @@
<script setup lang="ts">
import { computed, onMounted, ref } from 'vue';
import { get, set, unset } from 'lodash-es';
import get from 'lodash/get';
import set from 'lodash/set';
import unset from 'lodash/unset';
import type {
IDataObject,
NodeParameterValue,

View File

@@ -9,7 +9,8 @@ import { useSourceControlStore } from '@/stores/sourceControl.store';
import { useUIStore } from '@/stores/ui.store';
import { computed } from 'vue';
import { sourceControlEventBus } from '@/event-bus/source-control';
import { orderBy, groupBy } from 'lodash-es';
import groupBy from 'lodash/groupBy';
import orderBy from 'lodash/orderBy';
import { N8nBadge, N8nText, N8nLink, N8nButton } from '@n8n/design-system';
import { RouterLink } from 'vue-router';
import {

View File

@@ -35,7 +35,8 @@ import {
SOURCE_CONTROL_FILE_TYPE,
SOURCE_CONTROL_FILE_LOCATION,
} from '@n8n/api-types';
import { orderBy, groupBy } from 'lodash-es';
import groupBy from 'lodash/groupBy';
import orderBy from 'lodash/orderBy';
import { getStatusText, getStatusTheme, getPushPriorityByStatus } from '@/utils/sourceControlUtils';
import { useTelemetry } from '@/composables/useTelemetry';

View File

@@ -5,7 +5,7 @@ import type { ITag } from '@/Interface';
import IntersectionObserver from './IntersectionObserver.vue';
import IntersectionObserved from './IntersectionObserved.vue';
import { createEventBus } from '@n8n/utils/event-bus';
import { debounce } from 'lodash-es';
import debounce from 'lodash/debounce';
interface TagsContainerProps {
tagIds: string[];

View File

@@ -42,7 +42,7 @@ import { useSettingsStore } from '@/stores/settings.store';
import { isEmpty } from '@/utils/typesUtils';
import { asyncComputed } from '@vueuse/core';
import 'vue-virtual-scroller/dist/vue-virtual-scroller.css';
import { pick } from 'lodash-es';
import pick from 'lodash/pick';
import { DateTime } from 'luxon';
import NodeExecuteButton from './NodeExecuteButton.vue';

View File

@@ -3,7 +3,7 @@ import WorkflowExtractionNameModal from '@/components/WorkflowExtractionNameModa
import { WORKFLOW_EXTRACTION_NAME_MODAL_KEY } from '@/constants';
import type { INodeUi } from '@/Interface';
import type { ExtractableSubgraphData } from 'n8n-workflow';
import { cloneDeep } from 'lodash-es';
import cloneDeep from 'lodash/cloneDeep';
import userEvent from '@testing-library/user-event';
import { createTestingPinia } from '@pinia/testing';
import { createComponentRenderer } from '@/__tests__/render';

View File

@@ -1,6 +1,6 @@
import { ref, computed } from 'vue';
import { useWorkflowsStore } from '@/stores/workflows.store';
import { sortBy } from 'lodash-es';
import sortBy from 'lodash/sortBy';
import type { Router } from 'vue-router';
import { VIEWS } from '@/constants';

View File

@@ -1,7 +1,7 @@
import { SETTINGS_STORE_DEFAULT_STATE } from '@/__tests__/utils';
import { STORES } from '@n8n/stores';
import { createTestingPinia } from '@pinia/testing';
import { merge } from 'lodash-es';
import merge from 'lodash/merge';
import type { ResourceMapperFields, ResourceMapperValue } from 'n8n-workflow';
export const NODE_PARAMETER_VALUES = {

View File

@@ -32,7 +32,7 @@ import {
} from '@/utils/canvasUtils';
import type { EventBus } from '@n8n/utils/event-bus';
import { createEventBus } from '@n8n/utils/event-bus';
import { isEqual } from 'lodash-es';
import isEqual from 'lodash/isEqual';
import CanvasNodeTrigger from '@/components/canvas/elements/nodes/render-types/parts/CanvasNodeTrigger.vue';
type Props = NodeProps<CanvasNodeData> & {

View File

@@ -8,7 +8,7 @@ import type { IWorkflowShortResponse, ExecutionFilterType } from '@/Interface';
import { createComponentRenderer } from '@/__tests__/render';
import * as telemetryModule from '@/composables/useTelemetry';
import type { Telemetry } from '@/plugins/telemetry';
import { merge } from 'lodash-es';
import merge from 'lodash/merge';
const defaultFilterState: ExecutionFilterType = {
status: 'all',

View File

@@ -1,5 +1,5 @@
import { vi, describe, it, expect } from 'vitest';
import { merge } from 'lodash-es';
import merge from 'lodash/merge';
import { createTestingPinia } from '@pinia/testing';
import userEvent from '@testing-library/user-event';
import { faker } from '@faker-js/faker';

View File

@@ -5,7 +5,7 @@ import WorkflowExecutionsSidebar from '@/components/executions/workflow/Workflow
import { useSettingsStore } from '@/stores/settings.store';
import { mockedStore, SETTINGS_STORE_DEFAULT_STATE } from '@/__tests__/utils';
import { STORES } from '@n8n/stores';
import { merge } from 'lodash-es';
import merge from 'lodash/merge';
import { expect, it } from 'vitest';
vi.mock('vue-router', () => {

View File

@@ -6,7 +6,7 @@ import { useNDVStore } from '@/stores/ndv.store';
import { useRootStore } from '@n8n/stores/useRootStore';
import { useTelemetry } from '../composables/useTelemetry';
import type { Compartment } from '@codemirror/state';
import { debounce } from 'lodash-es';
import debounce from 'lodash/debounce';
export const useAutocompleteTelemetry = ({
editor: editorRef,

View File

@@ -111,7 +111,7 @@ import type { CanvasLayoutEvent } from './useCanvasLayout';
import { chatEventBus } from '@n8n/chat/event-buses';
import { isChatNode } from '@/components/CanvasChat/utils';
import { useLogsStore } from '@/stores/logs.store';
import { cloneDeep } from 'lodash-es';
import cloneDeep from 'lodash/cloneDeep';
type AddNodeData = Partial<INodeUi> & {
type: string;

View File

@@ -51,7 +51,7 @@ import {
import { useCompleter } from '../components/CodeNodeEditor/completer';
import { mappingDropCursor } from '../plugins/codemirror/dragAndDrop';
import { languageFacet, type CodeEditorLanguage } from '../plugins/codemirror/format';
import { debounce } from 'lodash-es';
import debounce from 'lodash/debounce';
import { ignoreUpdateAnnotation } from '../utils/forceParse';
export type CodeEditorLanguageParamsMap = {

View File

@@ -6,7 +6,7 @@ import { isObject } from '@/utils/objectUtils';
import { isObj } from '@/utils/typeGuards';
import { isPresent, shorten } from '@/utils/typesUtils';
import type { JSONSchema7, JSONSchema7Definition, JSONSchema7TypeName } from 'json-schema';
import { merge } from 'lodash-es';
import merge from 'lodash/merge';
import {
type IDataObject,
type INodeExecutionData,

View File

@@ -1,5 +1,5 @@
import { ref } from 'vue';
import { debounce as _debounce, type DebouncedFunc } from 'lodash-es';
import _debounce from 'lodash/debounce';
export interface DebounceOptions {
debounceTime: number;
@@ -8,6 +8,7 @@ export interface DebounceOptions {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
type AnyFunction = (...args: any) => any;
type DebouncedFunc<T extends AnyFunction> = ReturnType<typeof _debounce<T>>;
export function useDebounce() {
// Create a ref for the WeakMap to store debounced functions.

View File

@@ -33,7 +33,8 @@ import {
type SelectionRange,
} from '@codemirror/state';
import { EditorView, type ViewUpdate } from '@codemirror/view';
import { debounce, isEqual } from 'lodash-es';
import debounce from 'lodash/debounce';
import isEqual from 'lodash/isEqual';
import { useRouter } from 'vue-router';
import { useI18n } from '@n8n/i18n';
import { useWorkflowsStore } from '../stores/workflows.store';

View File

@@ -40,7 +40,7 @@ import { isObject } from '@/utils/objectUtils';
import { useWorkflowsStore } from '@/stores/workflows.store';
import { useNodeTypesStore } from '@/stores/nodeTypes.store';
import { useCredentialsStore } from '@/stores/credentials.store';
import { get } from 'lodash-es';
import get from 'lodash/get';
import { useI18n } from '@n8n/i18n';
import { EnableNodeToggleCommand } from '@/models/history';
import { useTelemetry } from './useTelemetry';

View File

@@ -1,6 +1,6 @@
import { ROLE } from '@/constants';
import { useSettingsStore } from '@/stores/settings.store';
import { merge } from 'lodash-es';
import merge from 'lodash/merge';
import { usePageRedirectionHelper } from './usePageRedirectionHelper';
import { defaultSettings } from '@/__tests__/defaults';
import { useUsersStore } from '@/stores/users.store';

View File

@@ -2,7 +2,7 @@ import { useNDVStore } from '@/stores/ndv.store';
import { useWorkflowsStore } from '@/stores/workflows.store';
import { isExpression as isExpressionUtil, stringifyExpressionResult } from '@/utils/expressions';
import { debounce } from 'lodash-es';
import debounce from 'lodash/debounce';
import { createResultError, createResultOk, type IDataObject, type Result } from 'n8n-workflow';
import { computed, onMounted, ref, toRef, toValue, watch, type MaybeRefOrGetter } from 'vue';
import { useRouter } from 'vue-router';

View File

@@ -36,7 +36,7 @@ import { useWorkflowHelpers } from '@/composables/useWorkflowHelpers';
import type { useRouter } from 'vue-router';
import { isEmpty } from '@/utils/typesUtils';
import { useI18n } from '@n8n/i18n';
import { get } from 'lodash-es';
import get from 'lodash/get';
import { useExecutionsStore } from '@/stores/executions.store';
import { useTelemetry } from './useTelemetry';
import { useSettingsStore } from '@/stores/settings.store';

View File

@@ -23,7 +23,7 @@ import { PUSH_NODES_OFFSET } from '@/utils/nodeViewUtils';
import { useUIStore } from '@/stores/ui.store';
import { useNodeTypesStore } from '@/stores/nodeTypes.store';
import { useTelemetry } from './useTelemetry';
import { isEqual } from 'lodash-es';
import isEqual from 'lodash/isEqual';
import { v4 as uuidv4 } from 'uuid';
const CANVAS_HISTORY_OPTIONS = {

View File

@@ -47,7 +47,7 @@ import { useMessage } from '@/composables/useMessage';
import { useToast } from '@/composables/useToast';
import { useNodeHelpers } from '@/composables/useNodeHelpers';
import { get } from 'lodash-es';
import get from 'lodash/get';
import { useEnvironmentsStore } from '@/stores/environments.ee.store';
import { useRootStore } from '@n8n/stores/useRootStore';

View File

@@ -1,4 +1,4 @@
import { merge } from 'lodash-es';
import merge from 'lodash/merge';
import { type ChartOptions, type ScriptableContext } from 'chart.js';
import { useCssVar } from '@vueuse/core';
import { smartDecimal } from '@n8n/utils/number/smartDecimal';

View File

@@ -15,7 +15,7 @@ import { CompletionContext } from '@codemirror/autocomplete';
import { EditorState } from '@codemirror/state';
import { n8nLang } from '@/plugins/codemirror/n8nLang';
import { LUXON_RECOMMENDED_OPTIONS, STRING_RECOMMENDED_OPTIONS } from './constants';
import { uniqBy } from 'lodash-es';
import uniqBy from 'lodash/uniqBy';
beforeEach(async () => {
setActivePinia(createTestingPinia());

View File

@@ -29,7 +29,8 @@ import {
RECOMMENDED_SECTION,
STRING_RECOMMENDED_OPTIONS,
} from './constants';
import { set, uniqBy } from 'lodash-es';
import set from 'lodash/set';
import uniqBy from 'lodash/uniqBy';
import { mockNodes } from '@/__tests__/mocks';
let externalSecretsStore: ReturnType<typeof useExternalSecretsStore>;

View File

@@ -9,7 +9,7 @@ import type {
CompletionResult,
CompletionSection,
} from '@codemirror/autocomplete';
import { uniqBy } from 'lodash-es';
import uniqBy from 'lodash/uniqBy';
import { DateTime } from 'luxon';
import type { DocMetadata, IDataObject, NativeDoc } from 'n8n-workflow';
import { Expression, ExpressionExtensions, NativeMethods, validateFieldType } from 'n8n-workflow';

View File

@@ -1,7 +1,7 @@
import { SETTINGS_STORE_DEFAULT_STATE } from '@/__tests__/utils';
import { Telemetry } from '@/plugins/telemetry';
import { useSettingsStore } from '@/stores/settings.store';
import merge from 'lodash-es/merge';
import merge from 'lodash/merge';
import { createPinia, setActivePinia } from 'pinia';
let telemetry: Telemetry;

View File

@@ -11,7 +11,7 @@ import type { ChatRequest } from '@/types/assistant.types';
import { usePostHog } from './posthog.store';
import { useSettingsStore } from '@/stores/settings.store';
import { defaultSettings } from '../__tests__/defaults';
import { merge } from 'lodash-es';
import merge from 'lodash/merge';
import { DEFAULT_POSTHOG_SETTINGS } from './posthog.test';
import { VIEWS } from '@/constants';
import { reactive } from 'vue';

View File

@@ -5,7 +5,7 @@ import type { ChatRequest } from '@/types/assistant.types';
import { usePostHog } from './posthog.store';
import { useSettingsStore } from '@/stores/settings.store';
import { defaultSettings } from '../__tests__/defaults';
import { merge } from 'lodash-es';
import merge from 'lodash/merge';
import { DEFAULT_POSTHOG_SETTINGS } from './posthog.test';
import { WORKFLOW_BUILDER_EXPERIMENT } from '@/constants';
import { reactive } from 'vue';

View File

@@ -1,7 +1,7 @@
import { createPinia, setActivePinia } from 'pinia';
import { useSettingsStore } from '@/stores/settings.store';
import { useSSOStore } from '@/stores/sso.store';
import { merge } from 'lodash-es';
import merge from 'lodash/merge';
import { SETTINGS_STORE_DEFAULT_STATE } from '@/__tests__/utils';
import type { FrontendSettings } from '@n8n/api-types';

View File

@@ -2,7 +2,7 @@ import { createPinia, setActivePinia } from 'pinia';
import { useUIStore } from '@/stores/ui.store';
import { useSettingsStore } from '@/stores/settings.store';
import { useUsersStore } from '@/stores/users.store';
import { merge } from 'lodash-es';
import merge from 'lodash/merge';
import { useCloudPlanStore } from '@/stores/cloudPlan.store';
import * as cloudPlanApi from '@/api/cloudPlans';
import { defaultSettings } from '../__tests__/defaults';

View File

@@ -64,7 +64,9 @@ import {
Workflow,
TelemetryHelpers,
} from 'n8n-workflow';
import { findLast, pick, isEqual } from 'lodash-es';
import findLast from 'lodash/findLast';
import isEqual from 'lodash/isEqual';
import pick from 'lodash/pick';
import { useRootStore } from '@n8n/stores/useRootStore';
import * as workflowsApi from '@/api/workflows';

View File

@@ -7,7 +7,7 @@ import type {
} from 'n8n-workflow';
import type { INodeUi, IUpdateInformation } from '@/Interface';
import { SWITCH_NODE_TYPE } from '@/constants';
import { isEqual } from 'lodash-es';
import isEqual from 'lodash/isEqual';
import { captureException } from '@sentry/vue';

View File

@@ -4,7 +4,7 @@ import { useI18n } from '@n8n/i18n';
import { type SourceControlledFile, SOURCE_CONTROL_FILE_STATUS } from '@n8n/api-types';
import type { BaseTextKey } from '@n8n/i18n';
import { VIEWS } from '@/constants';
import { groupBy } from 'lodash-es';
import groupBy from 'lodash/groupBy';
import type { useToast } from '@/composables/useToast';
import { telemetry } from '@/plugins/telemetry';

View File

@@ -31,7 +31,7 @@ import { useUsersStore } from '@/stores/users.store';
import type { Project } from '@/types/projects.types';
import { isCredentialsResource } from '@/utils/typeGuards';
import { N8nCheckbox } from '@n8n/design-system';
import { pickBy } from 'lodash-es';
import pickBy from 'lodash/pickBy';
import type { ICredentialType, ICredentialsDecrypted } from 'n8n-workflow';
import { CREDENTIAL_EMPTY_VALUE } from 'n8n-workflow';
import { computed, onMounted, ref, watch } from 'vue';

View File

@@ -5,7 +5,7 @@ import { computed, ref } from 'vue';
import RunsSection from '@/components/Evaluations.ee/ListRuns/RunsSection.vue';
import { useEvaluationStore } from '@/stores/evaluation.store.ee';
import { N8nButton } from '@n8n/design-system';
import { orderBy } from 'lodash-es';
import orderBy from 'lodash/orderBy';
import { useToast } from '@/composables/useToast';
const props = defineProps<{

View File

@@ -12,7 +12,7 @@ import { convertToDisplayDate } from '@/utils/formatters/dateFormatter';
import { N8nText, N8nTooltip, N8nIcon } from '@n8n/design-system';
import { computed, onMounted, ref } from 'vue';
import { useRouter } from 'vue-router';
import { orderBy } from 'lodash-es';
import orderBy from 'lodash/orderBy';
import { statusDictionary } from '@/components/Evaluations.ee/shared/statusDictionary';
import { getErrorBaseKey } from '@/components/Evaluations.ee/shared/errorCodes';

View File

@@ -1,7 +1,7 @@
import userEvent from '@testing-library/user-event';
import { useRouter } from 'vue-router';
import { createTestingPinia } from '@pinia/testing';
import { merge } from 'lodash-es';
import merge from 'lodash/merge';
import SamlOnboarding from '@/views/SamlOnboarding.vue';
import { useSSOStore } from '@/stores/sso.store';
import { STORES } from '@n8n/stores';

View File

@@ -1,5 +1,5 @@
import { createTestingPinia } from '@pinia/testing';
import { merge } from 'lodash-es';
import merge from 'lodash/merge';
import { EnterpriseEditionFeature } from '@/constants';
import { STORES } from '@n8n/stores';
import { SETTINGS_STORE_DEFAULT_STATE } from '@/__tests__/utils';

View File

@@ -8,7 +8,7 @@ import { createUser } from '@/__tests__/data/users';
import { useRBACStore } from '@/stores/rbac.store';
import { useSettingsStore } from '@/stores/settings.store';
import { createTestingPinia, type TestingOptions } from '@pinia/testing';
import { merge } from 'lodash-es';
import merge from 'lodash/merge';
import { useUIStore } from '@/stores/ui.store';
import { useSSOStore } from '@/stores/sso.store';
import { STORES } from '@n8n/stores';

View File

@@ -12,7 +12,7 @@ import {
import type { INodeCredentialDescription, INodeCredentialsDetails } from 'n8n-workflow';
import type { NodeTypeProvider } from '@/utils/nodeTypes/nodeTypeTransforms';
import { getNodeTypeDisplayableCredentials } from '@/utils/nodes/nodeTransforms';
import sortBy from 'lodash-es/sortBy';
import sortBy from 'lodash/sortBy';
//#region Types

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