import { z } from "zod"; import superjson from "superjson"; export const schema = z.object({ title: z.string().min(1), artist: z.string().min(1), album: z.string().optional(), durationMs: z.number().nonnegative().optional(), }); export type InputType = z.infer; export type OutputType = { plain?: string; synced?: string; instrumental?: boolean; }; export async function postLyrics(body: InputType): Promise { const response = await fetch("/_api/lyrics", { method: "POST", headers: { "Content-Type": "application/json" }, body: superjson.stringify(schema.parse(body)), }); if (!response.ok) { const parsed = superjson.parse<{ error: string }>(await response.text()); throw new Error(parsed.error); } return superjson.parse(await response.text()); }