{"version":3,"file":"useServerFn.js","sources":["../../src/useServerFn.ts"],"sourcesContent":["import * as React from 'react'\nimport { isRedirect, useRouter } from '@tanstack/react-router'\n\nexport function useServerFn<T extends (...deps: Array<any>) => Promise<any>>(\n  serverFn: T,\n): (...args: Parameters<T>) => ReturnType<T> {\n  const router = useRouter()\n\n  return React.useCallback(\n    async (...args: Array<any>) => {\n      try {\n        const res = await serverFn(...args)\n\n        if (isRedirect(res)) {\n          throw res\n        }\n\n        return res\n      } catch (err) {\n        if (isRedirect(err)) {\n          err.options._fromLocation = router.state.location\n          return router.navigate(router.resolveRedirect(err).options)\n        }\n\n        throw err\n      }\n    },\n    [router, serverFn],\n  ) as any\n}\n"],"names":[],"mappings":";;AAGO,SAAS,YACd,UAC2C;AAC3C,QAAM,SAAS,UAAA;AAEf,SAAO,MAAM;AAAA,IACX,UAAU,SAAqB;AAC7B,UAAI;AACF,cAAM,MAAM,MAAM,SAAS,GAAG,IAAI;AAElC,YAAI,WAAW,GAAG,GAAG;AACnB,gBAAM;AAAA,QACR;AAEA,eAAO;AAAA,MACT,SAAS,KAAK;AACZ,YAAI,WAAW,GAAG,GAAG;AACnB,cAAI,QAAQ,gBAAgB,OAAO,MAAM;AACzC,iBAAO,OAAO,SAAS,OAAO,gBAAgB,GAAG,EAAE,OAAO;AAAA,QAC5D;AAEA,cAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,CAAC,QAAQ,QAAQ;AAAA,EAAA;AAErB;"}