import { type Ref, ref, watchEffect } from 'vue'; export { computedCatch }; function computedCatch(getter: () => T, { defaultValue }: { defaultValue: D; defaultErrorMessage?: string }): [Ref, Ref]; function computedCatch(getter: () => T, { defaultValue, defaultErrorMessage = 'Unknown error' }: { defaultValue?: D; defaultErrorMessage?: string } = {}) { const error = ref(); const value = ref(); watchEffect(() => { try { error.value = undefined; value.value = getter(); } catch (err) { error.value = err instanceof Error ? err.message : err?.toString() ?? defaultErrorMessage; value.value = defaultValue; } }); return [value, error] as const; }