refactor: Enable import/order for design-system, workflow and @n8n packages (#10847)

This commit is contained in:
Tomi Turtiainen
2024-09-18 10:19:33 +03:00
committed by GitHub
parent 5a1db6db1a
commit 4f0a1a953f
305 changed files with 746 additions and 507 deletions

View File

@@ -1,5 +1,5 @@
import * as Logger from './LoggerProxy';
import { ApplicationError, type ReportingOptions } from './errors/application.error';
import * as Logger from './LoggerProxy';
interface ErrorReporter {
report: (error: Error | string, options?: ReportingOptions) => void;

View File

@@ -1,6 +1,15 @@
import { DateTime, Duration, Interval } from 'luxon';
import * as tmpl from '@n8n_io/riot-tmpl';
import { DateTime, Duration, Interval } from 'luxon';
import { ApplicationError } from './errors/application.error';
import { ExpressionExtensionError } from './errors/expression-extension.error';
import { ExpressionError } from './errors/expression.error';
import { evaluateExpression, setErrorHandler } from './ExpressionEvaluatorProxy';
import { sanitizer, sanitizerName } from './ExpressionSandboxing';
import { extend, extendOptional } from './Extensions';
import { extendSyntax } from './Extensions/ExpressionExtension';
import { extendedFunctions } from './Extensions/ExtendedFunctions';
import { getGlobalState } from './GlobalState';
import type {
IDataObject,
IExecuteData,
@@ -15,18 +24,8 @@ import type {
NodeParameterValueType,
WorkflowExecuteMode,
} from './Interfaces';
import { ExpressionError } from './errors/expression.error';
import { ExpressionExtensionError } from './errors/expression-extension.error';
import { WorkflowDataProxy } from './WorkflowDataProxy';
import type { Workflow } from './Workflow';
import { extend, extendOptional } from './Extensions';
import { extendedFunctions } from './Extensions/ExtendedFunctions';
import { extendSyntax } from './Extensions/ExpressionExtension';
import { evaluateExpression, setErrorHandler } from './ExpressionEvaluatorProxy';
import { getGlobalState } from './GlobalState';
import { ApplicationError } from './errors/application.error';
import { sanitizer, sanitizerName } from './ExpressionSandboxing';
import { WorkflowDataProxy } from './WorkflowDataProxy';
const IS_FRONTEND_IN_DEV_MODE =
typeof process === 'object' &&

View File

@@ -1,9 +1,10 @@
import * as tmpl from '@n8n_io/riot-tmpl';
import type { ReturnValue, TmplDifference } from '@n8n/tournament';
import { Tournament } from '@n8n/tournament';
import * as tmpl from '@n8n_io/riot-tmpl';
import { PrototypeSanitizer } from './ExpressionSandboxing';
import type { ExpressionEvaluatorType } from './Interfaces';
import * as LoggerProxy from './LoggerProxy';
import { PrototypeSanitizer } from './ExpressionSandboxing';
type Evaluator = (expr: string, data: unknown) => tmpl.ReturnValue;
type ErrorHandler = (error: Error) => void;

View File

@@ -1,4 +1,5 @@
import { type ASTAfterHook, astBuilders as b, astVisit } from '@n8n/tournament';
import { ExpressionError } from './errors';
const forbiddenMembers = ['__proto__', 'prototype', 'constructor', 'getPrototypeOf'];

View File

@@ -1,10 +1,10 @@
import deepEqual from 'deep-equal';
import uniqWith from 'lodash/uniqWith';
import { ExpressionError } from '../errors/expression.error';
import { ExpressionExtensionError } from '../errors/expression-extension.error';
import type { Extension, ExtensionMap } from './Extensions';
import { compact as oCompact } from './ObjectExtensions';
import { ExpressionExtensionError } from '../errors/expression-extension.error';
import { ExpressionError } from '../errors/expression.error';
import { randomInt } from '../utils';
function first(value: unknown[]): unknown {

View File

@@ -1,5 +1,3 @@
import { ExpressionExtensionError } from '../errors/expression-extension.error';
import { DateTime } from 'luxon';
import type {
DateTimeUnit,
@@ -8,9 +6,11 @@ import type {
LocaleOptions,
WeekdayNumbers,
} from 'luxon';
import type { ExtensionMap } from './Extensions';
import { convertToDateTime } from './utils';
import { toDateTime as stringToDateTime } from './StringExtensions';
import { convertToDateTime } from './utils';
import { ExpressionExtensionError } from '../errors/expression-extension.error';
const durationUnits = [
'milliseconds',

View File

@@ -1,23 +1,22 @@
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
import { DateTime } from 'luxon';
import { ExpressionExtensionError } from '../errors/expression-extension.error';
import { parse, visit, types, print } from 'recast';
import { getOption } from 'recast/lib/util';
import type { ExpressionKind } from 'ast-types/gen/kinds';
import type { Config as EsprimaConfig } from 'esprima-next';
import { parse as esprimaParse } from 'esprima-next';
import { DateTime } from 'luxon';
import { parse, visit, types, print } from 'recast';
import { getOption } from 'recast/lib/util';
import { arrayExtensions } from './ArrayExtensions';
import { dateExtensions } from './DateExtensions';
import { numberExtensions } from './NumberExtensions';
import { stringExtensions } from './StringExtensions';
import { objectExtensions } from './ObjectExtensions';
import type { ExpressionKind } from 'ast-types/gen/kinds';
import type { ExpressionChunk, ExpressionCode } from './ExpressionParser';
import { joinExpression, splitExpression } from './ExpressionParser';
import { booleanExtensions } from './BooleanExtensions';
import { dateExtensions } from './DateExtensions';
import { joinExpression, splitExpression } from './ExpressionParser';
import type { ExpressionChunk, ExpressionCode } from './ExpressionParser';
import type { ExtensionMap } from './Extensions';
import { numberExtensions } from './NumberExtensions';
import { objectExtensions } from './ObjectExtensions';
import { stringExtensions } from './StringExtensions';
import { checkIfValueDefinedOrThrow } from './utils';
import { ExpressionExtensionError } from '../errors/expression-extension.error';
const EXPRESSION_EXTENDER = 'extend';
const EXPRESSION_EXTENDER_OPTIONAL = 'extendOptional';

View File

@@ -1,6 +1,6 @@
import { ExpressionError } from '../errors/expression.error';
import { ExpressionExtensionError } from '../errors/expression-extension.error';
import { average as aAverage } from './ArrayExtensions';
import { ExpressionExtensionError } from '../errors/expression-extension.error';
import { ExpressionError } from '../errors/expression.error';
const min = Math.min;
const max = Math.max;

View File

@@ -2,8 +2,9 @@
* @jest-environment jsdom
*/
import { DateTime } from 'luxon';
import { ExpressionExtensionError } from '../errors/expression-extension.error';
import type { ExtensionMap } from './Extensions';
import { ExpressionExtensionError } from '../errors/expression-extension.error';
function format(value: number, extraArgs: unknown[]): string {
const [locales = 'en-US', config = {}] = extraArgs as [

View File

@@ -1,5 +1,5 @@
import { ExpressionExtensionError } from '../errors/expression-extension.error';
import type { ExtensionMap } from './Extensions';
import { ExpressionExtensionError } from '../errors/expression-extension.error';
function isEmpty(value: object): boolean {
return Object.keys(value).length === 0;

View File

@@ -1,13 +1,14 @@
import SHA from 'jssha';
import MD5 from 'md5';
import { toBase64, fromBase64 } from 'js-base64';
import { titleCase } from 'title-case';
import type { Extension, ExtensionMap } from './Extensions';
import { transliterate } from 'transliteration';
import { ExpressionExtensionError } from '../errors/expression-extension.error';
import SHA from 'jssha';
import { DateTime } from 'luxon';
import { tryToParseDateTime } from '../TypeValidation';
import MD5 from 'md5';
import { titleCase } from 'title-case';
import { transliterate } from 'transliteration';
import type { Extension, ExtensionMap } from './Extensions';
import { toDateTime as numberToDateTime } from './NumberExtensions';
import { ExpressionExtensionError } from '../errors/expression-extension.error';
import { tryToParseDateTime } from '../TypeValidation';
export const SupportedHashAlgorithms = [
'md5',

View File

@@ -1,4 +1,5 @@
import { DateTime } from 'luxon';
import { ExpressionExtensionError } from '../errors/expression-extension.error';
// Utility functions and type guards for expression extensions

View File

@@ -1,28 +1,28 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import type { CallbackManager as CallbackManagerLC } from '@langchain/core/callbacks/manager';
import type { AxiosProxyConfig } from 'axios';
import type * as express from 'express';
import type FormData from 'form-data';
import type { PathLike } from 'fs';
import type { IncomingHttpHeaders } from 'http';
import type { SecureContextOptions } from 'tls';
import type { Readable } from 'stream';
import type { URLSearchParams } from 'url';
import type { RequestBodyMatcher } from 'nock';
import type { Client as SSHClient } from 'ssh2';
import type { Readable } from 'stream';
import type { SecureContextOptions } from 'tls';
import type { URLSearchParams } from 'url';
import type { CODE_EXECUTION_MODES, CODE_LANGUAGES, LOG_LEVELS } from './Constants';
import type { IDeferredPromise } from './DeferredPromise';
import type { ExecutionStatus } from './ExecutionStatus';
import type { ExecutionCancelledError } from './errors';
import type { ExpressionError } from './errors/expression.error';
import type { Workflow } from './Workflow';
import type { NodeApiError } from './errors/node-api.error';
import type { NodeOperationError } from './errors/node-operation.error';
import type { WorkflowActivationError } from './errors/workflow-activation.error';
import type { WorkflowOperationError } from './errors/workflow-operation.error';
import type { ExecutionStatus } from './ExecutionStatus';
import type { Workflow } from './Workflow';
import type { WorkflowHooks } from './WorkflowHooks';
import type { ExecutionCancelledError } from './errors';
import type { NodeOperationError } from './errors/node-operation.error';
import type { NodeApiError } from './errors/node-api.error';
import type { AxiosProxyConfig } from 'axios';
import type { CallbackManager as CallbackManagerLC } from '@langchain/core/callbacks/manager';
export interface IAdditionalCredentialOptions {
oauth2?: IOAuth2Options;

View File

@@ -1,4 +1,5 @@
import type { DateTime } from 'luxon';
import type { INodeCredentials } from './Interfaces';
// ===============================

View File

@@ -1,9 +1,9 @@
import { stringMethods } from './String.methods';
import { arrayMethods } from './Array.methods';
import { booleanMethods } from './Boolean.methods';
import { numberMethods } from './Number.methods';
import { objectMethods } from './Object.Methods';
import { stringMethods } from './String.methods';
import type { NativeDoc } from '../Extensions/Extensions';
import { booleanMethods } from './Boolean.methods';
const NATIVE_METHODS: NativeDoc[] = [
stringMethods,

View File

@@ -10,6 +10,8 @@ import get from 'lodash/get';
import isEqual from 'lodash/isEqual';
import uniqBy from 'lodash/uniqBy';
import { SINGLE_EXECUTION_NODES } from './Constants';
import { ApplicationError } from './errors/application.error';
import { NodeConnectionType } from './Interfaces';
import type {
FieldType,
@@ -44,18 +46,15 @@ import type {
NodeHint,
INodeExecutionData,
} from './Interfaces';
import { validateFilterParameter } from './NodeParameters/FilterParameter';
import {
isFilterValue,
isResourceMapperValue,
isValidResourceLocatorParameterValue,
} from './type-guards';
import { deepCopy } from './utils';
import type { Workflow } from './Workflow';
import { validateFilterParameter } from './NodeParameters/FilterParameter';
import { validateFieldType } from './TypeValidation';
import { ApplicationError } from './errors/application.error';
import { SINGLE_EXECUTION_NODES } from './Constants';
import { deepCopy } from './utils';
import type { Workflow } from './Workflow';
export const cronNodeOptions: INodePropertyCollection[] = [
{

View File

@@ -1,4 +1,6 @@
import type { DateTime } from 'luxon';
import { ApplicationError } from '../errors/application.error';
import type {
FilterConditionValue,
FilterOperatorType,
@@ -8,9 +10,8 @@ import type {
Result,
ValidationResult,
} from '../Interfaces';
import { validateFieldType } from '../TypeValidation';
import * as LoggerProxy from '../LoggerProxy';
import { ApplicationError } from '../errors/application.error';
import { validateFieldType } from '../TypeValidation';
type FilterConditionMetadata = {
index: number;

View File

@@ -11,6 +11,8 @@ import merge from 'lodash/merge';
import set from 'lodash/set';
import url from 'node:url';
import { NodeApiError } from './errors/node-api.error';
import { NodeOperationError } from './errors/node-operation.error';
import type {
ICredentialDataDecryptedObject,
ICredentialsDecrypted,
@@ -40,14 +42,9 @@ import type {
JsonObject,
CloseFunction,
} from './Interfaces';
import * as NodeHelpers from './NodeHelpers';
import type { Workflow } from './Workflow';
import { NodeOperationError } from './errors/node-operation.error';
import { NodeApiError } from './errors/node-api.error';
import { sleep } from './utils';
import type { Workflow } from './Workflow';
export class RoutingNode {
additionalData: IWorkflowExecuteAdditionalData;

View File

@@ -1,16 +1,3 @@
import { getNodeParameters } from './NodeHelpers';
import type {
IConnection,
INode,
INodeNameIndex,
INodesGraph,
INodeGraphItem,
INodesGraphResult,
IWorkflowBase,
INodeTypes,
IDataObject,
} from './Interfaces';
import { ApplicationError } from './errors/application.error';
import {
AGENT_LANGCHAIN_NODE_TYPE,
AI_TRANSFORM_NODE_TYPE,
@@ -26,6 +13,19 @@ import {
WEBHOOK_NODE_TYPE,
WORKFLOW_TOOL_LANGCHAIN_NODE_TYPE,
} from './Constants';
import { ApplicationError } from './errors/application.error';
import type {
IConnection,
INode,
INodeNameIndex,
INodesGraph,
INodeGraphItem,
INodesGraphResult,
IWorkflowBase,
INodeTypes,
IDataObject,
} from './Interfaces';
import { getNodeParameters } from './NodeHelpers';
export function getNodeTypeForName(workflow: IWorkflowBase, nodeName: string): INode | undefined {
return workflow.nodes.find((node) => node.name === nodeName);

View File

@@ -1,7 +1,8 @@
import { DateTime } from 'luxon';
import type { FieldType, INodePropertyOptions, ValidationResult } from './Interfaces';
import isObject from 'lodash/isObject';
import { DateTime } from 'luxon';
import { ApplicationError } from './errors';
import type { FieldType, INodePropertyOptions, ValidationResult } from './Interfaces';
import { jsonParse } from './utils';
export const tryToParseNumber = (value: unknown): number => {

View File

@@ -7,6 +7,15 @@
/* eslint-disable @typescript-eslint/prefer-nullish-coalescing */
import {
MANUAL_CHAT_TRIGGER_LANGCHAIN_NODE_TYPE,
NODES_WITH_RENAMABLE_CONTENT,
STARTING_NODE_TYPES,
} from './Constants';
import type { IDeferredPromise } from './DeferredPromise';
import { ApplicationError } from './errors/application.error';
import { Expression } from './Expression';
import { getGlobalState } from './GlobalState';
import type {
IConnections,
IExecuteResponsePromiseData,
@@ -45,19 +54,9 @@ import type {
INodeOutputConfiguration,
} from './Interfaces';
import { Node, NodeConnectionType } from './Interfaces';
import type { IDeferredPromise } from './DeferredPromise';
import * as NodeHelpers from './NodeHelpers';
import * as ObservableObject from './ObservableObject';
import { RoutingNode } from './RoutingNode';
import { Expression } from './Expression';
import {
MANUAL_CHAT_TRIGGER_LANGCHAIN_NODE_TYPE,
NODES_WITH_RENAMABLE_CONTENT,
STARTING_NODE_TYPES,
} from './Constants';
import { ApplicationError } from './errors/application.error';
import { getGlobalState } from './GlobalState';
function dedupe<T>(arr: T[]): T[] {
return [...new Set(arr)];

View File

@@ -2,9 +2,14 @@
/* eslint-disable @typescript-eslint/no-this-alias */
/* eslint-disable @typescript-eslint/no-unsafe-return */
import { DateTime, Duration, Interval, Settings } from 'luxon';
import * as jmespath from 'jmespath';
import { DateTime, Duration, Interval, Settings } from 'luxon';
import { augmentArray, augmentObject } from './AugmentObject';
import { SCRIPTING_NODE_TYPES } from './Constants';
import { ApplicationError } from './errors/application.error';
import { ExpressionError, type ExpressionErrorOptions } from './errors/expression.error';
import { getGlobalState } from './GlobalState';
import {
type IDataObject,
type IExecuteData,
@@ -23,13 +28,8 @@ import {
NodeConnectionType,
} from './Interfaces';
import * as NodeHelpers from './NodeHelpers';
import { ExpressionError, type ExpressionErrorOptions } from './errors/expression.error';
import type { Workflow } from './Workflow';
import { augmentArray, augmentObject } from './AugmentObject';
import { deepCopy } from './utils';
import { getGlobalState } from './GlobalState';
import { ApplicationError } from './errors/application.error';
import { SCRIPTING_NODE_TYPES } from './Constants';
import type { Workflow } from './Workflow';
import { getPinDataIfManualExecution } from './WorkflowDataProxyHelpers';
export function isResourceLocatorValue(value: unknown): value is INodeParameterResourceLocator {

View File

@@ -1,6 +1,6 @@
import { isTraversableObject, jsonParse } from '../../utils';
import type { IDataObject, INode, JsonObject } from '../../Interfaces';
import { ExecutionBaseError } from './execution-base.error';
import type { IDataObject, INode, JsonObject } from '../../Interfaces';
import { isTraversableObject, jsonParse } from '../../utils';
/**
* Descriptive messages for common errors.

View File

@@ -1,5 +1,5 @@
import callsites from 'callsites';
import type { Event } from '@sentry/node';
import callsites from 'callsites';
export type Level = 'warning' | 'error' | 'fatal' | 'info';

View File

@@ -1,5 +1,5 @@
import type { INode } from '../Interfaces';
import { ExecutionBaseError } from './abstract/execution-base.error';
import type { INode } from '../Interfaces';
export class CredentialAccessError extends ExecutionBaseError {
override readonly description =

View File

@@ -1,5 +1,5 @@
import type { IDataObject } from '../Interfaces';
import { ExecutionBaseError } from './abstract/execution-base.error';
import type { IDataObject } from '../Interfaces';
export interface ExpressionErrorOptions {
cause?: Error;

View File

@@ -1,7 +1,17 @@
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
/* eslint-disable @typescript-eslint/no-unsafe-argument */
import { AxiosError } from 'axios';
import { parseString } from 'xml2js';
import { NodeError } from './abstract/node.error';
import type { ReportingOptions } from './application.error';
import {
NO_OP_NODE_TYPE,
UNKNOWN_ERROR_DESCRIPTION,
UNKNOWN_ERROR_MESSAGE,
UNKNOWN_ERROR_MESSAGE_CRED,
} from '../Constants';
import type {
INode,
JsonObject,
@@ -9,16 +19,7 @@ import type {
IStatusCodeMessages,
Functionality,
} from '../Interfaces';
import { NodeError } from './abstract/node.error';
import { removeCircularRefs } from '../utils';
import type { ReportingOptions } from './application.error';
import { AxiosError } from 'axios';
import {
NO_OP_NODE_TYPE,
UNKNOWN_ERROR_DESCRIPTION,
UNKNOWN_ERROR_MESSAGE,
UNKNOWN_ERROR_MESSAGE_CRED,
} from '../Constants';
export interface NodeOperationErrorOptions {
message?: string;

View File

@@ -1,7 +1,7 @@
import type { INode, JsonObject } from '../Interfaces';
import type { NodeOperationErrorOptions } from './node-api.error';
import { NodeError } from './abstract/node.error';
import { ApplicationError } from './application.error';
import type { NodeOperationErrorOptions } from './node-api.error';
import type { INode, JsonObject } from '../Interfaces';
/**
* Class for instantiating an operational error, e.g. an invalid credentials error.

View File

@@ -1,5 +1,5 @@
import type { INode } from '../Interfaces';
import { ApplicationError, type Level } from './application.error';
import type { INode } from '../Interfaces';
interface TriggerCloseErrorOptions extends ErrorOptions {
level: Level;

View File

@@ -1,6 +1,6 @@
import type { INode } from '../Interfaces';
import { ExecutionBaseError } from './abstract/execution-base.error';
import type { ApplicationError } from './application.error';
import type { INode } from '../Interfaces';
interface WorkflowActivationErrorOptions {
cause?: Error;

View File

@@ -1,5 +1,5 @@
import type { INode } from '../Interfaces';
import { ExecutionBaseError } from './abstract/execution-base.error';
import type { INode } from '../Interfaces';
/**
* Class for instantiating an operational error, e.g. a timeout error.

View File

@@ -1,16 +1,15 @@
import FormData from 'form-data';
import { merge } from 'lodash';
import { ALPHABET } from './Constants';
import type { BinaryFileType, IDisplayOptions, INodeProperties, JsonObject } from './Interfaces';
import { ApplicationError } from './errors/application.error';
import {
parse as esprimaParse,
Syntax,
type Node as SyntaxNode,
type ExpressionStatement,
} from 'esprima-next';
import FormData from 'form-data';
import { merge } from 'lodash';
import { ALPHABET } from './Constants';
import { ApplicationError } from './errors/application.error';
import type { BinaryFileType, IDisplayOptions, INodeProperties, JsonObject } from './Interfaces';
const readStreamClasses = new Set(['ReadStream', 'Readable', 'ReadableStream']);