Files
suaveplan/packages/media/image/emblem-solver/src/errors/errors.ts
2026-05-27 23:47:53 +01:00

40 lines
1.2 KiB
TypeScript

import {
defineCodes,
SuaveplanError,
type SuaveplanErrorOptions,
} from "@suaveplan/error";
/**
* Stable error code registry for `@suaveplan/emblem-solver`.
*
* Codes are namespaced under `EMBLEM_SOLVER.*` so structured error logs and
* OTel span events can be filtered by the package they originated in.
*/
export const EMBLEM_SOLVER_CODES = defineCodes("EMBLEM_SOLVER", [
"INVALID_GRID",
"INVALID_OPTIONS",
"INVALID_PIXEL",
] as const);
export type EmblemSolverCode =
(typeof EMBLEM_SOLVER_CODES)[keyof typeof EMBLEM_SOLVER_CODES];
/**
* Typed error for all `@suaveplan/emblem-solver` failures.
*
* Extends `SuaveplanError` with a stable code drawn from
* `EMBLEM_SOLVER_CODES`. Callers can discriminate on `error.code` to
* handle specific failure modes (e.g. retry on `INVALID_PIXEL`, surface
* `INVALID_OPTIONS` directly to the user).
*/
export class EmblemSolverError extends SuaveplanError<EmblemSolverCode> {
public constructor(
code: EmblemSolverCode,
messageKey: string,
options?: SuaveplanErrorOptions
) {
super(code, messageKey, options);
this.name = "EmblemSolverError";
}
}