import { isRedirect, useRouter } from '@tanstack/react-router' export function useServerFn) => Promise>( serverFn: T, ): (...args: Parameters) => ReturnType { const router = useRouter() return (async (...args: Array) => { try { const res = await serverFn(...args) if (isRedirect(res)) { throw res } return res } catch (err) { if (isRedirect(err)) { const resolvedRedirect = router.resolveRedirect({ ...err, _fromLocation: router.state.location, }) return router.navigate(resolvedRedirect) } throw err } }) as any }