import { useSWRInfinite, SWRInfiniteConfigInterface } from 'swr' import { request, RequestOptions } from './request' export type QueryOptions = Omit type GetVariablesForPageFn = ( index: number, previousPageData: D | null ) => V | null export const useQueryInfinite = < Query extends any = any, Variables extends any = any >( queryOptions: QueryOptions, getVariablesForPage: GetVariablesForPageFn, config?: SWRInfiniteConfigInterface | undefined ) => useSWRInfinite( (index, previousPageData) => { const variables = getVariablesForPage(index, previousPageData) return JSON.stringify(variables) }, (variables: string) => request({ ...queryOptions, variables, }), config )