UNPKG

5.04 kBTypeScriptView Raw
1/// <reference types="typed-graphql" />
2/// <reference types="node" />
3/// <reference types="chai" />
4import { NetworkInterface } from './networkInterface';
5import { ApolloStore, Store } from './store';
6import { QueryStoreValue } from './queries/store';
7import { QueryTransformer } from './queries/queryTransform';
8import { NormalizedCache } from './data/store';
9import { Document, FragmentDefinition, SelectionSet } from 'graphql';
10import { MutationBehavior, MutationQueryReducersMap } from './data/mutationResults';
11import { QueryScheduler } from './scheduler';
12import { ApolloQueryResult, ApolloStateSelector } from './index';
13import { Observer, Subscription, Observable } from './util/Observable';
14import { WatchQueryOptions } from './watchQueryOptions';
15import { ObservableQuery } from './ObservableQuery';
16export declare type QueryListener = (queryStoreValue: QueryStoreValue) => void;
17export interface SubscriptionOptions {
18 query: Document;
19 variables?: {
20 [key: string]: any;
21 };
22 fragments?: FragmentDefinition[];
23}
24export declare type ResultTransformer = (resultData: ApolloQueryResult) => ApolloQueryResult;
25export declare type ResultComparator = (result1: ApolloQueryResult, result2: ApolloQueryResult) => boolean;
26export 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}