/** * This file was generated by @pikku/cli@0.12.48 */ import { useQuery, useInfiniteQuery, useMutation, type UseQueryOptions, type UseInfiniteQueryOptions, type UseMutationOptions, type InfiniteData } from '@tanstack/react-query' import { usePikkuRPC } from '@pikku/react' import type { FlattenedRPCMap } from '../../../functions/.pikku/rpc/pikku-rpc-wirings-map.gen.d.js' type RPCInvoke = (name: Name, data: FlattenedRPCMap[Name]['input']) => Promise export const usePikkuQuery = ( name: Name, data: FlattenedRPCMap[Name]['input'], options?: Omit, 'queryKey' | 'queryFn'> ) => { const rpc = usePikkuRPC<{ invoke: RPCInvoke }>() return useQuery({ queryKey: [name, data], queryFn: () => rpc.invoke(name, data), ...options, }) } export const usePikkuMutation = ( name: Name, options?: Omit, 'mutationFn'> ) => { const rpc = usePikkuRPC<{ invoke: RPCInvoke }>() return useMutation({ mutationFn: (data) => rpc.invoke(name, data), ...options, }) } type PaginatedKeys = { [K in keyof FlattenedRPCMap]: FlattenedRPCMap[K]['output'] extends { nextCursor?: string | null } ? K : never }[keyof FlattenedRPCMap] type InfiniteOpts = Omit< UseInfiniteQueryOptions, readonly unknown[], string | undefined>, 'queryKey' | 'queryFn' | 'getNextPageParam' | 'initialPageParam' > export const usePikkuInfiniteQuery = ( name: Name, data: Omit, options?: InfiniteOpts ) => { const rpc = usePikkuRPC<{ invoke: RPCInvoke }>() return useInfiniteQuery({ queryKey: [name, data] as const, queryFn: ({ pageParam }: { pageParam: string | undefined }) => rpc.invoke(name, { ...data, nextCursor: pageParam } as unknown as FlattenedRPCMap[Name]['input']), initialPageParam: undefined as string | undefined, getNextPageParam: (lastPage: FlattenedRPCMap[Name]['output']) => (lastPage as { nextCursor?: string }).nextCursor ?? undefined, ...options, }) }