Files
suaveplan/packages/communication/emails/email-processing/src/error-codes/error-codes.ts
2026-05-27 23:29:53 +01:00

40 lines
1.3 KiB
TypeScript

import type { SuaveplanErrorOptions } from "@suaveplan/error";
import { defineCodes, SuaveplanError } from "@suaveplan/error";
/**
* Stable error-code registry for `@suaveplan/email-processing`.
*
* Every code is thrown by at least one production code path under
* `src/`. Removing an entry without removing its call site is forbidden
* by §2c of `openspec/AGENTS.md`.
*/
export const EMAIL_PROCESSING_CODES = defineCodes("EMAIL_PROCESSING", [
"INVALID_INPUT",
"PARSE_FAILURE",
"INVALID_OPTIONS",
"DKIM_VERIFY_FAILURE",
"HOOK_FAILURE",
] as const);
export type EmailProcessingCode =
(typeof EMAIL_PROCESSING_CODES)[keyof typeof EMAIL_PROCESSING_CODES];
/**
* Typed error class for every failure raised by this package.
*
* Extends `SuaveplanError` with a discriminant `code` drawn from
* `EMAIL_PROCESSING_CODES`. The constructor is `public` so callers
* outside the package can construct instances; `SuaveplanError`'s
* constructor is `protected` and would otherwise be inaccessible.
*/
export class EmailProcessingError extends SuaveplanError<EmailProcessingCode> {
public constructor(
code: EmailProcessingCode,
messageKey: string,
options?: SuaveplanErrorOptions
) {
super(code, messageKey, options);
this.name = "EmailProcessingError";
}
}