import { ZodError } from "zod"; import { handleActionError as foundationHandle } from "@/lib/foundation/action"; export type ActionResult> = | { ok: true; data?: T } | { ok: false; error: string; fieldErrors?: Record }; export function actionOk>(data?: T): ActionResult { return { ok: true, data: data ?? ({} as T) }; } export function actionError(message: string): ActionResult { return { ok: false, error: message }; } export class ActionError extends Error { constructor(message: string) { super(message); this.name = "ActionError"; } } export function handleActionError(error: unknown): ActionResult { if (error instanceof ZodError) { return { ok: false, error: "Validation failed", fieldErrors: error.flatten().fieldErrors as Record, }; } if (error instanceof Error && error.name === "ActionError") { return { ok: false, error: error.message }; } return foundationHandle(error) as ActionResult; }