import { type UseQueryOptions, useQuery } from '@tanstack/react-query' import type { TypedDocumentString } from '@/generated/graphql/graphql' import { execute } from './execute' import { getQueryKeyFromDocument } from './getQueryKeyFromDocument' /** * @public */ export const useGraphqlQuery = < TResult, // biome-ignore lint/suspicious/noExplicitAny: TODO(dani) type GraphQL variables properly TVariables extends Record | undefined = undefined, >( query: TypedDocumentString, variables?: TVariables, options?: Omit, 'queryKey' | 'queryFn'>, ) => { const queryKey = getQueryKeyFromDocument(query) return useQuery({ queryKey: variables ? [queryKey, variables] : [queryKey], queryFn: () => execute(query, variables), ...(options ?? {}), }) }