UNPKG

11.5 kBJavaScriptView Raw
1import { NetworkStatus } from '@apollo/client/core';
2import { Observable, from } from 'rxjs';
3import { wrapWithZone, fixObservable } from './utils';
4function useInitialLoading(obsQuery) {
5 return function useInitialLoadingOperator(source) {
6 return new Observable(function useInitialLoadingSubscription(subscriber) {
7 const currentResult = obsQuery.getCurrentResult();
8 const { loading, errors, error, partial, data } = currentResult;
9 const { partialRefetch, fetchPolicy } = obsQuery.options;
10 const hasError = errors || error;
11 if (partialRefetch &&
12 partial &&
13 (!data || Object.keys(data).length === 0) &&
14 fetchPolicy !== 'cache-only' &&
15 !loading &&
16 !hasError) {
17 subscriber.next({
18 ...currentResult,
19 loading: true,
20 networkStatus: NetworkStatus.loading,
21 });
22 }
23 return source.subscribe(subscriber);
24 });
25 };
26}
27export class QueryRef {
28 constructor(obsQuery, ngZone, options) {
29 this.obsQuery = obsQuery;
30 const wrapped = wrapWithZone(from(fixObservable(this.obsQuery)), ngZone);
31 this.valueChanges = options.useInitialLoading
32 ? wrapped.pipe(useInitialLoading(this.obsQuery))
33 : wrapped;
34 this.queryId = this.obsQuery.queryId;
35 }
36 // ObservableQuery's methods
37 get options() {
38 return this.obsQuery.options;
39 }
40 get variables() {
41 return this.obsQuery.variables;
42 }
43 result() {
44 return this.obsQuery.result();
45 }
46 getCurrentResult() {
47 return this.obsQuery.getCurrentResult();
48 }
49 getLastResult() {
50 return this.obsQuery.getLastResult();
51 }
52 getLastError() {
53 return this.obsQuery.getLastError();
54 }
55 resetLastResults() {
56 return this.obsQuery.resetLastResults();
57 }
58 refetch(variables) {
59 return this.obsQuery.refetch(variables);
60 }
61 fetchMore(fetchMoreOptions) {
62 return this.obsQuery.fetchMore(fetchMoreOptions);
63 }
64 subscribeToMore(options) {
65 // XXX: there's a bug in apollo-client typings
66 // it should not inherit types from ObservableQuery
67 return this.obsQuery.subscribeToMore(options);
68 }
69 updateQuery(mapFn) {
70 return this.obsQuery.updateQuery(mapFn);
71 }
72 stopPolling() {
73 return this.obsQuery.stopPolling();
74 }
75 startPolling(pollInterval) {
76 return this.obsQuery.startPolling(pollInterval);
77 }
78 setOptions(opts) {
79 return this.obsQuery.setOptions(opts);
80 }
81 setVariables(variables) {
82 return this.obsQuery.setVariables(variables);
83 }
84}
85//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3F1ZXJ5LXJlZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFXQSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxFQUFDLFlBQVksRUFBRSxhQUFhLEVBQUMsTUFBTSxTQUFTLENBQUM7QUFHcEQsU0FBUyxpQkFBaUIsQ0FBTyxRQUErQjtJQUM5RCxPQUFPLFNBQVMseUJBQXlCLENBQ3ZDLE1BQXFCO1FBRXJCLE9BQU8sSUFBSSxVQUFVLENBQUMsU0FBUyw2QkFBNkIsQ0FBQyxVQUFVO1lBQ3JFLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ2xELE1BQU0sRUFBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFDLEdBQUcsYUFBYSxDQUFDO1lBQzlELE1BQU0sRUFBQyxjQUFjLEVBQUUsV0FBVyxFQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztZQUV2RCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksS0FBSyxDQUFDO1lBRWpDLElBQ0UsY0FBYztnQkFDZCxPQUFPO2dCQUNQLENBQUMsQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO2dCQUN6QyxXQUFXLEtBQUssWUFBWTtnQkFDNUIsQ0FBQyxPQUFPO2dCQUNSLENBQUMsUUFBUSxFQUNUO2dCQUNBLFVBQVUsQ0FBQyxJQUFJLENBQUM7b0JBQ2QsR0FBRyxhQUFhO29CQUNoQixPQUFPLEVBQUUsSUFBSTtvQkFDYixhQUFhLEVBQUUsYUFBYSxDQUFDLE9BQU87aUJBQzlCLENBQUMsQ0FBQzthQUNYO1lBRUQsT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUtELE1BQU0sT0FBTyxRQUFRO0lBSW5CLFlBQ1UsUUFBK0IsRUFDdkMsTUFBYyxFQUNkLE9BQWdDO1FBRnhCLGFBQVEsR0FBUixRQUFRLENBQXVCO1FBSXZDLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXpFLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLGlCQUFpQjtZQUMzQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDaEQsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUNaLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7SUFDdkMsQ0FBQztJQUVELDRCQUE0QjtJQUU1QixJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7SUFDakMsQ0FBQztJQUVNLE1BQU07UUFDWCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRU0sYUFBYTtRQUNsQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVNLFlBQVk7UUFDakIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFTSxnQkFBZ0I7UUFDckIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVNLE9BQU8sQ0FBQyxTQUFhO1FBQzFCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVNLFNBQVMsQ0FDZCxnQkFBc0U7UUFFdEUsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTSxlQUFlLENBQ3BCLE9BQTBDO1FBRTFDLDhDQUE4QztRQUM5QyxtREFBbUQ7UUFDbkQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxPQUFjLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBQ00sV0FBVyxDQUNoQixLQUFvRTtRQUVwRSxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRU0sWUFBWSxDQUFDLFlBQW9CO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVNLFVBQVUsQ0FBQyxJQUFTO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVNLFlBQVksQ0FBQyxTQUFZO1FBQzlCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0MsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ1pvbmV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUge1xuICBBcG9sbG9RdWVyeVJlc3VsdCxcbiAgT2JzZXJ2YWJsZVF1ZXJ5LFxuICBBcG9sbG9FcnJvcixcbiAgRmV0Y2hNb3JlUXVlcnlPcHRpb25zLFxuICBGZXRjaE1vcmVPcHRpb25zLFxuICBTdWJzY3JpYmVUb01vcmVPcHRpb25zLFxuICBVcGRhdGVRdWVyeU9wdGlvbnMsXG4gIFR5cGVkRG9jdW1lbnROb2RlLFxufSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB7TmV0d29ya1N0YXR1c30gZnJvbSAnQGFwb2xsby9jbGllbnQvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGUsIGZyb219IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge3dyYXBXaXRoWm9uZSwgZml4T2JzZXJ2YWJsZX0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQge1dhdGNoUXVlcnlPcHRpb25zLCBFbXB0eU9iamVjdH0gZnJvbSAnLi90eXBlcyc7XG5cbmZ1bmN0aW9uIHVzZUluaXRpYWxMb2FkaW5nPFQsIFY+KG9ic1F1ZXJ5OiBPYnNlcnZhYmxlUXVlcnk8VCwgVj4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVzZUluaXRpYWxMb2FkaW5nT3BlcmF0b3I8VD4oXG4gICAgc291cmNlOiBPYnNlcnZhYmxlPFQ+LFxuICApOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUoZnVuY3Rpb24gdXNlSW5pdGlhbExvYWRpbmdTdWJzY3JpcHRpb24oc3Vic2NyaWJlcikge1xuICAgICAgY29uc3QgY3VycmVudFJlc3VsdCA9IG9ic1F1ZXJ5LmdldEN1cnJlbnRSZXN1bHQoKTtcbiAgICAgIGNvbnN0IHtsb2FkaW5nLCBlcnJvcnMsIGVycm9yLCBwYXJ0aWFsLCBkYXRhfSA9IGN1cnJlbnRSZXN1bHQ7XG4gICAgICBjb25zdCB7cGFydGlhbFJlZmV0Y2gsIGZldGNoUG9saWN5fSA9IG9ic1F1ZXJ5Lm9wdGlvbnM7XG5cbiAgICAgIGNvbnN0IGhhc0Vycm9yID0gZXJyb3JzIHx8IGVycm9yO1xuXG4gICAgICBpZiAoXG4gICAgICAgIHBhcnRpYWxSZWZldGNoICYmXG4gICAgICAgIHBhcnRpYWwgJiZcbiAgICAgICAgKCFkYXRhIHx8IE9iamVjdC5rZXlzKGRhdGEpLmxlbmd0aCA9PT0gMCkgJiZcbiAgICAgICAgZmV0Y2hQb2xpY3kgIT09ICdjYWNoZS1vbmx5JyAmJlxuICAgICAgICAhbG9hZGluZyAmJlxuICAgICAgICAhaGFzRXJyb3JcbiAgICAgICkge1xuICAgICAgICBzdWJzY3JpYmVyLm5leHQoe1xuICAgICAgICAgIC4uLmN1cnJlbnRSZXN1bHQsXG4gICAgICAgICAgbG9hZGluZzogdHJ1ZSxcbiAgICAgICAgICBuZXR3b3JrU3RhdHVzOiBOZXR3b3JrU3RhdHVzLmxvYWRpbmcsXG4gICAgICAgIH0gYXMgYW55KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHNvdXJjZS5zdWJzY3JpYmUoc3Vic2NyaWJlcik7XG4gICAgfSk7XG4gIH07XG59XG5cbmV4cG9ydCB0eXBlIFF1ZXJ5UmVmRnJvbURvY3VtZW50PFQgZXh0ZW5kcyBUeXBlZERvY3VtZW50Tm9kZT4gPVxuICBUIGV4dGVuZHMgVHlwZWREb2N1bWVudE5vZGU8aW5mZXIgUiwgaW5mZXIgVj4gPyBRdWVyeVJlZjxSLCBWPiA6IG5ldmVyO1xuXG5leHBvcnQgY2xhc3MgUXVlcnlSZWY8VCwgViA9IEVtcHR5T2JqZWN0PiB7XG4gIHB1YmxpYyB2YWx1ZUNoYW5nZXM6IE9ic2VydmFibGU8QXBvbGxvUXVlcnlSZXN1bHQ8VD4+O1xuICBwdWJsaWMgcXVlcnlJZDogT2JzZXJ2YWJsZVF1ZXJ5PFQsIFY+WydxdWVyeUlkJ107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBvYnNRdWVyeTogT2JzZXJ2YWJsZVF1ZXJ5PFQsIFY+LFxuICAgIG5nWm9uZTogTmdab25lLFxuICAgIG9wdGlvbnM6IFdhdGNoUXVlcnlPcHRpb25zPFYsIFQ+LFxuICApIHtcbiAgICBjb25zdCB3cmFwcGVkID0gd3JhcFdpdGhab25lKGZyb20oZml4T2JzZXJ2YWJsZSh0aGlzLm9ic1F1ZXJ5KSksIG5nWm9uZSk7XG5cbiAgICB0aGlzLnZhbHVlQ2hhbmdlcyA9IG9wdGlvbnMudXNlSW5pdGlhbExvYWRpbmdcbiAgICAgID8gd3JhcHBlZC5waXBlKHVzZUluaXRpYWxMb2FkaW5nKHRoaXMub2JzUXVlcnkpKVxuICAgICAgOiB3cmFwcGVkO1xuICAgIHRoaXMucXVlcnlJZCA9IHRoaXMub2JzUXVlcnkucXVlcnlJZDtcbiAgfVxuXG4gIC8vIE9ic2VydmFibGVRdWVyeSdzIG1ldGhvZHNcblxuICBwdWJsaWMgZ2V0IG9wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMub2JzUXVlcnkub3B0aW9ucztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFyaWFibGVzKCkge1xuICAgIHJldHVybiB0aGlzLm9ic1F1ZXJ5LnZhcmlhYmxlcztcbiAgfVxuXG4gIHB1YmxpYyByZXN1bHQoKTogUHJvbWlzZTxBcG9sbG9RdWVyeVJlc3VsdDxUPj4ge1xuICAgIHJldHVybiB0aGlzLm9ic1F1ZXJ5LnJlc3VsdCgpO1xuICB9XG5cbiAgcHVibGljIGdldEN1cnJlbnRSZXN1bHQoKTogQXBvbGxvUXVlcnlSZXN1bHQ8VD4ge1xuICAgIHJldHVybiB0aGlzLm9ic1F1ZXJ5LmdldEN1cnJlbnRSZXN1bHQoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRMYXN0UmVzdWx0KCk6IEFwb2xsb1F1ZXJ5UmVzdWx0PFQ+IHtcbiAgICByZXR1cm4gdGhpcy5vYnNRdWVyeS5nZXRMYXN0UmVzdWx0KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TGFzdEVycm9yKCk6IEFwb2xsb0Vycm9yIHtcbiAgICByZXR1cm4gdGhpcy5vYnNRdWVyeS5nZXRMYXN0RXJyb3IoKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNldExhc3RSZXN1bHRzKCk6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLm9ic1F1ZXJ5LnJlc2V0TGFzdFJlc3VsdHMoKTtcbiAgfVxuXG4gIHB1YmxpYyByZWZldGNoKHZhcmlhYmxlcz86IFYpOiBQcm9taXNlPEFwb2xsb1F1ZXJ5UmVzdWx0PFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMub2JzUXVlcnkucmVmZXRjaCh2YXJpYWJsZXMpO1xuICB9XG5cbiAgcHVibGljIGZldGNoTW9yZTxLIGV4dGVuZHMga2V5b2YgVj4oXG4gICAgZmV0Y2hNb3JlT3B0aW9uczogRmV0Y2hNb3JlUXVlcnlPcHRpb25zPFYsIEs+ICYgRmV0Y2hNb3JlT3B0aW9uczxULCBWPixcbiAgKTogUHJvbWlzZTxBcG9sbG9RdWVyeVJlc3VsdDxUPj4ge1xuICAgIHJldHVybiB0aGlzLm9ic1F1ZXJ5LmZldGNoTW9yZShmZXRjaE1vcmVPcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJzY3JpYmVUb01vcmU8TVQgPSBhbnksIE1WID0gRW1wdHlPYmplY3Q+KFxuICAgIG9wdGlvbnM6IFN1YnNjcmliZVRvTW9yZU9wdGlvbnM8VCwgTVYsIE1UPixcbiAgKTogKCkgPT4gdm9pZCB7XG4gICAgLy8gWFhYOiB0aGVyZSdzIGEgYnVnIGluIGFwb2xsby1jbGllbnQgdHlwaW5nc1xuICAgIC8vIGl0IHNob3VsZCBub3QgaW5oZXJpdCB0eXBlcyBmcm9tIE9ic2VydmFibGVRdWVyeVxuICAgIHJldHVybiB0aGlzLm9ic1F1ZXJ5LnN1YnNjcmliZVRvTW9yZShvcHRpb25zIGFzIGFueSk7XG4gIH1cbiAgcHVibGljIHVwZGF0ZVF1ZXJ5KFxuICAgIG1hcEZuOiAocHJldmlvdXNRdWVyeVJlc3VsdDogVCwgb3B0aW9uczogVXBkYXRlUXVlcnlPcHRpb25zPFY+KSA9PiBULFxuICApOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5vYnNRdWVyeS51cGRhdGVRdWVyeShtYXBGbik7XG4gIH1cblxuICBwdWJsaWMgc3RvcFBvbGxpbmcoKTogdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMub2JzUXVlcnkuc3RvcFBvbGxpbmcoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGFydFBvbGxpbmcocG9sbEludGVydmFsOiBudW1iZXIpOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5vYnNRdWVyeS5zdGFydFBvbGxpbmcocG9sbEludGVydmFsKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRPcHRpb25zKG9wdHM6IGFueSkge1xuICAgIHJldHVybiB0aGlzLm9ic1F1ZXJ5LnNldE9wdGlvbnMob3B0cyk7XG4gIH1cblxuICBwdWJsaWMgc2V0VmFyaWFibGVzKHZhcmlhYmxlczogVikge1xuICAgIHJldHVybiB0aGlzLm9ic1F1ZXJ5LnNldFZhcmlhYmxlcyh2YXJpYWJsZXMpO1xuICB9XG59XG4iXX0=
\No newline at end of file