manifold/web/pages/api/v0/_validate.ts

18 lines
452 B
TypeScript
Raw Permalink Normal View History

import { z } from 'zod'
import { ValidationError } from './_types'
export const validate = <T extends z.ZodTypeAny>(schema: T, val: unknown) => {
const result = schema.safeParse(val)
if (!result.success) {
const issues = result.error.issues.map((i) => {
return {
field: i.path.join('.') || null,
error: i.message,
}
})
throw new ValidationError(issues)
} else {
return result.data as z.infer<T>
}
}