refactor(core): Lintfix cli package (#17125)

This commit is contained in:
Iván Ovejero
2025-07-08 19:32:02 +02:00
committed by GitHub
parent 32fbb5cf6a
commit f3ef0a713c
179 changed files with 647 additions and 693 deletions

View File

@@ -1,6 +1,5 @@
import { mockLogger } from '@n8n/backend-test-utils'; import { mockLogger } from '@n8n/backend-test-utils';
import type { WorkflowEntity } from '@n8n/db'; import type { WorkflowEntity, WorkflowRepository } from '@n8n/db';
import type { WorkflowRepository } from '@n8n/db';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import type { InstanceSettings } from 'n8n-core'; import type { InstanceSettings } from 'n8n-core';
import type { import type {

View File

@@ -7,7 +7,7 @@ import { z } from 'zod';
import { CommandRegistry } from '../command-registry'; import { CommandRegistry } from '../command-registry';
jest.mock('fast-glob'); jest.mock('fast-glob');
// eslint-disable-next-line import-x/no-default-export
import glob from 'fast-glob'; import glob from 'fast-glob';
describe('CommandRegistry', () => { describe('CommandRegistry', () => {

View File

@@ -6,9 +6,7 @@ jest.mock('@n8n/backend-common', () => {
}); });
import type { GlobalConfig } from '@n8n/config'; import type { GlobalConfig } from '@n8n/config';
import { ControllerRegistryMetadata } from '@n8n/decorators'; import { ControllerRegistryMetadata, Param, Get, Licensed, RestController } from '@n8n/decorators';
import { Param } from '@n8n/decorators';
import { Get, Licensed, RestController } from '@n8n/decorators';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import express from 'express'; import express from 'express';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';

View File

@@ -100,7 +100,7 @@ describe('CredentialsOverwrites', () => {
expect(firstCall).toEqual(secondCall); expect(firstCall).toEqual(secondCall);
expect(credentialTypes.getByName).toHaveBeenCalledTimes(2); expect(credentialTypes.getByName).toHaveBeenCalledTimes(2);
// eslint-disable-next-line @typescript-eslint/dot-notation
expect(credentialsOverwrites['resolvedTypes']).toEqual(['parent', 'test']); expect(credentialsOverwrites['resolvedTypes']).toEqual(['parent', 'test']);
}); });

View File

@@ -1,8 +1,11 @@
import type { Logger } from '@n8n/backend-common'; import type { Logger } from '@n8n/backend-common';
import type { GlobalConfig } from '@n8n/config'; import type { GlobalConfig } from '@n8n/config';
import type { WorkflowRepository } from '@n8n/db'; import type {
import type { CredentialsRepository, SettingsRepository } from '@n8n/db'; WorkflowRepository,
import type { UserRepository } from '@n8n/db'; CredentialsRepository,
SettingsRepository,
UserRepository,
} from '@n8n/db';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import type { ErrorReporter } from 'n8n-core'; import type { ErrorReporter } from 'n8n-core';
import type { IWorkflowBase } from 'n8n-workflow'; import type { IWorkflowBase } from 'n8n-workflow';
@@ -72,7 +75,6 @@ describe('ExternalHooks', () => {
await externalHooks.init(); await externalHooks.init();
// eslint-disable-next-line @typescript-eslint/dot-notation
expect(externalHooks['registered']['workflow.create']).toHaveLength(1); expect(externalHooks['registered']['workflow.create']).toHaveLength(1);
await externalHooks.run('workflow.create', [workflowData]); await externalHooks.run('workflow.create', [workflowData]);
@@ -88,7 +90,6 @@ describe('ExternalHooks', () => {
}); });
it('should execute registered hooks', async () => { it('should execute registered hooks', async () => {
// eslint-disable-next-line @typescript-eslint/dot-notation
externalHooks['registered']['workflow.create'] = [hookFn]; externalHooks['registered']['workflow.create'] = [hookFn];
await externalHooks.run('workflow.create', [workflowData]); await externalHooks.run('workflow.create', [workflowData]);
@@ -108,7 +109,7 @@ describe('ExternalHooks', () => {
it('should report error if hook execution fails', async () => { it('should report error if hook execution fails', async () => {
const error = new Error('Hook failed'); const error = new Error('Hook failed');
hookFn.mockRejectedValueOnce(error); hookFn.mockRejectedValueOnce(error);
// eslint-disable-next-line @typescript-eslint/dot-notation
externalHooks['registered']['workflow.create'] = [hookFn]; externalHooks['registered']['workflow.create'] = [hookFn];
await expect(externalHooks.run('workflow.create', [workflowData])).rejects.toThrow(error); await expect(externalHooks.run('workflow.create', [workflowData])).rejects.toThrow(error);

View File

@@ -292,9 +292,9 @@ describe('LoadNodesAndCredentials', () => {
}, },
] as unknown as INodeTypeDescription[]; ] as unknown as INodeTypeDescription[];
// private field // private field
// eslint-disable-next-line @typescript-eslint/dot-notation
instance['known'].nodes.testNode = { className: 'TestNode', sourcePath: '/path/to/testNode' }; instance['known'].nodes.testNode = { className: 'TestNode', sourcePath: '/path/to/testNode' };
// eslint-disable-next-line @typescript-eslint/dot-notation
instance['known'].credentials['testCredential'] = { instance['known'].credentials['testCredential'] = {
className: 'TestCredential', className: 'TestCredential',
sourcePath: '/path/to/testCredential', sourcePath: '/path/to/testCredential',
@@ -340,7 +340,7 @@ describe('LoadNodesAndCredentials', () => {
expect(instance.types.nodes).toHaveLength(2); expect(instance.types.nodes).toHaveLength(2);
// accesses private property // accesses private property
// eslint-disable-next-line @typescript-eslint/dot-notation
expect(instance['known'].credentials.testCredential.supportedNodes).toEqual([ expect(instance['known'].credentials.testCredential.supportedNodes).toEqual([
'testNode', 'testNode',
'testNodeTool', 'testNodeTool',

View File

@@ -1,7 +1,5 @@
import { mockLogger } from '@n8n/backend-test-utils'; import { mockLogger } from '@n8n/backend-test-utils';
import type { Project } from '@n8n/db'; import type { Project, IExecutionResponse, ExecutionRepository } from '@n8n/db';
import type { IExecutionResponse } from '@n8n/db';
import type { ExecutionRepository } from '@n8n/db';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import type { InstanceSettings } from 'n8n-core'; import type { InstanceSettings } from 'n8n-core';
import type { IRun, IWorkflowBase } from 'n8n-workflow'; import type { IRun, IWorkflowBase } from 'n8n-workflow';

View File

@@ -1,13 +1,12 @@
import { mockInstance } from '@n8n/backend-test-utils'; import { mockInstance } from '@n8n/backend-test-utils';
import { GlobalConfig } from '@n8n/config'; import { GlobalConfig } from '@n8n/config';
import type { WorkflowEntity } from '@n8n/db'; import type { WorkflowEntity } from '@n8n/db';
import { ExecutionRepository } from '@n8n/db'; import { ExecutionRepository, WorkflowRepository } from '@n8n/db';
import { WorkflowRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import { ExternalSecretsProxy } from 'n8n-core'; import { ExternalSecretsProxy } from 'n8n-core';
import type { IWorkflowBase } from 'n8n-workflow';
import type { import type {
IWorkflowBase,
IExecuteWorkflowInfo, IExecuteWorkflowInfo,
IWorkflowExecuteAdditionalData, IWorkflowExecuteAdditionalData,
ExecuteWorkflowOptions, ExecuteWorkflowOptions,

View File

@@ -1,26 +1,24 @@
import { testDb } from '@n8n/backend-test-utils'; import { testDb, createWorkflow, mockInstance } from '@n8n/backend-test-utils';
import { createWorkflow } from '@n8n/backend-test-utils'; import type { User, ExecutionEntity } from '@n8n/db';
import { mockInstance } from '@n8n/backend-test-utils';
import type { User } from '@n8n/db';
import type { ExecutionEntity } from '@n8n/db';
import { Container, Service } from '@n8n/di'; import { Container, Service } from '@n8n/di';
import type { Response } from 'express'; import type { Response } from 'express';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import { DirectedGraph, WorkflowExecute } from 'n8n-core'; import { DirectedGraph, WorkflowExecute } from 'n8n-core';
import * as core from 'n8n-core'; import * as core from 'n8n-core';
import type { import {
IExecuteData, type IExecuteData,
INode, type INode,
IRun, type IRun,
ITaskData, type ITaskData,
IWaitingForExecution, type IWaitingForExecution,
IWaitingForExecutionSource, type IWaitingForExecutionSource,
IWorkflowBase, type IWorkflowBase,
IWorkflowExecutionDataProcess, type IWorkflowExecutionDataProcess,
StartNodeData, type StartNodeData,
IWorkflowExecuteAdditionalData, type IWorkflowExecuteAdditionalData,
Workflow,
ExecutionError,
} from 'n8n-workflow'; } from 'n8n-workflow';
import { Workflow, type ExecutionError } from 'n8n-workflow';
import PCancelable from 'p-cancelable'; import PCancelable from 'p-cancelable';
import { ActiveExecutions } from '@/active-executions'; import { ActiveExecutions } from '@/active-executions';

View File

@@ -467,7 +467,6 @@ export class ActiveWorkflowManager {
this.logger.error( this.logger.error(
`Issue on initial workflow activation try of ${formatWorkflow(dbWorkflow)} (startup)`, `Issue on initial workflow activation try of ${formatWorkflow(dbWorkflow)} (startup)`,
{ {
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
error, error,
workflowName: dbWorkflow.name, workflowName: dbWorkflow.name,
workflowId: dbWorkflow.id, workflowId: dbWorkflow.id,
@@ -778,7 +777,6 @@ export class ActiveWorkflowManager {
error.message as string error.message as string
}" | retry in ${Math.floor(lastTimeout / 1000)} seconds`, }" | retry in ${Math.floor(lastTimeout / 1000)} seconds`,
{ {
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
error, error,
workflowId, workflowId,
workflowName, workflowName,

View File

@@ -1,9 +1,11 @@
import type { GlobalConfig } from '@n8n/config'; import type { GlobalConfig } from '@n8n/config';
import { Time } from '@n8n/constants'; import { Time } from '@n8n/constants';
import type { AuthenticatedRequest } from '@n8n/db'; import type {
import type { User } from '@n8n/db'; AuthenticatedRequest,
import type { InvalidAuthTokenRepository } from '@n8n/db'; User,
import type { UserRepository } from '@n8n/db'; InvalidAuthTokenRepository,
UserRepository,
} from '@n8n/db';
import type { NextFunction, Response } from 'express'; import type { NextFunction, Response } from 'express';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import jwt from 'jsonwebtoken'; import jwt from 'jsonwebtoken';

View File

@@ -1,6 +1,4 @@
import { type InstalledNodes } from '@n8n/db'; import { type InstalledNodes, type CredentialsEntity, type User } from '@n8n/db';
import { type CredentialsEntity } from '@n8n/db';
import { type User } from '@n8n/db';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import { CommunityNode } from '../community-node'; import { CommunityNode } from '../community-node';

View File

@@ -1,8 +1,7 @@
import { mockInstance } from '@n8n/backend-test-utils'; import { mockInstance } from '@n8n/backend-test-utils';
import { GlobalConfig } from '@n8n/config'; import { GlobalConfig } from '@n8n/config';
import type { User, WorkflowEntity } from '@n8n/db'; import type { User, WorkflowEntity } from '@n8n/db';
import { WorkflowRepository } from '@n8n/db'; import { WorkflowRepository, DbConnection } from '@n8n/db';
import { DbConnection } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import type { SelectQueryBuilder } from '@n8n/typeorm'; import type { SelectQueryBuilder } from '@n8n/typeorm';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';

View File

@@ -1,8 +1,7 @@
import { mockInstance } from '@n8n/backend-test-utils'; import { mockInstance } from '@n8n/backend-test-utils';
import { GlobalConfig } from '@n8n/config'; import { GlobalConfig } from '@n8n/config';
import type { User, WorkflowEntity } from '@n8n/db'; import type { User, WorkflowEntity } from '@n8n/db';
import { WorkflowRepository } from '@n8n/db'; import { WorkflowRepository, DbConnection } from '@n8n/db';
import { DbConnection } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import type { IRun } from 'n8n-workflow'; import type { IRun } from 'n8n-workflow';

View File

@@ -1,13 +1,13 @@
import { mockInstance } from '@n8n/backend-test-utils'; import { mockInstance } from '@n8n/backend-test-utils';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { Worker } from '../worker';
import { PubSubRegistry } from '@/scaling/pubsub/pubsub.registry'; import { PubSubRegistry } from '@/scaling/pubsub/pubsub.registry';
import { Subscriber } from '@/scaling/pubsub/subscriber.service'; import { Subscriber } from '@/scaling/pubsub/subscriber.service';
import { WorkerStatusService } from '@/scaling/worker-status.service.ee'; import { WorkerStatusService } from '@/scaling/worker-status.service.ee';
import { RedisClientService } from '@/services/redis-client.service'; import { RedisClientService } from '@/services/redis-client.service';
import { Worker } from '../worker';
mockInstance(RedisClientService); mockInstance(RedisClientService);
mockInstance(PubSubRegistry); mockInstance(PubSubRegistry);
mockInstance(Subscriber); mockInstance(Subscriber);

View File

@@ -1,8 +1,7 @@
import { Logger } from '@n8n/backend-common'; import { Logger } from '@n8n/backend-common';
import { mockInstance } from '@n8n/backend-test-utils'; import { mockInstance } from '@n8n/backend-test-utils';
import type { IrreversibleMigration, ReversibleMigration } from '@n8n/db'; import type { IrreversibleMigration, ReversibleMigration } from '@n8n/db';
import type { Migration, MigrationExecutor } from '@n8n/typeorm'; import type { Migration, MigrationExecutor, DataSource } from '@n8n/typeorm';
import { type DataSource } from '@n8n/typeorm';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import { main } from '@/commands/db/revert'; import { main } from '@/commands/db/revert';

View File

@@ -1,4 +1,3 @@
/* eslint-disable @typescript-eslint/no-loop-func */
import type { User } from '@n8n/db'; import type { User } from '@n8n/db';
import { WorkflowRepository } from '@n8n/db'; import { WorkflowRepository } from '@n8n/db';
import { Command } from '@n8n/decorators'; import { Command } from '@n8n/decorators';

View File

@@ -34,7 +34,7 @@ import { WorkflowRunner } from '@/workflow-runner';
import { BaseCommand } from './base-command'; import { BaseCommand } from './base-command';
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
const open = require('open'); const open = require('open');
const flagsSchema = z.object({ const flagsSchema = z.object({

View File

@@ -1,7 +1,6 @@
import { AiWorkflowBuilderService } from '@n8n/ai-workflow-builder'; import { AiWorkflowBuilderService } from '@n8n/ai-workflow-builder';
import { Container } from '@n8n/di';
import { Command } from '@n8n/decorators'; import { Command } from '@n8n/decorators';
import { Container } from '@n8n/di';
import fs from 'fs'; import fs from 'fs';
import { jsonParse, UserError } from 'n8n-workflow'; import { jsonParse, UserError } from 'n8n-workflow';
import { z } from 'zod'; import { z } from 'zod';

View File

@@ -13,9 +13,9 @@ import { PubSubRegistry } from '@/scaling/pubsub/pubsub.registry';
import { Subscriber } from '@/scaling/pubsub/subscriber.service'; import { Subscriber } from '@/scaling/pubsub/subscriber.service';
import type { ScalingService } from '@/scaling/scaling.service'; import type { ScalingService } from '@/scaling/scaling.service';
import type { WorkerServerEndpointsConfig } from '@/scaling/worker-server'; import type { WorkerServerEndpointsConfig } from '@/scaling/worker-server';
import { WorkerStatusService } from '@/scaling/worker-status.service.ee';
import { BaseCommand } from './base-command'; import { BaseCommand } from './base-command';
import { WorkerStatusService } from '@/scaling/worker-status.service.ee';
const flagsSchema = z.object({ const flagsSchema = z.object({
concurrency: z.number().int().default(10).describe('How many jobs can run in parallel.'), concurrency: z.number().int().default(10).describe('How many jobs can run in parallel.'),

View File

@@ -50,7 +50,7 @@ type NumericPath = CollectPathsByType<number>;
type BooleanPath = CollectPathsByType<boolean>; type BooleanPath = CollectPathsByType<boolean>;
type StringLiteralArrayPath = CollectPathsByType<Readonly<string[]>>; type StringLiteralArrayPath = CollectPathsByType<readonly string[]>;
type StringPath = CollectPathsByType<string>; type StringPath = CollectPathsByType<string>;

View File

@@ -57,7 +57,7 @@ export class ControllerRegistry {
controller, controller,
handlerName, handlerName,
) as unknown[]; ) as unknown[];
// eslint-disable-next-line @typescript-eslint/no-loop-func
const handler = async (req: Request, res: Response) => { const handler = async (req: Request, res: Response) => {
const args: unknown[] = [req, res]; const args: unknown[] = [req, res];
for (let index = 0; index < route.args.length; index++) { for (let index = 0; index < route.args.length; index++) {
@@ -83,7 +83,7 @@ export class ControllerRegistry {
...(inProduction && route.rateLimit ...(inProduction && route.rateLimit
? [this.createRateLimitMiddleware(route.rateLimit)] ? [this.createRateLimitMiddleware(route.rateLimit)]
: []), : []),
// eslint-disable-next-line @typescript-eslint/unbound-method
...(route.skipAuth ...(route.skipAuth
? [] ? []
: ([ : ([

View File

@@ -1,7 +1,5 @@
import { mockInstance } from '@n8n/backend-test-utils'; import { mockInstance } from '@n8n/backend-test-utils';
import type { AuthenticatedRequest } from '@n8n/db'; import type { AuthenticatedRequest, User, ApiKey } from '@n8n/db';
import type { User } from '@n8n/db';
import type { ApiKey } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';

View File

@@ -1,8 +1,7 @@
import type { LoginRequestDto } from '@n8n/api-types'; import type { LoginRequestDto } from '@n8n/api-types';
import { Logger } from '@n8n/backend-common'; import { Logger } from '@n8n/backend-common';
import { mockInstance } from '@n8n/backend-test-utils'; import { mockInstance } from '@n8n/backend-test-utils';
import type { AuthenticatedRequest } from '@n8n/db'; import type { AuthenticatedRequest, User } from '@n8n/db';
import type { User } from '@n8n/db';
import { UserRepository } from '@n8n/db'; import { UserRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import type { Response } from 'express'; import type { Response } from 'express';

View File

@@ -1,10 +1,7 @@
import { UserUpdateRequestDto } from '@n8n/api-types'; import { UserUpdateRequestDto } from '@n8n/api-types';
import { mockInstance } from '@n8n/backend-test-utils'; import { mockInstance } from '@n8n/backend-test-utils';
import type { AuthenticatedRequest } from '@n8n/db'; import type { AuthenticatedRequest, User, PublicUser } from '@n8n/db';
import type { User } from '@n8n/db'; import { InvalidAuthTokenRepository, UserRepository } from '@n8n/db';
import type { PublicUser } from '@n8n/db';
import { InvalidAuthTokenRepository } from '@n8n/db';
import { UserRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import type { Response } from 'express'; import type { Response } from 'express';
import { mock, anyObject } from 'jest-mock-extended'; import { mock, anyObject } from 'jest-mock-extended';

View File

@@ -1,9 +1,12 @@
import type { DismissBannerRequestDto, OwnerSetupRequestDto } from '@n8n/api-types'; import type { DismissBannerRequestDto, OwnerSetupRequestDto } from '@n8n/api-types';
import type { Logger } from '@n8n/backend-common'; import type { Logger } from '@n8n/backend-common';
import type { AuthenticatedRequest } from '@n8n/db'; import type {
import type { User } from '@n8n/db'; AuthenticatedRequest,
import type { PublicUser, SettingsRepository } from '@n8n/db'; User,
import type { UserRepository } from '@n8n/db'; PublicUser,
SettingsRepository,
UserRepository,
} from '@n8n/db';
import type { Response } from 'express'; import type { Response } from 'express';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';

View File

@@ -1,6 +1,4 @@
import type { AuthenticatedRequest } from '@n8n/db'; import type { AuthenticatedRequest, User, UserRepository } from '@n8n/db';
import type { User } from '@n8n/db';
import type { UserRepository } from '@n8n/db';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import type { EventService } from '@/events/event.service'; import type { EventService } from '@/events/event.service';

View File

@@ -1,8 +1,7 @@
import { Logger } from '@n8n/backend-common'; import { Logger } from '@n8n/backend-common';
import { mockInstance } from '@n8n/backend-test-utils'; import { mockInstance } from '@n8n/backend-test-utils';
import { Time } from '@n8n/constants'; import { Time } from '@n8n/constants';
import type { CredentialsEntity } from '@n8n/db'; import type { CredentialsEntity, User } from '@n8n/db';
import type { User } from '@n8n/db';
import { CredentialsRepository } from '@n8n/db'; import { CredentialsRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import Csrf from 'csrf'; import Csrf from 'csrf';

View File

@@ -1,8 +1,7 @@
import { Logger } from '@n8n/backend-common'; import { Logger } from '@n8n/backend-common';
import { mockInstance } from '@n8n/backend-test-utils'; import { mockInstance } from '@n8n/backend-test-utils';
import { Time } from '@n8n/constants'; import { Time } from '@n8n/constants';
import type { CredentialsEntity } from '@n8n/db'; import type { CredentialsEntity, User } from '@n8n/db';
import type { User } from '@n8n/db';
import { CredentialsRepository } from '@n8n/db'; import { CredentialsRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import Csrf from 'csrf'; import Csrf from 'csrf';

View File

@@ -1,5 +1,4 @@
import type { AuthenticatedRequest } from '@n8n/db'; import type { AuthenticatedRequest, SharedCredentialsRepository } from '@n8n/db';
import type { SharedCredentialsRepository } from '@n8n/db';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import { createRawProjectData } from '@/__tests__/project.test-data'; import { createRawProjectData } from '@/__tests__/project.test-data';
@@ -29,7 +28,7 @@ describe('CredentialsController', () => {
); );
let req: AuthenticatedRequest; let req: AuthenticatedRequest;
let res = mock<Response>(); const res = mock<Response>();
beforeAll(() => { beforeAll(() => {
req = { user: { id: '123' } } as AuthenticatedRequest; req = { user: { id: '123' } } as AuthenticatedRequest;
}); });

View File

@@ -1,5 +1,4 @@
import type { CredentialsEntity } from '@n8n/db'; import type { CredentialsEntity, CredentialsRepository } from '@n8n/db';
import type { CredentialsRepository } from '@n8n/db';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import { CREDENTIAL_ERRORS, CredentialDataError, Credentials, type ErrorReporter } from 'n8n-core'; import { CREDENTIAL_ERRORS, CredentialDataError, Credentials, type ErrorReporter } from 'n8n-core';
import { CREDENTIAL_EMPTY_VALUE, type ICredentialType } from 'n8n-workflow'; import { CREDENTIAL_EMPTY_VALUE, type ICredentialType } from 'n8n-workflow';

View File

@@ -1,5 +1,4 @@
import { CredentialsEntity } from '@n8n/db'; import { CredentialsEntity, CredentialsRepository } from '@n8n/db';
import { CredentialsRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';

View File

@@ -2,8 +2,7 @@ import { mockInstance } from '@n8n/backend-test-utils';
import { GlobalConfig } from '@n8n/config'; import { GlobalConfig } from '@n8n/config';
import type { SqliteConfig } from '@n8n/config/src/configs/database.config'; import type { SqliteConfig } from '@n8n/config/src/configs/database.config';
import type { IExecutionResponse } from '@n8n/db'; import type { IExecutionResponse } from '@n8n/db';
import { ExecutionEntity } from '@n8n/db'; import { ExecutionEntity, ExecutionRepository } from '@n8n/db';
import { ExecutionRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import type { SelectQueryBuilder } from '@n8n/typeorm'; import type { SelectQueryBuilder } from '@n8n/typeorm';
import { Not, LessThanOrEqual } from '@n8n/typeorm'; import { Not, LessThanOrEqual } from '@n8n/typeorm';

View File

@@ -1,9 +1,5 @@
import { getPersonalProject } from '@n8n/backend-test-utils'; import { getPersonalProject, createWorkflow, testDb } from '@n8n/backend-test-utils';
import { createWorkflow } from '@n8n/backend-test-utils'; import type { Project, User, Folder } from '@n8n/db';
import { testDb } from '@n8n/backend-test-utils';
import type { Project } from '@n8n/db';
import type { User } from '@n8n/db';
import type { Folder } from '@n8n/db';
import { FolderRepository } from '@n8n/db'; import { FolderRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { DateTime } from 'luxon'; import { DateTime } from 'luxon';

View File

@@ -1,7 +1,5 @@
import { createWorkflow } from '@n8n/backend-test-utils'; import { createWorkflow, testDb } from '@n8n/backend-test-utils';
import { testDb } from '@n8n/backend-test-utils'; import { StatisticsNames, WorkflowStatistics, WorkflowStatisticsRepository } from '@n8n/db';
import { StatisticsNames, WorkflowStatistics } from '@n8n/db';
import { WorkflowStatisticsRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { type InsertResult, QueryFailedError } from '@n8n/typeorm'; import { type InsertResult, QueryFailedError } from '@n8n/typeorm';
import { mock, mockClear } from 'jest-mock-extended'; import { mock, mockClear } from 'jest-mock-extended';

View File

@@ -1,13 +1,15 @@
import type { SourceControlledFile } from '@n8n/api-types'; import type { SourceControlledFile } from '@n8n/api-types';
import { User } from '@n8n/db'; import { User } from '@n8n/db';
import type { SharedCredentials } from '@n8n/db'; import type {
import type { SharedWorkflow } from '@n8n/db'; SharedCredentials,
import type { FolderRepository } from '@n8n/db'; SharedWorkflow,
import type { TagRepository } from '@n8n/db'; FolderRepository,
import type { WorkflowTagMappingRepository } from '@n8n/db'; TagRepository,
import type { SharedCredentialsRepository } from '@n8n/db'; WorkflowTagMappingRepository,
import type { SharedWorkflowRepository } from '@n8n/db'; SharedCredentialsRepository,
import type { WorkflowRepository } from '@n8n/db'; SharedWorkflowRepository,
WorkflowRepository,
} from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { mock, captor } from 'jest-mock-extended'; import { mock, captor } from 'jest-mock-extended';
import { Cipher, type InstanceSettings } from 'n8n-core'; import { Cipher, type InstanceSettings } from 'n8n-core';

View File

@@ -1,6 +1,11 @@
import { Project, type ProjectRepository, User, WorkflowEntity } from '@n8n/db'; import {
import type { FolderRepository } from '@n8n/db'; type FolderRepository,
import type { WorkflowRepository } from '@n8n/db'; type WorkflowRepository,
Project,
type ProjectRepository,
User,
WorkflowEntity,
} from '@n8n/db';
import * as fastGlob from 'fast-glob'; import * as fastGlob from 'fast-glob';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import { type InstanceSettings } from 'n8n-core'; import { type InstanceSettings } from 'n8n-core';

View File

@@ -1,10 +1,12 @@
import type { SourceControlledFile } from '@n8n/api-types'; import type { SourceControlledFile } from '@n8n/api-types';
import type { Variables } from '@n8n/db'; import type {
import type { FolderWithWorkflowAndSubFolderCount } from '@n8n/db'; Variables,
import type { TagEntity } from '@n8n/db'; FolderWithWorkflowAndSubFolderCount,
import type { User } from '@n8n/db'; TagEntity,
import type { FolderRepository } from '@n8n/db'; User,
import type { TagRepository } from '@n8n/db'; FolderRepository,
TagRepository,
} from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import { InstanceSettings } from 'n8n-core'; import { InstanceSettings } from 'n8n-core';

View File

@@ -1,16 +1,16 @@
import { mockLogger } from '@n8n/backend-test-utils'; import { mockLogger, mockInstance } from '@n8n/backend-test-utils';
import { mockInstance } from '@n8n/backend-test-utils'; import type {
import type { TestRun } from '@n8n/db'; TestRun,
import type { TestCaseExecutionRepository } from '@n8n/db'; TestCaseExecutionRepository,
import type { TestRunRepository } from '@n8n/db'; TestRunRepository,
import type { WorkflowRepository } from '@n8n/db'; WorkflowRepository,
} from '@n8n/db';
import { readFileSync } from 'fs'; import { readFileSync } from 'fs';
import type { Mock } from 'jest-mock'; import type { Mock } from 'jest-mock';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import type { ErrorReporter } from 'n8n-core'; import type { ErrorReporter } from 'n8n-core';
import { EVALUATION_NODE_TYPE, EVALUATION_TRIGGER_NODE_TYPE } from 'n8n-workflow'; import { EVALUATION_NODE_TYPE, EVALUATION_TRIGGER_NODE_TYPE } from 'n8n-workflow';
import type { IWorkflowBase } from 'n8n-workflow'; import type { IWorkflowBase, IRun, ExecutionError } from 'n8n-workflow';
import type { IRun, ExecutionError } from 'n8n-workflow';
import path from 'path'; import path from 'path';
import type { ActiveExecutions } from '@/active-executions'; import type { ActiveExecutions } from '@/active-executions';

View File

@@ -1,23 +1,31 @@
import type { NodeTypes } from '@/node-types';
import { mockInstance } from '@n8n/backend-test-utils'; import { mockInstance } from '@n8n/backend-test-utils';
import type { GlobalConfig } from '@n8n/config'; import type { GlobalConfig } from '@n8n/config';
import type { CredentialsEntity } from '@n8n/db'; import type {
import type { WorkflowEntity } from '@n8n/db'; CredentialsEntity,
import type { IWorkflowDb } from '@n8n/db'; WorkflowEntity,
import type { CredentialsRepository } from '@n8n/db'; IWorkflowDb,
import type { ProjectRelationRepository } from '@n8n/db'; CredentialsRepository,
import type { SharedWorkflowRepository } from '@n8n/db'; ProjectRelationRepository,
import type { WorkflowRepository } from '@n8n/db'; SharedWorkflowRepository,
WorkflowRepository,
} from '@n8n/db';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import { type BinaryDataConfig, InstanceSettings } from 'n8n-core'; import { type BinaryDataConfig, InstanceSettings } from 'n8n-core';
import type { INode, INodesGraphResult } from 'n8n-workflow'; import {
import { NodeApiError, TelemetryHelpers, type IRun, type IWorkflowBase } from 'n8n-workflow'; type INode,
type INodesGraphResult,
NodeApiError,
TelemetryHelpers,
type IRun,
type IWorkflowBase,
} from 'n8n-workflow';
import { N8N_VERSION } from '@/constants'; import { N8N_VERSION } from '@/constants';
import { EventService } from '@/events/event.service'; import { EventService } from '@/events/event.service';
import type { RelayEventMap } from '@/events/maps/relay.event-map'; import type { RelayEventMap } from '@/events/maps/relay.event-map';
import { TelemetryEventRelay } from '@/events/relays/telemetry.event-relay'; import { TelemetryEventRelay } from '@/events/relays/telemetry.event-relay';
import type { License } from '@/license'; import type { License } from '@/license';
import type { NodeTypes } from '@/node-types';
import type { Telemetry } from '@/telemetry'; import type { Telemetry } from '@/telemetry';
const flushPromises = async () => await new Promise((resolve) => setImmediate(resolve)); const flushPromises = async () => await new Promise((resolve) => setImmediate(resolve));

View File

@@ -127,7 +127,7 @@ export class TelemetryEventRelay extends EventRelay {
this.telemetry.track('Project settings updated', { this.telemetry.track('Project settings updated', {
user_id: userId, user_id: userId,
role, role,
// eslint-disable-next-line @typescript-eslint/no-shadow
members: members.map(({ userId: user_id, role }) => ({ user_id, role })), members: members.map(({ userId: user_id, role }) => ({ user_id, role })),
project_id: projectId, project_id: projectId,
}); });

View File

@@ -45,7 +45,7 @@ class ModulesHooksRegistry {
runData, runData,
newStaticData, newStaticData,
}; };
// eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/return-await // eslint-disable-next-line @typescript-eslint/no-unsafe-return
return await instance[methodName].call(instance, context); return await instance[methodName].call(instance, context);
}); });
break; break;
@@ -58,7 +58,7 @@ class ModulesHooksRegistry {
nodeName, nodeName,
taskData, taskData,
}; };
// eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/return-await // eslint-disable-next-line @typescript-eslint/no-unsafe-return
return await instance[methodName].call(instance, context); return await instance[methodName].call(instance, context);
}); });
break; break;
@@ -72,7 +72,7 @@ class ModulesHooksRegistry {
taskData, taskData,
executionData, executionData,
}; };
// eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/return-await // eslint-disable-next-line @typescript-eslint/no-unsafe-return
return await instance[methodName].call(instance, context); return await instance[methodName].call(instance, context);
}); });
break; break;
@@ -85,7 +85,7 @@ class ModulesHooksRegistry {
workflowInstance, workflowInstance,
executionData, executionData,
}; };
// eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/return-await // eslint-disable-next-line @typescript-eslint/no-unsafe-return
return await instance[methodName].call(instance, context); return await instance[methodName].call(instance, context);
}); });
break; break;

View File

@@ -1,6 +1,4 @@
import { createWorkflow } from '@n8n/backend-test-utils'; import { createWorkflow, testDb, mockInstance } from '@n8n/backend-test-utils';
import { testDb } from '@n8n/backend-test-utils';
import { mockInstance } from '@n8n/backend-test-utils';
import { ExecutionRepository } from '@n8n/db'; import { ExecutionRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { stringify } from 'flatted'; import { stringify } from 'flatted';

View File

@@ -1,6 +1,5 @@
import { mockInstance } from '@n8n/backend-test-utils'; import { mockInstance } from '@n8n/backend-test-utils';
import type { IExecutionResponse } from '@n8n/db'; import type { IExecutionResponse, ExecutionRepository } from '@n8n/db';
import type { ExecutionRepository } from '@n8n/db';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import { WorkflowOperationError } from 'n8n-workflow'; import { WorkflowOperationError } from 'n8n-workflow';

View File

@@ -1,6 +1,4 @@
import type { Project } from '@n8n/db'; import type { Project, User, SharedCredentialsRepository } from '@n8n/db';
import type { User } from '@n8n/db';
import type { SharedCredentialsRepository } from '@n8n/db';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import type { INode } from 'n8n-workflow'; import type { INode } from 'n8n-workflow';

View File

@@ -1,8 +1,6 @@
import { mockInstance } from '@n8n/backend-test-utils'; import { mockInstance } from '@n8n/backend-test-utils';
import type { GlobalConfig } from '@n8n/config'; import type { GlobalConfig } from '@n8n/config';
import type { Project } from '@n8n/db'; import type { Project, User, WorkflowEntity } from '@n8n/db';
import type { User } from '@n8n/db';
import type { WorkflowEntity } from '@n8n/db';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import type { INode, Workflow } from 'n8n-workflow'; import type { INode, Workflow } from 'n8n-workflow';
import { v4 as uuid } from 'uuid'; import { v4 as uuid } from 'uuid';

View File

@@ -122,7 +122,6 @@ export class ExternalHooks {
for (let hookFilePath of externalHookFiles) { for (let hookFilePath of externalHookFiles) {
hookFilePath = hookFilePath.trim(); hookFilePath = hookFilePath.trim();
try { try {
// eslint-disable-next-line @typescript-eslint/no-var-requires
const hookFile = require(hookFilePath) as IExternalHooksFileData; const hookFile = require(hookFilePath) as IExternalHooksFileData;
this.loadHooks(hookFile); this.loadHooks(hookFile);
} catch (e) { } catch (e) {
@@ -162,7 +161,7 @@ export class ExternalHooks {
await hookFunction.apply(context, hookParameters); await hookFunction.apply(context, hookParameters);
} catch (cause) { } catch (cause) {
this.logger.error(`There was a problem running hook "${hookName}"`); this.logger.error(`There was a problem running hook "${hookName}"`);
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
const error = new UnexpectedError(`External hook "${hookName}" failed`, { cause }); const error = new UnexpectedError(`External hook "${hookName}" failed`, { cause });
this.errorReporter.error(error, { level: 'fatal' }); this.errorReporter.error(error, { level: 'fatal' });

View File

@@ -1,8 +1,5 @@
import { mockInstance } from '@n8n/backend-test-utils'; import { mockInstance } from '@n8n/backend-test-utils';
import { generateNanoId } from '@n8n/db'; import { generateNanoId, AuthIdentity, User, UserRepository } from '@n8n/db';
import { AuthIdentity } from '@n8n/db';
import { User } from '@n8n/db';
import { UserRepository } from '@n8n/db';
import * as helpers from '@/ldap.ee/helpers.ee'; import * as helpers from '@/ldap.ee/helpers.ee';

View File

@@ -516,7 +516,7 @@ export class LoadNodesAndCredentials {
async setupHotReload() { async setupHotReload() {
const { default: debounce } = await import('lodash/debounce'); const { default: debounce } = await import('lodash/debounce');
// eslint-disable-next-line import-x/no-extraneous-dependencies
const { watch } = await import('chokidar'); const { watch } = await import('chokidar');
const { Push } = await import('@/push'); const { Push } = await import('@/push');

View File

@@ -1,5 +1,4 @@
import type { LicenseMetricsRepository } from '@n8n/db'; import type { LicenseMetricsRepository, WorkflowRepository } from '@n8n/db';
import type { WorkflowRepository } from '@n8n/db';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import { LicenseMetricsService } from '@/metrics/license-metrics.service'; import { LicenseMetricsService } from '@/metrics/license-metrics.service';

View File

@@ -5,12 +5,12 @@ import type express from 'express';
import promBundle from 'express-prom-bundle'; import promBundle from 'express-prom-bundle';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import type { InstanceSettings } from 'n8n-core'; import type { InstanceSettings } from 'n8n-core';
import { EventMessageTypeNames } from 'n8n-workflow';
import promClient from 'prom-client'; import promClient from 'prom-client';
import config from '@/config'; import config from '@/config';
import type { MessageEventBus } from '@/eventbus/message-event-bus/message-event-bus'; import type { MessageEventBus } from '@/eventbus/message-event-bus/message-event-bus';
import type { EventService } from '@/events/event.service'; import type { EventService } from '@/events/event.service';
import { EventMessageTypeNames } from 'n8n-workflow';
import { PrometheusMetricsService } from '../prometheus-metrics.service'; import { PrometheusMetricsService } from '../prometheus-metrics.service';

View File

@@ -27,7 +27,6 @@ export class MfaService {
try { try {
await this.loadMFASettings(); await this.loadMFASettings();
} catch (error) { } catch (error) {
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
this.logger.warn('Failed to load MFA settings', { error }); this.logger.warn('Failed to load MFA settings', { error });
} }
} }

View File

@@ -12,7 +12,7 @@ import { sortByQueryMiddleware } from '../sort-by';
describe('List query middleware', () => { describe('List query middleware', () => {
let mockReq: ListQuery.Request; let mockReq: ListQuery.Request;
let mockRes: Response; let mockRes: Response;
let nextFn: NextFunction = jest.fn(); const nextFn: NextFunction = jest.fn();
let args: [ListQuery.Request, Response, NextFunction]; let args: [ListQuery.Request, Response, NextFunction];
let sendErrorResponse: jest.SpyInstance; let sendErrorResponse: jest.SpyInstance;

View File

@@ -1,12 +1,11 @@
import { mockLogger } from '@n8n/backend-test-utils'; import {
import { createTeamProject } from '@n8n/backend-test-utils'; mockLogger,
import { createWorkflow } from '@n8n/backend-test-utils'; createTeamProject,
import { testDb } from '@n8n/backend-test-utils'; createWorkflow,
import { testModules } from '@n8n/backend-test-utils'; testDb,
import type { Project } from '@n8n/db'; testModules,
import type { WorkflowEntity } from '@n8n/db'; } from '@n8n/backend-test-utils';
import type { IWorkflowDb } from '@n8n/db'; import type { Project, WorkflowEntity, IWorkflowDb, SharedWorkflowRepository } from '@n8n/db';
import type { SharedWorkflowRepository } from '@n8n/db';
import type { WorkflowExecuteAfterContext } from '@n8n/decorators'; import type { WorkflowExecuteAfterContext } from '@n8n/decorators';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { In } from '@n8n/typeorm'; import { In } from '@n8n/typeorm';

View File

@@ -1,8 +1,10 @@
import { mockLogger } from '@n8n/backend-test-utils'; import {
import { createTeamProject } from '@n8n/backend-test-utils'; mockLogger,
import { createWorkflow } from '@n8n/backend-test-utils'; createTeamProject,
import { testDb } from '@n8n/backend-test-utils'; createWorkflow,
import { testModules } from '@n8n/backend-test-utils'; testDb,
testModules,
} from '@n8n/backend-test-utils';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import { DateTime } from 'luxon'; import { DateTime } from 'luxon';

View File

@@ -1,9 +1,11 @@
import type { LicenseState } from '@n8n/backend-common'; import type { LicenseState } from '@n8n/backend-common';
import { mockLogger } from '@n8n/backend-test-utils'; import {
import { createTeamProject } from '@n8n/backend-test-utils'; mockLogger,
import { createWorkflow } from '@n8n/backend-test-utils'; createTeamProject,
import { testDb } from '@n8n/backend-test-utils'; createWorkflow,
import { testModules } from '@n8n/backend-test-utils'; testDb,
testModules,
} from '@n8n/backend-test-utils';
import { Time } from '@n8n/constants'; import { Time } from '@n8n/constants';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';

View File

@@ -1,13 +1,13 @@
import type { InsightsDateRange } from '@n8n/api-types'; import type { InsightsDateRange } from '@n8n/api-types';
import type { LicenseState } from '@n8n/backend-common'; import type { LicenseState } from '@n8n/backend-common';
import { mockLogger } from '@n8n/backend-test-utils'; import {
import { createTeamProject } from '@n8n/backend-test-utils'; mockLogger,
import { createWorkflow } from '@n8n/backend-test-utils'; createTeamProject,
import { testDb } from '@n8n/backend-test-utils'; createWorkflow,
import { testModules } from '@n8n/backend-test-utils'; testDb,
import type { Project } from '@n8n/db'; testModules,
import type { WorkflowEntity } from '@n8n/db'; } from '@n8n/backend-test-utils';
import type { IWorkflowDb } from '@n8n/db'; import type { Project, WorkflowEntity, IWorkflowDb } from '@n8n/db';
import type { WorkflowExecuteAfterContext } from '@n8n/decorators'; import type { WorkflowExecuteAfterContext } from '@n8n/decorators';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import type { MockProxy } from 'jest-mock-extended'; import type { MockProxy } from 'jest-mock-extended';

View File

@@ -1,7 +1,4 @@
import { createTeamProject } from '@n8n/backend-test-utils'; import { createTeamProject, createWorkflow, testDb, testModules } from '@n8n/backend-test-utils';
import { createWorkflow } from '@n8n/backend-test-utils';
import { testDb } from '@n8n/backend-test-utils';
import { testModules } from '@n8n/backend-test-utils';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { DateTime } from 'luxon'; import { DateTime } from 'luxon';

View File

@@ -1,7 +1,4 @@
import { createTeamProject } from '@n8n/backend-test-utils'; import { createTeamProject, createWorkflow, testDb, testModules } from '@n8n/backend-test-utils';
import { createWorkflow } from '@n8n/backend-test-utils';
import { testDb } from '@n8n/backend-test-utils';
import { testModules } from '@n8n/backend-test-utils';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { DateTime } from 'luxon'; import { DateTime } from 'luxon';

View File

@@ -40,7 +40,7 @@ export async function getSharedWorkflowIds(
export async function getSharedWorkflow( export async function getSharedWorkflow(
user: User, user: User,
workflowId?: string | undefined, workflowId?: string,
): Promise<SharedWorkflow | null> { ): Promise<SharedWorkflow | null> {
return await Container.get(SharedWorkflowRepository).findOne({ return await Container.get(SharedWorkflowRepository).findOne({
where: { where: {

View File

@@ -94,7 +94,7 @@ export class Push extends TypedEmitter<PushEvents> {
setupPushHandler(restEndpoint: string, app: Application) { setupPushHandler(restEndpoint: string, app: Application) {
app.use( app.use(
`/${restEndpoint}/push`, `/${restEndpoint}/push`,
// eslint-disable-next-line @typescript-eslint/unbound-method
this.authService.createAuthMiddleware(false), this.authService.createAuthMiddleware(false),
(req: SSEPushRequest | WebSocketPushRequest, res: PushResponse) => (req: SSEPushRequest | WebSocketPushRequest, res: PushResponse) =>
this.handleRequest(req, res), this.handleRequest(req, res),

View File

@@ -1,12 +1,17 @@
import type { Logger } from '@n8n/backend-common'; import type { Logger } from '@n8n/backend-common';
import type { IExecutionResponse } from '@n8n/db'; import type { IExecutionResponse, ExecutionRepository } from '@n8n/db';
import type { ExecutionRepository } from '@n8n/db';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import type { WorkflowExecute as ActualWorkflowExecute } from 'n8n-core'; import type { WorkflowExecute as ActualWorkflowExecute } from 'n8n-core';
import { ExternalSecretsProxy } from 'n8n-core'; import { ExternalSecretsProxy } from 'n8n-core';
import { mockInstance } from 'n8n-core/test/utils'; import { mockInstance } from 'n8n-core/test/utils';
import type { IPinData, ITaskData, IWorkflowExecuteAdditionalData } from 'n8n-workflow'; import {
import { Workflow, type IRunExecutionData, type WorkflowExecuteMode } from 'n8n-workflow'; type IPinData,
type ITaskData,
type IWorkflowExecuteAdditionalData,
Workflow,
type IRunExecutionData,
type WorkflowExecuteMode,
} from 'n8n-workflow';
import { CredentialsHelper } from '@/credentials-helper'; import { CredentialsHelper } from '@/credentials-helper';
import { VariablesService } from '@/environments.ee/variables/variables.service.ee'; import { VariablesService } from '@/environments.ee/variables/variables.service.ee';

View File

@@ -1,5 +1,4 @@
import { mockLogger } from '@n8n/backend-test-utils'; import { mockLogger, mockInstance } from '@n8n/backend-test-utils';
import { mockInstance } from '@n8n/backend-test-utils';
import { GlobalConfig } from '@n8n/config'; import { GlobalConfig } from '@n8n/config';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import * as BullModule from 'bull'; import * as BullModule from 'bull';

View File

@@ -415,7 +415,7 @@ export class Server extends AbstractServer {
}); });
// Route all UI urls to index.html to support history-api // Route all UI urls to index.html to support history-api
const nonUIRoutes: Readonly<string[]> = [ const nonUIRoutes: readonly string[] = [
'favicon.ico', 'favicon.ico',
'assets', 'assets',
'static', 'static',

View File

@@ -1,7 +1,5 @@
import { WorkflowEntity } from '@n8n/db'; import { WorkflowEntity } from '@n8n/db';
import type { User } from '@n8n/db'; import type { User, SharedWorkflowRepository, WorkflowRepository } from '@n8n/db';
import type { SharedWorkflowRepository } from '@n8n/db';
import type { WorkflowRepository } from '@n8n/db';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import type { ActivationErrorsService } from '@/activation-errors.service'; import type { ActivationErrorsService } from '@/activation-errors.service';

View File

@@ -1,12 +1,13 @@
import type { Logger } from '@n8n/backend-common'; import type { Logger } from '@n8n/backend-common';
import { randomName } from '@n8n/backend-test-utils'; import { randomName, mockInstance } from '@n8n/backend-test-utils';
import { mockInstance } from '@n8n/backend-test-utils';
import type { GlobalConfig } from '@n8n/config'; import type { GlobalConfig } from '@n8n/config';
import { LICENSE_FEATURES } from '@n8n/constants'; import { LICENSE_FEATURES } from '@n8n/constants';
import { InstalledNodes } from '@n8n/db'; import {
import { InstalledPackages } from '@n8n/db'; InstalledNodes,
import { InstalledNodesRepository } from '@n8n/db'; InstalledPackages,
import { InstalledPackagesRepository } from '@n8n/db'; InstalledNodesRepository,
InstalledPackagesRepository,
} from '@n8n/db';
import axios from 'axios'; import axios from 'axios';
import { exec } from 'child_process'; import { exec } from 'child_process';
import { mkdir, readFile, writeFile, rm, access, constants } from 'fs/promises'; import { mkdir, readFile, writeFile, rm, access, constants } from 'fs/promises';

View File

@@ -1,6 +1,5 @@
import { SharedCredentials } from '@n8n/db'; import { SharedCredentials } from '@n8n/db';
import type { CredentialsEntity } from '@n8n/db'; import type { CredentialsEntity, User } from '@n8n/db';
import type { User } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { In } from '@n8n/typeorm'; import { In } from '@n8n/typeorm';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';

View File

@@ -1,8 +1,11 @@
import type { AuthenticatedRequest } from '@n8n/db'; import type {
import type { SettingsRepository, User } from '@n8n/db'; AuthenticatedRequest,
import type { CredentialsRepository } from '@n8n/db'; SettingsRepository,
import type { WorkflowRepository } from '@n8n/db'; User,
import type { UserRepository } from '@n8n/db'; CredentialsRepository,
WorkflowRepository,
UserRepository,
} from '@n8n/db';
import RudderStack from '@rudderstack/rudder-sdk-node'; import RudderStack from '@rudderstack/rudder-sdk-node';
import type { Response } from 'express'; import type { Response } from 'express';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';

View File

@@ -1,9 +1,7 @@
import { mockLogger } from '@n8n/backend-test-utils'; import { mockLogger } from '@n8n/backend-test-utils';
import type { GlobalConfig } from '@n8n/config'; import type { GlobalConfig } from '@n8n/config';
import { Time } from '@n8n/constants'; import { Time } from '@n8n/constants';
import type { AuthenticatedRequest } from '@n8n/db'; import type { AuthenticatedRequest, User, UserRepository } from '@n8n/db';
import type { User } from '@n8n/db';
import type { UserRepository } from '@n8n/db';
import type { NextFunction, Response } from 'express'; import type { NextFunction, Response } from 'express';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import { DateTime } from 'luxon'; import { DateTime } from 'luxon';

View File

@@ -1,8 +1,6 @@
import { mockInstance } from '@n8n/backend-test-utils'; import { mockInstance } from '@n8n/backend-test-utils';
import type { CredentialsEntity } from '@n8n/db'; import type { CredentialsEntity, WorkflowEntity } from '@n8n/db';
import type { WorkflowEntity } from '@n8n/db'; import { CredentialsRepository, WorkflowRepository } from '@n8n/db';
import { CredentialsRepository } from '@n8n/db';
import { WorkflowRepository } from '@n8n/db';
import { NamingService } from '@/services/naming.service'; import { NamingService } from '@/services/naming.service';

View File

@@ -1,9 +1,15 @@
import { mockInstance } from '@n8n/backend-test-utils'; import { mockInstance } from '@n8n/backend-test-utils';
import type { SharedCredentials } from '@n8n/db'; import type { SharedCredentials } from '@n8n/db';
import { Project, SharedWorkflow, User, WorkflowEntity, ProjectRelation } from '@n8n/db'; import {
import { ProjectRelationRepository } from '@n8n/db'; Project,
import { SharedWorkflowRepository } from '@n8n/db'; SharedWorkflow,
import { UserRepository } from '@n8n/db'; User,
WorkflowEntity,
ProjectRelation,
ProjectRelationRepository,
SharedWorkflowRepository,
UserRepository,
} from '@n8n/db';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import { v4 as uuid } from 'uuid'; import { v4 as uuid } from 'uuid';

View File

@@ -1,7 +1,6 @@
import { testDb } from '@n8n/backend-test-utils'; import { testDb } from '@n8n/backend-test-utils';
import type { AuthenticatedRequest } from '@n8n/db'; import type { AuthenticatedRequest } from '@n8n/db';
import { ApiKeyRepository } from '@n8n/db'; import { ApiKeyRepository, UserRepository } from '@n8n/db';
import { UserRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { getOwnerOnlyApiKeyScopes, type ApiKeyScope } from '@n8n/permissions'; import { getOwnerOnlyApiKeyScopes, type ApiKeyScope } from '@n8n/permissions';
import type { Response, NextFunction } from 'express'; import type { Response, NextFunction } from 'express';

View File

@@ -1,7 +1,6 @@
import { mockInstance } from '@n8n/backend-test-utils'; import { mockInstance } from '@n8n/backend-test-utils';
import { GlobalConfig } from '@n8n/config'; import { GlobalConfig } from '@n8n/config';
import { User } from '@n8n/db'; import { User, UserRepository } from '@n8n/db';
import { UserRepository } from '@n8n/db';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import { v4 as uuid } from 'uuid'; import { v4 as uuid } from 'uuid';

View File

@@ -1,10 +1,6 @@
import { getPersonalProject } from '@n8n/backend-test-utils'; import { getPersonalProject, createWorkflow, testDb, mockInstance } from '@n8n/backend-test-utils';
import { createWorkflow } from '@n8n/backend-test-utils';
import { testDb } from '@n8n/backend-test-utils';
import { mockInstance } from '@n8n/backend-test-utils';
import { GlobalConfig } from '@n8n/config'; import { GlobalConfig } from '@n8n/config';
import type { IWorkflowDb, Project, WorkflowEntity } from '@n8n/db'; import type { IWorkflowDb, Project, WorkflowEntity, User } from '@n8n/db';
import type { User } from '@n8n/db';
import { WorkflowStatisticsRepository } from '@n8n/db'; import { WorkflowStatisticsRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { import {

View File

@@ -171,7 +171,7 @@ export class OidcService {
} catch (error) { } catch (error) {
this.logger.warn( this.logger.warn(
'Failed to load OIDC configuration from database, falling back to default configuration.', 'Failed to load OIDC configuration from database, falling back to default configuration.',
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
{ error }, { error },
); );
} }

View File

@@ -1,9 +1,6 @@
import { mockInstance } from '@n8n/backend-test-utils'; import { mockInstance } from '@n8n/backend-test-utils';
import type { AuthIdentity } from '@n8n/db'; import type { AuthIdentity } from '@n8n/db';
import { generateNanoId } from '@n8n/db'; import { generateNanoId, User, AuthIdentityRepository, UserRepository } from '@n8n/db';
import { User } from '@n8n/db';
import { AuthIdentityRepository } from '@n8n/db';
import { UserRepository } from '@n8n/db';
import * as helpers from '@/sso.ee/saml/saml-helpers'; import * as helpers from '@/sso.ee/saml/saml-helpers';
import type { SamlUserAttributes } from '@/sso.ee/saml/types'; import type { SamlUserAttributes } from '@/sso.ee/saml/types';

View File

@@ -269,7 +269,7 @@ export class SamlService {
// database. // database.
this.logger.error( this.logger.error(
'SAML initialization detected an invalid metadata URL in database. Trying to initialize from metadata in database if available.', 'SAML initialization detected an invalid metadata URL in database. Trying to initialize from metadata in database if available.',
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
{ error }, { error },
); );
} }

View File

@@ -719,7 +719,7 @@ describe('TaskBroker', () => {
describe('task execution timeouts', () => { describe('task execution timeouts', () => {
let taskBroker: TaskBroker; let taskBroker: TaskBroker;
let config: TaskRunnersConfig; let config: TaskRunnersConfig;
let runnerLifecycleEvents = mock<TaskRunnerLifecycleEvents>(); const runnerLifecycleEvents = mock<TaskRunnerLifecycleEvents>();
beforeAll(() => { beforeAll(() => {
jest.useFakeTimers(); jest.useFakeTimers();

View File

@@ -1,7 +1,6 @@
import type { DataRequestResponse, TaskDataRequestParams } from '@n8n/task-runner'; import type { DataRequestResponse, TaskDataRequestParams } from '@n8n/task-runner';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import type { IWorkflowExecuteAdditionalData } from 'n8n-workflow'; import type { IWorkflowExecuteAdditionalData, INode, INodeExecutionData } from 'n8n-workflow';
import { type INode, type INodeExecutionData } from 'n8n-workflow';
import { DataRequestResponseStripper } from '../data-request-response-stripper'; import { DataRequestResponseStripper } from '../data-request-response-stripper';

View File

@@ -1,6 +1,6 @@
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import type { INode } from 'n8n-workflow'; import type { INode, Workflow } from 'n8n-workflow';
import { NodeOperationError, type Workflow } from 'n8n-workflow'; import { NodeOperationError } from 'n8n-workflow';
import { objectToError } from '../object-to-error'; import { objectToError } from '../object-to-error';

View File

@@ -1,11 +1,12 @@
import { generateNanoId } from '@n8n/db'; import { generateNanoId } from '@n8n/db';
import type * as express from 'express'; import type * as express from 'express';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import type { ITaskData, IWorkflowBase } from 'n8n-workflow'; import type {
import { ITaskData,
type IWebhookData, IWorkflowBase,
type IWorkflowExecuteAdditionalData, IWebhookData,
type Workflow, IWorkflowExecuteAdditionalData,
Workflow,
} from 'n8n-workflow'; } from 'n8n-workflow';
import { v4 as uuid } from 'uuid'; import { v4 as uuid } from 'uuid';

View File

@@ -1,5 +1,4 @@
import type { IExecutionResponse } from '@n8n/db'; import type { IExecutionResponse, ExecutionRepository } from '@n8n/db';
import type { ExecutionRepository } from '@n8n/db';
import type express from 'express'; import type express from 'express';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';
import { FORM_NODE_TYPE, WAITING_FORMS_EXECUTION_STATUS, type Workflow } from 'n8n-workflow'; import { FORM_NODE_TYPE, WAITING_FORMS_EXECUTION_STATUS, type Workflow } from 'n8n-workflow';

View File

@@ -1,5 +1,4 @@
import type { IExecutionResponse } from '@n8n/db'; import type { IExecutionResponse, ExecutionRepository } from '@n8n/db';
import type { ExecutionRepository } from '@n8n/db';
import type express from 'express'; import type express from 'express';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';

View File

@@ -13,14 +13,14 @@ import { WebhookService } from '@/webhooks/webhook.service';
import * as WorkflowExecuteAdditionalData from '@/workflow-execute-additional-data'; import * as WorkflowExecuteAdditionalData from '@/workflow-execute-additional-data';
import { WorkflowStaticDataService } from '@/workflows/workflow-static-data.service'; import { WorkflowStaticDataService } from '@/workflows/workflow-static-data.service';
import { authAllowlistedNodes } from './constants';
import { sanitizeWebhookRequest } from './webhook-request-sanitizer';
import type { import type {
IWebhookResponseCallbackData, IWebhookResponseCallbackData,
IWebhookManager, IWebhookManager,
WebhookAccessControlOptions, WebhookAccessControlOptions,
WebhookRequest, WebhookRequest,
} from './webhook.types'; } from './webhook.types';
import { authAllowlistedNodes } from './constants';
import { sanitizeWebhookRequest } from './webhook-request-sanitizer';
/** /**
* Service for handling the execution of live webhooks, i.e. webhooks * Service for handling the execution of live webhooks, i.e. webhooks

View File

@@ -25,6 +25,8 @@ import * as WebhookHelpers from '@/webhooks/webhook-helpers';
import * as WorkflowExecuteAdditionalData from '@/workflow-execute-additional-data'; import * as WorkflowExecuteAdditionalData from '@/workflow-execute-additional-data';
import type { WorkflowRequest } from '@/workflows/workflow.request'; import type { WorkflowRequest } from '@/workflows/workflow.request';
import { authAllowlistedNodes } from './constants';
import { sanitizeWebhookRequest } from './webhook-request-sanitizer';
import { WebhookService } from './webhook.service'; import { WebhookService } from './webhook.service';
import type { import type {
IWebhookResponseCallbackData, IWebhookResponseCallbackData,
@@ -32,8 +34,6 @@ import type {
WebhookAccessControlOptions, WebhookAccessControlOptions,
WebhookRequest, WebhookRequest,
} from './webhook.types'; } from './webhook.types';
import { authAllowlistedNodes } from './constants';
import { sanitizeWebhookRequest } from './webhook-request-sanitizer';
/** /**
* Service for handling the execution of webhooks of manual executions * Service for handling the execution of webhooks of manual executions

View File

@@ -13,8 +13,8 @@ import { ConflictError } from '@/errors/response-errors/conflict.error';
import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { NotFoundError } from '@/errors/response-errors/not-found.error';
import { WaitingWebhooks } from '@/webhooks/waiting-webhooks'; import { WaitingWebhooks } from '@/webhooks/waiting-webhooks';
import type { IWebhookResponseCallbackData, WaitingWebhookRequest } from './webhook.types';
import { sanitizeWebhookRequest } from './webhook-request-sanitizer'; import { sanitizeWebhookRequest } from './webhook-request-sanitizer';
import type { IWebhookResponseCallbackData, WaitingWebhookRequest } from './webhook.types';
@Service() @Service()
export class WaitingForms extends WaitingWebhooks { export class WaitingForms extends WaitingWebhooks {

View File

@@ -18,13 +18,13 @@ import { NodeTypes } from '@/node-types';
import * as WebhookHelpers from '@/webhooks/webhook-helpers'; import * as WebhookHelpers from '@/webhooks/webhook-helpers';
import * as WorkflowExecuteAdditionalData from '@/workflow-execute-additional-data'; import * as WorkflowExecuteAdditionalData from '@/workflow-execute-additional-data';
import { sanitizeWebhookRequest } from './webhook-request-sanitizer';
import { WebhookService } from './webhook.service'; import { WebhookService } from './webhook.service';
import type { import type {
IWebhookResponseCallbackData, IWebhookResponseCallbackData,
IWebhookManager, IWebhookManager,
WaitingWebhookRequest, WaitingWebhookRequest,
} from './webhook.types'; } from './webhook.types';
import { sanitizeWebhookRequest } from './webhook-request-sanitizer';
/** /**
* Service for handling the execution of webhooks of Wait nodes that use the * Service for handling the execution of webhooks of Wait nodes that use the

View File

@@ -1,6 +1,6 @@
/* eslint-disable @typescript-eslint/no-unsafe-argument */ /* eslint-disable @typescript-eslint/no-unsafe-argument */
/* eslint-disable @typescript-eslint/prefer-optional-chain */ /* eslint-disable @typescript-eslint/prefer-optional-chain */
/* eslint-disable @typescript-eslint/no-shadow */
/* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
/* eslint-disable id-denylist */ /* eslint-disable id-denylist */
/* eslint-disable prefer-spread */ /* eslint-disable prefer-spread */

View File

@@ -1,6 +1,7 @@
import { AUTH_COOKIE_NAME } from '@/constants';
import type { Request } from 'express'; import type { Request } from 'express';
import { AUTH_COOKIE_NAME } from '@/constants';
const BROWSER_ID_COOKIE_NAME = 'n8n-browserId'; const BROWSER_ID_COOKIE_NAME = 'n8n-browserId';
const DISALLOWED_COOKIES = new Set([AUTH_COOKIE_NAME, BROWSER_ID_COOKIE_NAME]); const DISALLOWED_COOKIES = new Set([AUTH_COOKIE_NAME, BROWSER_ID_COOKIE_NAME]);

View File

@@ -1,5 +1,5 @@
/* eslint-disable @typescript-eslint/no-unsafe-argument */ /* eslint-disable @typescript-eslint/no-unsafe-argument */
/* eslint-disable @typescript-eslint/no-use-before-define */
/* eslint-disable @typescript-eslint/no-unsafe-member-access */ /* eslint-disable @typescript-eslint/no-unsafe-member-access */
/* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
import type { PushMessage, PushType } from '@n8n/api-types'; import type { PushMessage, PushType } from '@n8n/api-types';

View File

@@ -1,6 +1,6 @@
/* eslint-disable @typescript-eslint/no-unsafe-argument */ /* eslint-disable @typescript-eslint/no-unsafe-argument */
/* eslint-disable @typescript-eslint/no-unsafe-member-access */ /* eslint-disable @typescript-eslint/no-unsafe-member-access */
/* eslint-disable @typescript-eslint/no-shadow */
/* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-unsafe-assignment */
import { Logger } from '@n8n/backend-common'; import { Logger } from '@n8n/backend-common';
import { ExecutionRepository } from '@n8n/db'; import { ExecutionRepository } from '@n8n/db';
@@ -200,7 +200,7 @@ export class WorkflowRunner {
} }
/** Run the workflow in current process */ /** Run the workflow in current process */
// eslint-disable-next-line complexity
private async runMainProcess( private async runMainProcess(
executionId: string, executionId: string,
data: IWorkflowExecutionDataProcess, data: IWorkflowExecutionDataProcess,

View File

@@ -1,7 +1,5 @@
import { mockLogger } from '@n8n/backend-test-utils'; import { mockLogger, mockInstance } from '@n8n/backend-test-utils';
import { mockInstance } from '@n8n/backend-test-utils'; import { User, WorkflowHistoryRepository } from '@n8n/db';
import { User } from '@n8n/db';
import { WorkflowHistoryRepository } from '@n8n/db';
import { mockClear } from 'jest-mock-extended'; import { mockClear } from 'jest-mock-extended';
import { WorkflowFinderService } from '@/workflows/workflow-finder.service'; import { WorkflowFinderService } from '@/workflows/workflow-finder.service';

View File

@@ -1,6 +1,4 @@
import { createWorkflow } from '@n8n/backend-test-utils'; import { createWorkflow, testDb, mockInstance } from '@n8n/backend-test-utils';
import { testDb } from '@n8n/backend-test-utils';
import { mockInstance } from '@n8n/backend-test-utils';
import type { WebhookEntity } from '@n8n/db'; import type { WebhookEntity } from '@n8n/db';
import { WorkflowRepository } from '@n8n/db'; import { WorkflowRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';

View File

@@ -1,10 +1,11 @@
import { testDb } from '@n8n/backend-test-utils'; import { testDb } from '@n8n/backend-test-utils';
import type { Project } from '@n8n/db'; import type { Project, User } from '@n8n/db';
import type { User } from '@n8n/db'; import {
import { CredentialsRepository } from '@n8n/db'; CredentialsRepository,
import { ProjectRepository } from '@n8n/db'; ProjectRepository,
import { SharedCredentialsRepository } from '@n8n/db'; SharedCredentialsRepository,
import { UserRepository } from '@n8n/db'; UserRepository,
} from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { randomUUID } from 'crypto'; import { randomUUID } from 'crypto';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';

View File

@@ -1,7 +1,5 @@
import type { ApiKeyWithRawValue } from '@n8n/api-types'; import type { ApiKeyWithRawValue } from '@n8n/api-types';
import { testDb } from '@n8n/backend-test-utils'; import { testDb, randomValidPassword, mockInstance } from '@n8n/backend-test-utils';
import { randomValidPassword } from '@n8n/backend-test-utils';
import { mockInstance } from '@n8n/backend-test-utils';
import { GlobalConfig } from '@n8n/config'; import { GlobalConfig } from '@n8n/config';
import type { User } from '@n8n/db'; import type { User } from '@n8n/db';
import { ApiKeyRepository } from '@n8n/db'; import { ApiKeyRepository } from '@n8n/db';

View File

@@ -1,5 +1,4 @@
import { randomValidPassword } from '@n8n/backend-test-utils'; import { randomValidPassword, testDb } from '@n8n/backend-test-utils';
import { testDb } from '@n8n/backend-test-utils';
import type { User } from '@n8n/db'; import type { User } from '@n8n/db';
import { UserRepository } from '@n8n/db'; import { UserRepository } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';

View File

@@ -14,7 +14,7 @@ const throwFileNotFound = () => {
}; };
const binaryDataService = mockInstance(BinaryDataService); const binaryDataService = mockInstance(BinaryDataService);
let testServer = setupTestServer({ endpointGroups: ['binaryData'] }); const testServer = setupTestServer({ endpointGroups: ['binaryData'] });
let authOwnerAgent: SuperAgentTest; let authOwnerAgent: SuperAgentTest;
beforeAll(async () => { beforeAll(async () => {

View File

@@ -1,6 +1,9 @@
import { createWorkflow, shareWorkflowWithUsers } from '@n8n/backend-test-utils'; import {
import { testDb } from '@n8n/backend-test-utils'; createWorkflow,
import { mockInstance } from '@n8n/backend-test-utils'; shareWorkflowWithUsers,
testDb,
mockInstance,
} from '@n8n/backend-test-utils';
import type { User } from '@n8n/db'; import type { User } from '@n8n/db';
import { Container } from '@n8n/di'; import { Container } from '@n8n/di';
import { mock } from 'jest-mock-extended'; import { mock } from 'jest-mock-extended';

View File

@@ -1,5 +1,4 @@
import { getPersonalProject, mockInstance } from '@n8n/backend-test-utils'; import { getPersonalProject, mockInstance, testDb } from '@n8n/backend-test-utils';
import { testDb } from '@n8n/backend-test-utils';
import { nanoid } from 'nanoid'; import { nanoid } from 'nanoid';
import '@/zod-alias-support'; import '@/zod-alias-support';

View File

@@ -1,6 +1,10 @@
import { mockInstance, testDb } from '@n8n/backend-test-utils'; import {
import { getPersonalProject } from '@n8n/backend-test-utils'; mockInstance,
import { getAllSharedWorkflows, getAllWorkflows } from '@n8n/backend-test-utils'; testDb,
getPersonalProject,
getAllSharedWorkflows,
getAllWorkflows,
} from '@n8n/backend-test-utils';
import { nanoid } from 'nanoid'; import { nanoid } from 'nanoid';
import '@/zod-alias-support'; import '@/zod-alias-support';

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