mirror of
https://github.com/supabase/supabase.git
synced 2026-10-06 18:05:11 +03:00
GraphQL errors were occasionally returned as normal HTTP status code errors, switched to using only GraphQL-spec compliant errors for the /docs/api/graphql endpoint.
41 lines
761 B
TypeScript
41 lines
761 B
TypeScript
import { z, type ZodError } from 'zod'
|
|
|
|
export class ApiError extends Error {
|
|
constructor(message: string) {
|
|
super(message)
|
|
}
|
|
|
|
isPrivate() {
|
|
return true
|
|
}
|
|
|
|
statusCode() {
|
|
return 500
|
|
}
|
|
}
|
|
|
|
export class InvalidRequestError extends ApiError {
|
|
constructor(message: string, source?: unknown) {
|
|
super(`Invalid request: ${message}`)
|
|
}
|
|
|
|
isPrivate() {
|
|
return false
|
|
}
|
|
|
|
statusCode() {
|
|
return 400
|
|
}
|
|
}
|
|
|
|
export function convertZodToInvalidRequestError(
|
|
error: ZodError,
|
|
prelude?: string
|
|
): InvalidRequestError {
|
|
const issue = error.issues[0]
|
|
const pathStr = issue.path.join('.')
|
|
const message = `${prelude ? `${prelude}: ` : ''}${issue.message} at key "${pathStr}"`
|
|
|
|
return new InvalidRequestError(message, error)
|
|
}
|