import { QueryClient } from '@tanstack/react-query' import { createRouter as createTanStackRouter } from '@tanstack/react-router' import { routerWithQueryClient } from '@tanstack/react-router-with-query' import { routeTree } from './routeTree.gen' import { DefaultCatchBoundary } from '../components/DefaultCatchBoundary' import { defaultHeaderConfig } from '@/features/core/hooks/use-header-config' export function createRouter() { const queryClient = new QueryClient({ defaultOptions: { queries: { staleTime: 60 * 1000, // 60 seconds gcTime: 5 * 60 * 1000, // 5 minutes refetchOnWindowFocus: false, refetchOnReconnect: 'always', retry: 3, }, }, }) return routerWithQueryClient( createTanStackRouter({ routeTree, context: { queryClient, auth: undefined!, header: defaultHeaderConfig, refresh: { toRefresh: [] } }, defaultPreload: 'intent', defaultErrorComponent: DefaultCatchBoundary, scrollRestoration: true, defaultViewTransition: true }), queryClient, ) } declare module '@tanstack/react-router' { interface Register { router: ReturnType } }