import { createRouter as createTanstackRouter } from "@tanstack/react-router";
import { QueryClient } from "@tanstack/react-query";
import { setupRouterSsrQueryIntegration } from "@tanstack/react-router-ssr-query";
// Import the generated route tree
import { routeTree } from "./routeTree.gen.ts";
import { articleSlugs } from "./articles/schemas.tsx";
import { getArticleQueryOptions } from "./articles/querys.ts";
function DefaultErrorComponent() {
return (
Error
Something went wrong. Try refreshing the page.
);
}
function DefaultPendingComponent() {
return (
);
}
function DefaultNotFoundComponent() {
return (
404 — Not Found
The page you are looking for does not exist.
);
}
export function getRouter() {
const queryClient = new QueryClient();
const router = createTanstackRouter({
routeTree,
scrollRestoration: true,
defaultPreload: false,
defaultStructuralSharing: true,
defaultPreloadStaleTime: 0,
defaultPendingMs: 0,
defaultErrorComponent: DefaultErrorComponent,
defaultPendingComponent: DefaultPendingComponent,
defaultNotFoundComponent: DefaultNotFoundComponent,
context: {
queryClient,
},
});
setupRouterSsrQueryIntegration({
router,
queryClient,
});
void Promise.all(
articleSlugs.map((slug) => queryClient.prefetchQuery(getArticleQueryOptions({ slug }))),
);
return router;
}
// Register the router instance for type safety
declare module "@tanstack/react-router" {
interface Register {
router: ReturnType;
}
interface StaticDataRouteOption {
routeTitle?: string;
routeSubtitle?: string;
}
}