import type { Event } from '@sentry/node'; type Level = 'warning' | 'error' | 'fatal'; export type ReportingOptions = { level?: Level; } & Pick; export class ApplicationError extends Error { level: Level; readonly tags?: Event['tags']; readonly extra?: Event['extra']; constructor( message: string, { level, tags, extra, ...rest }: Partial & ReportingOptions = {}, ) { super(message, rest); this.level = level ?? 'error'; this.tags = tags; this.extra = extra; } }