diff --git a/packages/payload/src/utilities/formatErrors.ts b/packages/payload/src/utilities/formatErrors.ts index 9d26ee9c8c7..4f8365e1e81 100644 --- a/packages/payload/src/utilities/formatErrors.ts +++ b/packages/payload/src/utilities/formatErrors.ts @@ -1,33 +1,30 @@ import type { ErrorResult } from '../config/types.js' -import type { APIError } from '../errors/APIError.js' -import { APIErrorName } from '../errors/APIError.js' -import { ValidationErrorName } from '../errors/ValidationError.js' +import { APIError } from '../errors/APIError.js' +import { ValidationError } from '../errors/ValidationError.js' export const formatErrors = (incoming: { [key: string]: unknown } | APIError): ErrorResult => { if (incoming) { - // Cannot use `instanceof` to check error type: https://github.com/microsoft/TypeScript/issues/13965 - // Instead, get the prototype of the incoming error and check its constructor name - const proto = Object.getPrototypeOf(incoming) - // Payload 'ValidationError' and 'APIError' - if ( - (proto.constructor.name === ValidationErrorName || proto.constructor.name === APIErrorName) && - incoming.data - ) { + if ((incoming instanceof ValidationError || incoming instanceof APIError) && incoming.data) { return { errors: [ { - name: incoming.name as string, + name: incoming.name, data: incoming.data as Record, - message: incoming.message as string, + message: incoming.message, }, ], } } // Mongoose 'ValidationError': https://mongoosejs.com/docs/api/error.html#Error.ValidationError - if (proto.constructor.name === ValidationErrorName && 'errors' in incoming && incoming.errors) { + if ( + 'name' in incoming && + incoming.name === 'ValidationError' && + 'errors' in incoming && + incoming.errors + ) { return { errors: Object.keys(incoming.errors).reduce( (acc, key) => {