export type Try = { ok: true; value: T } | { ok: false; error: unknown } export function runCatching(fn: () => T): Try { try { return { ok: true, value: fn() } } catch (error) { return { ok: false, error } } } export async function runCatchingAsync(fn: () => Promise): Promise> { try { return { ok: true, value: await fn() } } catch (error) { return { ok: false, error } } } export function formatErrorMessage(error: unknown): string { if (error instanceof Error) { return error.message } return String(error) }