UNPKG

4.16 kBTypeScriptView Raw
1import { ApolloLink, FetchResult } from 'apollo-link';
2import { DocumentNode } from 'graphql';
3import { Cache } from 'apollo-cache';
4import { QueryScheduler } from '../scheduler/scheduler';
5import { Observer, Subscription, Observable } from '../util/Observable';
6import { DataStore } from '../data/store';
7import { MutationStore } from '../data/mutations';
8import { QueryStore } from '../data/queries';
9import { QueryOptions, WatchQueryOptions, SubscriptionOptions, MutationOptions } from './watchQueryOptions';
10import { ObservableQuery } from './ObservableQuery';
11import { QueryListener, ApolloQueryResult, FetchType, OperationVariables } from './types';
12export interface QueryInfo {
13 listeners: QueryListener[];
14 invalidated: boolean;
15 newData: Cache.DiffResult<any> | null;
16 document: DocumentNode | null;
17 lastRequestId: number | null;
18 observableQuery: ObservableQuery<any> | null;
19 subscriptions: Subscription[];
20 cancel?: (() => void);
21}
22export interface QueryPromise {
23 resolve: (result: ApolloQueryResult<any>) => void;
24 reject: (error: Error) => void;
25}
26export declare class QueryManager<TStore> {
27 scheduler: QueryScheduler<TStore>;
28 link: ApolloLink;
29 mutationStore: MutationStore;
30 queryStore: QueryStore;
31 dataStore: DataStore<TStore>;
32 private deduplicator;
33 private queryDeduplication;
34 private clientAwareness;
35 private onBroadcast;
36 private idCounter;
37 private queries;
38 private fetchQueryPromises;
39 private queryIdsByName;
40 constructor({ link, queryDeduplication, store, onBroadcast, ssrMode, clientAwareness, }: {
41 link: ApolloLink;
42 queryDeduplication?: boolean;
43 store: DataStore<TStore>;
44 onBroadcast?: () => void;
45 ssrMode?: boolean;
46 clientAwareness?: Record<string, string>;
47 });
48 mutate<T>({ mutation, variables, optimisticResponse, updateQueries: updateQueriesByName, refetchQueries, awaitRefetchQueries, update: updateWithProxyFn, errorPolicy, fetchPolicy, context, }: MutationOptions): Promise<FetchResult<T>>;
49 fetchQuery<T>(queryId: string, options: WatchQueryOptions, fetchType?: FetchType, fetchMoreForQueryId?: string): Promise<FetchResult<T>>;
50 queryListenerForObserver<T>(queryId: string, options: WatchQueryOptions, observer: Observer<ApolloQueryResult<T>>): QueryListener;
51 watchQuery<T>(options: WatchQueryOptions, shouldSubscribe?: boolean): ObservableQuery<T>;
52 query<T>(options: QueryOptions): Promise<ApolloQueryResult<T>>;
53 generateQueryId(): string;
54 stopQueryInStore(queryId: string): void;
55 addQueryListener(queryId: string, listener: QueryListener): void;
56 updateQueryWatch(queryId: string, document: DocumentNode, options: WatchQueryOptions): () => void;
57 addFetchQueryPromise<T>(requestId: number, resolve: (result: ApolloQueryResult<T>) => void, reject: (error: Error) => void): void;
58 removeFetchQueryPromise(requestId: number): void;
59 addObservableQuery<T>(queryId: string, observableQuery: ObservableQuery<T>): void;
60 removeObservableQuery(queryId: string): void;
61 clearStore(): Promise<void>;
62 resetStore(): Promise<ApolloQueryResult<any>[]>;
63 reFetchObservableQueries(includeStandby?: boolean): Promise<ApolloQueryResult<any>[]>;
64 startQuery<T>(queryId: string, options: WatchQueryOptions, listener: QueryListener): string;
65 startGraphQLSubscription(options: SubscriptionOptions): Observable<any>;
66 stopQuery(queryId: string): void;
67 removeQuery(queryId: string): void;
68 getCurrentQueryResult<T>(observableQuery: ObservableQuery<T>, optimistic?: boolean): {
69 data: any;
70 partial: boolean;
71 };
72 getQueryWithPreviousResult<T>(queryIdOrObservable: string | ObservableQuery<T>): {
73 previousResult: any;
74 variables: OperationVariables | undefined;
75 document: DocumentNode;
76 };
77 broadcastQueries(): void;
78 private getObservableQueryPromises;
79 private fetchRequest;
80 private refetchQueryByName;
81 private generateRequestId;
82 private getQuery;
83 private setQuery;
84 private invalidate;
85 private buildOperationForLink;
86}
87//# sourceMappingURL=QueryManager.d.ts.map
\No newline at end of file