UNPKG

relay-hooks

Version:
118 lines (117 loc) 6.94 kB
import { Disposable, OperationType, CacheConfig, GraphQLTaggedNode, IEnvironment, MutationConfig as BaseMutationConfig, MutationParameters, FragmentSpecResolver, VariablesOf, FragmentReference, RenderPolicy, GraphQLSubscriptionConfig, GraphQLResponse } from 'relay-runtime'; export declare type MutationState<T extends MutationParameters> = { loading: boolean; data: T['response'] | null; error?: Error | null; }; export declare type MutationNode<T extends MutationParameters> = BaseMutationConfig<T>['mutation']; export declare type MutationConfig<T extends MutationParameters> = Partial<Omit<BaseMutationConfig<T>, 'mutation' | 'onCompleted'>> & { onCompleted?(response: T['response']): void; }; export declare type MutationConfigWithoutVariables<T extends MutationParameters> = Omit<MutationConfig<T>, 'variables'>; export declare type Mutate<T extends MutationParameters> = (config?: Partial<MutationConfig<T>>) => Promise<T['response']>; export declare type MutateWithVariables<T extends MutationParameters> = (config: Partial<MutationConfig<T>> & { variables: T['variables']; }) => Promise<T['response']>; export declare const NETWORK_ONLY = "network-only"; export declare const STORE_THEN_NETWORK = "store-and-network"; export declare const STORE_OR_NETWORK = "store-or-network"; export declare const STORE_ONLY = "store-only"; export declare const PAGINATION_NAME = "usePagination"; export declare const REFETCHABLE_NAME = "useRefetchable"; export declare const FRAGMENT_NAME = "useFragment"; export declare type FragmentNames = typeof PAGINATION_NAME | typeof REFETCHABLE_NAME | typeof FRAGMENT_NAME; export declare type FetchPolicy = typeof STORE_ONLY | typeof STORE_OR_NETWORK | typeof STORE_THEN_NETWORK | typeof NETWORK_ONLY; export declare type ContainerResult = { data: { [key: string]: any; }; resolver: FragmentSpecResolver; }; export interface RenderProps<T extends OperationType> { error: Error | null; data: T['response'] | null | undefined; retry: (_cacheConfigOverride?: CacheConfig, options?: Options) => void; isLoading: boolean; } export declare type QueryOptions = { fetchPolicy?: FetchPolicy; fetchKey?: string | number; networkCacheConfig?: CacheConfig; skip?: boolean; onResponse?: (response: GraphQLResponse) => void; onComplete?: (_e: Error | null) => void; UNSTABLE_renderPolicy?: RenderPolicy; }; export declare type $Call<Fn extends (...args: any[]) => any> = Fn extends (arg: any) => infer RT ? RT : never; export declare type KeyType<TData = unknown> = Readonly<{ ' $data'?: TData; ' $fragmentSpreads': FragmentReference; }>; export declare type ArrayKeyType = ReadonlyArray<{ readonly ' $data'?: ReadonlyArray<unknown>; } | null>; export declare type KeyTypeData<TKey extends KeyType<TData>, TData = unknown> = Required<TKey>[' $data']; export declare type KeyReturnType<T extends KeyType> = (arg: T) => NonNullable<T[' $data']>; export declare type ArrayKeyReturnType<T extends ArrayKeyType> = (arg: T) => NonNullable<NonNullable<T[0]>[' $data']>[0]; export declare type LoadMoreFn<TQuery extends OperationType = OperationType> = (count: number, options?: OptionsLoadMore<TQuery>) => Disposable; export declare const FORWARD = "forward"; export declare type LoadQuery<TOperationType extends OperationType = OperationType, TEnvironment extends IEnvironment = IEnvironment> = { next: (environment: TEnvironment, gqlQuery: GraphQLTaggedNode, variables?: TOperationType['variables'], options?: QueryOptions) => Promise<void>; subscribe: (callback: () => any) => () => void; getValue: (environment?: TEnvironment) => RenderProps<TOperationType> | Promise<any>; dispose: () => void; }; export interface Options { fetchPolicy?: FetchPolicy; onResponse?: (response: GraphQLResponse) => void; onComplete?: (arg: Error | null) => void; UNSTABLE_renderPolicy?: RenderPolicy; } export interface OptionsLoadMore<TQuery extends OperationType = OperationType> { onResponse?: (response: GraphQLResponse) => void; onComplete?: (arg: Error | null) => void; UNSTABLE_extraVariables?: VariablesOf<TQuery>; } export declare type RefetchFnDynamic<TQuery extends OperationType, Key extends KeyType | null, TOptions = Options> = RefetchInexactDynamicResponse<TQuery, TOptions> & RefetchExactDynamicResponse<TQuery, TOptions>; export declare type RefetchInexact<TQuery extends OperationType, TOptions> = (data?: unknown) => RefetchFnInexact<TQuery, TOptions>; export declare type RefetchInexactDynamicResponse<TQuery extends OperationType, TOptions> = ReturnType<RefetchInexact<TQuery, TOptions>>; export declare type RefetchExact<TQuery extends OperationType, TOptions> = (data?: unknown | null) => RefetchFnExact<TQuery, TOptions>; export declare type RefetchExactDynamicResponse<TQuery extends OperationType, TOptions> = ReturnType<RefetchExact<TQuery, TOptions>>; export declare type RefetchFnBase<TVars, TOptions> = (vars: TVars, options?: TOptions) => Disposable; export declare type RefetchFnExact<TQuery extends OperationType, TOptions = Options> = RefetchFnBase<VariablesOf<TQuery>, TOptions>; export declare type RefetchFnInexact<TQuery extends OperationType, TOptions = Options> = RefetchFnBase<Partial<VariablesOf<TQuery>>, TOptions>; export interface ReturnTypeRefetchNode<TQuery extends OperationType, TKey extends KeyType | null, TFragmentData> extends ReturnTypeRefetchSuspenseNode<TQuery, TKey, TFragmentData> { isLoading: boolean; error: Error | null; } export declare type ReturnTypeRefetchSuspenseNode<TQuery extends OperationType, TKey extends KeyType | null, TFragmentData> = { data: TFragmentData; refetch: RefetchFnDynamic<TQuery, TKey>; }; export interface ReturnTypePagination<TQuery extends OperationType, TKey extends KeyType | null, TFragmentData> extends ReturnTypePaginationSuspense<TQuery, TKey, TFragmentData> { isLoading: boolean; error: Error | null; } export interface ReturnTypePaginationSuspense<TQuery extends OperationType, TKey extends KeyType | null, TFragmentData> { data: TFragmentData; loadNext: LoadMoreFn<TQuery>; loadPrevious: LoadMoreFn<TQuery>; hasNext: boolean; hasPrevious: boolean; isLoadingNext: boolean; isLoadingPrevious: boolean; errorNext: Error | null; errorPrevious: Error | null; refetch: RefetchFnDynamic<TQuery, TKey>; } export declare type SubscriptionConfig = { skip?: boolean; }; export declare type SkipSubscriptionConfig = { skip: true; }; export interface SkipGraphQLSubscriptionConfig<TSubscription extends OperationType> extends Omit<GraphQLSubscriptionConfig<TSubscription>, 'variables' | 'subscription'> { subscription?: GraphQLSubscriptionConfig<TSubscription>['subscription']; variables?: TSubscription['variables']; }