import { z } from "zod"; import superjson from "superjson"; export const schema = z.object({ code: z.string().min(1), state: z.string().min(1), }); export type InputType = z.infer; export type OutputType = { connected: true; desktop?: boolean; profile: { id: string; displayName: string; email?: string; imageUrl?: string; product?: string; }; }; export async function postSpotifyExchange(body: InputType): Promise { const validated = schema.parse(body); const result = await fetch("/_api/spotify-exchange", { method: "POST", headers: { "Content-Type": "application/json" }, body: superjson.stringify(validated), }); if (!result.ok) { const parsed = superjson.parse<{ error: string }>(await result.text()); throw new Error(parsed.error); } return superjson.parse(await result.text()); }