mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 18:12:04 +00:00
60 lines
1.4 KiB
TypeScript
60 lines
1.4 KiB
TypeScript
import { ExecutionBaseError } from './abstract/execution-base.error';
|
|
import type { ApplicationError } from './application.error';
|
|
import type { INode } from '../Interfaces';
|
|
|
|
interface WorkflowActivationErrorOptions {
|
|
cause?: Error;
|
|
node?: INode;
|
|
level?: ApplicationError['level'];
|
|
workflowId?: string;
|
|
}
|
|
|
|
/**
|
|
* Class for instantiating an workflow activation error
|
|
*/
|
|
export class WorkflowActivationError extends ExecutionBaseError {
|
|
node: INode | undefined;
|
|
|
|
workflowId: string | undefined;
|
|
|
|
constructor(
|
|
message: string,
|
|
{ cause, node, level, workflowId }: WorkflowActivationErrorOptions = {},
|
|
) {
|
|
let error = cause as Error;
|
|
if (cause instanceof ExecutionBaseError) {
|
|
error = new Error(cause.message);
|
|
error.constructor = cause.constructor;
|
|
error.name = cause.name;
|
|
error.stack = cause.stack;
|
|
}
|
|
super(message, { cause: error });
|
|
this.node = node;
|
|
this.workflowId = workflowId;
|
|
this.message = message;
|
|
this.setLevel(level);
|
|
}
|
|
|
|
private setLevel(level?: ApplicationError['level']) {
|
|
if (level) {
|
|
this.level = level;
|
|
return;
|
|
}
|
|
|
|
if (
|
|
[
|
|
'etimedout', // Node.js
|
|
'econnrefused', // Node.js
|
|
'eauth', // OAuth
|
|
'temporary authentication failure', // IMAP server
|
|
'invalid credentials',
|
|
].some((str) => this.message.toLowerCase().includes(str))
|
|
) {
|
|
this.level = 'warning';
|
|
return;
|
|
}
|
|
|
|
this.level = 'error';
|
|
}
|
|
}
|