Files
supabase/apps/docs/app/api/utils.ts
T
Charis ca1cd24a07 fix (content api): return graphql-spec compliant error (#35202)
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.
2025-04-29 15:51:07 -04:00

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)
}