/** * * @group client */ import type { ZodError } from 'zod'; export type AnswerErrorType = 'UnknownError' | 'HeadersSchemaError' | 'HeadersInvalid' | 'IncomingPropertySchemaError' | 'OutgoingPropertySchemaError' | 'ParamsSchemaError' | 'ResultSchemaError'; /** * Это кусочек сообщения об ошибке. * Когда параметры не прошли валидацию или проверку схемой. * Сервер отправляет сообщение {@link FailMessage | FailMessage\}. * Сама ошибка попадает в поле result. */ export class AnswerError extends Error { public readonly message: string = 'Unknown error'; /** * В случае если это ошибка схемы или какой-то валидации здесь будут подробности {@link https://zod.dev/ERROR_HANDLING | в таком формате}. */ public readonly issues?: ZodError['issues']; constructor(public readonly type: AnswerErrorType = 'UnknownError', err: any = {}, msg?: string) { super(); const { issues, message, name } = err; if (issues) { this.issues = issues; } if (name) { this.name = name; } if (msg) { this.message = msg; } else if (message) { this.message = message; } } }