Files
n8n_Demo/n8n-n8n-1.109.2/packages/@n8n/errors/src/application.error.ts
2025-09-08 04:48:28 +08:00

37 lines
904 B
TypeScript
Executable File

import type { Event } from '@sentry/node';
import callsites from 'callsites';
import type { ErrorLevel, ReportingOptions } from './types';
/**
* @deprecated Use `UserError`, `OperationalError` or `UnexpectedError` instead.
*/
export class ApplicationError extends Error {
level: ErrorLevel;
readonly tags: NonNullable<Event['tags']>;
readonly extra?: Event['extra'];
readonly packageName?: string;
constructor(
message: string,
{ level, tags = {}, extra, ...rest }: ErrorOptions & ReportingOptions = {},
) {
super(message, rest);
this.level = level ?? 'error';
this.tags = tags;
this.extra = extra;
try {
const filePath = callsites()[2].getFileName() ?? '';
// eslint-disable-next-line no-useless-escape
const match = /packages\/([^\/]+)\//.exec(filePath)?.[1];
if (match) this.tags.packageName = match;
// eslint-disable-next-line no-empty
} catch {}
}
}