@apollo/client 3.6.0-beta.9 → 3.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apollo-client.cjs +325 -255
- package/apollo-client.cjs.map +1 -1
- package/apollo-client.min.cjs +1 -1
- package/core/ApolloClient.d.ts +2 -3
- package/core/ApolloClient.d.ts.map +1 -1
- package/core/ApolloClient.js +2 -6
- package/core/ApolloClient.js.map +1 -1
- package/core/ObservableQuery.d.ts +9 -3
- package/core/ObservableQuery.d.ts.map +1 -1
- package/core/ObservableQuery.js +78 -41
- package/core/ObservableQuery.js.map +1 -1
- package/core/QueryInfo.d.ts.map +1 -1
- package/core/QueryInfo.js +4 -2
- package/core/QueryInfo.js.map +1 -1
- package/core/QueryManager.d.ts.map +1 -1
- package/core/QueryManager.js +26 -9
- package/core/QueryManager.js.map +1 -1
- package/core/core.cjs +115 -65
- package/core/core.cjs.map +1 -1
- package/core/watchQueryOptions.d.ts +3 -1
- package/core/watchQueryOptions.d.ts.map +1 -1
- package/core/watchQueryOptions.js.map +1 -1
- package/invariantErrorCodes.js +1 -1
- package/package.json +23 -21
- package/react/hooks/hooks.cjs +193 -180
- package/react/hooks/hooks.cjs.map +1 -1
- package/react/hooks/index.d.ts +1 -1
- package/react/hooks/index.d.ts.map +1 -1
- package/react/hooks/index.js +1 -1
- package/react/hooks/index.js.map +1 -1
- package/react/hooks/useLazyQuery.d.ts +2 -2
- package/react/hooks/useLazyQuery.d.ts.map +1 -1
- package/react/hooks/useLazyQuery.js +38 -24
- package/react/hooks/useLazyQuery.js.map +1 -1
- package/react/hooks/useMutation.d.ts.map +1 -1
- package/react/hooks/useMutation.js +6 -3
- package/react/hooks/useMutation.js.map +1 -1
- package/react/hooks/useQuery.d.ts +33 -3
- package/react/hooks/useQuery.d.ts.map +1 -1
- package/react/hooks/useQuery.js +152 -134
- package/react/hooks/useQuery.js.map +1 -1
- package/react/ssr/RenderPromises.d.ts +2 -1
- package/react/ssr/RenderPromises.d.ts.map +1 -1
- package/react/ssr/RenderPromises.js +23 -1
- package/react/ssr/RenderPromises.js.map +1 -1
- package/react/ssr/ssr.cjs +23 -1
- package/react/ssr/ssr.cjs.map +1 -1
- package/react/types/types.d.ts +9 -13
- package/react/types/types.d.ts.map +1 -1
- package/react/types/types.js.map +1 -1
- package/testing/core/mocking/mockFetch.js +1 -1
- package/testing/core/mocking/mockFetch.js.map +1 -1
- package/utilities/common/mergeOptions.d.ts +5 -0
- package/utilities/common/mergeOptions.d.ts.map +1 -0
- package/utilities/common/mergeOptions.js +8 -0
- package/utilities/common/mergeOptions.js.map +1 -0
- package/utilities/graphql/transform.d.ts +2 -2
- package/utilities/graphql/transform.d.ts.map +1 -1
- package/utilities/graphql/transform.js +1 -1
- package/utilities/graphql/transform.js.map +1 -1
- package/utilities/index.d.ts +1 -0
- package/utilities/index.d.ts.map +1 -1
- package/utilities/index.js +1 -0
- package/utilities/index.js.map +1 -1
- package/utilities/utilities.cjs +8 -1
- package/utilities/utilities.cjs.map +1 -1
- package/version.js +1 -1
- package/react/hooks/options.d.ts +0 -3
- package/react/hooks/options.d.ts.map +0 -1
- package/react/hooks/options.js +0 -20
- package/react/hooks/options.js.map +0 -1
package/react/hooks/hooks.cjs
CHANGED
|
@@ -6,16 +6,13 @@ var globals = require('../../utilities/globals');
|
|
|
6
6
|
var react = require('react');
|
|
7
7
|
var context = require('../context');
|
|
8
8
|
var tslib = require('tslib');
|
|
9
|
-
var equal = require('@wry/equality');
|
|
10
9
|
var errors = require('../../errors');
|
|
10
|
+
var index_js = require('use-sync-external-store/shim/index.js');
|
|
11
|
+
var equality = require('@wry/equality');
|
|
11
12
|
var core = require('../../core');
|
|
12
13
|
var parser = require('../parser');
|
|
13
14
|
var utilities = require('../../utilities');
|
|
14
15
|
|
|
15
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e["default"] : e; }
|
|
16
|
-
|
|
17
|
-
var equal__default = /*#__PURE__*/_interopDefaultLegacy(equal);
|
|
18
|
-
|
|
19
16
|
function useApolloClient(override) {
|
|
20
17
|
var context$1 = react.useContext(context.getApolloContext());
|
|
21
18
|
var client = override || context$1.client;
|
|
@@ -25,26 +22,9 @@ function useApolloClient(override) {
|
|
|
25
22
|
return client;
|
|
26
23
|
}
|
|
27
24
|
|
|
28
|
-
function useNormalizedOptions(optionsOrFunction) {
|
|
29
|
-
var optionsRef = react.useRef();
|
|
30
|
-
var options = optionsRef.current || Object.create(null);
|
|
31
|
-
if (typeof optionsOrFunction === "function") {
|
|
32
|
-
var newOptions = optionsOrFunction(options);
|
|
33
|
-
if (newOptions !== options) {
|
|
34
|
-
Object.assign(options, newOptions, newOptions.variables && {
|
|
35
|
-
variables: tslib.__assign(tslib.__assign({}, options.variables), newOptions.variables),
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
else if (optionsOrFunction && !equal__default(optionsOrFunction, options)) {
|
|
40
|
-
options = optionsOrFunction;
|
|
41
|
-
}
|
|
42
|
-
return optionsRef.current = options;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
25
|
var hasOwnProperty = Object.prototype.hasOwnProperty;
|
|
46
|
-
function useQuery(query,
|
|
47
|
-
|
|
26
|
+
function useQuery(query, options) {
|
|
27
|
+
if (options === void 0) { options = Object.create(null); }
|
|
48
28
|
return useInternalState(useApolloClient(options.client), query).useQuery(options);
|
|
49
29
|
}
|
|
50
30
|
function useInternalState(client, query) {
|
|
@@ -65,118 +45,31 @@ var InternalState = (function () {
|
|
|
65
45
|
function InternalState(client, query) {
|
|
66
46
|
this.client = client;
|
|
67
47
|
this.query = query;
|
|
48
|
+
this.ssrDisabledResult = utilities.maybeDeepFreeze({
|
|
49
|
+
loading: true,
|
|
50
|
+
data: void 0,
|
|
51
|
+
error: void 0,
|
|
52
|
+
networkStatus: core.NetworkStatus.loading,
|
|
53
|
+
});
|
|
54
|
+
this.skipStandbyResult = utilities.maybeDeepFreeze({
|
|
55
|
+
loading: false,
|
|
56
|
+
data: void 0,
|
|
57
|
+
error: void 0,
|
|
58
|
+
networkStatus: core.NetworkStatus.ready,
|
|
59
|
+
});
|
|
68
60
|
this.toQueryResultCache = new (utilities.canUseWeakMap ? WeakMap : Map)();
|
|
69
61
|
parser.verifyDocumentType(query, parser.DocumentType.Query);
|
|
70
62
|
}
|
|
71
63
|
InternalState.prototype.forceUpdate = function () {
|
|
72
64
|
};
|
|
73
65
|
InternalState.prototype.useQuery = function (options) {
|
|
66
|
+
var _this = this;
|
|
67
|
+
this.renderPromises = react.useContext(context.getApolloContext()).renderPromises;
|
|
74
68
|
this.useOptions(options);
|
|
75
69
|
var obsQuery = this.useObservableQuery();
|
|
76
|
-
|
|
77
|
-
var result = this.getCurrentResult();
|
|
78
|
-
this.unsafeHandlePartialRefetch(result);
|
|
79
|
-
return this.toQueryResult(result);
|
|
80
|
-
};
|
|
81
|
-
InternalState.prototype.useOptions = function (options) {
|
|
82
|
-
this.renderPromises = react.useContext(context.getApolloContext()).renderPromises;
|
|
83
|
-
var watchQueryOptions = this.createWatchQueryOptions(this.queryHookOptions = options);
|
|
84
|
-
if (!equal.equal(watchQueryOptions, this.watchQueryOptions)) {
|
|
85
|
-
this.watchQueryOptions = watchQueryOptions;
|
|
86
|
-
}
|
|
87
|
-
this.ssrDisabled = !!(options && (options.ssr === false ||
|
|
88
|
-
options.skip));
|
|
89
|
-
this.onCompleted = options
|
|
90
|
-
&& options.onCompleted
|
|
91
|
-
|| InternalState.prototype.onCompleted;
|
|
92
|
-
this.onError = options
|
|
93
|
-
&& options.onError
|
|
94
|
-
|| InternalState.prototype.onError;
|
|
95
|
-
};
|
|
96
|
-
InternalState.prototype.createWatchQueryOptions = function (_a) {
|
|
97
|
-
var _b;
|
|
98
|
-
if (_a === void 0) { _a = {}; }
|
|
99
|
-
var skip = _a.skip; _a.ssr; _a.onCompleted; _a.onError; _a.displayName; var otherOptions = tslib.__rest(_a, ["skip", "ssr", "onCompleted", "onError", "displayName"]);
|
|
100
|
-
var watchQueryOptions = Object.assign(otherOptions, { query: this.query });
|
|
101
|
-
if (skip) {
|
|
102
|
-
watchQueryOptions.fetchPolicy = 'standby';
|
|
103
|
-
}
|
|
104
|
-
else if (((_b = watchQueryOptions.context) === null || _b === void 0 ? void 0 : _b.renderPromises) &&
|
|
105
|
-
(watchQueryOptions.fetchPolicy === 'network-only' ||
|
|
106
|
-
watchQueryOptions.fetchPolicy === 'cache-and-network')) {
|
|
107
|
-
watchQueryOptions.fetchPolicy = 'cache-first';
|
|
108
|
-
}
|
|
109
|
-
else if (!watchQueryOptions.fetchPolicy) {
|
|
110
|
-
var defaultOptions = this.client.defaultOptions.watchQuery;
|
|
111
|
-
watchQueryOptions.fetchPolicy =
|
|
112
|
-
defaultOptions && defaultOptions.fetchPolicy || 'cache-first';
|
|
113
|
-
}
|
|
114
|
-
if (!watchQueryOptions.variables) {
|
|
115
|
-
watchQueryOptions.variables = {};
|
|
116
|
-
}
|
|
117
|
-
return watchQueryOptions;
|
|
118
|
-
};
|
|
119
|
-
InternalState.prototype.onCompleted = function (data) { };
|
|
120
|
-
InternalState.prototype.onError = function (error) { };
|
|
121
|
-
InternalState.prototype.useObservableQuery = function () {
|
|
122
|
-
var _this = this;
|
|
123
|
-
var obsQuery = this.observable =
|
|
124
|
-
this.renderPromises
|
|
125
|
-
&& this.renderPromises.getSSRObservable(this.watchQueryOptions)
|
|
126
|
-
|| this.observable
|
|
127
|
-
|| this.client.watchQuery(this.watchQueryOptions);
|
|
128
|
-
this.obsQueryFields = react.useMemo(function () { return ({
|
|
129
|
-
refetch: obsQuery.refetch.bind(obsQuery),
|
|
130
|
-
fetchMore: obsQuery.fetchMore.bind(obsQuery),
|
|
131
|
-
updateQuery: obsQuery.updateQuery.bind(obsQuery),
|
|
132
|
-
startPolling: obsQuery.startPolling.bind(obsQuery),
|
|
133
|
-
stopPolling: obsQuery.stopPolling.bind(obsQuery),
|
|
134
|
-
subscribeToMore: obsQuery.subscribeToMore.bind(obsQuery),
|
|
135
|
-
}); }, [obsQuery]);
|
|
136
|
-
if (this.renderPromises) {
|
|
137
|
-
this.renderPromises.registerSSRObservable(obsQuery);
|
|
138
|
-
if (!this.ssrDisabled && obsQuery.getCurrentResult().loading) {
|
|
139
|
-
this.renderPromises.addQueryPromise({
|
|
140
|
-
getOptions: function () { return obsQuery.options; },
|
|
141
|
-
fetchData: function () { return new Promise(function (resolve) {
|
|
142
|
-
var sub = obsQuery.subscribe({
|
|
143
|
-
next: function (result) {
|
|
144
|
-
if (!result.loading) {
|
|
145
|
-
resolve();
|
|
146
|
-
sub.unsubscribe();
|
|
147
|
-
}
|
|
148
|
-
},
|
|
149
|
-
error: function () {
|
|
150
|
-
resolve();
|
|
151
|
-
sub.unsubscribe();
|
|
152
|
-
},
|
|
153
|
-
complete: function () {
|
|
154
|
-
resolve();
|
|
155
|
-
},
|
|
156
|
-
});
|
|
157
|
-
}); },
|
|
158
|
-
}, function () { return null; });
|
|
159
|
-
obsQuery.setOptions(this.watchQueryOptions).catch(function () { });
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
var prevOptionsRef = react.useRef({
|
|
163
|
-
watchQueryOptions: this.watchQueryOptions,
|
|
164
|
-
});
|
|
165
|
-
react.useEffect(function () {
|
|
166
|
-
if (_this.renderPromises) ;
|
|
167
|
-
else if (_this.watchQueryOptions !== prevOptionsRef.current.watchQueryOptions) {
|
|
168
|
-
obsQuery.setOptions(_this.watchQueryOptions).catch(function () { });
|
|
169
|
-
prevOptionsRef.current.watchQueryOptions = _this.watchQueryOptions;
|
|
170
|
-
_this.setResult(obsQuery.getCurrentResult());
|
|
171
|
-
}
|
|
172
|
-
}, [obsQuery, this.watchQueryOptions]);
|
|
173
|
-
return obsQuery;
|
|
174
|
-
};
|
|
175
|
-
InternalState.prototype.useSubscriptionEffect = function (obsQuery) {
|
|
176
|
-
var _this = this;
|
|
177
|
-
react.useEffect(function () {
|
|
70
|
+
var result = index_js.useSyncExternalStore(react.useCallback(function () {
|
|
178
71
|
if (_this.renderPromises) {
|
|
179
|
-
return;
|
|
72
|
+
return function () { };
|
|
180
73
|
}
|
|
181
74
|
var onNext = function () {
|
|
182
75
|
var previousResult = _this.result;
|
|
@@ -184,7 +77,7 @@ var InternalState = (function () {
|
|
|
184
77
|
if (previousResult &&
|
|
185
78
|
previousResult.loading === result.loading &&
|
|
186
79
|
previousResult.networkStatus === result.networkStatus &&
|
|
187
|
-
|
|
80
|
+
equality.equal(previousResult.data, result.data)) {
|
|
188
81
|
return;
|
|
189
82
|
}
|
|
190
83
|
_this.setResult(result);
|
|
@@ -205,7 +98,7 @@ var InternalState = (function () {
|
|
|
205
98
|
var previousResult = _this.result;
|
|
206
99
|
if (!previousResult ||
|
|
207
100
|
(previousResult && previousResult.loading) ||
|
|
208
|
-
!
|
|
101
|
+
!equality.equal(error, previousResult.error)) {
|
|
209
102
|
_this.setResult({
|
|
210
103
|
data: (previousResult && previousResult.data),
|
|
211
104
|
error: error,
|
|
@@ -220,7 +113,117 @@ var InternalState = (function () {
|
|
|
220
113
|
obsQuery,
|
|
221
114
|
this.renderPromises,
|
|
222
115
|
this.client.disableNetworkFetches,
|
|
223
|
-
]);
|
|
116
|
+
]), function () { return _this.getCurrentResult(); });
|
|
117
|
+
this.unsafeHandlePartialRefetch(result);
|
|
118
|
+
return this.toQueryResult(result);
|
|
119
|
+
};
|
|
120
|
+
InternalState.prototype.useOptions = function (options) {
|
|
121
|
+
var _a;
|
|
122
|
+
var watchQueryOptions = this.createWatchQueryOptions(this.queryHookOptions = options);
|
|
123
|
+
var currentWatchQueryOptions = this.watchQueryOptions;
|
|
124
|
+
var resolveFetchBlockingPromise;
|
|
125
|
+
if (!equality.equal(watchQueryOptions, currentWatchQueryOptions)) {
|
|
126
|
+
this.watchQueryOptions = watchQueryOptions;
|
|
127
|
+
if (currentWatchQueryOptions && this.observable) {
|
|
128
|
+
this.observable.reobserve(tslib.__assign({ fetchBlockingPromise: new Promise(function (resolve) {
|
|
129
|
+
resolveFetchBlockingPromise = resolve;
|
|
130
|
+
}) }, watchQueryOptions));
|
|
131
|
+
this.previousData = ((_a = this.result) === null || _a === void 0 ? void 0 : _a.data) || this.previousData;
|
|
132
|
+
this.result = void 0;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
useUnblockFetchEffect(this.renderPromises, resolveFetchBlockingPromise);
|
|
136
|
+
this.onCompleted = options.onCompleted || InternalState.prototype.onCompleted;
|
|
137
|
+
this.onError = options.onError || InternalState.prototype.onError;
|
|
138
|
+
if ((this.renderPromises || this.client.disableNetworkFetches) &&
|
|
139
|
+
this.queryHookOptions.ssr === false) {
|
|
140
|
+
this.result = this.ssrDisabledResult;
|
|
141
|
+
}
|
|
142
|
+
else if (this.queryHookOptions.skip ||
|
|
143
|
+
this.watchQueryOptions.fetchPolicy === 'standby') {
|
|
144
|
+
this.result = this.skipStandbyResult;
|
|
145
|
+
}
|
|
146
|
+
else if (this.result === this.ssrDisabledResult ||
|
|
147
|
+
this.result === this.skipStandbyResult) {
|
|
148
|
+
this.result = void 0;
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
InternalState.prototype.createWatchQueryOptions = function (_a) {
|
|
152
|
+
if (_a === void 0) { _a = {}; }
|
|
153
|
+
var skip = _a.skip; _a.ssr; _a.onCompleted; _a.onError; _a.displayName; var defaultOptions = _a.defaultOptions, otherOptions = tslib.__rest(_a, ["skip", "ssr", "onCompleted", "onError", "displayName", "defaultOptions"]);
|
|
154
|
+
var toMerge = [];
|
|
155
|
+
var globalDefaults = this.client.defaultOptions.watchQuery;
|
|
156
|
+
if (globalDefaults)
|
|
157
|
+
toMerge.push(globalDefaults);
|
|
158
|
+
if (defaultOptions)
|
|
159
|
+
toMerge.push(defaultOptions);
|
|
160
|
+
var latestOptions = this.observable && this.observable.options;
|
|
161
|
+
if (latestOptions && toMerge.length) {
|
|
162
|
+
var defaults_1 = toMerge.reduce(core.mergeOptions, Object.create(null));
|
|
163
|
+
toMerge.length = 1;
|
|
164
|
+
toMerge[0] = defaults_1;
|
|
165
|
+
Object.keys(defaults_1).forEach(function (defaultOptionName) {
|
|
166
|
+
var currentOptionValue = latestOptions[defaultOptionName];
|
|
167
|
+
if (hasOwnProperty.call(latestOptions, defaultOptionName) &&
|
|
168
|
+
!equality.equal(defaults_1[defaultOptionName], currentOptionValue)) {
|
|
169
|
+
defaults_1[defaultOptionName] = defaultOptionName === "variables"
|
|
170
|
+
? tslib.__assign(tslib.__assign({}, defaults_1.variables), currentOptionValue) : currentOptionValue;
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
toMerge.push(otherOptions);
|
|
175
|
+
var merged = toMerge.reduce(core.mergeOptions, Object.create(null));
|
|
176
|
+
var watchQueryOptions = Object.assign(merged, { query: this.query });
|
|
177
|
+
if (this.renderPromises &&
|
|
178
|
+
(watchQueryOptions.fetchPolicy === 'network-only' ||
|
|
179
|
+
watchQueryOptions.fetchPolicy === 'cache-and-network')) {
|
|
180
|
+
watchQueryOptions.fetchPolicy = 'cache-first';
|
|
181
|
+
}
|
|
182
|
+
else if (!watchQueryOptions.fetchPolicy) {
|
|
183
|
+
watchQueryOptions.fetchPolicy = 'cache-first';
|
|
184
|
+
}
|
|
185
|
+
if (skip) {
|
|
186
|
+
var _b = watchQueryOptions.initialFetchPolicy, initialFetchPolicy = _b === void 0 ? watchQueryOptions.fetchPolicy : _b;
|
|
187
|
+
Object.assign(watchQueryOptions, {
|
|
188
|
+
initialFetchPolicy: initialFetchPolicy,
|
|
189
|
+
fetchPolicy: 'standby',
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
if (!watchQueryOptions.variables) {
|
|
193
|
+
watchQueryOptions.variables = {};
|
|
194
|
+
}
|
|
195
|
+
return watchQueryOptions;
|
|
196
|
+
};
|
|
197
|
+
InternalState.prototype.onCompleted = function (data) { };
|
|
198
|
+
InternalState.prototype.onError = function (error) { };
|
|
199
|
+
InternalState.prototype.useObservableQuery = function () {
|
|
200
|
+
var resolveFetchBlockingPromise;
|
|
201
|
+
var obsQuery = this.observable =
|
|
202
|
+
this.renderPromises
|
|
203
|
+
&& this.renderPromises.getSSRObservable(this.watchQueryOptions)
|
|
204
|
+
|| this.observable
|
|
205
|
+
|| this.client.watchQuery(tslib.__assign({ fetchBlockingPromise: new Promise(function (resolve) {
|
|
206
|
+
resolveFetchBlockingPromise = resolve;
|
|
207
|
+
}) }, this.watchQueryOptions));
|
|
208
|
+
useUnblockFetchEffect(this.renderPromises, resolveFetchBlockingPromise);
|
|
209
|
+
this.obsQueryFields = react.useMemo(function () { return ({
|
|
210
|
+
refetch: obsQuery.refetch.bind(obsQuery),
|
|
211
|
+
reobserve: obsQuery.reobserve.bind(obsQuery),
|
|
212
|
+
fetchMore: obsQuery.fetchMore.bind(obsQuery),
|
|
213
|
+
updateQuery: obsQuery.updateQuery.bind(obsQuery),
|
|
214
|
+
startPolling: obsQuery.startPolling.bind(obsQuery),
|
|
215
|
+
stopPolling: obsQuery.stopPolling.bind(obsQuery),
|
|
216
|
+
subscribeToMore: obsQuery.subscribeToMore.bind(obsQuery),
|
|
217
|
+
}); }, [obsQuery]);
|
|
218
|
+
if (this.renderPromises) {
|
|
219
|
+
this.renderPromises.registerSSRObservable(obsQuery);
|
|
220
|
+
var ssrAllowed = !(this.queryHookOptions.ssr === false ||
|
|
221
|
+
this.queryHookOptions.skip);
|
|
222
|
+
if (ssrAllowed && obsQuery.getCurrentResult().loading) {
|
|
223
|
+
this.renderPromises.addObservableQueryPromise(obsQuery);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
return obsQuery;
|
|
224
227
|
};
|
|
225
228
|
InternalState.prototype.setResult = function (nextResult) {
|
|
226
229
|
var previousResult = this.result;
|
|
@@ -242,30 +245,10 @@ var InternalState = (function () {
|
|
|
242
245
|
}
|
|
243
246
|
};
|
|
244
247
|
InternalState.prototype.getCurrentResult = function () {
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
result = this.result = this.observable.getCurrentResult();
|
|
248
|
-
this.handleErrorOrCompleted(result);
|
|
249
|
-
}
|
|
250
|
-
if ((this.renderPromises || this.client.disableNetworkFetches) &&
|
|
251
|
-
this.queryHookOptions.ssr === false) {
|
|
252
|
-
result = {
|
|
253
|
-
loading: true,
|
|
254
|
-
data: void 0,
|
|
255
|
-
error: void 0,
|
|
256
|
-
networkStatus: core.NetworkStatus.loading,
|
|
257
|
-
};
|
|
248
|
+
if (!this.result) {
|
|
249
|
+
this.handleErrorOrCompleted(this.result = this.observable.getCurrentResult());
|
|
258
250
|
}
|
|
259
|
-
|
|
260
|
-
this.queryHookOptions.fetchPolicy === 'standby') {
|
|
261
|
-
result = {
|
|
262
|
-
loading: false,
|
|
263
|
-
data: void 0,
|
|
264
|
-
error: void 0,
|
|
265
|
-
networkStatus: core.NetworkStatus.ready,
|
|
266
|
-
};
|
|
267
|
-
}
|
|
268
|
-
return result;
|
|
251
|
+
return this.result;
|
|
269
252
|
};
|
|
270
253
|
InternalState.prototype.toQueryResult = function (result) {
|
|
271
254
|
var queryResult = this.toQueryResultCache.get(result);
|
|
@@ -293,34 +276,52 @@ var InternalState = (function () {
|
|
|
293
276
|
};
|
|
294
277
|
return InternalState;
|
|
295
278
|
}());
|
|
279
|
+
function useUnblockFetchEffect(renderPromises, resolveFetchBlockingPromise) {
|
|
280
|
+
if (resolveFetchBlockingPromise) {
|
|
281
|
+
if (renderPromises) {
|
|
282
|
+
resolveFetchBlockingPromise(true);
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
setTimeout(function () { return resolveFetchBlockingPromise(false); }, 5000);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
react.useEffect(function () {
|
|
289
|
+
if (resolveFetchBlockingPromise) {
|
|
290
|
+
resolveFetchBlockingPromise(true);
|
|
291
|
+
}
|
|
292
|
+
}, [resolveFetchBlockingPromise]);
|
|
293
|
+
}
|
|
296
294
|
|
|
297
295
|
var EAGER_METHODS = [
|
|
298
296
|
'refetch',
|
|
297
|
+
'reobserve',
|
|
299
298
|
'fetchMore',
|
|
300
299
|
'updateQuery',
|
|
301
300
|
'startPolling',
|
|
302
301
|
'subscribeToMore',
|
|
303
302
|
];
|
|
304
|
-
function useLazyQuery(query,
|
|
305
|
-
var
|
|
306
|
-
var
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
}
|
|
303
|
+
function useLazyQuery(query, options) {
|
|
304
|
+
var internalState = useInternalState(useApolloClient(options && options.client), query);
|
|
305
|
+
var execOptionsRef = react.useRef();
|
|
306
|
+
var defaultOptions = internalState.client.defaultOptions.watchQuery;
|
|
307
|
+
var initialFetchPolicy = (options && options.fetchPolicy) ||
|
|
308
|
+
(execOptionsRef.current && execOptionsRef.current.fetchPolicy) ||
|
|
309
|
+
(defaultOptions && defaultOptions.fetchPolicy) ||
|
|
310
|
+
"cache-first";
|
|
311
|
+
var useQueryResult = internalState.useQuery(tslib.__assign(tslib.__assign(tslib.__assign({}, options), execOptionsRef.current), { skip: !execOptionsRef.current }));
|
|
312
|
+
var result = Object.assign(useQueryResult, {
|
|
313
|
+
called: !!execOptionsRef.current,
|
|
314
|
+
});
|
|
313
315
|
var eagerMethods = react.useMemo(function () {
|
|
314
316
|
var eagerMethods = {};
|
|
315
317
|
var _loop_1 = function (key) {
|
|
316
318
|
var method = result[key];
|
|
317
319
|
eagerMethods[key] = function () {
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
320
|
+
if (!execOptionsRef.current) {
|
|
321
|
+
execOptionsRef.current = Object.create(null);
|
|
322
|
+
internalState.forceUpdate();
|
|
321
323
|
}
|
|
322
|
-
|
|
323
|
-
return method.apply(void 0, args);
|
|
324
|
+
return method.apply(this, arguments);
|
|
324
325
|
};
|
|
325
326
|
};
|
|
326
327
|
for (var _i = 0, EAGER_METHODS_1 = EAGER_METHODS; _i < EAGER_METHODS_1.length; _i++) {
|
|
@@ -329,15 +330,24 @@ function useLazyQuery(query, optionsOrFunction) {
|
|
|
329
330
|
}
|
|
330
331
|
return eagerMethods;
|
|
331
332
|
}, []);
|
|
332
|
-
result.error = result.error || void 0;
|
|
333
333
|
Object.assign(result, eagerMethods);
|
|
334
334
|
var execute = react.useCallback(function (executeOptions) {
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
335
|
+
var promise = result.reobserve(execOptionsRef.current = executeOptions ? tslib.__assign(tslib.__assign({}, executeOptions), { fetchPolicy: executeOptions.fetchPolicy || initialFetchPolicy }) : {
|
|
336
|
+
fetchPolicy: initialFetchPolicy,
|
|
337
|
+
}).then(function (apolloQueryResult) {
|
|
338
|
+
apolloQueryResult = apolloQueryResult || internalState["getCurrentResult"]();
|
|
339
|
+
if (apolloQueryResult.error ||
|
|
340
|
+
utilities.isNonEmptyArray(apolloQueryResult.errors)) {
|
|
341
|
+
var _a = result.observable.options.errorPolicy, errorPolicy = _a === void 0 ? "none" : _a;
|
|
342
|
+
if (errorPolicy === "none") {
|
|
343
|
+
throw apolloQueryResult.error || new errors.ApolloError({
|
|
344
|
+
graphQLErrors: apolloQueryResult.errors,
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
return internalState.toQueryResult(apolloQueryResult);
|
|
349
|
+
}).then(function (queryResult) { return Object.assign(queryResult, eagerMethods); });
|
|
350
|
+
internalState.forceUpdate();
|
|
341
351
|
promise.catch(function () { });
|
|
342
352
|
return promise;
|
|
343
353
|
}, []);
|
|
@@ -393,7 +403,7 @@ function useMutation(mutation, options) {
|
|
|
393
403
|
error: error,
|
|
394
404
|
client: client,
|
|
395
405
|
};
|
|
396
|
-
if (ref.current.isMounted && !
|
|
406
|
+
if (ref.current.isMounted && !equality.equal(ref.current.result, result_1)) {
|
|
397
407
|
setResult(ref.current.result = result_1);
|
|
398
408
|
}
|
|
399
409
|
}
|
|
@@ -411,7 +421,7 @@ function useMutation(mutation, options) {
|
|
|
411
421
|
called: true,
|
|
412
422
|
client: client,
|
|
413
423
|
};
|
|
414
|
-
if (!
|
|
424
|
+
if (!equality.equal(ref.current.result, result_2)) {
|
|
415
425
|
setResult(ref.current.result = result_2);
|
|
416
426
|
}
|
|
417
427
|
}
|
|
@@ -426,9 +436,12 @@ function useMutation(mutation, options) {
|
|
|
426
436
|
var reset = react.useCallback(function () {
|
|
427
437
|
setResult({ called: false, loading: false, client: client });
|
|
428
438
|
}, []);
|
|
429
|
-
react.useEffect(function () {
|
|
430
|
-
ref.current.isMounted =
|
|
431
|
-
|
|
439
|
+
react.useEffect(function () {
|
|
440
|
+
ref.current.isMounted = true;
|
|
441
|
+
return function () {
|
|
442
|
+
ref.current.isMounted = false;
|
|
443
|
+
};
|
|
444
|
+
}, []);
|
|
432
445
|
return [execute, tslib.__assign({ reset: reset }, result)];
|
|
433
446
|
}
|
|
434
447
|
|
|
@@ -474,7 +487,7 @@ function useSubscription(subscription, options) {
|
|
|
474
487
|
subscription !== ref.current.subscription ||
|
|
475
488
|
(options === null || options === void 0 ? void 0 : options.fetchPolicy) !== ((_b = ref.current.options) === null || _b === void 0 ? void 0 : _b.fetchPolicy) ||
|
|
476
489
|
!(options === null || options === void 0 ? void 0 : options.skip) !== !((_c = ref.current.options) === null || _c === void 0 ? void 0 : _c.skip) ||
|
|
477
|
-
!
|
|
490
|
+
!equality.equal(options === null || options === void 0 ? void 0 : options.variables, (_d = ref.current.options) === null || _d === void 0 ? void 0 : _d.variables))) {
|
|
478
491
|
setResult({
|
|
479
492
|
loading: true,
|
|
480
493
|
data: void 0,
|