27 lines
695 B
TypeScript
27 lines
695 B
TypeScript
import {ValidationMessage} from './ValidationMessage'
|
|
|
|
export class ValidationError extends Error {
|
|
readonly name: string
|
|
constructor(
|
|
readonly errors: ValidationMessage[],
|
|
message?: string,
|
|
readonly status: number = 400,
|
|
) {
|
|
super(
|
|
message
|
|
? message
|
|
: 'Validation failed on properties: ' +
|
|
errors.map(e => e.property).join(', '))
|
|
this.name = 'ValidationError'
|
|
Error.captureStackTrace(this)
|
|
}
|
|
|
|
static isInstanceOf(err: unknown): err is ValidationError {
|
|
const err2 = err as ValidationError
|
|
return err2
|
|
&& typeof err2.status === 'number'
|
|
&& typeof err2.message === 'string'
|
|
&& Array.isArray(err2.errors)
|
|
}
|
|
}
|