mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-16 17:46:45 +00:00
refactor(core): Move ApplicationError to @n8n/errors (#17667)
This commit is contained in:
@@ -21,6 +21,10 @@
|
||||
"dist/**/*"
|
||||
],
|
||||
"devDependencies": {
|
||||
"@n8n/typescript-config": "workspace:*"
|
||||
"@n8n/typescript-config": "workspace:*",
|
||||
"@sentry/node": "catalog:"
|
||||
},
|
||||
"dependencies": {
|
||||
"callsites": "catalog:"
|
||||
}
|
||||
}
|
||||
|
||||
36
packages/@n8n/errors/src/application.error.ts
Normal file
36
packages/@n8n/errors/src/application.error.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
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 {}
|
||||
}
|
||||
}
|
||||
@@ -1 +1,2 @@
|
||||
export {};
|
||||
export { ApplicationError } from './application.error';
|
||||
export * from './types';
|
||||
|
||||
16
packages/@n8n/errors/src/types.ts
Normal file
16
packages/@n8n/errors/src/types.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import type { Event } from '@sentry/node';
|
||||
|
||||
export type ErrorLevel = 'fatal' | 'error' | 'warning' | 'info';
|
||||
|
||||
export type ErrorTags = NonNullable<Event['tags']>;
|
||||
|
||||
export type ReportingOptions = {
|
||||
/** Whether the error should be reported to Sentry */
|
||||
shouldReport?: boolean;
|
||||
/** Whether the error log should be logged (default to true) */
|
||||
shouldBeLogged?: boolean;
|
||||
level?: ErrorLevel;
|
||||
tags?: ErrorTags;
|
||||
extra?: Event['extra'];
|
||||
executionId?: string;
|
||||
};
|
||||
Reference in New Issue
Block a user