1 |
|
2 |
|
3 |
|
4 | import { NetworkInterface } from './networkInterface';
|
5 | import { ApolloStore, Store } from './store';
|
6 | import { QueryStoreValue } from './queries/store';
|
7 | import { QueryTransformer } from './queries/queryTransform';
|
8 | import { NormalizedCache } from './data/store';
|
9 | import { Document, FragmentDefinition, SelectionSet } from 'graphql';
|
10 | import { MutationBehavior, MutationQueryReducersMap } from './data/mutationResults';
|
11 | import { QueryScheduler } from './scheduler';
|
12 | import { ApolloQueryResult, ApolloStateSelector } from './index';
|
13 | import { Observer, Subscription, Observable } from './util/Observable';
|
14 | import { WatchQueryOptions } from './watchQueryOptions';
|
15 | import { ObservableQuery } from './ObservableQuery';
|
16 | export declare type QueryListener = (queryStoreValue: QueryStoreValue) => void;
|
17 | export interface SubscriptionOptions {
|
18 | query: Document;
|
19 | variables?: {
|
20 | [key: string]: any;
|
21 | };
|
22 | fragments?: FragmentDefinition[];
|
23 | }
|
24 | export declare type ResultTransformer = (resultData: ApolloQueryResult) => ApolloQueryResult;
|
25 | export declare type ResultComparator = (result1: ApolloQueryResult, result2: ApolloQueryResult) => boolean;
|
26 | export declare class QueryManager {
|
27 | pollingTimers: {
|
28 | [queryId: string]: NodeJS.Timer | any;
|
29 | };
|
30 | scheduler: QueryScheduler;
|
31 | store: ApolloStore;
|
32 | private networkInterface;
|
33 | private reduxRootSelector;
|
34 | private queryTransformer;
|
35 | private resultTransformer;
|
36 | private resultComparator;
|
37 | private queryListeners;
|
38 | private idCounter;
|
39 | private batcher;
|
40 | private batchInterval;
|
41 | private fetchQueryPromises;
|
42 | private observableQueries;
|
43 | private queryIdsByName;
|
44 | constructor({networkInterface, store, reduxRootSelector, queryTransformer, resultTransformer, resultComparator, shouldBatch, batchInterval}: {
|
45 | networkInterface: NetworkInterface;
|
46 | store: ApolloStore;
|
47 | reduxRootSelector: ApolloStateSelector;
|
48 | queryTransformer?: QueryTransformer;
|
49 | resultTransformer?: ResultTransformer;
|
50 | resultComparator?: ResultComparator;
|
51 | shouldBatch?: Boolean;
|
52 | batchInterval?: number;
|
53 | });
|
54 | broadcastNewStore(store: any): void;
|
55 | mutate({mutation, variables, resultBehaviors, fragments, optimisticResponse, updateQueries, refetchQueries}: {
|
56 | mutation: Document;
|
57 | variables?: Object;
|
58 | resultBehaviors?: MutationBehavior[];
|
59 | fragments?: FragmentDefinition[];
|
60 | optimisticResponse?: Object;
|
61 | updateQueries?: MutationQueryReducersMap;
|
62 | refetchQueries?: string[];
|
63 | }): Promise<ApolloQueryResult>;
|
64 | queryListenerForObserver(queryId: string, options: WatchQueryOptions, observer: Observer<ApolloQueryResult>): QueryListener;
|
65 | watchQuery(options: WatchQueryOptions, shouldSubscribe?: boolean): ObservableQuery;
|
66 | query(options: WatchQueryOptions): Promise<ApolloQueryResult>;
|
67 | fetchQuery(queryId: string, options: WatchQueryOptions): Promise<ApolloQueryResult>;
|
68 | generateQueryId(): string;
|
69 | stopQueryInStore(queryId: string): void;
|
70 | getApolloState(): Store;
|
71 | getDataWithOptimisticResults(): NormalizedCache;
|
72 | addQueryListener(queryId: string, listener: QueryListener): void;
|
73 | addFetchQueryPromise(requestId: number, promise: Promise<ApolloQueryResult>, resolve: (result: ApolloQueryResult) => void, reject: (error: Error) => void): void;
|
74 | removeFetchQueryPromise(requestId: number): void;
|
75 | addObservableQuery(queryId: string, observableQuery: ObservableQuery): void;
|
76 | addQuerySubscription(queryId: string, querySubscription: Subscription): void;
|
77 | removeObservableQuery(queryId: string): void;
|
78 | resetStore(): void;
|
79 | startQuery(queryId: string, options: WatchQueryOptions, listener: QueryListener): string;
|
80 | startGraphQLSubscription(options: SubscriptionOptions): Observable<any>;
|
81 | stopQuery(queryId: string): void;
|
82 | getCurrentQueryResult(observableQuery: ObservableQuery, isOptimistic?: boolean): {
|
83 | data: Object;
|
84 | partial: boolean;
|
85 | };
|
86 | getQueryWithPreviousResult(queryIdOrObservable: string | ObservableQuery, isOptimistic?: boolean): {
|
87 | previousResult: Object;
|
88 | queryVariables: {
|
89 | [key: string]: any;
|
90 | };
|
91 | querySelectionSet: SelectionSet;
|
92 | queryFragments: FragmentDefinition[];
|
93 | };
|
94 | transformResult(result: ApolloQueryResult): ApolloQueryResult;
|
95 | private getQueryParts(observableQuery);
|
96 | private collectResultBehaviorsFromUpdateQueries(updateQueries, mutationResult, isOptimistic?);
|
97 | private transformQueryDocument(options);
|
98 | private handleDiffQuery({queryDef, rootId, variables, fragmentMap, noFetch});
|
99 | private fetchRequest({requestId, queryId, query, querySS, options, fragmentMap});
|
100 | private fetchQueryOverInterface(queryId, options);
|
101 | private refetchQueryByName(queryName);
|
102 | private isDifferentResult(lastResult, newResult);
|
103 | private broadcastQueries();
|
104 | private generateRequestId();
|
105 | }
|