mirror of
https://github.com/n8n-io/n8n
synced 2026-04-21 15:47:20 +00:00
63 lines
1.5 KiB
TypeScript
63 lines
1.5 KiB
TypeScript
import { ExecutionBaseError } from './abstract/execution-base.error';
|
|
import type { IDataObject } from '../interfaces';
|
|
|
|
export interface ExpressionErrorOptions {
|
|
cause?: Error;
|
|
causeDetailed?: string;
|
|
description?: string;
|
|
descriptionKey?: string;
|
|
descriptionTemplate?: string;
|
|
functionality?: 'pairedItem';
|
|
itemIndex?: number;
|
|
messageTemplate?: string;
|
|
nodeCause?: string;
|
|
parameter?: string;
|
|
runIndex?: number;
|
|
type?:
|
|
| 'no_execution_data'
|
|
| 'no_node_execution_data'
|
|
| 'no_input_connection'
|
|
| 'internal'
|
|
| 'paired_item_invalid_info'
|
|
| 'paired_item_no_info'
|
|
| 'paired_item_multiple_matches'
|
|
| 'paired_item_no_connection'
|
|
| 'paired_item_intermediate_nodes';
|
|
}
|
|
|
|
/**
|
|
* Class for instantiating an expression error
|
|
*/
|
|
export class ExpressionError extends ExecutionBaseError {
|
|
constructor(message: string, options?: ExpressionErrorOptions) {
|
|
super(message, { cause: options?.cause, level: 'warning' });
|
|
|
|
if (options?.description !== undefined) {
|
|
this.description = options.description;
|
|
}
|
|
|
|
const allowedKeys = [
|
|
'causeDetailed',
|
|
'descriptionTemplate',
|
|
'descriptionKey',
|
|
'itemIndex',
|
|
'messageTemplate',
|
|
'nodeCause',
|
|
'parameter',
|
|
'runIndex',
|
|
'type',
|
|
];
|
|
|
|
if (options !== undefined) {
|
|
if (options.functionality !== undefined) {
|
|
this.functionality = options.functionality;
|
|
}
|
|
|
|
Object.keys(options as IDataObject).forEach((key) => {
|
|
if (allowedKeys.includes(key)) {
|
|
this.context[key] = (options as IDataObject)[key];
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}
|