diff --git a/packages/@n8n/backend-services/README.md b/packages/@n8n/backend-services/README.md index e621eb47cbd..41632eb4191 100644 --- a/packages/@n8n/backend-services/README.md +++ b/packages/@n8n/backend-services/README.md @@ -27,9 +27,13 @@ and infrastructure services that need the persistence layer or that only ## What lives here -Nothing yet. The next PRs move the response errors, `UrlService`, `CacheService`, -`RedisClientService`, `ProtectedResourceRegistry`, `EventService`, `RoleService`, -the finder services and the scope checks here, one area at a time. +| Export | Purpose | +| --- | --- | +| `ResponseError` and its subclasses (`BadRequestError`, `NotFoundError`, `ForbiddenError`, ...) | Errors that map to an HTTP status code in a REST response | + +The next PRs move `UrlService`, `CacheService`, `RedisClientService`, +`ProtectedResourceRegistry`, `EventService`, `RoleService`, the finder services +and the scope checks here, one area at a time. ## Compatibility with cli diff --git a/packages/@n8n/backend-services/package.json b/packages/@n8n/backend-services/package.json index 3f8b7053ead..c086d2c829c 100644 --- a/packages/@n8n/backend-services/package.json +++ b/packages/@n8n/backend-services/package.json @@ -22,6 +22,10 @@ "files": [ "dist/**/*" ], + "dependencies": { + "@n8n/api-types": "workspace:*", + "n8n-workflow": "workspace:*" + }, "devDependencies": { "@n8n/eslint-config": "workspace:*", "@n8n/oxlint-config": "workspace:*", diff --git a/packages/@n8n/backend-services/src/errors/response-errors/__tests__/response.error.test.ts b/packages/@n8n/backend-services/src/errors/response-errors/__tests__/response.error.test.ts new file mode 100644 index 00000000000..0cd566693e9 --- /dev/null +++ b/packages/@n8n/backend-services/src/errors/response-errors/__tests__/response.error.test.ts @@ -0,0 +1,30 @@ +import { BadRequestError } from '../bad-request.error'; +import { InternalServerError } from '../internal-server.error'; +import { NotFoundError } from '../not-found.error'; +import { ServiceUnavailableError } from '../service-unavailable.error'; + +describe('ResponseError', () => { + it('should set the error level from the HTTP status code', () => { + expect(new BadRequestError('bad').level).toBe('warning'); + expect(new ServiceUnavailableError('down').level).toBe('info'); + expect(new InternalServerError('boom').level).toBe('error'); + }); + + it('should default the error code to the HTTP status code', () => { + const error = new BadRequestError('bad'); + + expect(error.httpStatusCode).toBe(400); + expect(error.errorCode).toBe(400); + }); + + it('should keep the cause', () => { + const cause = new Error('root'); + + expect(BadRequestError.wrap('bad', cause).cause).toBe(cause); + }); + + it('should assert a defined value', () => { + expect(() => NotFoundError.isDefinedAndNotNull(null, 'missing')).toThrow(NotFoundError); + expect(() => NotFoundError.isDefinedAndNotNull('x', 'missing')).not.toThrow(); + }); +}); diff --git a/packages/cli/src/errors/response-errors/abstract/response.error.ts b/packages/@n8n/backend-services/src/errors/response-errors/abstract/response.error.ts similarity index 100% rename from packages/cli/src/errors/response-errors/abstract/response.error.ts rename to packages/@n8n/backend-services/src/errors/response-errors/abstract/response.error.ts diff --git a/packages/cli/src/errors/response-errors/auth.error.ts b/packages/@n8n/backend-services/src/errors/response-errors/auth.error.ts similarity index 100% rename from packages/cli/src/errors/response-errors/auth.error.ts rename to packages/@n8n/backend-services/src/errors/response-errors/auth.error.ts diff --git a/packages/cli/src/errors/response-errors/bad-request.error.ts b/packages/@n8n/backend-services/src/errors/response-errors/bad-request.error.ts similarity index 100% rename from packages/cli/src/errors/response-errors/bad-request.error.ts rename to packages/@n8n/backend-services/src/errors/response-errors/bad-request.error.ts diff --git a/packages/cli/src/errors/response-errors/conflict.error.ts b/packages/@n8n/backend-services/src/errors/response-errors/conflict.error.ts similarity index 100% rename from packages/cli/src/errors/response-errors/conflict.error.ts rename to packages/@n8n/backend-services/src/errors/response-errors/conflict.error.ts diff --git a/packages/cli/src/errors/response-errors/content-too-large.error.ts b/packages/@n8n/backend-services/src/errors/response-errors/content-too-large.error.ts similarity index 100% rename from packages/cli/src/errors/response-errors/content-too-large.error.ts rename to packages/@n8n/backend-services/src/errors/response-errors/content-too-large.error.ts diff --git a/packages/cli/src/errors/response-errors/forbidden.error.ts b/packages/@n8n/backend-services/src/errors/response-errors/forbidden.error.ts similarity index 100% rename from packages/cli/src/errors/response-errors/forbidden.error.ts rename to packages/@n8n/backend-services/src/errors/response-errors/forbidden.error.ts diff --git a/packages/cli/src/errors/response-errors/internal-server.error.ts b/packages/@n8n/backend-services/src/errors/response-errors/internal-server.error.ts similarity index 100% rename from packages/cli/src/errors/response-errors/internal-server.error.ts rename to packages/@n8n/backend-services/src/errors/response-errors/internal-server.error.ts diff --git a/packages/cli/src/errors/response-errors/locked.error.ts b/packages/@n8n/backend-services/src/errors/response-errors/locked.error.ts similarity index 100% rename from packages/cli/src/errors/response-errors/locked.error.ts rename to packages/@n8n/backend-services/src/errors/response-errors/locked.error.ts diff --git a/packages/cli/src/errors/response-errors/not-found.error.ts b/packages/@n8n/backend-services/src/errors/response-errors/not-found.error.ts similarity index 100% rename from packages/cli/src/errors/response-errors/not-found.error.ts rename to packages/@n8n/backend-services/src/errors/response-errors/not-found.error.ts diff --git a/packages/cli/src/errors/response-errors/not-implemented.error.ts b/packages/@n8n/backend-services/src/errors/response-errors/not-implemented.error.ts similarity index 100% rename from packages/cli/src/errors/response-errors/not-implemented.error.ts rename to packages/@n8n/backend-services/src/errors/response-errors/not-implemented.error.ts diff --git a/packages/cli/src/errors/response-errors/payment-required.error.ts b/packages/@n8n/backend-services/src/errors/response-errors/payment-required.error.ts similarity index 100% rename from packages/cli/src/errors/response-errors/payment-required.error.ts rename to packages/@n8n/backend-services/src/errors/response-errors/payment-required.error.ts diff --git a/packages/cli/src/errors/response-errors/scope-forbidden.error.ts b/packages/@n8n/backend-services/src/errors/response-errors/scope-forbidden.error.ts similarity index 100% rename from packages/cli/src/errors/response-errors/scope-forbidden.error.ts rename to packages/@n8n/backend-services/src/errors/response-errors/scope-forbidden.error.ts diff --git a/packages/cli/src/errors/response-errors/service-unavailable.error.ts b/packages/@n8n/backend-services/src/errors/response-errors/service-unavailable.error.ts similarity index 100% rename from packages/cli/src/errors/response-errors/service-unavailable.error.ts rename to packages/@n8n/backend-services/src/errors/response-errors/service-unavailable.error.ts diff --git a/packages/cli/src/errors/response-errors/too-many-requests.error.ts b/packages/@n8n/backend-services/src/errors/response-errors/too-many-requests.error.ts similarity index 100% rename from packages/cli/src/errors/response-errors/too-many-requests.error.ts rename to packages/@n8n/backend-services/src/errors/response-errors/too-many-requests.error.ts diff --git a/packages/cli/src/errors/response-errors/unauthenticated.error.ts b/packages/@n8n/backend-services/src/errors/response-errors/unauthenticated.error.ts similarity index 100% rename from packages/cli/src/errors/response-errors/unauthenticated.error.ts rename to packages/@n8n/backend-services/src/errors/response-errors/unauthenticated.error.ts diff --git a/packages/cli/src/errors/response-errors/unprocessable.error.ts b/packages/@n8n/backend-services/src/errors/response-errors/unprocessable.error.ts similarity index 100% rename from packages/cli/src/errors/response-errors/unprocessable.error.ts rename to packages/@n8n/backend-services/src/errors/response-errors/unprocessable.error.ts diff --git a/packages/cli/src/errors/response-errors/unsupported-media-type.error.ts b/packages/@n8n/backend-services/src/errors/response-errors/unsupported-media-type.error.ts similarity index 100% rename from packages/cli/src/errors/response-errors/unsupported-media-type.error.ts rename to packages/@n8n/backend-services/src/errors/response-errors/unsupported-media-type.error.ts diff --git a/packages/cli/src/errors/response-errors/workflow-publish-blocked.error.ts b/packages/@n8n/backend-services/src/errors/response-errors/workflow-publish-blocked.error.ts similarity index 100% rename from packages/cli/src/errors/response-errors/workflow-publish-blocked.error.ts rename to packages/@n8n/backend-services/src/errors/response-errors/workflow-publish-blocked.error.ts diff --git a/packages/@n8n/backend-services/src/index.ts b/packages/@n8n/backend-services/src/index.ts index cb0ff5c3b54..a07793c96d8 100644 --- a/packages/@n8n/backend-services/src/index.ts +++ b/packages/@n8n/backend-services/src/index.ts @@ -1 +1,18 @@ -export {}; +export { ResponseError } from './errors/response-errors/abstract/response.error'; +export { AuthError } from './errors/response-errors/auth.error'; +export { BadRequestError } from './errors/response-errors/bad-request.error'; +export { ConflictError } from './errors/response-errors/conflict.error'; +export { ContentTooLargeError } from './errors/response-errors/content-too-large.error'; +export { ForbiddenError } from './errors/response-errors/forbidden.error'; +export { InternalServerError } from './errors/response-errors/internal-server.error'; +export { LockedError } from './errors/response-errors/locked.error'; +export { NotFoundError } from './errors/response-errors/not-found.error'; +export { NotImplementedError } from './errors/response-errors/not-implemented.error'; +export { PaymentRequiredError } from './errors/response-errors/payment-required.error'; +export { ScopeForbiddenError } from './errors/response-errors/scope-forbidden.error'; +export { ServiceUnavailableError } from './errors/response-errors/service-unavailable.error'; +export { TooManyRequestsError } from './errors/response-errors/too-many-requests.error'; +export { UnauthenticatedError } from './errors/response-errors/unauthenticated.error'; +export { UnprocessableRequestError } from './errors/response-errors/unprocessable.error'; +export { UnsupportedMediaTypeError } from './errors/response-errors/unsupported-media-type.error'; +export { WorkflowPublishBlockedError } from './errors/response-errors/workflow-publish-blocked.error'; diff --git a/packages/@n8n/backend-services/tsconfig.json b/packages/@n8n/backend-services/tsconfig.json index 80db2ea84ed..3112f14ed0d 100644 --- a/packages/@n8n/backend-services/tsconfig.json +++ b/packages/@n8n/backend-services/tsconfig.json @@ -15,5 +15,9 @@ // TODO: remove all options below this line "useUnknownInCatchVariables": false }, - "include": ["src/**/*.ts", "test/**/*.ts"] + "include": ["src/**/*.ts", "test/**/*.ts"], + "references": [ + { "path": "../../workflow/tsconfig.build.cjs.json" }, + { "path": "../api-types/tsconfig.build.json" } + ] } diff --git a/packages/cli/package.json b/packages/cli/package.json index 16dc2e95341..341f0d951ce 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -159,6 +159,7 @@ "@n8n/ai-workflow-builder": "workspace:*", "@n8n/api-types": "workspace:*", "@n8n/backend-common": "workspace:*", + "@n8n/backend-services": "workspace:*", "@n8n/backend-network": "workspace:*", "@n8n/blob-storage": "workspace:*", "@n8n/chat-hub": "workspace:*", diff --git a/packages/cli/src/__tests__/controller.registry.test.ts b/packages/cli/src/__tests__/controller.registry.test.ts index 544df733ceb..0b944d88300 100644 --- a/packages/cli/src/__tests__/controller.registry.test.ts +++ b/packages/cli/src/__tests__/controller.registry.test.ts @@ -1,3 +1,4 @@ +import { ForbiddenError } from '@n8n/backend-services'; vi.mock('@n8n/backend-common', async () => { return { ...(await vi.importActual('@n8n/backend-common')), @@ -28,7 +29,6 @@ import { z } from 'zod'; import type { AuthService } from '@/auth/auth.service'; import { ControllerRegistry } from '@/controller.registry'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import type { License } from '@/license'; import type { LastActiveAtService } from '@/services/last-active-at.service'; import { RateLimitService } from '@/services/rate-limit.service'; diff --git a/packages/cli/src/__tests__/response-helper.test.ts b/packages/cli/src/__tests__/response-helper.test.ts index dac4f9d66b2..d50bca084f0 100644 --- a/packages/cli/src/__tests__/response-helper.test.ts +++ b/packages/cli/src/__tests__/response-helper.test.ts @@ -1,14 +1,16 @@ +import { + ConflictError, + ForbiddenError, + InternalServerError, + NotFoundError, +} from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import type { Request, Response } from 'express'; import { ErrorReporter } from 'n8n-core'; import { UserError } from 'n8n-workflow'; import { mock } from 'vitest-mock-extended'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { InternalServerError } from '@/errors/response-errors/internal-server.error'; import { LicenseEulaRequiredError } from '@/errors/response-errors/license-eula-required.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { PolicyViolationError } from '@/policy/policy-violation.error'; import { reportError, sendErrorResponse } from '@/response-helper'; diff --git a/packages/cli/src/__tests__/workflow-helpers.test.ts b/packages/cli/src/__tests__/workflow-helpers.test.ts index 18bf1d5222a..130be726666 100644 --- a/packages/cli/src/__tests__/workflow-helpers.test.ts +++ b/packages/cli/src/__tests__/workflow-helpers.test.ts @@ -1,4 +1,5 @@ import { MAX_PINNED_DATA_SIZE, MAX_WORKFLOW_SIZE, MAX_EXPECTED_REQUEST_SIZE } from '@n8n/api-types'; +import { BadRequestError } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import type { CredentialsEntity, IExecutionResponse, Project, Variables } from '@n8n/db'; import { CredentialsRepository } from '@n8n/db'; @@ -32,7 +33,6 @@ import { sanitizeNodeGroupDescriptions, WorkflowStructureBadRequestError, } from '@/workflow-helpers'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { mock } from 'vitest-mock-extended'; describe('workflow-helpers', () => { diff --git a/packages/cli/src/abstract-server.ts b/packages/cli/src/abstract-server.ts index c9cebd322b5..e9671d516c4 100644 --- a/packages/cli/src/abstract-server.ts +++ b/packages/cli/src/abstract-server.ts @@ -1,4 +1,5 @@ import { inDevelopment, inTest, Logger } from '@n8n/backend-common'; +import { ServiceUnavailableError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import { DbConnection } from '@n8n/db'; import { OnShutdown } from '@n8n/decorators'; @@ -12,7 +13,6 @@ import { SLACK_HITL_WEBHOOK_SUFFIX, TELEGRAM_HITL_WEBHOOK_SUFFIX } from 'n8n-cor import config from '@/config'; import { N8N_VERSION, TEMPLATES_DIR } from '@/constants'; -import { ServiceUnavailableError } from '@/errors/response-errors/service-unavailable.error'; import { ExternalHooks } from '@/external-hooks'; import { bodyParser, corsMiddleware, rawBodyReader } from '@/middlewares'; import { sendErrorResponse } from '@/response-helper'; diff --git a/packages/cli/src/auth/auth.service.ts b/packages/cli/src/auth/auth.service.ts index c1983818970..15a1918642e 100644 --- a/packages/cli/src/auth/auth.service.ts +++ b/packages/cli/src/auth/auth.service.ts @@ -1,4 +1,5 @@ import { Logger } from '@n8n/backend-common'; +import { AuthError, ForbiddenError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import { Time } from '@n8n/constants'; import type { AuthenticatedRequest, User } from '@n8n/db'; @@ -12,8 +13,6 @@ import escapeRegExp from 'lodash/escapeRegExp'; import type { StringValue as TimeUnitValue } from 'ms'; import { AUTH_COOKIE_NAME, RESPONSE_ERROR_MESSAGES } from '@/constants'; -import { AuthError } from '@/errors/response-errors/auth.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { License } from '@/license'; import { MfaService } from '@/mfa/mfa.service'; import { JwtService } from '@/services/jwt.service'; diff --git a/packages/cli/src/auth/handlers/__tests__/email.auth-handler.test.ts b/packages/cli/src/auth/handlers/__tests__/email.auth-handler.test.ts index 3f19f3d02e0..64b95eaa50c 100644 --- a/packages/cli/src/auth/handlers/__tests__/email.auth-handler.test.ts +++ b/packages/cli/src/auth/handlers/__tests__/email.auth-handler.test.ts @@ -1,8 +1,8 @@ +import { AuthError } from '@n8n/backend-services'; import type { GlobalConfig } from '@n8n/config'; import type { AuthIdentity, User, UserRepository } from '@n8n/db'; import { mock } from 'vitest-mock-extended'; -import { AuthError } from '@/errors/response-errors/auth.error'; import type { EventService } from '@/events/event.service'; import type { PasswordUtility } from '@/services/password.utility'; diff --git a/packages/cli/src/auth/handlers/email.auth-handler.ts b/packages/cli/src/auth/handlers/email.auth-handler.ts index bd597d44848..f85f31b7fe9 100644 --- a/packages/cli/src/auth/handlers/email.auth-handler.ts +++ b/packages/cli/src/auth/handlers/email.auth-handler.ts @@ -1,10 +1,10 @@ +import { AuthError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import { User, UserRepository } from '@n8n/db'; import type { IPasswordAuthHandler } from '@n8n/decorators'; import { AuthHandler } from '@n8n/decorators'; import { Constructable } from '@n8n/di'; -import { AuthError } from '@/errors/response-errors/auth.error'; import { EventService } from '@/events/event.service'; import { PasswordUtility } from '@/services/password.utility'; diff --git a/packages/cli/src/chat/chat-execution-manager.ts b/packages/cli/src/chat/chat-execution-manager.ts index 7bbf1ffd256..4a0d3355bfd 100644 --- a/packages/cli/src/chat/chat-execution-manager.ts +++ b/packages/cli/src/chat/chat-execution-manager.ts @@ -1,3 +1,4 @@ +import { NotFoundError } from '@n8n/backend-services'; import { ExecutionRepository } from '@n8n/db'; import type { IExecutionResponse, Project } from '@n8n/db'; import { Service } from '@n8n/di'; @@ -17,7 +18,6 @@ import { isHitlToolType, } from 'n8n-workflow'; -import { NotFoundError } from '../errors/response-errors/not-found.error'; import { ExecutionPersistence } from '../executions/execution-persistence'; import * as WorkflowExecuteAdditionalData from '../workflow-execute-additional-data'; import { preserveInputOverride } from '../workflow-helpers'; diff --git a/packages/cli/src/collaboration/collaboration.service.ts b/packages/cli/src/collaboration/collaboration.service.ts index c906d0e5d0e..87703d33bd0 100644 --- a/packages/cli/src/collaboration/collaboration.service.ts +++ b/packages/cli/src/collaboration/collaboration.service.ts @@ -1,5 +1,6 @@ import type { PushPayload } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { ConflictError, LockedError, NotFoundError } from '@n8n/backend-services'; import { UserRepository } from '@n8n/db'; import type { User } from '@n8n/db'; import { Service } from '@n8n/di'; @@ -22,9 +23,6 @@ import type { } from './collaboration.message'; import { CollaborationState, type WriteLock } from '@/collaboration/collaboration.state'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { LockedError } from '@/errors/response-errors/locked.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { AgentRepository } from '@/modules/agents/repositories/agent.repository'; import { Push } from '@/push'; import type { OnPushMessage } from '@/push/types'; diff --git a/packages/cli/src/controller.registry.ts b/packages/cli/src/controller.registry.ts index 1b60b7a96cd..339a9d752f9 100644 --- a/packages/cli/src/controller.registry.ts +++ b/packages/cli/src/controller.registry.ts @@ -1,5 +1,6 @@ import type { ZodClass } from '@n8n/api-types'; import { inProduction } from '@n8n/backend-common'; +import { NotFoundError, UnauthenticatedError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import { type BooleanLicenseFeature } from '@n8n/constants'; import { isAuthenticatedRequest } from '@n8n/db'; @@ -20,13 +21,11 @@ import assert from 'node:assert'; import { AuthService } from '@/auth/auth.service'; import { RESPONSE_ERROR_MESSAGES } from '@/constants'; -import { UnauthenticatedError } from '@/errors/response-errors/unauthenticated.error'; import { License } from '@/license'; import { userHasScopes } from '@/permissions.ee/check-access'; import { reportError, send, sendErrorResponse } from '@/response-helper'; import { AbstractServer } from './abstract-server'; -import { NotFoundError } from './errors/response-errors/not-found.error'; import { CorsService } from './services/cors-service'; import { LastActiveAtService } from './services/last-active-at.service'; import { RateLimitService } from './services/rate-limit.service'; diff --git a/packages/cli/src/controllers/__tests__/ai.controller.test.ts b/packages/cli/src/controllers/__tests__/ai.controller.test.ts index f43762a5a3a..84e23083a39 100644 --- a/packages/cli/src/controllers/__tests__/ai.controller.test.ts +++ b/packages/cli/src/controllers/__tests__/ai.controller.test.ts @@ -5,14 +5,16 @@ import type { AiBuilderChatRequestDto, AiGatewayUsageQueryDto, } from '@n8n/api-types'; +import { + BadRequestError, + InternalServerError, + NotFoundError, + ServiceUnavailableError, +} from '@n8n/backend-services'; import type { AuthenticatedRequest } from '@n8n/db'; import { APIResponseError, NetworkError, type AiAssistantSDK } from '@n8n_io/ai-assistant-sdk'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { InternalServerError } from '@/errors/response-errors/internal-server.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; -import { ServiceUnavailableError } from '@/errors/response-errors/service-unavailable.error'; import type { AiGatewayService } from '@/services/ai-gateway.service'; import type { AiUsageService } from '@/services/ai-usage.service'; import type { WorkflowBuilderService } from '@/services/ai-workflow-builder.service'; diff --git a/packages/cli/src/controllers/__tests__/auth.controller.test.ts b/packages/cli/src/controllers/__tests__/auth.controller.test.ts index 9548d0ba967..83748d6c275 100644 --- a/packages/cli/src/controllers/__tests__/auth.controller.test.ts +++ b/packages/cli/src/controllers/__tests__/auth.controller.test.ts @@ -1,6 +1,7 @@ import type { LoginRequestDto } from '@n8n/api-types'; import { ResolveSignupTokenQueryDto, SSO_LOGIN_REQUIRED_ERROR_CODE } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { AuthError, BadRequestError, ForbiddenError } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import type { AuthenticatedRequest, User } from '@n8n/db'; import { UserRepository } from '@n8n/db'; @@ -14,9 +15,6 @@ import { AuthService } from '@/auth/auth.service'; import type { EmailAuthHandler } from '@/auth/handlers/email.auth-handler'; import config from '@/config'; import { RESPONSE_ERROR_MESSAGES } from '@/constants'; -import { AuthError } from '@/errors/response-errors/auth.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { EventService } from '@/events/event.service'; import { License } from '@/license'; import { MfaService } from '@/mfa/mfa.service'; diff --git a/packages/cli/src/controllers/__tests__/change-email.controller.test.ts b/packages/cli/src/controllers/__tests__/change-email.controller.test.ts index 069068cae3c..2b432228e05 100644 --- a/packages/cli/src/controllers/__tests__/change-email.controller.test.ts +++ b/packages/cli/src/controllers/__tests__/change-email.controller.test.ts @@ -1,4 +1,5 @@ import { Logger } from '@n8n/backend-common'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import type { User } from '@n8n/db'; import { UserRepository } from '@n8n/db'; @@ -8,8 +9,6 @@ import { mock } from 'vitest-mock-extended'; import { AuthService } from '@/auth/auth.service'; import { ChangeEmailController } from '@/controllers/change-email.controller'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { EventService } from '@/events/event.service'; import { ExternalHooks } from '@/external-hooks'; import type { AuthlessRequest } from '@/requests'; diff --git a/packages/cli/src/controllers/__tests__/invitation.controller.test.ts b/packages/cli/src/controllers/__tests__/invitation.controller.test.ts index 9b6aeb7847a..cf761a729c0 100644 --- a/packages/cli/src/controllers/__tests__/invitation.controller.test.ts +++ b/packages/cli/src/controllers/__tests__/invitation.controller.test.ts @@ -1,6 +1,7 @@ import type { AcceptInvitationRequestDto } from '@n8n/api-types'; import { InviteUsersRequestDto } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { BadRequestError } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import { UserRepository, GLOBAL_OWNER_ROLE, GLOBAL_MEMBER_ROLE } from '@n8n/db'; import type { User, PublicUser, AuthenticatedRequest } from '@n8n/db'; @@ -9,7 +10,6 @@ import { v4 as uuidv4 } from 'uuid'; import { mock } from 'vitest-mock-extended'; import { AuthService } from '@/auth/auth.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { EventService } from '@/events/event.service'; import { ExternalHooks } from '@/external-hooks'; import { PostHogClient } from '@/posthog'; diff --git a/packages/cli/src/controllers/__tests__/me.controller.test.ts b/packages/cli/src/controllers/__tests__/me.controller.test.ts index fb4e7f38a32..4b76c362b27 100644 --- a/packages/cli/src/controllers/__tests__/me.controller.test.ts +++ b/packages/cli/src/controllers/__tests__/me.controller.test.ts @@ -1,4 +1,5 @@ import { UserUpdateRequestDto } from '@n8n/api-types'; +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import { GlobalConfig } from '@n8n/config'; import type { AuthenticatedRequest, User, PublicUser, AuthIdentity } from '@n8n/db'; @@ -11,8 +12,6 @@ import { mock, anyObject } from 'vitest-mock-extended'; import { AUTH_COOKIE_NAME } from '@/constants'; import { MeController } from '@/controllers/me.controller'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { InvalidMfaCodeError } from '@/errors/response-errors/invalid-mfa-code.error'; import { EventService } from '@/events/event.service'; import { ExternalHooks } from '@/external-hooks'; diff --git a/packages/cli/src/controllers/__tests__/owner.controller.test.ts b/packages/cli/src/controllers/__tests__/owner.controller.test.ts index e1f3a6f49ea..f8d5031aca9 100644 --- a/packages/cli/src/controllers/__tests__/owner.controller.test.ts +++ b/packages/cli/src/controllers/__tests__/owner.controller.test.ts @@ -1,9 +1,9 @@ import type { DismissBannerRequestDto } from '@n8n/api-types'; +import { BadRequestError } from '@n8n/backend-services'; import { mock } from 'vitest-mock-extended'; import type { AuthService } from '@/auth/auth.service'; import { OwnerController } from '@/controllers/owner.controller'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import type { PostHogClient } from '@/posthog'; import type { BannerService } from '@/services/banner.service'; import type { OwnershipService } from '@/services/ownership.service'; diff --git a/packages/cli/src/controllers/__tests__/role.controller.test.ts b/packages/cli/src/controllers/__tests__/role.controller.test.ts index 86276712a01..c19882d1bf6 100644 --- a/packages/cli/src/controllers/__tests__/role.controller.test.ts +++ b/packages/cli/src/controllers/__tests__/role.controller.test.ts @@ -1,8 +1,8 @@ +import { NotFoundError } from '@n8n/backend-services'; import type { AuthenticatedRequest, Project } from '@n8n/db'; import type { Role } from '@n8n/permissions'; import { mock } from 'vitest-mock-extended'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { EventService } from '@/events/event.service'; import type { ProjectService } from '@/services/project.service.ee'; import type { RoleService } from '@/services/role.service'; diff --git a/packages/cli/src/controllers/__tests__/security-settings.controller.test.ts b/packages/cli/src/controllers/__tests__/security-settings.controller.test.ts index fdafa150bb3..3431849aae5 100644 --- a/packages/cli/src/controllers/__tests__/security-settings.controller.test.ts +++ b/packages/cli/src/controllers/__tests__/security-settings.controller.test.ts @@ -1,10 +1,10 @@ import type { UpdateSecuritySettingsDto } from '@n8n/api-types'; import type { LicenseState } from '@n8n/backend-common'; +import { ForbiddenError } from '@n8n/backend-services'; import type { InstanceSettingsLoaderConfig } from '@n8n/config'; import type { AuthenticatedRequest } from '@n8n/db'; import { mock } from 'vitest-mock-extended'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import type { SecuritySettingsService } from '@/services/security-settings.service'; import type { WorkflowReviewPolicyService } from '@/services/workflow-review-policy.service'; diff --git a/packages/cli/src/controllers/__tests__/translation.controller.test.ts b/packages/cli/src/controllers/__tests__/translation.controller.test.ts index a5ba1b2165b..23c56ae34bc 100644 --- a/packages/cli/src/controllers/__tests__/translation.controller.test.ts +++ b/packages/cli/src/controllers/__tests__/translation.controller.test.ts @@ -1,10 +1,10 @@ +import { BadRequestError } from '@n8n/backend-services'; import type { GlobalConfig } from '@n8n/config'; import { mock } from 'vitest-mock-extended'; import type { TranslationRequest } from '@/controllers/translation.controller'; import { TranslationController } from '@/controllers/translation.controller'; import type { CredentialTypes } from '@/credential-types'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; // The controller loads the translation file via `require()`. // Vitest cannot mock a path that doesn't resolve to a real module, so write a diff --git a/packages/cli/src/controllers/__tests__/users.controller.test.ts b/packages/cli/src/controllers/__tests__/users.controller.test.ts index d3d62bd057a..d18699f24ce 100644 --- a/packages/cli/src/controllers/__tests__/users.controller.test.ts +++ b/packages/cli/src/controllers/__tests__/users.controller.test.ts @@ -1,8 +1,8 @@ +import { NotFoundError } from '@n8n/backend-services'; import type { AuthenticatedRequest, User, UserRepository } from '@n8n/db'; import type { Response } from 'express'; import { mock } from 'vitest-mock-extended'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { UserRequest } from '@/requests'; import type { JwtService } from '@/services/jwt.service'; import type { UrlService } from '@/services/url.service'; diff --git a/packages/cli/src/controllers/ai.controller.ts b/packages/cli/src/controllers/ai.controller.ts index 5d7158a83ab..3bd91b63545 100644 --- a/packages/cli/src/controllers/ai.controller.ts +++ b/packages/cli/src/controllers/ai.controller.ts @@ -15,6 +15,14 @@ import { AiClearSessionRequestDto, AiGatewayUsageQueryDto, } from '@n8n/api-types'; +import { + BadRequestError, + ContentTooLargeError, + InternalServerError, + NotFoundError, + ServiceUnavailableError, + TooManyRequestsError, +} from '@n8n/backend-services'; import { AuthenticatedRequest } from '@n8n/db'; import { Body, Get, Licensed, Post, Query, RestController, GlobalScope } from '@n8n/decorators'; import { type AiAssistantSDK, APIResponseError, NetworkError } from '@n8n_io/ai-assistant-sdk'; @@ -23,12 +31,6 @@ import { strict as assert } from 'node:assert'; import { WritableStream } from 'node:stream/web'; import { STREAM_SEPARATOR } from '@/constants'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ContentTooLargeError } from '@/errors/response-errors/content-too-large.error'; -import { InternalServerError } from '@/errors/response-errors/internal-server.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; -import { ServiceUnavailableError } from '@/errors/response-errors/service-unavailable.error'; -import { TooManyRequestsError } from '@/errors/response-errors/too-many-requests.error'; import { AiGatewayService } from '@/services/ai-gateway.service'; import { AiUsageService } from '@/services/ai-usage.service'; import { WorkflowBuilderService } from '@/services/ai-workflow-builder.service'; diff --git a/packages/cli/src/controllers/api-keys.controller.ts b/packages/cli/src/controllers/api-keys.controller.ts index f788cf96fd2..178d6a49d25 100644 --- a/packages/cli/src/controllers/api-keys.controller.ts +++ b/packages/cli/src/controllers/api-keys.controller.ts @@ -3,6 +3,7 @@ import { ListApiKeysQueryDto, UpdateApiKeyRequestDto, } from '@n8n/api-types'; +import { BadRequestError } from '@n8n/backend-services'; import { AuthenticatedRequest } from '@n8n/db'; import { Body, @@ -18,7 +19,6 @@ import { import { getApiKeyScopesForRole } from '@n8n/permissions'; import type { RequestHandler } from 'express'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { EventService } from '@/events/event.service'; import { isApiKeyAuthEnabled } from '@/public-api'; import { PublicApiKeyService } from '@/services/public-api-key.service'; diff --git a/packages/cli/src/controllers/auth.controller.ts b/packages/cli/src/controllers/auth.controller.ts index 0d7208b0372..4c7d8c3817c 100644 --- a/packages/cli/src/controllers/auth.controller.ts +++ b/packages/cli/src/controllers/auth.controller.ts @@ -4,6 +4,12 @@ import { SSO_LOGIN_REQUIRED_ERROR_CODE, } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { + AuthError, + BadRequestError, + ForbiddenError, + InternalServerError, +} from '@n8n/backend-services'; import { Time } from '@n8n/constants'; import type { User, PublicUser, AuthProviderType } from '@n8n/db'; import { UserRepository, AuthenticatedRequest, GLOBAL_OWNER_ROLE } from '@n8n/db'; @@ -21,10 +27,6 @@ import { Response } from 'express'; import { AuthHandlerRegistry } from '@/auth/auth-handler.registry'; import { AuthService } from '@/auth/auth.service'; import { RESPONSE_ERROR_MESSAGES } from '@/constants'; -import { AuthError } from '@/errors/response-errors/auth.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { InternalServerError } from '@/errors/response-errors/internal-server.error'; import { EventService } from '@/events/event.service'; import { License } from '@/license'; import { MfaService } from '@/mfa/mfa.service'; diff --git a/packages/cli/src/controllers/binary-data.controller.ts b/packages/cli/src/controllers/binary-data.controller.ts index d21f3b96277..0312500e1b4 100644 --- a/packages/cli/src/controllers/binary-data.controller.ts +++ b/packages/cli/src/controllers/binary-data.controller.ts @@ -1,4 +1,5 @@ import { BinaryDataQueryDto, BinaryDataSignedQueryDto, ViewableMimeTypes } from '@n8n/api-types'; +import { BadRequestError } from '@n8n/backend-services'; import type { AuthenticatedRequest } from '@n8n/db'; import { Get, Query, RestController } from '@n8n/decorators'; import { Request, Response } from 'express'; @@ -11,7 +12,6 @@ import { } from 'n8n-core'; import { BinaryDataAccessService } from '@/binary-data/binary-data-access.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; @RestController('/binary-data') export class BinaryDataController { diff --git a/packages/cli/src/controllers/change-email.controller.ts b/packages/cli/src/controllers/change-email.controller.ts index 277ffe0e0d2..ec9648ada48 100644 --- a/packages/cli/src/controllers/change-email.controller.ts +++ b/packages/cli/src/controllers/change-email.controller.ts @@ -5,6 +5,7 @@ import { type ChangeEmailResponse, } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { BadRequestError, InternalServerError, NotFoundError } from '@n8n/backend-services'; import { AuthenticatedRequest, UserRepository } from '@n8n/db'; import { Body, @@ -17,9 +18,6 @@ import { import { Response } from 'express'; import { AuthService } from '@/auth/auth.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { InternalServerError } from '@/errors/response-errors/internal-server.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { EventService } from '@/events/event.service'; import { ExternalHooks } from '@/external-hooks'; import { AuthlessRequest } from '@/requests'; diff --git a/packages/cli/src/controllers/folder.controller.ts b/packages/cli/src/controllers/folder.controller.ts index 18ae5e75365..9cc0fa4d1f9 100644 --- a/packages/cli/src/controllers/folder.controller.ts +++ b/packages/cli/src/controllers/folder.controller.ts @@ -5,6 +5,7 @@ import { TransferFolderBodyDto, UpdateFolderDto, } from '@n8n/api-types'; +import { BadRequestError, InternalServerError, NotFoundError } from '@n8n/backend-services'; import { AuthenticatedRequest } from '@n8n/db'; import { Post, @@ -24,9 +25,6 @@ import { NextFunction, Response } from 'express'; import { UserError } from 'n8n-workflow'; import { FolderNotFoundError } from '@/errors/folder-not-found.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { InternalServerError } from '@/errors/response-errors/internal-server.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { FolderService } from '@/services/folder.service'; import { ProjectService } from '@/services/project.service.ee'; import { EnterpriseWorkflowService } from '@/workflows/workflow.service.ee'; diff --git a/packages/cli/src/controllers/invitation.controller.ts b/packages/cli/src/controllers/invitation.controller.ts index 88c27fa269a..1bf121a380d 100644 --- a/packages/cli/src/controllers/invitation.controller.ts +++ b/packages/cli/src/controllers/invitation.controller.ts @@ -1,5 +1,6 @@ import { AcceptInvitationRequestDto, InviteUsersRequestDto } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { BadRequestError } from '@n8n/backend-services'; import { Time } from '@n8n/constants'; import type { User } from '@n8n/db'; import { UserRepository, AuthenticatedRequest } from '@n8n/db'; @@ -7,7 +8,6 @@ import { Post, GlobalScope, RestController, Body } from '@n8n/decorators'; import { Response } from 'express'; import { AuthService } from '@/auth/auth.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { EventService } from '@/events/event.service'; import { ExternalHooks } from '@/external-hooks'; import { PostHogClient } from '@/posthog'; diff --git a/packages/cli/src/controllers/me.controller.ts b/packages/cli/src/controllers/me.controller.ts index 46cd1bc5c83..577d0c81101 100644 --- a/packages/cli/src/controllers/me.controller.ts +++ b/packages/cli/src/controllers/me.controller.ts @@ -5,6 +5,7 @@ import { UserUpdateRequestDto, } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import type { User, PublicUser, AuthIdentity } from '@n8n/db'; import { UserRepository, AuthenticatedRequest } from '@n8n/db'; @@ -13,8 +14,6 @@ import { plainToInstance } from 'class-transformer'; import { Response } from 'express'; import { AuthService } from '@/auth/auth.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { InvalidMfaCodeError } from '@/errors/response-errors/invalid-mfa-code.error'; import { EventService } from '@/events/event.service'; import { ExternalHooks } from '@/external-hooks'; diff --git a/packages/cli/src/controllers/mfa.controller.ts b/packages/cli/src/controllers/mfa.controller.ts index b58e57d7fe3..0857e1aebc4 100644 --- a/packages/cli/src/controllers/mfa.controller.ts +++ b/packages/cli/src/controllers/mfa.controller.ts @@ -1,3 +1,4 @@ +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import { InstanceSettingsLoaderConfig } from '@n8n/config'; import { AuthenticatedRequest, UserRepository } from '@n8n/db'; import { @@ -10,8 +11,6 @@ import { import { Response } from 'express'; import { AuthService } from '@/auth/auth.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { EventService } from '@/events/event.service'; import { ExternalHooks } from '@/external-hooks'; import { MfaService } from '@/mfa/mfa.service'; diff --git a/packages/cli/src/controllers/password-reset.controller.ts b/packages/cli/src/controllers/password-reset.controller.ts index 67cf5d3576e..cf43e438c6c 100644 --- a/packages/cli/src/controllers/password-reset.controller.ts +++ b/packages/cli/src/controllers/password-reset.controller.ts @@ -4,6 +4,13 @@ import { ResolvePasswordTokenQueryDto, } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { + BadRequestError, + ForbiddenError, + InternalServerError, + NotFoundError, + UnprocessableRequestError, +} from '@n8n/backend-services'; import { Time } from '@n8n/constants'; import { GLOBAL_OWNER_ROLE, UserRepository } from '@n8n/db'; import { @@ -20,11 +27,6 @@ import { ErrorReporter } from 'n8n-core'; import { AuthService } from '@/auth/auth.service'; import { RESPONSE_ERROR_MESSAGES } from '@/constants'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { InternalServerError } from '@/errors/response-errors/internal-server.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; -import { UnprocessableRequestError } from '@/errors/response-errors/unprocessable.error'; import { EventService } from '@/events/event.service'; import { ExternalHooks } from '@/external-hooks'; import { License } from '@/license'; diff --git a/packages/cli/src/controllers/project.controller.ts b/packages/cli/src/controllers/project.controller.ts index 46ee797a391..b2a18f3d3b6 100644 --- a/packages/cli/src/controllers/project.controller.ts +++ b/packages/cli/src/controllers/project.controller.ts @@ -6,6 +6,7 @@ import { ChangeUserRoleInProject, ListProjectsQueryDto, } from '@n8n/api-types'; +import { BadRequestError, ForbiddenError, NotFoundError } from '@n8n/backend-services'; import { AuthenticatedRequest } from '@n8n/db'; import { Get, @@ -23,9 +24,6 @@ import { import { combineScopes, getAuthPrincipalScopes } from '@n8n/permissions'; import { Response } from 'express'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { ProvisioningService } from '@/modules/provisioning.ee/provisioning.service.ee'; import type { ProjectRequest } from '@/requests'; import { diff --git a/packages/cli/src/controllers/role.controller.ts b/packages/cli/src/controllers/role.controller.ts index 79b5f373baa..c9565c040dc 100644 --- a/packages/cli/src/controllers/role.controller.ts +++ b/packages/cli/src/controllers/role.controller.ts @@ -13,6 +13,7 @@ import type { RoleMembersResponse, RoleProjectMembersResponse, } from '@n8n/api-types'; +import { NotFoundError } from '@n8n/backend-services'; import { LICENSE_FEATURES } from '@n8n/constants'; import { AuthenticatedRequest } from '@n8n/db'; import { @@ -29,7 +30,6 @@ import { } from '@n8n/decorators'; import { Role as RoleDTO } from '@n8n/permissions'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { EventService } from '@/events/event.service'; import { ProjectService } from '@/services/project.service.ee'; import { assertCanManageRoleType, canReassignUsers } from '@/services/role-authorization'; diff --git a/packages/cli/src/controllers/security-settings.controller.ts b/packages/cli/src/controllers/security-settings.controller.ts index ef8ad841d08..57e1ccd99db 100644 --- a/packages/cli/src/controllers/security-settings.controller.ts +++ b/packages/cli/src/controllers/security-settings.controller.ts @@ -1,11 +1,11 @@ import { UpdateSecuritySettingsDto } from '@n8n/api-types'; import { LicenseState } from '@n8n/backend-common'; +import { ForbiddenError } from '@n8n/backend-services'; import { InstanceSettingsLoaderConfig } from '@n8n/config'; import { type AuthenticatedRequest } from '@n8n/db'; import { Body, Get, GlobalScope, Licensed, Post, RestController } from '@n8n/decorators'; import type { Response } from 'express'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { SecuritySettingsService } from '@/services/security-settings.service'; import { WorkflowReviewPolicyService } from '@/services/workflow-review-policy.service'; diff --git a/packages/cli/src/controllers/translation.controller.ts b/packages/cli/src/controllers/translation.controller.ts index 38d7d3688f2..c6e72663355 100644 --- a/packages/cli/src/controllers/translation.controller.ts +++ b/packages/cli/src/controllers/translation.controller.ts @@ -1,4 +1,5 @@ import { safeJoinPath } from '@n8n/backend-common'; +import { BadRequestError, InternalServerError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import { Get, RestController } from '@n8n/decorators'; import type { Request } from 'express'; @@ -6,8 +7,6 @@ import { access } from 'fs/promises'; import { NODES_BASE_DIR } from '@/constants'; import { CredentialTypes } from '@/credential-types'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { InternalServerError } from '@/errors/response-errors/internal-server.error'; export const CREDENTIAL_TRANSLATIONS_DIR = 'n8n-nodes-base/dist/credentials/translations'; export const NODE_HEADERS_PATH = safeJoinPath(NODES_BASE_DIR, 'dist/nodes/headers'); diff --git a/packages/cli/src/controllers/user-settings.controller.ts b/packages/cli/src/controllers/user-settings.controller.ts index 7b1505fe0b2..a441662df55 100644 --- a/packages/cli/src/controllers/user-settings.controller.ts +++ b/packages/cli/src/controllers/user-settings.controller.ts @@ -1,7 +1,7 @@ +import { BadRequestError } from '@n8n/backend-services'; import { Patch, RestController } from '@n8n/decorators'; import type { NpsSurveyState } from 'n8n-workflow'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { NpsSurveyRequest } from '@/requests'; import { UserService } from '@/services/user.service'; diff --git a/packages/cli/src/controllers/users.controller.ts b/packages/cli/src/controllers/users.controller.ts index 7d851240a4b..b30e3478d4d 100644 --- a/packages/cli/src/controllers/users.controller.ts +++ b/packages/cli/src/controllers/users.controller.ts @@ -6,6 +6,7 @@ import { UsersListFilterDto, usersListSchema, } from '@n8n/api-types'; +import { ForbiddenError, NotFoundError } from '@n8n/backend-services'; import type { PublicUser } from '@n8n/db'; import { User, @@ -30,8 +31,6 @@ import { hasGlobalScope } from '@n8n/permissions'; import { Response } from 'express'; import { AuthService } from '@/auth/auth.service'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { UserRequest } from '@/requests'; import { JwtService } from '@/services/jwt.service'; import { UrlService } from '@/services/url.service'; diff --git a/packages/cli/src/controllers/workflow-statistics.controller.ts b/packages/cli/src/controllers/workflow-statistics.controller.ts index fb1341de7e1..5bb86aeccda 100644 --- a/packages/cli/src/controllers/workflow-statistics.controller.ts +++ b/packages/cli/src/controllers/workflow-statistics.controller.ts @@ -1,10 +1,10 @@ import { Logger } from '@n8n/backend-common'; +import { NotFoundError } from '@n8n/backend-services'; import type { WorkflowStatistics } from '@n8n/db'; import { StatisticsNames, WorkflowStatisticsRepository } from '@n8n/db'; import { Get, Middleware, RestController } from '@n8n/decorators'; import { Response, NextFunction } from 'express'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { IWorkflowStatisticsDataLoaded } from '@/interfaces'; import { WorkflowFinderService } from '@/workflows/workflow-finder.service'; diff --git a/packages/cli/src/credentials/__tests__/credentials.controller.test.ts b/packages/cli/src/credentials/__tests__/credentials.controller.test.ts index ea59699dea3..7f917ecf605 100644 --- a/packages/cli/src/credentials/__tests__/credentials.controller.test.ts +++ b/packages/cli/src/credentials/__tests__/credentials.controller.test.ts @@ -1,3 +1,4 @@ +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import type { Response } from 'express'; import { CredentialDescriptionsService } from '@/credentials/credential-descriptions.service'; import type { PostHogClient } from '@/posthog'; @@ -20,8 +21,6 @@ import { GLOBAL_OWNER_ROLE, GLOBAL_MEMBER_ROLE } from '@n8n/db'; import type { Scope } from '@n8n/permissions'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import * as checkAccess from '@/permissions.ee/check-access'; import type { CredentialRequest } from '@/requests'; diff --git a/packages/cli/src/credentials/__tests__/credentials.service.test.ts b/packages/cli/src/credentials/__tests__/credentials.service.test.ts index 5dac73ba391..6b06264dcc0 100644 --- a/packages/cli/src/credentials/__tests__/credentials.service.test.ts +++ b/packages/cli/src/credentials/__tests__/credentials.service.test.ts @@ -2,6 +2,7 @@ import { CredentialDescriptionsService } from '@/credentials/credential-descript import type { PostHogClient } from '@/posthog'; import { CREDENTIAL_DESCRIPTION_MAX_LENGTH } from '@n8n/api-types'; import type { Logger } from '@n8n/backend-common'; +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import type { CredentialsRepository, ICredentialsDb, @@ -51,8 +52,6 @@ import type { CredentialsHelper } from '@/credentials-helper'; import type { PolicyEnforcementService } from '@/policy/policy-enforcement.service'; import { PolicyViolationError } from '@/policy/policy-violation.error'; import { CredentialNotFoundError } from '@/errors/credential-not-found.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import type { EventService } from '@/events/event.service'; import type { ExternalHooks } from '@/external-hooks'; import type { ExternalSecretsConfig } from '@/modules/external-secrets.ee/external-secrets.config'; diff --git a/packages/cli/src/credentials/credentials.controller.ts b/packages/cli/src/credentials/credentials.controller.ts index 191d3eb9db6..8fd651136ae 100644 --- a/packages/cli/src/credentials/credentials.controller.ts +++ b/packages/cli/src/credentials/credentials.controller.ts @@ -6,6 +6,7 @@ import { TestCredentialRequestDto, } from '@n8n/api-types'; import { LicenseState, Logger } from '@n8n/backend-common'; +import { BadRequestError, ForbiddenError, NotFoundError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import { SharedCredentials, @@ -42,9 +43,6 @@ import { getExternalSecretExpressionPaths } from './external-secrets.utils'; import { CredentialsOverwrites } from '@/credentials-overwrites'; import { CredentialNotFoundError } from '@/errors/credential-not-found.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { EventService } from '@/events/event.service'; import { listQueryMiddleware } from '@/middlewares'; import { userHasScopes } from '@/permissions.ee/check-access'; diff --git a/packages/cli/src/credentials/credentials.service.ee.ts b/packages/cli/src/credentials/credentials.service.ee.ts index eda4083e7c9..8e9b241b020 100644 --- a/packages/cli/src/credentials/credentials.service.ee.ts +++ b/packages/cli/src/credentials/credentials.service.ee.ts @@ -1,5 +1,6 @@ import type { CredentialConnectionStatus } from '@n8n/api-types'; import { LicenseState } from '@n8n/backend-common'; +import { NotFoundError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import { CredentialsEntity, @@ -12,7 +13,6 @@ import { hasGlobalScope } from '@n8n/permissions'; import { In, type EntityManager } from '@n8n/typeorm'; import type { ICredentialDataDecryptedObject } from 'n8n-workflow'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { TransferCredentialError } from '@/errors/response-errors/transfer-credential.error'; import { ExternalSecretsConfig } from '@/modules/external-secrets.ee/external-secrets.config'; import { SecretsProviderAccessCheckService } from '@/modules/external-secrets.ee/secret-provider-access-check.service.ee'; diff --git a/packages/cli/src/credentials/credentials.service.ts b/packages/cli/src/credentials/credentials.service.ts index 28298f9cf91..e4fd938a9c4 100644 --- a/packages/cli/src/credentials/credentials.service.ts +++ b/packages/cli/src/credentials/credentials.service.ts @@ -1,5 +1,11 @@ import type { CreateCredentialDto, CredentialConnectionStatus } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { + BadRequestError, + ConflictError, + ForbiddenError, + NotFoundError, +} from '@n8n/backend-services'; import { Time } from '@n8n/constants'; import { Project, @@ -60,10 +66,6 @@ import { isCredSharingEnabled } from '@/constants/credential-sharing'; import { CredentialTypes } from '@/credential-types'; import { createCredentialsFromCredentialsEntity, CredentialsHelper } from '@/credentials-helper'; import { CredentialNotFoundError } from '@/errors/credential-not-found.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { EventService } from '@/events/event.service'; import { ExternalHooks } from '@/external-hooks'; import { validateEntity } from '@/generic-helpers'; diff --git a/packages/cli/src/credentials/instance-credential-broker.ts b/packages/cli/src/credentials/instance-credential-broker.ts index cb4c03a6105..1fd354f8173 100644 --- a/packages/cli/src/credentials/instance-credential-broker.ts +++ b/packages/cli/src/credentials/instance-credential-broker.ts @@ -1,4 +1,5 @@ import { Logger } from '@n8n/backend-common'; +import { UnprocessableRequestError } from '@n8n/backend-services'; import { CredentialsEntity, InstanceCredentialAssignmentRepository, @@ -7,8 +8,6 @@ import { import { Service } from '@n8n/di'; import type { ICredentialDataDecryptedObject } from 'n8n-workflow'; -import { UnprocessableRequestError } from '@/errors/response-errors/unprocessable.error'; - import { CredentialsService } from './credentials.service'; import { InstanceCredentialUseRegistry, diff --git a/packages/cli/src/credentials/validation.ts b/packages/cli/src/credentials/validation.ts index 2c862801f29..224eb657be8 100644 --- a/packages/cli/src/credentials/validation.ts +++ b/packages/cli/src/credentials/validation.ts @@ -1,9 +1,9 @@ import { credentialDescriptionSchema } from '@n8n/api-types'; +import { BadRequestError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import get from 'lodash/get'; import { type ICredentialDataDecryptedObject } from 'n8n-workflow'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import type { SecretsProviderAccessCheckService } from '@/modules/external-secrets.ee/secret-provider-access-check.service.ee'; import { userHasScopes } from '@/permissions.ee/check-access'; diff --git a/packages/cli/src/encryption/__tests__/key-manager.service.test.ts b/packages/cli/src/encryption/__tests__/key-manager.service.test.ts index 046815a5949..cee3d414dfc 100644 --- a/packages/cli/src/encryption/__tests__/key-manager.service.test.ts +++ b/packages/cli/src/encryption/__tests__/key-manager.service.test.ts @@ -1,4 +1,5 @@ import { Logger } from '@n8n/backend-common'; +import { NotFoundError } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import type { DeploymentKey } from '@n8n/db'; import { DeploymentKeyRepository } from '@n8n/db'; @@ -7,7 +8,6 @@ import { Cipher, type EncryptionKeyProxy, InstanceSettings } from 'n8n-core'; import { randomBytes } from 'node:crypto'; import { mock } from 'vitest-mock-extended'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { KeyManagerService } from '@/encryption/key-manager.service'; const makeKey = (overrides: Partial = {}): DeploymentKey => diff --git a/packages/cli/src/encryption/key-manager.service.ts b/packages/cli/src/encryption/key-manager.service.ts index f46f51ff3b2..61033d06f3b 100644 --- a/packages/cli/src/encryption/key-manager.service.ts +++ b/packages/cli/src/encryption/key-manager.service.ts @@ -1,5 +1,6 @@ import type { ListEncryptionKeysQueryDto } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { NotFoundError } from '@n8n/backend-services'; import { DeploymentKeyRepository, type DeploymentKey, @@ -16,8 +17,6 @@ import { } from 'n8n-core'; import { randomBytes } from 'node:crypto'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import { isKeyRotationEnabled } from './key-rotation-flag'; /** Raw DEK format: 64 hex chars stored directly as key material (n8n 2.18.x). */ diff --git a/packages/cli/src/environments.ee/variables/variables.controller.ee.ts b/packages/cli/src/environments.ee/variables/variables.controller.ee.ts index 5d0701bfe52..34b6dd27d0b 100644 --- a/packages/cli/src/environments.ee/variables/variables.controller.ee.ts +++ b/packages/cli/src/environments.ee/variables/variables.controller.ee.ts @@ -3,12 +3,11 @@ import { UpdateVariableRequestDto, VariableListRequestDto, } from '@n8n/api-types'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import { AuthenticatedRequest } from '@n8n/db'; import { Body, Delete, Get, Licensed, Patch, Post, Query, RestController } from '@n8n/decorators'; import type { Response } from 'express'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { VariableCountLimitReachedError } from '@/errors/variable-count-limit-reached.error'; import { VariableValidationError } from '@/errors/variable-validation.error'; diff --git a/packages/cli/src/environments.ee/variables/variables.service.ee.ts b/packages/cli/src/environments.ee/variables/variables.service.ee.ts index ca6b7493470..dc7df719065 100644 --- a/packages/cli/src/environments.ee/variables/variables.service.ee.ts +++ b/packages/cli/src/environments.ee/variables/variables.service.ee.ts @@ -4,6 +4,7 @@ import { NEW_VARIABLE_KEY_REGEX, } from '@n8n/api-types'; import { LicenseState } from '@n8n/backend-common'; +import { ForbiddenError, NotFoundError } from '@n8n/backend-services'; import { UNLIMITED_LICENSE_QUOTA } from '@n8n/constants'; import type { User, Variables } from '@n8n/db'; import { generateNanoId, VariablesRepository } from '@n8n/db'; @@ -11,8 +12,6 @@ import { Service } from '@n8n/di'; import { hasGlobalScope, Scope } from '@n8n/permissions'; import { FeatureNotLicensedError } from '@/errors/feature-not-licensed.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { VariableCountLimitReachedError } from '@/errors/variable-count-limit-reached.error'; import { VariableValidationError } from '@/errors/variable-validation.error'; import { EventService } from '@/events/event.service'; diff --git a/packages/cli/src/errors/__tests__/http-error-classifier.test.ts b/packages/cli/src/errors/__tests__/http-error-classifier.test.ts index 69c8bb0c91c..9bf6ef127a6 100644 --- a/packages/cli/src/errors/__tests__/http-error-classifier.test.ts +++ b/packages/cli/src/errors/__tests__/http-error-classifier.test.ts @@ -1,9 +1,8 @@ +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import { BadRequest, Unauthorized } from 'express-openapi-validator/dist/framework/types'; import { OperationalError, UnexpectedError, UserError } from 'n8n-workflow'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { LicenseEulaRequiredError } from '@/errors/response-errors/license-eula-required.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { classifyHttpError, HttpErrorKind, isResponseError } from '../http-error-classifier'; diff --git a/packages/cli/src/errors/__tests__/http-error-serializers.test.ts b/packages/cli/src/errors/__tests__/http-error-serializers.test.ts index d925d5f9646..79554437efd 100644 --- a/packages/cli/src/errors/__tests__/http-error-serializers.test.ts +++ b/packages/cli/src/errors/__tests__/http-error-serializers.test.ts @@ -1,4 +1,5 @@ import type { SourceControlledFile } from '@n8n/api-types'; +import { ConflictError, NotFoundError, WorkflowPublishBlockedError } from '@n8n/backend-services'; import { UnexpectedError, UserError } from 'n8n-workflow'; import { classifyHttpError } from '@/errors/http-error-classifier'; @@ -6,10 +7,7 @@ import { serializeInternalRestError, serializePublicApiError, } from '@/errors/http-error-serializers'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; import { LicenseEulaRequiredError } from '@/errors/response-errors/license-eula-required.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; -import { WorkflowPublishBlockedError } from '@/errors/response-errors/workflow-publish-blocked.error'; import { toImportBlockedError } from '@/modules/n8n-packages/engine/import-blocked.error'; import { PolicyViolationError } from '@/policy/policy-violation.error'; diff --git a/packages/cli/src/errors/http-error-classifier.ts b/packages/cli/src/errors/http-error-classifier.ts index d80dff32da2..2f640c19213 100644 --- a/packages/cli/src/errors/http-error-classifier.ts +++ b/packages/cli/src/errors/http-error-classifier.ts @@ -1,8 +1,7 @@ +import { ResponseError } from '@n8n/backend-services'; import { HttpError, Unauthorized } from 'express-openapi-validator/dist/framework/types'; import { UnexpectedError, UserError } from 'n8n-workflow'; -import { ResponseError } from '@/errors/response-errors/abstract/response.error'; - export const enum HttpErrorKind { responseError = 'responseError', userError = 'userError', diff --git a/packages/cli/src/errors/response-errors/ai-preference-scope-full.error.ts b/packages/cli/src/errors/response-errors/ai-preference-scope-full.error.ts index f834b411718..47a1d53e57c 100644 --- a/packages/cli/src/errors/response-errors/ai-preference-scope-full.error.ts +++ b/packages/cli/src/errors/response-errors/ai-preference-scope-full.error.ts @@ -1,6 +1,5 @@ import type { AiPreferenceScope } from '@n8n/api-types'; - -import { BadRequestError } from './bad-request.error'; +import { BadRequestError } from '@n8n/backend-services'; /** The per-scope cap refused a preference write. `meta` stays out of the REST body. */ export class AiPreferenceScopeFullError extends BadRequestError { diff --git a/packages/cli/src/errors/response-errors/incompatible-nodes-api-version.error.ts b/packages/cli/src/errors/response-errors/incompatible-nodes-api-version.error.ts index 0322ffd772d..3ee9b2ce852 100644 --- a/packages/cli/src/errors/response-errors/incompatible-nodes-api-version.error.ts +++ b/packages/cli/src/errors/response-errors/incompatible-nodes-api-version.error.ts @@ -1,4 +1,4 @@ -import { ResponseError } from './abstract/response.error'; +import { ResponseError } from '@n8n/backend-services'; /** * A community package requires a node-authoring API version this runtime does diff --git a/packages/cli/src/errors/response-errors/invalid-mfa-code.error.ts b/packages/cli/src/errors/response-errors/invalid-mfa-code.error.ts index cc00976a84e..1e398d8a4a1 100644 --- a/packages/cli/src/errors/response-errors/invalid-mfa-code.error.ts +++ b/packages/cli/src/errors/response-errors/invalid-mfa-code.error.ts @@ -1,4 +1,4 @@ -import { ForbiddenError } from './forbidden.error'; +import { ForbiddenError } from '@n8n/backend-services'; export class InvalidMfaCodeError extends ForbiddenError { constructor(hint?: string) { diff --git a/packages/cli/src/errors/response-errors/invalid-mfa-recovery-code-error.ts b/packages/cli/src/errors/response-errors/invalid-mfa-recovery-code-error.ts index baa0ead8701..58da76cffb0 100644 --- a/packages/cli/src/errors/response-errors/invalid-mfa-recovery-code-error.ts +++ b/packages/cli/src/errors/response-errors/invalid-mfa-recovery-code-error.ts @@ -1,4 +1,4 @@ -import { ForbiddenError } from './forbidden.error'; +import { ForbiddenError } from '@n8n/backend-services'; export class InvalidMfaRecoveryCodeError extends ForbiddenError { constructor(hint?: string) { diff --git a/packages/cli/src/errors/response-errors/license-eula-required.error.ts b/packages/cli/src/errors/response-errors/license-eula-required.error.ts index 64222349ee0..6e62280cd76 100644 --- a/packages/cli/src/errors/response-errors/license-eula-required.error.ts +++ b/packages/cli/src/errors/response-errors/license-eula-required.error.ts @@ -1,4 +1,4 @@ -import { ResponseError } from './abstract/response.error'; +import { ResponseError } from '@n8n/backend-services'; /** * Error thrown when license activation requires EULA acceptance. diff --git a/packages/cli/src/errors/response-errors/transfer-credential.error.ts b/packages/cli/src/errors/response-errors/transfer-credential.error.ts index f10de3104ae..724acb21549 100644 --- a/packages/cli/src/errors/response-errors/transfer-credential.error.ts +++ b/packages/cli/src/errors/response-errors/transfer-credential.error.ts @@ -1,4 +1,4 @@ -import { ResponseError } from './abstract/response.error'; +import { ResponseError } from '@n8n/backend-services'; export class TransferCredentialError extends ResponseError { constructor(message: string) { diff --git a/packages/cli/src/errors/response-errors/transfer-workflow.error.ts b/packages/cli/src/errors/response-errors/transfer-workflow.error.ts index c22c0730890..b54c3529ebf 100644 --- a/packages/cli/src/errors/response-errors/transfer-workflow.error.ts +++ b/packages/cli/src/errors/response-errors/transfer-workflow.error.ts @@ -1,4 +1,4 @@ -import { ResponseError } from './abstract/response.error'; +import { ResponseError } from '@n8n/backend-services'; export class TransferWorkflowError extends ResponseError { constructor(message: string) { diff --git a/packages/cli/src/errors/response-errors/webhook-not-found.error.ts b/packages/cli/src/errors/response-errors/webhook-not-found.error.ts index 94f48f288c7..d5870420827 100644 --- a/packages/cli/src/errors/response-errors/webhook-not-found.error.ts +++ b/packages/cli/src/errors/response-errors/webhook-not-found.error.ts @@ -1,4 +1,4 @@ -import { NotFoundError } from './not-found.error'; +import { NotFoundError } from '@n8n/backend-services'; export const webhookNotFoundErrorMessage = ({ path, diff --git a/packages/cli/src/errors/response-errors/workflow-activation-bad-request.error.ts b/packages/cli/src/errors/response-errors/workflow-activation-bad-request.error.ts index efb72525179..6b49596faf3 100644 --- a/packages/cli/src/errors/response-errors/workflow-activation-bad-request.error.ts +++ b/packages/cli/src/errors/response-errors/workflow-activation-bad-request.error.ts @@ -1,4 +1,4 @@ -import { BadRequestError } from './bad-request.error'; +import { BadRequestError } from '@n8n/backend-services'; /** * Error thrown when a workflow fails to activate due to a node-level error. diff --git a/packages/cli/src/errors/response-errors/workflow-deactivation-bad-request.error.ts b/packages/cli/src/errors/response-errors/workflow-deactivation-bad-request.error.ts index d707da2ede4..2d0a9cf3a39 100644 --- a/packages/cli/src/errors/response-errors/workflow-deactivation-bad-request.error.ts +++ b/packages/cli/src/errors/response-errors/workflow-deactivation-bad-request.error.ts @@ -1,4 +1,4 @@ -import { BadRequestError } from './bad-request.error'; +import { BadRequestError } from '@n8n/backend-services'; /** * Error thrown when a workflow fails to deactivate, e.g. because a diff --git a/packages/cli/src/errors/response-errors/workflow-publish-forbidden.error.ts b/packages/cli/src/errors/response-errors/workflow-publish-forbidden.error.ts index 73b0e11b8b4..d6685973229 100644 --- a/packages/cli/src/errors/response-errors/workflow-publish-forbidden.error.ts +++ b/packages/cli/src/errors/response-errors/workflow-publish-forbidden.error.ts @@ -2,8 +2,7 @@ import type { WorkflowPublishForbiddenDetails, WorkflowPublishForbiddenReason, } from '@n8n/api-types'; - -import { ForbiddenError } from './forbidden.error'; +import { ForbiddenError } from '@n8n/backend-services'; const messages: Record = { insufficient_api_key_scope: diff --git a/packages/cli/src/evaluation.ee/__tests__/evaluation-collection.service.test.ts b/packages/cli/src/evaluation.ee/__tests__/evaluation-collection.service.test.ts index f0cf6dd9d2a..9abcd152812 100644 --- a/packages/cli/src/evaluation.ee/__tests__/evaluation-collection.service.test.ts +++ b/packages/cli/src/evaluation.ee/__tests__/evaluation-collection.service.test.ts @@ -1,5 +1,6 @@ import type { CreateEvaluationCollectionPayload } from '@n8n/api-types'; import type { Logger } from '@n8n/backend-common'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import { DbLock } from '@n8n/db'; import type { DbLockService, @@ -20,8 +21,6 @@ import { OperationalError } from 'n8n-workflow'; import type { Mocked } from 'vitest'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { Telemetry } from '@/telemetry'; import type { WorkflowHistoryService } from '@/workflows/workflow-history/workflow-history.service'; diff --git a/packages/cli/src/evaluation.ee/__tests__/evaluation-collections.controller.test.ts b/packages/cli/src/evaluation.ee/__tests__/evaluation-collections.controller.test.ts index ffff29f1f95..f250538ff3b 100644 --- a/packages/cli/src/evaluation.ee/__tests__/evaluation-collections.controller.test.ts +++ b/packages/cli/src/evaluation.ee/__tests__/evaluation-collections.controller.test.ts @@ -1,13 +1,12 @@ import { EVAL_COLLECTIONS_FLAG } from '@n8n/api-types'; import type { Logger } from '@n8n/backend-common'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import type { AuthenticatedRequest, User } from '@n8n/db'; import { ControllerRegistryMetadata } from '@n8n/decorators'; import { Container } from '@n8n/di'; import type { Mocked } from 'vitest'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { PostHogClient } from '@/posthog'; import type { EvaluationCollectionService } from '../evaluation-collection.service'; diff --git a/packages/cli/src/evaluation.ee/__tests__/evaluation-config.controller.test.ts b/packages/cli/src/evaluation.ee/__tests__/evaluation-config.controller.test.ts index 8c4b39cbae0..68b544fd6eb 100644 --- a/packages/cli/src/evaluation.ee/__tests__/evaluation-config.controller.test.ts +++ b/packages/cli/src/evaluation.ee/__tests__/evaluation-config.controller.test.ts @@ -1,9 +1,8 @@ +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import type { Mocked } from 'vitest'; import type { AuthenticatedRequest, EvaluationConfig, User, WorkflowEntity } from '@n8n/db'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { WorkflowFinderService } from '@/workflows/workflow-finder.service'; import { EvaluationApiError } from '../evaluation-api-error'; diff --git a/packages/cli/src/evaluation.ee/__tests__/evaluation-dataset.service.test.ts b/packages/cli/src/evaluation.ee/__tests__/evaluation-dataset.service.test.ts index 90132ff8c8d..2d2e487b3e3 100644 --- a/packages/cli/src/evaluation.ee/__tests__/evaluation-dataset.service.test.ts +++ b/packages/cli/src/evaluation.ee/__tests__/evaluation-dataset.service.test.ts @@ -1,3 +1,4 @@ +import { BadRequestError, ForbiddenError, NotFoundError } from '@n8n/backend-services'; import type { Mocked, MockedFunction } from 'vitest'; import type { AddDatasetRowDto } from '@n8n/api-types'; import type { EvaluationConfig, IExecutionResponse, User } from '@n8n/db'; @@ -5,9 +6,6 @@ import type { EvaluationConfigRepository } from '@n8n/db'; import { mock } from 'vitest-mock-extended'; import type { IConnections, IRunData } from 'n8n-workflow'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { ExecutionPersistence } from '@/executions/execution-persistence'; import type { DataTableColumn } from '@/modules/data-table/data-table-column.entity'; import type { DataTableService } from '@/modules/data-table/data-table.service'; diff --git a/packages/cli/src/evaluation.ee/__tests__/evaluation-test-run.service.test.ts b/packages/cli/src/evaluation.ee/__tests__/evaluation-test-run.service.test.ts index 38c046ee99d..be400c01a51 100644 --- a/packages/cli/src/evaluation.ee/__tests__/evaluation-test-run.service.test.ts +++ b/packages/cli/src/evaluation.ee/__tests__/evaluation-test-run.service.test.ts @@ -1,4 +1,5 @@ import type { LicenseState } from '@n8n/backend-common'; +import { PaymentRequiredError } from '@n8n/backend-services'; import { UNLIMITED_LICENSE_QUOTA } from '@n8n/constants'; import type { TestCaseExecution, @@ -10,8 +11,6 @@ import type { import type { Mocked } from 'vitest'; import { mock } from 'vitest-mock-extended'; -import { PaymentRequiredError } from '@/errors/response-errors/payment-required.error'; - import { EvaluationTestRunService } from '../evaluation-test-run.service'; describe('EvaluationTestRunService', () => { diff --git a/packages/cli/src/evaluation.ee/__tests__/test-runs.controller.ee.test.ts b/packages/cli/src/evaluation.ee/__tests__/test-runs.controller.ee.test.ts index 6706ce0e1ab..c1587ca403a 100644 --- a/packages/cli/src/evaluation.ee/__tests__/test-runs.controller.ee.test.ts +++ b/packages/cli/src/evaluation.ee/__tests__/test-runs.controller.ee.test.ts @@ -1,3 +1,4 @@ +import { ConflictError, NotFoundError } from '@n8n/backend-services'; import type { Mock, Mocked } from 'vitest'; import type { EvaluationConfigRepository, @@ -8,8 +9,6 @@ import type { } from '@n8n/db'; import type express from 'express'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { TestRunnerService } from '@/evaluation.ee/test-runner/test-runner.service.ee'; import { TestRunsController } from '@/evaluation.ee/test-runs.controller.ee'; import type { TestRunsRequest } from '@/evaluation.ee/test-runs.types.ee'; diff --git a/packages/cli/src/evaluation.ee/evaluation-collection.service.ts b/packages/cli/src/evaluation.ee/evaluation-collection.service.ts index 32a0503a6be..c091c9ed3c2 100644 --- a/packages/cli/src/evaluation.ee/evaluation-collection.service.ts +++ b/packages/cli/src/evaluation.ee/evaluation-collection.service.ts @@ -10,6 +10,7 @@ import type { } from '@n8n/api-types'; import { metricScalesFromConfig, normalizeMetricScore } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import type { EvaluationConfig, TestRun, User } from '@n8n/db'; import { DbLock, @@ -25,8 +26,6 @@ import { In } from '@n8n/typeorm'; import { OperationalError, type IDataObject } from 'n8n-workflow'; import { nanoid } from 'nanoid'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { TestRunnerService } from '@/evaluation.ee/test-runner/test-runner.service.ee'; import { Telemetry } from '@/telemetry'; import { WorkflowHistoryService } from '@/workflows/workflow-history/workflow-history.service'; diff --git a/packages/cli/src/evaluation.ee/evaluation-collections.controller.ee.ts b/packages/cli/src/evaluation.ee/evaluation-collections.controller.ee.ts index 18c2590f40b..b918ec7e32d 100644 --- a/packages/cli/src/evaluation.ee/evaluation-collections.controller.ee.ts +++ b/packages/cli/src/evaluation.ee/evaluation-collections.controller.ee.ts @@ -5,11 +5,10 @@ import { UpdateEvaluationCollectionDto, } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import type { AuthenticatedRequest, User } from '@n8n/db'; import { Body, Delete, Get, Patch, Post, ProjectScope, RestController } from '@n8n/decorators'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { PostHogClient } from '@/posthog'; import { EvaluationCollectionService } from './evaluation-collection.service'; diff --git a/packages/cli/src/evaluation.ee/evaluation-config.controller.ts b/packages/cli/src/evaluation.ee/evaluation-config.controller.ts index e10cf1dcac8..29e579fece1 100644 --- a/packages/cli/src/evaluation.ee/evaluation-config.controller.ts +++ b/packages/cli/src/evaluation.ee/evaluation-config.controller.ts @@ -1,9 +1,8 @@ import { addDatasetRowSchema, upsertEvaluationConfigSchema } from '@n8n/api-types'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import type { AuthenticatedRequest, User } from '@n8n/db'; import { Delete, Get, Post, Put, RestController } from '@n8n/decorators'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { WorkflowFinderService } from '@/workflows/workflow-finder.service'; import { EvaluationConfigService } from './evaluation-config.service'; diff --git a/packages/cli/src/evaluation.ee/evaluation-dataset.service.ts b/packages/cli/src/evaluation.ee/evaluation-dataset.service.ts index 8c10a627514..0e23872121c 100644 --- a/packages/cli/src/evaluation.ee/evaluation-dataset.service.ts +++ b/packages/cli/src/evaluation.ee/evaluation-dataset.service.ts @@ -4,6 +4,7 @@ import type { DatasetCandidateResponse, DatasetColumnMapping, } from '@n8n/api-types'; +import { BadRequestError, ForbiddenError, NotFoundError } from '@n8n/backend-services'; import type { EvaluationConfig, User } from '@n8n/db'; import { EvaluationConfigRepository } from '@n8n/db'; import { Service } from '@n8n/di'; @@ -23,9 +24,6 @@ import type { JsonValue, } from 'n8n-workflow'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { ExecutionPersistence } from '@/executions/execution-persistence'; import type { DataTableColumn } from '@/modules/data-table/data-table-column.entity'; import { DataTableService } from '@/modules/data-table/data-table.service'; diff --git a/packages/cli/src/evaluation.ee/evaluation-test-run.service.ts b/packages/cli/src/evaluation.ee/evaluation-test-run.service.ts index 50893c713ca..91580f812ee 100644 --- a/packages/cli/src/evaluation.ee/evaluation-test-run.service.ts +++ b/packages/cli/src/evaluation.ee/evaluation-test-run.service.ts @@ -1,11 +1,10 @@ import { LicenseState } from '@n8n/backend-common'; +import { PaymentRequiredError } from '@n8n/backend-services'; import { UNLIMITED_LICENSE_QUOTA } from '@n8n/constants'; import type { TestRun } from '@n8n/db'; import { TestCaseExecutionRepository, TestRunRepository, WorkflowRepository } from '@n8n/db'; import { Service } from '@n8n/di'; -import { PaymentRequiredError } from '@/errors/response-errors/payment-required.error'; - type Pagination = { offset: number; limit: number }; /** diff --git a/packages/cli/src/evaluation.ee/insights/__tests__/eval-insights.controller.test.ts b/packages/cli/src/evaluation.ee/insights/__tests__/eval-insights.controller.test.ts index 1966b124d8f..b42e1e16eb2 100644 --- a/packages/cli/src/evaluation.ee/insights/__tests__/eval-insights.controller.test.ts +++ b/packages/cli/src/evaluation.ee/insights/__tests__/eval-insights.controller.test.ts @@ -1,13 +1,13 @@ import type { GenerateInsightsDto } from '@n8n/api-types'; import { EVAL_COLLECTIONS_FLAG } from '@n8n/api-types'; import type { Logger } from '@n8n/backend-common'; +import { NotFoundError } from '@n8n/backend-services'; import type { AuthenticatedRequest, User } from '@n8n/db'; import { ControllerRegistryMetadata } from '@n8n/decorators'; import { Container } from '@n8n/di'; import type { Mocked } from 'vitest'; import { mock } from 'vitest-mock-extended'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { PostHogClient } from '@/posthog'; import { EvalInsightsController } from '../eval-insights.controller.ee'; diff --git a/packages/cli/src/evaluation.ee/insights/__tests__/eval-insights.service.test.ts b/packages/cli/src/evaluation.ee/insights/__tests__/eval-insights.service.test.ts index 95228ef9288..0ee19dfe845 100644 --- a/packages/cli/src/evaluation.ee/insights/__tests__/eval-insights.service.test.ts +++ b/packages/cli/src/evaluation.ee/insights/__tests__/eval-insights.service.test.ts @@ -1,5 +1,6 @@ import type { AiInsightsResponse } from '@n8n/api-types'; import type { LicenseState, Logger } from '@n8n/backend-common'; +import { BadRequestError, ForbiddenError, NotFoundError } from '@n8n/backend-services'; import type { EvaluationCollection, EvaluationCollectionRepository, @@ -10,9 +11,6 @@ import type { import type { Mocked } from 'vitest'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { Telemetry } from '@/telemetry'; import { DETERMINISTIC_MODEL_TAG, EvalInsightsService } from '../eval-insights.service'; diff --git a/packages/cli/src/evaluation.ee/insights/eval-insights.controller.ee.ts b/packages/cli/src/evaluation.ee/insights/eval-insights.controller.ee.ts index 9aab37f64b2..7478b095ae2 100644 --- a/packages/cli/src/evaluation.ee/insights/eval-insights.controller.ee.ts +++ b/packages/cli/src/evaluation.ee/insights/eval-insights.controller.ee.ts @@ -1,9 +1,9 @@ import { EVAL_COLLECTIONS_FLAG, GenerateInsightsDto } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { NotFoundError } from '@n8n/backend-services'; import type { AuthenticatedRequest, User } from '@n8n/db'; import { Body, Post, ProjectScope, RestController } from '@n8n/decorators'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { PostHogClient } from '@/posthog'; import { EvalInsightsService } from './eval-insights.service'; diff --git a/packages/cli/src/evaluation.ee/insights/eval-insights.service.ts b/packages/cli/src/evaluation.ee/insights/eval-insights.service.ts index 6c7f6b7d3b4..6439f41fe60 100644 --- a/packages/cli/src/evaluation.ee/insights/eval-insights.service.ts +++ b/packages/cli/src/evaluation.ee/insights/eval-insights.service.ts @@ -8,13 +8,11 @@ import { normalizedScores, } from '@n8n/api-types'; import { LicenseState, Logger } from '@n8n/backend-common'; +import { BadRequestError, ForbiddenError, NotFoundError } from '@n8n/backend-services'; import type { EvaluationConfig, TestRun, User } from '@n8n/db'; import { EvaluationCollectionRepository, EvaluationConfigRepository } from '@n8n/db'; import { Service } from '@n8n/di'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { Telemetry } from '@/telemetry'; import { runMetricScales } from '../metric-scales'; diff --git a/packages/cli/src/evaluation.ee/test-runs.controller.ee.ts b/packages/cli/src/evaluation.ee/test-runs.controller.ee.ts index e6b36e10209..4e5e9a2658b 100644 --- a/packages/cli/src/evaluation.ee/test-runs.controller.ee.ts +++ b/packages/cli/src/evaluation.ee/test-runs.controller.ee.ts @@ -1,4 +1,5 @@ import { StartTestRunRequestDto, type MetricScale } from '@n8n/api-types'; +import { ConflictError, NotFoundError } from '@n8n/backend-services'; import { EvaluationConfigRepository, TestCaseExecutionRepository, @@ -12,8 +13,6 @@ import { UnexpectedError } from 'n8n-workflow'; import { resolveConfigMetricScales, runMetricScales } from './metric-scales'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { TestRunnerService } from '@/evaluation.ee/test-runner/test-runner.service.ee'; import { TestRunsRequest } from '@/evaluation.ee/test-runs.types.ee'; import { listQueryMiddleware } from '@/middlewares'; diff --git a/packages/cli/src/executions/__tests__/execution.service.test.ts b/packages/cli/src/executions/__tests__/execution.service.test.ts index ef2d84a5533..1f33e8f3e36 100644 --- a/packages/cli/src/executions/__tests__/execution.service.test.ts +++ b/packages/cli/src/executions/__tests__/execution.service.test.ts @@ -1,4 +1,5 @@ import { DeleteExecutionsDto } from '@n8n/api-types'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import { GlobalConfig } from '@n8n/config'; import type { @@ -22,8 +23,6 @@ import type { ActiveExecutions } from '@/active-executions'; import type { ConcurrencyControlService } from '@/concurrency/concurrency-control.service'; import { AbortedExecutionRetryError } from '@/errors/aborted-execution-retry.error'; import { MissingExecutionStopError } from '@/errors/missing-execution-stop.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { EventService } from '@/events/event.service'; import type { EngineV2ExecutionReader } from '@/executions/engine-v2-execution-reader.service'; import { MissingExecutionDataError } from '@/executions/execution-data/missing-execution-data.error'; diff --git a/packages/cli/src/executions/__tests__/executions.controller.test.ts b/packages/cli/src/executions/__tests__/executions.controller.test.ts index 5bc56747cc8..398a3e01502 100644 --- a/packages/cli/src/executions/__tests__/executions.controller.test.ts +++ b/packages/cli/src/executions/__tests__/executions.controller.test.ts @@ -1,10 +1,8 @@ import { DeleteExecutionsDto } from '@n8n/api-types'; +import { BadRequestError, NotFoundError, NotImplementedError } from '@n8n/backend-services'; import type { AuthenticatedRequest, ExecutionSummaries, User } from '@n8n/db'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; -import { NotImplementedError } from '@/errors/response-errors/not-implemented.error'; import type { ExecutionCursor } from '@/executions/execution-cursor'; import type { ExecutionListService } from '@/executions/execution-list.service'; import type { ExecutionService } from '@/executions/execution.service'; diff --git a/packages/cli/src/executions/execution-cursor.ts b/packages/cli/src/executions/execution-cursor.ts index 3ad64d0785f..763692a97fc 100644 --- a/packages/cli/src/executions/execution-cursor.ts +++ b/packages/cli/src/executions/execution-cursor.ts @@ -1,8 +1,7 @@ import type { SerializedCursor } from '@n8n/api-types'; +import { BadRequestError } from '@n8n/backend-services'; import { z } from 'zod'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - const timestamp = z.string().datetime({ offset: true }); /** An engine 1.0 execution ID: an auto-increment integer. */ diff --git a/packages/cli/src/executions/execution.service.ts b/packages/cli/src/executions/execution.service.ts index ecb8e1aaccb..7dbbb488744 100644 --- a/packages/cli/src/executions/execution.service.ts +++ b/packages/cli/src/executions/execution.service.ts @@ -1,6 +1,12 @@ import type { DeleteExecutionsDto } from '@n8n/api-types'; import { ExecutionRedactionQueryDtoSchema } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { + BadRequestError, + ConflictError, + InternalServerError, + NotFoundError, +} from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import type { CreateExecutionPayload, @@ -45,10 +51,6 @@ import { ConcurrencyControlService } from '@/concurrency/concurrency-control.ser import { AbortedExecutionRetryError } from '@/errors/aborted-execution-retry.error'; import { MissingExecutionStopError } from '@/errors/missing-execution-stop.error'; import { QueuedExecutionRetryError } from '@/errors/queued-execution-retry.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { InternalServerError } from '@/errors/response-errors/internal-server.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { EventService } from '@/events/event.service'; import type { IExecutionFlattedResponse } from '@/interfaces'; import { License } from '@/license'; diff --git a/packages/cli/src/executions/executions.controller.ts b/packages/cli/src/executions/executions.controller.ts index 0c3ae4e2ab8..8658b782842 100644 --- a/packages/cli/src/executions/executions.controller.ts +++ b/packages/cli/src/executions/executions.controller.ts @@ -1,12 +1,10 @@ import { DeleteExecutionsDto, ExecutionRedactionQueryDtoSchema } from '@n8n/api-types'; +import { BadRequestError, NotFoundError, NotImplementedError } from '@n8n/backend-services'; import type { AuthenticatedRequest, User, ExecutionSummaries } from '@n8n/db'; import { Body, Get, Patch, Post, RestController } from '@n8n/decorators'; import type { Scope } from '@n8n/permissions'; import type { Response } from 'express'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; -import { NotImplementedError } from '@/errors/response-errors/not-implemented.error'; import { License } from '@/license'; import { isPositiveInteger } from '@/utils'; import { WorkflowSharingService } from '@/workflows/workflow-sharing.service'; diff --git a/packages/cli/src/executions/parse-range-query.middleware.ts b/packages/cli/src/executions/parse-range-query.middleware.ts index 86353f42c00..fae81d46aef 100644 --- a/packages/cli/src/executions/parse-range-query.middleware.ts +++ b/packages/cli/src/executions/parse-range-query.middleware.ts @@ -1,10 +1,10 @@ +import { BadRequestError } from '@n8n/backend-services'; import type { ExecutionSummaries } from '@n8n/db'; import type { NextFunction, Request, Response } from 'express'; import { validate } from 'jsonschema'; import type { JsonObject } from 'n8n-workflow'; import { jsonParse, UnexpectedError } from 'n8n-workflow'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import * as ResponseHelper from '@/response-helper'; import { parseExecutionCursor } from './execution-cursor'; diff --git a/packages/cli/src/executions/validation.ts b/packages/cli/src/executions/validation.ts index 75071114a8c..f7956a82a1a 100644 --- a/packages/cli/src/executions/validation.ts +++ b/packages/cli/src/executions/validation.ts @@ -1,6 +1,6 @@ +import { BadRequestError } from '@n8n/backend-services'; import { z } from 'zod'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import type { ExecutionRequest } from '@/executions/execution.types'; const executionUpdateSchema = z.object({ diff --git a/packages/cli/src/generic-helpers.ts b/packages/cli/src/generic-helpers.ts index 050902623c4..751004f8dff 100644 --- a/packages/cli/src/generic-helpers.ts +++ b/packages/cli/src/generic-helpers.ts @@ -1,3 +1,4 @@ +import { BadRequestError } from '@n8n/backend-services'; import type { CredentialsEntity, User, @@ -8,7 +9,6 @@ import type { import { validate } from 'class-validator'; import type { PersonalizationSurveyAnswersV4 } from './controllers/survey-answers.dto'; -import { BadRequestError } from './errors/response-errors/bad-request.error'; export async function validateEntity( entity: diff --git a/packages/cli/src/license/__tests__/license.service.test.ts b/packages/cli/src/license/__tests__/license.service.test.ts index 3b5f11cb2ca..a2343321a60 100644 --- a/packages/cli/src/license/__tests__/license.service.test.ts +++ b/packages/cli/src/license/__tests__/license.service.test.ts @@ -1,12 +1,12 @@ import type { LicenseState } from '@n8n/backend-common'; import { markHttpRequestError } from '@n8n/backend-network'; import type { HttpRequestClient, OutboundHttp } from '@n8n/backend-network'; +import { BadRequestError } from '@n8n/backend-services'; import type { WorkflowRepository } from '@n8n/db'; import type { TEntitlement } from '@n8n_io/license-sdk'; import { AxiosError } from 'axios'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import type { EventService } from '@/events/event.service'; import type { License } from '@/license'; import { LicenseErrors, LicenseService } from '@/license/license.service'; diff --git a/packages/cli/src/license/license.controller.ts b/packages/cli/src/license/license.controller.ts index c724ce39ed9..3bbdb4453c4 100644 --- a/packages/cli/src/license/license.controller.ts +++ b/packages/cli/src/license/license.controller.ts @@ -1,10 +1,10 @@ import { CommunityRegisteredRequestDto } from '@n8n/api-types'; +import { BadRequestError } from '@n8n/backend-services'; import { AuthenticatedRequest } from '@n8n/db'; import { Get, Post, RestController, GlobalScope, Body } from '@n8n/decorators'; import type { AxiosError } from 'axios'; import { InstanceSettings } from 'n8n-core'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { LicenseRequest } from '@/requests'; import { UrlService } from '@/services/url.service'; diff --git a/packages/cli/src/license/license.service.ts b/packages/cli/src/license/license.service.ts index df8e8d8a4a9..59a556117d5 100644 --- a/packages/cli/src/license/license.service.ts +++ b/packages/cli/src/license/license.service.ts @@ -1,12 +1,12 @@ import { LicenseState, Logger } from '@n8n/backend-common'; import { OutboundHttp, type HttpRequestClient, isHttpRequestError } from '@n8n/backend-network'; +import { BadRequestError } from '@n8n/backend-services'; import { Time } from '@n8n/constants'; import type { User } from '@n8n/db'; import { WorkflowRepository } from '@n8n/db'; import { Service } from '@n8n/di'; import { ensureError } from '@n8n/utils/errors/ensure-error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { LicenseEulaRequiredError } from '@/errors/response-errors/license-eula-required.error'; import { EventService } from '@/events/event.service'; import { License } from '@/license'; diff --git a/packages/cli/src/middlewares/__tests__/body-parser.test.ts b/packages/cli/src/middlewares/__tests__/body-parser.test.ts index 510f47e79b5..7b6a6fde3dc 100644 --- a/packages/cli/src/middlewares/__tests__/body-parser.test.ts +++ b/packages/cli/src/middlewares/__tests__/body-parser.test.ts @@ -1,9 +1,8 @@ +import { BadRequestError } from '@n8n/backend-services'; import type { Request, Response } from 'express'; import { mock } from 'vitest-mock-extended'; import { Readable } from 'stream'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - import { rawBodyReader } from '../body-parser'; /** Build a request backed by a real readable stream carrying `payload`. */ diff --git a/packages/cli/src/middlewares/body-parser.ts b/packages/cli/src/middlewares/body-parser.ts index f5b9844faf4..b71231d2295 100644 --- a/packages/cli/src/middlewares/body-parser.ts +++ b/packages/cli/src/middlewares/body-parser.ts @@ -1,4 +1,5 @@ import { parseIncomingMessage } from '@n8n/backend-network'; +import { BadRequestError, UnprocessableRequestError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import { Container } from '@n8n/di'; import type { Request, RequestHandler } from 'express'; @@ -9,9 +10,6 @@ import { type Readable } from 'stream'; import { Parser as XmlParser } from 'xml2js'; import { createGunzip, createInflate } from 'zlib'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { UnprocessableRequestError } from '@/errors/response-errors/unprocessable.error'; - const xmlParser = new XmlParser({ async: true, normalize: true, // Trim whitespace inside text nodes diff --git a/packages/cli/src/modules/agent-evals/__tests__/agent-eval-case-generation.service.test.ts b/packages/cli/src/modules/agent-evals/__tests__/agent-eval-case-generation.service.test.ts index 7f10ff1ab0f..dd4a1a8b566 100644 --- a/packages/cli/src/modules/agent-evals/__tests__/agent-eval-case-generation.service.test.ts +++ b/packages/cli/src/modules/agent-evals/__tests__/agent-eval-case-generation.service.test.ts @@ -1,12 +1,11 @@ import type { AgentJsonConfig } from '@n8n/api-types'; import type { Logger } from '@n8n/backend-common'; +import { ForbiddenError, NotFoundError } from '@n8n/backend-services'; import type { AgentEvalDataset, AgentEvalDatasetRepository, User } from '@n8n/db'; import type { Mocked } from 'vitest'; import { mock } from 'vitest-mock-extended'; import type { CredentialsService } from '@/credentials/credentials.service'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { InstanceWriteAccessService } from '@/services/instance-write-access.service'; import type { AgentConfigService } from '../../agents/agent-config.service'; diff --git a/packages/cli/src/modules/agent-evals/__tests__/agent-eval-rating.service.test.ts b/packages/cli/src/modules/agent-evals/__tests__/agent-eval-rating.service.test.ts index 2452dca3d4a..696fee9d6c1 100644 --- a/packages/cli/src/modules/agent-evals/__tests__/agent-eval-rating.service.test.ts +++ b/packages/cli/src/modules/agent-evals/__tests__/agent-eval-rating.service.test.ts @@ -1,5 +1,6 @@ import type { CreateAgentEvalRatingPayload } from '@n8n/api-types'; import type { Logger, ModuleRegistry } from '@n8n/backend-common'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import type { AgentEvalRating, AgentEvalRatingRepository, @@ -12,8 +13,6 @@ import type { import type { Mocked } from 'vitest'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { AgentRepository } from '@/modules/agents/repositories/agent.repository'; import { AgentEvalRatingService } from '../agent-eval-rating.service'; diff --git a/packages/cli/src/modules/agent-evals/__tests__/agent-eval-runner.service.test.ts b/packages/cli/src/modules/agent-evals/__tests__/agent-eval-runner.service.test.ts index 7ae1f3c3375..3e47b989e72 100644 --- a/packages/cli/src/modules/agent-evals/__tests__/agent-eval-runner.service.test.ts +++ b/packages/cli/src/modules/agent-evals/__tests__/agent-eval-runner.service.test.ts @@ -1,4 +1,5 @@ import type { ModuleRegistry } from '@n8n/backend-common'; +import { NotFoundError } from '@n8n/backend-services'; import type { GlobalConfig } from '@n8n/config'; import type { AgentEvalDataset, @@ -12,7 +13,6 @@ import type { InstanceSettings } from 'n8n-core'; import { mock, type MockProxy } from 'vitest-mock-extended'; import type { ConcurrencyControlService } from '@/concurrency/concurrency-control.service'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { resolveEvaluationConcurrencyLimit } from '@/evaluation.ee/evaluation-concurrency.helper'; import type { License } from '@/license'; import type { Agent } from '@/modules/agents/entities/agent.entity'; diff --git a/packages/cli/src/modules/agent-evals/__tests__/agent-eval.service.test.ts b/packages/cli/src/modules/agent-evals/__tests__/agent-eval.service.test.ts index 36f2dc2b854..cd3c7144ac8 100644 --- a/packages/cli/src/modules/agent-evals/__tests__/agent-eval.service.test.ts +++ b/packages/cli/src/modules/agent-evals/__tests__/agent-eval.service.test.ts @@ -1,4 +1,5 @@ import type { ModuleRegistry } from '@n8n/backend-common'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import type { AgentEvalDataset, AgentEvalDatasetRepository, @@ -10,8 +11,6 @@ import type { } from '@n8n/db'; import { mock, type MockProxy } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { Agent } from '@/modules/agents/entities/agent.entity'; import type { AgentRepository } from '@/modules/agents/repositories/agent.repository'; diff --git a/packages/cli/src/modules/agent-evals/__tests__/agent-evals.controller.test.ts b/packages/cli/src/modules/agent-evals/__tests__/agent-evals.controller.test.ts index a3623f47225..c7da5f03051 100644 --- a/packages/cli/src/modules/agent-evals/__tests__/agent-evals.controller.test.ts +++ b/packages/cli/src/modules/agent-evals/__tests__/agent-evals.controller.test.ts @@ -4,14 +4,12 @@ import { MAX_ITEMS_PER_PAGE, PaginationDto, } from '@n8n/api-types'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import type { AuthenticatedRequest, User } from '@n8n/db'; import { ControllerRegistryMetadata } from '@n8n/decorators'; import { Container } from '@n8n/di'; import { mock, type MockProxy } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import type { AgentEvalRatingService } from '../agent-eval-rating.service'; import type { AgentEvalService } from '../agent-eval.service'; import type { AgentEvalsFlagGate } from '../agent-evals-flag-gate'; diff --git a/packages/cli/src/modules/agent-evals/agent-eval-case-generation.service.ts b/packages/cli/src/modules/agent-evals/agent-eval-case-generation.service.ts index a89bb49ad97..50d024a10ce 100644 --- a/packages/cli/src/modules/agent-evals/agent-eval-case-generation.service.ts +++ b/packages/cli/src/modules/agent-evals/agent-eval-case-generation.service.ts @@ -8,13 +8,13 @@ import { type GenerateDraftCasesResult, } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { ForbiddenError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import { AgentEvalDatasetRepository } from '@n8n/db'; import { Service } from '@n8n/di'; import { OperationalError, UserError } from 'n8n-workflow'; import { CredentialsService } from '@/credentials/credentials.service'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { InstanceWriteAccessService } from '@/services/instance-write-access.service'; import { AgentEvalsFlagGate } from './agent-evals-flag-gate'; diff --git a/packages/cli/src/modules/agent-evals/agent-eval-rating.service.ts b/packages/cli/src/modules/agent-evals/agent-eval-rating.service.ts index d1f6a859cd0..ee1f9f71474 100644 --- a/packages/cli/src/modules/agent-evals/agent-eval-rating.service.ts +++ b/packages/cli/src/modules/agent-evals/agent-eval-rating.service.ts @@ -1,6 +1,7 @@ import type { AgentEvalRatingRecord, CreateAgentEvalRatingPayload } from '@n8n/api-types'; import { AGENT_EVAL_MAX_COMMENT_CHARS, AGENT_EVAL_MAX_CORRECTION_TEXT_CHARS } from '@n8n/api-types'; import { Logger, ModuleRegistry } from '@n8n/backend-common'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import type { AgentEvalResult, User } from '@n8n/db'; import { AgentEvalRatingRepository, @@ -9,8 +10,6 @@ import { } from '@n8n/db'; import { Service } from '@n8n/di'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { AgentRepository } from '@/modules/agents/repositories/agent.repository'; import { toRatingRecord } from './agent-eval-record-mappers'; diff --git a/packages/cli/src/modules/agent-evals/agent-eval-runner.service.ts b/packages/cli/src/modules/agent-evals/agent-eval-runner.service.ts index e2a862f5b0c..35c0a54fe64 100644 --- a/packages/cli/src/modules/agent-evals/agent-eval-runner.service.ts +++ b/packages/cli/src/modules/agent-evals/agent-eval-runner.service.ts @@ -1,5 +1,6 @@ import type { AgentEvalRunSummary } from '@n8n/api-types'; import { Logger, ModuleRegistry } from '@n8n/backend-common'; +import { BadRequestError, ForbiddenError, NotFoundError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import type { AgentEvalDataset, AgentEvalResult, User } from '@n8n/db'; import { @@ -20,9 +21,6 @@ import { jsonParse, jsonStringify } from 'n8n-workflow'; import pLimit from 'p-limit'; import { ConcurrencyControlService } from '@/concurrency/concurrency-control.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { resolveEvaluationConcurrencyLimit } from '@/evaluation.ee/evaluation-concurrency.helper'; import { License } from '@/license'; import { AgentRepository } from '@/modules/agents/repositories/agent.repository'; diff --git a/packages/cli/src/modules/agent-evals/agent-eval.service.ts b/packages/cli/src/modules/agent-evals/agent-eval.service.ts index 42a9b93134d..2e62614e880 100644 --- a/packages/cli/src/modules/agent-evals/agent-eval.service.ts +++ b/packages/cli/src/modules/agent-evals/agent-eval.service.ts @@ -11,6 +11,7 @@ import type { UpdateAgentEvalDatasetPayload, } from '@n8n/api-types'; import { ModuleRegistry } from '@n8n/backend-common'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import type { AgentEvalDataset, AgentEvalRun, User } from '@n8n/db'; import { AgentEvalDatasetRepository, @@ -19,8 +20,6 @@ import { } from '@n8n/db'; import { Service } from '@n8n/di'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { AgentRepository } from '@/modules/agents/repositories/agent.repository'; import { AgentEvalCaseGenerationService } from './agent-eval-case-generation.service'; diff --git a/packages/cli/src/modules/agent-evals/agent-evals-flag-gate.ts b/packages/cli/src/modules/agent-evals/agent-evals-flag-gate.ts index 9fb8377b3bb..6f826644a4a 100644 --- a/packages/cli/src/modules/agent-evals/agent-evals-flag-gate.ts +++ b/packages/cli/src/modules/agent-evals/agent-evals-flag-gate.ts @@ -1,8 +1,8 @@ import { AGENT_EVALS_FLAG } from '@n8n/api-types'; +import { NotFoundError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import { Service } from '@n8n/di'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { PostHogClient } from '@/posthog'; /** diff --git a/packages/cli/src/modules/agent-evals/agent-evals-required-modules.ts b/packages/cli/src/modules/agent-evals/agent-evals-required-modules.ts index c1541eec77d..971c5c2c67d 100644 --- a/packages/cli/src/modules/agent-evals/agent-evals-required-modules.ts +++ b/packages/cli/src/modules/agent-evals/agent-evals-required-modules.ts @@ -1,6 +1,5 @@ import type { ModuleRegistry } from '@n8n/backend-common'; - -import { NotFoundError } from '@/errors/response-errors/not-found.error'; +import { NotFoundError } from '@n8n/backend-services'; const REQUIRED_MODULES = ['agents', 'data-table'] as const; diff --git a/packages/cli/src/modules/agent-evals/agent-evals.controller.ts b/packages/cli/src/modules/agent-evals/agent-evals.controller.ts index dab8aed25d0..6f5307791cd 100644 --- a/packages/cli/src/modules/agent-evals/agent-evals.controller.ts +++ b/packages/cli/src/modules/agent-evals/agent-evals.controller.ts @@ -14,6 +14,7 @@ import { type AgentEvalRunSummary, type GenerateDraftCasesResult, } from '@n8n/api-types'; +import { BadRequestError } from '@n8n/backend-services'; import type { AuthenticatedRequest } from '@n8n/db'; import { Body, @@ -26,8 +27,6 @@ import { RestController, } from '@n8n/decorators'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - import { AgentEvalRatingService } from './agent-eval-rating.service'; import { AgentEvalService } from './agent-eval.service'; import { AgentEvalsFlagGate } from './agent-evals-flag-gate'; diff --git a/packages/cli/src/modules/agents/__tests__/agent-chat-execution.service.test.ts b/packages/cli/src/modules/agents/__tests__/agent-chat-execution.service.test.ts index b71a8c06b28..a6cee115efb 100644 --- a/packages/cli/src/modules/agents/__tests__/agent-chat-execution.service.test.ts +++ b/packages/cli/src/modules/agents/__tests__/agent-chat-execution.service.test.ts @@ -1,11 +1,11 @@ import type { SerializableAgentState } from '@n8n/agents'; import { LockService } from '@n8n/backend-common'; +import { NotFoundError } from '@n8n/backend-services'; import { Container } from '@n8n/di'; import { createDeferredPromise } from '@n8n/utils/promise/deferred-promise'; import type { InstanceSettings } from 'n8n-core'; import { mock } from 'vitest-mock-extended'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { Publisher } from '@/scaling/pubsub/publisher.service'; import { AgentChatExecutionService } from '../agent-chat-execution.service'; diff --git a/packages/cli/src/modules/agents/__tests__/agent-chat.controller.test.ts b/packages/cli/src/modules/agents/__tests__/agent-chat.controller.test.ts index d3271379d5a..dd164a9abad 100644 --- a/packages/cli/src/modules/agents/__tests__/agent-chat.controller.test.ts +++ b/packages/cli/src/modules/agents/__tests__/agent-chat.controller.test.ts @@ -1,3 +1,4 @@ +import { NotFoundError } from '@n8n/backend-services'; import { EventEmitter } from 'node:events'; import type { SerializableAgentState } from '@n8n/agents'; import { createDeferredPromise } from '@n8n/utils/promise/deferred-promise'; @@ -7,7 +8,6 @@ import { mock } from 'vitest-mock-extended'; import { FileNotFoundError } from 'n8n-core'; import type { CredentialsService } from '@/credentials/credentials.service'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { AgentChatAttachmentService } from '../agent-chat-attachment.service'; import { AgentChatController } from '../agent-chat.controller'; diff --git a/packages/cli/src/modules/agents/__tests__/agent-custom-tools.service.test.ts b/packages/cli/src/modules/agents/__tests__/agent-custom-tools.service.test.ts index 9d24f7aaa6b..68fb47de5ab 100644 --- a/packages/cli/src/modules/agents/__tests__/agent-custom-tools.service.test.ts +++ b/packages/cli/src/modules/agents/__tests__/agent-custom-tools.service.test.ts @@ -1,10 +1,9 @@ import type { ToolDescriptor } from '@n8n/agents'; +import { NotFoundError } from '@n8n/backend-services'; import { mockLogger } from '@n8n/backend-test-utils'; import { mock } from 'vitest-mock-extended'; import { UserError } from 'n8n-workflow'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import type { AgentModificationTelemetryService } from '../agent-modification-telemetry.service'; import type { AgentRuntimeCacheService } from '../agent-runtime-cache.service'; import { AgentCustomToolsService } from '../agent-custom-tools.service'; diff --git a/packages/cli/src/modules/agents/__tests__/agent-integration-management.service.test.ts b/packages/cli/src/modules/agents/__tests__/agent-integration-management.service.test.ts index 8a38b097835..197173c4f91 100644 --- a/packages/cli/src/modules/agents/__tests__/agent-integration-management.service.test.ts +++ b/packages/cli/src/modules/agents/__tests__/agent-integration-management.service.test.ts @@ -1,12 +1,11 @@ /* eslint-disable @typescript-eslint/unbound-method -- mock-based tests intentionally reference unbound methods */ import type { AgentIntegrationConfig } from '@n8n/api-types'; import type { Logger } from '@n8n/backend-common'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import { createDeferredPromise } from '@n8n/utils/promise/deferred-promise'; import { mock } from 'vitest-mock-extended'; import type { CredentialsService } from '@/credentials/credentials.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { AgentIntegrationManagementService } from '../agent-integration-management.service'; import type { AgentIntegrationPersistenceService } from '../agent-integration-persistence.service'; diff --git a/packages/cli/src/modules/agents/__tests__/agent-integrations.controller.test.ts b/packages/cli/src/modules/agents/__tests__/agent-integrations.controller.test.ts index bd5d0c3f37a..3101a5f3429 100644 --- a/packages/cli/src/modules/agents/__tests__/agent-integrations.controller.test.ts +++ b/packages/cli/src/modules/agents/__tests__/agent-integrations.controller.test.ts @@ -1,5 +1,6 @@ /* eslint-disable @typescript-eslint/unbound-method -- mock-based tests intentionally reference unbound methods */ import type { AgentIntegrationConfig } from '@n8n/api-types'; +import { LockedError } from '@n8n/backend-services'; import type { Mocked } from 'vitest'; import { mock } from 'vitest-mock-extended'; @@ -13,7 +14,6 @@ import type { ChatIntegrationService } from '../integrations/chat-integration.se import type { AgentChannelStatusRepository } from '../repositories/agent-channel-status.repository'; import type { AgentRepository } from '../repositories/agent.repository'; import type { CollaborationService } from '@/collaboration/collaboration.service'; -import { LockedError } from '@/errors/response-errors/locked.error'; import { expectProjectScopedAgentRoutes, getRoutesByHandlerName, diff --git a/packages/cli/src/modules/agents/__tests__/agent-knowledge.controller.test.ts b/packages/cli/src/modules/agents/__tests__/agent-knowledge.controller.test.ts index c13b2a54fd3..20058e82407 100644 --- a/packages/cli/src/modules/agents/__tests__/agent-knowledge.controller.test.ts +++ b/packages/cli/src/modules/agents/__tests__/agent-knowledge.controller.test.ts @@ -1,10 +1,8 @@ +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import type { Mocked } from 'vitest'; import { mock } from 'vitest-mock-extended'; import multer from 'multer'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import { AgentKnowledgeController } from '../agent-knowledge.controller'; import type { AgentKnowledgeService } from '../agent-knowledge.service'; import type { AgentRuntimeCacheService } from '../agent-runtime-cache.service'; diff --git a/packages/cli/src/modules/agents/__tests__/agent-mcp-access.service.test.ts b/packages/cli/src/modules/agents/__tests__/agent-mcp-access.service.test.ts index 94e1d7e052d..22e3a346c5a 100644 --- a/packages/cli/src/modules/agents/__tests__/agent-mcp-access.service.test.ts +++ b/packages/cli/src/modules/agents/__tests__/agent-mcp-access.service.test.ts @@ -1,8 +1,8 @@ +import { LockedError } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import { User } from '@n8n/db'; import { CollaborationService } from '@/collaboration/collaboration.service'; -import { LockedError } from '@/errors/response-errors/locked.error'; import { ProjectScopeService } from '@/permissions.ee/project-scope.service'; import { AgentMcpAccessService } from '../agent-mcp-access.service'; diff --git a/packages/cli/src/modules/agents/__tests__/agent-publish.controller.test.ts b/packages/cli/src/modules/agents/__tests__/agent-publish.controller.test.ts index f03b314bd0a..f5e6612efd4 100644 --- a/packages/cli/src/modules/agents/__tests__/agent-publish.controller.test.ts +++ b/packages/cli/src/modules/agents/__tests__/agent-publish.controller.test.ts @@ -1,8 +1,8 @@ +import { LockedError } from '@n8n/backend-services'; import type { Mocked } from 'vitest'; import { mock } from 'vitest-mock-extended'; import type { CredentialsService } from '@/credentials/credentials.service'; -import { LockedError } from '@/errors/response-errors/locked.error'; import type { AgentPublishService } from '../agent-publish.service'; import { AgentPublishController } from '../agent-publish.controller'; diff --git a/packages/cli/src/modules/agents/__tests__/agent-publish.service.test.ts b/packages/cli/src/modules/agents/__tests__/agent-publish.service.test.ts index 0151761282d..cfb25ebc3ec 100644 --- a/packages/cli/src/modules/agents/__tests__/agent-publish.service.test.ts +++ b/packages/cli/src/modules/agents/__tests__/agent-publish.service.test.ts @@ -1,4 +1,5 @@ import type { AgentJsonConfig } from '@n8n/api-types'; +import { ConflictError } from '@n8n/backend-services'; import { mockLogger } from '@n8n/backend-test-utils'; import type { User } from '@n8n/db'; import { Container } from '@n8n/di'; @@ -7,7 +8,6 @@ import { QueryFailedError } from '@n8n/typeorm'; import { mock } from 'vitest-mock-extended'; import type { CredentialsService } from '@/credentials/credentials.service'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; import type { EventService } from '@/events/event.service'; import type { Telemetry } from '@/telemetry'; diff --git a/packages/cli/src/modules/agents/__tests__/agent-session-langsmith-export.service.test.ts b/packages/cli/src/modules/agents/__tests__/agent-session-langsmith-export.service.test.ts index 370a879ee8b..760e52e15f7 100644 --- a/packages/cli/src/modules/agents/__tests__/agent-session-langsmith-export.service.test.ts +++ b/packages/cli/src/modules/agents/__tests__/agent-session-langsmith-export.service.test.ts @@ -1,10 +1,10 @@ +import { NotFoundError } from '@n8n/backend-services'; import { mockLogger } from '@n8n/backend-test-utils'; import type { CustomFetch, HttpTransport, OutboundHttp } from '@n8n/backend-network'; import type { User } from '@n8n/db'; import { mock } from 'vitest-mock-extended'; import { N8N_VERSION } from '@/constants'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { AiService } from '@/services/ai.service'; import { AgentSessionLangSmithExportService } from '../agent-session-langsmith-export.service'; diff --git a/packages/cli/src/modules/agents/__tests__/agent-task.service.test.ts b/packages/cli/src/modules/agents/__tests__/agent-task.service.test.ts index 3ef35fa430f..a6ef2b09f01 100644 --- a/packages/cli/src/modules/agents/__tests__/agent-task.service.test.ts +++ b/packages/cli/src/modules/agents/__tests__/agent-task.service.test.ts @@ -1,3 +1,4 @@ +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import type { Mock } from 'vitest'; import type { Logger } from '@n8n/backend-common'; import type { GlobalConfig } from '@n8n/config'; @@ -5,8 +6,6 @@ import type { User } from '@n8n/db'; import { mock } from 'vitest-mock-extended'; import type { InstanceSettings, ScheduledTaskManager } from 'n8n-core'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { Publisher } from '@/scaling/pubsub/publisher.service'; import { AgentChangePublisher } from '../agent-change-publisher.service'; diff --git a/packages/cli/src/modules/agents/__tests__/agent-tasks.controller.test.ts b/packages/cli/src/modules/agents/__tests__/agent-tasks.controller.test.ts index 0e37a02af48..8f0c638c247 100644 --- a/packages/cli/src/modules/agents/__tests__/agent-tasks.controller.test.ts +++ b/packages/cli/src/modules/agents/__tests__/agent-tasks.controller.test.ts @@ -1,8 +1,7 @@ +import { NotFoundError } from '@n8n/backend-services'; import type { Mocked } from 'vitest'; import { mock } from 'vitest-mock-extended'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import type { AgentTaskService } from '../agent-task.service'; import { AgentTasksController } from '../agent-tasks.controller'; import type { AgentRepository } from '../repositories/agent.repository'; diff --git a/packages/cli/src/modules/agents/__tests__/agents-builder-tools.service.test.ts b/packages/cli/src/modules/agents/__tests__/agents-builder-tools.service.test.ts index 798e989377b..c0ebee12eb8 100644 --- a/packages/cli/src/modules/agents/__tests__/agents-builder-tools.service.test.ts +++ b/packages/cli/src/modules/agents/__tests__/agents-builder-tools.service.test.ts @@ -1,3 +1,4 @@ +import { ConflictError, LockedError } from '@n8n/backend-services'; import type { Mocked } from 'vitest'; import { TELEMETRY_EVENT } from '@n8n/telemetry'; import { @@ -21,13 +22,11 @@ import { NodeConnectionTypes } from 'n8n-workflow'; import { mock } from 'vitest-mock-extended'; import type { CredentialTypes } from '@/credential-types'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; import type { McpRegistryService } from '@/modules/mcp-registry/registry/mcp-registry.service'; import type { NodeTypes } from '@/node-types'; import type { AiGatewayService } from '@/services/ai-gateway.service'; import type { AiService } from '@/services/ai.service'; import type { CollaborationService } from '@/collaboration/collaboration.service'; -import { LockedError } from '@/errors/response-errors/locked.error'; import type { DynamicNodeParametersService } from '@/services/dynamic-node-parameters.service'; import type { FreeAiCreditsService } from '@/services/free-ai-credits.service'; import type { Telemetry } from '@/telemetry'; diff --git a/packages/cli/src/modules/agents/__tests__/agents-catalog.controller.test.ts b/packages/cli/src/modules/agents/__tests__/agents-catalog.controller.test.ts index 6db7179ecfe..0de7d7ad226 100644 --- a/packages/cli/src/modules/agents/__tests__/agents-catalog.controller.test.ts +++ b/packages/cli/src/modules/agents/__tests__/agents-catalog.controller.test.ts @@ -1,10 +1,9 @@ import type { AgentProviderModelsQueryDto } from '@n8n/api-types'; +import { BadRequestError } from '@n8n/backend-services'; import type { AuthenticatedRequest } from '@n8n/db'; import type { Response } from 'express'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - import type { AgentIntegrationPersistenceService } from '../agent-integration-persistence.service'; import type { AgentModelCatalogService } from '../agent-model-catalog.service'; import { AgentsCatalogController } from '../agents-catalog.controller'; diff --git a/packages/cli/src/modules/agents/__tests__/agents.service.test.ts b/packages/cli/src/modules/agents/__tests__/agents.service.test.ts index f04bc032268..2da5efbd7a0 100644 --- a/packages/cli/src/modules/agents/__tests__/agents.service.test.ts +++ b/packages/cli/src/modules/agents/__tests__/agents.service.test.ts @@ -1,15 +1,13 @@ /* eslint-disable @typescript-eslint/require-await, @typescript-eslint/unbound-method -- async mock stubs, unbound-method references and short `cb` names are acceptable test idioms */ import { DEFAULT_AGENT_PERSONALISATION } from '@n8n/api-types'; +import { ConflictError, NotFoundError } from '@n8n/backend-services'; import { mockLogger } from '@n8n/backend-test-utils'; import type { ProjectRelationRepository, User } from '@n8n/db'; import { Container } from '@n8n/di'; import { QueryFailedError } from '@n8n/typeorm'; import { mock } from 'vitest-mock-extended'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import type { AgentChatAttachmentService } from '../agent-chat-attachment.service'; import type { AgentKnowledgeService } from '../agent-knowledge.service'; import type { AgentExecutionService } from '../agent-execution.service'; diff --git a/packages/cli/src/modules/agents/__tests__/instance-ai-agent-context.adapter.test.ts b/packages/cli/src/modules/agents/__tests__/instance-ai-agent-context.adapter.test.ts index 987e943ff85..733096a1d38 100644 --- a/packages/cli/src/modules/agents/__tests__/instance-ai-agent-context.adapter.test.ts +++ b/packages/cli/src/modules/agents/__tests__/instance-ai-agent-context.adapter.test.ts @@ -1,3 +1,4 @@ +import { ForbiddenError, NotFoundError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import type { AgentTaskDto } from '@n8n/api-types'; import { beforeEach, vi } from 'vitest'; @@ -6,8 +7,6 @@ import { UserError } from 'n8n-workflow'; import type { McpRegistryService } from '@/modules/mcp-registry/registry/mcp-registry.service'; import { userHasScopes } from '@/permissions.ee/check-access'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { AgentExecutionService, ThreadListItem } from '../agent-execution.service'; import type { AgentIntegrationPersistenceService } from '../agent-integration-persistence.service'; diff --git a/packages/cli/src/modules/agents/__tests__/instance-ai-builder-delegate.adapter.test.ts b/packages/cli/src/modules/agents/__tests__/instance-ai-builder-delegate.adapter.test.ts index 65fa72900e4..6eabcbfa6d6 100644 --- a/packages/cli/src/modules/agents/__tests__/instance-ai-builder-delegate.adapter.test.ts +++ b/packages/cli/src/modules/agents/__tests__/instance-ai-builder-delegate.adapter.test.ts @@ -6,14 +6,13 @@ import type { StreamChunk, } from '@n8n/agents'; import type { AgentJsonConfig, AgentSkill } from '@n8n/api-types'; +import { ForbiddenError, NotFoundError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import type { InstanceAiCredentialService } from '@n8n/instance-ai'; import { Like } from '@n8n/typeorm'; import { UserError } from 'n8n-workflow'; import { mock } from 'vitest-mock-extended'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import * as checkAccess from '@/permissions.ee/check-access'; import type { AgentsService } from '../agents.service'; diff --git a/packages/cli/src/modules/agents/agent-chat-execution.service.ts b/packages/cli/src/modules/agents/agent-chat-execution.service.ts index 1c89f88a1a9..b374d012a92 100644 --- a/packages/cli/src/modules/agents/agent-chat-execution.service.ts +++ b/packages/cli/src/modules/agents/agent-chat-execution.service.ts @@ -1,9 +1,9 @@ import { LockNamespace, LockService } from '@n8n/backend-common'; +import { NotFoundError } from '@n8n/backend-services'; import { OnPubSubEvent } from '@n8n/decorators'; import { Service } from '@n8n/di'; import { InstanceSettings } from 'n8n-core'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { PubSubCommandMap } from '@/scaling/pubsub/pubsub.event-map'; import { Publisher } from '@/scaling/pubsub/publisher.service'; diff --git a/packages/cli/src/modules/agents/agent-chat.controller.ts b/packages/cli/src/modules/agents/agent-chat.controller.ts index cc3369dce78..2304e29a5fb 100644 --- a/packages/cli/src/modules/agents/agent-chat.controller.ts +++ b/packages/cli/src/modules/agents/agent-chat.controller.ts @@ -10,6 +10,7 @@ import { MAX_AGENT_CHAT_ATTACHMENT_SIZE_MB, ViewableMimeTypes, } from '@n8n/api-types'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import type { AuthenticatedRequest } from '@n8n/db'; import { Body, @@ -28,8 +29,6 @@ import { FileNotFoundError, getHtmlSandboxCSP } from 'n8n-core'; import { pipeline } from 'node:stream/promises'; import { CredentialsService } from '@/credentials/credentials.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { AgentsCredentialProvider } from './adapters/agents-credential-provider'; import { AgentChatAttachmentService } from './agent-chat-attachment.service'; diff --git a/packages/cli/src/modules/agents/agent-config.service.ts b/packages/cli/src/modules/agents/agent-config.service.ts index e02451e30b5..2b80f250eba 100644 --- a/packages/cli/src/modules/agents/agent-config.service.ts +++ b/packages/cli/src/modules/agents/agent-config.service.ts @@ -9,13 +9,13 @@ import { type AgentJsonToolConfig, } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { ConflictError } from '@n8n/backend-services'; import { WorkflowRepository, type User } from '@n8n/db'; import { Service } from '@n8n/di'; import { isRecord } from '@n8n/utils/is-record'; import { UserError } from 'n8n-workflow'; import { CredentialsService } from '@/credentials/credentials.service'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; import { EventService } from '@/events/event.service'; import { diff --git a/packages/cli/src/modules/agents/agent-execution.service.ts b/packages/cli/src/modules/agents/agent-execution.service.ts index e74c25d463d..2c1a8006791 100644 --- a/packages/cli/src/modules/agents/agent-execution.service.ts +++ b/packages/cli/src/modules/agents/agent-execution.service.ts @@ -6,6 +6,7 @@ import type { AgentSessionStatus, } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { ConflictError } from '@n8n/backend-services'; import type { StorageLocation } from '@n8n/blob-storage'; import { TransactionRunner, type OperationContext } from '@n8n/db'; import { Service } from '@n8n/di'; @@ -13,7 +14,6 @@ import chunk from 'lodash/chunk'; import { ErrorReporter, StorageConfig } from 'n8n-core'; import { OperationalError, UnexpectedError } from 'n8n-workflow'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; import type { AgentRunTelemetryType, IAgentConfigurationTelemetryProperties } from '@/interfaces'; import { Telemetry } from '@/telemetry'; diff --git a/packages/cli/src/modules/agents/agent-integration-management.service.ts b/packages/cli/src/modules/agents/agent-integration-management.service.ts index cab9f97cb73..912edd622e6 100644 --- a/packages/cli/src/modules/agents/agent-integration-management.service.ts +++ b/packages/cli/src/modules/agents/agent-integration-management.service.ts @@ -4,13 +4,12 @@ import { type AgentIntegrationDisconnectWarning, } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import { Service } from '@n8n/di'; import { runSerially } from '@n8n/utils/run-serially'; import { CredentialsService } from '@/credentials/credentials.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { AgentIntegrationPersistenceService, diff --git a/packages/cli/src/modules/agents/agent-integrations.controller.ts b/packages/cli/src/modules/agents/agent-integrations.controller.ts index 0827708f040..f91ddbe016d 100644 --- a/packages/cli/src/modules/agents/agent-integrations.controller.ts +++ b/packages/cli/src/modules/agents/agent-integrations.controller.ts @@ -5,6 +5,7 @@ import { type AgentIntegrationConnectResponse, type AgentIntegrationStatusResponse, } from '@n8n/api-types'; +import { NotFoundError } from '@n8n/backend-services'; import type { AuthenticatedRequest } from '@n8n/db'; import { Body, Get, Param, Post, ProjectScope, RestController } from '@n8n/decorators'; import type { Request, Response } from 'express'; @@ -19,7 +20,6 @@ import { AgentChannelStatusRepository } from './repositories/agent-channel-statu import { AgentRepository } from './repositories/agent.repository'; import { CollaborationService } from '@/collaboration/collaboration.service'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; @RestController('/projects/:projectId/agents/v2') export class AgentIntegrationsController { diff --git a/packages/cli/src/modules/agents/agent-knowledge-mirror.service.ts b/packages/cli/src/modules/agents/agent-knowledge-mirror.service.ts index cb22df59dd5..d5a85ba5832 100644 --- a/packages/cli/src/modules/agents/agent-knowledge-mirror.service.ts +++ b/packages/cli/src/modules/agents/agent-knowledge-mirror.service.ts @@ -1,5 +1,6 @@ import type { CommandResult } from '@n8n/agents/sandbox'; import { Logger } from '@n8n/backend-common'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import { AgentsConfig } from '@n8n/config'; import { Service } from '@n8n/di'; import { runSerially } from '@n8n/utils/run-serially'; @@ -7,9 +8,6 @@ import escapeRegExp from 'lodash/escapeRegExp'; import { OperationalError, safeRegex } from 'n8n-workflow'; import { nanoid } from 'nanoid'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import { buildMirrorFinalizeCommand, buildReadKnowledgeCommand, diff --git a/packages/cli/src/modules/agents/agent-knowledge-retrieval.ts b/packages/cli/src/modules/agents/agent-knowledge-retrieval.ts index 29e691e11ab..156633cd843 100644 --- a/packages/cli/src/modules/agents/agent-knowledge-retrieval.ts +++ b/packages/cli/src/modules/agents/agent-knowledge-retrieval.ts @@ -1,8 +1,7 @@ +import { BadRequestError } from '@n8n/backend-services'; import type { ExecutionDataStorageLocation } from '@n8n/db'; import { z } from 'zod'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - import { hasControlCharacter } from './agent-knowledge-storage'; const MAX_SEARCH_PATTERN_LENGTH = 500; diff --git a/packages/cli/src/modules/agents/agent-knowledge-storage.ts b/packages/cli/src/modules/agents/agent-knowledge-storage.ts index a24b85fe731..567fc80f90e 100644 --- a/packages/cli/src/modules/agents/agent-knowledge-storage.ts +++ b/packages/cli/src/modules/agents/agent-knowledge-storage.ts @@ -1,9 +1,8 @@ import type { AgentFileDto } from '@n8n/api-types'; import { getPromptWorkspaceRoot, type SandboxProvider } from '@n8n/agents/sandbox'; +import { BadRequestError } from '@n8n/backend-services'; import path from 'node:path'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - import type { AgentFile } from './entities/agent-file.entity'; export interface AgentKnowledgePaths { diff --git a/packages/cli/src/modules/agents/agent-knowledge.controller.ts b/packages/cli/src/modules/agents/agent-knowledge.controller.ts index 65bacc0210c..197fb546681 100644 --- a/packages/cli/src/modules/agents/agent-knowledge.controller.ts +++ b/packages/cli/src/modules/agents/agent-knowledge.controller.ts @@ -1,12 +1,10 @@ +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import type { AuthenticatedRequest } from '@n8n/db'; import { Container } from '@n8n/di'; import { Delete, Get, Param, Post, ProjectScope, RestController } from '@n8n/decorators'; import type { Response } from 'express'; import multer from 'multer'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import { AgentKnowledgeService } from './agent-knowledge.service'; import { AgentRuntimeCacheService } from './agent-runtime-cache.service'; import { AgentSandboxRuntimeService } from './agent-sandbox-runtime.service'; diff --git a/packages/cli/src/modules/agents/agent-knowledge.service.ts b/packages/cli/src/modules/agents/agent-knowledge.service.ts index 519be983492..faca7cc1dbb 100644 --- a/packages/cli/src/modules/agents/agent-knowledge.service.ts +++ b/packages/cli/src/modules/agents/agent-knowledge.service.ts @@ -5,6 +5,7 @@ import { } from '@n8n/api-types'; import { N8nPdfLoader } from '@n8n/ai-utilities'; import { Logger } from '@n8n/backend-common'; +import { BadRequestError } from '@n8n/backend-services'; import { isUniqueConstraintError } from '@n8n/db'; import { Service } from '@n8n/di'; import { generateNanoId } from '@n8n/utils/generate-nano-id'; @@ -12,7 +13,6 @@ import { createReadStream } from 'node:fs'; import { unlink } from 'node:fs/promises'; import path from 'node:path'; import type { Readable } from 'node:stream'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { getAgentOrThrow } from './utils/get-agent-or-throw'; import { diff --git a/packages/cli/src/modules/agents/agent-mcp-access.service.ts b/packages/cli/src/modules/agents/agent-mcp-access.service.ts index f9a150ec502..2fbbd22144d 100644 --- a/packages/cli/src/modules/agents/agent-mcp-access.service.ts +++ b/packages/cli/src/modules/agents/agent-mcp-access.service.ts @@ -1,9 +1,9 @@ import type { ListAgentsQueryDto, UpdateAgentsMcpAvailabilityDto } from '@n8n/api-types'; +import { BadRequestError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import { Service } from '@n8n/di'; import { CollaborationService } from '@/collaboration/collaboration.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { ProjectScopeService } from '@/permissions.ee/project-scope.service'; import type { Agent } from './entities/agent.entity'; diff --git a/packages/cli/src/modules/agents/agent-message-queue.service.ts b/packages/cli/src/modules/agents/agent-message-queue.service.ts index d4d9989fc8d..eca6208a144 100644 --- a/packages/cli/src/modules/agents/agent-message-queue.service.ts +++ b/packages/cli/src/modules/agents/agent-message-queue.service.ts @@ -1,12 +1,9 @@ import type { AgentChatQueueResponse } from '@n8n/api-types'; +import { BadRequestError, ConflictError, NotFoundError } from '@n8n/backend-services'; import { TransactionRunner, type OperationContext } from '@n8n/db'; import { Service } from '@n8n/di'; import { OperationalError, UserError } from 'n8n-workflow'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import { AgentChatAttachmentService } from './agent-chat-attachment.service'; import { AgentExecutionUpdateBroadcaster } from './agent-execution-update-broadcaster'; import { AgentExecutionService, type StartExecutionParams } from './agent-execution.service'; diff --git a/packages/cli/src/modules/agents/agent-publish.service.ts b/packages/cli/src/modules/agents/agent-publish.service.ts index c27d995721c..2ea2c3b011f 100644 --- a/packages/cli/src/modules/agents/agent-publish.service.ts +++ b/packages/cli/src/modules/agents/agent-publish.service.ts @@ -6,6 +6,7 @@ import { type AgentVersionListItemDto, } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { ConflictError, NotFoundError } from '@n8n/backend-services'; import { isUniqueConstraintError, type User } from '@n8n/db'; import { Container, Service } from '@n8n/di'; import { TELEMETRY_EVENT } from '@n8n/telemetry'; @@ -15,8 +16,6 @@ import { deepCopy, UserError } from 'n8n-workflow'; import { v4 as uuid } from 'uuid'; import { CredentialsService } from '@/credentials/credentials.service'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { EventService } from '@/events/event.service'; import { getMissingSkillIds } from '@/modules/agents/utils/agent-missing-skill-ids'; import { Telemetry } from '@/telemetry'; diff --git a/packages/cli/src/modules/agents/agent-sandbox.controller.ts b/packages/cli/src/modules/agents/agent-sandbox.controller.ts index 6f78ecef066..b8fab3c6209 100644 --- a/packages/cli/src/modules/agents/agent-sandbox.controller.ts +++ b/packages/cli/src/modules/agents/agent-sandbox.controller.ts @@ -1,10 +1,9 @@ import { Logger } from '@n8n/backend-common'; +import { NotFoundError } from '@n8n/backend-services'; import type { AuthenticatedRequest } from '@n8n/db'; import { Param, Post, ProjectScope, RestController } from '@n8n/decorators'; import type { Response } from 'express'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import { AgentKnowledgeService } from './agent-knowledge.service'; import { AgentSandboxRuntimeService } from './agent-sandbox-runtime.service'; diff --git a/packages/cli/src/modules/agents/agent-session-langsmith-export.service.ts b/packages/cli/src/modules/agents/agent-session-langsmith-export.service.ts index 0d9b974965a..19846f70ef0 100644 --- a/packages/cli/src/modules/agents/agent-session-langsmith-export.service.ts +++ b/packages/cli/src/modules/agents/agent-session-langsmith-export.service.ts @@ -3,6 +3,7 @@ import type { AgentSessionLangSmithExportResponse } from '@n8n/api-types'; import { buildProxyHeaders } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; import { OutboundHttp } from '@n8n/backend-network'; +import { ConflictError, NotFoundError, ServiceUnavailableError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import { Service } from '@n8n/di'; import { isRecord } from '@n8n/utils/is-record'; @@ -13,9 +14,6 @@ import { nanoid } from 'nanoid'; import { v5 as uuidv5 } from 'uuid'; import { N8N_VERSION } from '@/constants'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; -import { ServiceUnavailableError } from '@/errors/response-errors/service-unavailable.error'; import { AiService } from '@/services/ai.service'; import { ProxyTokenManager } from '@/services/proxy-token-manager'; import { createAiProxyFetch } from '@/utils/ai-proxy-fetch'; diff --git a/packages/cli/src/modules/agents/agent-skills.service.ts b/packages/cli/src/modules/agents/agent-skills.service.ts index fce6bb50c39..949ec7f7163 100644 --- a/packages/cli/src/modules/agents/agent-skills.service.ts +++ b/packages/cli/src/modules/agents/agent-skills.service.ts @@ -5,13 +5,11 @@ import { type AgentSkillMutationResponse, } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { ConflictError, NotFoundError } from '@n8n/backend-services'; import { Container, Service } from '@n8n/di'; import isEqual from 'lodash/isEqual'; import { UserError } from 'n8n-workflow'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import { AgentModificationTelemetryService, type AgentMutationTelemetryContext, diff --git a/packages/cli/src/modules/agents/agent-task.service.ts b/packages/cli/src/modules/agents/agent-task.service.ts index 45b3ab56bf4..86ec208aff1 100644 --- a/packages/cli/src/modules/agents/agent-task.service.ts +++ b/packages/cli/src/modules/agents/agent-task.service.ts @@ -1,6 +1,7 @@ import type { AgentTaskDto, CreateAgentTaskDto, UpdateAgentTaskDto } from '@n8n/api-types'; import { isValidTimeZone } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import type { User } from '@n8n/db'; import { OnLeaderStepdown, OnLeaderTakeover, OnPubSubEvent, OnShutdown } from '@n8n/decorators'; @@ -10,8 +11,6 @@ import { randomUUID } from 'crypto'; import { DateTime } from 'luxon'; import { InstanceSettings, ScheduledTaskManager, type ScheduledTaskGroup } from 'n8n-core'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { PubSubCommandMap } from '@/scaling/pubsub/pubsub.event-map'; import { diff --git a/packages/cli/src/modules/agents/agent-threads.controller.ts b/packages/cli/src/modules/agents/agent-threads.controller.ts index f00d2698603..2b4ad78478c 100644 --- a/packages/cli/src/modules/agents/agent-threads.controller.ts +++ b/packages/cli/src/modules/agents/agent-threads.controller.ts @@ -1,10 +1,9 @@ import { ListAgentSessionsQueryDto, type AgentSessionPreviewAccess } from '@n8n/api-types'; +import { NotFoundError } from '@n8n/backend-services'; import type { AuthenticatedRequest } from '@n8n/db'; import { Delete, Get, Post, ProjectScope, Query, RestController } from '@n8n/decorators'; import type { Response } from 'express'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import { AgentExecutionService } from './agent-execution.service'; import { AgentSessionLangSmithExportService } from './agent-session-langsmith-export.service'; import { canContinueThreadInPreview } from './utils/agent-thread-access'; diff --git a/packages/cli/src/modules/agents/agent-upload.middleware.ts b/packages/cli/src/modules/agents/agent-upload.middleware.ts index f2181e6e385..401b2f76dbc 100644 --- a/packages/cli/src/modules/agents/agent-upload.middleware.ts +++ b/packages/cli/src/modules/agents/agent-upload.middleware.ts @@ -3,14 +3,13 @@ import { MAX_AGENT_FILE_SIZE_BYTES, MAX_AGENT_FILES_PER_UPLOAD, } from '@n8n/api-types'; +import { BadRequestError } from '@n8n/backend-services'; import { Service } from '@n8n/di'; import type { RequestHandler } from 'express'; import multer from 'multer'; import { unlink } from 'node:fs/promises'; import path from 'node:path'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - const allowedAgentFileExtensions = new Set(ALLOWED_AGENT_FILE_EXTENSIONS); export function isAllowedAgentFile(file: Pick) { diff --git a/packages/cli/src/modules/agents/agents-catalog.controller.ts b/packages/cli/src/modules/agents/agents-catalog.controller.ts index 09180041682..cae64af3f9d 100644 --- a/packages/cli/src/modules/agents/agents-catalog.controller.ts +++ b/packages/cli/src/modules/agents/agents-catalog.controller.ts @@ -4,12 +4,11 @@ import { type AgentProviderModelsResponse, type ChatIntegrationDescriptor, } from '@n8n/api-types'; +import { BadRequestError } from '@n8n/backend-services'; import type { AuthenticatedRequest } from '@n8n/db'; import { Get, Param, ProjectScope, Query, RestController } from '@n8n/decorators'; import type { Response } from 'express'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - import { AgentIntegrationPersistenceService } from './agent-integration-persistence.service'; import { AgentModelCatalogService } from './agent-model-catalog.service'; import { filterOfferedAgentModelProviders } from './model-catalog'; diff --git a/packages/cli/src/modules/agents/agents-config.controller.ts b/packages/cli/src/modules/agents/agents-config.controller.ts index b6e133ef461..8e2644ab5e8 100644 --- a/packages/cli/src/modules/agents/agents-config.controller.ts +++ b/packages/cli/src/modules/agents/agents-config.controller.ts @@ -1,4 +1,5 @@ import { type AgentConfigValidationResponse, UpdateAgentConfigDto } from '@n8n/api-types'; +import { NotFoundError } from '@n8n/backend-services'; import type { AuthenticatedRequest } from '@n8n/db'; import { Body, Delete, Get, Param, ProjectScope, Put, RestController } from '@n8n/decorators'; import type { Response } from 'express'; @@ -11,7 +12,6 @@ import { AgentRepository } from './repositories/agent.repository'; import { getAgentConfigHash } from './utils/agent-config-hash'; import { CollaborationService } from '@/collaboration/collaboration.service'; import { CredentialsService } from '@/credentials/credentials.service'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; @RestController('/projects/:projectId/agents/v2') export class AgentsConfigController { diff --git a/packages/cli/src/modules/agents/agents.controller.ts b/packages/cli/src/modules/agents/agents.controller.ts index b00ff42848d..bcd6bf269b8 100644 --- a/packages/cli/src/modules/agents/agents.controller.ts +++ b/packages/cli/src/modules/agents/agents.controller.ts @@ -1,4 +1,5 @@ import { type AgentCapabilitySummary, CreateAgentDto, ListAgentsQueryDto } from '@n8n/api-types'; +import { NotFoundError } from '@n8n/backend-services'; import type { AuthenticatedRequest } from '@n8n/db'; import { Body, @@ -12,7 +13,6 @@ import { } from '@n8n/decorators'; import type { Response } from 'express'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { CollaborationService } from '@/collaboration/collaboration.service'; import { AgentRunnableStateService } from './agent-runnable-state.service'; diff --git a/packages/cli/src/modules/agents/agents.service.ts b/packages/cli/src/modules/agents/agents.service.ts index e9741f72d48..4d5f556f038 100644 --- a/packages/cli/src/modules/agents/agents.service.ts +++ b/packages/cli/src/modules/agents/agents.service.ts @@ -12,6 +12,7 @@ import { type ListAgentsQueryDto, } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { ConflictError } from '@n8n/backend-services'; import { In, isUniqueConstraintError, ProjectRelationRepository, type User } from '@n8n/db'; import { Container, Service } from '@n8n/di'; import { hasGlobalScope } from '@n8n/permissions'; @@ -22,7 +23,6 @@ import { v4 as uuid } from 'uuid'; // in this area (see `agents-credential-provider.ts`). Resolved lazily by DI. // eslint-disable-next-line import-x/no-cycle import { CredentialsService } from '@/credentials/credentials.service'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; import { EventService } from '@/events/event.service'; import { getAgentOrThrow } from './utils/get-agent-or-throw'; diff --git a/packages/cli/src/modules/agents/builder/agents-builder-tools.service.ts b/packages/cli/src/modules/agents/builder/agents-builder-tools.service.ts index 21461f239b3..9cd0a938a35 100644 --- a/packages/cli/src/modules/agents/builder/agents-builder-tools.service.ts +++ b/packages/cli/src/modules/agents/builder/agents-builder-tools.service.ts @@ -35,6 +35,7 @@ import { } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; import { OutboundHttp } from '@n8n/backend-network'; +import { ConflictError, LockedError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import { Service } from '@n8n/di'; import { createAgentContextTool, type InstanceAiCredentialService } from '@n8n/instance-ai'; @@ -43,8 +44,6 @@ import { z } from 'zod'; import { CredentialTypes } from '@/credential-types'; import { CollaborationService } from '@/collaboration/collaboration.service'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { LockedError } from '@/errors/response-errors/locked.error'; import { McpRegistryService } from '@/modules/mcp-registry/registry/mcp-registry.service'; import { NodeTypes } from '@/node-types'; import { OauthService } from '@/oauth/oauth.service'; diff --git a/packages/cli/src/modules/agents/builder/agents-builder.service.ts b/packages/cli/src/modules/agents/builder/agents-builder.service.ts index 9cfb9cbac04..802f154d56c 100644 --- a/packages/cli/src/modules/agents/builder/agents-builder.service.ts +++ b/packages/cli/src/modules/agents/builder/agents-builder.service.ts @@ -12,6 +12,7 @@ import type { } from '@n8n/agents'; import { createObservationLogObserveFn, createObservationLogReflectFn } from '@n8n/agents'; import { Logger } from '@n8n/backend-common'; +import { NotFoundError } from '@n8n/backend-services'; import { AiConfig } from '@n8n/config'; import type { User } from '@n8n/db'; import { Service } from '@n8n/di'; @@ -27,7 +28,6 @@ import { type ReportRequiredArtifactInput, } from '@n8n/instance-ai'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { NodeCatalogService } from '@/node-catalog'; import { InstanceAiCreditService } from '../../instance-ai/instance-ai-credit.service'; diff --git a/packages/cli/src/modules/agents/instance-ai-agent-context.adapter.ts b/packages/cli/src/modules/agents/instance-ai-agent-context.adapter.ts index 7aa22be14ed..590d8284dff 100644 --- a/packages/cli/src/modules/agents/instance-ai-agent-context.adapter.ts +++ b/packages/cli/src/modules/agents/instance-ai-agent-context.adapter.ts @@ -1,5 +1,6 @@ import { zodSchemaToJsonSchema } from '@n8n/ai-utilities/json-schema'; import { AgentJsonConfigBaseSchema } from '@n8n/api-types'; +import { ForbiddenError, NotFoundError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import { Service } from '@n8n/di'; import type { @@ -11,8 +12,6 @@ import { UserError } from 'n8n-workflow'; import { McpRegistryService } from '@/modules/mcp-registry/registry/mcp-registry.service'; import { userHasScopes } from '@/permissions.ee/check-access'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { AgentExecutionService, diff --git a/packages/cli/src/modules/agents/instance-ai-builder-delegate.adapter.ts b/packages/cli/src/modules/agents/instance-ai-builder-delegate.adapter.ts index 037427f8dde..e0a93706980 100644 --- a/packages/cli/src/modules/agents/instance-ai-builder-delegate.adapter.ts +++ b/packages/cli/src/modules/agents/instance-ai-builder-delegate.adapter.ts @@ -1,4 +1,5 @@ import type { CredentialProvider, StreamChunk } from '@n8n/agents'; +import { ForbiddenError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import { Service } from '@n8n/di'; import { @@ -13,7 +14,6 @@ import { type Scope } from '@n8n/permissions'; import { Like } from '@n8n/typeorm'; import { UserError } from 'n8n-workflow'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { userHasScopes } from '@/permissions.ee/check-access'; import { AgentConfigService } from './agent-config.service'; diff --git a/packages/cli/src/modules/agents/integrations/__tests__/discord-gateway-lifecycle.test.ts b/packages/cli/src/modules/agents/integrations/__tests__/discord-gateway-lifecycle.test.ts index a1ae14bdbb5..f684471b711 100644 --- a/packages/cli/src/modules/agents/integrations/__tests__/discord-gateway-lifecycle.test.ts +++ b/packages/cli/src/modules/agents/integrations/__tests__/discord-gateway-lifecycle.test.ts @@ -1,10 +1,9 @@ import type { Logger } from '@n8n/backend-common'; import type { OutboundHttp } from '@n8n/backend-network'; +import { ConflictError } from '@n8n/backend-services'; import type { InstanceSettings } from 'n8n-core'; import { mock } from 'vitest-mock-extended'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; - import type { AgentRepository } from '../../repositories/agent.repository'; import type { AgentChatIntegrationContext } from '../agent-chat-integration'; import { DiscordIntegration } from '../platforms/discord-integration'; diff --git a/packages/cli/src/modules/agents/integrations/__tests__/discord-integration.test.ts b/packages/cli/src/modules/agents/integrations/__tests__/discord-integration.test.ts index 97c3d2d8847..31ffdbb7308 100644 --- a/packages/cli/src/modules/agents/integrations/__tests__/discord-integration.test.ts +++ b/packages/cli/src/modules/agents/integrations/__tests__/discord-integration.test.ts @@ -1,11 +1,9 @@ import type { Logger } from '@n8n/backend-common'; import type { HttpRequestClient, OutboundHttp } from '@n8n/backend-network'; +import { BadRequestError, ConflictError } from '@n8n/backend-services'; import type { InstanceSettings } from 'n8n-core'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; - import type { Agent } from '../../entities/agent.entity'; import type { AgentRepository } from '../../repositories/agent.repository'; import type { diff --git a/packages/cli/src/modules/agents/integrations/__tests__/slack-app-setup.service.test.ts b/packages/cli/src/modules/agents/integrations/__tests__/slack-app-setup.service.test.ts index ade9de9844e..dca2ad54eba 100644 --- a/packages/cli/src/modules/agents/integrations/__tests__/slack-app-setup.service.test.ts +++ b/packages/cli/src/modules/agents/integrations/__tests__/slack-app-setup.service.test.ts @@ -1,3 +1,4 @@ +import { BadRequestError } from '@n8n/backend-services'; import type { Mock, Mocked } from 'vitest'; import type { Logger } from '@n8n/backend-common'; import type { HttpRequestClient, OutboundHttp } from '@n8n/backend-network'; @@ -8,7 +9,6 @@ import type { Cipher } from 'n8n-core'; import type { CredentialsService } from '@/credentials/credentials.service'; import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; import type { CredentialsOverwrites } from '@/credentials-overwrites'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import type { CacheService } from '@/services/cache/cache.service'; import type { ProjectService } from '@/services/project.service.ee'; import type { UrlService } from '@/services/url.service'; diff --git a/packages/cli/src/modules/agents/integrations/__tests__/slack-integration.test.ts b/packages/cli/src/modules/agents/integrations/__tests__/slack-integration.test.ts index c28460baefb..6a566b4ceed 100644 --- a/packages/cli/src/modules/agents/integrations/__tests__/slack-integration.test.ts +++ b/packages/cli/src/modules/agents/integrations/__tests__/slack-integration.test.ts @@ -1,10 +1,9 @@ /* eslint-disable @typescript-eslint/unbound-method -- mock-based tests intentionally reference unbound methods */ import type { AgentIntegrationConfig } from '@n8n/api-types'; +import { ConflictError } from '@n8n/backend-services'; import type { Thread } from 'chat'; import { mock } from 'vitest-mock-extended'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; - import type { AgentRepository } from '../../repositories/agent.repository'; import type { AgentChatIntegrationContext } from '../agent-chat-integration'; import type { ChatInstance } from '../chat-integration.service'; diff --git a/packages/cli/src/modules/agents/integrations/__tests__/slack-manual-setup.service.test.ts b/packages/cli/src/modules/agents/integrations/__tests__/slack-manual-setup.service.test.ts index 1b5e9a1f5d0..8bc8a3bbcf4 100644 --- a/packages/cli/src/modules/agents/integrations/__tests__/slack-manual-setup.service.test.ts +++ b/packages/cli/src/modules/agents/integrations/__tests__/slack-manual-setup.service.test.ts @@ -1,9 +1,9 @@ /* eslint-disable @typescript-eslint/unbound-method -- mock-based tests intentionally reference unbound methods */ +import { BadRequestError } from '@n8n/backend-services'; import type { UserRepository } from '@n8n/db'; import { mock } from 'vitest-mock-extended'; import type { CacheService } from '@/services/cache/cache.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import type { ProjectService } from '@/services/project.service.ee'; import { SlackManualSetupService } from '../platforms/slack/slack-manual-setup.service'; diff --git a/packages/cli/src/modules/agents/integrations/__tests__/teams-integration.test.ts b/packages/cli/src/modules/agents/integrations/__tests__/teams-integration.test.ts index 52d96cf4328..450b7fb44b9 100644 --- a/packages/cli/src/modules/agents/integrations/__tests__/teams-integration.test.ts +++ b/packages/cli/src/modules/agents/integrations/__tests__/teams-integration.test.ts @@ -1,9 +1,8 @@ import type { Logger } from '@n8n/backend-common'; +import { ConflictError } from '@n8n/backend-services'; import { UserError } from 'n8n-workflow'; import { mock } from 'vitest-mock-extended'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; - import type { Agent } from '../../entities/agent.entity'; import type { AgentRepository } from '../../repositories/agent.repository'; import type { AgentChatIntegrationContext } from '../agent-chat-integration'; diff --git a/packages/cli/src/modules/agents/integrations/credential-claim.ts b/packages/cli/src/modules/agents/integrations/credential-claim.ts index 11975d228b2..dde8b910c5c 100644 --- a/packages/cli/src/modules/agents/integrations/credential-claim.ts +++ b/packages/cli/src/modules/agents/integrations/credential-claim.ts @@ -1,4 +1,4 @@ -import { ConflictError } from '@/errors/response-errors/conflict.error'; +import { ConflictError } from '@n8n/backend-services'; import type { AgentChannelPreconditionContext } from './agent-chat-integration'; import type { AgentRepository } from '../repositories/agent.repository'; diff --git a/packages/cli/src/modules/agents/integrations/leader-channel-relay.service.ts b/packages/cli/src/modules/agents/integrations/leader-channel-relay.service.ts index eff67c479cb..2efde916d5a 100644 --- a/packages/cli/src/modules/agents/integrations/leader-channel-relay.service.ts +++ b/packages/cli/src/modules/agents/integrations/leader-channel-relay.service.ts @@ -1,11 +1,11 @@ import { Logger } from '@n8n/backend-common'; +import { ServiceUnavailableError } from '@n8n/backend-services'; import { OnLeaderTakeover, OnPubSubEvent, OnShutdown } from '@n8n/decorators'; import { Service } from '@n8n/di'; import type { DistributiveOmit } from '@n8n/utils/types'; import { InstanceSettings } from 'n8n-core'; import { nanoid } from 'nanoid'; -import { ServiceUnavailableError } from '@/errors/response-errors/service-unavailable.error'; import { Publisher } from '@/scaling/pubsub/publisher.service'; import type { PubSubCommandMap } from '@/scaling/pubsub/pubsub.event-map'; diff --git a/packages/cli/src/modules/agents/integrations/platforms/__tests__/telegram/integration.test.ts b/packages/cli/src/modules/agents/integrations/platforms/__tests__/telegram/integration.test.ts index 74a8c9a6d7e..ee0c5f19d2f 100644 --- a/packages/cli/src/modules/agents/integrations/platforms/__tests__/telegram/integration.test.ts +++ b/packages/cli/src/modules/agents/integrations/platforms/__tests__/telegram/integration.test.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/unbound-method -- mock-based tests intentionally reference unbound methods */ +import { BadRequestError, ConflictError } from '@n8n/backend-services'; import type { Mock, Mocked, MockedFunction } from 'vitest'; import type { Logger } from '@n8n/backend-common'; import type { HttpRequestClient, OutboundHttp } from '@n8n/backend-network'; @@ -7,8 +8,6 @@ import { createHmac } from 'crypto'; import { mock } from 'vitest-mock-extended'; import type { InstanceSettings } from 'n8n-core'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; import type { UrlService } from '@/services/url.service'; import type { Agent } from '../../../../entities/agent.entity'; diff --git a/packages/cli/src/modules/agents/integrations/platforms/discord-integration.ts b/packages/cli/src/modules/agents/integrations/platforms/discord-integration.ts index 2ef436fd8c3..89532d61084 100644 --- a/packages/cli/src/modules/agents/integrations/platforms/discord-integration.ts +++ b/packages/cli/src/modules/agents/integrations/platforms/discord-integration.ts @@ -1,6 +1,7 @@ import type { RichCardComponentType } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; import { type HttpRequestClient, OutboundHttp } from '@n8n/backend-network'; +import { BadRequestError, ConflictError } from '@n8n/backend-services'; import { OnLeaderStepdown, OnLeaderTakeover, OnShutdown } from '@n8n/decorators'; import { Service } from '@n8n/di'; import { isRecord } from '@n8n/utils/is-record'; @@ -8,9 +9,6 @@ import type { Message, Thread } from 'chat'; import escapeRegExp from 'lodash/escapeRegExp'; import { InstanceSettings } from 'n8n-core'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; - import { AgentRepository } from '../../repositories/agent.repository'; import { AgentChatIntegration, diff --git a/packages/cli/src/modules/agents/integrations/platforms/slack/slack-managed-setup.service.ts b/packages/cli/src/modules/agents/integrations/platforms/slack/slack-managed-setup.service.ts index 15d68f4339a..cbc0375e2ec 100644 --- a/packages/cli/src/modules/agents/integrations/platforms/slack/slack-managed-setup.service.ts +++ b/packages/cli/src/modules/agents/integrations/platforms/slack/slack-managed-setup.service.ts @@ -7,6 +7,7 @@ import type { SlackManagedWorkspaceSummary, SlackManagerCredentialSummary, } from '@n8n/api-types'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import type { CredentialsEntity, User } from '@n8n/db'; import { Service } from '@n8n/di'; import { isRecord } from '@n8n/utils/is-record'; @@ -19,8 +20,6 @@ import { join } from 'node:path'; import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; import { CredentialsService } from '@/credentials/credentials.service'; import { CredentialsOverwrites } from '@/credentials-overwrites'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { CacheService } from '@/services/cache/cache.service'; import { SlackMethodsService } from './slack-methods.service'; diff --git a/packages/cli/src/modules/agents/integrations/platforms/slack/slack-manual-setup.service.ts b/packages/cli/src/modules/agents/integrations/platforms/slack/slack-manual-setup.service.ts index 4952e30fec2..9319c576855 100644 --- a/packages/cli/src/modules/agents/integrations/platforms/slack/slack-manual-setup.service.ts +++ b/packages/cli/src/modules/agents/integrations/platforms/slack/slack-manual-setup.service.ts @@ -1,12 +1,10 @@ import type { CreateSlackAgentAppResponse, SlackAgentAppManifestResponse } from '@n8n/api-types'; +import { BadRequestError, ForbiddenError, NotFoundError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import { UserRepository } from '@n8n/db'; import { Service } from '@n8n/di'; import { randomBytes } from 'node:crypto'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { CacheService } from '@/services/cache/cache.service'; import { ProjectService } from '@/services/project.service.ee'; diff --git a/packages/cli/src/modules/agents/integrations/platforms/slack/slack-methods.service.ts b/packages/cli/src/modules/agents/integrations/platforms/slack/slack-methods.service.ts index 4404874a702..ae722e98c7d 100644 --- a/packages/cli/src/modules/agents/integrations/platforms/slack/slack-methods.service.ts +++ b/packages/cli/src/modules/agents/integrations/platforms/slack/slack-methods.service.ts @@ -5,6 +5,7 @@ import type { } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; import { OutboundHttp } from '@n8n/backend-network'; +import { BadRequestError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import { Service } from '@n8n/di'; import { isRecord } from '@n8n/utils/is-record'; @@ -12,7 +13,6 @@ import { Cipher } from 'n8n-core'; import { jsonParse } from 'n8n-workflow'; import { CredentialsService } from '@/credentials/credentials.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { CacheService } from '@/services/cache/cache.service'; import { UrlService } from '@/services/url.service'; diff --git a/packages/cli/src/modules/agents/integrations/platforms/slack/slack-setup.types.ts b/packages/cli/src/modules/agents/integrations/platforms/slack/slack-setup.types.ts index 6a1a7ffc82b..fddd0978f95 100644 --- a/packages/cli/src/modules/agents/integrations/platforms/slack/slack-setup.types.ts +++ b/packages/cli/src/modules/agents/integrations/platforms/slack/slack-setup.types.ts @@ -1,7 +1,6 @@ +import { BadRequestError } from '@n8n/backend-services'; import { isRecord } from '@n8n/utils/is-record'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - import { stringProperty } from '../../integration-helpers'; const SLACK_APP_SETUP_CACHE_PREFIX = 'agents:slack-app-setup:'; diff --git a/packages/cli/src/modules/agents/integrations/platforms/teams/teams-setup.service.ts b/packages/cli/src/modules/agents/integrations/platforms/teams/teams-setup.service.ts index 2ed08cad57f..65746307a0f 100644 --- a/packages/cli/src/modules/agents/integrations/platforms/teams/teams-setup.service.ts +++ b/packages/cli/src/modules/agents/integrations/platforms/teams/teams-setup.service.ts @@ -1,9 +1,8 @@ import type { AgentTeamsIntegrationSettings, TeamsAgentSetupState } from '@n8n/api-types'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import { Service } from '@n8n/di'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { UrlService } from '@/services/url.service'; import { TeamsArmTemplateService } from './teams-arm-template.service'; diff --git a/packages/cli/src/modules/agents/integrations/platforms/telegram-integration.ts b/packages/cli/src/modules/agents/integrations/platforms/telegram-integration.ts index 33ab27bd4a3..47d2dc607be 100644 --- a/packages/cli/src/modules/agents/integrations/platforms/telegram-integration.ts +++ b/packages/cli/src/modules/agents/integrations/platforms/telegram-integration.ts @@ -2,6 +2,7 @@ import { AgentIntegrationConfig } from '@n8n/api-types'; import type { RichCardComponentType } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; import { OutboundHttp } from '@n8n/backend-network'; +import { BadRequestError } from '@n8n/backend-services'; import { Service } from '@n8n/di'; import { isRecord } from '@n8n/utils/is-record'; import type { Thread, Author } from 'chat'; @@ -9,7 +10,6 @@ import { createHmac } from 'crypto'; import { InstanceSettings } from 'n8n-core'; import { UnexpectedError } from 'n8n-workflow'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { UrlService } from '@/services/url.service'; import { AgentRepository } from '../../repositories/agent.repository'; diff --git a/packages/cli/src/modules/agents/sub-agents/__tests__/delegate-sub-agent-tool.test.ts b/packages/cli/src/modules/agents/sub-agents/__tests__/delegate-sub-agent-tool.test.ts index 0cc763bca4e..13842a3782c 100644 --- a/packages/cli/src/modules/agents/sub-agents/__tests__/delegate-sub-agent-tool.test.ts +++ b/packages/cli/src/modules/agents/sub-agents/__tests__/delegate-sub-agent-tool.test.ts @@ -6,12 +6,11 @@ import { type GenerateResult, } from '@n8n/agents'; import type { SubAgentSource } from '@n8n/api-types'; +import { NotFoundError } from '@n8n/backend-services'; import type { Mocked } from 'vitest'; import { mock } from 'vitest-mock-extended'; import { OperationalError, UserError } from 'n8n-workflow'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import { AgentExecutionRecordingError } from '../../agent-execution-recording.error'; import { encodeAgentSandboxHostMetadata, diff --git a/packages/cli/src/modules/agents/sub-agents/delegate-sub-agent-tool.ts b/packages/cli/src/modules/agents/sub-agents/delegate-sub-agent-tool.ts index 7f11fc5adc7..0c133192c12 100644 --- a/packages/cli/src/modules/agents/sub-agents/delegate-sub-agent-tool.ts +++ b/packages/cli/src/modules/agents/sub-agents/delegate-sub-agent-tool.ts @@ -7,10 +7,9 @@ import { type SubAgentTaskDifficulty, } from '@n8n/agents'; import type { SubAgentRunPolicy, SubAgentSource } from '@n8n/api-types'; +import { ResponseError } from '@n8n/backend-services'; import { OperationalError, UserError } from 'n8n-workflow'; -import { ResponseError } from '@/errors/response-errors/abstract/response.error'; - import { AgentExecutionRecordingError } from '../agent-execution-recording.error'; import { decodeAgentSandboxHostMetadata } from '../agent-sandbox-principal'; import { formatSubAgentToolOutput } from './format-sub-agent-tool-output'; diff --git a/packages/cli/src/modules/agents/sub-agents/sub-agent-source-resolver.ts b/packages/cli/src/modules/agents/sub-agents/sub-agent-source-resolver.ts index 108d7fc554e..8af49941485 100644 --- a/packages/cli/src/modules/agents/sub-agents/sub-agent-source-resolver.ts +++ b/packages/cli/src/modules/agents/sub-agents/sub-agent-source-resolver.ts @@ -4,11 +4,10 @@ import { type ResolvedSubAgentSource, type SubAgentSource, } from '@n8n/api-types'; +import { NotFoundError } from '@n8n/backend-services'; import { Service } from '@n8n/di'; import { UserError } from 'n8n-workflow'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import { getAgentOrThrow } from '../utils/get-agent-or-throw'; import { AgentHistoryRepository } from '../repositories/agent-history.repository'; import { AgentRepository } from '../repositories/agent.repository'; diff --git a/packages/cli/src/modules/agents/utils/agent-draft.utils.ts b/packages/cli/src/modules/agents/utils/agent-draft.utils.ts index cdf87293498..56779308c02 100644 --- a/packages/cli/src/modules/agents/utils/agent-draft.utils.ts +++ b/packages/cli/src/modules/agents/utils/agent-draft.utils.ts @@ -1,7 +1,6 @@ +import { ConflictError } from '@n8n/backend-services'; import { v4 as uuid } from 'uuid'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; - import type { Agent } from '../entities/agent.entity'; import type { AgentRepository } from '../repositories/agent.repository'; diff --git a/packages/cli/src/modules/agents/utils/get-agent-or-throw.ts b/packages/cli/src/modules/agents/utils/get-agent-or-throw.ts index d4b3fb34f80..46cbf8a1bcd 100644 --- a/packages/cli/src/modules/agents/utils/get-agent-or-throw.ts +++ b/packages/cli/src/modules/agents/utils/get-agent-or-throw.ts @@ -1,4 +1,4 @@ -import { NotFoundError } from '@/errors/response-errors/not-found.error'; +import { NotFoundError } from '@n8n/backend-services'; import type { Agent } from '../entities/agent.entity'; import type { AgentRepository } from '../repositories/agent.repository'; diff --git a/packages/cli/src/modules/breaking-changes/breaking-changes.controller.ts b/packages/cli/src/modules/breaking-changes/breaking-changes.controller.ts index 7332b2b5eb3..4170d86263a 100644 --- a/packages/cli/src/modules/breaking-changes/breaking-changes.controller.ts +++ b/packages/cli/src/modules/breaking-changes/breaking-changes.controller.ts @@ -6,12 +6,11 @@ import { BreakingChangeWorkflowRuleResult, WorkflowMigrationResult, } from '@n8n/api-types'; +import { NotFoundError } from '@n8n/backend-services'; import { AuthenticatedRequest } from '@n8n/db'; import { Get, RestController, GlobalScope, Query, Post, Param } from '@n8n/decorators'; import { Response } from 'express'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import { BreakingChangeMigrationService } from './breaking-changes.migration.service'; import { BreakingChangeService } from './breaking-changes.service'; diff --git a/packages/cli/src/modules/breaking-changes/breaking-changes.migration.service.ts b/packages/cli/src/modules/breaking-changes/breaking-changes.migration.service.ts index c49f7a42232..76acf31b351 100644 --- a/packages/cli/src/modules/breaking-changes/breaking-changes.migration.service.ts +++ b/packages/cli/src/modules/breaking-changes/breaking-changes.migration.service.ts @@ -1,12 +1,11 @@ import type { WorkflowMigrationResult } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import type { User, WorkflowEntity } from '@n8n/db'; import { Service } from '@n8n/di'; import { calculateWorkflowChecksum } from 'n8n-workflow'; import type { INode } from 'n8n-workflow'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { NodeTypes } from '@/node-types'; import { WorkflowFinderService } from '@/workflows/workflow-finder.service'; import { WorkflowValidationService } from '@/workflows/workflow-validation.service'; diff --git a/packages/cli/src/modules/breaking-changes/migrations/node-migration.ts b/packages/cli/src/modules/breaking-changes/migrations/node-migration.ts index d1c8a7cb64a..b1209f6f8dd 100644 --- a/packages/cli/src/modules/breaking-changes/migrations/node-migration.ts +++ b/packages/cli/src/modules/breaking-changes/migrations/node-migration.ts @@ -1,7 +1,6 @@ +import { BadRequestError } from '@n8n/backend-services'; import type { IConnections, INode } from 'n8n-workflow'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - /** * A migration refused a specific node. Carries the node identity in `meta` so the * UI can link straight to it. diff --git a/packages/cli/src/modules/chat-hub/__tests__/chat-hub-agent.service.test.ts b/packages/cli/src/modules/chat-hub/__tests__/chat-hub-agent.service.test.ts index f27e0e6bd69..3af9c398dd7 100644 --- a/packages/cli/src/modules/chat-hub/__tests__/chat-hub-agent.service.test.ts +++ b/packages/cli/src/modules/chat-hub/__tests__/chat-hub-agent.service.test.ts @@ -1,11 +1,11 @@ import type { ChatHubAgentKnowledgeItem } from '@n8n/api-types'; import type { Logger } from '@n8n/backend-common'; +import { NotFoundError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import type { IRunExecutionData, IWorkflowBase } from 'n8n-workflow'; import { v4 as uuid } from 'uuid'; import { mock } from 'vitest-mock-extended'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { DynamicNodeParametersService } from '@/services/dynamic-node-parameters.service'; import type { WorkflowExecutionService } from '@/workflows/workflow-execution.service'; diff --git a/packages/cli/src/modules/chat-hub/__tests__/chat-hub-credentials.service.test.ts b/packages/cli/src/modules/chat-hub/__tests__/chat-hub-credentials.service.test.ts index a25d1275aa2..83f0c993cc8 100644 --- a/packages/cli/src/modules/chat-hub/__tests__/chat-hub-credentials.service.test.ts +++ b/packages/cli/src/modules/chat-hub/__tests__/chat-hub-credentials.service.test.ts @@ -1,3 +1,4 @@ +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import type { CredentialsEntity, Project, @@ -11,8 +12,6 @@ import { mock } from 'vitest-mock-extended'; import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; import type { CredentialsService } from '@/credentials/credentials.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { ChatHubCredentialsService } from '../chat-hub-credentials.service'; diff --git a/packages/cli/src/modules/chat-hub/__tests__/chat-hub-settings.service.test.ts b/packages/cli/src/modules/chat-hub/__tests__/chat-hub-settings.service.test.ts index 2151675c6ae..1371130653c 100644 --- a/packages/cli/src/modules/chat-hub/__tests__/chat-hub-settings.service.test.ts +++ b/packages/cli/src/modules/chat-hub/__tests__/chat-hub-settings.service.test.ts @@ -1,10 +1,9 @@ import type { ChatProviderSettingsDto } from '@n8n/api-types'; +import { BadRequestError } from '@n8n/backend-services'; import type { Settings, SettingsRepository } from '@n8n/db'; import type { EntityManager } from '@n8n/typeorm'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - import { ChatHubSettingsService } from '../chat-hub.settings.service'; describe('ChatHubSettingsService', () => { diff --git a/packages/cli/src/modules/chat-hub/__tests__/chat-hub-tool.service.test.ts b/packages/cli/src/modules/chat-hub/__tests__/chat-hub-tool.service.test.ts index 09996a77200..31167af534c 100644 --- a/packages/cli/src/modules/chat-hub/__tests__/chat-hub-tool.service.test.ts +++ b/packages/cli/src/modules/chat-hub/__tests__/chat-hub-tool.service.test.ts @@ -1,12 +1,11 @@ import type { Logger } from '@n8n/backend-common'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import type { EntityManager } from '@n8n/typeorm'; import type { INode, INodeType } from 'n8n-workflow'; import { v4 as uuid } from 'uuid'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { NodeTypes } from '@/node-types'; import type { ChatHubTool } from '../chat-hub-tool.entity'; diff --git a/packages/cli/src/modules/chat-hub/__tests__/chat-hub.attachment.service.test.ts b/packages/cli/src/modules/chat-hub/__tests__/chat-hub.attachment.service.test.ts index 4d43605c66d..d596bcbb039 100644 --- a/packages/cli/src/modules/chat-hub/__tests__/chat-hub.attachment.service.test.ts +++ b/packages/cli/src/modules/chat-hub/__tests__/chat-hub.attachment.service.test.ts @@ -1,9 +1,8 @@ import type { ChatAttachment } from '@n8n/api-types'; +import { BadRequestError } from '@n8n/backend-services'; import type { BinaryDataService } from 'n8n-core'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - import { ChatHubAttachmentService } from '../chat-hub.attachment.service'; import type { ChatHubMessageRepository } from '../chat-message.repository'; diff --git a/packages/cli/src/modules/chat-hub/__tests__/chat-hub.controller.test.ts b/packages/cli/src/modules/chat-hub/__tests__/chat-hub.controller.test.ts index 790dd6a0ec6..22f10e1de9d 100644 --- a/packages/cli/src/modules/chat-hub/__tests__/chat-hub.controller.test.ts +++ b/packages/cli/src/modules/chat-hub/__tests__/chat-hub.controller.test.ts @@ -1,9 +1,9 @@ import type { ModuleRegistry } from '@n8n/backend-common'; +import { ForbiddenError } from '@n8n/backend-services'; import type { ModuleSettings } from '@n8n/decorators'; import type { NextFunction, Request, Response } from 'express'; import { mock } from 'vitest-mock-extended'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { sendErrorResponse } from '@/response-helper'; import { ChatHubController } from '../chat-hub.controller'; diff --git a/packages/cli/src/modules/chat-hub/chat-hub-agent.service.ts b/packages/cli/src/modules/chat-hub/chat-hub-agent.service.ts index 0a40e59d2e8..5c689aa799e 100644 --- a/packages/cli/src/modules/chat-hub/chat-hub-agent.service.ts +++ b/packages/cli/src/modules/chat-hub/chat-hub-agent.service.ts @@ -7,6 +7,7 @@ import { type ChatHubAgentKnowledgeItemStatus, } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import type { EntityManager, User } from '@n8n/db'; import { Service } from '@n8n/di'; import { readFile, unlink } from 'fs/promises'; @@ -14,8 +15,6 @@ import { type IBinaryData } from 'n8n-workflow'; import { nanoid } from 'nanoid'; import { v4 as uuidv4 } from 'uuid'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { DynamicNodeParametersService } from '@/services/dynamic-node-parameters.service'; import { getBase } from '@/workflow-execute-additional-data'; import { WorkflowExecutionService } from '@/workflows/workflow-execution.service'; diff --git a/packages/cli/src/modules/chat-hub/chat-hub-credentials.service.ts b/packages/cli/src/modules/chat-hub/chat-hub-credentials.service.ts index 44ced674b80..7a712dc8273 100644 --- a/packages/cli/src/modules/chat-hub/chat-hub-credentials.service.ts +++ b/packages/cli/src/modules/chat-hub/chat-hub-credentials.service.ts @@ -3,6 +3,7 @@ import { PROVIDER_CREDENTIAL_TYPE_MAP, type ChatHubConversationModel, } from '@n8n/api-types'; +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import { ProjectRepository, SharedWorkflowRepository, User } from '@n8n/db'; import { Service } from '@n8n/di'; import { EntityManager } from '@n8n/typeorm'; @@ -10,8 +11,6 @@ import type { INodeCredentials } from 'n8n-workflow'; import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; import { CredentialsService } from '@/credentials/credentials.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; @Service() export class ChatHubCredentialsService { diff --git a/packages/cli/src/modules/chat-hub/chat-hub-execution.service.ts b/packages/cli/src/modules/chat-hub/chat-hub-execution.service.ts index 0497a305b01..5d12ed98f5e 100644 --- a/packages/cli/src/modules/chat-hub/chat-hub-execution.service.ts +++ b/packages/cli/src/modules/chat-hub/chat-hub-execution.service.ts @@ -5,6 +5,7 @@ import { chatHubMessageWithButtonsSchema, } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { BadRequestError, InternalServerError } from '@n8n/backend-services'; import { ExecutionRepository, IExecutionResponse, User } from '@n8n/db'; import { Service } from '@n8n/di'; import type { Response } from 'express'; @@ -28,8 +29,6 @@ import { v4 as uuidv4 } from 'uuid'; import { ActiveExecutions } from '@/active-executions'; import { ChatExecutionManager } from '@/chat/chat-execution-manager'; import { ExecutionNotFoundError } from '@/errors/execution-not-found-error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { InternalServerError } from '@/errors/response-errors/internal-server.error'; import { ExecutionPersistence } from '@/executions/execution-persistence'; import { ExecutionService } from '@/executions/execution.service'; import { WorkflowExecutionService } from '@/workflows/workflow-execution.service'; diff --git a/packages/cli/src/modules/chat-hub/chat-hub-title.service.ts b/packages/cli/src/modules/chat-hub/chat-hub-title.service.ts index aece99602ed..8382a151518 100644 --- a/packages/cli/src/modules/chat-hub/chat-hub-title.service.ts +++ b/packages/cli/src/modules/chat-hub/chat-hub-title.service.ts @@ -7,6 +7,7 @@ import { ChatHubCustomAgentModel, } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { BadRequestError } from '@n8n/backend-services'; import { User } from '@n8n/db'; import type { EntityManager } from '@n8n/db'; import { Service } from '@n8n/di'; @@ -22,7 +23,6 @@ import { UserError, } from 'n8n-workflow'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { ExecutionPersistence } from '@/executions/execution-persistence'; import { WorkflowFinderService } from '@/workflows/workflow-finder.service'; diff --git a/packages/cli/src/modules/chat-hub/chat-hub-tool.service.ts b/packages/cli/src/modules/chat-hub/chat-hub-tool.service.ts index f5f13417777..b6dbea7df43 100644 --- a/packages/cli/src/modules/chat-hub/chat-hub-tool.service.ts +++ b/packages/cli/src/modules/chat-hub/chat-hub-tool.service.ts @@ -4,13 +4,12 @@ import type { ChatHubToolDto, } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import { EntityManager, withTransaction, type User } from '@n8n/db'; import { Service } from '@n8n/di'; import type { INode } from 'n8n-workflow'; import { collectExpressionDefaults, findDisallowedChatToolExpressions } from 'n8n-workflow'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { NodeTypes } from '@/node-types'; import type { ChatHubTool } from './chat-hub-tool.entity'; diff --git a/packages/cli/src/modules/chat-hub/chat-hub-workflow.service.ts b/packages/cli/src/modules/chat-hub/chat-hub-workflow.service.ts index e4abbfbb97d..f6345300657 100644 --- a/packages/cli/src/modules/chat-hub/chat-hub-workflow.service.ts +++ b/packages/cli/src/modules/chat-hub/chat-hub-workflow.service.ts @@ -7,6 +7,7 @@ import { type ChatHubAgentKnowledgeItem, } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { BadRequestError } from '@n8n/backend-services'; import { DEFAULT_CONTEXT_WINDOW_LENGTH, EMBEDDINGS_NODE_TYPE_MAP, @@ -49,7 +50,6 @@ import { } from 'n8n-workflow'; import { v4 as uuidv4 } from 'uuid'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { PolicyEnforcementService } from '@/policy/policy-enforcement.service'; import { WorkflowFinderService } from '@/workflows/workflow-finder.service'; diff --git a/packages/cli/src/modules/chat-hub/chat-hub.attachment.service.ts b/packages/cli/src/modules/chat-hub/chat-hub.attachment.service.ts index 266cadead83..c2386c3ae8d 100644 --- a/packages/cli/src/modules/chat-hub/chat-hub.attachment.service.ts +++ b/packages/cli/src/modules/chat-hub/chat-hub.attachment.service.ts @@ -1,4 +1,5 @@ import type { ChatMessageId, ChatSessionId, ChatAttachment } from '@n8n/api-types'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import { Service } from '@n8n/di'; import { Not, IsNull } from '@n8n/typeorm'; import type { EntityManager } from '@n8n/typeorm'; @@ -7,9 +8,6 @@ import { BinaryDataService, FileLocation, TEMP_EXECUTION_ID } from 'n8n-core'; import { BINARY_ENCODING, type IBinaryData } from 'n8n-workflow'; import type Stream from 'node:stream'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import { ChatHubMessageRepository } from './chat-message.repository'; @Service() diff --git a/packages/cli/src/modules/chat-hub/chat-hub.controller.ts b/packages/cli/src/modules/chat-hub/chat-hub.controller.ts index 417fafb0d11..7e88b05f28a 100644 --- a/packages/cli/src/modules/chat-hub/chat-hub.controller.ts +++ b/packages/cli/src/modules/chat-hub/chat-hub.controller.ts @@ -24,6 +24,7 @@ import { CHAT_USER_BLOCKED_CHAT_HUB_TOOL_TYPES, } from '@n8n/api-types'; import { ModuleRegistry } from '@n8n/backend-common'; +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import { AuthenticatedRequest } from '@n8n/db'; import { RestController, @@ -43,8 +44,6 @@ import { sanitizeFilename } from '@n8n/utils/files/sanitize-filename'; import type { NextFunction, Request, Response } from 'express'; import multer from 'multer'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { sendErrorResponse } from '@/response-helper'; import { ChatHubAgentService } from './chat-hub-agent.service'; diff --git a/packages/cli/src/modules/chat-hub/chat-hub.service.ts b/packages/cli/src/modules/chat-hub/chat-hub.service.ts index a40280d091c..6bd5a732498 100644 --- a/packages/cli/src/modules/chat-hub/chat-hub.service.ts +++ b/packages/cli/src/modules/chat-hub/chat-hub.service.ts @@ -11,6 +11,7 @@ import { type ChatHubSessionDto, } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import { parseMessage } from '@n8n/chat-hub'; import { GlobalConfig } from '@n8n/config'; import { User } from '@n8n/db'; @@ -27,8 +28,6 @@ import { } from 'n8n-workflow'; import { ChatExecutionManager } from '@/chat/chat-execution-manager'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { ExecutionPersistence } from '@/executions/execution-persistence'; import { WorkflowFinderService } from '@/workflows/workflow-finder.service'; diff --git a/packages/cli/src/modules/chat-hub/chat-hub.settings.controller.ts b/packages/cli/src/modules/chat-hub/chat-hub.settings.controller.ts index 811aeefa00c..f7497a8572c 100644 --- a/packages/cli/src/modules/chat-hub/chat-hub.settings.controller.ts +++ b/packages/cli/src/modules/chat-hub/chat-hub.settings.controller.ts @@ -6,11 +6,10 @@ import { ChatHubSemanticSearchSettings, } from '@n8n/api-types'; import { ModuleRegistry, Logger } from '@n8n/backend-common'; +import { BadRequestError } from '@n8n/backend-services'; import { type AuthenticatedRequest } from '@n8n/db'; import { Body, Get, Post, Put, RestController, GlobalScope, Param } from '@n8n/decorators'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - import { ChatHubSettingsService } from './chat-hub.settings.service'; @RestController('/chat') diff --git a/packages/cli/src/modules/chat-hub/chat-hub.settings.service.ts b/packages/cli/src/modules/chat-hub/chat-hub.settings.service.ts index 4ddfe22d63d..02bfbb03f9a 100644 --- a/packages/cli/src/modules/chat-hub/chat-hub.settings.service.ts +++ b/packages/cli/src/modules/chat-hub/chat-hub.settings.service.ts @@ -6,14 +6,13 @@ import { VECTOR_STORE_PROVIDER_CREDENTIAL_TYPE_MAP, type ChatHubSemanticSearchSettings, } from '@n8n/api-types'; +import { BadRequestError } from '@n8n/backend-services'; import { DEFAULT_SEMANTIC_SEARCH_SETTINGS } from '@n8n/chat-hub'; import { SettingsRepository } from '@n8n/db'; import type { EntityManager } from '@n8n/db'; import { Service } from '@n8n/di'; import { jsonParse } from 'n8n-workflow'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - import { VECTOR_STORE_NODE_TYPE_MAP } from './chat-hub.constants'; import type { SemanticSearchOptions } from './chat-hub.types'; diff --git a/packages/cli/src/modules/chat-hub/chat-session.repository.ts b/packages/cli/src/modules/chat-hub/chat-session.repository.ts index 4be6ce91b5e..32561950dd6 100644 --- a/packages/cli/src/modules/chat-hub/chat-session.repository.ts +++ b/packages/cli/src/modules/chat-hub/chat-session.repository.ts @@ -1,9 +1,8 @@ +import { NotFoundError } from '@n8n/backend-services'; import { BaseRepository, TransactionRunner } from '@n8n/db'; import { Service } from '@n8n/di'; import { DataSource, EntityManager } from '@n8n/typeorm'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import { ChatHubSession, IChatHubSession } from './chat-hub-session.entity'; @Service() diff --git a/packages/cli/src/modules/community-packages/__tests__/community-packages.lifecycle.service.test.ts b/packages/cli/src/modules/community-packages/__tests__/community-packages.lifecycle.service.test.ts index 82b660b54c5..8020ff9b419 100644 --- a/packages/cli/src/modules/community-packages/__tests__/community-packages.lifecycle.service.test.ts +++ b/packages/cli/src/modules/community-packages/__tests__/community-packages.lifecycle.service.test.ts @@ -1,10 +1,10 @@ import type { CommunityNodeType } from '@n8n/api-types'; import type { Logger } from '@n8n/backend-common'; +import { BadRequestError } from '@n8n/backend-services'; import type { InstanceSettingsLoaderConfig } from '@n8n/config'; import { mock } from 'vitest-mock-extended'; import { IncompatibleNodesApiVersionError } from '@/errors/response-errors/incompatible-nodes-api-version.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import type { EventService } from '@/events/event.service'; import type { Push } from '@/push'; diff --git a/packages/cli/src/modules/community-packages/community-packages.lifecycle.service.ts b/packages/cli/src/modules/community-packages/community-packages.lifecycle.service.ts index e24c8dda4d4..07d5338d3ec 100644 --- a/packages/cli/src/modules/community-packages/community-packages.lifecycle.service.ts +++ b/packages/cli/src/modules/community-packages/community-packages.lifecycle.service.ts @@ -1,4 +1,5 @@ import { Logger } from '@n8n/backend-common'; +import { BadRequestError, InternalServerError, NotFoundError } from '@n8n/backend-services'; import { InstanceSettingsLoaderConfig } from '@n8n/config'; import { Service } from '@n8n/di'; import { InstanceSettings } from 'n8n-core'; @@ -10,10 +11,7 @@ import { STARTER_TEMPLATE_NAME, UNKNOWN_FAILURE_REASON, } from '@/constants'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { IncompatibleNodesApiVersionError } from '@/errors/response-errors/incompatible-nodes-api-version.error'; -import { InternalServerError } from '@/errors/response-errors/internal-server.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { EventService } from '@/events/event.service'; import type { UserLike } from '@/events/maps/relay.event-map'; import { Push } from '@/push'; diff --git a/packages/cli/src/modules/data-table/__tests__/multer-upload-middleware.test.ts b/packages/cli/src/modules/data-table/__tests__/multer-upload-middleware.test.ts index 0a39ef8181b..b7c9f09744a 100644 --- a/packages/cli/src/modules/data-table/__tests__/multer-upload-middleware.test.ts +++ b/packages/cli/src/modules/data-table/__tests__/multer-upload-middleware.test.ts @@ -1,3 +1,4 @@ +import { BadRequestError } from '@n8n/backend-services'; import type { Mock } from 'vitest'; import type { Logger } from '@n8n/backend-common'; import type { GlobalConfig } from '@n8n/config'; @@ -33,8 +34,6 @@ vi.mock('multer', () => { return { __esModule: true, default: multerMock }; }); -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - import type { DataTableSizeValidator } from '../data-table-size-validator.service'; import type { DataTableRepository } from '../data-table.repository'; import { MulterUploadMiddleware } from '../multer-upload-middleware'; diff --git a/packages/cli/src/modules/data-table/data-table-permissions.ts b/packages/cli/src/modules/data-table/data-table-permissions.ts index a190b10ff55..cf2f6ac6edc 100644 --- a/packages/cli/src/modules/data-table/data-table-permissions.ts +++ b/packages/cli/src/modules/data-table/data-table-permissions.ts @@ -1,7 +1,7 @@ +import { ForbiddenError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import { RESPONSE_ERROR_MESSAGES } from '@/constants'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { userHasScopes } from '@/permissions.ee/check-access'; /** diff --git a/packages/cli/src/modules/data-table/data-table-proxy.service.ts b/packages/cli/src/modules/data-table/data-table-proxy.service.ts index 68783256d9a..e5954e25831 100644 --- a/packages/cli/src/modules/data-table/data-table-proxy.service.ts +++ b/packages/cli/src/modules/data-table/data-table-proxy.service.ts @@ -1,5 +1,6 @@ import type { DataTableListOptions, ListDataTableQueryDto } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { ForbiddenError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import { Service } from '@n8n/di'; import { type Scope } from '@n8n/permissions'; @@ -25,7 +26,6 @@ import { NodeOperationError, } from 'n8n-workflow'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { userHasScopes } from '@/permissions.ee/check-access'; import { InstanceWriteAccessService } from '@/services/instance-write-access.service'; import { OwnershipService } from '@/services/ownership.service'; diff --git a/packages/cli/src/modules/data-table/data-table-uploads.controller.ts b/packages/cli/src/modules/data-table/data-table-uploads.controller.ts index 5b5005784e0..7f0382f0132 100644 --- a/packages/cli/src/modules/data-table/data-table-uploads.controller.ts +++ b/packages/cli/src/modules/data-table/data-table-uploads.controller.ts @@ -1,9 +1,8 @@ +import { BadRequestError } from '@n8n/backend-services'; import { Post, RestController } from '@n8n/decorators'; import { Container } from '@n8n/di'; import multer from 'multer'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - import { CsvParserService } from './csv-parser.service'; import { MulterUploadMiddleware } from './multer-upload-middleware'; import { AuthenticatedRequestWithFile, hasStringProperty } from './types'; diff --git a/packages/cli/src/modules/data-table/data-table.controller.ts b/packages/cli/src/modules/data-table/data-table.controller.ts index 5022fb4bc48..cc095fe85ac 100644 --- a/packages/cli/src/modules/data-table/data-table.controller.ts +++ b/packages/cli/src/modules/data-table/data-table.controller.ts @@ -13,6 +13,14 @@ import { UpdateDataTableRowDto, UpsertDataTableRowDto, } from '@n8n/api-types'; +import { + BadRequestError, + ConflictError, + ForbiddenError, + InternalServerError, + NotFoundError, + ResponseError, +} from '@n8n/backend-services'; import { AuthenticatedRequest } from '@n8n/db'; import { Body, @@ -29,12 +37,6 @@ import { import { NextFunction, Response } from 'express'; import { DataTableRowReturn } from 'n8n-workflow'; -import { ResponseError } from '@/errors/response-errors/abstract/response.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { InternalServerError } from '@/errors/response-errors/internal-server.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { InstanceWriteAccessService } from '@/services/instance-write-access.service'; import { ProjectService } from '@/services/project.service.ee'; diff --git a/packages/cli/src/modules/data-table/errors/data-table-column-not-found.error.ts b/packages/cli/src/modules/data-table/errors/data-table-column-not-found.error.ts index 8c59716dfc6..6481bb63059 100644 --- a/packages/cli/src/modules/data-table/errors/data-table-column-not-found.error.ts +++ b/packages/cli/src/modules/data-table/errors/data-table-column-not-found.error.ts @@ -1,4 +1,4 @@ -import { NotFoundError } from '@/errors/response-errors/not-found.error'; +import { NotFoundError } from '@n8n/backend-services'; export class DataTableColumnNotFoundError extends NotFoundError { constructor(dataTableId: string, columnId: string) { diff --git a/packages/cli/src/modules/data-table/errors/data-table-not-found.error.ts b/packages/cli/src/modules/data-table/errors/data-table-not-found.error.ts index 83589c09573..34044edf0d5 100644 --- a/packages/cli/src/modules/data-table/errors/data-table-not-found.error.ts +++ b/packages/cli/src/modules/data-table/errors/data-table-not-found.error.ts @@ -1,4 +1,4 @@ -import { NotFoundError } from '@/errors/response-errors/not-found.error'; +import { NotFoundError } from '@n8n/backend-services'; export class DataTableNotFoundError extends NotFoundError { constructor(dataTableId: string) { diff --git a/packages/cli/src/modules/data-table/middleware/branch-write-access-middleware.ts b/packages/cli/src/modules/data-table/middleware/branch-write-access-middleware.ts index e83c364cd40..b7d5509c1b0 100644 --- a/packages/cli/src/modules/data-table/middleware/branch-write-access-middleware.ts +++ b/packages/cli/src/modules/data-table/middleware/branch-write-access-middleware.ts @@ -1,7 +1,7 @@ +import { ForbiddenError } from '@n8n/backend-services'; import { Container } from '@n8n/di'; import type { RequestHandler } from 'express'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { InstanceWriteAccessService } from '@/services/instance-write-access.service'; /** diff --git a/packages/cli/src/modules/data-table/multer-upload-middleware.ts b/packages/cli/src/modules/data-table/multer-upload-middleware.ts index 758da5e581d..dbf7f84bf6c 100644 --- a/packages/cli/src/modules/data-table/multer-upload-middleware.ts +++ b/packages/cli/src/modules/data-table/multer-upload-middleware.ts @@ -1,5 +1,6 @@ /* eslint-disable id-denylist */ import { Logger, safeJoinPath } from '@n8n/backend-common'; +import { BadRequestError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import { Service } from '@n8n/di'; import { formatBytes } from '@n8n/utils/number/bytes'; @@ -9,8 +10,6 @@ import multer from 'multer'; import { nanoid } from 'nanoid'; import { extname } from 'path'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - import { DataTableSizeValidator } from './data-table-size-validator.service'; import { DataTableRepository } from './data-table.repository'; import { diff --git a/packages/cli/src/modules/data-table/utils/sql-utils.ts b/packages/cli/src/modules/data-table/utils/sql-utils.ts index 176156daa31..7d2355a4b6a 100644 --- a/packages/cli/src/modules/data-table/utils/sql-utils.ts +++ b/packages/cli/src/modules/data-table/utils/sql-utils.ts @@ -4,6 +4,7 @@ import { DATA_TABLE_COLUMN_ERROR_MESSAGE, type DataTableCreateColumnSchema, } from '@n8n/api-types'; +import { NotFoundError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import { DslColumn } from '@n8n/db'; import { Container } from '@n8n/di'; @@ -17,8 +18,6 @@ import type { } from 'n8n-workflow'; import { DATA_TABLE_SYSTEM_COLUMN_TYPE_MAP, UnexpectedError } from 'n8n-workflow'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import type { DataTableColumn } from '../data-table-column.entity'; import type { DataTableUserTableName } from '../data-table.types'; diff --git a/packages/cli/src/modules/dynamic-credentials.ee/__tests__/credential-resolvers.controller.test.ts b/packages/cli/src/modules/dynamic-credentials.ee/__tests__/credential-resolvers.controller.test.ts index 4f89e42fafb..0058b390aff 100644 --- a/packages/cli/src/modules/dynamic-credentials.ee/__tests__/credential-resolvers.controller.test.ts +++ b/packages/cli/src/modules/dynamic-credentials.ee/__tests__/credential-resolvers.controller.test.ts @@ -1,13 +1,10 @@ +import { BadRequestError, InternalServerError, NotFoundError } from '@n8n/backend-services'; import type { AuthenticatedRequest } from '@n8n/db'; import { CredentialResolverValidationError, type ICredentialResolver } from '@n8n/decorators'; import type { Response } from 'express'; import { CREDENTIAL_BLANKING_VALUE } from 'n8n-workflow'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { InternalServerError } from '@/errors/response-errors/internal-server.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import { SYSTEM_RESOLVER_ID } from '../constants'; import { IdentifierValidationError } from '../credential-resolvers/identifiers/identifier-interface'; import { CredentialResolversController } from '../credential-resolvers.controller'; diff --git a/packages/cli/src/modules/dynamic-credentials.ee/__tests__/workflow-status.controller.test.ts b/packages/cli/src/modules/dynamic-credentials.ee/__tests__/workflow-status.controller.test.ts index e02a4ebe768..e408b354138 100644 --- a/packages/cli/src/modules/dynamic-credentials.ee/__tests__/workflow-status.controller.test.ts +++ b/packages/cli/src/modules/dynamic-credentials.ee/__tests__/workflow-status.controller.test.ts @@ -1,9 +1,8 @@ +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import type { Mocked } from 'vitest'; import { mock } from 'vitest-mock-extended'; import type { WorkflowEntity } from '@n8n/db'; import type { Request, Response } from 'express'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { DynamicCredentialCorsService } from '../services/dynamic-credential-cors.service'; import type { DynamicCredentialWebService } from '../services/dynamic-credential-web.service'; import { WorkflowStatusController } from '../workflow-status.controller'; diff --git a/packages/cli/src/modules/dynamic-credentials.ee/credential-resolvers.controller.ts b/packages/cli/src/modules/dynamic-credentials.ee/credential-resolvers.controller.ts index 8879734e900..c96c90fb297 100644 --- a/packages/cli/src/modules/dynamic-credentials.ee/credential-resolvers.controller.ts +++ b/packages/cli/src/modules/dynamic-credentials.ee/credential-resolvers.controller.ts @@ -10,6 +10,7 @@ import { credentialResolverTypesSchema, type CredentialResolverAffectedWorkflow, } from '@n8n/api-types'; +import { BadRequestError, InternalServerError, NotFoundError } from '@n8n/backend-services'; import { AuthenticatedRequest } from '@n8n/db'; import { Body, @@ -25,10 +26,6 @@ import { } from '@n8n/decorators'; import { Response } from 'express'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { InternalServerError } from '@/errors/response-errors/internal-server.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import { collectSecretFieldNames, redactSecretConfig } from './config-redaction'; import { CredentialResolutionError } from './errors/credential-resolution.error'; import { DynamicCredentialResolverNotFoundError } from './errors/credential-resolver-not-found.error'; diff --git a/packages/cli/src/modules/dynamic-credentials.ee/credential-resolvers/identifiers/__tests__/n8n-identifier.test.ts b/packages/cli/src/modules/dynamic-credentials.ee/credential-resolvers/identifiers/__tests__/n8n-identifier.test.ts index b9e50c91658..18e1ea9baf6 100644 --- a/packages/cli/src/modules/dynamic-credentials.ee/credential-resolvers/identifiers/__tests__/n8n-identifier.test.ts +++ b/packages/cli/src/modules/dynamic-credentials.ee/credential-resolvers/identifiers/__tests__/n8n-identifier.test.ts @@ -1,3 +1,4 @@ +import { AuthError } from '@n8n/backend-services'; import type { Mocked } from 'vitest'; import type { Logger } from '@n8n/backend-common'; import type { User, UserRepository } from '@n8n/db'; @@ -5,7 +6,6 @@ import { CredentialResolverError } from '@n8n/decorators'; import { mock } from 'vitest-mock-extended'; import type { AuthService } from '@/auth/auth.service'; -import { AuthError } from '@/errors/response-errors/auth.error'; import type { OAuthTokenVerifierProxy } from '@/services/oauth-token-verifier-proxy.service'; import { diff --git a/packages/cli/src/modules/dynamic-credentials.ee/dynamic-credentials.controller.ts b/packages/cli/src/modules/dynamic-credentials.ee/dynamic-credentials.controller.ts index 831d5a924d8..39b87aa3f0e 100644 --- a/packages/cli/src/modules/dynamic-credentials.ee/dynamic-credentials.controller.ts +++ b/packages/cli/src/modules/dynamic-credentials.ee/dynamic-credentials.controller.ts @@ -1,3 +1,4 @@ +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import { Time } from '@n8n/constants'; import { CredentialsEntity, AuthenticatedRequest, isAuthenticatedRequest } from '@n8n/db'; import { Delete, Get, Options, Param, Post, RestController } from '@n8n/decorators'; @@ -9,8 +10,6 @@ import { type ICredentialContext, jsonParse } from 'n8n-workflow'; import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; import { EnterpriseCredentialsService } from '@/credentials/credentials.service.ee'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { EventService } from '@/events/event.service'; import { CreateCsrfStateData, OauthService } from '@/oauth/oauth.service'; import { UrlService } from '@/services/url.service'; diff --git a/packages/cli/src/modules/dynamic-credentials.ee/services/credential-resolver-workflow.service.ts b/packages/cli/src/modules/dynamic-credentials.ee/services/credential-resolver-workflow.service.ts index 8cc66b031d1..391ef2c2eee 100644 --- a/packages/cli/src/modules/dynamic-credentials.ee/services/credential-resolver-workflow.service.ts +++ b/packages/cli/src/modules/dynamic-credentials.ee/services/credential-resolver-workflow.service.ts @@ -1,3 +1,4 @@ +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import { CredentialsEntity, CredentialsRepository, In, User, WorkflowRepository } from '@n8n/db'; import { ICredentialResolver } from '@n8n/decorators'; import { Service } from '@n8n/di'; @@ -5,8 +6,6 @@ import { Cipher } from 'n8n-core'; import { ICredentialContext, INode, isNodeWithWorkflowSelector, jsonParse } from 'n8n-workflow'; import { DynamicCredentialsProxy } from '@/credentials/dynamic-credentials-proxy'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { WorkflowFinderService } from '@/workflows/workflow-finder.service'; import { DynamicCredentialResolverRegistry } from './credential-resolver-registry.service'; diff --git a/packages/cli/src/modules/dynamic-credentials.ee/services/dynamic-credential-web.service.ts b/packages/cli/src/modules/dynamic-credentials.ee/services/dynamic-credential-web.service.ts index 83c4bc5a3c6..2d39cdf9763 100644 --- a/packages/cli/src/modules/dynamic-credentials.ee/services/dynamic-credential-web.service.ts +++ b/packages/cli/src/modules/dynamic-credentials.ee/services/dynamic-credential-web.service.ts @@ -1,4 +1,5 @@ import { Z } from '@n8n/api-types'; +import { UnauthenticatedError } from '@n8n/backend-services'; import { Service } from '@n8n/di'; import { Request } from 'express'; import { ExecutionContextService } from 'n8n-core'; @@ -6,7 +7,6 @@ import { ICredentialContext } from 'n8n-workflow'; import { z } from 'zod'; import { AuthService } from '@/auth/auth.service'; -import { UnauthenticatedError } from '@/errors/response-errors/unauthenticated.error'; class AuthSourceQuerySchema extends Z.class({ authSource: z.enum(['bearer', 'cookie']).optional(), diff --git a/packages/cli/src/modules/dynamic-credentials.ee/workflow-status.controller.ts b/packages/cli/src/modules/dynamic-credentials.ee/workflow-status.controller.ts index 21348a23776..e817a171bc6 100644 --- a/packages/cli/src/modules/dynamic-credentials.ee/workflow-status.controller.ts +++ b/packages/cli/src/modules/dynamic-credentials.ee/workflow-status.controller.ts @@ -1,4 +1,5 @@ import { WorkflowExecutionStatus } from '@n8n/api-types'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import { Time } from '@n8n/constants'; import { isAuthenticatedRequest } from '@n8n/db'; @@ -6,8 +7,6 @@ import { Get, Options, RestController } from '@n8n/decorators'; import { Container } from '@n8n/di'; import { Request, Response } from 'express'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { UrlService } from '@/services/url.service'; import { WorkflowFinderService } from '@/workflows/workflow-finder.service'; diff --git a/packages/cli/src/modules/encryption-key-manager/__tests__/encryption-key.controller.test.ts b/packages/cli/src/modules/encryption-key-manager/__tests__/encryption-key.controller.test.ts index 8bcdf5ec3f6..2ab130cd86e 100644 --- a/packages/cli/src/modules/encryption-key-manager/__tests__/encryption-key.controller.test.ts +++ b/packages/cli/src/modules/encryption-key-manager/__tests__/encryption-key.controller.test.ts @@ -1,8 +1,8 @@ +import { BadRequestError } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import type { DeploymentKey } from '@n8n/db'; import { Container } from '@n8n/di'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { EncryptionKeyController } from '@/modules/encryption-key-manager/encryption-key.controller'; import { KeyManagerService } from '@/encryption/key-manager.service'; diff --git a/packages/cli/src/modules/encryption-key-manager/encryption-key.controller.ts b/packages/cli/src/modules/encryption-key-manager/encryption-key.controller.ts index 797d947210a..f66f92ed8aa 100644 --- a/packages/cli/src/modules/encryption-key-manager/encryption-key.controller.ts +++ b/packages/cli/src/modules/encryption-key-manager/encryption-key.controller.ts @@ -4,11 +4,10 @@ import { type EncryptionKey, type EncryptionKeysList, } from '@n8n/api-types'; +import { BadRequestError } from '@n8n/backend-services'; import { type DeploymentKey } from '@n8n/db'; import { Body, Get, GlobalScope, Post, Query, RestController } from '@n8n/decorators'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - import { KeyManagerService } from '@/encryption/key-manager.service'; function toResponseDto(row: DeploymentKey): EncryptionKey { diff --git a/packages/cli/src/modules/engine-v2/__tests__/engine-credentials.controller.test.ts b/packages/cli/src/modules/engine-v2/__tests__/engine-credentials.controller.test.ts index 9d511f15e11..1ef0bb8dbbf 100644 --- a/packages/cli/src/modules/engine-v2/__tests__/engine-credentials.controller.test.ts +++ b/packages/cli/src/modules/engine-v2/__tests__/engine-credentials.controller.test.ts @@ -1,10 +1,8 @@ +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import type { Request, Response } from 'express'; import type { Mocked } from 'vitest'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; - import type { ResolveCredentialRequest } from '../engine-credentials.contract'; import { EngineCredentialsController } from '../engine-credentials.controller'; import type { EngineCredentialsService } from '../engine-credentials.service'; diff --git a/packages/cli/src/modules/engine-v2/__tests__/engine-credentials.service.test.ts b/packages/cli/src/modules/engine-v2/__tests__/engine-credentials.service.test.ts index e125adab6d5..0cafe7b6444 100644 --- a/packages/cli/src/modules/engine-v2/__tests__/engine-credentials.service.test.ts +++ b/packages/cli/src/modules/engine-v2/__tests__/engine-credentials.service.test.ts @@ -1,11 +1,10 @@ import type { Logger } from '@n8n/backend-common'; +import { ForbiddenError, NotFoundError } from '@n8n/backend-services'; import type { IWorkflowExecuteAdditionalData } from 'n8n-workflow'; import { mock } from 'vitest-mock-extended'; import type { CredentialsHelper } from '@/credentials-helper'; import { CredentialNotFoundError } from '@/errors/credential-not-found.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { CredentialsPermissionChecker } from '@/executions/pre-execution-checks'; import type { ResolveCredentialRequest } from '../engine-credentials.contract'; diff --git a/packages/cli/src/modules/engine-v2/__tests__/engine-lifecycle-event.controller.test.ts b/packages/cli/src/modules/engine-v2/__tests__/engine-lifecycle-event.controller.test.ts index 750717366c7..53b687bfde6 100644 --- a/packages/cli/src/modules/engine-v2/__tests__/engine-lifecycle-event.controller.test.ts +++ b/packages/cli/src/modules/engine-v2/__tests__/engine-lifecycle-event.controller.test.ts @@ -1,10 +1,9 @@ +import { BadRequestError } from '@n8n/backend-services'; import type { LifecycleEvent } from '@n8n/engine'; import type { Request, Response } from 'express'; import type { Mocked } from 'vitest'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - import type { EngineLifecycleEventPushRelay } from '../engine-lifecycle-event-push-relay'; import { EngineLifecycleEventController } from '../engine-lifecycle-event.controller'; diff --git a/packages/cli/src/modules/engine-v2/engine-control-plane-auth.middleware.ts b/packages/cli/src/modules/engine-v2/engine-control-plane-auth.middleware.ts index b73933447a4..257f1f21059 100644 --- a/packages/cli/src/modules/engine-v2/engine-control-plane-auth.middleware.ts +++ b/packages/cli/src/modules/engine-v2/engine-control-plane-auth.middleware.ts @@ -1,11 +1,10 @@ import type { Logger } from '@n8n/backend-common'; +import { UnauthenticatedError } from '@n8n/backend-services'; import type { EngineConfig } from '@n8n/config'; import type { ActionScope } from '@n8n/engine'; import { InvalidActionTokenError, verifyActionToken } from '@n8n/engine'; import type { NextFunction, Request, Response } from 'express'; -import { UnauthenticatedError } from '@/errors/response-errors/unauthenticated.error'; - const BEARER_PREFIX = /^bearer /i; /** Express's `RequestHandler` may return a promise; verifying a token never does. */ diff --git a/packages/cli/src/modules/engine-v2/engine-credentials.controller.ts b/packages/cli/src/modules/engine-v2/engine-credentials.controller.ts index 3f05835ddb1..f9c2df977fa 100644 --- a/packages/cli/src/modules/engine-v2/engine-credentials.controller.ts +++ b/packages/cli/src/modules/engine-v2/engine-credentials.controller.ts @@ -1,8 +1,7 @@ +import { BadRequestError } from '@n8n/backend-services'; import { Service } from '@n8n/di'; import type { Request, Response } from 'express'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - import type { ResolveCredentialResponse } from './engine-credentials.contract'; import { resolveCredentialRequestSchema } from './engine-credentials.contract'; import { EngineCredentialsService } from './engine-credentials.service'; diff --git a/packages/cli/src/modules/engine-v2/engine-credentials.service.ts b/packages/cli/src/modules/engine-v2/engine-credentials.service.ts index 767273a4663..d76f8e5ee92 100644 --- a/packages/cli/src/modules/engine-v2/engine-credentials.service.ts +++ b/packages/cli/src/modules/engine-v2/engine-credentials.service.ts @@ -1,11 +1,10 @@ import { Logger } from '@n8n/backend-common'; +import { ForbiddenError, NotFoundError } from '@n8n/backend-services'; import { Service } from '@n8n/di'; import type { ICredentialDataDecryptedObject, IExecuteData } from 'n8n-workflow'; import { CredentialsHelper } from '@/credentials-helper'; import { CredentialNotFoundError } from '@/errors/credential-not-found.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { CredentialsPermissionChecker } from '@/executions/pre-execution-checks'; import * as WorkflowExecuteAdditionalData from '@/workflow-execute-additional-data'; diff --git a/packages/cli/src/modules/engine-v2/engine-lifecycle-event.controller.ts b/packages/cli/src/modules/engine-v2/engine-lifecycle-event.controller.ts index e62c52ea073..b30e9b8e52b 100644 --- a/packages/cli/src/modules/engine-v2/engine-lifecycle-event.controller.ts +++ b/packages/cli/src/modules/engine-v2/engine-lifecycle-event.controller.ts @@ -1,9 +1,8 @@ +import { BadRequestError } from '@n8n/backend-services'; import { Service } from '@n8n/di'; import { lifecycleEventBatchSchema } from '@n8n/engine'; import type { Request, Response } from 'express'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - import { EngineLifecycleEventPushRelay } from './engine-lifecycle-event-push-relay'; /** Handles `LifecycleEvent` batches from the engine v2 data plane. */ diff --git a/packages/cli/src/modules/external-secrets.ee/__tests__/secret-provider-access-check.service.ee.test.ts b/packages/cli/src/modules/external-secrets.ee/__tests__/secret-provider-access-check.service.ee.test.ts index 8419fde0b06..010870b7e0f 100644 --- a/packages/cli/src/modules/external-secrets.ee/__tests__/secret-provider-access-check.service.ee.test.ts +++ b/packages/cli/src/modules/external-secrets.ee/__tests__/secret-provider-access-check.service.ee.test.ts @@ -1,3 +1,4 @@ +import { ForbiddenError, NotFoundError } from '@n8n/backend-services'; import type { ProjectSecretsProviderAccessRepository, SecretsProviderConnectionRepository, @@ -6,8 +7,6 @@ import type { import type { Scope } from '@n8n/permissions'; import { mock } from 'vitest-mock-extended'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { ProjectService } from '@/services/project.service.ee'; import type { RoleService } from '@/services/role.service'; diff --git a/packages/cli/src/modules/external-secrets.ee/__tests__/secrets-providers-connections.controller.ee.test.ts b/packages/cli/src/modules/external-secrets.ee/__tests__/secrets-providers-connections.controller.ee.test.ts index 965e59dea30..ba9baf174a2 100644 --- a/packages/cli/src/modules/external-secrets.ee/__tests__/secrets-providers-connections.controller.ee.test.ts +++ b/packages/cli/src/modules/external-secrets.ee/__tests__/secrets-providers-connections.controller.ee.test.ts @@ -1,8 +1,8 @@ import type { Logger } from '@n8n/backend-common'; +import { ForbiddenError } from '@n8n/backend-services'; import type { NextFunction, Request, Response } from 'express'; import { mock } from 'vitest-mock-extended'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import * as responseHelper from '@/response-helper'; import { ExternalSecretsConfig } from '../external-secrets.config'; diff --git a/packages/cli/src/modules/external-secrets.ee/__tests__/secrets-providers-connections.service.ee.test.ts b/packages/cli/src/modules/external-secrets.ee/__tests__/secrets-providers-connections.service.ee.test.ts index 45d1f1749b0..f3ae1d9a2dc 100644 --- a/packages/cli/src/modules/external-secrets.ee/__tests__/secrets-providers-connections.service.ee.test.ts +++ b/packages/cli/src/modules/external-secrets.ee/__tests__/secrets-providers-connections.service.ee.test.ts @@ -1,3 +1,4 @@ +import { NotFoundError } from '@n8n/backend-services'; import { mockLogger } from '@n8n/backend-test-utils'; import type { ProjectSecretsProviderAccess, @@ -10,7 +11,6 @@ import { CREDENTIAL_BLANKING_VALUE, type IDataObject, type INodeProperties } fro import { mock } from 'vitest-mock-extended'; import type { CredentialDependencyService } from '@/credentials/credential-dependency.service'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { EventService } from '@/events/event.service'; import type { ExternalSecretsManager } from '@/modules/external-secrets.ee/external-secrets-manager.ee'; import type { ExternalSecretsProviderRegistry } from '@/modules/external-secrets.ee/provider-registry.service'; diff --git a/packages/cli/src/modules/external-secrets.ee/external-secrets-manager.ee.ts b/packages/cli/src/modules/external-secrets.ee/external-secrets-manager.ee.ts index 1513896fae3..ed04e5cdc92 100644 --- a/packages/cli/src/modules/external-secrets.ee/external-secrets-manager.ee.ts +++ b/packages/cli/src/modules/external-secrets.ee/external-secrets-manager.ee.ts @@ -1,4 +1,5 @@ import { Logger } from '@n8n/backend-common'; +import { NotFoundError } from '@n8n/backend-services'; import { Time } from '@n8n/constants'; import { SecretsProviderConnectionRepository } from '@n8n/db'; import { OnPubSubEvent } from '@n8n/decorators'; @@ -6,7 +7,6 @@ import { Service } from '@n8n/di'; import { Cipher, type IExternalSecretsManager } from 'n8n-core'; import { jsonParse, UnexpectedError, type IDataObject, type INodeProperties } from 'n8n-workflow'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { EventService } from '@/events/event.service'; import { Publisher } from '@/scaling/pubsub/publisher.service'; diff --git a/packages/cli/src/modules/external-secrets.ee/external-secrets-settings.controller.ee.ts b/packages/cli/src/modules/external-secrets.ee/external-secrets-settings.controller.ee.ts index 38c700de0fe..94ae98073b5 100644 --- a/packages/cli/src/modules/external-secrets.ee/external-secrets-settings.controller.ee.ts +++ b/packages/cli/src/modules/external-secrets.ee/external-secrets-settings.controller.ee.ts @@ -1,10 +1,10 @@ import { UpdateExternalSecretsSettingsDto } from '@n8n/api-types'; import { ModuleRegistry, Logger } from '@n8n/backend-common'; +import { ForbiddenError } from '@n8n/backend-services'; import type { AuthenticatedRequest } from '@n8n/db'; import { Body, GlobalScope, Middleware, Post, RestController } from '@n8n/decorators'; import type { NextFunction, Request, Response } from 'express'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { EventService } from '@/events/event.service'; import { sendErrorResponse } from '@/response-helper'; diff --git a/packages/cli/src/modules/external-secrets.ee/external-secrets.controller.ee.ts b/packages/cli/src/modules/external-secrets.ee/external-secrets.controller.ee.ts index e366ed1e459..5df5e4f569f 100644 --- a/packages/cli/src/modules/external-secrets.ee/external-secrets.controller.ee.ts +++ b/packages/cli/src/modules/external-secrets.ee/external-secrets.controller.ee.ts @@ -1,9 +1,8 @@ import { Logger } from '@n8n/backend-common'; +import { NotFoundError } from '@n8n/backend-services'; import { Get, Post, RestController, GlobalScope, Middleware } from '@n8n/decorators'; import { Request, Response, NextFunction } from 'express'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import { ExternalSecretsProviders } from './external-secrets-providers.ee'; import { ExternalSecretsService } from './external-secrets.service.ee'; import { ExternalSecretsRequest } from './types'; diff --git a/packages/cli/src/modules/external-secrets.ee/secret-provider-access-check.service.ee.ts b/packages/cli/src/modules/external-secrets.ee/secret-provider-access-check.service.ee.ts index 76003613cdc..8b87a4fa35e 100644 --- a/packages/cli/src/modules/external-secrets.ee/secret-provider-access-check.service.ee.ts +++ b/packages/cli/src/modules/external-secrets.ee/secret-provider-access-check.service.ee.ts @@ -1,3 +1,4 @@ +import { ForbiddenError, NotFoundError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import { ProjectSecretsProviderAccessRepository, @@ -7,8 +8,6 @@ import { Service } from '@n8n/di'; import type { Scope } from '@n8n/permissions'; import { combineScopes, getAuthPrincipalScopes, hasGlobalScope } from '@n8n/permissions'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { ProjectService } from '@/services/project.service.ee'; import { RoleService } from '@/services/role.service'; diff --git a/packages/cli/src/modules/external-secrets.ee/secrets-providers-completions.controller.ee.ts b/packages/cli/src/modules/external-secrets.ee/secrets-providers-completions.controller.ee.ts index 80f831dccaf..31f793aabda 100644 --- a/packages/cli/src/modules/external-secrets.ee/secrets-providers-completions.controller.ee.ts +++ b/packages/cli/src/modules/external-secrets.ee/secrets-providers-completions.controller.ee.ts @@ -1,10 +1,10 @@ import type { SecretCompletionsResponse } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { ForbiddenError } from '@n8n/backend-services'; import type { AuthenticatedRequest } from '@n8n/db'; import { Get, GlobalScope, Middleware, Param, ProjectScope, RestController } from '@n8n/decorators'; import type { NextFunction, Request, Response } from 'express'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { sendErrorResponse } from '@/response-helper'; import { ExternalSecretsConfig } from './external-secrets.config'; diff --git a/packages/cli/src/modules/external-secrets.ee/secrets-providers-connections.controller.ee.ts b/packages/cli/src/modules/external-secrets.ee/secrets-providers-connections.controller.ee.ts index 49edfc8bacf..15a9b9533cf 100644 --- a/packages/cli/src/modules/external-secrets.ee/secrets-providers-connections.controller.ee.ts +++ b/packages/cli/src/modules/external-secrets.ee/secrets-providers-connections.controller.ee.ts @@ -7,6 +7,7 @@ import { type TestSecretProviderConnectionResponse, } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { ForbiddenError } from '@n8n/backend-services'; import type { AuthenticatedRequest } from '@n8n/db'; import { Body, @@ -21,7 +22,6 @@ import { } from '@n8n/decorators'; import type { NextFunction, Request, Response } from 'express'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { sendErrorResponse } from '@/response-helper'; import { ExternalSecretsConfig } from './external-secrets.config'; diff --git a/packages/cli/src/modules/external-secrets.ee/secrets-providers-connections.service.ee.ts b/packages/cli/src/modules/external-secrets.ee/secrets-providers-connections.service.ee.ts index ce53472e60e..ebdc1c55e3c 100644 --- a/packages/cli/src/modules/external-secrets.ee/secrets-providers-connections.service.ee.ts +++ b/packages/cli/src/modules/external-secrets.ee/secrets-providers-connections.service.ee.ts @@ -10,6 +10,7 @@ import { testSecretProviderConnectionResponseSchema, } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import type { SecretsProviderAccessRole, SecretsProviderConnection } from '@n8n/db'; import { ProjectSecretsProviderAccessRepository, @@ -25,8 +26,6 @@ import { CredentialDependencyService, EXTERNAL_SECRET_PROVIDER_DEPENDENCY_TYPE, } from '@/credentials/credential-dependency.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { EventService } from '@/events/event.service'; import type { ProjectSummary } from '@/events/maps/relay.event-map'; import { ExternalSecretsManager } from '@/modules/external-secrets.ee/external-secrets-manager.ee'; diff --git a/packages/cli/src/modules/external-secrets.ee/secrets-providers-project.controller.ee.ts b/packages/cli/src/modules/external-secrets.ee/secrets-providers-project.controller.ee.ts index 03f8ff427b9..3faabf3956b 100644 --- a/packages/cli/src/modules/external-secrets.ee/secrets-providers-project.controller.ee.ts +++ b/packages/cli/src/modules/external-secrets.ee/secrets-providers-project.controller.ee.ts @@ -6,6 +6,7 @@ import { type TestSecretProviderConnectionResponse, } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { ForbiddenError } from '@n8n/backend-services'; import type { AuthenticatedRequest } from '@n8n/db'; import { Body, @@ -20,7 +21,6 @@ import { } from '@n8n/decorators'; import type { NextFunction, Request, Response } from 'express'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { sendErrorResponse } from '@/response-helper'; import { ExternalSecretsConfig } from './external-secrets.config'; diff --git a/packages/cli/src/modules/external-secrets.ee/secrets-providers-types.controller.ee.ts b/packages/cli/src/modules/external-secrets.ee/secrets-providers-types.controller.ee.ts index 754716ac022..f657814edb1 100644 --- a/packages/cli/src/modules/external-secrets.ee/secrets-providers-types.controller.ee.ts +++ b/packages/cli/src/modules/external-secrets.ee/secrets-providers-types.controller.ee.ts @@ -1,11 +1,10 @@ import type { SecretProviderTypeResponse } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { ForbiddenError, NotFoundError } from '@n8n/backend-services'; import type { AuthenticatedRequest } from '@n8n/db'; import { Get, Middleware, Param, RestController } from '@n8n/decorators'; import type { NextFunction, Request, Response } from 'express'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { sendErrorResponse } from '@/response-helper'; import { ExternalSecretsProviders } from './external-secrets-providers.ee'; diff --git a/packages/cli/src/modules/favorites/__tests__/favorites.controller.test.ts b/packages/cli/src/modules/favorites/__tests__/favorites.controller.test.ts index c23a6a54822..d92a87b7fd1 100644 --- a/packages/cli/src/modules/favorites/__tests__/favorites.controller.test.ts +++ b/packages/cli/src/modules/favorites/__tests__/favorites.controller.test.ts @@ -1,8 +1,7 @@ +import { BadRequestError } from '@n8n/backend-services'; import type { AuthenticatedRequest } from '@n8n/db'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - import type { UserFavorite } from '../database/entities/user-favorite.entity'; import { FavoritesController } from '../favorites.controller'; import type { FavoritesService } from '../favorites.service'; diff --git a/packages/cli/src/modules/favorites/__tests__/favorites.service.test.ts b/packages/cli/src/modules/favorites/__tests__/favorites.service.test.ts index ca39a15eb2a..e732f86361e 100644 --- a/packages/cli/src/modules/favorites/__tests__/favorites.service.test.ts +++ b/packages/cli/src/modules/favorites/__tests__/favorites.service.test.ts @@ -1,3 +1,4 @@ +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import { GLOBAL_ADMIN_ROLE, GLOBAL_MEMBER_ROLE, @@ -9,9 +10,6 @@ import { } from '@n8n/db'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import type { UserFavorite } from '../database/entities/user-favorite.entity'; import type { UserFavoriteRepository } from '../database/repositories/user-favorite.repository'; import { diff --git a/packages/cli/src/modules/favorites/favorites.controller.ts b/packages/cli/src/modules/favorites/favorites.controller.ts index 8ef9f8f23f9..59cd7495e3c 100644 --- a/packages/cli/src/modules/favorites/favorites.controller.ts +++ b/packages/cli/src/modules/favorites/favorites.controller.ts @@ -1,9 +1,8 @@ import { FAVORITE_RESOURCE_TYPES, type FavoriteResourceType } from '@n8n/api-types'; +import { BadRequestError } from '@n8n/backend-services'; import type { AuthenticatedRequest } from '@n8n/db'; import { Body, Delete, Get, Param, Post, RestController } from '@n8n/decorators'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - import { AddFavoriteDto } from './dto/add-favorite.dto'; import { FavoritesService } from './favorites.service'; diff --git a/packages/cli/src/modules/favorites/favorites.service.ts b/packages/cli/src/modules/favorites/favorites.service.ts index a7de5200a80..59c478c5a43 100644 --- a/packages/cli/src/modules/favorites/favorites.service.ts +++ b/packages/cli/src/modules/favorites/favorites.service.ts @@ -1,4 +1,5 @@ import type { FavoriteResourceType } from '@n8n/api-types'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import { FolderRepository, ProjectRepository, @@ -11,9 +12,6 @@ import { Service } from '@n8n/di'; import { hasGlobalScope } from '@n8n/permissions'; import { In } from '@n8n/typeorm'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import { UserFavoriteRepository } from './database/repositories/user-favorite.repository'; import type { FavoriteResourceMeta as ResourceMeta, diff --git a/packages/cli/src/modules/insights/__tests__/insights.controller.test.ts b/packages/cli/src/modules/insights/__tests__/insights.controller.test.ts index 0023e60789c..2c1f5ae0932 100644 --- a/packages/cli/src/modules/insights/__tests__/insights.controller.test.ts +++ b/packages/cli/src/modules/insights/__tests__/insights.controller.test.ts @@ -1,12 +1,11 @@ import { LicenseState } from '@n8n/backend-common'; +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import { mockInstance, testDb } from '@n8n/backend-test-utils'; import type { AuthenticatedRequest } from '@n8n/db'; import { Container } from '@n8n/di'; import { DateTime } from 'luxon'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { WorkflowSharingService } from '@/workflows/workflow-sharing.service'; import { TypeToNumber, type TypeUnitNumber } from '../database/entities/insights-shared'; diff --git a/packages/cli/src/modules/insights/__tests__/insights.service.integration.test.ts b/packages/cli/src/modules/insights/__tests__/insights.service.integration.test.ts index 8396950161f..482f19cde6f 100644 --- a/packages/cli/src/modules/insights/__tests__/insights.service.integration.test.ts +++ b/packages/cli/src/modules/insights/__tests__/insights.service.integration.test.ts @@ -1,4 +1,5 @@ import type { LicenseState } from '@n8n/backend-common'; +import { ForbiddenError } from '@n8n/backend-services'; import { createTeamProject, createWorkflow, @@ -18,7 +19,6 @@ import type { MockInstance, Mocked } from 'vitest'; import type { MockProxy } from 'vitest-mock-extended'; import { mock } from 'vitest-mock-extended'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import type { WorkflowSharingService } from '@/workflows/workflow-sharing.service'; import { createMember } from '@test-integration/db/users'; diff --git a/packages/cli/src/modules/insights/insights.controller.ts b/packages/cli/src/modules/insights/insights.controller.ts index 057a1fa92ab..483ecdf3927 100644 --- a/packages/cli/src/modules/insights/insights.controller.ts +++ b/packages/cli/src/modules/insights/insights.controller.ts @@ -5,16 +5,13 @@ import type { RestrictedInsightsByTime, } from '@n8n/api-types'; import { InsightsDateFilterDto, ListInsightsWorkflowQueryDto } from '@n8n/api-types'; +import { BadRequestError, ForbiddenError, InternalServerError } from '@n8n/backend-services'; import { AuthenticatedRequest } from '@n8n/db'; import { Get, GlobalScope, Licensed, Query, RestController } from '@n8n/decorators'; import { DateTime } from 'luxon'; import { UserError } from 'n8n-workflow'; import { z } from 'zod'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { InternalServerError } from '@/errors/response-errors/internal-server.error'; - import { InsightsService } from './insights.service'; @RestController('/insights') diff --git a/packages/cli/src/modules/insights/insights.service.ts b/packages/cli/src/modules/insights/insights.service.ts index 7a4876428cb..d86ffde441e 100644 --- a/packages/cli/src/modules/insights/insights.service.ts +++ b/packages/cli/src/modules/insights/insights.service.ts @@ -4,13 +4,13 @@ import { type RestrictedInsightsByTime, } from '@n8n/api-types'; import { LicenseState, Logger } from '@n8n/backend-common'; +import { ForbiddenError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import { Container, Service } from '@n8n/di'; import { DateTime } from 'luxon'; import { InstanceSettings } from 'n8n-core'; import { UserError } from 'n8n-workflow'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { userHasScopes } from '@/permissions.ee/check-access'; import { WorkflowSharingService } from '@/workflows/workflow-sharing.service'; diff --git a/packages/cli/src/modules/instance-ai/__tests__/instance-ai-pending-agent.service.test.ts b/packages/cli/src/modules/instance-ai/__tests__/instance-ai-pending-agent.service.test.ts index 573b39c22e8..03c34c2ec7a 100644 --- a/packages/cli/src/modules/instance-ai/__tests__/instance-ai-pending-agent.service.test.ts +++ b/packages/cli/src/modules/instance-ai/__tests__/instance-ai-pending-agent.service.test.ts @@ -1,11 +1,10 @@ import type { ModuleRegistry } from '@n8n/backend-common'; +import { ForbiddenError, NotFoundError } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import type { User } from '@n8n/db'; import { beforeEach, describe, expect, it, vi } from 'vitest'; import { mock } from 'vitest-mock-extended'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { AgentDefaultModelResolverService } from '@/modules/agents/agent-default-model-resolver.service'; import { AgentRunnableStateService } from '@/modules/agents/agent-runnable-state.service'; import { AgentsService } from '@/modules/agents/agents.service'; diff --git a/packages/cli/src/modules/instance-ai/__tests__/instance-ai-settings.service.test.ts b/packages/cli/src/modules/instance-ai/__tests__/instance-ai-settings.service.test.ts index e14f7c7ba02..1be27e5eec7 100644 --- a/packages/cli/src/modules/instance-ai/__tests__/instance-ai-settings.service.test.ts +++ b/packages/cli/src/modules/instance-ai/__tests__/instance-ai-settings.service.test.ts @@ -1,6 +1,7 @@ import { DEFAULT_INSTANCE_AI_PERMISSIONS } from '@n8n/api-types'; import type { InstanceAiPermissions } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { UnprocessableRequestError } from '@n8n/backend-services'; import type { InstanceAiConfig } from '@n8n/config'; import type { CredentialsEntity, @@ -12,7 +13,6 @@ import type { import { Container } from '@n8n/di'; import { mock } from 'vitest-mock-extended'; -import { UnprocessableRequestError } from '@/errors/response-errors/unprocessable.error'; import type { EventService } from '@/events/event.service'; import type { AiService } from '@/services/ai.service'; import { diff --git a/packages/cli/src/modules/instance-ai/__tests__/instance-ai-test.controller.test.ts b/packages/cli/src/modules/instance-ai/__tests__/instance-ai-test.controller.test.ts index 412a1b7b31d..fb080e5adbe 100644 --- a/packages/cli/src/modules/instance-ai/__tests__/instance-ai-test.controller.test.ts +++ b/packages/cli/src/modules/instance-ai/__tests__/instance-ai-test.controller.test.ts @@ -1,3 +1,4 @@ +import { ForbiddenError } from '@n8n/backend-services'; import { z } from 'zod'; vi.mock('@n8n/instance-ai', () => ({ @@ -15,8 +16,6 @@ import type { ProjectRepository, UserRepository, WorkflowRepository } from '@n8n import type { Request, Response } from 'express'; import { mock } from 'vitest-mock-extended'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; - import type { InstanceAiMemoryService } from '../instance-ai-memory.service'; import { InstanceAiTestController } from '../instance-ai-test.controller'; import type { InstanceAiService } from '../instance-ai.service'; diff --git a/packages/cli/src/modules/instance-ai/__tests__/instance-ai.adapter.service.test.ts b/packages/cli/src/modules/instance-ai/__tests__/instance-ai.adapter.service.test.ts index c82ca6e9f2f..4e92417c9e6 100644 --- a/packages/cli/src/modules/instance-ai/__tests__/instance-ai.adapter.service.test.ts +++ b/packages/cli/src/modules/instance-ai/__tests__/instance-ai.adapter.service.test.ts @@ -1,3 +1,11 @@ +import { + BadRequestError, + ConflictError, + ForbiddenError, + InternalServerError, + LockedError, + NotFoundError, +} from '@n8n/backend-services'; // Mock the barrel import so these adapter tests only exercise local formatting helpers. vi.mock('@n8n/instance-ai', async () => { const { WorkflowSaveConflictError } = await import( @@ -1819,12 +1827,6 @@ import { WorkflowNotFoundError } from '../../../../../@n8n/instance-ai/src/error import { WorkflowSaveConflictError } from '../../../../../@n8n/instance-ai/src/errors/workflow-save-conflict.error'; import type { WorkflowService } from '@/workflows/workflow.service'; import { AiPreferenceScopeFullError } from '@/errors/response-errors/ai-preference-scope-full.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { InternalServerError } from '@/errors/response-errors/internal-server.error'; -import { LockedError } from '@/errors/response-errors/locked.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { License } from '@/license'; import type { AiPreferenceService } from '@/services/ai-preference.service'; import type { RoleService } from '@/services/role.service'; diff --git a/packages/cli/src/modules/instance-ai/__tests__/instance-ai.controller.test.ts b/packages/cli/src/modules/instance-ai/__tests__/instance-ai.controller.test.ts index 935f6e72877..8276ba24d53 100644 --- a/packages/cli/src/modules/instance-ai/__tests__/instance-ai.controller.test.ts +++ b/packages/cli/src/modules/instance-ai/__tests__/instance-ai.controller.test.ts @@ -1,3 +1,9 @@ +import { + BadRequestError, + ConflictError, + ForbiddenError, + NotFoundError, +} from '@n8n/backend-services'; import type { Mock } from 'vitest'; import { z } from 'zod'; @@ -72,10 +78,6 @@ import type { Request, Response } from 'express'; import { UserError } from 'n8n-workflow'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { CredentialsService } from '@/credentials/credentials.service'; import type { Push } from '@/push'; import type { Publisher } from '@/scaling/pubsub/publisher.service'; diff --git a/packages/cli/src/modules/instance-ai/__tests__/instance-ai.service.test.ts b/packages/cli/src/modules/instance-ai/__tests__/instance-ai.service.test.ts index 40661a94a2b..3c8cd4112dc 100644 --- a/packages/cli/src/modules/instance-ai/__tests__/instance-ai.service.test.ts +++ b/packages/cli/src/modules/instance-ai/__tests__/instance-ai.service.test.ts @@ -1,3 +1,4 @@ +import { ForbiddenError } from '@n8n/backend-services'; // Manual mocks — must be declared before any imports that touch the mocked modules. vi.mock('@n8n/agents', async (importOriginal) => ({ ...(await importOriginal()), @@ -287,7 +288,6 @@ import { UserError } from 'n8n-workflow'; import type { Mock, MockedFunction } from 'vitest'; import { InstanceAiBuilderDelegateAdapterService } from '@/modules/agents/instance-ai-builder-delegate.adapter'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { userHasScopes } from '@/permissions.ee/check-access'; import { AI_PREFERENCES_CLEARED_BLOCK, diff --git a/packages/cli/src/modules/instance-ai/eval/__tests__/thread-restore.service.test.ts b/packages/cli/src/modules/instance-ai/eval/__tests__/thread-restore.service.test.ts index 15c0a9a4860..8f49798544f 100644 --- a/packages/cli/src/modules/instance-ai/eval/__tests__/thread-restore.service.test.ts +++ b/packages/cli/src/modules/instance-ai/eval/__tests__/thread-restore.service.test.ts @@ -1,4 +1,5 @@ import { ModuleRegistry, type LicenseState } from '@n8n/backend-common'; +import { BadRequestError } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import type { CredentialsEntity, @@ -15,7 +16,6 @@ import type { PolicyCleared, PolicyViolation } from '@n8n/decorators'; import type { EntityManager } from '@n8n/typeorm'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { AgentsService } from '@/modules/agents/agents.service'; import type { DataTable } from '@/modules/data-table/data-table.entity'; import type { DataTableService } from '@/modules/data-table/data-table.service'; diff --git a/packages/cli/src/modules/instance-ai/eval/thread-restore.service.ts b/packages/cli/src/modules/instance-ai/eval/thread-restore.service.ts index 3ec99f55bef..c9d51631472 100644 --- a/packages/cli/src/modules/instance-ai/eval/thread-restore.service.ts +++ b/packages/cli/src/modules/instance-ai/eval/thread-restore.service.ts @@ -6,6 +6,7 @@ import { type InstanceAiEvalSeedWorkflow, } from '@n8n/api-types'; import { LicenseState, ModuleRegistry } from '@n8n/backend-common'; +import { BadRequestError } from '@n8n/backend-services'; import { CredentialsRepository, SharedWorkflowRepository, @@ -26,7 +27,6 @@ import { } from 'n8n-workflow'; import { randomUUID } from 'node:crypto'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { AgentsService } from '@/modules/agents/agents.service'; import { DataTableService } from '@/modules/data-table/data-table.service'; import { PolicyEnforcementService } from '@/policy/policy-enforcement.service'; diff --git a/packages/cli/src/modules/instance-ai/instance-ai-memory.service.ts b/packages/cli/src/modules/instance-ai/instance-ai-memory.service.ts index 5be8c9dcf70..05d14aab915 100644 --- a/packages/cli/src/modules/instance-ai/instance-ai-memory.service.ts +++ b/packages/cli/src/modules/instance-ai/instance-ai-memory.service.ts @@ -12,6 +12,7 @@ import type { InstanceAiThreadSource, } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { BadRequestError, ForbiddenError, NotFoundError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import type { InstanceAiConfig } from '@n8n/config'; import { Service } from '@n8n/di'; @@ -25,10 +26,6 @@ import { type AgentTreeSnapshot, } from '@n8n/instance-ai'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import type { InstanceAiCheckpoint } from './entities/instance-ai-checkpoint.entity'; import { DurableLogMetrics } from './event-bus/durable-log-metrics'; import { diff --git a/packages/cli/src/modules/instance-ai/instance-ai-pending-agent.service.ts b/packages/cli/src/modules/instance-ai/instance-ai-pending-agent.service.ts index 4efb284cc1e..d0048a421d0 100644 --- a/packages/cli/src/modules/instance-ai/instance-ai-pending-agent.service.ts +++ b/packages/cli/src/modules/instance-ai/instance-ai-pending-agent.service.ts @@ -1,11 +1,10 @@ import { ModuleRegistry } from '@n8n/backend-common'; +import { ForbiddenError, NotFoundError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import { Container, Service } from '@n8n/di'; import { threadAuthorizesAgentAdoption } from '@n8n/instance-ai'; import type { Scope } from '@n8n/permissions'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { AgentDefaultModelResolverService } from '@/modules/agents/agent-default-model-resolver.service'; import { AgentRunnableStateService } from '@/modules/agents/agent-runnable-state.service'; import { AgentsService } from '@/modules/agents/agents.service'; diff --git a/packages/cli/src/modules/instance-ai/instance-ai-run-limit.error.ts b/packages/cli/src/modules/instance-ai/instance-ai-run-limit.error.ts index 023d428155d..e236802db33 100644 --- a/packages/cli/src/modules/instance-ai/instance-ai-run-limit.error.ts +++ b/packages/cli/src/modules/instance-ai/instance-ai-run-limit.error.ts @@ -1,6 +1,5 @@ import type { InstanceAiRunLimitMeta } from '@n8n/api-types'; - -import { TooManyRequestsError } from '@/errors/response-errors/too-many-requests.error'; +import { TooManyRequestsError } from '@n8n/backend-services'; /** * A new user turn was refused because a concurrency cap was already full. diff --git a/packages/cli/src/modules/instance-ai/instance-ai-settings.service.ts b/packages/cli/src/modules/instance-ai/instance-ai-settings.service.ts index b70483cdf9c..937a874ed4c 100644 --- a/packages/cli/src/modules/instance-ai/instance-ai-settings.service.ts +++ b/packages/cli/src/modules/instance-ai/instance-ai-settings.service.ts @@ -1,3 +1,4 @@ +import { ConflictError, ForbiddenError, UnprocessableRequestError } from '@n8n/backend-services'; import { isDeepStrictEqual } from 'node:util'; import { @@ -42,9 +43,6 @@ import { type InstanceCredentialUse, type ResolvedInstanceCredential, } from '@/credentials/instance-credential-broker'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { UnprocessableRequestError } from '@/errors/response-errors/unprocessable.error'; import { EventService } from '@/events/event.service'; import { AiService } from '@/services/ai.service'; import { diff --git a/packages/cli/src/modules/instance-ai/instance-ai-test.controller.ts b/packages/cli/src/modules/instance-ai/instance-ai-test.controller.ts index b1f75f37eb6..0e6bcc1f5e3 100644 --- a/packages/cli/src/modules/instance-ai/instance-ai-test.controller.ts +++ b/packages/cli/src/modules/instance-ai/instance-ai-test.controller.ts @@ -1,10 +1,9 @@ +import { ForbiddenError } from '@n8n/backend-services'; import { ProjectRepository, UserRepository, WorkflowRepository } from '@n8n/db'; import { Body, Delete, Get, Param, Post, RestController } from '@n8n/decorators'; import type { Request, Response } from 'express'; import { v4 as uuidv4 } from 'uuid'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; - import { InstanceAiMemoryService } from './instance-ai-memory.service'; import { InstanceAiService } from './instance-ai.service'; import { InstanceAiThreadRepository } from './repositories/instance-ai-thread.repository'; diff --git a/packages/cli/src/modules/instance-ai/instance-ai.adapter.service.ts b/packages/cli/src/modules/instance-ai/instance-ai.adapter.service.ts index 5162c06b945..1702e8626a9 100644 --- a/packages/cli/src/modules/instance-ai/instance-ai.adapter.service.ts +++ b/packages/cli/src/modules/instance-ai/instance-ai.adapter.service.ts @@ -24,6 +24,7 @@ import { import type { AiGatewayConfigDto } from '@n8n/api-types'; import { LicenseState, Logger, ModuleRegistry } from '@n8n/backend-common'; import { OutboundHttp } from '@n8n/backend-network'; +import { ConflictError, LockedError, NotFoundError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import { Time, TOOL_EXECUTOR_NODE_NAME } from '@n8n/constants'; import type { User, ExecutionSummaries, EvaluationConfig } from '@n8n/db'; @@ -151,9 +152,6 @@ import { CollaborationService } from '@/collaboration/collaboration.service'; import { CredentialsOverwrites } from '@/credentials-overwrites'; import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; import { CredentialsService } from '@/credentials/credentials.service'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { LockedError } from '@/errors/response-errors/locked.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { EvaluationConfigService } from '@/evaluation.ee/evaluation-config.service'; import { LlmJudgeProviderRegistry } from '@/evaluation.ee/llm-judge-provider-registry'; import { EventService } from '@/events/event.service'; diff --git a/packages/cli/src/modules/instance-ai/instance-ai.controller.ts b/packages/cli/src/modules/instance-ai/instance-ai.controller.ts index b1bf207bd13..fb0f2993692 100644 --- a/packages/cli/src/modules/instance-ai/instance-ai.controller.ts +++ b/packages/cli/src/modules/instance-ai/instance-ai.controller.ts @@ -34,6 +34,12 @@ import type { InstanceAiEvent, } from '@n8n/api-types'; import { ModuleRegistry } from '@n8n/backend-common'; +import { + BadRequestError, + ConflictError, + ForbiddenError, + NotFoundError, +} from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import { AuthenticatedRequest, User, UserRepository } from '@n8n/db'; import { Container } from '@n8n/di'; @@ -85,10 +91,6 @@ import { InstanceAiVerificationService } from './instance-ai-verification.servic import { InstanceAiService } from './instance-ai.service'; import { CredentialsService } from '@/credentials/credentials.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { Push } from '@/push'; import { Publisher } from '@/scaling/pubsub/publisher.service'; import { ProjectService } from '@/services/project.service.ee'; diff --git a/packages/cli/src/modules/instance-ai/instance-ai.service.ts b/packages/cli/src/modules/instance-ai/instance-ai.service.ts index 93d07b61b95..97ab367c3a5 100644 --- a/packages/cli/src/modules/instance-ai/instance-ai.service.ts +++ b/packages/cli/src/modules/instance-ai/instance-ai.service.ts @@ -39,6 +39,7 @@ import { } from '@n8n/api-types'; import { Logger, ModuleRegistry } from '@n8n/backend-common'; import { SsrfProtectionService } from '@n8n/backend-network'; +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import { GlobalConfig, SsrfProtectionConfig, @@ -150,8 +151,6 @@ import { OperationalError, UnexpectedError, UserError } from 'n8n-workflow'; import { nanoid } from 'nanoid'; import { N8N_VERSION, WORKFLOW_SDK_VERSION } from '@/constants'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { EventService } from '@/events/event.service'; import { InstanceAiBuilderDelegateAdapterService } from '@/modules/agents/instance-ai-builder-delegate.adapter'; import { InstanceAiAgentContextAdapterService } from '@/modules/agents/instance-ai-agent-context.adapter'; diff --git a/packages/cli/src/modules/instance-ai/mcp/__tests__/instance-ai-mcp-connection.controller.test.ts b/packages/cli/src/modules/instance-ai/mcp/__tests__/instance-ai-mcp-connection.controller.test.ts index 2bd9b7c3467..e6d7ba9994e 100644 --- a/packages/cli/src/modules/instance-ai/mcp/__tests__/instance-ai-mcp-connection.controller.test.ts +++ b/packages/cli/src/modules/instance-ai/mcp/__tests__/instance-ai-mcp-connection.controller.test.ts @@ -1,8 +1,8 @@ +import { NotFoundError } from '@n8n/backend-services'; import type { AuthenticatedRequest, CredentialsEntity, User } from '@n8n/db'; import { mock } from 'vitest-mock-extended'; import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { McpRegistryService } from '@/modules/mcp-registry/registry/mcp-registry.service'; import type { McpRegistryServer } from '@/modules/mcp-registry/registry/mcp-registry.types'; diff --git a/packages/cli/src/modules/instance-ai/mcp/__tests__/instance-ai-mcp-registry.service.test.ts b/packages/cli/src/modules/instance-ai/mcp/__tests__/instance-ai-mcp-registry.service.test.ts index 39360e6f445..2c829e62eab 100644 --- a/packages/cli/src/modules/instance-ai/mcp/__tests__/instance-ai-mcp-registry.service.test.ts +++ b/packages/cli/src/modules/instance-ai/mcp/__tests__/instance-ai-mcp-registry.service.test.ts @@ -1,6 +1,7 @@ import type { BuiltTool } from '@n8n/agents'; import type { Logger } from '@n8n/backend-common'; import type { CustomFetch, HttpTransport, OutboundHttp } from '@n8n/backend-network'; +import { BadRequestError, ConflictError, NotFoundError } from '@n8n/backend-services'; import type { CredentialsEntity, User } from '@n8n/db'; import { QueryFailedError } from '@n8n/typeorm'; import { mock } from 'vitest-mock-extended'; @@ -8,9 +9,6 @@ import { mock } from 'vitest-mock-extended'; import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; import type { CredentialsService } from '@/credentials/credentials.service'; import type { CredentialTypes } from '@/credential-types'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { EventService } from '@/events/event.service'; import type { McpRegistryService } from '@/modules/mcp-registry/registry/mcp-registry.service'; import type { McpRegistryServer } from '@/modules/mcp-registry/registry/mcp-registry.types'; diff --git a/packages/cli/src/modules/instance-ai/mcp/instance-ai-mcp-connection.controller.ts b/packages/cli/src/modules/instance-ai/mcp/instance-ai-mcp-connection.controller.ts index e9dbd34adac..6cb2ba72f1a 100644 --- a/packages/cli/src/modules/instance-ai/mcp/instance-ai-mcp-connection.controller.ts +++ b/packages/cli/src/modules/instance-ai/mcp/instance-ai-mcp-connection.controller.ts @@ -6,6 +6,7 @@ import { InstanceAiMcpCreateConnectionRequestDto, InstanceAiMcpUpdateConnectionRequestDto, } from '@n8n/api-types'; +import { NotFoundError } from '@n8n/backend-services'; import { AuthenticatedRequest } from '@n8n/db'; import { Body, @@ -20,7 +21,6 @@ import { import type { Response } from 'express'; import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { McpRegistryService } from '@/modules/mcp-registry/registry/mcp-registry.service'; import type { McpRegistryServer } from '@/modules/mcp-registry/registry/mcp-registry.types'; diff --git a/packages/cli/src/modules/instance-ai/mcp/instance-ai-mcp-registry.service.ts b/packages/cli/src/modules/instance-ai/mcp/instance-ai-mcp-registry.service.ts index 2b3bb93eaa2..976c60340b8 100644 --- a/packages/cli/src/modules/instance-ai/mcp/instance-ai-mcp-registry.service.ts +++ b/packages/cli/src/modules/instance-ai/mcp/instance-ai-mcp-registry.service.ts @@ -8,6 +8,7 @@ import type { import { isObjectLiteral, Logger } from '@n8n/backend-common'; import type { CustomFetch } from '@n8n/backend-network'; import { OutboundHttp } from '@n8n/backend-network'; +import { BadRequestError, ConflictError, NotFoundError } from '@n8n/backend-services'; import { isUniqueConstraintError, type CredentialsEntity, type User } from '@n8n/db'; import { Service } from '@n8n/di'; import type { McpServerConfig } from '@n8n/instance-ai'; @@ -18,9 +19,6 @@ import { randomUUID } from 'node:crypto'; import { CredentialTypes } from '@/credential-types'; import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; import { CredentialsService } from '@/credentials/credentials.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { EventService } from '@/events/event.service'; import { isSupportedMcpRegistryCredentialType, diff --git a/packages/cli/src/modules/instance-ai/storage/typeorm-agent-memory.ts b/packages/cli/src/modules/instance-ai/storage/typeorm-agent-memory.ts index 9af030203aa..c3e3808e277 100644 --- a/packages/cli/src/modules/instance-ai/storage/typeorm-agent-memory.ts +++ b/packages/cli/src/modules/instance-ai/storage/typeorm-agent-memory.ts @@ -20,6 +20,7 @@ import { type RuntimeSkillStateStore, } from '@n8n/agents'; import { Logger } from '@n8n/backend-common'; +import { ConflictError, ForbiddenError } from '@n8n/backend-services'; import { Service } from '@n8n/di'; import { isRecord } from '@n8n/utils/is-record'; import { @@ -31,9 +32,6 @@ import { In, LessThan, Like } from '@n8n/typeorm'; import { UnexpectedError } from 'n8n-workflow'; import { z } from 'zod'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; - import { TypeORMObservationLogStore } from './typeorm-observation-log-store'; import type { InstanceAiMessage } from '../entities/instance-ai-message.entity'; import type { InstanceAiThread } from '../entities/instance-ai-thread.entity'; diff --git a/packages/cli/src/modules/ldap.ee/ldap.controller.ee.ts b/packages/cli/src/modules/ldap.ee/ldap.controller.ee.ts index bbe359859d7..2c4846c1162 100644 --- a/packages/cli/src/modules/ldap.ee/ldap.controller.ee.ts +++ b/packages/cli/src/modules/ldap.ee/ldap.controller.ee.ts @@ -1,9 +1,9 @@ +import { BadRequestError } from '@n8n/backend-services'; import type { LdapConfig } from '@n8n/constants'; import { Get, Post, Put, RestController, GlobalScope, Licensed } from '@n8n/decorators'; import pick from 'lodash/pick'; import { CREDENTIAL_BLANKING_VALUE } from 'n8n-workflow'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { EventService } from '@/events/event.service'; import { NON_SENSIBLE_LDAP_CONFIG_PROPERTIES } from './constants'; diff --git a/packages/cli/src/modules/ldap.ee/ldap.service.ee.ts b/packages/cli/src/modules/ldap.ee/ldap.service.ee.ts index 3b923dbc5c4..3c73ba06e1e 100644 --- a/packages/cli/src/modules/ldap.ee/ldap.service.ee.ts +++ b/packages/cli/src/modules/ldap.ee/ldap.service.ee.ts @@ -1,4 +1,5 @@ import { LicenseState, Logger } from '@n8n/backend-common'; +import { BadRequestError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import type { LdapConfig } from '@n8n/constants'; import { LDAP_FEATURE_NAME } from '@n8n/constants'; @@ -13,7 +14,6 @@ import { Cipher } from 'n8n-core'; import { CREDENTIAL_BLANKING_VALUE, jsonParse, UnexpectedError } from 'n8n-workflow'; import type { ConnectionOptions } from 'tls'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { EventService } from '@/events/event.service'; import { assertAuthenticationMethodCanBeEnabled, diff --git a/packages/cli/src/modules/log-streaming.ee/__tests__/log-streaming.controller.test.ts b/packages/cli/src/modules/log-streaming.ee/__tests__/log-streaming.controller.test.ts index bf71c561197..778e37f2e42 100644 --- a/packages/cli/src/modules/log-streaming.ee/__tests__/log-streaming.controller.test.ts +++ b/packages/cli/src/modules/log-streaming.ee/__tests__/log-streaming.controller.test.ts @@ -1,4 +1,5 @@ import type { OutboundHttp } from '@n8n/backend-network'; +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import type { InstanceSettingsLoaderConfig } from '@n8n/config'; import type { AuthenticatedRequest, CredentialsEntity, User } from '@n8n/db'; import { MessageEventBusDestinationTypeNames } from 'n8n-workflow'; @@ -9,8 +10,6 @@ import type { import { mock } from 'vitest-mock-extended'; import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import type { MessageEventBus } from '@/eventbus/message-event-bus/message-event-bus'; import type { MessageEventBusDestination } from '../destinations/message-event-bus-destination.ee'; diff --git a/packages/cli/src/modules/log-streaming.ee/destinations/__tests__/destination-credentials-access.test.ts b/packages/cli/src/modules/log-streaming.ee/destinations/__tests__/destination-credentials-access.test.ts index 0070f1d54bf..8061db08821 100644 --- a/packages/cli/src/modules/log-streaming.ee/destinations/__tests__/destination-credentials-access.test.ts +++ b/packages/cli/src/modules/log-streaming.ee/destinations/__tests__/destination-credentials-access.test.ts @@ -1,9 +1,9 @@ +import { ForbiddenError } from '@n8n/backend-services'; import type { CredentialsEntity, User } from '@n8n/db'; import type { MessageEventBusDestinationOptions } from 'n8n-workflow'; import { mock } from 'vitest-mock-extended'; import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { assertUserCanUseDestinationCredentials } from '../destination-credentials-access'; diff --git a/packages/cli/src/modules/log-streaming.ee/destinations/destination-credentials-access.ts b/packages/cli/src/modules/log-streaming.ee/destinations/destination-credentials-access.ts index 91674143fe7..1570cd402e8 100644 --- a/packages/cli/src/modules/log-streaming.ee/destinations/destination-credentials-access.ts +++ b/packages/cli/src/modules/log-streaming.ee/destinations/destination-credentials-access.ts @@ -1,8 +1,8 @@ +import { ForbiddenError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import type { MessageEventBusDestinationOptions } from 'n8n-workflow'; import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; /** * Verifies the requesting user has access to every credential referenced by a diff --git a/packages/cli/src/modules/log-streaming.ee/log-streaming.controller.ts b/packages/cli/src/modules/log-streaming.ee/log-streaming.controller.ts index 17c50df76fc..37f7cf8c4b4 100644 --- a/packages/cli/src/modules/log-streaming.ee/log-streaming.controller.ts +++ b/packages/cli/src/modules/log-streaming.ee/log-streaming.controller.ts @@ -5,14 +5,13 @@ import { TestDestinationQueryDto, } from '@n8n/api-types'; import { OutboundHttp } from '@n8n/backend-network'; +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import { InstanceSettingsLoaderConfig } from '@n8n/config'; import type { AuthenticatedRequest } from '@n8n/db'; import { Delete, Get, GlobalScope, Licensed, Post, Query, RestController } from '@n8n/decorators'; import type { MessageEventBusDestinationOptions } from 'n8n-workflow'; import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { eventNamesAll } from '@/eventbus/event-message-classes'; import { MessageEventBus } from '@/eventbus/message-event-bus/message-event-bus'; diff --git a/packages/cli/src/modules/mcp-registry/__tests__/mcp-registry-test.controller.test.ts b/packages/cli/src/modules/mcp-registry/__tests__/mcp-registry-test.controller.test.ts index dfee86df35b..0aa2f15cff0 100644 --- a/packages/cli/src/modules/mcp-registry/__tests__/mcp-registry-test.controller.test.ts +++ b/packages/cli/src/modules/mcp-registry/__tests__/mcp-registry-test.controller.test.ts @@ -1,7 +1,6 @@ +import { ForbiddenError } from '@n8n/backend-services'; import { mock } from 'vitest-mock-extended'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; - import { McpRegistryTestController } from '../mcp-registry-test.controller'; import { McpRegistryServerEntity } from '../registry/mcp-registry-server.entity'; import type { McpRegistryServerRepository } from '../registry/mcp-registry-server.repository'; diff --git a/packages/cli/src/modules/mcp-registry/mcp-registry-test.controller.ts b/packages/cli/src/modules/mcp-registry/mcp-registry-test.controller.ts index 1c9cae8eca7..a582ebdb0b2 100644 --- a/packages/cli/src/modules/mcp-registry/mcp-registry-test.controller.ts +++ b/packages/cli/src/modules/mcp-registry/mcp-registry-test.controller.ts @@ -1,7 +1,6 @@ +import { ForbiddenError } from '@n8n/backend-services'; import { Post, RestController } from '@n8n/decorators'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; - import { McpRegistryServerEntity } from './registry/mcp-registry-server.entity'; import { McpRegistryServerRepository } from './registry/mcp-registry-server.repository'; import { McpRegistryService } from './registry/mcp-registry.service'; diff --git a/packages/cli/src/modules/mcp/__tests__/agent-tools.service.test.ts b/packages/cli/src/modules/mcp/__tests__/agent-tools.service.test.ts index 5ba3c62d8db..83646b6b192 100644 --- a/packages/cli/src/modules/mcp/__tests__/agent-tools.service.test.ts +++ b/packages/cli/src/modules/mcp/__tests__/agent-tools.service.test.ts @@ -1,6 +1,7 @@ import { zodToJsonSchema } from '@n8n/ai-utilities/json-schema'; import { APPROVAL_RESUME_SCHEMA } from '@n8n/agents/tool'; import type { AgentJsonConfig } from '@n8n/api-types'; +import { ConflictError } from '@n8n/backend-services'; import { mockInstance, mockLogger } from '@n8n/backend-test-utils'; import { OutboundHttp } from '@n8n/backend-network'; import { User, type WorkflowRepository } from '@n8n/db'; @@ -27,7 +28,6 @@ vi.mock('@/modules/agents/json-config/mcp-client-factory', () => ({ import { CredentialsService } from '@/credentials/credentials.service'; import type { EventService } from '@/events/event.service'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; import { AgentConfigService } from '@/modules/agents/agent-config.service'; import { AgentCustomToolsService } from '@/modules/agents/agent-custom-tools.service'; import { AgentIntegrationManagementService } from '@/modules/agents/agent-integration-management.service'; diff --git a/packages/cli/src/modules/mcp/__tests__/create-workflow-from-code.tool.test.ts b/packages/cli/src/modules/mcp/__tests__/create-workflow-from-code.tool.test.ts index ff3daaaa2b3..c20358da591 100644 --- a/packages/cli/src/modules/mcp/__tests__/create-workflow-from-code.tool.test.ts +++ b/packages/cli/src/modules/mcp/__tests__/create-workflow-from-code.tool.test.ts @@ -1,4 +1,5 @@ import { Logger } from '@n8n/backend-common'; +import { NotFoundError } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import { ProjectRepository, User, WorkflowEntity } from '@n8n/db'; import { NodeConnectionTypes, type INode } from 'n8n-workflow'; @@ -10,7 +11,6 @@ import { McpPostSaveMetricsService } from '../mcp-post-save-metrics.service'; import { createCreateWorkflowFromCodeTool } from '../tools/workflow-builder/create-workflow-from-code.tool'; import { CredentialsService } from '@/credentials/credentials.service'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { NodeTypes } from '@/node-types'; import type { AiGatewayService } from '@/services/ai-gateway.service'; import { UrlService } from '@/services/url.service'; diff --git a/packages/cli/src/modules/mcp/__tests__/credential-validation.test.ts b/packages/cli/src/modules/mcp/__tests__/credential-validation.test.ts index 387a3f56f13..cac4a4eed78 100644 --- a/packages/cli/src/modules/mcp/__tests__/credential-validation.test.ts +++ b/packages/cli/src/modules/mcp/__tests__/credential-validation.test.ts @@ -1,10 +1,10 @@ +import { NotFoundError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import type { INode, INodeTypeDescription, INodeCredentialDescription } from 'n8n-workflow'; import { validateWorkflowCredentialReferences } from '../tools/workflow-builder/credential-validation'; import type { CredentialsService } from '@/credentials/credentials.service'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { NodeTypes } from '@/node-types'; const user = { id: 'user-1' } as User; diff --git a/packages/cli/src/modules/mcp/__tests__/mcp.settings.controller.test.ts b/packages/cli/src/modules/mcp/__tests__/mcp.settings.controller.test.ts index b4dad64a84d..7aafa2b175a 100644 --- a/packages/cli/src/modules/mcp/__tests__/mcp.settings.controller.test.ts +++ b/packages/cli/src/modules/mcp/__tests__/mcp.settings.controller.test.ts @@ -1,11 +1,11 @@ import { Logger, ModuleRegistry } from '@n8n/backend-common'; +import { ForbiddenError } from '@n8n/backend-services'; import { InstanceSettingsLoaderConfig } from '@n8n/config'; import { type ApiKey, type AuthenticatedRequest, User, Role } from '@n8n/db'; import { Container } from '@n8n/di'; import type { Response } from 'express'; import { mock, mockDeep } from 'vitest-mock-extended'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { EventService } from '@/events/event.service'; import type { ListQuery } from '@/requests'; import { WorkflowService } from '@/workflows/workflow.service'; diff --git a/packages/cli/src/modules/mcp/__tests__/mcp.settings.service.test.ts b/packages/cli/src/modules/mcp/__tests__/mcp.settings.service.test.ts index 266a6d0b2d0..adc050fa728 100644 --- a/packages/cli/src/modules/mcp/__tests__/mcp.settings.service.test.ts +++ b/packages/cli/src/modules/mcp/__tests__/mcp.settings.service.test.ts @@ -1,4 +1,5 @@ import type { Logger } from '@n8n/backend-common'; +import { BadRequestError } from '@n8n/backend-services'; import type { GlobalConfig } from '@n8n/config'; import type { Settings, SettingsRepository, User, WorkflowRepository } from '@n8n/db'; import { WorkflowEntity } from '@n8n/db'; @@ -8,7 +9,6 @@ import type { Mock } from 'vitest'; import { mock } from 'vitest-mock-extended'; import type { CollaborationService } from '@/collaboration/collaboration.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import type { CacheService } from '@/services/cache/cache.service'; import type { WorkflowFinderService } from '@/workflows/workflow-finder.service'; diff --git a/packages/cli/src/modules/mcp/__tests__/publish-workflow.tool.test.ts b/packages/cli/src/modules/mcp/__tests__/publish-workflow.tool.test.ts index 6a793f57dad..0ad0f15bfc5 100644 --- a/packages/cli/src/modules/mcp/__tests__/publish-workflow.tool.test.ts +++ b/packages/cli/src/modules/mcp/__tests__/publish-workflow.tool.test.ts @@ -1,10 +1,10 @@ +import { WorkflowPublishBlockedError } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import { User } from '@n8n/db'; import { v4 as uuid } from 'uuid'; import type { Mock } from 'vitest'; import { CollaborationService } from '@/collaboration/collaboration.service'; -import { WorkflowPublishBlockedError } from '@/errors/response-errors/workflow-publish-blocked.error'; import { Telemetry } from '@/telemetry'; import { WorkflowFinderService } from '@/workflows/workflow-finder.service'; import { WorkflowService } from '@/workflows/workflow.service'; diff --git a/packages/cli/src/modules/mcp/__tests__/save-user-preference.tool.test.ts b/packages/cli/src/modules/mcp/__tests__/save-user-preference.tool.test.ts index 4266cbdb63e..756d52d8a19 100644 --- a/packages/cli/src/modules/mcp/__tests__/save-user-preference.tool.test.ts +++ b/packages/cli/src/modules/mcp/__tests__/save-user-preference.tool.test.ts @@ -1,5 +1,6 @@ import type { AiPreferenceDto } from '@n8n/api-types'; import { AI_PREFERENCE_CONTENT_MAX_LENGTH, AI_PREFERENCE_MAX_PER_SCOPE } from '@n8n/api-types'; +import { BadRequestError, ConflictError, ForbiddenError } from '@n8n/backend-services'; import { mockInstance, mockLogger } from '@n8n/backend-test-utils'; import { GLOBAL_OWNER_ROLE, User } from '@n8n/db'; import { TELEMETRY_EVENT } from '@n8n/telemetry'; @@ -7,9 +8,6 @@ import { CLIENT_CAPABILITIES_META_KEY } from '@modelcontextprotocol/server'; import type { InputRequiredResult } from '@modelcontextprotocol/server'; import { AiPreferenceScopeFullError } from '@/errors/response-errors/ai-preference-scope-full.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { AiPreferenceService } from '@/services/ai-preference.service'; import { UrlService } from '@/services/url.service'; import { Telemetry } from '@/telemetry'; diff --git a/packages/cli/src/modules/mcp/__tests__/undo-user-preference.tool.test.ts b/packages/cli/src/modules/mcp/__tests__/undo-user-preference.tool.test.ts index 346dea77e84..b08461724d5 100644 --- a/packages/cli/src/modules/mcp/__tests__/undo-user-preference.tool.test.ts +++ b/packages/cli/src/modules/mcp/__tests__/undo-user-preference.tool.test.ts @@ -1,10 +1,9 @@ import type { AiPreferenceDto } from '@n8n/api-types'; +import { ForbiddenError, NotFoundError } from '@n8n/backend-services'; import { mockInstance, mockLogger } from '@n8n/backend-test-utils'; import { User } from '@n8n/db'; import { TELEMETRY_EVENT } from '@n8n/telemetry'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { AiPreferenceService } from '@/services/ai-preference.service'; import { Telemetry } from '@/telemetry'; diff --git a/packages/cli/src/modules/mcp/__tests__/update-user-preference.tool.test.ts b/packages/cli/src/modules/mcp/__tests__/update-user-preference.tool.test.ts index 5ee8ec70b80..a7b34b92806 100644 --- a/packages/cli/src/modules/mcp/__tests__/update-user-preference.tool.test.ts +++ b/packages/cli/src/modules/mcp/__tests__/update-user-preference.tool.test.ts @@ -1,11 +1,10 @@ import type { AiPreferenceDto } from '@n8n/api-types'; import { AI_PREFERENCE_CONTENT_MAX_LENGTH } from '@n8n/api-types'; +import { ConflictError, NotFoundError } from '@n8n/backend-services'; import { mockInstance, mockLogger } from '@n8n/backend-test-utils'; import { User } from '@n8n/db'; import { TELEMETRY_EVENT } from '@n8n/telemetry'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { AiPreferenceService } from '@/services/ai-preference.service'; import { UrlService } from '@/services/url.service'; import { Telemetry } from '@/telemetry'; diff --git a/packages/cli/src/modules/mcp/__tests__/update-workflow.tool.test.ts b/packages/cli/src/modules/mcp/__tests__/update-workflow.tool.test.ts index bc9eaafb12a..508332c8a8c 100644 --- a/packages/cli/src/modules/mcp/__tests__/update-workflow.tool.test.ts +++ b/packages/cli/src/modules/mcp/__tests__/update-workflow.tool.test.ts @@ -1,4 +1,5 @@ import { Logger } from '@n8n/backend-common'; +import { NotFoundError } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import { GlobalConfig } from '@n8n/config'; import { SharedWorkflowRepository, User, WorkflowEntity, type Project } from '@n8n/db'; @@ -18,7 +19,6 @@ import { NON_FATAL_OPERATION_TYPES } from '../tools/workflow-builder/workflow-op import { CollaborationService } from '@/collaboration/collaboration.service'; import { CredentialsService } from '@/credentials/credentials.service'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { SubworkflowPolicyDenialError } from '@/errors/subworkflow-policy-denial.error'; import { SubworkflowPolicyChecker } from '@/executions/pre-execution-checks/subworkflow-policy-checker'; import { NodeTypes } from '@/node-types'; diff --git a/packages/cli/src/modules/mcp/mcp-server-middleware.service.ts b/packages/cli/src/modules/mcp/mcp-server-middleware.service.ts index e38247e7b34..09a1bf9ad0c 100644 --- a/packages/cli/src/modules/mcp/mcp-server-middleware.service.ts +++ b/packages/cli/src/modules/mcp/mcp-server-middleware.service.ts @@ -1,9 +1,9 @@ +import { AuthError } from '@n8n/backend-services'; import { AuthenticatedRequest } from '@n8n/db'; import { Service } from '@n8n/di'; import { NextFunction, Response, Request } from 'express'; import { ensureError } from '@n8n/utils/errors/ensure-error'; -import { AuthError } from '@/errors/response-errors/auth.error'; import { JwtService } from '@/services/jwt.service'; import { OAuthTokenVerifierProxy, diff --git a/packages/cli/src/modules/mcp/mcp.settings.controller.ts b/packages/cli/src/modules/mcp/mcp.settings.controller.ts index 1c5385a7c39..1b30faca545 100644 --- a/packages/cli/src/modules/mcp/mcp.settings.controller.ts +++ b/packages/cli/src/modules/mcp/mcp.settings.controller.ts @@ -1,10 +1,10 @@ import { ModuleRegistry, Logger } from '@n8n/backend-common'; +import { ForbiddenError } from '@n8n/backend-services'; import { InstanceSettingsLoaderConfig } from '@n8n/config'; import { type AuthenticatedRequest } from '@n8n/db'; import { Body, Post, Get, Patch, RestController, GlobalScope } from '@n8n/decorators'; import type { Response } from 'express'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { EventService } from '@/events/event.service'; import { listQueryMiddleware } from '@/middlewares'; import type { ListQuery } from '@/requests'; diff --git a/packages/cli/src/modules/mcp/mcp.settings.service.ts b/packages/cli/src/modules/mcp/mcp.settings.service.ts index c164d3b7e53..a6f34bfe38b 100644 --- a/packages/cli/src/modules/mcp/mcp.settings.service.ts +++ b/packages/cli/src/modules/mcp/mcp.settings.service.ts @@ -1,4 +1,5 @@ import { Logger } from '@n8n/backend-common'; +import { BadRequestError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import { SettingsRepository, @@ -17,7 +18,6 @@ import { } from 'n8n-workflow'; import { CollaborationService } from '@/collaboration/collaboration.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { CacheService } from '@/services/cache/cache.service'; import { removeDefaultValues } from '@/workflow-helpers'; import { WorkflowFinderService } from '@/workflows/workflow-finder.service'; diff --git a/packages/cli/src/modules/mcp/tools/agents/agent-tools.service.ts b/packages/cli/src/modules/mcp/tools/agents/agent-tools.service.ts index 9dbd12287fc..41dcff1e6c3 100644 --- a/packages/cli/src/modules/mcp/tools/agents/agent-tools.service.ts +++ b/packages/cli/src/modules/mcp/tools/agents/agent-tools.service.ts @@ -20,6 +20,7 @@ import { type AgentJsonConfig, } from '@n8n/api-types'; import { OutboundHttp } from '@n8n/backend-network'; +import { ConflictError, ForbiddenError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import { Service } from '@n8n/di'; import type { Scope } from '@n8n/permissions'; @@ -28,8 +29,6 @@ import { UserError } from 'n8n-workflow'; import { z } from 'zod'; import { CredentialsService } from '@/credentials/credentials.service'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { AgentConfigService } from '@/modules/agents/agent-config.service'; import { AgentCustomToolsService } from '@/modules/agents/agent-custom-tools.service'; import { AgentIntegrationManagementService } from '@/modules/agents/agent-integration-management.service'; diff --git a/packages/cli/src/modules/mcp/tools/publish-workflow.tool.ts b/packages/cli/src/modules/mcp/tools/publish-workflow.tool.ts index c327a818bc2..c267295f41b 100644 --- a/packages/cli/src/modules/mcp/tools/publish-workflow.tool.ts +++ b/packages/cli/src/modules/mcp/tools/publish-workflow.tool.ts @@ -3,13 +3,13 @@ import { type WorkflowPublishBlockedReason, workflowPublishBlockedDetailsShape, } from '@n8n/api-types'; +import { WorkflowPublishBlockedError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import { ensureError } from '@n8n/utils/errors/ensure-error'; import { jsonStringify } from 'n8n-workflow'; import z from 'zod'; import type { CollaborationService } from '@/collaboration/collaboration.service'; -import { WorkflowPublishBlockedError } from '@/errors/response-errors/workflow-publish-blocked.error'; import type { Telemetry } from '@/telemetry'; import type { WorkflowFinderService } from '@/workflows/workflow-finder.service'; import type { WorkflowService } from '@/workflows/workflow.service'; diff --git a/packages/cli/src/modules/mcp/tools/user-preference-tool.utils.ts b/packages/cli/src/modules/mcp/tools/user-preference-tool.utils.ts index c66e182e5d2..65b6aeb1612 100644 --- a/packages/cli/src/modules/mcp/tools/user-preference-tool.utils.ts +++ b/packages/cli/src/modules/mcp/tools/user-preference-tool.utils.ts @@ -1,9 +1,9 @@ import type { AiPreferenceDto, AiPreferenceScope } from '@n8n/api-types'; import { aiPreferenceScopeOf } from '@n8n/api-types'; +import { NotFoundError } from '@n8n/backend-services'; import type { InferTelemetryProps, TELEMETRY_EVENT } from '@n8n/telemetry'; import z from 'zod'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { AiPreferenceWriteRejection } from '@/services/ai-preference-write'; import { secondsSinceSaved, toAiPreferenceWriteRejection } from '@/services/ai-preference-write'; import type { UrlService } from '@/services/url.service'; diff --git a/packages/cli/src/modules/mcp/tools/workflow-builder/__tests__/error-code.utils.test.ts b/packages/cli/src/modules/mcp/tools/workflow-builder/__tests__/error-code.utils.test.ts index 3dbfca3a2d5..a662b23d1ac 100644 --- a/packages/cli/src/modules/mcp/tools/workflow-builder/__tests__/error-code.utils.test.ts +++ b/packages/cli/src/modules/mcp/tools/workflow-builder/__tests__/error-code.utils.test.ts @@ -1,4 +1,4 @@ -import { NotFoundError } from '@/errors/response-errors/not-found.error'; +import { NotFoundError } from '@n8n/backend-services'; import { getErrorCode } from '../error-code.utils'; diff --git a/packages/cli/src/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.ts b/packages/cli/src/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.ts index e0bdd157085..e8dc7228d48 100644 --- a/packages/cli/src/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.ts +++ b/packages/cli/src/modules/mcp/tools/workflow-builder/create-workflow-from-code.tool.ts @@ -1,4 +1,5 @@ import type { Logger } from '@n8n/backend-common'; +import { NotFoundError } from '@n8n/backend-services'; import { type Folder, type Project, @@ -47,7 +48,6 @@ import { USER_CALLED_MCP_TOOL_EVENT } from '../../mcp.constants'; import type { ToolDefinition, UserCalledMCPToolEventPayload } from '../../mcp.types'; import { getSdkReferenceHint } from '../workflow-validation.utils'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { Telemetry } from '@/telemetry'; import { dropInvalidWorkflowGroups, diff --git a/packages/cli/src/modules/mcp/tools/workflow-builder/credential-validation.ts b/packages/cli/src/modules/mcp/tools/workflow-builder/credential-validation.ts index ab9416150db..16c135c89c0 100644 --- a/packages/cli/src/modules/mcp/tools/workflow-builder/credential-validation.ts +++ b/packages/cli/src/modules/mcp/tools/workflow-builder/credential-validation.ts @@ -1,9 +1,9 @@ +import { NotFoundError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import type { INode, INodeTypeDescription, IWorkflowBase } from 'n8n-workflow'; import { NodeHelpers } from 'n8n-workflow'; import type { CredentialsService } from '@/credentials/credentials.service'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { NodeTypes } from '@/node-types'; import type { PartialUpdateOperation } from './workflow-operations'; diff --git a/packages/cli/src/modules/n8n-packages/__tests__/import-data-tables.integration.test.ts b/packages/cli/src/modules/n8n-packages/__tests__/import-data-tables.integration.test.ts index e0447dd3f16..d69ecb42a3d 100644 --- a/packages/cli/src/modules/n8n-packages/__tests__/import-data-tables.integration.test.ts +++ b/packages/cli/src/modules/n8n-packages/__tests__/import-data-tables.integration.test.ts @@ -1,4 +1,5 @@ import { LicenseState, ModuleRegistry } from '@n8n/backend-common'; +import { ForbiddenError } from '@n8n/backend-services'; import { createTeamProject, testDb, testModules } from '@n8n/backend-test-utils'; import type { Project, User } from '@n8n/db'; import { FolderRepository, WorkflowRepository } from '@n8n/db'; @@ -7,7 +8,6 @@ import type { INode, INodeParameterResourceLocator, Workflow } from 'n8n-workflo import { NodeOperationError } from 'n8n-workflow'; import { mock } from 'vitest-mock-extended'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { EventService } from '@/events/event.service'; import type { RelayEventMap } from '@/events/maps/relay.event-map'; import { mockDataTableSizeValidator } from '@/modules/data-table/__tests__/test-helpers'; diff --git a/packages/cli/src/modules/n8n-packages/__tests__/import-folders.integration.test.ts b/packages/cli/src/modules/n8n-packages/__tests__/import-folders.integration.test.ts index 4253fe6ef8a..bbc499f7ea3 100644 --- a/packages/cli/src/modules/n8n-packages/__tests__/import-folders.integration.test.ts +++ b/packages/cli/src/modules/n8n-packages/__tests__/import-folders.integration.test.ts @@ -1,12 +1,10 @@ import { LicenseState } from '@n8n/backend-common'; +import { ConflictError, ForbiddenError, UnprocessableRequestError } from '@n8n/backend-services'; import { createTeamProject, testDb, testModules } from '@n8n/backend-test-utils'; import type { Project, User } from '@n8n/db'; import { FolderRepository, WorkflowRepository } from '@n8n/db'; import { Container } from '@n8n/di'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { UnprocessableRequestError } from '@/errors/response-errors/unprocessable.error'; import { createFolder } from '@test-integration/db/folders'; import { createOwner } from '@test-integration/db/users'; import { LicenseMocker } from '@test-integration/license'; diff --git a/packages/cli/src/modules/n8n-packages/__tests__/import-package-policy.integration.test.ts b/packages/cli/src/modules/n8n-packages/__tests__/import-package-policy.integration.test.ts index 9ca0a5fd708..99e453140ed 100644 --- a/packages/cli/src/modules/n8n-packages/__tests__/import-package-policy.integration.test.ts +++ b/packages/cli/src/modules/n8n-packages/__tests__/import-package-policy.integration.test.ts @@ -7,6 +7,7 @@ * skips the blocked workflow and lets the rest land. */ import { LicenseState } from '@n8n/backend-common'; +import { UnprocessableRequestError } from '@n8n/backend-services'; import { createTeamProject, createWorkflow, @@ -27,7 +28,6 @@ import { tmpdir } from 'node:os'; import path from 'node:path'; import { ActiveWorkflowManager } from '@/active-workflow-manager'; -import { UnprocessableRequestError } from '@/errors/response-errors/unprocessable.error'; import { PolicyDecisionService } from '@/modules/policy-infrastructure/policy-decision.service'; import { PolicyEnforcementService } from '@/policy/policy-enforcement.service'; import { createOwner } from '@test-integration/db/users'; diff --git a/packages/cli/src/modules/n8n-packages/__tests__/import-package-selection.integration.test.ts b/packages/cli/src/modules/n8n-packages/__tests__/import-package-selection.integration.test.ts index 3b2dfa08365..34b0b0411a6 100644 --- a/packages/cli/src/modules/n8n-packages/__tests__/import-package-selection.integration.test.ts +++ b/packages/cli/src/modules/n8n-packages/__tests__/import-package-selection.integration.test.ts @@ -1,4 +1,5 @@ import { LicenseState } from '@n8n/backend-common'; +import { BadRequestError, ConflictError, UnprocessableRequestError } from '@n8n/backend-services'; import { createTeamProject, createWorkflow, @@ -15,9 +16,6 @@ import { tmpdir } from 'node:os'; import path from 'node:path'; import { ActiveWorkflowManager } from '@/active-workflow-manager'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { UnprocessableRequestError } from '@/errors/response-errors/unprocessable.error'; import { createCustomRoleWithScopeSlugs } from '@test-integration/db/roles'; import { createMember, createOwner } from '@test-integration/db/users'; import { LicenseMocker } from '@test-integration/license'; diff --git a/packages/cli/src/modules/n8n-packages/__tests__/import-package.integration.test.ts b/packages/cli/src/modules/n8n-packages/__tests__/import-package.integration.test.ts index 639651681fd..5a868ffe78f 100644 --- a/packages/cli/src/modules/n8n-packages/__tests__/import-package.integration.test.ts +++ b/packages/cli/src/modules/n8n-packages/__tests__/import-package.integration.test.ts @@ -1,4 +1,5 @@ import { LicenseState } from '@n8n/backend-common'; +import { BadRequestError, UnprocessableRequestError } from '@n8n/backend-services'; import { createActiveWorkflow, createTeamProject, @@ -21,8 +22,6 @@ import { Container } from '@n8n/di'; import { ActiveWorkflowManager } from '@/active-workflow-manager'; import { CredentialTypes } from '@/credential-types'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { UnprocessableRequestError } from '@/errors/response-errors/unprocessable.error'; import { EventService } from '@/events/event.service'; import type { RelayEventMap } from '@/events/maps/relay.event-map'; import { diff --git a/packages/cli/src/modules/n8n-packages/__tests__/import-projects.integration.test.ts b/packages/cli/src/modules/n8n-packages/__tests__/import-projects.integration.test.ts index f8570d18b05..bf47e1b7a50 100644 --- a/packages/cli/src/modules/n8n-packages/__tests__/import-projects.integration.test.ts +++ b/packages/cli/src/modules/n8n-packages/__tests__/import-projects.integration.test.ts @@ -1,4 +1,5 @@ import { LicenseState } from '@n8n/backend-common'; +import { ConflictError, ForbiddenError, UnprocessableRequestError } from '@n8n/backend-services'; import { createTeamProject, createWorkflow, @@ -23,9 +24,6 @@ import { pickVariableForProject } from 'n8n-workflow'; import { ActiveWorkflowManager } from '@/active-workflow-manager'; import { VariablesService } from '@/environments.ee/variables/variables.service.ee'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { UnprocessableRequestError } from '@/errors/response-errors/unprocessable.error'; import { EventService } from '@/events/event.service'; import type { RelayEventMap } from '@/events/maps/relay.event-map'; import { createFolder } from '@test-integration/db/folders'; diff --git a/packages/cli/src/modules/n8n-packages/__tests__/import-workflow-with-tags.integration.test.ts b/packages/cli/src/modules/n8n-packages/__tests__/import-workflow-with-tags.integration.test.ts index 42fac879db7..bbc9c1e8309 100644 --- a/packages/cli/src/modules/n8n-packages/__tests__/import-workflow-with-tags.integration.test.ts +++ b/packages/cli/src/modules/n8n-packages/__tests__/import-workflow-with-tags.integration.test.ts @@ -1,4 +1,5 @@ import { LicenseState } from '@n8n/backend-common'; +import { ConflictError, ForbiddenError } from '@n8n/backend-services'; import { createTeamProject, createWorkflow, testDb, testModules } from '@n8n/backend-test-utils'; import { GlobalConfig } from '@n8n/config'; import type { User } from '@n8n/db'; @@ -10,8 +11,6 @@ import { } from '@n8n/db'; import { Container } from '@n8n/di'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { createFolder } from '@test-integration/db/folders'; import { assignTagToWorkflow, createTag, updateTag } from '@test-integration/db/tags'; import { createOwner } from '@test-integration/db/users'; diff --git a/packages/cli/src/modules/n8n-packages/__tests__/import-workflow-with-variables.integration.test.ts b/packages/cli/src/modules/n8n-packages/__tests__/import-workflow-with-variables.integration.test.ts index e31ff545dcf..af85268cd5e 100644 --- a/packages/cli/src/modules/n8n-packages/__tests__/import-workflow-with-variables.integration.test.ts +++ b/packages/cli/src/modules/n8n-packages/__tests__/import-workflow-with-variables.integration.test.ts @@ -1,4 +1,6 @@ import { LicenseState } from '@n8n/backend-common'; +import { ForbiddenError } from '@n8n/backend-services'; +import type { ConflictError } from '@n8n/backend-services'; import { createTeamProject, getPersonalProject, @@ -11,8 +13,6 @@ import { VariablesRepository, WorkflowRepository } from '@n8n/db'; import { Container } from '@n8n/di'; import { VariablesService } from '@/environments.ee/variables/variables.service.ee'; -import type { ConflictError } from '@/errors/response-errors/conflict.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { VariableCountLimitReachedError } from '@/errors/variable-count-limit-reached.error'; import { WorkflowCreationService } from '@/workflows/workflow-creation.service'; import { createMember, createOwner } from '@test-integration/db/users'; diff --git a/packages/cli/src/modules/n8n-packages/__tests__/package-failure-classifier.test.ts b/packages/cli/src/modules/n8n-packages/__tests__/package-failure-classifier.test.ts index 5a47472565b..f59cc02bf4a 100644 --- a/packages/cli/src/modules/n8n-packages/__tests__/package-failure-classifier.test.ts +++ b/packages/cli/src/modules/n8n-packages/__tests__/package-failure-classifier.test.ts @@ -1,11 +1,12 @@ +import { + BadRequestError, + ConflictError, + ForbiddenError, + NotFoundError, + UnprocessableRequestError, +} from '@n8n/backend-services'; import { UserError } from 'n8n-workflow'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; -import { UnprocessableRequestError } from '@/errors/response-errors/unprocessable.error'; - import { PackageEntityAccessDeniedError, PackageEntityNotFoundError, diff --git a/packages/cli/src/modules/n8n-packages/__tests__/utils/import-package-upload.test.ts b/packages/cli/src/modules/n8n-packages/__tests__/utils/import-package-upload.test.ts index aea7946b1af..11bb52dd801 100644 --- a/packages/cli/src/modules/n8n-packages/__tests__/utils/import-package-upload.test.ts +++ b/packages/cli/src/modules/n8n-packages/__tests__/utils/import-package-upload.test.ts @@ -1,10 +1,9 @@ import { IMPORT_PACKAGE_REQUEST_FORM_FIELDS } from '@n8n/api-types'; +import { BadRequestError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import { Container } from '@n8n/di'; import multer from 'multer'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - import { createN8nPackageMulterOptions, getPackageUploadFile, diff --git a/packages/cli/src/modules/n8n-packages/engine/__tests__/import-blocked.error.test.ts b/packages/cli/src/modules/n8n-packages/engine/__tests__/import-blocked.error.test.ts index 49bc65c97c8..fd19b6db816 100644 --- a/packages/cli/src/modules/n8n-packages/engine/__tests__/import-blocked.error.test.ts +++ b/packages/cli/src/modules/n8n-packages/engine/__tests__/import-blocked.error.test.ts @@ -1,5 +1,4 @@ -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { UnprocessableRequestError } from '@/errors/response-errors/unprocessable.error'; +import { ConflictError, UnprocessableRequestError } from '@n8n/backend-services'; import type { BlockingIssue } from '../../n8n-packages.types'; import { toImportBlockedError } from '../import-blocked.error'; diff --git a/packages/cli/src/modules/n8n-packages/engine/__tests__/import-gates.test.ts b/packages/cli/src/modules/n8n-packages/engine/__tests__/import-gates.test.ts index 6572914795a..1c2bb7b200b 100644 --- a/packages/cli/src/modules/n8n-packages/engine/__tests__/import-gates.test.ts +++ b/packages/cli/src/modules/n8n-packages/engine/__tests__/import-gates.test.ts @@ -1,7 +1,6 @@ +import { ForbiddenError } from '@n8n/backend-services'; import type { WorkflowEntity } from '@n8n/db'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; - import type { WorkflowImportPlan } from '../../entities/workflow/workflow-import.types'; import { assertArchiveTransitionsAllowed } from '../import-gates'; diff --git a/packages/cli/src/modules/n8n-packages/engine/import-blocked.error.ts b/packages/cli/src/modules/n8n-packages/engine/import-blocked.error.ts index 8e1441c3f9c..72f9148f736 100644 --- a/packages/cli/src/modules/n8n-packages/engine/import-blocked.error.ts +++ b/packages/cli/src/modules/n8n-packages/engine/import-blocked.error.ts @@ -1,5 +1,4 @@ -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { UnprocessableRequestError } from '@/errors/response-errors/unprocessable.error'; +import { ConflictError, UnprocessableRequestError } from '@n8n/backend-services'; import type { BlockingIssue } from '../n8n-packages.types'; diff --git a/packages/cli/src/modules/n8n-packages/engine/import-gates.ts b/packages/cli/src/modules/n8n-packages/engine/import-gates.ts index 38c8d44fc1c..494a2704a68 100644 --- a/packages/cli/src/modules/n8n-packages/engine/import-gates.ts +++ b/packages/cli/src/modules/n8n-packages/engine/import-gates.ts @@ -1,6 +1,5 @@ import type { LicenseState } from '@n8n/backend-common'; - -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; +import { ForbiddenError } from '@n8n/backend-services'; import type { TagImportPlan } from '../entities/tag/tag.types'; import type { WorkflowImportPlan } from '../entities/workflow/workflow-import.types'; diff --git a/packages/cli/src/modules/n8n-packages/engine/n8n-package-parser.ts b/packages/cli/src/modules/n8n-packages/engine/n8n-package-parser.ts index 9604b4b1613..fa7611e27bf 100644 --- a/packages/cli/src/modules/n8n-packages/engine/n8n-package-parser.ts +++ b/packages/cli/src/modules/n8n-packages/engine/n8n-package-parser.ts @@ -1,10 +1,10 @@ import { Logger } from '@n8n/backend-common'; +import { BadRequestError } from '@n8n/backend-services'; import { WorkflowEntity } from '@n8n/db'; import { Service } from '@n8n/di'; import { jsonParse, UserError } from 'n8n-workflow'; import { ZodError } from 'zod'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { NodeTypes } from '@/node-types'; import * as WorkflowHelpers from '@/workflow-helpers'; diff --git a/packages/cli/src/modules/n8n-packages/engine/project-package-importer.ts b/packages/cli/src/modules/n8n-packages/engine/project-package-importer.ts index b2d392bb51e..939ca823363 100644 --- a/packages/cli/src/modules/n8n-packages/engine/project-package-importer.ts +++ b/packages/cli/src/modules/n8n-packages/engine/project-package-importer.ts @@ -1,8 +1,7 @@ import { LicenseState } from '@n8n/backend-common'; +import { ForbiddenError } from '@n8n/backend-services'; import { Service } from '@n8n/di'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; - import type { CredentialBindingRequest } from '../entities/credential/credential.types'; import { removesUnpackagedWorkflows } from '../entities/folder/folder-conflict-policy'; import type { DataTableImportRequest } from '../entities/data-table/data-table.types'; diff --git a/packages/cli/src/modules/n8n-packages/engine/workflow-package-importer.ts b/packages/cli/src/modules/n8n-packages/engine/workflow-package-importer.ts index c1d9a53d23a..4fab6937684 100644 --- a/packages/cli/src/modules/n8n-packages/engine/workflow-package-importer.ts +++ b/packages/cli/src/modules/n8n-packages/engine/workflow-package-importer.ts @@ -1,11 +1,10 @@ import { LicenseState } from '@n8n/backend-common'; +import { ForbiddenError, NotFoundError } from '@n8n/backend-services'; import type { Project, User } from '@n8n/db'; import { Service } from '@n8n/di'; import type { Scope } from '@n8n/permissions'; import { UserError } from 'n8n-workflow'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { FolderService } from '@/services/folder.service'; import { ProjectService } from '@/services/project.service.ee'; diff --git a/packages/cli/src/modules/n8n-packages/entities/credential/__tests__/credential-importer.test.ts b/packages/cli/src/modules/n8n-packages/entities/credential/__tests__/credential-importer.test.ts index 14f07053a14..0855939f16a 100644 --- a/packages/cli/src/modules/n8n-packages/entities/credential/__tests__/credential-importer.test.ts +++ b/packages/cli/src/modules/n8n-packages/entities/credential/__tests__/credential-importer.test.ts @@ -1,8 +1,8 @@ +import { ForbiddenError } from '@n8n/backend-services'; import type { Project, User } from '@n8n/db'; import { Container } from '@n8n/di'; import { mock } from 'vitest-mock-extended'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import type { CredentialTypes } from '@/credential-types'; import type { CredentialsService } from '@/credentials/credentials.service'; diff --git a/packages/cli/src/modules/n8n-packages/entities/credential/__tests__/credential-matcher.test.ts b/packages/cli/src/modules/n8n-packages/entities/credential/__tests__/credential-matcher.test.ts index 03d56b87563..d9464462457 100644 --- a/packages/cli/src/modules/n8n-packages/entities/credential/__tests__/credential-matcher.test.ts +++ b/packages/cli/src/modules/n8n-packages/entities/credential/__tests__/credential-matcher.test.ts @@ -1,10 +1,10 @@ +import { BadRequestError } from '@n8n/backend-services'; import type { Project, SlimProject, User } from '@n8n/db'; import { Container } from '@n8n/di'; import { mock } from 'vitest-mock-extended'; import type { CredentialTypes } from '@/credential-types'; import type { CredentialsService } from '@/credentials/credentials.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import type { CredentialMatcherContext, UsableCredential } from '../credential-matcher'; import { CredentialMatcherFactory } from '../credential-matcher-factory'; diff --git a/packages/cli/src/modules/n8n-packages/entities/credential/credential-matcher-factory.ts b/packages/cli/src/modules/n8n-packages/entities/credential/credential-matcher-factory.ts index b52816af90e..bea0d3ec022 100644 --- a/packages/cli/src/modules/n8n-packages/entities/credential/credential-matcher-factory.ts +++ b/packages/cli/src/modules/n8n-packages/entities/credential/credential-matcher-factory.ts @@ -1,7 +1,6 @@ +import { BadRequestError } from '@n8n/backend-services'; import { Service } from '@n8n/di'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - import type { CredentialMatcher } from './credential-matcher'; import { IdBasedCredentialMatcher } from './id-based-credential-matcher'; import { NameAndTypeCredentialMatcher } from './name-and-type-credential-matcher'; diff --git a/packages/cli/src/modules/n8n-packages/entities/data-table/data-table-importer.ts b/packages/cli/src/modules/n8n-packages/entities/data-table/data-table-importer.ts index 45384189a14..fd15c0933e4 100644 --- a/packages/cli/src/modules/n8n-packages/entities/data-table/data-table-importer.ts +++ b/packages/cli/src/modules/n8n-packages/entities/data-table/data-table-importer.ts @@ -1,8 +1,8 @@ import { ModuleRegistry } from '@n8n/backend-common'; +import { ForbiddenError } from '@n8n/backend-services'; import { Service } from '@n8n/di'; import { UserError } from 'n8n-workflow'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import type { DataTable } from '@/modules/data-table/data-table.entity'; import { DataTableService } from '@/modules/data-table/data-table.service'; import { userHasScopes } from '@/permissions.ee/check-access'; diff --git a/packages/cli/src/modules/n8n-packages/entities/project/project-importer.ts b/packages/cli/src/modules/n8n-packages/entities/project/project-importer.ts index 16cfbc6b287..23f0fb38be6 100644 --- a/packages/cli/src/modules/n8n-packages/entities/project/project-importer.ts +++ b/packages/cli/src/modules/n8n-packages/entities/project/project-importer.ts @@ -1,10 +1,10 @@ import { LicenseState } from '@n8n/backend-common'; +import { ForbiddenError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import { Service } from '@n8n/di'; import { hasGlobalScope } from '@n8n/permissions'; import { UnexpectedError } from 'n8n-workflow'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { ProjectService } from '@/services/project.service.ee'; import { decideMatchedProject } from './project-conflict-policy'; diff --git a/packages/cli/src/modules/n8n-packages/entities/tag/__tests__/tag-importer.test.ts b/packages/cli/src/modules/n8n-packages/entities/tag/__tests__/tag-importer.test.ts index b0803e1ba5d..1faf1455517 100644 --- a/packages/cli/src/modules/n8n-packages/entities/tag/__tests__/tag-importer.test.ts +++ b/packages/cli/src/modules/n8n-packages/entities/tag/__tests__/tag-importer.test.ts @@ -1,8 +1,8 @@ +import { ForbiddenError } from '@n8n/backend-services'; import type { GlobalConfig } from '@n8n/config'; import type { TagEntity, User } from '@n8n/db'; import { mock } from 'vitest-mock-extended'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import type { TagService } from '@/services/tag.service'; import { TagImporter } from '../tag-importer'; diff --git a/packages/cli/src/modules/n8n-packages/entities/tag/tag-importer.ts b/packages/cli/src/modules/n8n-packages/entities/tag/tag-importer.ts index 72e1f8a7f1e..52e700159ef 100644 --- a/packages/cli/src/modules/n8n-packages/entities/tag/tag-importer.ts +++ b/packages/cli/src/modules/n8n-packages/entities/tag/tag-importer.ts @@ -1,9 +1,9 @@ +import { ForbiddenError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import { Service } from '@n8n/di'; import { hasGlobalScope } from '@n8n/permissions'; import { UserError } from 'n8n-workflow'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { TagService } from '@/services/tag.service'; import { decideTagImportAction } from './tag-import-decision'; diff --git a/packages/cli/src/modules/n8n-packages/entities/variable/variable-importer.ts b/packages/cli/src/modules/n8n-packages/entities/variable/variable-importer.ts index 2b0479b6644..706747cba1e 100644 --- a/packages/cli/src/modules/n8n-packages/entities/variable/variable-importer.ts +++ b/packages/cli/src/modules/n8n-packages/entities/variable/variable-importer.ts @@ -1,9 +1,9 @@ +import { ForbiddenError } from '@n8n/backend-services'; import { Service } from '@n8n/di'; import { hasGlobalScope } from '@n8n/permissions'; import { pickVariableForProject } from 'n8n-workflow'; import { VariablesService } from '@/environments.ee/variables/variables.service.ee'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { VariableCountLimitReachedError } from '@/errors/variable-count-limit-reached.error'; import { userHasScopes } from '@/permissions.ee/check-access'; diff --git a/packages/cli/src/modules/n8n-packages/entities/workflow/__tests__/workflow-publisher.test.ts b/packages/cli/src/modules/n8n-packages/entities/workflow/__tests__/workflow-publisher.test.ts index dfd989ac7ec..3f1fef6f512 100644 --- a/packages/cli/src/modules/n8n-packages/entities/workflow/__tests__/workflow-publisher.test.ts +++ b/packages/cli/src/modules/n8n-packages/entities/workflow/__tests__/workflow-publisher.test.ts @@ -1,10 +1,9 @@ +import { ForbiddenError, NotFoundError } from '@n8n/backend-services'; import type { Mock } from 'vitest'; import type { Logger } from '@n8n/backend-common'; import type { Project, User, WorkflowEntity } from '@n8n/db'; import { mock } from 'vitest-mock-extended'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { ProjectService } from '@/services/project.service.ee'; import type { WebhookService } from '@/webhooks/webhook.service'; import type { WorkflowService } from '@/workflows/workflow.service'; diff --git a/packages/cli/src/modules/n8n-packages/entities/workflow/__tests__/workflow-remover.test.ts b/packages/cli/src/modules/n8n-packages/entities/workflow/__tests__/workflow-remover.test.ts index 50ddac57252..e69d515d2b8 100644 --- a/packages/cli/src/modules/n8n-packages/entities/workflow/__tests__/workflow-remover.test.ts +++ b/packages/cli/src/modules/n8n-packages/entities/workflow/__tests__/workflow-remover.test.ts @@ -1,7 +1,7 @@ +import { ConflictError } from '@n8n/backend-services'; import type { User, WorkflowEntity } from '@n8n/db'; import { mock } from 'vitest-mock-extended'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; import type { WorkflowFinderService } from '@/workflows/workflow-finder.service'; import type { WorkflowService } from '@/workflows/workflow.service'; diff --git a/packages/cli/src/modules/n8n-packages/entities/workflow/workflow-importer.ts b/packages/cli/src/modules/n8n-packages/entities/workflow/workflow-importer.ts index 5d46d9df2eb..62f64508c3a 100644 --- a/packages/cli/src/modules/n8n-packages/entities/workflow/workflow-importer.ts +++ b/packages/cli/src/modules/n8n-packages/entities/workflow/workflow-importer.ts @@ -1,7 +1,7 @@ +import { ForbiddenError } from '@n8n/backend-services'; import { WorkflowEntity } from '@n8n/db'; import { Service } from '@n8n/di'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { WorkflowCreationService, type WorkflowCreateBatchContext, diff --git a/packages/cli/src/modules/n8n-packages/entities/workflow/workflow-publisher.ts b/packages/cli/src/modules/n8n-packages/entities/workflow/workflow-publisher.ts index f362f3458f1..6d2751f3a30 100644 --- a/packages/cli/src/modules/n8n-packages/entities/workflow/workflow-publisher.ts +++ b/packages/cli/src/modules/n8n-packages/entities/workflow/workflow-publisher.ts @@ -1,11 +1,10 @@ import { Logger } from '@n8n/backend-common'; +import { ForbiddenError, NotFoundError } from '@n8n/backend-services'; import type { User, WorkflowEntity } from '@n8n/db'; import { ProjectRepository } from '@n8n/db'; import { Service } from '@n8n/di'; import { ensureError } from '@n8n/utils/errors/ensure-error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { ProjectService } from '@/services/project.service.ee'; import { WEBHOOK_CONFLICT_MESSAGE } from '@/webhooks/constants'; import { WebhookService } from '@/webhooks/webhook.service'; diff --git a/packages/cli/src/modules/n8n-packages/entities/workflow/workflow-remover.ts b/packages/cli/src/modules/n8n-packages/entities/workflow/workflow-remover.ts index d0f896f09e7..54399bb7deb 100644 --- a/packages/cli/src/modules/n8n-packages/entities/workflow/workflow-remover.ts +++ b/packages/cli/src/modules/n8n-packages/entities/workflow/workflow-remover.ts @@ -1,6 +1,6 @@ +import { ConflictError } from '@n8n/backend-services'; import { Service } from '@n8n/di'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; import { WorkflowFinderService } from '@/workflows/workflow-finder.service'; import { WorkflowService } from '@/workflows/workflow.service'; diff --git a/packages/cli/src/modules/n8n-packages/io/__tests__/directory-package-reader.test.ts b/packages/cli/src/modules/n8n-packages/io/__tests__/directory-package-reader.test.ts index cbf72067803..06a4b5e0b7e 100644 --- a/packages/cli/src/modules/n8n-packages/io/__tests__/directory-package-reader.test.ts +++ b/packages/cli/src/modules/n8n-packages/io/__tests__/directory-package-reader.test.ts @@ -1,9 +1,8 @@ +import { BadRequestError } from '@n8n/backend-services'; import { mkdir, mkdtemp, rm, symlink, writeFile } from 'node:fs/promises'; import { tmpdir } from 'node:os'; import path from 'node:path'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - import { DirectoryPackageReader } from '../directory/directory-package-reader'; const limits = { diff --git a/packages/cli/src/modules/n8n-packages/io/__tests__/tar-package-reader.test.ts b/packages/cli/src/modules/n8n-packages/io/__tests__/tar-package-reader.test.ts index d54d385d4ec..00a95e12192 100644 --- a/packages/cli/src/modules/n8n-packages/io/__tests__/tar-package-reader.test.ts +++ b/packages/cli/src/modules/n8n-packages/io/__tests__/tar-package-reader.test.ts @@ -1,4 +1,4 @@ -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; +import { BadRequestError } from '@n8n/backend-services'; import { streamToBuffer } from '../../__tests__/utils/tar-support'; import { TarPackageReader, type TarReaderLimits } from '../tar/tar-package-reader'; diff --git a/packages/cli/src/modules/n8n-packages/io/directory/directory-package-reader.ts b/packages/cli/src/modules/n8n-packages/io/directory/directory-package-reader.ts index 49b4e5e54d1..df12372bcac 100644 --- a/packages/cli/src/modules/n8n-packages/io/directory/directory-package-reader.ts +++ b/packages/cli/src/modules/n8n-packages/io/directory/directory-package-reader.ts @@ -1,10 +1,9 @@ +import { BadRequestError } from '@n8n/backend-services'; import { jsonParse } from 'n8n-workflow'; import type { Stats } from 'node:fs'; import { lstat, readdir, readFile } from 'node:fs/promises'; import path from 'node:path'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - import type { PackageManifest } from '../../spec/manifest.schema'; import type { PackageReader } from '../package-reader'; diff --git a/packages/cli/src/modules/n8n-packages/io/tar/tar-package-reader.ts b/packages/cli/src/modules/n8n-packages/io/tar/tar-package-reader.ts index fc91308d02f..c31d0de9f0b 100644 --- a/packages/cli/src/modules/n8n-packages/io/tar/tar-package-reader.ts +++ b/packages/cli/src/modules/n8n-packages/io/tar/tar-package-reader.ts @@ -1,9 +1,8 @@ +import { BadRequestError } from '@n8n/backend-services'; import { jsonParse } from 'n8n-workflow'; import path from 'node:path'; import { Parser, type ReadEntry } from 'tar'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - import type { PackageManifest } from '../../spec/manifest.schema'; import type { PackageReader } from '../package-reader'; diff --git a/packages/cli/src/modules/n8n-packages/n8n-packages.service.ts b/packages/cli/src/modules/n8n-packages/n8n-packages.service.ts index 748405498ef..48eb1dc7ff9 100644 --- a/packages/cli/src/modules/n8n-packages/n8n-packages.service.ts +++ b/packages/cli/src/modules/n8n-packages/n8n-packages.service.ts @@ -1,10 +1,9 @@ +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import { Service } from '@n8n/di'; import { InstanceSettings } from 'n8n-core'; import { N8N_VERSION } from '@/constants'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { EventService } from '@/events/event.service'; import { buildImportResult, toPackageSummary } from './engine/import-result'; diff --git a/packages/cli/src/modules/n8n-packages/package-failure-classifier.ts b/packages/cli/src/modules/n8n-packages/package-failure-classifier.ts index 8a9353632d5..fa437a997a5 100644 --- a/packages/cli/src/modules/n8n-packages/package-failure-classifier.ts +++ b/packages/cli/src/modules/n8n-packages/package-failure-classifier.ts @@ -1,11 +1,12 @@ +import { + BadRequestError, + ConflictError, + ForbiddenError, + NotFoundError, + UnprocessableRequestError, +} from '@n8n/backend-services'; import { UserError } from 'n8n-workflow'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; -import { UnprocessableRequestError } from '@/errors/response-errors/unprocessable.error'; - import { PackageEntityAccessDeniedError, PackageEntityNotFoundError, diff --git a/packages/cli/src/modules/n8n-packages/utils/import-package-upload.ts b/packages/cli/src/modules/n8n-packages/utils/import-package-upload.ts index 452dfb78fa2..cb94ea08c71 100644 --- a/packages/cli/src/modules/n8n-packages/utils/import-package-upload.ts +++ b/packages/cli/src/modules/n8n-packages/utils/import-package-upload.ts @@ -2,11 +2,10 @@ import { IMPORT_PACKAGE_REQUEST_FORM_FIELDS, IMPORT_PACKAGE_SELECTION_REQUEST_FORM_FIELDS, } from '@n8n/api-types'; +import { BadRequestError } from '@n8n/backend-services'; import type { GlobalConfig } from '@n8n/config'; import multer from 'multer'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - /** * Allowed keys on `req.body` after multipart parsing. Includes `package` because * express-openapi-validator inserts an empty-string placeholder for file parts. diff --git a/packages/cli/src/modules/oauth-server/__tests__/oauth-consent.service.test.ts b/packages/cli/src/modules/oauth-server/__tests__/oauth-consent.service.test.ts index 1b3aa5796c6..512a7b8f08e 100644 --- a/packages/cli/src/modules/oauth-server/__tests__/oauth-consent.service.test.ts +++ b/packages/cli/src/modules/oauth-server/__tests__/oauth-consent.service.test.ts @@ -1,3 +1,4 @@ +import { ForbiddenError } from '@n8n/backend-services'; import type { Mocked } from 'vitest'; import { mockInstance } from '@n8n/backend-test-utils'; import { Logger } from '@n8n/backend-common'; @@ -16,7 +17,6 @@ import { } from '@/services/protected-resource.registry'; import { UrlService } from '@/services/url.service'; import type { User } from '@n8n/db'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; const issuer = 'https://n8n.example.com'; diff --git a/packages/cli/src/modules/oauth-server/oauth-clients.controller.ts b/packages/cli/src/modules/oauth-server/oauth-clients.controller.ts index 2277f1238e4..9c1dfb59d25 100644 --- a/packages/cli/src/modules/oauth-server/oauth-clients.controller.ts +++ b/packages/cli/src/modules/oauth-server/oauth-clients.controller.ts @@ -7,14 +7,12 @@ import { OAuthClientResponseDto, } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { ForbiddenError, NotFoundError } from '@n8n/backend-services'; import { AuthenticatedRequest } from '@n8n/db'; import { Delete, Get, GlobalScope, Param, Query, RestController } from '@n8n/decorators'; import { hasGlobalScope } from '@n8n/permissions'; import type { Response } from 'express'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import { OAuthServerService } from './oauth-server.service'; @RestController('/mcp/oauth-clients') diff --git a/packages/cli/src/modules/oauth-server/oauth-consent.controller.ts b/packages/cli/src/modules/oauth-server/oauth-consent.controller.ts index 96cca337058..38a4cad7f06 100644 --- a/packages/cli/src/modules/oauth-server/oauth-consent.controller.ts +++ b/packages/cli/src/modules/oauth-server/oauth-consent.controller.ts @@ -1,4 +1,5 @@ import { Logger } from '@n8n/backend-common'; +import { ForbiddenError } from '@n8n/backend-services'; import type { AuthenticatedRequest } from '@n8n/db'; import { Body, Get, Post, RestController } from '@n8n/decorators'; import type { Response } from 'express'; @@ -7,7 +8,6 @@ import { UserError } from 'n8n-workflow'; import { ApproveConsentRequestDto } from './dto/approve-consent-request.dto'; import { OAuthConsentService } from './oauth-consent.service'; import { OAuthSessionService } from './oauth-session.service'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; @RestController('/consent') export class OAuthConsentController { diff --git a/packages/cli/src/modules/oauth-server/oauth-consent.service.ts b/packages/cli/src/modules/oauth-server/oauth-consent.service.ts index 03d7bdb822e..815932f4584 100644 --- a/packages/cli/src/modules/oauth-server/oauth-consent.service.ts +++ b/packages/cli/src/modules/oauth-server/oauth-consent.service.ts @@ -1,5 +1,6 @@ import type { ConsentUiHints } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { ForbiddenError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import { Service } from '@n8n/di'; import { UserError } from 'n8n-workflow'; @@ -9,7 +10,6 @@ import { UserConsentRepository } from './database/repositories/oauth-user-consen import { OAuthAuthorizationCodeService } from './oauth-authorization-code.service'; import { OAuthSessionService, type OAuthSessionPayload } from './oauth-session.service'; import { OAuthHelpers } from './oauth.helpers'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { ProtectedResourceRegistry, type ProtectedResource, diff --git a/packages/cli/src/modules/oauth-server/oauth-server.service.ts b/packages/cli/src/modules/oauth-server/oauth-server.service.ts index 9d9ca84bb15..f6cc589fe77 100644 --- a/packages/cli/src/modules/oauth-server/oauth-server.service.ts +++ b/packages/cli/src/modules/oauth-server/oauth-server.service.ts @@ -16,6 +16,7 @@ import type { import type { McpClientConnectedPeriod, McpClientTypeFilter } from '@n8n/api-types'; import { getMcpClientType, MCP_CLIENT_TYPE_FILTER_BUCKETS } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { ForbiddenError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import { INSTANCE_MCP_RESOURCE_ID } from '@n8n/constants'; import type { User } from '@n8n/db'; @@ -24,7 +25,6 @@ import { hasGlobalScope } from '@n8n/permissions'; import type { Response } from 'express'; import { AuthService } from '@/auth/auth.service'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { EventService } from '@/events/event.service'; import { ProtectedResourceRegistry, diff --git a/packages/cli/src/modules/oauth-server/oauth.errors.ts b/packages/cli/src/modules/oauth-server/oauth.errors.ts index 1a2a8464e85..f0cb343f95e 100644 --- a/packages/cli/src/modules/oauth-server/oauth.errors.ts +++ b/packages/cli/src/modules/oauth-server/oauth.errors.ts @@ -1,6 +1,5 @@ import { ServerError } from '@modelcontextprotocol/sdk/server/auth/errors.js'; - -import { AuthError } from '@/errors/response-errors/auth.error'; +import { AuthError } from '@n8n/backend-services'; // The wording references MCP because the instance MCP server is currently the // only protected resource; clients registered via its DCR endpoint see this diff --git a/packages/cli/src/modules/promotions.ee/__tests__/promotion-config.resolver.integration.test.ts b/packages/cli/src/modules/promotions.ee/__tests__/promotion-config.resolver.integration.test.ts index 13617199737..7c82e82ec35 100644 --- a/packages/cli/src/modules/promotions.ee/__tests__/promotion-config.resolver.integration.test.ts +++ b/packages/cli/src/modules/promotions.ee/__tests__/promotion-config.resolver.integration.test.ts @@ -1,4 +1,5 @@ import type { PromotionConfigSettings } from '@n8n/api-types'; +import { BadRequestError } from '@n8n/backend-services'; import { createTeamProject, getPersonalProject, @@ -9,7 +10,6 @@ import type { User } from '@n8n/db'; import { ProjectRepository } from '@n8n/db'; import { Container } from '@n8n/di'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { createOwner } from '@test-integration/db/users'; import { PromotionConfigRepository } from '../database/repositories/promotion-config.repository'; diff --git a/packages/cli/src/modules/promotions.ee/__tests__/promotion-connections.service.test.ts b/packages/cli/src/modules/promotions.ee/__tests__/promotion-connections.service.test.ts index 276f6c351ab..012ee498aeb 100644 --- a/packages/cli/src/modules/promotions.ee/__tests__/promotion-connections.service.test.ts +++ b/packages/cli/src/modules/promotions.ee/__tests__/promotion-connections.service.test.ts @@ -1,5 +1,6 @@ import type { CreatePromotionConnectionDto } from '@n8n/api-types'; import type { Logger } from '@n8n/backend-common'; +import { BadRequestError, ConflictError, ForbiddenError } from '@n8n/backend-services'; import type { ProjectRepository, TransactionRunner, User } from '@n8n/db'; import type { InstanceSettings } from 'n8n-core'; import { mkdir, mkdtemp, rm, stat } from 'node:fs/promises'; @@ -8,9 +9,6 @@ import path from 'node:path'; import type { MockedFunction } from 'vitest'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { userHasScopes } from '@/permissions.ee/check-access'; import type { PromotionConnection } from '../database/entities/promotion-connection.entity'; diff --git a/packages/cli/src/modules/promotions.ee/__tests__/promotion-providers.service.test.ts b/packages/cli/src/modules/promotions.ee/__tests__/promotion-providers.service.test.ts index 3179fdee9b2..bf75693d965 100644 --- a/packages/cli/src/modules/promotions.ee/__tests__/promotion-providers.service.test.ts +++ b/packages/cli/src/modules/promotions.ee/__tests__/promotion-providers.service.test.ts @@ -1,11 +1,8 @@ import type { CreatePromotionProviderDto, UpdatePromotionProviderDto } from '@n8n/api-types'; +import { BadRequestError, ConflictError, NotFoundError } from '@n8n/backend-services'; import type { Cipher } from 'n8n-core'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import type { PromotionProvider } from '../database/entities/promotion-provider.entity'; import type { PromotionConnectionRepository } from '../database/repositories/promotion-connection.repository'; import type { PromotionProviderRepository } from '../database/repositories/promotion-provider.repository'; diff --git a/packages/cli/src/modules/promotions.ee/__tests__/promotions-git.service.test.ts b/packages/cli/src/modules/promotions.ee/__tests__/promotions-git.service.test.ts index 3c9f8af6eaf..5e427becc36 100644 --- a/packages/cli/src/modules/promotions.ee/__tests__/promotions-git.service.test.ts +++ b/packages/cli/src/modules/promotions.ee/__tests__/promotions-git.service.test.ts @@ -1,4 +1,5 @@ import type { Logger } from '@n8n/backend-common'; +import { BadRequestError, ServiceUnavailableError } from '@n8n/backend-services'; import { mockLogger } from '@n8n/backend-test-utils'; import { createDeferredPromise } from '@n8n/utils/promise/deferred-promise'; import { mkdir, mkdtemp, readFile, rm, stat, writeFile } from 'node:fs/promises'; @@ -6,9 +7,6 @@ import { tmpdir } from 'node:os'; import path from 'node:path'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ServiceUnavailableError } from '@/errors/response-errors/service-unavailable.error'; - import { PromotionsGitService } from '../promotions-git.service'; const { mockGit, simpleGitMock, GitPluginError } = vi.hoisted(() => { diff --git a/packages/cli/src/modules/promotions.ee/__tests__/promotions-package.integration.test.ts b/packages/cli/src/modules/promotions.ee/__tests__/promotions-package.integration.test.ts index 7d65cf54a6f..1ceb0677883 100644 --- a/packages/cli/src/modules/promotions.ee/__tests__/promotions-package.integration.test.ts +++ b/packages/cli/src/modules/promotions.ee/__tests__/promotions-package.integration.test.ts @@ -1,4 +1,5 @@ import { LicenseState } from '@n8n/backend-common'; +import { BadRequestError } from '@n8n/backend-services'; import { createTeamProject, createWorkflow, @@ -37,7 +38,6 @@ import { mock } from 'vitest-mock-extended'; import { CredentialTypes } from '@/credential-types'; import { ActiveWorkflowManager } from '@/active-workflow-manager'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { mockDataTableSizeValidator } from '@/modules/data-table/__tests__/test-helpers'; import { DataTableRepository } from '@/modules/data-table/data-table.repository'; import { DataTableColumnRepository } from '@/modules/data-table/data-table-column.repository'; diff --git a/packages/cli/src/modules/promotions.ee/__tests__/promotions.service.test.ts b/packages/cli/src/modules/promotions.ee/__tests__/promotions.service.test.ts index 7b93c3b7d02..31d5e4890fa 100644 --- a/packages/cli/src/modules/promotions.ee/__tests__/promotions.service.test.ts +++ b/packages/cli/src/modules/promotions.ee/__tests__/promotions.service.test.ts @@ -1,5 +1,6 @@ import type { PromotionBindingPreflightResult } from '@n8n/api-types'; import type { Logger } from '@n8n/backend-common'; +import { BadRequestError, NotFoundError, ServiceUnavailableError } from '@n8n/backend-services'; import type { Project, ProjectRepository, SharedWorkflowRepository, User } from '@n8n/db'; import type { InstanceSettings } from 'n8n-core'; import { mkdir, mkdtemp, readFile, rm, stat, writeFile } from 'node:fs/promises'; @@ -7,9 +8,6 @@ import { tmpdir } from 'node:os'; import path from 'node:path'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; -import { ServiceUnavailableError } from '@/errors/response-errors/service-unavailable.error'; import type { N8nPackagesService } from '@/modules/n8n-packages/n8n-packages.service'; import { MissingWorkflowDependencyPolicy, diff --git a/packages/cli/src/modules/promotions.ee/promotion-change.service.ts b/packages/cli/src/modules/promotions.ee/promotion-change.service.ts index 2ab654087bb..bb7a2886fa8 100644 --- a/packages/cli/src/modules/promotions.ee/promotion-change.service.ts +++ b/packages/cli/src/modules/promotions.ee/promotion-change.service.ts @@ -5,14 +5,13 @@ import type { PromotionDirection, } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import { WorkflowRepository, type User, type WorkflowEntity } from '@n8n/db'; import { Service } from '@n8n/di'; import { hasGlobalScope, type Scope } from '@n8n/permissions'; import { jsonParse } from 'n8n-workflow'; import { randomUUID } from 'node:crypto'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { HashingPackageWriter } from '@/modules/n8n-packages/io/hashing-package-writer'; import { PACKAGE_ENTITY_LAYOUT, diff --git a/packages/cli/src/modules/promotions.ee/promotion-changes.controller.ts b/packages/cli/src/modules/promotions.ee/promotion-changes.controller.ts index 5ed5615decb..97bb32826d7 100644 --- a/packages/cli/src/modules/promotions.ee/promotion-changes.controller.ts +++ b/packages/cli/src/modules/promotions.ee/promotion-changes.controller.ts @@ -3,13 +3,12 @@ import { promotionDirectionSchema, type PromotionChanges, } from '@n8n/api-types'; +import { NotFoundError } from '@n8n/backend-services'; import { LICENSE_FEATURES } from '@n8n/constants'; import { AuthenticatedRequest } from '@n8n/db'; import { Get, GlobalScope, Licensed, Param, Query, RestController } from '@n8n/decorators'; import type { Response } from 'express'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import { PromotionChangeService } from './promotion-change.service'; @RestController('/promotions') diff --git a/packages/cli/src/modules/promotions.ee/promotion-config.resolver.ts b/packages/cli/src/modules/promotions.ee/promotion-config.resolver.ts index a541284ee9a..910e45f1a97 100644 --- a/packages/cli/src/modules/promotions.ee/promotion-config.resolver.ts +++ b/packages/cli/src/modules/promotions.ee/promotion-config.resolver.ts @@ -1,11 +1,9 @@ import type { PromotionDirection } from '@n8n/api-types'; import { promotionConnectionTargetSchema, promotionProviderTypeSchema } from '@n8n/api-types'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import { ProjectRepository } from '@n8n/db'; import { Service } from '@n8n/di'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import type { PromotionConfig } from './database/entities/promotion-config.entity'; import { PromotionConfigRepository } from './database/repositories/promotion-config.repository'; import { PromotionConnectionProjectRepository } from './database/repositories/promotion-connection-project.repository'; diff --git a/packages/cli/src/modules/promotions.ee/promotion-conflicts.ts b/packages/cli/src/modules/promotions.ee/promotion-conflicts.ts index 51a01c8a006..3c903fb64b1 100644 --- a/packages/cli/src/modules/promotions.ee/promotion-conflicts.ts +++ b/packages/cli/src/modules/promotions.ee/promotion-conflicts.ts @@ -1,4 +1,4 @@ -import { ConflictError } from '@/errors/response-errors/conflict.error'; +import { ConflictError } from '@n8n/backend-services'; import { PromotionConflictError } from './database/promotion-conflict.error'; diff --git a/packages/cli/src/modules/promotions.ee/promotion-connections.service.ts b/packages/cli/src/modules/promotions.ee/promotion-connections.service.ts index 75389ea50e5..a67a225ea2c 100644 --- a/packages/cli/src/modules/promotions.ee/promotion-connections.service.ts +++ b/packages/cli/src/modules/promotions.ee/promotion-connections.service.ts @@ -16,13 +16,15 @@ import type { } from '@n8n/api-types'; import { promotionConnectionTargetSchema } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { + BadRequestError, + ConflictError, + ForbiddenError, + NotFoundError, +} from '@n8n/backend-services'; import { ProjectRepository, TransactionRunner, type OperationContext, type User } from '@n8n/db'; import { Service } from '@n8n/di'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { userHasScopes } from '@/permissions.ee/check-access'; import { DIRECTION_LABELS } from './constants'; diff --git a/packages/cli/src/modules/promotions.ee/promotion-providers.service.ts b/packages/cli/src/modules/promotions.ee/promotion-providers.service.ts index 64725492789..4854f4b327c 100644 --- a/packages/cli/src/modules/promotions.ee/promotion-providers.service.ts +++ b/packages/cli/src/modules/promotions.ee/promotion-providers.service.ts @@ -7,14 +7,11 @@ import type { UpdatePromotionProviderDto, } from '@n8n/api-types'; import { promotionGitSshKeyConfigSchema } from '@n8n/api-types'; +import { BadRequestError, ConflictError, NotFoundError } from '@n8n/backend-services'; import { Service } from '@n8n/di'; import { Cipher } from 'n8n-core'; import { jsonParse } from 'n8n-workflow'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import type { PromotionProvider } from './database/entities/promotion-provider.entity'; import { PromotionConnectionRepository } from './database/repositories/promotion-connection.repository'; import { PromotionProviderRepository } from './database/repositories/promotion-provider.repository'; diff --git a/packages/cli/src/modules/promotions.ee/promotions-git.service.ts b/packages/cli/src/modules/promotions.ee/promotions-git.service.ts index ddbe299e599..de834f2db26 100644 --- a/packages/cli/src/modules/promotions.ee/promotions-git.service.ts +++ b/packages/cli/src/modules/promotions.ee/promotions-git.service.ts @@ -1,5 +1,6 @@ import type { PromotionProviderAuthType, PromotionSshKeyType } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { BadRequestError, ServiceUnavailableError } from '@n8n/backend-services'; import { Service } from '@n8n/di'; import { chmod, mkdir, mkdtemp, rename, rm, writeFile } from 'node:fs/promises'; import { tmpdir } from 'node:os'; @@ -14,9 +15,6 @@ import { type SimpleGitOptions, } from 'simple-git'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ServiceUnavailableError } from '@/errors/response-errors/service-unavailable.error'; - import { GIT_COMMAND_STALL_TIMEOUT_MS, GIT_READ_CONCURRENCY, diff --git a/packages/cli/src/modules/promotions.ee/promotions.service.ts b/packages/cli/src/modules/promotions.ee/promotions.service.ts index 3ff1fa23a0d..feb69623759 100644 --- a/packages/cli/src/modules/promotions.ee/promotions.service.ts +++ b/packages/cli/src/modules/promotions.ee/promotions.service.ts @@ -9,14 +9,13 @@ import type { PromotionDirection, } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import { ProjectRepository, SharedWorkflowRepository, type User } from '@n8n/db'; import { Service } from '@n8n/di'; import { cp, mkdir, mkdtemp, rename, rm, stat } from 'node:fs/promises'; import path from 'node:path'; import { UnexpectedError } from 'n8n-workflow'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { N8nPackagesService } from '@/modules/n8n-packages/n8n-packages.service'; import { MANIFEST_FILE } from '@/modules/n8n-packages/spec/constants'; import { diff --git a/packages/cli/src/modules/promotions.ee/working-copy-updater.ts b/packages/cli/src/modules/promotions.ee/working-copy-updater.ts index 4b650a2c4e2..29ec0cb8e37 100644 --- a/packages/cli/src/modules/promotions.ee/working-copy-updater.ts +++ b/packages/cli/src/modules/promotions.ee/working-copy-updater.ts @@ -1,4 +1,5 @@ import { Logger } from '@n8n/backend-common'; +import { BadRequestError, InternalServerError } from '@n8n/backend-services'; import { Service } from '@n8n/di'; import { InstanceSettings } from 'n8n-core'; import { jsonParse } from 'n8n-workflow'; @@ -7,8 +8,6 @@ import * as fs from 'node:fs/promises'; import path from 'node:path'; import { z } from 'zod'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { InternalServerError } from '@/errors/response-errors/internal-server.error'; import { MANIFEST_FILE } from '@/modules/n8n-packages/spec/constants'; import type { ManifestEntry, PackageManifest } from '@/modules/n8n-packages/spec/manifest.schema'; diff --git a/packages/cli/src/modules/provisioning.ee/__tests__/provisioning.service.ee.test.ts b/packages/cli/src/modules/provisioning.ee/__tests__/provisioning.service.ee.test.ts index efaf5dea11f..a2aa41855fd 100644 --- a/packages/cli/src/modules/provisioning.ee/__tests__/provisioning.service.ee.test.ts +++ b/packages/cli/src/modules/provisioning.ee/__tests__/provisioning.service.ee.test.ts @@ -1,5 +1,6 @@ import { BLOCK_ACCESS_ASSIGNMENT, type ProvisioningConfigDto } from '@n8n/api-types'; import type { Logger } from '@n8n/backend-common'; +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import { type GlobalConfig } from '@n8n/config'; import { type User, @@ -16,8 +17,6 @@ import type { EntityManager } from '@n8n/typeorm'; import { type InstanceSettings } from 'n8n-core'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { type EventService } from '@/events/event.service'; import { ProvisioningService } from '@/modules/provisioning.ee/provisioning.service.ee'; import { type RoleMappingRuleService } from '@/modules/provisioning.ee/role-mapping-rule.service.ee'; diff --git a/packages/cli/src/modules/provisioning.ee/__tests__/role-mapping-rule.service.ee.test.ts b/packages/cli/src/modules/provisioning.ee/__tests__/role-mapping-rule.service.ee.test.ts index 677a9dfa4cd..d24211a0e27 100644 --- a/packages/cli/src/modules/provisioning.ee/__tests__/role-mapping-rule.service.ee.test.ts +++ b/packages/cli/src/modules/provisioning.ee/__tests__/role-mapping-rule.service.ee.test.ts @@ -1,10 +1,8 @@ +import { BadRequestError, ConflictError, NotFoundError } from '@n8n/backend-services'; import { QueryFailedError } from '@n8n/typeorm'; import { mock } from 'vitest-mock-extended'; import { RoleMappingRuleService } from '@/modules/provisioning.ee/role-mapping-rule.service.ee'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { EventService } from '@/events/event.service'; import type { UserLike } from '@/events/maps/relay.event-map'; import type { diff --git a/packages/cli/src/modules/provisioning.ee/__tests__/role-mapping-rule.validation.test.ts b/packages/cli/src/modules/provisioning.ee/__tests__/role-mapping-rule.validation.test.ts index fdc61ec5b13..2837e78bb18 100644 --- a/packages/cli/src/modules/provisioning.ee/__tests__/role-mapping-rule.validation.test.ts +++ b/packages/cli/src/modules/provisioning.ee/__tests__/role-mapping-rule.validation.test.ts @@ -1,7 +1,6 @@ +import { BadRequestError } from '@n8n/backend-services'; import type { Role } from '@n8n/db'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - import { assertAndNormalizeProjectIdsForRuleType, assertRoleCompatibleWithMappingType, diff --git a/packages/cli/src/modules/provisioning.ee/errors/sso-access-denied.error.ts b/packages/cli/src/modules/provisioning.ee/errors/sso-access-denied.error.ts index 04b4d724c74..8a9294d8169 100644 --- a/packages/cli/src/modules/provisioning.ee/errors/sso-access-denied.error.ts +++ b/packages/cli/src/modules/provisioning.ee/errors/sso-access-denied.error.ts @@ -1,4 +1,4 @@ -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; +import { ForbiddenError } from '@n8n/backend-services'; /** * An SSO login denied because role mapping resolved to "Block access". diff --git a/packages/cli/src/modules/provisioning.ee/provisioning.controller.ee.ts b/packages/cli/src/modules/provisioning.ee/provisioning.controller.ee.ts index e065feb3736..1b2d2e1cbaa 100644 --- a/packages/cli/src/modules/provisioning.ee/provisioning.controller.ee.ts +++ b/packages/cli/src/modules/provisioning.ee/provisioning.controller.ee.ts @@ -1,11 +1,10 @@ import { LicenseState } from '@n8n/backend-common'; +import { ForbiddenError } from '@n8n/backend-services'; import { InstanceSettingsLoaderConfig } from '@n8n/config'; import { AuthenticatedRequest } from '@n8n/db'; import { Get, GlobalScope, Patch, RestController } from '@n8n/decorators'; import { Response } from 'express'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; - import { ProvisioningService } from './provisioning.service.ee'; @RestController('/sso/provisioning') diff --git a/packages/cli/src/modules/provisioning.ee/provisioning.service.ee.ts b/packages/cli/src/modules/provisioning.ee/provisioning.service.ee.ts index 5d5ef510f55..f5f2a052b40 100644 --- a/packages/cli/src/modules/provisioning.ee/provisioning.service.ee.ts +++ b/packages/cli/src/modules/provisioning.ee/provisioning.service.ee.ts @@ -4,6 +4,7 @@ import { ProvisioningConfigPatchDto, } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { BadRequestError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import { RoleRepository, @@ -24,7 +25,6 @@ import { InstanceSettings } from 'n8n-core'; import { jsonParse } from 'n8n-workflow'; import { ZodError } from 'zod'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { EventService } from '@/events/event.service'; import { Publisher } from '@/scaling/pubsub/publisher.service'; import { ProjectService } from '@/services/project.service.ee'; diff --git a/packages/cli/src/modules/provisioning.ee/role-mapping-rule.service.ee.ts b/packages/cli/src/modules/provisioning.ee/role-mapping-rule.service.ee.ts index fe2de8bcc55..e681a80199b 100644 --- a/packages/cli/src/modules/provisioning.ee/role-mapping-rule.service.ee.ts +++ b/packages/cli/src/modules/provisioning.ee/role-mapping-rule.service.ee.ts @@ -3,6 +3,7 @@ import { type ListRoleMappingRuleQueryInput, type PatchRoleMappingRuleInput, } from '@n8n/api-types'; +import { BadRequestError, ConflictError, NotFoundError } from '@n8n/backend-services'; import { isUniqueConstraintError, ProjectRepository, @@ -15,9 +16,6 @@ import { Service } from '@n8n/di'; import { type EntityManager, type FindOptionsOrder, In } from '@n8n/typeorm'; import type { z } from 'zod'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { EventService } from '@/events/event.service'; import type { UserLike } from '@/events/maps/relay.event-map'; diff --git a/packages/cli/src/modules/provisioning.ee/role-mapping-rule.validation.ts b/packages/cli/src/modules/provisioning.ee/role-mapping-rule.validation.ts index 63083a2e947..be9ee1e05d2 100644 --- a/packages/cli/src/modules/provisioning.ee/role-mapping-rule.validation.ts +++ b/packages/cli/src/modules/provisioning.ee/role-mapping-rule.validation.ts @@ -1,7 +1,6 @@ +import { BadRequestError } from '@n8n/backend-services'; import type { Role } from '@n8n/db'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - export function assertRoleCompatibleWithMappingType( role: Role, type: 'instance' | 'project', diff --git a/packages/cli/src/modules/quick-connect/__tests__/quick-connect.service.test.ts b/packages/cli/src/modules/quick-connect/__tests__/quick-connect.service.test.ts index 37736016f2c..e3edc1b883a 100644 --- a/packages/cli/src/modules/quick-connect/__tests__/quick-connect.service.test.ts +++ b/packages/cli/src/modules/quick-connect/__tests__/quick-connect.service.test.ts @@ -1,10 +1,9 @@ import type { Logger } from '@n8n/backend-common'; +import { BadRequestError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import { Container } from '@n8n/di'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - import type { IQuickConnectHandler } from '../handlers/handler.interface'; import { QuickConnectConfig } from '../quick-connect.config'; import { QuickConnectError } from '../quick-connect.errors'; diff --git a/packages/cli/src/modules/quick-connect/quick-connect.service.ts b/packages/cli/src/modules/quick-connect/quick-connect.service.ts index 71ae0aeee5c..78d8ae5e0eb 100644 --- a/packages/cli/src/modules/quick-connect/quick-connect.service.ts +++ b/packages/cli/src/modules/quick-connect/quick-connect.service.ts @@ -1,9 +1,8 @@ import { Logger } from '@n8n/backend-common'; +import { BadRequestError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import { Container, Service } from '@n8n/di'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - import type { IQuickConnectHandler, IQuickConnectHandlerOption, diff --git a/packages/cli/src/modules/redaction/__tests__/redaction-enforcement.service.test.ts b/packages/cli/src/modules/redaction/__tests__/redaction-enforcement.service.test.ts index c0f4d2bd842..6b592027960 100644 --- a/packages/cli/src/modules/redaction/__tests__/redaction-enforcement.service.test.ts +++ b/packages/cli/src/modules/redaction/__tests__/redaction-enforcement.service.test.ts @@ -1,9 +1,8 @@ import type { RedactionFloor } from '@n8n/api-types'; +import { UnprocessableRequestError } from '@n8n/backend-services'; import type { WorkflowSettings } from 'n8n-workflow'; import { mock } from 'vitest-mock-extended'; -import { UnprocessableRequestError } from '@/errors/response-errors/unprocessable.error'; - import type { InstanceRedactionEnforcementService } from '../instance-redaction-enforcement.service'; import { RedactionEnforcementService } from '../redaction-enforcement.service'; diff --git a/packages/cli/src/modules/redaction/executions/__tests__/execution-redaction.service.test.ts b/packages/cli/src/modules/redaction/executions/__tests__/execution-redaction.service.test.ts index c4147313f2e..4070c93542c 100644 --- a/packages/cli/src/modules/redaction/executions/__tests__/execution-redaction.service.test.ts +++ b/packages/cli/src/modules/redaction/executions/__tests__/execution-redaction.service.test.ts @@ -1,12 +1,11 @@ import { LicenseState, Logger } from '@n8n/backend-common'; +import { ForbiddenError, ScopeForbiddenError } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import type { User } from '@n8n/db'; import type { INode, IRunExecutionData, ITaskData, WorkflowExecuteMode } from 'n8n-workflow'; import { shouldRedactConsoleOutput } from 'n8n-workflow'; import { mock } from 'vitest-mock-extended'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { ScopeForbiddenError } from '@/errors/response-errors/scope-forbidden.error'; import type { EventService } from '@/events/event.service'; import type { ExecutionRedactionOptions, diff --git a/packages/cli/src/modules/redaction/executions/execution-redaction.service.ts b/packages/cli/src/modules/redaction/executions/execution-redaction.service.ts index 04bda02657a..3b72be9daec 100644 --- a/packages/cli/src/modules/redaction/executions/execution-redaction.service.ts +++ b/packages/cli/src/modules/redaction/executions/execution-redaction.service.ts @@ -1,4 +1,5 @@ import { LicenseState, Logger } from '@n8n/backend-common'; +import { ForbiddenError, ScopeForbiddenError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import { Service } from '@n8n/di'; import { @@ -9,8 +10,6 @@ import { } from 'n8n-workflow'; import { isCredSharingEnabled } from '@/constants/credential-sharing'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { ScopeForbiddenError } from '@/errors/response-errors/scope-forbidden.error'; import { EventService } from '@/events/event.service'; import type { ExecutionRedaction, diff --git a/packages/cli/src/modules/redaction/redaction-enforcement.service.ts b/packages/cli/src/modules/redaction/redaction-enforcement.service.ts index 2faf008f7cc..d8262176724 100644 --- a/packages/cli/src/modules/redaction/redaction-enforcement.service.ts +++ b/packages/cli/src/modules/redaction/redaction-enforcement.service.ts @@ -1,8 +1,7 @@ +import { UnprocessableRequestError } from '@n8n/backend-services'; import { Service } from '@n8n/di'; import type { WorkflowSettings } from 'n8n-workflow'; -import { UnprocessableRequestError } from '@/errors/response-errors/unprocessable.error'; - import { InstanceRedactionEnforcementService } from './instance-redaction-enforcement.service'; import { policyMeetsFloor, REDACTION_FLOOR_VIOLATION_MESSAGE } from './redaction-policy'; diff --git a/packages/cli/src/modules/source-control.ee/__tests__/source-control-import.service.ee.test.ts b/packages/cli/src/modules/source-control.ee/__tests__/source-control-import.service.ee.test.ts index 50b6c17fdd2..104b88fe7e3 100644 --- a/packages/cli/src/modules/source-control.ee/__tests__/source-control-import.service.ee.test.ts +++ b/packages/cli/src/modules/source-control.ee/__tests__/source-control-import.service.ee.test.ts @@ -1,5 +1,6 @@ import type { SourceControlledFile } from '@n8n/api-types'; import type { Logger } from '@n8n/backend-common'; +import { WorkflowPublishBlockedError } from '@n8n/backend-services'; import type { PolicyCleared, PolicyViolation } from '@n8n/decorators'; import { type Variables, @@ -36,7 +37,6 @@ import { mock } from 'vitest-mock-extended'; import type { CredentialsService } from '@/credentials/credentials.service'; import type { VariablesService } from '@/environments.ee/variables/variables.service.ee'; import type { ExecutionPersistence } from '@/executions/execution-persistence'; -import { WorkflowPublishBlockedError } from '@/errors/response-errors/workflow-publish-blocked.error'; import type { DataTableColumnRepository } from '@/modules/data-table/data-table-column.repository'; import type { DataTableDDLService } from '@/modules/data-table/data-table-ddl.service'; import type { DataTableSizeValidator } from '@/modules/data-table/data-table-size-validator.service'; diff --git a/packages/cli/src/modules/source-control.ee/__tests__/source-control-scoped.service.test.ts b/packages/cli/src/modules/source-control.ee/__tests__/source-control-scoped.service.test.ts index 567dc42f7b8..b6e238123e6 100644 --- a/packages/cli/src/modules/source-control.ee/__tests__/source-control-scoped.service.test.ts +++ b/packages/cli/src/modules/source-control.ee/__tests__/source-control-scoped.service.test.ts @@ -1,9 +1,8 @@ +import { ForbiddenError } from '@n8n/backend-services'; import type { AuthenticatedRequest, Project } from '@n8n/db'; import { hasGlobalScope } from '@n8n/permissions'; import { mock } from 'vitest-mock-extended'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; - import type { SourceControlContextFactory } from '../source-control-context.factory'; import { SourceControlScopedService } from '../source-control-scoped.service'; import type { SourceControlContext } from '../types/source-control-context'; diff --git a/packages/cli/src/modules/source-control.ee/__tests__/source-control-status.service.test.ts b/packages/cli/src/modules/source-control.ee/__tests__/source-control-status.service.test.ts index 102cceb7409..0d6d72b0f2a 100644 --- a/packages/cli/src/modules/source-control.ee/__tests__/source-control-status.service.test.ts +++ b/packages/cli/src/modules/source-control.ee/__tests__/source-control-status.service.test.ts @@ -1,3 +1,4 @@ +import { ForbiddenError } from '@n8n/backend-services'; import { mockLogger } from '@n8n/backend-test-utils'; import { GLOBAL_ADMIN_ROLE, @@ -16,7 +17,6 @@ import { Container } from '@n8n/di'; import { InstanceSettings } from 'n8n-core'; import { mock } from 'vitest-mock-extended'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import type { EventService } from '@/events/event.service'; import type { SourceControlContextFactory } from '../source-control-context.factory'; diff --git a/packages/cli/src/modules/source-control.ee/__tests__/source-control.controller.ee.test.ts b/packages/cli/src/modules/source-control.ee/__tests__/source-control.controller.ee.test.ts index fb643244c66..d86d7c46c1a 100644 --- a/packages/cli/src/modules/source-control.ee/__tests__/source-control.controller.ee.test.ts +++ b/packages/cli/src/modules/source-control.ee/__tests__/source-control.controller.ee.test.ts @@ -1,4 +1,5 @@ import type { PullWorkFolderRequestDto, PushWorkFolderRequestDto } from '@n8n/api-types'; +import { ForbiddenError } from '@n8n/backend-services'; import type { AuthenticatedRequest, Project, User } from '@n8n/db'; import { ControllerRegistryMetadata, type Controller } from '@n8n/decorators'; import { Container } from '@n8n/di'; @@ -7,7 +8,6 @@ import type { Response } from 'express'; import type { Mock } from 'vitest'; import { mock } from 'vitest-mock-extended'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import type { EventService } from '@/events/event.service'; import type { SourceControlContextFactory } from '../source-control-context.factory'; diff --git a/packages/cli/src/modules/source-control.ee/__tests__/source-control.service.test.ts b/packages/cli/src/modules/source-control.ee/__tests__/source-control.service.test.ts index 475fff2e7f5..1c859f7de8d 100644 --- a/packages/cli/src/modules/source-control.ee/__tests__/source-control.service.test.ts +++ b/packages/cli/src/modules/source-control.ee/__tests__/source-control.service.test.ts @@ -1,3 +1,4 @@ +import { ForbiddenError } from '@n8n/backend-services'; import type { Mock } from 'vitest'; import type { SourceControlledFile } from '@n8n/api-types'; import { isContainedWithin } from '@n8n/backend-common'; @@ -9,7 +10,6 @@ import type { CommitResult, PullResult, PushResult } from 'simple-git'; import { SourceControlPreferencesService } from '@/modules/source-control.ee/source-control-preferences.service.ee'; import { SourceControlService } from '@/modules/source-control.ee/source-control.service.ee'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import type { EventService } from '@/events/event.service'; import type { SourceControlExportService } from '../source-control-export.service.ee'; import type { SourceControlGitService } from '../source-control-git.service.ee'; diff --git a/packages/cli/src/modules/source-control.ee/source-control-import.service.ee.ts b/packages/cli/src/modules/source-control.ee/source-control-import.service.ee.ts index 3c34435aece..21ae989379c 100644 --- a/packages/cli/src/modules/source-control.ee/source-control-import.service.ee.ts +++ b/packages/cli/src/modules/source-control.ee/source-control-import.service.ee.ts @@ -1,5 +1,6 @@ import type { SourceControlledFile, WorkflowPublishBlockedDetails } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { WorkflowPublishBlockedError } from '@n8n/backend-services'; import type { FindOptionsWhere, Project, @@ -46,7 +47,6 @@ import path from 'path'; import { CredentialsService } from '@/credentials/credentials.service'; import { ExecutionPersistence } from '@/executions/execution-persistence'; -import { WorkflowPublishBlockedError } from '@/errors/response-errors/workflow-publish-blocked.error'; import type { IWorkflowToImport } from '@/interfaces'; import { DataTableColumn } from '@/modules/data-table/data-table-column.entity'; import { DataTableColumnRepository } from '@/modules/data-table/data-table-column.repository'; diff --git a/packages/cli/src/modules/source-control.ee/source-control-scoped.service.ts b/packages/cli/src/modules/source-control.ee/source-control-scoped.service.ts index 330c2279605..2658a701645 100644 --- a/packages/cli/src/modules/source-control.ee/source-control-scoped.service.ts +++ b/packages/cli/src/modules/source-control.ee/source-control-scoped.service.ts @@ -1,3 +1,4 @@ +import { ForbiddenError } from '@n8n/backend-services'; import { WorkflowRepository } from '@n8n/db'; import { type AuthenticatedRequest, @@ -11,7 +12,6 @@ import { Service } from '@n8n/di'; import { hasGlobalScope } from '@n8n/permissions'; import type { FindOptionsWhere } from '@n8n/typeorm'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import type { DataTable } from '@/modules/data-table/data-table.entity'; import { SourceControlContextFactory } from './source-control-context.factory'; diff --git a/packages/cli/src/modules/source-control.ee/source-control-status.service.ee.ts b/packages/cli/src/modules/source-control.ee/source-control-status.service.ee.ts index 33730c09bb7..fd0d95b521a 100644 --- a/packages/cli/src/modules/source-control.ee/source-control-status.service.ee.ts +++ b/packages/cli/src/modules/source-control.ee/source-control-status.service.ee.ts @@ -1,5 +1,6 @@ import type { SourceControlledFile } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { ForbiddenError } from '@n8n/backend-services'; import { FolderRepository, TagRepository, type User, WorkflowRepository } from '@n8n/db'; import { Service } from '@n8n/di'; import { hasGlobalScope } from '@n8n/permissions'; @@ -7,7 +8,6 @@ import { In } from '@n8n/typeorm'; import pick from 'lodash/pick'; import { UserError } from 'n8n-workflow'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { EventService } from '@/events/event.service'; import { ExportableTagEntity } from '@/modules/source-control.ee/types/exportable-tags'; diff --git a/packages/cli/src/modules/source-control.ee/source-control.controller.ee.ts b/packages/cli/src/modules/source-control.ee/source-control.controller.ee.ts index 3b8e5b9839e..320c38a6352 100644 --- a/packages/cli/src/modules/source-control.ee/source-control.controller.ee.ts +++ b/packages/cli/src/modules/source-control.ee/source-control.controller.ee.ts @@ -4,6 +4,7 @@ import { type GitCommitInfo, type SourceControlledFile, } from '@n8n/api-types'; +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import { AuthenticatedRequest } from '@n8n/db'; import { Get, Post, Patch, RestController, GlobalScope, Body } from '@n8n/decorators'; import { hasGlobalScope } from '@n8n/permissions'; @@ -22,8 +23,6 @@ import { SourceControlRequest } from './types/requests'; import { SourceControlGetStatus } from './types/source-control-get-status'; import type { SourceControlPreferences } from './types/source-control-preferences'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { EventService } from '@/events/event.service'; import { IWorkflowToImport } from '@/interfaces'; diff --git a/packages/cli/src/modules/source-control.ee/source-control.service.ee.ts b/packages/cli/src/modules/source-control.ee/source-control.service.ee.ts index 5ccedbf954d..4dd5a36cd4f 100644 --- a/packages/cli/src/modules/source-control.ee/source-control.service.ee.ts +++ b/packages/cli/src/modules/source-control.ee/source-control.service.ee.ts @@ -1,5 +1,6 @@ import type { PullWorkFolderRequestDto, SourceControlledFile } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import { type User } from '@n8n/db'; import { OnPubSubEvent } from '@n8n/decorators'; import { Service } from '@n8n/di'; @@ -9,8 +10,6 @@ import pLimit from 'p-limit'; import * as path from 'path'; import type { PushResult } from 'simple-git'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { EventService } from '@/events/event.service'; import { IWorkflowToImport } from '@/interfaces'; diff --git a/packages/cli/src/modules/sso-oidc/__tests__/oidc.controller.ee.test.ts b/packages/cli/src/modules/sso-oidc/__tests__/oidc.controller.ee.test.ts index 7ba85ec32fe..681b9bd7294 100644 --- a/packages/cli/src/modules/sso-oidc/__tests__/oidc.controller.ee.test.ts +++ b/packages/cli/src/modules/sso-oidc/__tests__/oidc.controller.ee.test.ts @@ -1,4 +1,5 @@ import type { Logger } from '@n8n/backend-common'; +import { ForbiddenError } from '@n8n/backend-services'; import type { GlobalConfig, InstanceSettingsLoaderConfig } from '@n8n/config'; import { Time } from '@n8n/constants'; import { GLOBAL_MEMBER_ROLE, type AuthenticatedRequest, type User } from '@n8n/db'; @@ -7,7 +8,6 @@ import { mock } from 'vitest-mock-extended'; import type { AuthService } from '@/auth/auth.service'; import { OIDC_NONCE_COOKIE_NAME, OIDC_STATE_COOKIE_NAME } from '@/constants'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import type { EventService } from '@/events/event.service'; import { SsoAccessDeniedError } from '@/modules/provisioning.ee/errors/sso-access-denied.error'; import type { AuthlessRequest } from '@/requests'; diff --git a/packages/cli/src/modules/sso-oidc/__tests__/oidc.service.ee.test.ts b/packages/cli/src/modules/sso-oidc/__tests__/oidc.service.ee.test.ts index 9a3f36b4b76..fa58cac592a 100644 --- a/packages/cli/src/modules/sso-oidc/__tests__/oidc.service.ee.test.ts +++ b/packages/cli/src/modules/sso-oidc/__tests__/oidc.service.ee.test.ts @@ -1,3 +1,4 @@ +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import type { Mock, Mocked } from 'vitest'; import type { OidcConfigDto } from '@n8n/api-types'; import type { Logger } from '@n8n/backend-common'; @@ -22,8 +23,6 @@ vi.mock('openid-client', async (importOriginal) => { }; }); -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { type ProvisioningService } from '@/modules/provisioning.ee/provisioning.service.ee'; import { Publisher } from '@/scaling/pubsub/publisher.service'; import type { JwtService } from '@/services/jwt.service'; diff --git a/packages/cli/src/modules/sso-oidc/oidc.controller.ee.ts b/packages/cli/src/modules/sso-oidc/oidc.controller.ee.ts index 5fd11b83819..b0b5dd6c890 100644 --- a/packages/cli/src/modules/sso-oidc/oidc.controller.ee.ts +++ b/packages/cli/src/modules/sso-oidc/oidc.controller.ee.ts @@ -1,5 +1,6 @@ import { OidcConfigDto } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import { GlobalConfig, InstanceSettingsLoaderConfig } from '@n8n/config'; import { Time } from '@n8n/constants'; import { AuthenticatedRequest } from '@n8n/db'; @@ -8,8 +9,6 @@ import { Request, Response } from 'express'; import { AuthService } from '@/auth/auth.service'; import { OIDC_NONCE_COOKIE_NAME, OIDC_STATE_COOKIE_NAME } from '@/constants'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { EventService } from '@/events/event.service'; import { SSO_ACCESS_DENIED_REDIRECT_PATH, diff --git a/packages/cli/src/modules/sso-oidc/oidc.service.ee.ts b/packages/cli/src/modules/sso-oidc/oidc.service.ee.ts index 22debf04884..c42fa1ec026 100644 --- a/packages/cli/src/modules/sso-oidc/oidc.service.ee.ts +++ b/packages/cli/src/modules/sso-oidc/oidc.service.ee.ts @@ -1,6 +1,7 @@ import { OidcConfigDto } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; import { OutboundHttp } from '@n8n/backend-network'; +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import { AuthIdentity, @@ -19,8 +20,6 @@ import { jsonParse, UserError } from 'n8n-workflow'; import type * as openidClientTypes from 'openid-client'; import { inspect } from 'util'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { buildOidcClaimsContext } from '@/modules/provisioning.ee/claims-context.builder'; import { ProvisioningService } from '@/modules/provisioning.ee/provisioning.service.ee'; import { JwtService } from '@/services/jwt.service'; diff --git a/packages/cli/src/modules/sso-saml/__tests__/saml.service.ee.test.ts b/packages/cli/src/modules/sso-saml/__tests__/saml.service.ee.test.ts index 88b13153c87..46f772f931e 100644 --- a/packages/cli/src/modules/sso-saml/__tests__/saml.service.ee.test.ts +++ b/packages/cli/src/modules/sso-saml/__tests__/saml.service.ee.test.ts @@ -1,3 +1,4 @@ +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import type { Mock, Mocked } from 'vitest'; import type { SamlPreferences } from '@n8n/api-types'; import type { HttpRequestClient, OutboundHttp } from '@n8n/backend-network'; @@ -12,8 +13,6 @@ import type { Cipher, InstanceSettings } from 'n8n-core'; import { CREDENTIAL_BLANKING_VALUE } from 'n8n-workflow'; import type { IdentityProviderInstance, ServiceProviderInstance } from 'samlify'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import type { ProvisioningService } from '@/modules/provisioning.ee/provisioning.service.ee'; import { Publisher } from '@/scaling/pubsub/publisher.service'; import type { CacheService } from '@/services/cache/cache.service'; diff --git a/packages/cli/src/modules/sso-saml/saml-helpers.ts b/packages/cli/src/modules/sso-saml/saml-helpers.ts index 5c1953463bf..beb15eac4f8 100644 --- a/packages/cli/src/modules/sso-saml/saml-helpers.ts +++ b/packages/cli/src/modules/sso-saml/saml-helpers.ts @@ -1,4 +1,5 @@ import type { SamlAcsDto, SamlPreferences } from '@n8n/api-types'; +import { AuthError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import type { User } from '@n8n/db'; import { AuthIdentity, AuthIdentityRepository, UserRepository } from '@n8n/db'; @@ -6,7 +7,6 @@ import { Container } from '@n8n/di'; import { randomString } from 'n8n-workflow'; import type { FlowResult } from 'samlify/types/src/flow'; -import { AuthError } from '@/errors/response-errors/auth.error'; import { PasswordUtility } from '@/services/password.utility'; import { assertAuthenticationMethodCanBeEnabled, diff --git a/packages/cli/src/modules/sso-saml/saml.controller.ee.ts b/packages/cli/src/modules/sso-saml/saml.controller.ee.ts index d02a6978c46..17ea7236815 100644 --- a/packages/cli/src/modules/sso-saml/saml.controller.ee.ts +++ b/packages/cli/src/modules/sso-saml/saml.controller.ee.ts @@ -1,4 +1,5 @@ import { SamlAcsDto, SamlPreferences, SamlToggleDto } from '@n8n/api-types'; +import { AuthError, ForbiddenError } from '@n8n/backend-services'; import { InstanceSettingsLoaderConfig } from '@n8n/config'; import { AuthenticatedRequest } from '@n8n/db'; import { Get, Post, RestController, GlobalScope, Body } from '@n8n/decorators'; @@ -9,8 +10,6 @@ import type { PostBindingContext } from 'samlify/types/src/entity'; import url from 'url'; import { AuthService } from '@/auth/auth.service'; -import { AuthError } from '@/errors/response-errors/auth.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { EventService } from '@/events/event.service'; import { SSO_ACCESS_DENIED_REDIRECT_PATH } from '@/modules/provisioning.ee/constants'; import { SsoAccessDeniedError } from '@/modules/provisioning.ee/errors/sso-access-denied.error'; diff --git a/packages/cli/src/modules/sso-saml/saml.service.ee.ts b/packages/cli/src/modules/sso-saml/saml.service.ee.ts index abe0e3f421e..b5aa10331f7 100644 --- a/packages/cli/src/modules/sso-saml/saml.service.ee.ts +++ b/packages/cli/src/modules/sso-saml/saml.service.ee.ts @@ -1,6 +1,7 @@ import type { SamlPreferences, SamlPreferencesAttributeMapping } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; import { OutboundHttp } from '@n8n/backend-network'; +import { AuthError, BadRequestError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import type { Settings, User } from '@n8n/db'; import { isValidEmail, SettingsRepository, UserRepository } from '@n8n/db'; @@ -17,8 +18,6 @@ import type { PostBindingContext, } from 'samlify/types/src/entity'; -import { AuthError } from '@/errors/response-errors/auth.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { buildSamlClaimsContext } from '@/modules/provisioning.ee/claims-context.builder'; import { ProvisioningService } from '@/modules/provisioning.ee/provisioning.service.ee'; import { CacheService } from '@/services/cache/cache.service'; diff --git a/packages/cli/src/modules/token-exchange/controllers/__tests__/token-exchange.controller.test.ts b/packages/cli/src/modules/token-exchange/controllers/__tests__/token-exchange.controller.test.ts index 340b5ed3771..8edbe5457a3 100644 --- a/packages/cli/src/modules/token-exchange/controllers/__tests__/token-exchange.controller.test.ts +++ b/packages/cli/src/modules/token-exchange/controllers/__tests__/token-exchange.controller.test.ts @@ -1,3 +1,4 @@ +import { AuthError, BadRequestError } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import { Container } from '@n8n/di'; import type { Response } from 'express'; @@ -5,8 +6,6 @@ import { ErrorReporter } from 'n8n-core'; import { UnexpectedError } from 'n8n-workflow'; import { mock } from 'vitest-mock-extended'; -import { AuthError } from '@/errors/response-errors/auth.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { EventService } from '@/events/event.service'; import type { AuthlessRequest } from '@/requests'; diff --git a/packages/cli/src/modules/token-exchange/controllers/token-exchange.controller.ts b/packages/cli/src/modules/token-exchange/controllers/token-exchange.controller.ts index c5d48510d50..db4cdc939b3 100644 --- a/packages/cli/src/modules/token-exchange/controllers/token-exchange.controller.ts +++ b/packages/cli/src/modules/token-exchange/controllers/token-exchange.controller.ts @@ -1,3 +1,4 @@ +import { AuthError, BadRequestError } from '@n8n/backend-services'; import { Time } from '@n8n/constants'; import { Post, RestController } from '@n8n/decorators'; import { Container } from '@n8n/di'; @@ -5,8 +6,6 @@ import type { Response } from 'express'; import { ErrorReporter } from 'n8n-core'; import { z, ZodError } from 'zod'; -import { AuthError } from '@/errors/response-errors/auth.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { EventService } from '@/events/event.service'; import { AuthlessRequest } from '@/requests'; diff --git a/packages/cli/src/modules/token-exchange/services/__tests__/token-exchange.service.test.ts b/packages/cli/src/modules/token-exchange/services/__tests__/token-exchange.service.test.ts index 2490d47967a..12d7e208ab2 100644 --- a/packages/cli/src/modules/token-exchange/services/__tests__/token-exchange.service.test.ts +++ b/packages/cli/src/modules/token-exchange/services/__tests__/token-exchange.service.test.ts @@ -1,10 +1,9 @@ import type { Logger } from '@n8n/backend-common'; +import { AuthError, BadRequestError } from '@n8n/backend-services'; import { GLOBAL_MEMBER_ROLE, type User } from '@n8n/db'; import jwt from 'jsonwebtoken'; import { mock } from 'vitest-mock-extended'; -import { AuthError } from '@/errors/response-errors/auth.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import type { JwtService } from '@/services/jwt.service'; import type { TokenExchangeConfig } from '../../token-exchange.config'; diff --git a/packages/cli/src/modules/token-exchange/token-exchange.errors.ts b/packages/cli/src/modules/token-exchange/token-exchange.errors.ts index 2b98d84b55f..916bbec0cf4 100644 --- a/packages/cli/src/modules/token-exchange/token-exchange.errors.ts +++ b/packages/cli/src/modules/token-exchange/token-exchange.errors.ts @@ -1,5 +1,4 @@ -import { AuthError } from '@/errors/response-errors/auth.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; +import { AuthError, BadRequestError } from '@n8n/backend-services'; import type { TokenExchangeFailureReason } from './token-exchange.types'; diff --git a/packages/cli/src/modules/type-availability-policies/__tests__/type-availability-policy.service.test.ts b/packages/cli/src/modules/type-availability-policies/__tests__/type-availability-policy.service.test.ts index 76ef9c7fc32..f0e8d90e6f5 100644 --- a/packages/cli/src/modules/type-availability-policies/__tests__/type-availability-policy.service.test.ts +++ b/packages/cli/src/modules/type-availability-policies/__tests__/type-availability-policy.service.test.ts @@ -1,10 +1,9 @@ +import { ConflictError, NotFoundError } from '@n8n/backend-services'; import { mockLogger } from '@n8n/backend-test-utils'; import type { OperationContext, TransactionRunner } from '@n8n/db'; import type { NodeLoader } from 'n8n-workflow'; import { mock } from 'vitest-mock-extended'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { EventService } from '@/events/event.service'; import type { LoadNodesAndCredentials } from '@/load-nodes-and-credentials'; import type { NodeTypes } from '@/node-types'; diff --git a/packages/cli/src/modules/type-availability-policies/credential-type-policy-instance.controller.ts b/packages/cli/src/modules/type-availability-policies/credential-type-policy-instance.controller.ts index 8dbcb5226ec..c368a83cac0 100644 --- a/packages/cli/src/modules/type-availability-policies/credential-type-policy-instance.controller.ts +++ b/packages/cli/src/modules/type-availability-policies/credential-type-policy-instance.controller.ts @@ -4,6 +4,7 @@ import { ReplaceAttachmentsDto, UpdatePolicyDocumentDto, } from '@n8n/api-types'; +import { NotFoundError } from '@n8n/backend-services'; import { LICENSE_FEATURES } from '@n8n/constants'; import { AuthenticatedRequest } from '@n8n/db'; import { @@ -20,8 +21,6 @@ import { } from '@n8n/decorators'; import type { Response } from 'express'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import { CREDENTIAL_TYPES_KIND } from './constants'; import { TypeAvailabilityPolicyService } from './type-availability-policy.service'; diff --git a/packages/cli/src/modules/type-availability-policies/type-availability-policy-instance.controller.ts b/packages/cli/src/modules/type-availability-policies/type-availability-policy-instance.controller.ts index a3a93540a29..d3b1f913b64 100644 --- a/packages/cli/src/modules/type-availability-policies/type-availability-policy-instance.controller.ts +++ b/packages/cli/src/modules/type-availability-policies/type-availability-policy-instance.controller.ts @@ -4,6 +4,7 @@ import { ReplaceAttachmentsDto, UpdatePolicyDocumentDto, } from '@n8n/api-types'; +import { NotFoundError } from '@n8n/backend-services'; import { LICENSE_FEATURES } from '@n8n/constants'; import { AuthenticatedRequest } from '@n8n/db'; import { @@ -20,8 +21,6 @@ import { } from '@n8n/decorators'; import type { Response } from 'express'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - import { NODE_TYPES_KIND } from './constants'; import { TypeAvailabilityPolicyService } from './type-availability-policy.service'; diff --git a/packages/cli/src/modules/type-availability-policies/type-availability-policy.service.ts b/packages/cli/src/modules/type-availability-policies/type-availability-policy.service.ts index 0b308291740..b74ac5474a1 100644 --- a/packages/cli/src/modules/type-availability-policies/type-availability-policy.service.ts +++ b/packages/cli/src/modules/type-availability-policies/type-availability-policy.service.ts @@ -1,13 +1,12 @@ import type { NodeTypeAvailabilityScope } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { ConflictError, NotFoundError } from '@n8n/backend-services'; import { Time } from '@n8n/constants'; import { TransactionRunner, type OperationContext } from '@n8n/db'; import { Service } from '@n8n/di'; import { LRUCache } from 'lru-cache'; import { OperationalError, UserError } from 'n8n-workflow'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { EventService } from '@/events/event.service'; import { LoadNodesAndCredentials } from '@/load-nodes-and-credentials'; import { NodeTypes } from '@/node-types'; diff --git a/packages/cli/src/modules/workflow-reviews.ee/__tests__/workflow-review-authorization.access.service.test.ts b/packages/cli/src/modules/workflow-reviews.ee/__tests__/workflow-review-authorization.access.service.test.ts index 1c3b8463009..d909650e1f7 100644 --- a/packages/cli/src/modules/workflow-reviews.ee/__tests__/workflow-review-authorization.access.service.test.ts +++ b/packages/cli/src/modules/workflow-reviews.ee/__tests__/workflow-review-authorization.access.service.test.ts @@ -1,3 +1,4 @@ +import { NotFoundError } from '@n8n/backend-services'; import type { Project, ProjectRelationRepository, @@ -14,7 +15,6 @@ import { mock } from 'vitest-mock-extended'; import { WorkflowReviewAuthorizationService } from '../workflow-review-authorization.service'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { ProjectService } from '@/services/project.service.ee'; import type { RoleService } from '@/services/role.service'; import type { WorkflowFinderService } from '@/workflows/workflow-finder.service'; diff --git a/packages/cli/src/modules/workflow-reviews.ee/__tests__/workflow-review-inbox.detail.service.test.ts b/packages/cli/src/modules/workflow-reviews.ee/__tests__/workflow-review-inbox.detail.service.test.ts index 659ede95d59..432a08e6467 100644 --- a/packages/cli/src/modules/workflow-reviews.ee/__tests__/workflow-review-inbox.detail.service.test.ts +++ b/packages/cli/src/modules/workflow-reviews.ee/__tests__/workflow-review-inbox.detail.service.test.ts @@ -1,4 +1,5 @@ import type { LicenseState } from '@n8n/backend-common'; +import { ForbiddenError } from '@n8n/backend-services'; import type { User, WorkflowHistory, @@ -10,7 +11,6 @@ import type { } from '@n8n/db'; import { mock } from 'vitest-mock-extended'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import type { WorkflowReviewPolicyService } from '@/services/workflow-review-policy.service'; import type { WorkflowHistoryService } from '@/workflows/workflow-history/workflow-history.service'; diff --git a/packages/cli/src/modules/workflow-reviews.ee/__tests__/workflow-review-publish-guard.service.test.ts b/packages/cli/src/modules/workflow-reviews.ee/__tests__/workflow-review-publish-guard.service.test.ts index c8e99df91a6..52fb2f1d5ff 100644 --- a/packages/cli/src/modules/workflow-reviews.ee/__tests__/workflow-review-publish-guard.service.test.ts +++ b/packages/cli/src/modules/workflow-reviews.ee/__tests__/workflow-review-publish-guard.service.test.ts @@ -1,8 +1,7 @@ +import type { WorkflowPublishBlockedError } from '@n8n/backend-services'; import type { WorkflowReviewRequest, WorkflowReviewRequestRepository } from '@n8n/db'; import { mock } from 'vitest-mock-extended'; -import type { WorkflowPublishBlockedError } from '@/errors/response-errors/workflow-publish-blocked.error'; - import type { WorkflowReviewFeatureGate } from '../workflow-review-feature-gate.service'; import { WorkflowReviewPublishGuard } from '../workflow-review-publish-guard.service'; diff --git a/packages/cli/src/modules/workflow-reviews.ee/__tests__/workflow-review-request-decision.service.test.ts b/packages/cli/src/modules/workflow-reviews.ee/__tests__/workflow-review-request-decision.service.test.ts index ddb6c405ca2..d948cec72b0 100644 --- a/packages/cli/src/modules/workflow-reviews.ee/__tests__/workflow-review-request-decision.service.test.ts +++ b/packages/cli/src/modules/workflow-reviews.ee/__tests__/workflow-review-request-decision.service.test.ts @@ -1,5 +1,11 @@ import type { DecideWorkflowReviewRequestDto } from '@n8n/api-types'; import type { LicenseState, Logger } from '@n8n/backend-common'; +import { + BadRequestError, + ConflictError, + ForbiddenError, + NotFoundError, +} from '@n8n/backend-services'; import type { DbLockService, Project, @@ -30,10 +36,6 @@ import { WorkflowReviewRequestMutationGuard } from '../workflow-review-request-m import { WorkflowReviewStateNotifier } from '../workflow-review-state-notifier.service'; import type { CollaborationService } from '@/collaboration/collaboration.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { EventService } from '@/events/event.service'; import type { ProjectService } from '@/services/project.service.ee'; import type { RoleService } from '@/services/role.service'; diff --git a/packages/cli/src/modules/workflow-reviews.ee/__tests__/workflow-review-request-status.service.test.ts b/packages/cli/src/modules/workflow-reviews.ee/__tests__/workflow-review-request-status.service.test.ts index 0c2576514e6..3e1bed554e4 100644 --- a/packages/cli/src/modules/workflow-reviews.ee/__tests__/workflow-review-request-status.service.test.ts +++ b/packages/cli/src/modules/workflow-reviews.ee/__tests__/workflow-review-request-status.service.test.ts @@ -1,5 +1,6 @@ import type { ListWorkflowReviewRequestsQueryDto } from '@n8n/api-types'; import type { LicenseState } from '@n8n/backend-common'; +import { ForbiddenError, NotFoundError } from '@n8n/backend-services'; import { User } from '@n8n/db'; import type { UserRepository, @@ -9,8 +10,6 @@ import type { } from '@n8n/db'; import { mock } from 'vitest-mock-extended'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { WorkflowReviewPolicyService } from '@/services/workflow-review-policy.service'; import type { WorkflowFinderService } from '@/workflows/workflow-finder.service'; diff --git a/packages/cli/src/modules/workflow-reviews.ee/__tests__/workflow-review-request-submission.service.test.ts b/packages/cli/src/modules/workflow-reviews.ee/__tests__/workflow-review-request-submission.service.test.ts index fbea5443b89..c42c3acc10a 100644 --- a/packages/cli/src/modules/workflow-reviews.ee/__tests__/workflow-review-request-submission.service.test.ts +++ b/packages/cli/src/modules/workflow-reviews.ee/__tests__/workflow-review-request-submission.service.test.ts @@ -3,6 +3,12 @@ import type { GetWorkflowReviewEligibleReviewersQueryDto, } from '@n8n/api-types'; import type { LicenseState, Logger } from '@n8n/backend-common'; +import { + BadRequestError, + ConflictError, + ForbiddenError, + NotFoundError, +} from '@n8n/backend-services'; import { DbLock, User } from '@n8n/db'; import type { AuthIdentity, @@ -25,10 +31,6 @@ import type { import { mock } from 'vitest-mock-extended'; import type { CollaborationService } from '@/collaboration/collaboration.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { EventService } from '@/events/event.service'; import type { RoleService } from '@/services/role.service'; import type { WorkflowReviewPolicyService } from '@/services/workflow-review-policy.service'; diff --git a/packages/cli/src/modules/workflow-reviews.ee/__tests__/workflow-review-request-submission.version-update.service.test.ts b/packages/cli/src/modules/workflow-reviews.ee/__tests__/workflow-review-request-submission.version-update.service.test.ts index 9058f01f137..252de344256 100644 --- a/packages/cli/src/modules/workflow-reviews.ee/__tests__/workflow-review-request-submission.version-update.service.test.ts +++ b/packages/cli/src/modules/workflow-reviews.ee/__tests__/workflow-review-request-submission.version-update.service.test.ts @@ -1,5 +1,11 @@ import type { UpdateWorkflowReviewRequestVersionDto } from '@n8n/api-types'; import type { LicenseState, Logger } from '@n8n/backend-common'; +import { + BadRequestError, + ConflictError, + ForbiddenError, + NotFoundError, +} from '@n8n/backend-services'; import { DbLock } from '@n8n/db'; import type { DbLockService, @@ -24,10 +30,6 @@ import type { import { mock } from 'vitest-mock-extended'; import type { CollaborationService } from '@/collaboration/collaboration.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { EventService } from '@/events/event.service'; import type { RoleService } from '@/services/role.service'; import type { WorkflowReviewPolicyService } from '@/services/workflow-review-policy.service'; diff --git a/packages/cli/src/modules/workflow-reviews.ee/workflow-review-activity.service.ts b/packages/cli/src/modules/workflow-reviews.ee/workflow-review-activity.service.ts index 9d9ad7c360f..926f55a1285 100644 --- a/packages/cli/src/modules/workflow-reviews.ee/workflow-review-activity.service.ts +++ b/packages/cli/src/modules/workflow-reviews.ee/workflow-review-activity.service.ts @@ -6,6 +6,7 @@ import type { WorkflowReviewEligibleReviewer, } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { BadRequestError, ConflictError, ForbiddenError } from '@n8n/backend-services'; import { TransactionRunner, UserRepository, @@ -17,9 +18,6 @@ import { } from '@n8n/db'; import { Service } from '@n8n/di'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { EventService } from '@/events/event.service'; import { WorkflowReviewAuthorizationService } from './workflow-review-authorization.service'; diff --git a/packages/cli/src/modules/workflow-reviews.ee/workflow-review-authorization.service.ts b/packages/cli/src/modules/workflow-reviews.ee/workflow-review-authorization.service.ts index 9fcaf9f3dee..18240cb83c6 100644 --- a/packages/cli/src/modules/workflow-reviews.ee/workflow-review-authorization.service.ts +++ b/packages/cli/src/modules/workflow-reviews.ee/workflow-review-authorization.service.ts @@ -1,4 +1,5 @@ import type { WorkflowReviewDecisionIneligibilityReason } from '@n8n/api-types'; +import { NotFoundError } from '@n8n/backend-services'; import { ProjectRelationRepository, ProjectRepository, @@ -19,7 +20,6 @@ import { hasGlobalScope, } from '@n8n/permissions'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { ProjectService } from '@/services/project.service.ee'; import { RoleService } from '@/services/role.service'; import { WorkflowFinderService } from '@/workflows/workflow-finder.service'; diff --git a/packages/cli/src/modules/workflow-reviews.ee/workflow-review-feature-gate.service.ts b/packages/cli/src/modules/workflow-reviews.ee/workflow-review-feature-gate.service.ts index d56210750fa..a00399d6c37 100644 --- a/packages/cli/src/modules/workflow-reviews.ee/workflow-review-feature-gate.service.ts +++ b/packages/cli/src/modules/workflow-reviews.ee/workflow-review-feature-gate.service.ts @@ -1,7 +1,7 @@ import { LicenseState } from '@n8n/backend-common'; +import { ForbiddenError } from '@n8n/backend-services'; import { Service } from '@n8n/di'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { WorkflowReviewPolicyService } from '@/services/workflow-review-policy.service'; type WorkflowReviewAvailability = { available: true } | { available: false; errorMessage: string }; diff --git a/packages/cli/src/modules/workflow-reviews.ee/workflow-review-inbox.service.ts b/packages/cli/src/modules/workflow-reviews.ee/workflow-review-inbox.service.ts index b0e549ca1bf..18de8e52eae 100644 --- a/packages/cli/src/modules/workflow-reviews.ee/workflow-review-inbox.service.ts +++ b/packages/cli/src/modules/workflow-reviews.ee/workflow-review-inbox.service.ts @@ -7,6 +7,7 @@ import type { WorkflowReviewRequestWorkflowDetail, WorkflowReviewVersionSnapshot, } from '@n8n/api-types'; +import { BadRequestError } from '@n8n/backend-services'; import { WorkflowReviewInboxRepository, WorkflowReviewRequestWorkflowRepository, @@ -19,7 +20,6 @@ import { } from '@n8n/db'; import { Service } from '@n8n/di'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { WorkflowHistoryService } from '@/workflows/workflow-history/workflow-history.service'; import { WorkflowReviewAuthorizationService } from './workflow-review-authorization.service'; diff --git a/packages/cli/src/modules/workflow-reviews.ee/workflow-review-publish-guard.service.ts b/packages/cli/src/modules/workflow-reviews.ee/workflow-review-publish-guard.service.ts index 8aa1022c965..071f484aca0 100644 --- a/packages/cli/src/modules/workflow-reviews.ee/workflow-review-publish-guard.service.ts +++ b/packages/cli/src/modules/workflow-reviews.ee/workflow-review-publish-guard.service.ts @@ -1,8 +1,8 @@ import type { WorkflowPublishBlockedReason } from '@n8n/api-types'; +import { WorkflowPublishBlockedError } from '@n8n/backend-services'; import { WorkflowReviewRequestRepository } from '@n8n/db'; import { Service } from '@n8n/di'; -import { WorkflowPublishBlockedError } from '@/errors/response-errors/workflow-publish-blocked.error'; import type { WorkflowPublishGuard } from '@/workflows/workflow-publish-guard-proxy.service'; import { WorkflowReviewFeatureGate } from './workflow-review-feature-gate.service'; diff --git a/packages/cli/src/modules/workflow-reviews.ee/workflow-review-request-decision.service.ts b/packages/cli/src/modules/workflow-reviews.ee/workflow-review-request-decision.service.ts index 2c5e8b0e3a0..10bc381c51a 100644 --- a/packages/cli/src/modules/workflow-reviews.ee/workflow-review-request-decision.service.ts +++ b/packages/cli/src/modules/workflow-reviews.ee/workflow-review-request-decision.service.ts @@ -4,6 +4,7 @@ import type { WorkflowReviewAutoPublishOutcome, } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { BadRequestError, ForbiddenError, NotFoundError } from '@n8n/backend-services'; import { DbLock, DbLockService, @@ -19,9 +20,6 @@ import { Service } from '@n8n/di'; import { ensureError } from '@n8n/utils/errors/ensure-error'; import { CollaborationService } from '@/collaboration/collaboration.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { EventService } from '@/events/event.service'; import { WorkflowFinderService } from '@/workflows/workflow-finder.service'; import { WorkflowService } from '@/workflows/workflow.service'; diff --git a/packages/cli/src/modules/workflow-reviews.ee/workflow-review-request-mutation-guard.service.ts b/packages/cli/src/modules/workflow-reviews.ee/workflow-review-request-mutation-guard.service.ts index 45cbddf43f2..049981f35a2 100644 --- a/packages/cli/src/modules/workflow-reviews.ee/workflow-review-request-mutation-guard.service.ts +++ b/packages/cli/src/modules/workflow-reviews.ee/workflow-review-request-mutation-guard.service.ts @@ -1,3 +1,4 @@ +import { BadRequestError, ConflictError, NotFoundError } from '@n8n/backend-services'; import { SharedWorkflowRepository, WorkflowRepository, @@ -6,10 +7,6 @@ import { } from '@n8n/db'; import { Service } from '@n8n/di'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; - type BlockedAction = 'submit' | 'review' | 'update'; const BLOCKED_ACTION_TEXT: Record = { diff --git a/packages/cli/src/modules/workflow-reviews.ee/workflow-review-request-status.service.ts b/packages/cli/src/modules/workflow-reviews.ee/workflow-review-request-status.service.ts index 60488e9732e..cc3ad38f77b 100644 --- a/packages/cli/src/modules/workflow-reviews.ee/workflow-review-request-status.service.ts +++ b/packages/cli/src/modules/workflow-reviews.ee/workflow-review-request-status.service.ts @@ -4,6 +4,7 @@ import type { WorkflowReviewRequestForWorkflow, WorkflowReviewRequestList, } from '@n8n/api-types'; +import { NotFoundError } from '@n8n/backend-services'; import { UserRepository, WorkflowReviewRequestRepository, @@ -12,7 +13,6 @@ import { } from '@n8n/db'; import { Service } from '@n8n/di'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { WorkflowFinderService } from '@/workflows/workflow-finder.service'; import { WorkflowReviewAuthorizationService } from './workflow-review-authorization.service'; diff --git a/packages/cli/src/modules/workflow-reviews.ee/workflow-review-request-submission.service.ts b/packages/cli/src/modules/workflow-reviews.ee/workflow-review-request-submission.service.ts index 395e46823a9..da741ae3e4e 100644 --- a/packages/cli/src/modules/workflow-reviews.ee/workflow-review-request-submission.service.ts +++ b/packages/cli/src/modules/workflow-reviews.ee/workflow-review-request-submission.service.ts @@ -5,6 +5,7 @@ import type { WorkflowReviewEligibleReviewersList, WorkflowReviewRequestSummary, } from '@n8n/api-types'; +import { BadRequestError, ConflictError, NotFoundError } from '@n8n/backend-services'; import { DbLock, DbLockService, @@ -22,9 +23,6 @@ import { } from '@n8n/db'; import { Service } from '@n8n/di'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { EventService } from '@/events/event.service'; import { RoleService } from '@/services/role.service'; import { WorkflowFinderService } from '@/workflows/workflow-finder.service'; diff --git a/packages/cli/src/node-execution/__tests__/execute-node.service.test.ts b/packages/cli/src/node-execution/__tests__/execute-node.service.test.ts index 672a4f02875..c5c54dcdb59 100644 --- a/packages/cli/src/node-execution/__tests__/execute-node.service.test.ts +++ b/packages/cli/src/node-execution/__tests__/execute-node.service.test.ts @@ -1,4 +1,5 @@ import { Logger } from '@n8n/backend-common'; +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import { WorkflowRepository } from '@n8n/db'; import type { User } from '@n8n/db'; @@ -8,8 +9,6 @@ import { mock } from 'vitest-mock-extended'; import { ActiveExecutions } from '@/active-executions'; import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { ExecutionPersistence } from '@/executions/execution-persistence'; import { NodeTypes } from '@/node-types'; import { WorkflowRunner } from '@/workflow-runner'; diff --git a/packages/cli/src/node-execution/execute-node.service.ts b/packages/cli/src/node-execution/execute-node.service.ts index 514b52da2de..989c9e71208 100644 --- a/packages/cli/src/node-execution/execute-node.service.ts +++ b/packages/cli/src/node-execution/execute-node.service.ts @@ -1,4 +1,5 @@ import { Logger } from '@n8n/backend-common'; +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import { WorkflowEntity, WorkflowRepository } from '@n8n/db'; import type { User } from '@n8n/db'; import { Service } from '@n8n/di'; @@ -18,8 +19,6 @@ import { v4 as uuid } from 'uuid'; import { ActiveExecutions } from '@/active-executions'; import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { ExecutionPersistence } from '@/executions/execution-persistence'; import { NodeTypes } from '@/node-types'; import { WorkflowRunner } from '@/workflow-runner'; diff --git a/packages/cli/src/oauth/__tests__/oauth.service.test.ts b/packages/cli/src/oauth/__tests__/oauth.service.test.ts index 89feea5b77c..06e710fc7e6 100644 --- a/packages/cli/src/oauth/__tests__/oauth.service.test.ts +++ b/packages/cli/src/oauth/__tests__/oauth.service.test.ts @@ -1,5 +1,6 @@ import { LockAcquisitionTimeoutError, LockService, Logger } from '@n8n/backend-common'; import { OutboundHttp, SsrfProtectionService, type HttpRequestClient } from '@n8n/backend-network'; +import { AuthError, BadRequestError, NotFoundError } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import type { OAuth2CredentialData } from '@n8n/client-oauth2'; import { AuthError as OAuth2AuthError } from '@n8n/client-oauth2'; @@ -19,9 +20,6 @@ import { AuthService } from '@/auth/auth.service'; import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; import { DynamicCredentialsProxy } from '@/credentials/dynamic-credentials-proxy'; import { CredentialsHelper } from '@/credentials-helper'; -import { AuthError } from '@/errors/response-errors/auth.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { EventService } from '@/events/event.service'; import { ExternalHooks } from '@/external-hooks'; import { OAuthBrowserBindingService } from '@/oauth/oauth-browser-binding.service'; diff --git a/packages/cli/src/oauth/oauth.service.ts b/packages/cli/src/oauth/oauth.service.ts index d80793d57e5..bd2ac9cc9fc 100644 --- a/packages/cli/src/oauth/oauth.service.ts +++ b/packages/cli/src/oauth/oauth.service.ts @@ -5,6 +5,7 @@ import { type HttpRequestClient, type SsrfBridge, } from '@n8n/backend-network'; +import { AuthError, BadRequestError, NotFoundError } from '@n8n/backend-services'; import { GlobalConfig, SsrfProtectionConfig } from '@n8n/config'; import type { AuthenticatedRequest, CredentialsEntity, ICredentialsDb } from '@n8n/db'; import { CredentialsRepository } from '@n8n/db'; @@ -23,9 +24,6 @@ import { import { AuthService } from '@/auth/auth.service'; import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; import { CredentialsHelper } from '@/credentials-helper'; -import { AuthError } from '@/errors/response-errors/auth.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { OAuthRequest } from '@/requests'; import { extractAccountIdentifierFromData } from '@/oauth/account-identifier'; import { validateOAuthUrl } from '@/oauth/validate-oauth-url'; diff --git a/packages/cli/src/oauth/validate-oauth-url.ts b/packages/cli/src/oauth/validate-oauth-url.ts index 9571eeed9b2..6e16d453948 100644 --- a/packages/cli/src/oauth/validate-oauth-url.ts +++ b/packages/cli/src/oauth/validate-oauth-url.ts @@ -1,4 +1,4 @@ -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; +import { BadRequestError } from '@n8n/backend-services'; const ALLOWED_OAUTH_URL_PROTOCOLS = ['http:', 'https:']; diff --git a/packages/cli/src/permissions.ee/__tests__/check-access.test.ts b/packages/cli/src/permissions.ee/__tests__/check-access.test.ts index 0f3244610c8..6d4269cda2e 100644 --- a/packages/cli/src/permissions.ee/__tests__/check-access.test.ts +++ b/packages/cli/src/permissions.ee/__tests__/check-access.test.ts @@ -1,3 +1,4 @@ +import { NotFoundError } from '@n8n/backend-services'; import { GLOBAL_MEMBER_ROLE, ProjectRepository, @@ -12,7 +13,6 @@ import type { Mock } from 'vitest'; import { mock } from 'vitest-mock-extended'; import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { RoleService } from '@/services/role.service'; import { userHasScopes } from '../check-access'; diff --git a/packages/cli/src/permissions.ee/check-access.ts b/packages/cli/src/permissions.ee/check-access.ts index 858a30c00d0..991380c2a0c 100644 --- a/packages/cli/src/permissions.ee/check-access.ts +++ b/packages/cli/src/permissions.ee/check-access.ts @@ -1,4 +1,5 @@ import { ModuleRegistry } from '@n8n/backend-common'; +import { NotFoundError } from '@n8n/backend-services'; import type { User, EntityManager } from '@n8n/db'; import { CredentialsEntity, @@ -15,7 +16,6 @@ import { hasGlobalScope, type Scope } from '@n8n/permissions'; import { UnexpectedError } from 'n8n-workflow'; import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { RoleService } from '@/services/role.service'; const INSTANCE_CREDENTIAL_MANAGEMENT_SCOPES = new Set([ diff --git a/packages/cli/src/public-api/__tests__/public-api-controller.registry.test.ts b/packages/cli/src/public-api/__tests__/public-api-controller.registry.test.ts index 0fd8ddede75..3ec6caef8d0 100644 --- a/packages/cli/src/public-api/__tests__/public-api-controller.registry.test.ts +++ b/packages/cli/src/public-api/__tests__/public-api-controller.registry.test.ts @@ -1,5 +1,6 @@ import { Z } from '@n8n/api-types'; import { LicenseState } from '@n8n/backend-common'; +import { NotFoundError } from '@n8n/backend-services'; import { UNLIMITED_LICENSE_QUOTA } from '@n8n/constants'; import type { AuthenticatedRequest, User } from '@n8n/db'; import { @@ -21,7 +22,6 @@ import request from 'supertest'; import { mock } from 'vitest-mock-extended'; import { z } from 'zod'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { EventService } from '@/events/event.service'; import { userHasScopes } from '@/permissions.ee/check-access'; import { diff --git a/packages/cli/src/public-api/public-api-controller.registry.ts b/packages/cli/src/public-api/public-api-controller.registry.ts index b61727d05be..87c88a43e9a 100644 --- a/packages/cli/src/public-api/public-api-controller.registry.ts +++ b/packages/cli/src/public-api/public-api-controller.registry.ts @@ -1,4 +1,5 @@ import { LicenseState } from '@n8n/backend-common'; +import { BadRequestError } from '@n8n/backend-services'; import type { BooleanLicenseFeature } from '@n8n/constants'; import { UNLIMITED_LICENSE_QUOTA } from '@n8n/constants'; import type { AuthenticatedRequest } from '@n8n/db'; @@ -11,7 +12,6 @@ import { z } from 'zod'; import type { ZodTypeAny } from 'zod'; import { FeatureNotLicensedError } from '@/errors/feature-not-licensed.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { EventService } from '@/events/event.service'; import { License } from '@/license'; import { userHasScopes } from '@/permissions.ee/check-access'; diff --git a/packages/cli/src/public-api/public-api-media-type.ts b/packages/cli/src/public-api/public-api-media-type.ts index d64c737b15b..aef1af4cc5d 100644 --- a/packages/cli/src/public-api/public-api-media-type.ts +++ b/packages/cli/src/public-api/public-api-media-type.ts @@ -1,4 +1,4 @@ -import { UnsupportedMediaTypeError } from '@/errors/response-errors/unsupported-media-type.error'; +import { UnsupportedMediaTypeError } from '@n8n/backend-services'; const JSON_MEDIA_TYPE = 'application/json'; diff --git a/packages/cli/src/public-api/v1/__tests__/public-api-error-response.test.ts b/packages/cli/src/public-api/v1/__tests__/public-api-error-response.test.ts index 5bd30ffb371..3339feaded2 100644 --- a/packages/cli/src/public-api/v1/__tests__/public-api-error-response.test.ts +++ b/packages/cli/src/public-api/v1/__tests__/public-api-error-response.test.ts @@ -1,12 +1,13 @@ +import { + BadRequestError, + ConflictError, + NotFoundError, + WorkflowPublishBlockedError, +} from '@n8n/backend-services'; import type { Response } from 'express'; import { BadRequest, Unauthorized } from 'express-openapi-validator/dist/framework/types'; import { UnexpectedError, UserError, OperationalError } from 'n8n-workflow'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; -import { WorkflowPublishBlockedError } from '@/errors/response-errors/workflow-publish-blocked.error'; - import { sendPublicApiErrorResponse } from '../public-api-error-response'; describe('sendPublicApiErrorResponse', () => { diff --git a/packages/cli/src/public-api/v1/controllers/__tests__/credential-type-policies.public.controller.test.ts b/packages/cli/src/public-api/v1/controllers/__tests__/credential-type-policies.public.controller.test.ts index fb66c73b98a..c3c23d3b18d 100644 --- a/packages/cli/src/public-api/v1/controllers/__tests__/credential-type-policies.public.controller.test.ts +++ b/packages/cli/src/public-api/v1/controllers/__tests__/credential-type-policies.public.controller.test.ts @@ -4,6 +4,7 @@ import type { PutProjectPolicyDto, } from '@n8n/api-types'; import type { ModuleRegistry } from '@n8n/backend-common'; +import { ServiceUnavailableError } from '@n8n/backend-services'; import { LICENSE_FEATURES } from '@n8n/constants'; import type { AuthenticatedRequest, User } from '@n8n/db'; import { ControllerRegistryMetadata } from '@n8n/decorators'; @@ -11,7 +12,6 @@ import { Container } from '@n8n/di'; import type { Response } from 'express'; import { mock } from 'vitest-mock-extended'; -import { ServiceUnavailableError } from '@/errors/response-errors/service-unavailable.error'; import { CREDENTIAL_TYPES_KIND } from '@/modules/type-availability-policies/constants'; import type { EffectivePolicy } from '@/modules/type-availability-policies/type-availability-policy.service'; import { TypeAvailabilityPolicyService } from '@/modules/type-availability-policies/type-availability-policy.service'; diff --git a/packages/cli/src/public-api/v1/controllers/__tests__/node-type-policies.public.controller.test.ts b/packages/cli/src/public-api/v1/controllers/__tests__/node-type-policies.public.controller.test.ts index 04571cd5cb5..9707e24ca53 100644 --- a/packages/cli/src/public-api/v1/controllers/__tests__/node-type-policies.public.controller.test.ts +++ b/packages/cli/src/public-api/v1/controllers/__tests__/node-type-policies.public.controller.test.ts @@ -4,6 +4,7 @@ import type { PutProjectPolicyDto, } from '@n8n/api-types'; import type { ModuleRegistry } from '@n8n/backend-common'; +import { ServiceUnavailableError } from '@n8n/backend-services'; import { LICENSE_FEATURES } from '@n8n/constants'; import type { AuthenticatedRequest, User } from '@n8n/db'; import { ControllerRegistryMetadata } from '@n8n/decorators'; @@ -11,7 +12,6 @@ import { Container } from '@n8n/di'; import type { Response } from 'express'; import { mock } from 'vitest-mock-extended'; -import { ServiceUnavailableError } from '@/errors/response-errors/service-unavailable.error'; import { NODE_TYPES_KIND } from '@/modules/type-availability-policies/constants'; import type { EffectivePolicy } from '@/modules/type-availability-policies/type-availability-policy.service'; import { TypeAvailabilityPolicyService } from '@/modules/type-availability-policies/type-availability-policy.service'; diff --git a/packages/cli/src/public-api/v1/controllers/__tests__/workflows.public.controller.test.ts b/packages/cli/src/public-api/v1/controllers/__tests__/workflows.public.controller.test.ts index 2a6ef23104e..542b6e274bd 100644 --- a/packages/cli/src/public-api/v1/controllers/__tests__/workflows.public.controller.test.ts +++ b/packages/cli/src/public-api/v1/controllers/__tests__/workflows.public.controller.test.ts @@ -1,9 +1,9 @@ import type { UpdateWorkflowPublicDto, UpdateWorkflowQueryDto } from '@n8n/api-types'; +import { BadRequestError } from '@n8n/backend-services'; import type { AuthenticatedRequest } from '@n8n/db'; import type { Response } from 'express'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { PolicyViolationError } from '@/policy/policy-violation.error'; import type { WorkflowService } from '@/workflows/workflow.service'; diff --git a/packages/cli/src/public-api/v1/controllers/credential-type-policies.public.controller.ts b/packages/cli/src/public-api/v1/controllers/credential-type-policies.public.controller.ts index ba3b9a0e365..265c833b0f8 100644 --- a/packages/cli/src/public-api/v1/controllers/credential-type-policies.public.controller.ts +++ b/packages/cli/src/public-api/v1/controllers/credential-type-policies.public.controller.ts @@ -16,6 +16,7 @@ import { projectIdParamSchema, } from '@n8n/api-types'; import { ModuleRegistry } from '@n8n/backend-common'; +import { NotFoundError, ServiceUnavailableError } from '@n8n/backend-services'; import { LICENSE_FEATURES } from '@n8n/constants'; import type { AuthenticatedRequest } from '@n8n/db'; import { @@ -40,8 +41,6 @@ import { import { Container } from '@n8n/di'; import type { Response } from 'express'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; -import { ServiceUnavailableError } from '@/errors/response-errors/service-unavailable.error'; import { CREDENTIAL_TYPES_KIND } from '@/modules/type-availability-policies/constants'; import type { TypeAvailabilityPolicy } from '@/modules/type-availability-policies/database/entities/type-availability-policy.entity'; import { diff --git a/packages/cli/src/public-api/v1/controllers/credentials.public.controller.ts b/packages/cli/src/public-api/v1/controllers/credentials.public.controller.ts index 5c4831f5b3d..93df720e86a 100644 --- a/packages/cli/src/public-api/v1/controllers/credentials.public.controller.ts +++ b/packages/cli/src/public-api/v1/controllers/credentials.public.controller.ts @@ -12,6 +12,7 @@ import { TransferCredentialPublicDto, } from '@n8n/api-types'; import { LicenseState } from '@n8n/backend-common'; +import { BadRequestError, ForbiddenError, NotFoundError } from '@n8n/backend-services'; import type { AuthenticatedRequest, CredentialsEntity, ICredentialsDb, User } from '@n8n/db'; import { ApiDescription, @@ -43,9 +44,6 @@ import { CredentialsService } from '@/credentials/credentials.service'; import { EnterpriseCredentialsService } from '@/credentials/credentials.service.ee'; import { CredentialsHelper } from '@/credentials-helper'; import { CredentialNotFoundError } from '@/errors/credential-not-found.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { EventService } from '@/events/event.service'; import { assertValidUpdateProperties, diff --git a/packages/cli/src/public-api/v1/controllers/data-tables.public.controller.ts b/packages/cli/src/public-api/v1/controllers/data-tables.public.controller.ts index 69408246472..d13764f9900 100644 --- a/packages/cli/src/public-api/v1/controllers/data-tables.public.controller.ts +++ b/packages/cli/src/public-api/v1/controllers/data-tables.public.controller.ts @@ -6,6 +6,12 @@ import { UpdateDataTablePublicDto, dataTableIdParamSchema, } from '@n8n/api-types'; +import { + BadRequestError, + ConflictError, + ForbiddenError, + NotFoundError, +} from '@n8n/backend-services'; import type { AuthenticatedRequest } from '@n8n/db'; import { ApiDescription, @@ -26,10 +32,6 @@ import { } from '@n8n/decorators'; import type { Response } from 'express'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { DataTableAggregateService } from '@/modules/data-table/data-table-aggregate.service'; import type { DataTable } from '@/modules/data-table/data-table.entity'; import { DataTableService } from '@/modules/data-table/data-table.service'; diff --git a/packages/cli/src/public-api/v1/controllers/discover.public.controller.ts b/packages/cli/src/public-api/v1/controllers/discover.public.controller.ts index fe2c9a02d85..6e9fb85c3f6 100644 --- a/packages/cli/src/public-api/v1/controllers/discover.public.controller.ts +++ b/packages/cli/src/public-api/v1/controllers/discover.public.controller.ts @@ -1,4 +1,5 @@ import { DiscoverPublicDto, DiscoverQueryPublicDto } from '@n8n/api-types'; +import { UnauthenticatedError } from '@n8n/backend-services'; import type { AuthenticatedRequest } from '@n8n/db'; import { ApiDescription, @@ -11,7 +12,6 @@ import { } from '@n8n/decorators'; import type { Response } from 'express'; -import { UnauthenticatedError } from '@/errors/response-errors/unauthenticated.error'; import { buildDiscoverResponse } from '@/public-api/v1/handlers/discover/discover.service'; @PublicApiController('/discover') diff --git a/packages/cli/src/public-api/v1/controllers/evaluations.public.controller.ts b/packages/cli/src/public-api/v1/controllers/evaluations.public.controller.ts index 84fe5f8fa8e..484fef24096 100644 --- a/packages/cli/src/public-api/v1/controllers/evaluations.public.controller.ts +++ b/packages/cli/src/public-api/v1/controllers/evaluations.public.controller.ts @@ -11,6 +11,7 @@ import { workflowIdParamSchema, } from '@n8n/api-types'; import { LicenseState } from '@n8n/backend-common'; +import { ConflictError, ForbiddenError, NotFoundError } from '@n8n/backend-services'; import type { AuthenticatedRequest, TestCaseExecution, TestRun } from '@n8n/db'; import { ApiDescription, @@ -30,9 +31,6 @@ import type { Response } from 'express'; import { ErrorReporter } from 'n8n-core'; import { EVALUATION_TRIGGER_NODE_TYPE } from 'n8n-workflow'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { EvaluationTestRunService } from '@/evaluation.ee/evaluation-test-run.service'; import { TestRunnerService } from '@/evaluation.ee/test-runner/test-runner.service.ee'; import { diff --git a/packages/cli/src/public-api/v1/controllers/executions.public.controller.ts b/packages/cli/src/public-api/v1/controllers/executions.public.controller.ts index ff45fcbf85e..0f3ee251cba 100644 --- a/packages/cli/src/public-api/v1/controllers/executions.public.controller.ts +++ b/packages/cli/src/public-api/v1/controllers/executions.public.controller.ts @@ -15,6 +15,7 @@ import { StoppedExecutionsPublicDto, TagIdsPublicDto, } from '@n8n/api-types'; +import { BadRequestError, ConflictError, NotFoundError } from '@n8n/backend-services'; import { ExecutionsConfig } from '@n8n/config'; import type { AuthenticatedRequest, IExecutionBase, IExecutionResponse } from '@n8n/db'; import { @@ -39,9 +40,6 @@ import { replaceCircularReferences, WorkflowOperationError } from 'n8n-workflow' import { AbortedExecutionRetryError } from '@/errors/aborted-execution-retry.error'; import { MissingExecutionStopError } from '@/errors/missing-execution-stop.error'; import { QueuedExecutionRetryError } from '@/errors/queued-execution-retry.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { EventService } from '@/events/event.service'; import { isRedactableExecution } from '@/executions/execution-redaction'; import { ExecutionRedactionServiceProxy } from '@/executions/execution-redaction-proxy.service'; diff --git a/packages/cli/src/public-api/v1/controllers/folders.public.controller.ts b/packages/cli/src/public-api/v1/controllers/folders.public.controller.ts index ad9812c4272..f5d0232c8fc 100644 --- a/packages/cli/src/public-api/v1/controllers/folders.public.controller.ts +++ b/packages/cli/src/public-api/v1/controllers/folders.public.controller.ts @@ -12,6 +12,7 @@ import { folderProjectIdParamSchema, projectIdParamSchema, } from '@n8n/api-types'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import { LICENSE_FEATURES } from '@n8n/constants'; import type { AuthenticatedRequest, @@ -39,8 +40,6 @@ import type { Response } from 'express'; import { UserError } from 'n8n-workflow'; import { FolderNotFoundError } from '@/errors/folder-not-found.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { assertProjectScope } from '@/public-api/v1/shared/services/utils.service'; import { FolderService } from '@/services/folder.service'; import { ProjectService } from '@/services/project.service.ee'; diff --git a/packages/cli/src/public-api/v1/controllers/insights.public.controller.ts b/packages/cli/src/public-api/v1/controllers/insights.public.controller.ts index 55909fbca13..e3fbae8ff09 100644 --- a/packages/cli/src/public-api/v1/controllers/insights.public.controller.ts +++ b/packages/cli/src/public-api/v1/controllers/insights.public.controller.ts @@ -1,4 +1,5 @@ import { InsightsSummaryPublicDto, InsightsSummaryQueryPublicDto } from '@n8n/api-types'; +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import type { AuthenticatedRequest } from '@n8n/db'; import { ApiDescription, @@ -14,8 +15,6 @@ import type { Response } from 'express'; import { DateTime } from 'luxon'; import { UserError } from 'n8n-workflow'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { InsightsService } from '@/modules/insights/insights.service'; @PublicApiController('/insights') diff --git a/packages/cli/src/public-api/v1/controllers/node-type-policies.public.controller.ts b/packages/cli/src/public-api/v1/controllers/node-type-policies.public.controller.ts index f979128e6f3..d6c7b39b806 100644 --- a/packages/cli/src/public-api/v1/controllers/node-type-policies.public.controller.ts +++ b/packages/cli/src/public-api/v1/controllers/node-type-policies.public.controller.ts @@ -16,6 +16,7 @@ import { projectIdParamSchema, } from '@n8n/api-types'; import { ModuleRegistry } from '@n8n/backend-common'; +import { NotFoundError, ServiceUnavailableError } from '@n8n/backend-services'; import { LICENSE_FEATURES } from '@n8n/constants'; import type { AuthenticatedRequest } from '@n8n/db'; import { @@ -40,8 +41,6 @@ import { import { Container } from '@n8n/di'; import type { Response } from 'express'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; -import { ServiceUnavailableError } from '@/errors/response-errors/service-unavailable.error'; import { NODE_TYPES_KIND } from '@/modules/type-availability-policies/constants'; import type { TypeAvailabilityPolicy } from '@/modules/type-availability-policies/database/entities/type-availability-policy.entity'; import { diff --git a/packages/cli/src/public-api/v1/controllers/projects.public.controller.ts b/packages/cli/src/public-api/v1/controllers/projects.public.controller.ts index f33fb0a736c..30d15b4759f 100644 --- a/packages/cli/src/public-api/v1/controllers/projects.public.controller.ts +++ b/packages/cli/src/public-api/v1/controllers/projects.public.controller.ts @@ -14,6 +14,7 @@ import { projectIdParamSchema, userIdParamSchema, } from '@n8n/api-types'; +import { ForbiddenError, NotFoundError } from '@n8n/backend-services'; import { LICENSE_FEATURES } from '@n8n/constants'; import type { AuthenticatedRequest, Project, ProjectRelation } from '@n8n/db'; import { @@ -37,8 +38,6 @@ import { } from '@n8n/decorators'; import type { Response } from 'express'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { ProvisioningService } from '@/modules/provisioning.ee/provisioning.service.ee'; import { encodeNextCursor, diff --git a/packages/cli/src/public-api/v1/controllers/promotions.public.controller.ts b/packages/cli/src/public-api/v1/controllers/promotions.public.controller.ts index 2ead342bac5..b3f338e1f45 100644 --- a/packages/cli/src/public-api/v1/controllers/promotions.public.controller.ts +++ b/packages/cli/src/public-api/v1/controllers/promotions.public.controller.ts @@ -34,6 +34,12 @@ import { type PromotionDirection, } from '@n8n/api-types'; import { ModuleRegistry } from '@n8n/backend-common'; +import { + BadRequestError, + ForbiddenError, + NotFoundError, + ServiceUnavailableError, +} from '@n8n/backend-services'; import { LICENSE_FEATURES } from '@n8n/constants'; import type { AuthenticatedRequest } from '@n8n/db'; import { @@ -57,10 +63,6 @@ import { import { Container } from '@n8n/di'; import type { Response } from 'express'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; -import { ServiceUnavailableError } from '@/errors/response-errors/service-unavailable.error'; import { encodeNextCursor, resolveOffsetPagination, diff --git a/packages/cli/src/public-api/v1/controllers/role-mapping-rules.public.controller.ts b/packages/cli/src/public-api/v1/controllers/role-mapping-rules.public.controller.ts index b233acf4e62..75b7f1aee23 100644 --- a/packages/cli/src/public-api/v1/controllers/role-mapping-rules.public.controller.ts +++ b/packages/cli/src/public-api/v1/controllers/role-mapping-rules.public.controller.ts @@ -8,6 +8,7 @@ import { roleMappingRuleIdParamSchema, } from '@n8n/api-types'; import { LicenseState } from '@n8n/backend-common'; +import { ForbiddenError } from '@n8n/backend-services'; import { AuthenticatedRequest } from '@n8n/db'; import { ApiDescription, @@ -27,7 +28,6 @@ import { } from '@n8n/decorators'; import type { Response } from 'express'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import type { RoleMappingRuleResponse } from '@/modules/provisioning.ee/role-mapping-rule.service.ee'; import { RoleMappingRuleService } from '@/modules/provisioning.ee/role-mapping-rule.service.ee'; import { diff --git a/packages/cli/src/public-api/v1/controllers/roles.public.controller.ts b/packages/cli/src/public-api/v1/controllers/roles.public.controller.ts index 3963b98c727..9ef859bf693 100644 --- a/packages/cli/src/public-api/v1/controllers/roles.public.controller.ts +++ b/packages/cli/src/public-api/v1/controllers/roles.public.controller.ts @@ -8,6 +8,7 @@ import { UpdateRolePublicDto, roleSlugParamSchema, } from '@n8n/api-types'; +import { NotFoundError } from '@n8n/backend-services'; import { LICENSE_FEATURES } from '@n8n/constants'; import { AuthenticatedRequest } from '@n8n/db'; import { @@ -30,7 +31,6 @@ import { import { RoleNamespace, type Role as RoleDTO } from '@n8n/permissions'; import type { Response } from 'express'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { EventService } from '@/events/event.service'; import { assertCanManageRoleType, canReassignUsers } from '@/services/role-authorization'; import { RoleService } from '@/services/role.service'; diff --git a/packages/cli/src/public-api/v1/controllers/security-policy.public.controller.ts b/packages/cli/src/public-api/v1/controllers/security-policy.public.controller.ts index 6fe3c65f221..0ee5259f4ef 100644 --- a/packages/cli/src/public-api/v1/controllers/security-policy.public.controller.ts +++ b/packages/cli/src/public-api/v1/controllers/security-policy.public.controller.ts @@ -1,4 +1,5 @@ import { SecurityPolicyPublicDto, UpdateSecurityPolicyDto } from '@n8n/api-types'; +import { ConflictError } from '@n8n/backend-services'; import { InstanceSettingsLoaderConfig } from '@n8n/config'; import { LICENSE_FEATURES } from '@n8n/constants'; import type { AuthenticatedRequest } from '@n8n/db'; @@ -17,7 +18,6 @@ import { } from '@n8n/decorators'; import type { Response } from 'express'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; import type { SecurityPolicyReadResult } from '@/services/security-settings.service'; import { SecuritySettingsService } from '@/services/security-settings.service'; diff --git a/packages/cli/src/public-api/v1/controllers/source-control.public.controller.ts b/packages/cli/src/public-api/v1/controllers/source-control.public.controller.ts index e3fd1fe3e57..98e776c0fa8 100644 --- a/packages/cli/src/public-api/v1/controllers/source-control.public.controller.ts +++ b/packages/cli/src/public-api/v1/controllers/source-control.public.controller.ts @@ -7,6 +7,7 @@ import { SourceControlStatusPublicDto, SourceControlStatusQueryPublicDto, } from '@n8n/api-types'; +import { BadRequestError, ConflictError } from '@n8n/backend-services'; import { LICENSE_FEATURES } from '@n8n/constants'; import type { AuthenticatedRequest } from '@n8n/db'; import { @@ -25,8 +26,6 @@ import { } from '@n8n/decorators'; import type { Response } from 'express'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; import { EventService } from '@/events/event.service'; import { getTrackingInformationFromPullResult } from '@/modules/source-control.ee/source-control-helper.ee'; import { SourceControlPreferencesService } from '@/modules/source-control.ee/source-control-preferences.service.ee'; diff --git a/packages/cli/src/public-api/v1/controllers/tags.public.controller.ts b/packages/cli/src/public-api/v1/controllers/tags.public.controller.ts index 6d39c47e311..de03dbcf379 100644 --- a/packages/cli/src/public-api/v1/controllers/tags.public.controller.ts +++ b/packages/cli/src/public-api/v1/controllers/tags.public.controller.ts @@ -7,6 +7,7 @@ import { UpdatedTagPublicDto, tagIdParamSchema, } from '@n8n/api-types'; +import { ConflictError, NotFoundError } from '@n8n/backend-services'; import type { AuthenticatedRequest, TagEntity } from '@n8n/db'; import { ApiDescription, @@ -26,8 +27,6 @@ import { } from '@n8n/decorators'; import type { Response } from 'express'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { encodeNextCursor, resolveOffsetPagination, diff --git a/packages/cli/src/public-api/v1/controllers/users.public.controller.ts b/packages/cli/src/public-api/v1/controllers/users.public.controller.ts index 3989dc8e929..db9db06ad6f 100644 --- a/packages/cli/src/public-api/v1/controllers/users.public.controller.ts +++ b/packages/cli/src/public-api/v1/controllers/users.public.controller.ts @@ -10,6 +10,7 @@ import { userIdentifierParamSchema, userUuidParamSchema, } from '@n8n/api-types'; +import { NotFoundError } from '@n8n/backend-services'; import type { AuthenticatedRequest, User } from '@n8n/db'; import { ApiDescription, @@ -32,7 +33,6 @@ import { import type { Response } from 'express'; import pick from 'lodash/pick'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { EventService } from '@/events/event.service'; import { encodeNextCursor, diff --git a/packages/cli/src/public-api/v1/controllers/workflows.public.controller.ts b/packages/cli/src/public-api/v1/controllers/workflows.public.controller.ts index 9befb70a7ac..0089f3cdb97 100644 --- a/packages/cli/src/public-api/v1/controllers/workflows.public.controller.ts +++ b/packages/cli/src/public-api/v1/controllers/workflows.public.controller.ts @@ -23,6 +23,7 @@ import { workflowIdParamSchema, workflowVersionIdParamSchema, } from '@n8n/api-types'; +import { BadRequestError, NotFoundError, ResponseError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import type { AuthenticatedRequest, @@ -55,9 +56,6 @@ import type { Response } from 'express'; import { PROJECT_ROOT } from 'n8n-workflow'; import { FolderNotFoundError } from '@/errors/folder-not-found.error'; -import { ResponseError } from '@/errors/response-errors/abstract/response.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { SharedWorkflowNotFoundError } from '@/errors/shared-workflow-not-found.error'; import { WorkflowHistoryVersionNotFoundError } from '@/errors/workflow-history-version-not-found.error'; import { EventService } from '@/events/event.service'; diff --git a/packages/cli/src/public-api/v1/handlers/credentials/credentials.utils.ts b/packages/cli/src/public-api/v1/handlers/credentials/credentials.utils.ts index bbdf26087ce..5e403892c8d 100644 --- a/packages/cli/src/public-api/v1/handlers/credentials/credentials.utils.ts +++ b/packages/cli/src/public-api/v1/handlers/credentials/credentials.utils.ts @@ -1,4 +1,5 @@ import type { UpdateCredentialPublicDto } from '@n8n/api-types'; +import { BadRequestError } from '@n8n/backend-services'; import type { CredentialsEntity } from '@n8n/db'; import { validate } from 'jsonschema'; import { @@ -8,7 +9,6 @@ import { } from 'n8n-workflow'; import type { CredentialsHelper } from '@/credentials-helper'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import type { IDependency, IJsonSchema } from '../../../types'; diff --git a/packages/cli/src/public-api/v1/handlers/data-tables/__tests__/data-tables.handler.test.ts b/packages/cli/src/public-api/v1/handlers/data-tables/__tests__/data-tables.handler.test.ts index ea84fbeae7f..ae036969757 100644 --- a/packages/cli/src/public-api/v1/handlers/data-tables/__tests__/data-tables.handler.test.ts +++ b/packages/cli/src/public-api/v1/handlers/data-tables/__tests__/data-tables.handler.test.ts @@ -1,11 +1,10 @@ +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import { Container } from '@n8n/di'; import { GLOBAL_MEMBER_SCOPES, type Scope } from '@n8n/permissions'; import type { Response } from 'express'; import type { Mock, Mocked } from 'vitest'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { DataTableAggregateService } from '@/modules/data-table/data-table-aggregate.service'; import { DataTableService } from '@/modules/data-table/data-table.service'; import { DataTableNotFoundError } from '@/modules/data-table/errors/data-table-not-found.error'; diff --git a/packages/cli/src/public-api/v1/handlers/data-tables/data-tables.columns.handler.ts b/packages/cli/src/public-api/v1/handlers/data-tables/data-tables.columns.handler.ts index 96b6084405a..dd40feeeb0a 100644 --- a/packages/cli/src/public-api/v1/handlers/data-tables/data-tables.columns.handler.ts +++ b/packages/cli/src/public-api/v1/handlers/data-tables/data-tables.columns.handler.ts @@ -1,8 +1,7 @@ import { AddDataTableColumnDto, updateDataTableColumnSchema } from '@n8n/api-types'; +import { BadRequestError, ConflictError } from '@n8n/backend-services'; import { Container } from '@n8n/di'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; import { DataTableService } from '@/modules/data-table/data-table.service'; import { DataTableColumnNameConflictError } from '@/modules/data-table/errors/data-table-column-name-conflict.error'; import { DataTableSystemColumnNameConflictError } from '@/modules/data-table/errors/data-table-system-column-name-conflict.error'; diff --git a/packages/cli/src/public-api/v1/handlers/data-tables/data-tables.rows.handler.ts b/packages/cli/src/public-api/v1/handlers/data-tables/data-tables.rows.handler.ts index 43b9a883a1a..f11fead71b4 100644 --- a/packages/cli/src/public-api/v1/handlers/data-tables/data-tables.rows.handler.ts +++ b/packages/cli/src/public-api/v1/handlers/data-tables/data-tables.rows.handler.ts @@ -5,10 +5,9 @@ import { UpsertDataTableRowDto, DeleteDataTableRowsDto, } from '@n8n/api-types'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import { Container } from '@n8n/di'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { assertRowReadAccessIfReturningRows } from '@/modules/data-table/data-table-permissions'; import { DataTableService } from '@/modules/data-table/data-table.service'; import { DataTableNotFoundError } from '@/modules/data-table/errors/data-table-not-found.error'; diff --git a/packages/cli/src/public-api/v1/handlers/ldap/ldap.handler.ts b/packages/cli/src/public-api/v1/handlers/ldap/ldap.handler.ts index 2312f8e4ef4..33be6326071 100644 --- a/packages/cli/src/public-api/v1/handlers/ldap/ldap.handler.ts +++ b/packages/cli/src/public-api/v1/handlers/ldap/ldap.handler.ts @@ -1,8 +1,7 @@ import { LdapSyncDto, UpdateLdapConfigurationDto } from '@n8n/api-types'; +import { BadRequestError, ResponseError } from '@n8n/backend-services'; import { Container } from '@n8n/di'; -import { ResponseError } from '@/errors/response-errors/abstract/response.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { getLdapSynchronizationsWithCount } from '@/modules/ldap.ee/helpers.ee'; import { LdapConnectionError, LdapRejectionError } from '@/modules/ldap.ee/ldap.errors'; import { LdapService } from '@/modules/ldap.ee/ldap.service.ee'; diff --git a/packages/cli/src/public-api/v1/handlers/log-streaming/log-streaming.handler.ts b/packages/cli/src/public-api/v1/handlers/log-streaming/log-streaming.handler.ts index 39d1a84f30d..b0289872cba 100644 --- a/packages/cli/src/public-api/v1/handlers/log-streaming/log-streaming.handler.ts +++ b/packages/cli/src/public-api/v1/handlers/log-streaming/log-streaming.handler.ts @@ -1,13 +1,11 @@ import { PublicCreateDestinationDto } from '@n8n/api-types'; import { OutboundHttp } from '@n8n/backend-network'; +import { BadRequestError, ConflictError, NotFoundError } from '@n8n/backend-services'; import { InstanceSettingsLoaderConfig } from '@n8n/config'; import { Container } from '@n8n/di'; import type { MessageEventBusDestinationOptions } from 'n8n-workflow'; import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { eventNamesAll } from '@/eventbus/event-message-classes'; import { MessageEventBus } from '@/eventbus/message-event-bus/message-event-bus'; import { createMessageEventBusDestination } from '@/modules/log-streaming.ee/create-message-event-bus-destination'; diff --git a/packages/cli/src/public-api/v1/handlers/n8n-packages/__tests__/n8n-packages.handler.test.ts b/packages/cli/src/public-api/v1/handlers/n8n-packages/__tests__/n8n-packages.handler.test.ts index 0a3cd09675b..ed859aaa805 100644 --- a/packages/cli/src/public-api/v1/handlers/n8n-packages/__tests__/n8n-packages.handler.test.ts +++ b/packages/cli/src/public-api/v1/handlers/n8n-packages/__tests__/n8n-packages.handler.test.ts @@ -1,3 +1,9 @@ +import { + BadRequestError, + ConflictError, + ForbiddenError, + NotFoundError, +} from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import type { AuthenticatedRequest } from '@n8n/db'; import { Container } from '@n8n/di'; @@ -6,10 +12,6 @@ import { UserError } from 'n8n-workflow'; import { PassThrough } from 'node:stream'; import type { Mocked } from 'vitest'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { EventService } from '@/events/event.service'; import type { RelayEventMap } from '@/events/maps/relay.event-map'; import { diff --git a/packages/cli/src/public-api/v1/handlers/n8n-packages/n8n-packages.handler.ts b/packages/cli/src/public-api/v1/handlers/n8n-packages/n8n-packages.handler.ts index 08112ce007c..74e3477723e 100644 --- a/packages/cli/src/public-api/v1/handlers/n8n-packages/n8n-packages.handler.ts +++ b/packages/cli/src/public-api/v1/handlers/n8n-packages/n8n-packages.handler.ts @@ -3,14 +3,13 @@ import { ImportPackageRequestDto, ImportPackageSelectionRequestDto, } from '@n8n/api-types'; +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import type { AuthenticatedRequest } from '@n8n/db'; import { Container } from '@n8n/di'; import type { ApiKeyScope } from '@n8n/permissions'; import type { Response } from 'express'; import { UserError } from 'n8n-workflow'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { EventService } from '@/events/event.service'; import { PackageEntityAccessDeniedError, diff --git a/packages/cli/src/public-api/v1/handlers/otel/otel.handler.ts b/packages/cli/src/public-api/v1/handlers/otel/otel.handler.ts index 8a31f2d4c2d..dd4df87e00f 100644 --- a/packages/cli/src/public-api/v1/handlers/otel/otel.handler.ts +++ b/packages/cli/src/public-api/v1/handlers/otel/otel.handler.ts @@ -1,9 +1,8 @@ import { TestOtelTraceDto, UpdateOtelSettingsDto } from '@n8n/api-types'; import { ModuleRegistry } from '@n8n/backend-common'; +import { BadRequestError, ConflictError } from '@n8n/backend-services'; import { Container } from '@n8n/di'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; import { OtelLifecycleHandler } from '@/modules/otel/otel-lifecycle-handler'; import { OtelSettingsService } from '@/modules/otel/otel-settings.service'; import { OtelService } from '@/modules/otel/otel.service'; diff --git a/packages/cli/src/public-api/v1/handlers/sso-oidc/sso-oidc.handler.ts b/packages/cli/src/public-api/v1/handlers/sso-oidc/sso-oidc.handler.ts index b4f0f2c0d09..aeebbc3ebfe 100644 --- a/packages/cli/src/public-api/v1/handlers/sso-oidc/sso-oidc.handler.ts +++ b/packages/cli/src/public-api/v1/handlers/sso-oidc/sso-oidc.handler.ts @@ -1,9 +1,8 @@ import { UpdateOidcConfigurationDto } from '@n8n/api-types'; +import { BadRequestError, ConflictError } from '@n8n/backend-services'; import { InstanceSettingsLoaderConfig } from '@n8n/config'; import { Container } from '@n8n/di'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; import { OidcService } from '@/modules/sso-oidc/oidc.service.ee'; import { toOidcConfigurationResponse } from './sso-oidc.mapper'; diff --git a/packages/cli/src/public-api/v1/handlers/sso-saml/sso-saml.handler.ts b/packages/cli/src/public-api/v1/handlers/sso-saml/sso-saml.handler.ts index 1fbf4e575e7..c45bc3636df 100644 --- a/packages/cli/src/public-api/v1/handlers/sso-saml/sso-saml.handler.ts +++ b/packages/cli/src/public-api/v1/handlers/sso-saml/sso-saml.handler.ts @@ -1,9 +1,8 @@ import { UpdateSamlConfigurationDto } from '@n8n/api-types'; +import { BadRequestError, ConflictError } from '@n8n/backend-services'; import { InstanceSettingsLoaderConfig } from '@n8n/config'; import { Container } from '@n8n/di'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; import { SamlService } from '@/modules/sso-saml/saml.service.ee'; import { toSamlConfigurationResponse, toSamlPreferencesUpdate } from './sso-saml.mapper'; diff --git a/packages/cli/src/public-api/v1/handlers/workflows/workflows.handler.ts b/packages/cli/src/public-api/v1/handlers/workflows/workflows.handler.ts index d80674dc815..e6d221c91c1 100644 --- a/packages/cli/src/public-api/v1/handlers/workflows/workflows.handler.ts +++ b/packages/cli/src/public-api/v1/handlers/workflows/workflows.handler.ts @@ -1,6 +1,6 @@ +import { NotFoundError } from '@n8n/backend-services'; import { Container } from '@n8n/di'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { EventService } from '@/events/event.service'; import { WorkflowHistoryService } from '@/workflows/workflow-history/workflow-history.service'; diff --git a/packages/cli/src/public-api/v1/shared/middlewares/global.middleware.ts b/packages/cli/src/public-api/v1/shared/middlewares/global.middleware.ts index da9b01f1edc..f81fdaca08b 100644 --- a/packages/cli/src/public-api/v1/shared/middlewares/global.middleware.ts +++ b/packages/cli/src/public-api/v1/shared/middlewares/global.middleware.ts @@ -1,4 +1,5 @@ /* eslint-disable @typescript-eslint/no-invalid-void-type */ +import { NotFoundError } from '@n8n/backend-services'; import { type BooleanLicenseFeature, UNLIMITED_LICENSE_QUOTA } from '@n8n/constants'; import type { AuthenticatedRequest } from '@n8n/db'; import type { DeprecationInfo } from '@n8n/decorators'; @@ -8,7 +9,6 @@ import type express from 'express'; import type { NextFunction, Request, Response } from 'express'; import { FeatureNotLicensedError } from '@/errors/feature-not-licensed.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { License } from '@/license'; import { userHasScopes } from '@/permissions.ee/check-access'; import { USER_QUOTA_FORBIDDEN_MESSAGE } from '@/public-api/constants'; diff --git a/packages/cli/src/public-api/v1/shared/services/__tests__/pagination.service.test.ts b/packages/cli/src/public-api/v1/shared/services/__tests__/pagination.service.test.ts index 209ce60e79d..4d01da6bd8a 100644 --- a/packages/cli/src/public-api/v1/shared/services/__tests__/pagination.service.test.ts +++ b/packages/cli/src/public-api/v1/shared/services/__tests__/pagination.service.test.ts @@ -1,4 +1,4 @@ -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; +import { BadRequestError } from '@n8n/backend-services'; import { resolveOffsetPagination } from '../pagination.service'; diff --git a/packages/cli/src/public-api/v1/shared/services/pagination.service.ts b/packages/cli/src/public-api/v1/shared/services/pagination.service.ts index 80aefb4ebdc..1192cf2a3b0 100644 --- a/packages/cli/src/public-api/v1/shared/services/pagination.service.ts +++ b/packages/cli/src/public-api/v1/shared/services/pagination.service.ts @@ -1,7 +1,6 @@ +import { BadRequestError } from '@n8n/backend-services'; import { jsonParse } from 'n8n-workflow'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; - import type { CursorPagination, OffsetPagination, diff --git a/packages/cli/src/public-api/v1/shared/services/utils.service.ts b/packages/cli/src/public-api/v1/shared/services/utils.service.ts index d6e91b2d58c..ed585f68c20 100644 --- a/packages/cli/src/public-api/v1/shared/services/utils.service.ts +++ b/packages/cli/src/public-api/v1/shared/services/utils.service.ts @@ -1,9 +1,8 @@ +import { ForbiddenError, NotFoundError } from '@n8n/backend-services'; import { ProjectRepository, type User } from '@n8n/db'; import { Container } from '@n8n/di'; import type { Scope } from '@n8n/permissions'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { ProjectService } from '@/services/project.service.ee'; export async function assertProjectScope( diff --git a/packages/cli/src/push/__tests__/index.test.ts b/packages/cli/src/push/__tests__/index.test.ts index bb0ae7155c3..43987bf63c9 100644 --- a/packages/cli/src/push/__tests__/index.test.ts +++ b/packages/cli/src/push/__tests__/index.test.ts @@ -1,4 +1,5 @@ import type { Logger } from '@n8n/backend-common'; +import { BadRequestError } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import type { User } from '@n8n/db'; import type { Application } from 'express'; @@ -8,7 +9,6 @@ import type { MockInstance } from 'vitest'; import { captor, mock } from 'vitest-mock-extended'; import { type WebSocket, Server as WSServer } from 'ws'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { Push } from '@/push'; import { SSEPush } from '@/push/sse.push'; import type { WebSocketPushRequest, SSEPushRequest, PushResponse } from '@/push/types'; diff --git a/packages/cli/src/push/index.ts b/packages/cli/src/push/index.ts index 29beab45980..6df533dd422 100644 --- a/packages/cli/src/push/index.ts +++ b/packages/cli/src/push/index.ts @@ -1,5 +1,6 @@ import type { PushMessage } from '@n8n/api-types'; import { inProduction, Logger, TypedEmitter } from '@n8n/backend-common'; +import { BadRequestError, InternalServerError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import { OnPubSubEvent, OnShutdown } from '@n8n/decorators'; import { Container, Service } from '@n8n/di'; @@ -13,8 +14,6 @@ import { parse as parseUrl } from 'url'; import { Server as WSServer } from 'ws'; import { AuthService } from '@/auth/auth.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { InternalServerError } from '@/errors/response-errors/internal-server.error'; import { MAX_PUBSUB_PAYLOAD_BYTES } from '@/scaling/constants'; import { Publisher } from '@/scaling/pubsub/publisher.service'; diff --git a/packages/cli/src/services/__tests__/active-workflows.service.test.ts b/packages/cli/src/services/__tests__/active-workflows.service.test.ts index 4c6b23ed7c3..1ef609ee376 100644 --- a/packages/cli/src/services/__tests__/active-workflows.service.test.ts +++ b/packages/cli/src/services/__tests__/active-workflows.service.test.ts @@ -1,9 +1,9 @@ +import { BadRequestError } from '@n8n/backend-services'; import { GLOBAL_ADMIN_ROLE, GLOBAL_MEMBER_ROLE, WorkflowEntity } from '@n8n/db'; import type { User, WorkflowRepository } from '@n8n/db'; import { mock } from 'vitest-mock-extended'; import type { ActivationErrorsService } from '@/activation-errors.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import type { ProjectScopeService } from '@/permissions.ee/project-scope.service'; import { ActiveWorkflowsService } from '@/services/active-workflows.service'; import type { WorkflowFinderService } from '@/workflows/workflow-finder.service'; diff --git a/packages/cli/src/services/__tests__/ai-gateway.service.test.ts b/packages/cli/src/services/__tests__/ai-gateway.service.test.ts index 93f2c67ace0..ed81fcf01e1 100644 --- a/packages/cli/src/services/__tests__/ai-gateway.service.test.ts +++ b/packages/cli/src/services/__tests__/ai-gateway.service.test.ts @@ -1,5 +1,6 @@ import type { LicenseState } from '@n8n/backend-common'; import type { HttpRequestClient, OutboundHttp } from '@n8n/backend-network'; +import { BadRequestError } from '@n8n/backend-services'; import type { GlobalConfig } from '@n8n/config'; import type { Project, User, UserRepository } from '@n8n/db'; import type { InstanceSettings } from 'n8n-core'; @@ -9,7 +10,6 @@ import { mock } from 'vitest-mock-extended'; import { N8N_VERSION, AI_ASSISTANT_SDK_VERSION } from '@/constants'; import { FeatureNotLicensedError } from '@/errors/feature-not-licensed.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import type { License } from '@/license'; import { AiGatewayService } from '@/services/ai-gateway.service'; import type { OwnershipService } from '@/services/ownership.service'; diff --git a/packages/cli/src/services/__tests__/ai-preference-write.test.ts b/packages/cli/src/services/__tests__/ai-preference-write.test.ts index 24339fe873c..d12f6dced05 100644 --- a/packages/cli/src/services/__tests__/ai-preference-write.test.ts +++ b/packages/cli/src/services/__tests__/ai-preference-write.test.ts @@ -1,15 +1,17 @@ import type { AiPreferenceDto } from '@n8n/api-types'; import type { Logger } from '@n8n/backend-common'; +import { + BadRequestError, + ConflictError, + ForbiddenError, + InternalServerError, + NotFoundError, +} from '@n8n/backend-services'; import type { User } from '@n8n/db'; import { TELEMETRY_EVENT } from '@n8n/telemetry'; import { mock } from 'vitest-mock-extended'; import { AiPreferenceScopeFullError } from '@/errors/response-errors/ai-preference-scope-full.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { InternalServerError } from '@/errors/response-errors/internal-server.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { toAiPreferenceWriteRejection, writeAssistantPreference, diff --git a/packages/cli/src/services/__tests__/ai-preference.service.test.ts b/packages/cli/src/services/__tests__/ai-preference.service.test.ts index d1d2ee26880..f24313d0187 100644 --- a/packages/cli/src/services/__tests__/ai-preference.service.test.ts +++ b/packages/cli/src/services/__tests__/ai-preference.service.test.ts @@ -1,3 +1,4 @@ +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import type { AiPreference, AiPreferenceRepository, @@ -13,8 +14,6 @@ import { GLOBAL_MEMBER_ROLE, GLOBAL_OWNER_ROLE } from '@n8n/db'; import { mock } from 'vitest-mock-extended'; import { AiPreferenceScopeFullError } from '@/errors/response-errors/ai-preference-scope-full.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { AI_PREFERENCES_CLEARED_BLOCK, AI_PREFERENCES_REPLACES_EARLIER, diff --git a/packages/cli/src/services/__tests__/dynamic-node-parameters.service.test.ts b/packages/cli/src/services/__tests__/dynamic-node-parameters.service.test.ts index eecf05faba6..d9ee91d97af 100644 --- a/packages/cli/src/services/__tests__/dynamic-node-parameters.service.test.ts +++ b/packages/cli/src/services/__tests__/dynamic-node-parameters.service.test.ts @@ -1,6 +1,7 @@ import { Logger } from '@n8n/backend-common'; import { OutboundHttp } from '@n8n/backend-network'; import type { HttpRequestClient } from '@n8n/backend-network'; +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import { CredentialsRepository, SharedWorkflowRepository } from '@n8n/db'; import type { CredentialsEntity } from '@n8n/db'; @@ -30,8 +31,6 @@ import { DynamicNodeParametersService } from '../dynamic-node-parameters.service import { WorkflowLoaderService } from '../workflow-loader.service'; import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { NodeTypes } from '@/node-types'; import * as checkAccess from '@/permissions.ee/check-access'; diff --git a/packages/cli/src/services/__tests__/email-change.service.test.ts b/packages/cli/src/services/__tests__/email-change.service.test.ts index bee805bf907..bb4c32ac154 100644 --- a/packages/cli/src/services/__tests__/email-change.service.test.ts +++ b/packages/cli/src/services/__tests__/email-change.service.test.ts @@ -1,11 +1,10 @@ import type { Logger } from '@n8n/backend-common'; +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import type { GlobalConfig } from '@n8n/config'; import type { AuthIdentity, User } from '@n8n/db'; import type { Mock } from 'vitest'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { InvalidMfaCodeError } from '@/errors/response-errors/invalid-mfa-code.error'; import type { MfaService } from '@/mfa/mfa.service'; import type { PasswordUtility } from '@/services/password.utility'; diff --git a/packages/cli/src/services/__tests__/ownership.service.test.ts b/packages/cli/src/services/__tests__/ownership.service.test.ts index 6b760592863..3bffd0c3bd1 100644 --- a/packages/cli/src/services/__tests__/ownership.service.test.ts +++ b/packages/cli/src/services/__tests__/ownership.service.test.ts @@ -1,4 +1,5 @@ import { Logger } from '@n8n/backend-common'; +import { BadRequestError } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import { Project, @@ -18,7 +19,6 @@ import { PROJECT_OWNER_ROLE_SLUG } from '@n8n/permissions'; import { v4 as uuid } from 'uuid'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import type { EventService } from '@/events/event.service'; import { OwnershipService } from '@/services/ownership.service'; import { PasswordUtility } from '@/services/password.utility'; diff --git a/packages/cli/src/services/__tests__/project.service.ee.test.ts b/packages/cli/src/services/__tests__/project.service.ee.test.ts index 0f3c6281ce1..f40945b3d8f 100644 --- a/packages/cli/src/services/__tests__/project.service.ee.test.ts +++ b/packages/cli/src/services/__tests__/project.service.ee.test.ts @@ -1,5 +1,6 @@ import type { ProjectRelation } from '@n8n/api-types'; import type { Logger, ModuleRegistry } from '@n8n/backend-common'; +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import { type Project, type ProjectRepository, @@ -23,8 +24,6 @@ import { ProjectService } from '../project.service.ee'; import type { RoleService } from '../role.service'; import type { ICredentialConnectionStatusProvider } from '@/credentials/credential-connection-status-provider.interface'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import type { EventService } from '@/events/event.service'; import type { AgentChatAttachmentService } from '@/modules/agents/agent-chat-attachment.service'; import type { AgentExecutionService } from '@/modules/agents/agent-execution.service'; diff --git a/packages/cli/src/services/__tests__/public-api-key.service.test.ts b/packages/cli/src/services/__tests__/public-api-key.service.test.ts index f434c41a677..a36a51abf4e 100644 --- a/packages/cli/src/services/__tests__/public-api-key.service.test.ts +++ b/packages/cli/src/services/__tests__/public-api-key.service.test.ts @@ -1,10 +1,9 @@ import type { Logger } from '@n8n/backend-common'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import type { ApiKey, ApiKeyRepository, User } from '@n8n/db'; import { hasGlobalScope } from '@n8n/permissions'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { UserManagementMailer } from '@/user-management/email'; import type { JwtService } from '../jwt.service'; diff --git a/packages/cli/src/services/__tests__/role-authorization.test.ts b/packages/cli/src/services/__tests__/role-authorization.test.ts index 51becdf94e2..82ef54327fe 100644 --- a/packages/cli/src/services/__tests__/role-authorization.test.ts +++ b/packages/cli/src/services/__tests__/role-authorization.test.ts @@ -1,8 +1,8 @@ +import { ForbiddenError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import type { Scope } from '@n8n/permissions'; import { mock } from 'vitest-mock-extended'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { assertCanManageRoleType } from '@/services/role-authorization'; describe('assertCanManageRoleType', () => { diff --git a/packages/cli/src/services/__tests__/role.service.assignments.test.ts b/packages/cli/src/services/__tests__/role.service.assignments.test.ts index 0292a3c6bfd..6658cb67d10 100644 --- a/packages/cli/src/services/__tests__/role.service.assignments.test.ts +++ b/packages/cli/src/services/__tests__/role.service.assignments.test.ts @@ -1,10 +1,10 @@ import type { LicenseState } from '@n8n/backend-common'; import { Logger } from '@n8n/backend-common'; +import { NotFoundError } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import { RoleRepository, ScopeRepository } from '@n8n/db'; import { mock } from 'vitest-mock-extended'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { EventService } from '@/events/event.service'; import { RoleCacheService } from '@/services/role-cache.service'; import { RoleDeletionCheckProxy } from '@/services/role-deletion-check-proxy.service'; diff --git a/packages/cli/src/services/__tests__/role.service.customRoles.test.ts b/packages/cli/src/services/__tests__/role.service.customRoles.test.ts index 4d071b2e275..babfa66514d 100644 --- a/packages/cli/src/services/__tests__/role.service.customRoles.test.ts +++ b/packages/cli/src/services/__tests__/role.service.customRoles.test.ts @@ -1,13 +1,13 @@ import type { CreateRoleDto, UpdateRoleDto } from '@n8n/api-types'; import type { LicenseState } from '@n8n/backend-common'; import { Logger } from '@n8n/backend-common'; +import { BadRequestError } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import type { Role, Scope as DBScope } from '@n8n/db'; import { RoleRepository, ScopeRepository } from '@n8n/db'; import { MANDATORY_INSTANCE_SCOPES } from '@n8n/permissions'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { EventService } from '@/events/event.service'; import { RoleCacheService } from '@/services/role-cache.service'; import { RoleDeletionCheckProxy } from '@/services/role-deletion-check-proxy.service'; diff --git a/packages/cli/src/services/__tests__/user.service.test.ts b/packages/cli/src/services/__tests__/user.service.test.ts index 1dede2b6de8..a53719257eb 100644 --- a/packages/cli/src/services/__tests__/user.service.test.ts +++ b/packages/cli/src/services/__tests__/user.service.test.ts @@ -1,4 +1,5 @@ import { InviteUsersRequestDto } from '@n8n/api-types'; +import { BadRequestError, ForbiddenError, NotFoundError } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import { GlobalConfig } from '@n8n/config'; import { @@ -19,9 +20,6 @@ import { v4 as uuid } from 'uuid'; import { mock } from 'vitest-mock-extended'; import { RESPONSE_ERROR_MESSAGES } from '@/constants'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { EventService } from '@/events/event.service'; import type { ExternalHooks } from '@/external-hooks'; import type { License } from '@/license'; diff --git a/packages/cli/src/services/active-workflows.service.ts b/packages/cli/src/services/active-workflows.service.ts index 232449f05a5..df9640d5cb0 100644 --- a/packages/cli/src/services/active-workflows.service.ts +++ b/packages/cli/src/services/active-workflows.service.ts @@ -1,11 +1,11 @@ import { Logger } from '@n8n/backend-common'; +import { BadRequestError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import { WorkflowRepository } from '@n8n/db'; import { Service } from '@n8n/di'; import { hasGlobalScope } from '@n8n/permissions'; import { ActivationErrorsService } from '@/activation-errors.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { WorkflowFinderService } from '@/workflows/workflow-finder.service'; import { WorkflowSharingService } from '@/workflows/workflow-sharing.service'; diff --git a/packages/cli/src/services/ai-gateway.service.ts b/packages/cli/src/services/ai-gateway.service.ts index 6d5462cff25..2c80666fc18 100644 --- a/packages/cli/src/services/ai-gateway.service.ts +++ b/packages/cli/src/services/ai-gateway.service.ts @@ -6,6 +6,7 @@ import { } from '@n8n/api-types'; import { LicenseState } from '@n8n/backend-common'; import { OutboundHttp } from '@n8n/backend-network'; +import { BadRequestError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import { LICENSE_FEATURES } from '@n8n/constants'; import { UserRepository } from '@n8n/db'; @@ -16,7 +17,6 @@ import { OperationalError, UserError } from 'n8n-workflow'; import { N8N_VERSION, AI_ASSISTANT_SDK_VERSION } from '@/constants'; import { FeatureNotLicensedError } from '@/errors/feature-not-licensed.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { License } from '@/license'; import { checkAiGatewayEligibility } from '@/services/ai-gateway-eligibility'; import { OwnershipService } from '@/services/ownership.service'; diff --git a/packages/cli/src/services/ai-preference-write.ts b/packages/cli/src/services/ai-preference-write.ts index 3aaaef20569..7c393875bf5 100644 --- a/packages/cli/src/services/ai-preference-write.ts +++ b/packages/cli/src/services/ai-preference-write.ts @@ -1,12 +1,10 @@ import type { AiPreferenceDto, AiPreferenceScope, AiPreferenceSource } from '@n8n/api-types'; import type { Logger } from '@n8n/backend-common'; +import { ConflictError, ForbiddenError, ResponseError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import { TELEMETRY_EVENT } from '@n8n/telemetry'; -import { ResponseError } from '@/errors/response-errors/abstract/response.error'; import { AiPreferenceScopeFullError } from '@/errors/response-errors/ai-preference-scope-full.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import type { AiPreferenceService } from '@/services/ai-preference.service'; import type { Telemetry } from '@/telemetry'; diff --git a/packages/cli/src/services/ai-preference.service.ts b/packages/cli/src/services/ai-preference.service.ts index 67ecb5224ef..caabbb1e190 100644 --- a/packages/cli/src/services/ai-preference.service.ts +++ b/packages/cli/src/services/ai-preference.service.ts @@ -9,6 +9,12 @@ import type { AiPreferencesAppliedPayload, } from '@n8n/api-types'; import { AI_PREFERENCE_MAX_PER_SCOPE, aiPreferenceTargetOf } from '@n8n/api-types'; +import { + BadRequestError, + ConflictError, + ForbiddenError, + NotFoundError, +} from '@n8n/backend-services'; import type { AiPreference, Project, ProjectRelation, User } from '@n8n/db'; import { AiPreferenceRepository, @@ -22,10 +28,6 @@ import { hasGlobalScope } from '@n8n/permissions'; import { randomUUID } from 'node:crypto'; import { AiPreferenceScopeFullError } from '@/errors/response-errors/ai-preference-scope-full.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; /** `type` lets the prompt name a personal project without its owner's name. */ export type AiPreferenceProjectRef = { id: string; name: string; type?: Project['type'] }; diff --git a/packages/cli/src/services/dynamic-node-parameters.service.ts b/packages/cli/src/services/dynamic-node-parameters.service.ts index 52affc0b931..0ac2cd9e7e3 100644 --- a/packages/cli/src/services/dynamic-node-parameters.service.ts +++ b/packages/cli/src/services/dynamic-node-parameters.service.ts @@ -1,4 +1,5 @@ import { Logger } from '@n8n/backend-common'; +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import { CredentialsRepository, SharedWorkflowRepository, User } from '@n8n/db'; import { Service } from '@n8n/di'; import { LoadOptionsContext, RoutingNode, LocalLoadOptionsContext, ExecuteContext } from 'n8n-core'; @@ -29,8 +30,6 @@ import { } from 'n8n-workflow'; import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { NodeTypes } from '@/node-types'; import { userHasScopes } from '@/permissions.ee/check-access'; import { withExpressionIsolate } from '@/utils'; diff --git a/packages/cli/src/services/email-change.service.ts b/packages/cli/src/services/email-change.service.ts index 264f6b934d2..f48ce2ec2fb 100644 --- a/packages/cli/src/services/email-change.service.ts +++ b/packages/cli/src/services/email-change.service.ts @@ -1,10 +1,9 @@ import { Logger } from '@n8n/backend-common'; +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import type { AuthIdentity, User } from '@n8n/db'; import { Service } from '@n8n/di'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { InvalidMfaCodeError } from '@/errors/response-errors/invalid-mfa-code.error'; import { MfaService } from '@/mfa/mfa.service'; import { PasswordUtility } from '@/services/password.utility'; diff --git a/packages/cli/src/services/ownership.service.ts b/packages/cli/src/services/ownership.service.ts index b0ba9f07fda..be2139b3653 100644 --- a/packages/cli/src/services/ownership.service.ts +++ b/packages/cli/src/services/ownership.service.ts @@ -1,5 +1,6 @@ import { OwnerSetupRequestDto } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { BadRequestError } from '@n8n/backend-services'; import type { ListQueryDb } from '@n8n/db'; import { GLOBAL_OWNER_ROLE, @@ -18,7 +19,6 @@ import { IsNull } from '@n8n/typeorm/find-options/operator/IsNull'; import { Not } from '@n8n/typeorm/find-options/operator/Not'; import config from '@/config'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { EventService } from '@/events/event.service'; import { CacheService } from '@/services/cache/cache.service'; diff --git a/packages/cli/src/services/project.service.ee.ts b/packages/cli/src/services/project.service.ee.ts index 6ac9b2cc6e7..ce4a63d3fc1 100644 --- a/packages/cli/src/services/project.service.ee.ts +++ b/packages/cli/src/services/project.service.ee.ts @@ -1,5 +1,11 @@ import type { CreateProjectDto, ProjectType, UpdateProjectDto } from '@n8n/api-types'; import { LicenseState, Logger, ModuleRegistry } from '@n8n/backend-common'; +import { + BadRequestError, + ConflictError, + ForbiddenError, + NotFoundError, +} from '@n8n/backend-services'; import { type User, FolderRepository, @@ -32,10 +38,6 @@ import type { FindOptionsWhere, EntityManager } from '@n8n/typeorm'; import { In } from '@n8n/typeorm'; import { UserError } from 'n8n-workflow'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { EventService } from '@/events/event.service'; import { UserManagementMailer } from '@/user-management/email'; diff --git a/packages/cli/src/services/public-api-key.service.ts b/packages/cli/src/services/public-api-key.service.ts index 131b027c05c..e17f4a8edff 100644 --- a/packages/cli/src/services/public-api-key.service.ts +++ b/packages/cli/src/services/public-api-key.service.ts @@ -7,6 +7,7 @@ import type { } from '@n8n/api-types'; import { LIST_API_KEYS_SORT_OPTIONS } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import { ApiKey, ApiKeyRepository, escapeLike, LIKE_ESCAPE_CLAUSE, withTransaction } from '@n8n/db'; import { Service } from '@n8n/di'; @@ -21,8 +22,6 @@ import { } from '@n8n/typeorm'; import { randomUUID } from 'crypto'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { UserManagementMailer } from '@/user-management/email'; import { JwtService } from './jwt.service'; diff --git a/packages/cli/src/services/role-authorization.ts b/packages/cli/src/services/role-authorization.ts index 9212d263612..13faea19b6c 100644 --- a/packages/cli/src/services/role-authorization.ts +++ b/packages/cli/src/services/role-authorization.ts @@ -1,8 +1,8 @@ +import { ForbiddenError } from '@n8n/backend-services'; import type { User } from '@n8n/db'; import { getAuthPrincipalScopes, type Role as RoleDTO, type RoleNamespace } from '@n8n/permissions'; import { RESPONSE_ERROR_MESSAGES } from '@/constants'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; /** * Whether a caller can manage a role requires `role:manage`; `role:manageProject` grants it for diff --git a/packages/cli/src/services/role.service.ts b/packages/cli/src/services/role.service.ts index 3e5f34fe106..9e0be9277ab 100644 --- a/packages/cli/src/services/role.service.ts +++ b/packages/cli/src/services/role.service.ts @@ -5,6 +5,7 @@ import type { } from '@n8n/api-types'; import { CreateRoleDto } from '@n8n/api-types'; import { LicenseState, Logger } from '@n8n/backend-common'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import { CredentialsEntity, SharedCredentials, @@ -41,8 +42,6 @@ import { } from '@n8n/permissions'; import { UnexpectedError, UserError } from 'n8n-workflow'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { EventService } from '@/events/event.service'; import { isUniqueConstraintError } from '@/response-helper'; diff --git a/packages/cli/src/services/sandbox-settings.service.ts b/packages/cli/src/services/sandbox-settings.service.ts index 228635a43b3..b1dbeb9f6d9 100644 --- a/packages/cli/src/services/sandbox-settings.service.ts +++ b/packages/cli/src/services/sandbox-settings.service.ts @@ -1,6 +1,7 @@ import type { InstanceAiSandboxProvider } from '@n8n/api-types'; import { normalizeSandboxProvider as normalizeRuntimeSandboxProvider } from '@n8n/agents/sandbox'; import { Logger } from '@n8n/backend-common'; +import { UnprocessableRequestError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import type { AgentsConfig, DeploymentConfig, InstanceAiConfig } from '@n8n/config'; import type { OperationContext } from '@n8n/db'; @@ -13,7 +14,6 @@ import { type InstanceCredentialUse, type ResolvedInstanceCredential, } from '@/credentials/instance-credential-broker'; -import { UnprocessableRequestError } from '@/errors/response-errors/unprocessable.error'; const N8N_SANDBOX_HEADER_NAME = 'x-api-key'; diff --git a/packages/cli/src/services/session-cookie-auth.strategy.ts b/packages/cli/src/services/session-cookie-auth.strategy.ts index 66d4db01dc3..96f6c27b07c 100644 --- a/packages/cli/src/services/session-cookie-auth.strategy.ts +++ b/packages/cli/src/services/session-cookie-auth.strategy.ts @@ -1,3 +1,4 @@ +import { AuthError } from '@n8n/backend-services'; import type { AuthenticatedRequest, TokenGrant, User } from '@n8n/db'; import { Service } from '@n8n/di'; import { getApiKeyScopesForRole } from '@n8n/permissions'; @@ -5,7 +6,6 @@ import { JsonWebTokenError, TokenExpiredError } from 'jsonwebtoken'; import { AuthService } from '@/auth/auth.service'; import { AUTH_COOKIE_NAME } from '@/constants'; -import { AuthError } from '@/errors/response-errors/auth.error'; import type { AuthStrategy, AuthStrategyOptions } from './auth-strategy.types'; diff --git a/packages/cli/src/services/user.service.ts b/packages/cli/src/services/user.service.ts index d06e8f5236c..a0b9fd0cbb9 100644 --- a/packages/cli/src/services/user.service.ts +++ b/packages/cli/src/services/user.service.ts @@ -1,5 +1,11 @@ import type { RoleChangeRequestDto } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; +import { + BadRequestError, + ForbiddenError, + InternalServerError, + NotFoundError, +} from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import type { PublicUser } from '@n8n/db'; import { @@ -36,10 +42,6 @@ import { PublicApiKeyService } from './public-api-key.service'; import { RoleService } from './role.service'; import { RESPONSE_ERROR_MESSAGES } from '@/constants'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { InternalServerError } from '@/errors/response-errors/internal-server.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { EventService } from '@/events/event.service'; import { ExternalHooks } from '@/external-hooks'; import type { Invitation } from '@/interfaces'; diff --git a/packages/cli/src/sso.ee/sso-helpers.ts b/packages/cli/src/sso.ee/sso-helpers.ts index 2b146a462ee..7d1f9deed43 100644 --- a/packages/cli/src/sso.ee/sso-helpers.ts +++ b/packages/cli/src/sso.ee/sso-helpers.ts @@ -1,10 +1,10 @@ import { LicenseState, Logger } from '@n8n/backend-common'; +import { BadRequestError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import { isAuthProviderType, SettingsRepository, type AuthProviderType } from '@n8n/db'; import { Container } from '@n8n/di'; import config from '@/config'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; /** * Only one authentication method can be active at a time. This function sets diff --git a/packages/cli/src/task-runners/task-broker/auth/__tests__/task-broker-auth.controller.test.ts b/packages/cli/src/task-runners/task-broker/auth/__tests__/task-broker-auth.controller.test.ts index dec7304afb9..68a6c364722 100644 --- a/packages/cli/src/task-runners/task-broker/auth/__tests__/task-broker-auth.controller.test.ts +++ b/packages/cli/src/task-runners/task-broker/auth/__tests__/task-broker-auth.controller.test.ts @@ -1,10 +1,9 @@ +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import { GlobalConfig } from '@n8n/config'; import { CacheService } from '@/services/cache/cache.service'; -import { BadRequestError } from '../../../../errors/response-errors/bad-request.error'; -import { ForbiddenError } from '../../../../errors/response-errors/forbidden.error'; import type { AuthlessRequest } from '../../../../requests'; import { TaskBrokerAuthController } from '../task-broker-auth.controller'; import { TaskBrokerAuthService } from '../task-broker-auth.service'; diff --git a/packages/cli/src/task-runners/task-broker/auth/task-broker-auth.controller.ts b/packages/cli/src/task-runners/task-broker/auth/task-broker-auth.controller.ts index c60cf2440c4..5b20a69df62 100644 --- a/packages/cli/src/task-runners/task-broker/auth/task-broker-auth.controller.ts +++ b/packages/cli/src/task-runners/task-broker/auth/task-broker-auth.controller.ts @@ -1,11 +1,10 @@ +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import { Service } from '@n8n/di'; import type { AuthlessRequest } from '@/requests'; import { bearerTokenSchema, taskBrokerAuthRequestBodySchema } from './task-broker-auth.schema'; import { TaskBrokerAuthService } from './task-broker-auth.service'; -import { BadRequestError } from '../../../errors/response-errors/bad-request.error'; -import { ForbiddenError } from '../../../errors/response-errors/forbidden.error'; /** * Controller responsible for authenticating Task Runner connections diff --git a/packages/cli/src/user-management/email/user-management-mailer.ts b/packages/cli/src/user-management/email/user-management-mailer.ts index 1b9574d74ca..dbc8c4cf4c7 100644 --- a/packages/cli/src/user-management/email/user-management-mailer.ts +++ b/packages/cli/src/user-management/email/user-management-mailer.ts @@ -1,4 +1,5 @@ import { inTest, Logger } from '@n8n/backend-common'; +import { InternalServerError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import type { ApiKey, User } from '@n8n/db'; import { UserRepository } from '@n8n/db'; @@ -19,7 +20,6 @@ import type { } from './interfaces'; import { NodeMailer } from './node-mailer'; -import { InternalServerError } from '@/errors/response-errors/internal-server.error'; import { EventService } from '@/events/event.service'; import type { RelayEventMap } from '@/events/maps/relay.event-map'; import { UrlService } from '@/services/url.service'; diff --git a/packages/cli/src/webhooks/__tests__/test-webhooks.test.ts b/packages/cli/src/webhooks/__tests__/test-webhooks.test.ts index 9d63e6a45a4..3d3f789cecc 100644 --- a/packages/cli/src/webhooks/__tests__/test-webhooks.test.ts +++ b/packages/cli/src/webhooks/__tests__/test-webhooks.test.ts @@ -1,4 +1,5 @@ import type { Logger } from '@n8n/backend-common'; +import { NotFoundError } from '@n8n/backend-services'; import type { WorkflowEntity } from '@n8n/db'; import { generateNanoId } from '@n8n/db'; import type * as express from 'express'; @@ -23,7 +24,6 @@ import { TEST_WEBHOOK_TIMEOUT, TEST_WEBHOOK_TIMEOUT_BUFFER, } from '@/constants'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { WebhookNotFoundError } from '@/errors/response-errors/webhook-not-found.error'; import type { TestWebhookRegistrationsService, diff --git a/packages/cli/src/webhooks/__tests__/waiting-webhooks.test.ts b/packages/cli/src/webhooks/__tests__/waiting-webhooks.test.ts index 89494520302..80bb1bc96c7 100644 --- a/packages/cli/src/webhooks/__tests__/waiting-webhooks.test.ts +++ b/packages/cli/src/webhooks/__tests__/waiting-webhooks.test.ts @@ -1,3 +1,4 @@ +import { ConflictError, NotFoundError } from '@n8n/backend-services'; import type { EndpointsConfig } from '@n8n/config'; import type { IExecutionResponse } from '@n8n/db'; import type express from 'express'; @@ -7,8 +8,6 @@ import type { INodeParameters, IWorkflowBase, Workflow } from 'n8n-workflow'; import { SEND_AND_WAIT_OPERATION } from 'n8n-workflow'; import { mock } from 'vitest-mock-extended'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { EventService } from '@/events/event.service'; import type { ExecutionPersistence } from '@/executions/execution-persistence'; import { WaitingWebhooks } from '@/webhooks/waiting-webhooks'; diff --git a/packages/cli/src/webhooks/__tests__/webhook-form-data.test.ts b/packages/cli/src/webhooks/__tests__/webhook-form-data.test.ts index ee5870e53d9..3d94dd4d3ea 100644 --- a/packages/cli/src/webhooks/__tests__/webhook-form-data.test.ts +++ b/packages/cli/src/webhooks/__tests__/webhook-form-data.test.ts @@ -1,3 +1,4 @@ +import { BadRequestError, ContentTooLargeError } from '@n8n/backend-services'; import express from 'express'; import nock from 'nock'; import { access, rm } from 'node:fs/promises'; @@ -6,8 +7,6 @@ import { createServer } from 'node:http'; import request from 'supertest'; import type TestAgent from 'supertest/lib/agent'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ContentTooLargeError } from '@/errors/response-errors/content-too-large.error'; import { rawBodyReader } from '@/middlewares'; import { createMultiFormDataParser } from '../webhook-form-data'; diff --git a/packages/cli/src/webhooks/__tests__/webhook-helpers.test.ts b/packages/cli/src/webhooks/__tests__/webhook-helpers.test.ts index ac4b7ea4993..311791e1567 100644 --- a/packages/cli/src/webhooks/__tests__/webhook-helpers.test.ts +++ b/packages/cli/src/webhooks/__tests__/webhook-helpers.test.ts @@ -1,4 +1,5 @@ import { Logger } from '@n8n/backend-common'; +import type { ResponseError } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import type { Project, User } from '@n8n/db'; import { UserRepository } from '@n8n/db'; @@ -58,7 +59,6 @@ import { mock, type MockProxy } from 'vitest-mock-extended'; import { ActiveExecutions } from '@/active-executions'; import { AuthService } from '@/auth/auth.service'; -import type { ResponseError } from '@/errors/response-errors/abstract/response.error'; import { EventService } from '@/events/event.service'; import { WebhookResponseRelay } from '@/scaling/webhook-response-relay'; import { EngineDataPlaneProxyService } from '@/services/engine-data-plane-proxy.service'; diff --git a/packages/cli/src/webhooks/__tests__/webhook-request-handler.test.ts b/packages/cli/src/webhooks/__tests__/webhook-request-handler.test.ts index 02f5e604e37..6443ebf6aa3 100644 --- a/packages/cli/src/webhooks/__tests__/webhook-request-handler.test.ts +++ b/packages/cli/src/webhooks/__tests__/webhook-request-handler.test.ts @@ -1,4 +1,5 @@ import { Logger } from '@n8n/backend-common'; +import { ResponseError } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import { type Response } from 'express'; import { isWebhookHtmlSandboxingDisabled, getHtmlSandboxCSP } from 'n8n-core'; @@ -6,7 +7,6 @@ import { OperationalError, randomString } from 'n8n-workflow'; import type { IHttpRequestMethods } from 'n8n-workflow'; import { mock } from 'vitest-mock-extended'; -import { ResponseError } from '@/errors/response-errors/abstract/response.error'; import { createWebhookHandlerFor } from '@/webhooks/webhook-request-handler'; import type { IWebhookManager, diff --git a/packages/cli/src/webhooks/live-webhooks.ts b/packages/cli/src/webhooks/live-webhooks.ts index ba87bd94024..d223d12bddb 100644 --- a/packages/cli/src/webhooks/live-webhooks.ts +++ b/packages/cli/src/webhooks/live-webhooks.ts @@ -1,4 +1,5 @@ import { Logger } from '@n8n/backend-common'; +import { NotFoundError } from '@n8n/backend-services'; import { ExpressionEngineConfig, WorkflowsConfig } from '@n8n/config'; import { WorkflowRepository, type WorkflowEntity, type WorkflowHistory } from '@n8n/db'; import { Service } from '@n8n/di'; @@ -13,7 +14,6 @@ import { } from 'n8n-workflow'; import type { INode, IWebhookData, IHttpRequestMethods, IWorkflowBase } from 'n8n-workflow'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { WebhookNotFoundError } from '@/errors/response-errors/webhook-not-found.error'; import { NodeTypes } from '@/node-types'; import * as WebhookHelpers from '@/webhooks/webhook-helpers'; diff --git a/packages/cli/src/webhooks/test-webhooks.ts b/packages/cli/src/webhooks/test-webhooks.ts index bea1d482b14..04621a03d8e 100644 --- a/packages/cli/src/webhooks/test-webhooks.ts +++ b/packages/cli/src/webhooks/test-webhooks.ts @@ -1,4 +1,5 @@ import { Logger } from '@n8n/backend-common'; +import { NotFoundError } from '@n8n/backend-services'; import { OnPubSubEvent } from '@n8n/decorators'; import { Service } from '@n8n/di'; import type express from 'express'; @@ -23,7 +24,6 @@ import { TEST_WEBHOOK_TIMEOUT, TEST_WEBHOOK_TIMEOUT_BUFFER, } from '@/constants'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { WebhookNotFoundError } from '@/errors/response-errors/webhook-not-found.error'; import { SingleWebhookTriggerError } from '@/errors/single-webhook-trigger.error'; import { WorkflowMissingIdError } from '@/errors/workflow-missing-id.error'; diff --git a/packages/cli/src/webhooks/waiting-forms.ts b/packages/cli/src/webhooks/waiting-forms.ts index 61e5317550a..07670206a16 100644 --- a/packages/cli/src/webhooks/waiting-forms.ts +++ b/packages/cli/src/webhooks/waiting-forms.ts @@ -1,11 +1,10 @@ +import { ConflictError, NotFoundError } from '@n8n/backend-services'; import type { IExecutionResponse } from '@n8n/db'; import { Service } from '@n8n/di'; import type express from 'express'; import type { IRunData } from 'n8n-workflow'; import { FORM_NODE_TYPE, WAITING_FORMS_EXECUTION_STATUS, Workflow } from 'n8n-workflow'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { applyCors } from '@/utils/cors.util'; import { WaitingWebhooks } from '@/webhooks/waiting-webhooks'; import { applyFormSandboxCSP } from '@/webhooks/webhook-response-headers'; diff --git a/packages/cli/src/webhooks/waiting-webhooks.ts b/packages/cli/src/webhooks/waiting-webhooks.ts index a470bf53a76..23a853c0381 100644 --- a/packages/cli/src/webhooks/waiting-webhooks.ts +++ b/packages/cli/src/webhooks/waiting-webhooks.ts @@ -1,4 +1,5 @@ import { Logger } from '@n8n/backend-common'; +import { ConflictError, NotFoundError } from '@n8n/backend-services'; import { EndpointsConfig } from '@n8n/config'; import type { IExecutionResponse } from '@n8n/db'; import { Service } from '@n8n/di'; @@ -26,8 +27,6 @@ import type { import { EventService } from '@/events/event.service'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { ExecutionPersistence } from '@/executions/execution-persistence'; import { getWorkflowActiveStatusFromWorkflowData } from '@/executions/execution.utils'; import { NodeTypes } from '@/node-types'; diff --git a/packages/cli/src/webhooks/webhook-form-data.ts b/packages/cli/src/webhooks/webhook-form-data.ts index 2435d5e0586..b200ef864b9 100644 --- a/packages/cli/src/webhooks/webhook-form-data.ts +++ b/packages/cli/src/webhooks/webhook-form-data.ts @@ -1,9 +1,8 @@ +import { BadRequestError, ContentTooLargeError } from '@n8n/backend-services'; import formidable from 'formidable'; import { rm } from 'node:fs/promises'; import type { IncomingMessage } from 'node:http'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ContentTooLargeError } from '@/errors/response-errors/content-too-large.error'; import { discardBlankFileInputs } from '@/webhooks/webhook-blank-file-inputs'; // formidable reports the status code it considers appropriate on `httpCode` diff --git a/packages/cli/src/webhooks/webhook-helpers.ts b/packages/cli/src/webhooks/webhook-helpers.ts index 89220d2fa7f..2cf936125e3 100644 --- a/packages/cli/src/webhooks/webhook-helpers.ts +++ b/packages/cli/src/webhooks/webhook-helpers.ts @@ -1,4 +1,11 @@ import { Logger } from '@n8n/backend-common'; +import { + BadRequestError, + InternalServerError, + NotFoundError, + ResponseError, + UnsupportedMediaTypeError, +} from '@n8n/backend-services'; import { ExecutionsConfig, GlobalConfig } from '@n8n/config'; import type { Project } from '@n8n/db'; import { UserRepository } from '@n8n/db'; @@ -62,11 +69,6 @@ import { finished } from 'stream/promises'; import { ActiveExecutions } from '@/active-executions'; import { AuthService } from '@/auth/auth.service'; import { MCP_TRIGGER_NODE_TYPE } from '@/constants'; -import { ResponseError } from '@/errors/response-errors/abstract/response.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { InternalServerError } from '@/errors/response-errors/internal-server.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; -import { UnsupportedMediaTypeError } from '@/errors/response-errors/unsupported-media-type.error'; import { EventService } from '@/events/event.service'; import { createExecutionIdV2 } from '@/executions/execution-id'; import { parseBody } from '@/middlewares'; diff --git a/packages/cli/src/workflow-helpers.ts b/packages/cli/src/workflow-helpers.ts index 5b29a6b0f9b..dfe3f5ece59 100644 --- a/packages/cli/src/workflow-helpers.ts +++ b/packages/cli/src/workflow-helpers.ts @@ -1,4 +1,5 @@ import { MAX_PINNED_DATA_SIZE, MAX_WORKFLOW_SIZE, MAX_EXPECTED_REQUEST_SIZE } from '@n8n/api-types'; +import { BadRequestError } from '@n8n/backend-services'; import { CredentialsRepository } from '@n8n/db'; import type { WorkflowEntity, WorkflowHistory } from '@n8n/db'; import { Container } from '@n8n/di'; @@ -28,7 +29,6 @@ import { } from 'n8n-workflow'; import { v4 as uuid } from 'uuid'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { VariablesService } from '@/environments.ee/variables/variables.service.ee'; import { ExecutionPersistence } from '@/executions/execution-persistence'; diff --git a/packages/cli/src/workflows/__tests__/workflow-creation.service.test.ts b/packages/cli/src/workflows/__tests__/workflow-creation.service.test.ts index 96375f94d1e..62c24616178 100644 --- a/packages/cli/src/workflows/__tests__/workflow-creation.service.test.ts +++ b/packages/cli/src/workflows/__tests__/workflow-creation.service.test.ts @@ -1,4 +1,5 @@ import type { Logger, LicenseState } from '@n8n/backend-common'; +import { BadRequestError, ForbiddenError, NotFoundError } from '@n8n/backend-services'; import type { EntityManager, Folder, @@ -14,9 +15,6 @@ import type { MockProxy } from 'vitest-mock-extended'; import { mock } from 'vitest-mock-extended'; import type { CredentialsFinderService } from '@/credentials/credentials-finder.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import type { ExternalHooks, WorkflowLifecycleHookActor } from '@/external-hooks'; import type { McpSettingsService } from '@/modules/mcp/mcp.settings.service'; import type { InstanceRedactionEnforcementService } from '@/modules/redaction/instance-redaction-enforcement.service'; diff --git a/packages/cli/src/workflows/__tests__/workflow-execution.service.test.ts b/packages/cli/src/workflows/__tests__/workflow-execution.service.test.ts index 4cb9bd70c7f..8dc5c034b56 100644 --- a/packages/cli/src/workflows/__tests__/workflow-execution.service.test.ts +++ b/packages/cli/src/workflows/__tests__/workflow-execution.service.test.ts @@ -1,4 +1,5 @@ import type { Logger } from '@n8n/backend-common'; +import { ForbiddenError } from '@n8n/backend-services'; import type { GlobalConfig, WorkflowsConfig } from '@n8n/config'; import type { CreateExecutionPayload, @@ -31,7 +32,6 @@ import type { WorkflowRequest } from '../workflow.request'; import { DuplicateExecutionError } from '@/errors/duplicate-execution.error'; import { ExecutionAlreadyResumingError } from '@/errors/execution-already-resuming.error'; import { PreExecuteBlockedError } from '@/errors/pre-execute-blocked.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import type { EventService } from '@/events/event.service'; import type { ExecutionCrashService } from '@/executions/execution-crash.service'; import type { IWorkflowErrorData } from '@/interfaces'; diff --git a/packages/cli/src/workflows/__tests__/workflow.service.test.ts b/packages/cli/src/workflows/__tests__/workflow.service.test.ts index 8f3a30d1613..3bc7a787866 100644 --- a/packages/cli/src/workflows/__tests__/workflow.service.test.ts +++ b/packages/cli/src/workflows/__tests__/workflow.service.test.ts @@ -1,4 +1,11 @@ import type { LicenseState } from '@n8n/backend-common'; +import { + BadRequestError, + ConflictError, + NotFoundError, + UnprocessableRequestError, + WorkflowPublishBlockedError, +} from '@n8n/backend-services'; import type { GlobalConfig, WorkflowsConfig } from '@n8n/config'; import type { Project, @@ -21,13 +28,8 @@ import { mock } from 'vitest-mock-extended'; import type { MockProxy } from 'vitest-mock-extended'; import type { ActiveWorkflowManager } from '@/active-workflow-manager'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; -import { UnprocessableRequestError } from '@/errors/response-errors/unprocessable.error'; import { WorkflowActivationBadRequestError } from '@/errors/response-errors/workflow-activation-bad-request.error'; import { WorkflowDeactivationBadRequestError } from '@/errors/response-errors/workflow-deactivation-bad-request.error'; -import { WorkflowPublishBlockedError } from '@/errors/response-errors/workflow-publish-blocked.error'; import type { EventService } from '@/events/event.service'; import type { SharedWorkflowRepository } from '@n8n/db'; import type { ExecutionPersistence } from '@/executions/execution-persistence'; diff --git a/packages/cli/src/workflows/__tests__/workflows.controller.test.ts b/packages/cli/src/workflows/__tests__/workflows.controller.test.ts index 30465234082..1002674f045 100644 --- a/packages/cli/src/workflows/__tests__/workflows.controller.test.ts +++ b/packages/cli/src/workflows/__tests__/workflows.controller.test.ts @@ -1,3 +1,4 @@ +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import type { Mock } from 'vitest'; import type { ImportWorkflowFromUrlDto } from '@n8n/api-types'; import type { Logger } from '@n8n/backend-common'; @@ -9,8 +10,6 @@ import { mock } from 'vitest-mock-extended'; import { WorkflowsController } from '../workflows.controller'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import type { ExecutionService } from '@/executions/execution.service'; import type { ProjectService } from '@/services/project.service.ee'; diff --git a/packages/cli/src/workflows/workflow-creation.service.ts b/packages/cli/src/workflows/workflow-creation.service.ts index 8490bb12afd..76c14933439 100644 --- a/packages/cli/src/workflows/workflow-creation.service.ts +++ b/packages/cli/src/workflows/workflow-creation.service.ts @@ -1,5 +1,11 @@ import type { RedactionFloor } from '@n8n/api-types'; import { LicenseState, Logger } from '@n8n/backend-common'; +import { + BadRequestError, + ForbiddenError, + InternalServerError, + NotFoundError, +} from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import type { EntityManager, User, Project, Folder } from '@n8n/db'; import { @@ -15,10 +21,6 @@ import { PROJECT_ROOT } from 'n8n-workflow'; import { v4 as uuid } from 'uuid'; import { CredentialsFinderService } from '@/credentials/credentials-finder.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { InternalServerError } from '@/errors/response-errors/internal-server.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { WorkflowValidationError } from '@/errors/response-errors/workflow-validation.error'; import { EventService } from '@/events/event.service'; import type { WorkflowActionSource } from '@/events/maps/relay.event-map'; diff --git a/packages/cli/src/workflows/workflow-execution.service.ts b/packages/cli/src/workflows/workflow-execution.service.ts index 094b1426e17..d1d99b876e2 100644 --- a/packages/cli/src/workflows/workflow-execution.service.ts +++ b/packages/cli/src/workflows/workflow-execution.service.ts @@ -1,4 +1,5 @@ import { Logger } from '@n8n/backend-common'; +import { ForbiddenError } from '@n8n/backend-services'; import { GlobalConfig, WorkflowsConfig } from '@n8n/config'; import type { Project, @@ -41,7 +42,6 @@ import { import { ExecutionAlreadyResumingError } from '@/errors/execution-already-resuming.error'; import { PreExecuteBlockedError } from '@/errors/pre-execute-blocked.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { EventService } from '@/events/event.service'; import { ExecutionCrashService } from '@/executions/execution-crash.service'; import { ExecutionPersistence } from '@/executions/execution-persistence'; diff --git a/packages/cli/src/workflows/workflow-history/__tests__/workflow-history.controller.test.ts b/packages/cli/src/workflows/workflow-history/__tests__/workflow-history.controller.test.ts index e584a2b7082..2f8b896c148 100644 --- a/packages/cli/src/workflows/workflow-history/__tests__/workflow-history.controller.test.ts +++ b/packages/cli/src/workflows/workflow-history/__tests__/workflow-history.controller.test.ts @@ -1,10 +1,10 @@ import type { UpdateWorkflowHistoryVersionDto } from '@n8n/api-types'; +import { NotFoundError } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import type { AuthenticatedRequest, User } from '@n8n/db'; import { Container } from '@n8n/di'; import { mock } from 'vitest-mock-extended'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { SharedWorkflowNotFoundError } from '@/errors/shared-workflow-not-found.error'; import { WorkflowHistoryVersionNotFoundError } from '@/errors/workflow-history-version-not-found.error'; import type { WorkflowHistoryRequest } from '@/requests'; diff --git a/packages/cli/src/workflows/workflow-history/workflow-history.controller.ts b/packages/cli/src/workflows/workflow-history/workflow-history.controller.ts index a6e7bda7dae..4e0b0ceaf16 100644 --- a/packages/cli/src/workflows/workflow-history/workflow-history.controller.ts +++ b/packages/cli/src/workflows/workflow-history/workflow-history.controller.ts @@ -3,10 +3,10 @@ import { WorkflowHistoryVersionsByIdsDto, UpdateWorkflowHistoryVersionDto, } from '@n8n/api-types'; +import { NotFoundError } from '@n8n/backend-services'; import { AuthenticatedRequest } from '@n8n/db'; import { RestController, Get, Post, Query, Body, Patch, Param, Licensed } from '@n8n/decorators'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { SharedWorkflowNotFoundError } from '@/errors/shared-workflow-not-found.error'; import { WorkflowHistoryVersionNotFoundError } from '@/errors/workflow-history-version-not-found.error'; import { WorkflowHistoryRequest } from '@/requests'; diff --git a/packages/cli/src/workflows/workflow.service.ee.ts b/packages/cli/src/workflows/workflow.service.ee.ts index 7e85acc4d4a..94261ce8ccd 100644 --- a/packages/cli/src/workflows/workflow.service.ee.ts +++ b/packages/cli/src/workflows/workflow.service.ee.ts @@ -1,4 +1,5 @@ import { Logger } from '@n8n/backend-common'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import type { CredentialUsedByWorkflow, User, @@ -34,8 +35,6 @@ import { CredentialsFinderService } from '@/credentials/credentials-finder.servi import { CredentialsService } from '@/credentials/credentials.service'; import { EnterpriseCredentialsService } from '@/credentials/credentials.service.ee'; import { FolderNotFoundError } from '@/errors/folder-not-found.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { TransferWorkflowError } from '@/errors/response-errors/transfer-workflow.error'; import { PolicyEnforcementService } from '@/policy/policy-enforcement.service'; import { OwnershipService } from '@/services/ownership.service'; diff --git a/packages/cli/src/workflows/workflow.service.ts b/packages/cli/src/workflows/workflow.service.ts index d00e5b66895..3544dce6792 100644 --- a/packages/cli/src/workflows/workflow.service.ts +++ b/packages/cli/src/workflows/workflow.service.ts @@ -1,6 +1,12 @@ import { UpdateWorkflowHistoryVersionDto } from '@n8n/api-types'; import type { WorkflowListPublicationStatus } from '@n8n/api-types'; import { LicenseState, Logger } from '@n8n/backend-common'; +import { + BadRequestError, + ConflictError, + ForbiddenError, + NotFoundError, +} from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import type { User, ListQueryDb, Project, WorkflowFolderUnionFull, WorkflowHistory } from '@n8n/db'; import { @@ -42,10 +48,6 @@ import { WorkflowValidationService } from './workflow-validation.service'; import { ActiveWorkflowManager } from '@/active-workflow-manager'; import { FolderNotFoundError } from '@/errors/folder-not-found.error'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { WorkflowActivationBadRequestError } from '@/errors/response-errors/workflow-activation-bad-request.error'; import { WorkflowDeactivationBadRequestError } from '@/errors/response-errors/workflow-deactivation-bad-request.error'; import { WorkflowPublishForbiddenError } from '@/errors/response-errors/workflow-publish-forbidden.error'; diff --git a/packages/cli/src/workflows/workflows.controller.ts b/packages/cli/src/workflows/workflows.controller.ts index 4ecf49e9a63..c93a801ec0c 100644 --- a/packages/cli/src/workflows/workflows.controller.ts +++ b/packages/cli/src/workflows/workflows.controller.ts @@ -12,6 +12,7 @@ import { } from '@n8n/api-types'; import { Logger } from '@n8n/backend-common'; import { OutboundHttp, SsrfBlockedIpError } from '@n8n/backend-network'; +import { BadRequestError, ForbiddenError, NotFoundError } from '@n8n/backend-services'; import { GlobalConfig } from '@n8n/config'; import { AuthenticatedRequest, @@ -41,9 +42,6 @@ import express from 'express'; import { calculateWorkflowChecksum } from 'n8n-workflow'; import { AuthService } from '@/auth/auth.service'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { EventService } from '@/events/event.service'; import { ExecutionService } from '@/executions/execution.service'; import { IWorkflowResponse } from '@/interfaces'; diff --git a/packages/cli/test/integration/credentials/instance-credentials.api.test.ts b/packages/cli/test/integration/credentials/instance-credentials.api.test.ts index 42daa33a265..b79bd949b2f 100644 --- a/packages/cli/test/integration/credentials/instance-credentials.api.test.ts +++ b/packages/cli/test/integration/credentials/instance-credentials.api.test.ts @@ -1,3 +1,4 @@ +import { UnprocessableRequestError } from '@n8n/backend-services'; import { mockInstance, randomCredentialPayload, testDb } from '@n8n/backend-test-utils'; import type { ICredentialsDb, User } from '@n8n/db'; import { @@ -11,7 +12,6 @@ import { Container } from '@n8n/di'; import { CredentialsService } from '@/credentials/credentials.service'; import { InstanceCredentialBroker } from '@/credentials/instance-credential-broker'; import type { InstanceCredentialUse } from '@/credentials/instance-credential-use.registry'; -import { UnprocessableRequestError } from '@/errors/response-errors/unprocessable.error'; import { ExternalHooks } from '@/external-hooks'; import { diff --git a/packages/cli/test/integration/environments/source-control-access-control.test.ts b/packages/cli/test/integration/environments/source-control-access-control.test.ts index 6860b04eb4d..558eb36a12f 100644 --- a/packages/cli/test/integration/environments/source-control-access-control.test.ts +++ b/packages/cli/test/integration/environments/source-control-access-control.test.ts @@ -1,11 +1,11 @@ // Access-control coverage for Source Control read endpoints. Runs the real auth + // RBAC stack and scoped-service context resolution; only git-touching methods are stubbed. +import { ForbiddenError } from '@n8n/backend-services'; import { mockInstance, createTeamProject } from '@n8n/backend-test-utils'; import { GLOBAL_MEMBER_ROLE, GLOBAL_OWNER_ROLE, type User } from '@n8n/db'; import { Container } from '@n8n/di'; import { hasGlobalScope } from '@n8n/permissions'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { SourceControlPreferencesService } from '@/modules/source-control.ee/source-control-preferences.service.ee'; import { SourceControlService } from '@/modules/source-control.ee/source-control.service.ee'; import { Telemetry } from '@/telemetry'; diff --git a/packages/cli/test/integration/environments/source-control.service.test.ts b/packages/cli/test/integration/environments/source-control.service.test.ts index e5706e10e5f..06879c4a6da 100644 --- a/packages/cli/test/integration/environments/source-control.service.test.ts +++ b/packages/cli/test/integration/environments/source-control.service.test.ts @@ -1,4 +1,5 @@ import type { SourceControlledFile } from '@n8n/api-types'; +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import { createTeamProject, createWorkflow, testDb, testModules } from '@n8n/backend-test-utils'; import { CredentialsEntity, @@ -20,8 +21,6 @@ import { basename, isAbsolute } from 'node:path'; import type { Mock } from 'vitest'; import { mock } from 'vitest-mock-extended'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { EventService } from '@/events/event.service'; import { DataTable } from '@/modules/data-table/data-table.entity'; import { diff --git a/packages/cli/test/integration/mfa/mfa.api.test.ts b/packages/cli/test/integration/mfa/mfa.api.test.ts index 1fdcf0b5197..16c587fadd5 100644 --- a/packages/cli/test/integration/mfa/mfa.api.test.ts +++ b/packages/cli/test/integration/mfa/mfa.api.test.ts @@ -1,3 +1,4 @@ +import { BadRequestError } from '@n8n/backend-services'; import { randomValidPassword, uniqueId, testDb, mockInstance } from '@n8n/backend-test-utils'; import { InstanceSettingsLoaderConfig } from '@n8n/config'; import { LICENSE_FEATURES } from '@n8n/constants'; @@ -7,7 +8,6 @@ import { randomString } from 'n8n-workflow'; import { AuthService } from '@/auth/auth.service'; import config from '@/config'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { ExternalHooks } from '@/external-hooks'; import { MFA_ENFORCE_SETTING } from '@/mfa/constants'; import { MFA_CACHE_KEY } from '@/mfa/mfa.service'; diff --git a/packages/cli/test/integration/middlewares/body-parser.test.ts b/packages/cli/test/integration/middlewares/body-parser.test.ts index de3bcdb80e5..9cafd74dfdc 100644 --- a/packages/cli/test/integration/middlewares/body-parser.test.ts +++ b/packages/cli/test/integration/middlewares/body-parser.test.ts @@ -1,11 +1,10 @@ /* eslint-disable n8n-local-rules/no-uncaught-json-parse */ +import { BadRequestError, UnprocessableRequestError } from '@n8n/backend-services'; import type { Request, Response } from 'express'; import { createServer } from 'http'; import request from 'supertest'; import { gzipSync, deflateSync } from 'zlib'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { UnprocessableRequestError } from '@/errors/response-errors/unprocessable.error'; import { rawBodyReader, bodyParser, parseBody } from '@/middlewares/body-parser'; describe('bodyParser', () => { diff --git a/packages/cli/test/integration/oidc/oidc.service.ee.test.ts b/packages/cli/test/integration/oidc/oidc.service.ee.test.ts index 68618045f0e..a200a83f3d8 100644 --- a/packages/cli/test/integration/oidc/oidc.service.ee.test.ts +++ b/packages/cli/test/integration/oidc/oidc.service.ee.test.ts @@ -1,3 +1,4 @@ +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; const discoveryMock = vi.fn(); const authorizationCodeGrantMock = vi.fn(); const fetchUserInfoMock = vi.fn(); @@ -23,8 +24,6 @@ beforeAll(async () => { real_odic_client = await vi.importActual('openid-client'); }); -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { License } from '@/license'; import { ProvisioningService } from '@/modules/provisioning.ee/provisioning.service.ee'; import { OIDC_CLIENT_SECRET_REDACTED_VALUE } from '@/modules/sso-oidc/constants'; diff --git a/packages/cli/test/integration/public-api/executions.test.ts b/packages/cli/test/integration/public-api/executions.test.ts index 41dbb7046c6..c60e2715ca1 100644 --- a/packages/cli/test/integration/public-api/executions.test.ts +++ b/packages/cli/test/integration/public-api/executions.test.ts @@ -1,3 +1,4 @@ +import { ConflictError } from '@n8n/backend-services'; import { createManyWorkflows, createTeamProject, @@ -17,7 +18,6 @@ import { ActiveExecutions } from '@/active-executions'; import type { ActiveWorkflowManager } from '@/active-workflow-manager'; import { AbortedExecutionRetryError } from '@/errors/aborted-execution-retry.error'; import { QueuedExecutionRetryError } from '@/errors/queued-execution-retry.error'; -import { ConflictError } from '@/errors/response-errors/conflict.error'; import { ExecutionService } from '@/executions/execution.service'; import { CommunityPackagesService } from '@/modules/community-packages/community-packages.service'; import { Telemetry } from '@/telemetry'; diff --git a/packages/cli/test/integration/public-api/promotions.test.ts b/packages/cli/test/integration/public-api/promotions.test.ts index 1c0442e5027..2add3ec3a51 100644 --- a/packages/cli/test/integration/public-api/promotions.test.ts +++ b/packages/cli/test/integration/public-api/promotions.test.ts @@ -1,12 +1,12 @@ import { ApplyPackageResultDto, type ContinueApplyPackageDto } from '@n8n/api-types'; import { ModuleRegistry } from '@n8n/backend-common'; +import { BadRequestError } from '@n8n/backend-services'; import { createTeamProject, getPersonalProject, testDb } from '@n8n/backend-test-utils'; import type { User } from '@n8n/db'; import { GLOBAL_MEMBER_ROLE, ProjectRepository, UserRepository } from '@n8n/db'; import { Container } from '@n8n/di'; import { createDeferredPromise } from '@n8n/utils/promise/deferred-promise'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; import { PromotionConfigRepository } from '@/modules/promotions.ee/database/repositories/promotion-config.repository'; import { PromotionConnectionProjectRepository } from '@/modules/promotions.ee/database/repositories/promotion-connection-project.repository'; import { PromotionConnectionRepository } from '@/modules/promotions.ee/database/repositories/promotion-connection.repository'; diff --git a/packages/cli/test/integration/public-api/source-control.test.ts b/packages/cli/test/integration/public-api/source-control.test.ts index 61cf9828f21..52648998eac 100644 --- a/packages/cli/test/integration/public-api/source-control.test.ts +++ b/packages/cli/test/integration/public-api/source-control.test.ts @@ -1,10 +1,9 @@ import type { SourceControlledFile } from '@n8n/api-types'; +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; import { mockInstance } from '@n8n/backend-test-utils'; import type { User } from '@n8n/db'; import { Container } from '@n8n/di'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { EventService } from '@/events/event.service'; import { SourceControlPreferencesService } from '@/modules/source-control.ee/source-control-preferences.service.ee'; import { SourceControlService } from '@/modules/source-control.ee/source-control.service.ee'; diff --git a/packages/cli/test/integration/saml/saml.api.test.ts b/packages/cli/test/integration/saml/saml.api.test.ts index 3e3f4155c32..f555a04b843 100644 --- a/packages/cli/test/integration/saml/saml.api.test.ts +++ b/packages/cli/test/integration/saml/saml.api.test.ts @@ -1,3 +1,4 @@ +import { BadRequestError, ForbiddenError } from '@n8n/backend-services'; // Global mocks in test/setup-mocks.ts replace `node:fs` with vi auto-mocks, // which breaks express view lookup in the SAML connection-test round-trip. // Restore the real fs so the ACS handler can render its handlebars template. @@ -26,8 +27,6 @@ import type express from 'express'; import { CREDENTIAL_BLANKING_VALUE } from 'n8n-workflow'; import { TEMPLATES_DIR } from '@/constants'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { ForbiddenError } from '@/errors/response-errors/forbidden.error'; import { ProvisioningService } from '@/modules/provisioning.ee/provisioning.service.ee'; import { EC_TEST_CERTIFICATE, diff --git a/packages/cli/test/integration/services/role.service.test.ts b/packages/cli/test/integration/services/role.service.test.ts index 876e9139e57..aa37f9cc7d7 100644 --- a/packages/cli/test/integration/services/role.service.test.ts +++ b/packages/cli/test/integration/services/role.service.test.ts @@ -1,5 +1,6 @@ import type { CreateRoleDto, UpdateRoleDto } from '@n8n/api-types'; import { LicenseState } from '@n8n/backend-common'; +import { BadRequestError, NotFoundError } from '@n8n/backend-services'; import { testDb } from '@n8n/backend-test-utils'; import { ProjectRepository } from '@n8n/db'; import { RoleMappingRuleRepository, RoleRepository, UserRepository } from '@n8n/db'; @@ -10,8 +11,6 @@ import { MANDATORY_INSTANCE_SCOPES, } from '@n8n/permissions'; -import { BadRequestError } from '@/errors/response-errors/bad-request.error'; -import { NotFoundError } from '@/errors/response-errors/not-found.error'; import { License } from '@/license'; import { ProvisioningRoleDeletionChecker } from '@/modules/provisioning.ee/role-deletion-checker.ee'; import { ProjectService } from '@/services/project.service.ee'; diff --git a/packages/cli/test/integration/workflows/workflow.service.test.ts b/packages/cli/test/integration/workflows/workflow.service.test.ts index 119e5653a41..d25de250149 100644 --- a/packages/cli/test/integration/workflows/workflow.service.test.ts +++ b/packages/cli/test/integration/workflows/workflow.service.test.ts @@ -1,4 +1,5 @@ import type { Logger } from '@n8n/backend-common'; +import { WorkflowPublishBlockedError } from '@n8n/backend-services'; import { createWorkflowWithHistory, testDb, @@ -36,7 +37,6 @@ import { RoleService } from '@/services/role.service'; import { Telemetry } from '@/telemetry'; import { WebhookService } from '@/webhooks/webhook.service'; import { WorkflowHookContextService } from '@/workflow-hook-context.service'; -import { WorkflowPublishBlockedError } from '@/errors/response-errors/workflow-publish-blocked.error'; import type { WorkflowPublicationNotifier } from '@/workflows/publication/workflow-publication-notifier'; import { WorkflowFinderService } from '@/workflows/workflow-finder.service'; import { NodeGroupRulesFlagGate } from '@/workflows/node-group-rules-flag-gate'; diff --git a/packages/cli/tsconfig.json b/packages/cli/tsconfig.json index e662c44fb55..8b298c96d45 100644 --- a/packages/cli/tsconfig.json +++ b/packages/cli/tsconfig.json @@ -43,6 +43,7 @@ { "path": "../@n8n/di/tsconfig.build.json" }, { "path": "../@n8n/nodes-langchain/tsconfig.build.json" }, { "path": "../@n8n/permissions/tsconfig.build.json" }, - { "path": "../@n8n/scheduler/tsconfig.build.json" } + { "path": "../@n8n/scheduler/tsconfig.build.json" }, + { "path": "../@n8n/backend-services/tsconfig.build.json" } ] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 07078ecb675..baa873047cc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1773,6 +1773,13 @@ importers: version: 3.1.0(typescript@7.0.2)(vitest@5.0.1) packages/@n8n/backend-services: + dependencies: + '@n8n/api-types': + specifier: workspace:* + version: link:../api-types + n8n-workflow: + specifier: workspace:* + version: link:../../workflow devDependencies: '@n8n/eslint-config': specifier: workspace:* @@ -4463,6 +4470,9 @@ importers: '@n8n/backend-network': specifier: workspace:* version: link:../@n8n/backend-network + '@n8n/backend-services': + specifier: workspace:* + version: link:../@n8n/backend-services '@n8n/blob-storage': specifier: workspace:* version: link:../@n8n/blob-storage