'use client'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { loggerLink, unstable_httpBatchStreamLink } from '@trpc/client'; import { createTRPCReact } from '@trpc/react-query'; import { useState } from 'react'; import { type AppRouter } from '~/server/api/root'; import { getUrl, transformer } from './shared'; export const api = createTRPCReact(); export function TRPCReactProvider(props: { children: React.ReactNode; cookies: string; }) { const [queryClient] = useState(() => new QueryClient()); const [trpcClient] = useState(() => api.createClient({ transformer, links: [ loggerLink({ enabled: (op) => process.env.NODE_ENV === 'development' || (op.direction === 'down' && op.result instanceof Error), }), unstable_httpBatchStreamLink({ url: getUrl(), headers() { return { cookie: props.cookies, 'x-trpc-source': 'react', }; }, }), ], }), ); return ( {props.children} ); }