{"version":3,"file":"index.mjs","names":["trpc: CreateReactQueryHooks","opts?: CreateTRPCReactOptions","opts: CreateQueryUtilsOptions"],"sources":["../src/createTRPCReact.tsx","../src/createTRPCQueryUtils.tsx"],"sourcesContent":["import type {\n DefinedInitialDataInfiniteOptions,\n DefinedUseInfiniteQueryResult,\n InfiniteData,\n SkipToken,\n UndefinedInitialDataInfiniteOptions,\n UseInfiniteQueryOptions,\n UseInfiniteQueryResult,\n UseSuspenseInfiniteQueryOptions,\n UseSuspenseInfiniteQueryResult,\n UseSuspenseQueryResult,\n} from '@tanstack/react-query';\nimport type { createTRPCClient, TRPCClientErrorLike } from '@trpc/client';\nimport type {\n AnyProcedure,\n AnyRootTypes,\n AnyRouter,\n inferAsyncIterableYield,\n inferProcedureInput,\n inferTransformedProcedureOutput,\n ProcedureType,\n ProtectedIntersection,\n RouterRecord,\n Simplify,\n} from '@trpc/server/unstable-core-do-not-import';\nimport { createFlatProxy } from '@trpc/server/unstable-core-do-not-import';\nimport * as React from 'react';\nimport type {\n TRPCUseQueries,\n TRPCUseSuspenseQueries,\n} from './internals/useQueries';\nimport type {\n CreateReactUtils,\n TRPCFetchInfiniteQueryOptions,\n TRPCFetchQueryOptions,\n} from './shared';\nimport { createReactDecoration, createReactQueryUtils } from './shared';\nimport type { CreateReactQueryHooks } from './shared/hooks/createHooksInternal';\nimport { createRootHooks } from './shared/hooks/createHooksInternal';\nimport type {\n DefinedUseTRPCQueryOptions,\n DefinedUseTRPCQueryResult,\n TRPCHookResult,\n TRPCProvider,\n TRPCSubscriptionResult,\n TRPCUseQueryBaseOptions,\n UseTRPCMutationOptions,\n UseTRPCMutationResult,\n UseTRPCQueryOptions,\n UseTRPCQueryResult,\n UseTRPCSubscriptionOptions,\n UseTRPCSuspenseQueryOptions,\n} from './shared/hooks/types';\nimport type { CreateTRPCReactOptions } from './shared/types';\n\ntype ResolverDef = {\n input: any;\n output: any;\n transformer: boolean;\n errorShape: any;\n};\n/**\n * @internal\n */\nexport interface ProcedureUseQuery {\n (\n input: TDef['input'] | SkipToken,\n opts: DefinedUseTRPCQueryOptions<\n TQueryFnData,\n TData,\n TRPCClientErrorLike<{\n errorShape: TDef['errorShape'];\n transformer: TDef['transformer'];\n }>,\n TDef['output']\n >,\n ): DefinedUseTRPCQueryResult<\n TData,\n TRPCClientErrorLike<{\n errorShape: TDef['errorShape'];\n transformer: TDef['transformer'];\n }>\n >;\n\n (\n input: TDef['input'] | SkipToken,\n opts?: UseTRPCQueryOptions<\n TQueryFnData,\n TData,\n TRPCClientErrorLike,\n TDef['output']\n >,\n ): UseTRPCQueryResult>;\n}\n\n/**\n * @internal\n */\nexport type ProcedureUsePrefetchQuery = (\n input: TDef['input'] | SkipToken,\n opts?: TRPCFetchQueryOptions>,\n) => void;\n\n/**\n * @remark `void` is here due to https://github.com/trpc/trpc/pull/4374\n */\ntype CursorInput = {\n cursor?: any;\n} | void;\n\ntype ReservedInfiniteQueryKeys = 'cursor' | 'direction';\ntype InfiniteInput =\n | Omit\n | SkipToken;\n\ntype inferCursorType = TInput extends { cursor?: any }\n ? TInput['cursor']\n : unknown;\n\ntype makeInfiniteQueryOptions = Omit<\n TOptions,\n 'queryKey' | 'initialPageParam' | 'queryFn' | 'queryHash' | 'queryHashFn'\n> &\n TRPCUseQueryBaseOptions & {\n initialCursor?: TCursor;\n };\n\ntype trpcInfiniteData = Simplify<\n InfiniteData>\n>;\n// references from react-query\n// 1st\n// declare function useInfiniteQuery<\n// TQueryFnData,\n// TError = DefaultError,\n// TData = InfiniteData,\n// TQueryKey extends QueryKey = QueryKey,\n// TPageParam = unknown,\n// >(\n// options: DefinedInitialDataInfiniteOptions<\n// TQueryFnData,\n// TError,\n// TData,\n// TQueryKey,\n// TPageParam\n// >,\n// queryClient?: QueryClient,\n// ): DefinedUseInfiniteQueryResult;\n// 2nd\n// declare function useInfiniteQuery<\n// TQueryFnData,\n// TError = DefaultError,\n// TData = InfiniteData,\n// TQueryKey extends QueryKey = QueryKey,\n// TPageParam = unknown,\n// >(\n// options: UndefinedInitialDataInfiniteOptions<\n// TQueryFnData,\n// TError,\n// TData,\n// TQueryKey,\n// TPageParam\n// >,\n// queryClient?: QueryClient,\n// ): UseInfiniteQueryResult;\n// 3rd\n// declare function useInfiniteQuery<\n// TQueryFnData,\n// TError = DefaultError,\n// TData = InfiniteData,\n// TQueryKey extends QueryKey = QueryKey,\n// TPageParam = unknown,\n// >(\n// options: UseInfiniteQueryOptions<\n// TQueryFnData,\n// TError,\n// TData,\n// TQueryFnData,\n// TQueryKey,\n// TPageParam\n// >,\n// queryClient?: QueryClient,\n// ): UseInfiniteQueryResult;\n\nexport interface useTRPCInfiniteQuery {\n // 1st\n >(\n input: InfiniteInput,\n opts: makeInfiniteQueryOptions<\n inferCursorType,\n DefinedInitialDataInfiniteOptions<\n // TQueryFnData,\n TDef['output'],\n // TError,\n TRPCClientErrorLike,\n // TData,\n TData,\n // TQueryKey,\n any,\n // TPageParam\n inferCursorType\n >\n >,\n ): TRPCHookResult &\n DefinedUseInfiniteQueryResult>;\n\n // 2nd\n >(\n input: InfiniteInput,\n opts?: makeInfiniteQueryOptions<\n inferCursorType,\n UndefinedInitialDataInfiniteOptions<\n // TQueryFnData,\n TDef['output'],\n // TError,\n TRPCClientErrorLike,\n // TData,\n TData,\n // TQueryKey,\n any,\n // TPageParam\n inferCursorType\n >\n >,\n ): TRPCHookResult & UseInfiniteQueryResult>;\n\n // 3rd:\n >(\n input: InfiniteInput,\n opts?: makeInfiniteQueryOptions<\n inferCursorType,\n UseInfiniteQueryOptions<\n // TQueryFnData,\n TDef['output'],\n // TError,\n TRPCClientErrorLike,\n // TData,\n TData,\n // TQueryKey,\n any,\n // TPageParam\n inferCursorType\n >\n >,\n ): TRPCHookResult & UseInfiniteQueryResult>;\n}\n\n// references from react-query\n// declare function useSuspenseInfiniteQuery<\n// TQueryFnData,\n// TError = DefaultError,\n// TData = InfiniteData,\n// TQueryKey extends QueryKey = QueryKey,\n// TPageParam = unknown,\n// >(\n// options: UseSuspenseInfiniteQueryOptions<\n// TQueryFnData,\n// TError,\n// TData,\n// TQueryFnData,\n// TQueryKey,\n// TPageParam\n// >,\n// queryClient?: QueryClient,\n// ): UseSuspenseInfiniteQueryResult;\n\nexport type useTRPCSuspenseInfiniteQuery = (\n input: InfiniteInput,\n opts: makeInfiniteQueryOptions<\n inferCursorType,\n UseSuspenseInfiniteQueryOptions<\n // TQueryFnData,\n TDef['output'],\n // TError,\n TRPCClientErrorLike,\n // TData,\n trpcInfiniteData,\n // TQueryKey,\n any,\n // TPageParam\n inferCursorType\n >\n >,\n) => [\n trpcInfiniteData,\n TRPCHookResult &\n UseSuspenseInfiniteQueryResult<\n trpcInfiniteData,\n TRPCClientErrorLike\n >,\n];\n\n/**\n * @internal\n */\nexport type MaybeDecoratedInfiniteQuery =\n TDef['input'] extends CursorInput\n ? {\n /**\n * @see https://trpc.io/docs/v11/client/react/useInfiniteQuery\n */\n useInfiniteQuery: useTRPCInfiniteQuery;\n /**\n * @see https://trpc.io/docs/client/react/suspense#usesuspenseinfinitequery\n */\n useSuspenseInfiniteQuery: useTRPCSuspenseInfiniteQuery;\n\n usePrefetchInfiniteQuery: (\n input: Omit | SkipToken,\n opts: TRPCFetchInfiniteQueryOptions<\n TDef['input'],\n TDef['output'],\n TRPCClientErrorLike\n >,\n ) => void;\n }\n : object;\n\n/**\n * @internal\n */\nexport type DecoratedQueryMethods = {\n /**\n * @see https://trpc.io/docs/v11/client/react/useQuery\n */\n useQuery: ProcedureUseQuery;\n usePrefetchQuery: ProcedureUsePrefetchQuery;\n /**\n * @see https://trpc.io/docs/v11/client/react/suspense#usesuspensequery\n */\n useSuspenseQuery: <\n TQueryFnData extends TDef['output'] = TDef['output'],\n TData = TQueryFnData,\n >(\n input: TDef['input'],\n opts?: UseTRPCSuspenseQueryOptions<\n TQueryFnData,\n TData,\n TRPCClientErrorLike\n >,\n ) => [\n TData,\n UseSuspenseQueryResult> & TRPCHookResult,\n ];\n};\n\n/**\n * @internal\n */\nexport type DecoratedQuery =\n MaybeDecoratedInfiniteQuery & DecoratedQueryMethods;\n\nexport type DecoratedMutation = {\n /**\n * @see https://trpc.io/docs/v11/client/react/useMutation\n */\n useMutation: (\n opts?: UseTRPCMutationOptions<\n TDef['input'],\n TRPCClientErrorLike,\n TDef['output'],\n TContext\n >,\n ) => UseTRPCMutationResult<\n TDef['output'],\n TRPCClientErrorLike,\n TDef['input'],\n TContext\n >;\n};\n\ninterface ProcedureUseSubscription {\n // Without skip token\n (\n input: TDef['input'],\n opts?: UseTRPCSubscriptionOptions<\n inferAsyncIterableYield,\n TRPCClientErrorLike\n >,\n ): TRPCSubscriptionResult<\n inferAsyncIterableYield,\n TRPCClientErrorLike\n >;\n\n // With skip token\n (\n input: TDef['input'] | SkipToken,\n opts?: Omit<\n UseTRPCSubscriptionOptions<\n inferAsyncIterableYield,\n TRPCClientErrorLike\n >,\n 'enabled'\n >,\n ): TRPCSubscriptionResult<\n inferAsyncIterableYield,\n TRPCClientErrorLike\n >;\n}\n/**\n * @internal\n */\nexport type DecorateProcedure<\n TType extends ProcedureType,\n TDef extends ResolverDef,\n> = TType extends 'query'\n ? DecoratedQuery\n : TType extends 'mutation'\n ? DecoratedMutation\n : TType extends 'subscription'\n ? {\n /**\n * @see https://trpc.io/docs/v11/subscriptions\n */\n useSubscription: ProcedureUseSubscription;\n }\n : never;\n\n/**\n * @internal\n */\nexport type DecorateRouterRecord<\n TRoot extends AnyRootTypes,\n TRecord extends RouterRecord,\n> = {\n [TKey in keyof TRecord]: TRecord[TKey] extends infer $Value\n ? $Value extends AnyProcedure\n ? DecorateProcedure<\n $Value['_def']['type'],\n {\n input: inferProcedureInput<$Value>;\n output: inferTransformedProcedureOutput;\n transformer: TRoot['transformer'];\n errorShape: TRoot['errorShape'];\n }\n >\n : $Value extends RouterRecord\n ? DecorateRouterRecord\n : never\n : never;\n};\n\n/**\n * @internal\n */\nexport type CreateTRPCReactBase = {\n /**\n * @deprecated renamed to `useUtils` and will be removed in a future tRPC version\n *\n * @see https://trpc.io/docs/v11/client/react/useUtils\n */\n useContext(): CreateReactUtils;\n /**\n * @see https://trpc.io/docs/v11/client/react/useUtils\n */\n useUtils(): CreateReactUtils;\n Provider: TRPCProvider;\n createClient: typeof createTRPCClient;\n useQueries: TRPCUseQueries;\n useSuspenseQueries: TRPCUseSuspenseQueries;\n};\n\nexport type CreateTRPCReact<\n TRouter extends AnyRouter,\n TSSRContext,\n> = ProtectedIntersection<\n CreateTRPCReactBase,\n DecorateRouterRecord<\n TRouter['_def']['_config']['$types'],\n TRouter['_def']['record']\n >\n>;\n\n/**\n * @internal\n */\nexport function createHooksInternal<\n TRouter extends AnyRouter,\n TSSRContext = unknown,\n>(trpc: CreateReactQueryHooks) {\n type CreateHooksInternal = CreateTRPCReact;\n\n const proxy = createReactDecoration(\n trpc,\n ) as DecorateRouterRecord<\n TRouter['_def']['_config']['$types'],\n TRouter['_def']['record']\n >;\n return createFlatProxy((key) => {\n if (key === 'useContext' || key === 'useUtils') {\n return () => {\n const context = trpc.useUtils();\n // create a stable reference of the utils context\n return React.useMemo(() => {\n return (createReactQueryUtils as any)(context);\n }, [context]);\n };\n }\n\n if (trpc.hasOwnProperty(key)) {\n return (trpc as any)[key];\n }\n\n return proxy[key];\n });\n}\n\nexport function createTRPCReact<\n TRouter extends AnyRouter,\n TSSRContext = unknown,\n>(\n opts?: CreateTRPCReactOptions,\n): CreateTRPCReact {\n const hooks = createRootHooks(opts);\n const proxy = createHooksInternal(hooks);\n\n return proxy as any;\n}\n","import type { AnyRouter } from '@trpc/server/unstable-core-do-not-import';\nimport { createQueryUtilsProxy } from './shared';\nimport type { CreateQueryUtilsOptions } from './utils/createUtilityFunctions';\nimport { createUtilityFunctions } from './utils/createUtilityFunctions';\n\nexport function createTRPCQueryUtils(\n opts: CreateQueryUtilsOptions,\n) {\n const utils = createUtilityFunctions(opts);\n return createQueryUtilsProxy(utils);\n}\n"],"mappings":";;;;;;;;;;;AA4dA,SAAgB,oBAGdA,MAAmD;CAGnD,MAAM,QAAQ,sBACZ,KACD;AAID,QAAO,gBAAqC,CAAC,QAAQ;AACnD,MAAI,QAAQ,gBAAgB,QAAQ,WAClC,QAAO,MAAM;GACX,MAAM,UAAU,KAAK,UAAU;AAE/B,UAAO,MAAM,QAAQ,MAAM;AACzB,WAAO,AAAC,sBAA8B,QAAQ;GAC/C,GAAE,CAAC,OAAQ,EAAC;EACd;AAGH,MAAI,KAAK,eAAe,IAAI,CAC1B,QAAQ,KAAa;AAGvB,SAAO,MAAM;CACd,EAAC;AACH;AAED,SAAgB,gBAIdC,MACuC;CACvC,MAAM,QAAQ,gBAAsC,KAAK;CACzD,MAAM,QAAQ,oBAA0C,MAAM;AAE9D,QAAO;AACR;;;;AChgBD,SAAgB,qBACdC,MACA;CACA,MAAM,QAAQ,uBAAuB,KAAK;AAC1C,QAAO,sBAA+B,MAAM;AAC7C"}