import type { QueryClient } from "@tanstack/react-query" import { createRouter } from "@tanstack/react-router" import { setupRouterSsrQueryIntegration } from "@tanstack/react-router-ssr-query" import { createGraphQLClient, createGraphQLReadClient, createQueryContext, } from "@wp-reactor/headless-core" import type { GraphQLClient } from "graphql-request" import { cacheTimings, isSsr, runtimeEnv } from "./env" import { type AppPlatform, createAppPlatform } from "./platform" import { routeTree } from "./routeTree.gen" export interface RouterContext { locale: "fr" | "en" | "de" graphqlClient: GraphQLClient graphqlReadClient: GraphQLClient platform: AppPlatform queryClient: QueryClient } export const getRouter = () => { const graphqlClient = createGraphQLClient(runtimeEnv) const graphqlReadClient = createGraphQLReadClient(runtimeEnv) const { queryClient } = createQueryContext() const locale = "fr" const platform = createAppPlatform({ readClient: graphqlReadClient, locale, ssr: isSsr, timings: cacheTimings, }) const router = createRouter({ routeTree, context: { locale, graphqlClient, graphqlReadClient, platform, queryClient, } satisfies RouterContext, defaultPreload: "intent", scrollRestoration: true, }) setupRouterSsrQueryIntegration({ router, queryClient }) return router }