import { ArkErrors } from "arktype"; import { configure } from "arktype/config"; import type { H3Event } from "h3"; export const throwingArktype = configure({ onFail: (errors) => errors.throw(), actual: () => "", }); // be sure to specify both the runtime and static configs declare global { interface ArkEnv { onFail: typeof throwingArktype.onFail; } } export async function readDropValidatedBody( event: H3Event, validate: (data: object) => T, ): Promise { const _body = await readBody(event); try { return validate(_body); } catch (e) { if (e instanceof ArkErrors) { throw createError({ statusCode: 400, statusMessage: `Invalid request body: ${e.summary}`, }); } throw createError({ statusCode: 400, statusMessage: `Invalid request body: ${e}`, }); } }