itd-api / ItdApiError
Class: ItdApiError
Defined in: core/errors.ts:130
Ошибка, возвращённая сервером итд.com (HTTP-статус ≥ 400).
API отдаёт ошибки в двух разных формах — { error: { … } } и { code, message, violations }. Библиотека сводит обе к этому классу, поэтому разбирать форму ответа вручную не нужно.
Example
try {
await itd.users.updateMe({ username: 'занятое_имя' });
} catch (e) {
if (e instanceof ItdValidationError) {
console.log(e.fieldErrors.username); // ['Имя уже занято']
}
}Extends
Extended by
ItdAuthErrorItdConflictErrorItdForbiddenErrorItdNotFoundErrorItdPhoneVerificationErrorItdRateLimitErrorItdServerErrorItdValidationError
Constructors
Constructor
new ItdApiError(init, apiKind?): ItdApiError;Defined in: core/errors.ts:172
Parameters
init
apiKind?
ItdApiErrorKind = ItdApiErrorKind.Generic
разновидность; подставляется подклассами, снаружи задавать не нужно
Returns
ItdApiError
Overrides
Properties
apiKind
readonly apiKind: ItdApiErrorKind;Defined in: core/errors.ts:137
Разновидность ошибки: та же информация, что и класс, но пригодная для сравнения.
Позволяет разбирать ошибку через switch, а проверкам вроде isItdAuthError — работать даже когда в проекте оказались две копии библиотеки.
code
readonly code: ItdErrorCode;Defined in: core/errors.ts:141
Строковый код ошибки, например VALIDATION_ERROR.
detail
readonly detail: string | undefined;Defined in: core/errors.ts:143
Расширенное описание, если сервер его прислал.
fieldErrors
readonly fieldErrors: ItdFieldErrors;Defined in: core/errors.ts:147
Ошибки по полям. Пустой объект, если сервер их не прислал.
kind
readonly kind: ItdErrorKind;Defined in: core/errors.ts:72
Категория ошибки.
Inherited from
method
readonly method: string;Defined in: core/errors.ts:151
HTTP-метод запроса.
path
readonly path: string;Defined in: core/errors.ts:153
Путь запроса без базового URL.
rateLimit
readonly rateLimit: number | undefined;Defined in: core/errors.ts:165
Сколько запросов разрешено в окне — заголовок x-ratelimit-limit.
Времени сброса окна сервер не сообщает, поэтому точный момент повтора неизвестен.
rateLimitRemaining
readonly rateLimitRemaining: number | undefined;Defined in: core/errors.ts:167
Сколько запросов осталось в окне — заголовок x-ratelimit-remaining.
raw
readonly raw: unknown;Defined in: core/errors.ts:155
Тело ответа как оно пришло.
requestId
readonly requestId: string | undefined;Defined in: core/errors.ts:149
Идентификатор запроса из заголовков ответа.
response
readonly response: Response | undefined;Defined in: core/errors.ts:157
Объект ответа. Тело уже прочитано и повторно прочитано быть не может.
retryAfter
readonly retryAfter: number | undefined;Defined in: core/errors.ts:159
Пауза из заголовка Retry-After в миллисекундах. Сервер итд.com его не присылает.
status
readonly status: number;Defined in: core/errors.ts:139
HTTP-статус ответа.
title
readonly title: string | undefined;Defined in: core/errors.ts:145
Заголовок ошибки, если сервер его прислал.
Accessors
isRetryable
Get Signature
get isRetryable(): boolean;Defined in: core/errors.ts:204
Имеет ли смысл повторить запрос: 429 и серверные ошибки 5xx.
Returns
boolean
Methods
hasCode()
hasCode(...codes): boolean;Defined in: core/errors.ts:199
Проверяет код ошибки. Удобнее, чем сравнивать строки вручную.
Parameters
codes
...ItdErrorCode[]
Returns
boolean
Example
if (err.hasCode('OTP_INVALID', 'MISSING_FLOW_TOKEN')) await restartOtpFlow();