UNPKG

@trpc/next

Version:

The tRPC Next.js library

54 lines 2.59 kB
/** * Heavily based on urql's ssr * https://github.com/FormidableLabs/urql/blob/main/packages/next-urql/src/with-urql-client.ts */ import type { QueryClient } from '@tanstack/react-query'; import type { CreateTRPCClientOptions, TRPCClient, TRPCClientError, TRPCUntypedClient } from '@trpc/client'; import { type TransformerOptions } from '@trpc/client/unstable-internals'; import type { CreateTRPCReactOptions, CreateTRPCReactQueryClientConfig } from '@trpc/react-query/shared'; import type { AnyRouter, inferClientTypes, ResponseMeta } from '@trpc/server/unstable-core-do-not-import'; import type { NextComponentType, NextPageContext } from 'next/dist/shared/lib/utils'; export type WithTRPCConfig<TRouter extends AnyRouter> = CreateTRPCClientOptions<TRouter> & CreateTRPCReactQueryClientConfig & { abortOnUnmount?: boolean; }; type WithTRPCOptions<TRouter extends AnyRouter> = CreateTRPCReactOptions<TRouter> & { config: (info: { ctx?: NextPageContext; }) => WithTRPCConfig<TRouter>; } & TransformerOptions<inferClientTypes<TRouter>>; export type TRPCPrepassHelper = (opts: { parent: WithTRPCSSROptions<AnyRouter>; WithTRPC: NextComponentType<any, any, any>; AppOrPage: NextComponentType<any, any, any>; }) => void; export type WithTRPCSSROptions<TRouter extends AnyRouter> = WithTRPCOptions<TRouter> & { /** * If you enable this, you also need to add a `ssrPrepass`-prop * @see https://trpc.io/docs/client/nextjs/ssr */ ssr: true | ((opts: { ctx: NextPageContext; }) => boolean | Promise<boolean>); responseMeta?: (opts: { ctx: NextPageContext; clientErrors: TRPCClientError<TRouter>[]; }) => ResponseMeta; /** * use `import { ssrPrepass } from '@trpc/next/ssrPrepass'` * @see https://trpc.io/docs/client/nextjs/ssr */ ssrPrepass: TRPCPrepassHelper; }; export type WithTRPCNoSSROptions<TRouter extends AnyRouter> = WithTRPCOptions<TRouter> & { ssr?: false; }; export type TRPCPrepassProps<TRouter extends AnyRouter, TSSRContext extends NextPageContext = NextPageContext> = { config: WithTRPCConfig<TRouter>; queryClient: QueryClient; trpcClient: TRPCUntypedClient<TRouter> | TRPCClient<TRouter>; ssrState: 'prepass'; ssrContext: TSSRContext; }; export declare function withTRPC<TRouter extends AnyRouter, TSSRContext extends NextPageContext = NextPageContext>(opts: WithTRPCNoSSROptions<TRouter> | WithTRPCSSROptions<TRouter>): (AppOrPage: NextComponentType<any, any, any>) => NextComponentType; export {}; //# sourceMappingURL=withTRPC.d.ts.map