/
githubmirror
/
trpc
Обзор
Документация
Войти
/
githubmirror
/
trpc
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
examples/next-formdata/src/utils/trpc.ts
74 строки
2 KB
Alex / KATT
chore(server): rewrite `resolveHTTPResponse` with Fetch (#5684)
30 апр 2024, 22:54
Не верифицирован
30 апр 2024, 22:54
01bb2ea
Код
Авторство
О чём код?
import { httpBatchLink, httpLink, isNonJsonSerializable, loggerLink, splitLink, } from '@trpc/client'; import { createTRPCNext } from '@trpc/next'; import type { inferRouterInputs, inferRouterOutputs } from '@trpc/server'; import type { AppRouter } from '../pages/api/trpc/[trpc]'; function getBaseUrl() { if (typeof window !== 'undefined') { // In the browser, we return a relative URL return ''; } // When rendering on the server, we return an absolute URL // reference for vercel.com if (process.env.VERCEL_URL) { return `https://${process.env.VERCEL_URL}`; } // assume localhost return `http://localhost:${process.env.PORT ?? 3000}`; } export const trpc = createTRPCNext<AppRouter>({ overrides: { useMutation: { /** * This function is called whenever a `.useMutation` succeeds **/ async onSuccess(opts) { /** * @note that order here matters: * The order here allows route changes in `onSuccess` without * having a flash of content change whilst redirecting. **/ // Calls the `onSuccess` defined in the `useQuery()`-options: await opts.originalFn(); // Invalidate all queries in the react-query cache: await opts.queryClient.invalidateQueries(); }, }, }, config() { const url = getBaseUrl() + '/api/trpc'; return { links: [ loggerLink({ enabled: (op) => process.env.NODE_ENV === 'development' || (op.direction === 'down' && op.result instanceof Error), }), splitLink({ condition: (op) => isNonJsonSerializable(op.input), true: httpLink({ url, }), false: httpBatchLink({ url, }), }), ], }; }, ssr: false, }); export type RouterInput = inferRouterInputs<AppRouter>; export type RouterOutput = inferRouterOutputs<AppRouter>;