UNPKG

@fab33/fab-errors

Version:

Modern error handling library with typed contexts, Error.cause chains, and ErrorSpecs

63 lines 4.49 kB
/** * @file src/chain-utils.ts * @description Утилиты для работы с цепочками ошибок (Error.cause). * @version 1.0.8 * @date 2025-05-30 * @updated Добавлена пустая строка в конце файла (eol-last). * * HISTORY: * v1.0.8 (2025-05-30): Исправлено правило eol-last. * v1.0.7 (2025-05-30): Изменен ErrorCriteria.type на `new (...args: any[]) => Error`. Добавлено явное присвоение confirmedError: Error. * v1.0.6 (2025-05-30): Исправления ESLint (no-unused-vars, no-explicit-any, space-before-function-paren), eol-last. (Версия из XML) * v1.0.5 (2025-05-30): Использовано явное утверждение типа `as Error` для `currentErrorForLevel` в `checkErrorChain`. * v1.0.4 (2025-05-30): Убрана вложенная проверка `currentErrorForLevel instanceof Error` в блоке проверки типа. * v1.0.3 (2025-05-29): Добавлена явная проверка `instanceof Error` для currentErrorForLevel в блоке проверки типа. * v1.0.2 (2025-05-29): Реструктуризация проверки типа в checkErrorChain для исправления TS2339. * v1.0.1 (2025-05-29): Исправлена ошибка типов TS2339 в checkErrorChain (первая попытка). * v1.0.0 (2025-05-29): Начальная реализация hasErrorInChain и checkErrorChain. */ /** * Критерии для поиска ошибки в цепочке с помощью `hasErrorInChain`. */ export interface ErrorCriteria { /** Ожидаемый код ошибки (свойство `code` у `FabError` или аналогичных). */ code?: string; /** * Ожидаемый тип/класс ошибки (сравнение через `instanceof`). * Использование 'any' для аргументов конструктора здесь для совместимости * с различными сигнатурами конструкторов ошибок. */ type?: new (...args: any[]) => Error; /** * Ожидаемый фрагмент(ы) для поиска в сообщении ошибки (`error.message`). * Поиск регистронезависимый. Если массив, то все строки из массива должны присутствовать. */ message?: string | string[]; } /** * Описание ожидаемого уровня в цепочке ошибок для функции `checkErrorChain`. */ export interface ExpectedChainLevel extends ErrorCriteria { } /** * Проверяет, присутствует ли в цепочке ошибок (начиная с `error` и далее по `error.cause`) * ошибка, соответствующая указанным критериям. * * @param error Начальная ошибка для проверки. * @param criteria Объект с критериями поиска (`code`, `type`, `message`). * @returns `true`, если ошибка, соответствующая критериям, найдена в цепочке, иначе `false`. * @deterministic Да, для той же ошибки и критериев. */ export declare function hasErrorInChain(error: Error | undefined | null, criteria: ErrorCriteria): boolean; /** * Проверяет, соответствует ли цепочка ошибок (начиная с `error` и далее по `error.cause`) * ожидаемой структуре, описанной в `expectedChain`. * * @param error Начальная ошибка для проверки. * @param expectedChain Массив объектов `ExpectedChainLevel`, описывающих каждый ожидаемый уровень цепочки. * @returns `true`, если цепочка полностью соответствует ожиданиям. * @throws `Error` если цепочка не соответствует ожиданиям (сообщение содержит детали несоответствия). * @deterministic Да, для той же ошибки и ожидаемой цепочки. */ export declare function checkErrorChain(error: Error | undefined | null, expectedChain: ExpectedChainLevel[]): boolean; //# sourceMappingURL=chain-utils.d.ts.map