import { createRouter as createTanStackRouter } from '@tanstack/react-router' import { QueryClient } from '@tanstack/react-query' import { routeTree } from './routeTree.gen' import { ApiError } from './api/fetcher' export function getRouter() { const queryClient = new QueryClient({ defaultOptions: { queries: { staleTime: 2_000, // Don't hammer the host on auth/validation errors; do retry transient 5xx once. retry: (failureCount, error) => { if (error instanceof ApiError && error.status >= 400 && error.status < 500) return false return failureCount < 1 }, }, }, }) return createTanStackRouter({ routeTree, context: { queryClient }, defaultPreload: 'intent', scrollRestoration: true, Wrap: ({ children }) => {children}, }) } // Local import kept below the function so the module reads top-down. import { QueryClientProvider } from '@tanstack/react-query' function QueryProvider({ client, children }: { client: QueryClient; children: React.ReactNode }) { return {children} } declare module '@tanstack/react-router' { interface Register { router: ReturnType } }