n8n/packages/workflow/src/errors/expression.error.ts
कारतोफ्फेलस्क्रिप्ट™ f1ecd9b68c
fix(core): Stop reporting ExpressionError to Sentry (no-changelog) (#11943)
2024-11-28 14:49:21 +01:00

64 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];
}
});
}
}
}