@apollo/client 3.10.8 → 3.11.0-rc.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/.changeset/angry-ravens-mate.md +5 -0
- package/.changeset/angry-seals-jog.md +5 -0
- package/.changeset/chilly-dots-shake.md +5 -0
- package/.changeset/clever-bikes-admire.md +5 -0
- package/.changeset/flat-onions-guess.md +5 -0
- package/.changeset/fluffy-badgers-rush.md +5 -0
- package/.changeset/little-suits-return.md +5 -0
- package/.changeset/nasty-olives-act.md +5 -0
- package/.changeset/pink-ants-remember.md +16 -0
- package/.changeset/pre.json +24 -0
- package/.changeset/slimy-balloons-cheat.md +5 -0
- package/.changeset/slimy-berries-yawn.md +14 -0
- package/.changeset/tasty-chairs-dress.md +5 -0
- package/.changeset/thin-lies-begin.md +5 -0
- package/.changeset/unlucky-birds-press.md +5 -0
- package/.changeset/weak-ads-develop.md +5 -0
- package/CHANGELOG.md +60 -4
- package/apollo-client.cjs +501 -410
- package/apollo-client.cjs.map +1 -1
- package/apollo-client.min.cjs +1 -1
- package/core/ApolloClient.d.ts +24 -2
- package/core/ApolloClient.js +9 -8
- package/core/ApolloClient.js.map +1 -1
- package/core/ObservableQuery.js +5 -1
- package/core/ObservableQuery.js.map +1 -1
- package/core/QueryInfo.d.ts +2 -2
- package/core/QueryInfo.js.map +1 -1
- package/core/QueryManager.d.ts +1 -1
- package/core/QueryManager.js +5 -4
- package/core/QueryManager.js.map +1 -1
- package/core/core.cjs +18 -11
- package/core/core.cjs.map +1 -1
- package/core/core.cjs.native.js +18 -11
- package/core/types.d.ts +2 -2
- package/core/types.js.map +1 -1
- package/core/watchQueryOptions.d.ts +4 -0
- package/core/watchQueryOptions.js.map +1 -1
- package/dev/dev.cjs +40 -34
- package/dev/dev.cjs.map +1 -1
- package/dev/dev.cjs.native.js +40 -34
- package/errors/errors.cjs +4 -0
- package/errors/errors.cjs.map +1 -1
- package/errors/errors.cjs.native.js +4 -0
- package/errors/index.d.ts +18 -3
- package/errors/index.js +7 -2
- package/errors/index.js.map +1 -1
- package/invariantErrorCodes.js +41 -34
- package/link/core/types.d.ts +6 -4
- package/link/core/types.js.map +1 -1
- package/link/error/index.d.ts +4 -4
- package/link/error/index.js.map +1 -1
- package/link/persisted-queries/index.d.ts +3 -3
- package/link/persisted-queries/index.js.map +1 -1
- package/link/subscriptions/index.js +1 -0
- package/link/subscriptions/index.js.map +1 -1
- package/link/subscriptions/subscriptions.cjs.map +1 -1
- package/package.json +29 -29
- package/react/hooks/hooks.cjs +445 -368
- package/react/hooks/hooks.cjs.map +1 -1
- package/react/hooks/hooks.cjs.native.js +445 -368
- package/react/hooks/internal/wrapHook.d.ts +2 -0
- package/react/hooks/internal/wrapHook.js.map +1 -1
- package/react/hooks/useBackgroundQuery.d.ts +15 -1
- package/react/hooks/useBackgroundQuery.js +5 -1
- package/react/hooks/useBackgroundQuery.js.map +1 -1
- package/react/hooks/useLazyQuery.js +54 -12
- package/react/hooks/useLazyQuery.js.map +1 -1
- package/react/hooks/useLoadableQuery.d.ts +7 -1
- package/react/hooks/useLoadableQuery.js +5 -1
- package/react/hooks/useLoadableQuery.js.map +1 -1
- package/react/hooks/useQuery.d.ts +34 -47
- package/react/hooks/useQuery.js +387 -388
- package/react/hooks/useQuery.js.map +1 -1
- package/react/hooks/useQueryRefHandlers.d.ts +7 -1
- package/react/hooks/useQueryRefHandlers.js +5 -1
- package/react/hooks/useQueryRefHandlers.js.map +1 -1
- package/react/hooks/useSubscription.d.ts +13 -10
- package/react/hooks/useSubscription.js +130 -98
- package/react/hooks/useSubscription.js.map +1 -1
- package/react/hooks/useSuspenseQuery.js +3 -3
- package/react/hooks/useSuspenseQuery.js.map +1 -1
- package/react/hooks/useSyncExternalStore.js +1 -1
- package/react/internal/cache/QueryReference.js +1 -1
- package/react/internal/internal.cjs +2 -2
- package/react/internal/internal.cjs.map +1 -1
- package/react/internal/internal.cjs.native.js +2 -2
- package/react/parser/index.js +5 -5
- package/react/parser/parser.cjs +5 -5
- package/react/parser/parser.cjs.map +1 -1
- package/react/parser/parser.cjs.native.js +5 -5
- package/react/query-preloader/createQueryPreloader.js +5 -1
- package/react/query-preloader/createQueryPreloader.js.map +1 -1
- package/react/react.cjs +12 -1
- package/react/react.cjs.map +1 -1
- package/react/react.cjs.native.js +12 -1
- package/react/types/types.d.ts +19 -0
- package/react/types/types.documentation.d.ts +10 -0
- package/react/types/types.documentation.js.map +1 -1
- package/react/types/types.js.map +1 -1
- package/testing/core/core.cjs +6 -5
- package/testing/core/core.cjs.map +1 -1
- package/testing/core/core.cjs.native.js +6 -5
- package/testing/core/mocking/mockLink.js +8 -7
- package/testing/core/mocking/mockLink.js.map +1 -1
- package/testing/experimental/createSchemaFetch.d.ts +2 -0
- package/testing/experimental/createSchemaFetch.js +12 -1
- package/testing/experimental/createSchemaFetch.js.map +1 -1
- package/testing/experimental/createTestSchema.d.ts +2 -0
- package/testing/experimental/createTestSchema.js +2 -0
- package/testing/experimental/createTestSchema.js.map +1 -1
- package/testing/experimental/experimental.cjs +5 -1
- package/testing/experimental/experimental.cjs.map +1 -1
- package/testing/experimental/experimental.cjs.native.js +5 -1
- package/testing/internal/disposables/enableFakeTimers.d.ts +7 -0
- package/testing/internal/disposables/enableFakeTimers.js +16 -0
- package/testing/internal/disposables/enableFakeTimers.js.map +1 -0
- package/testing/internal/disposables/index.d.ts +1 -0
- package/testing/internal/disposables/index.js +1 -0
- package/testing/internal/disposables/index.js.map +1 -1
- package/utilities/common/errorHandling.d.ts +1 -1
- package/utilities/globals/globals.cjs +1 -1
- package/utilities/globals/globals.cjs.map +1 -1
- package/utilities/globals/globals.cjs.native.js +1 -1
- package/utilities/graphql/DocumentTransform.js +1 -1
- package/utilities/graphql/directives.js +4 -4
- package/utilities/graphql/fragments.js +3 -3
- package/utilities/graphql/getFromAST.js +8 -8
- package/utilities/graphql/storeUtils.js +1 -1
- package/utilities/graphql/transform.js +2 -2
- package/utilities/utilities.cjs +19 -19
- package/utilities/utilities.cjs.map +1 -1
- package/utilities/utilities.cjs.native.js +19 -19
- package/version.js +1 -1
package/react/hooks/hooks.cjs
CHANGED
|
@@ -49,7 +49,7 @@ var useSyncExternalStore = realHook$1 ||
|
|
|
49
49
|
!didWarnUncachedGetSnapshot &&
|
|
50
50
|
value !== getSnapshot()) {
|
|
51
51
|
didWarnUncachedGetSnapshot = true;
|
|
52
|
-
globalThis.__DEV__ !== false && globals.invariant.error(
|
|
52
|
+
globalThis.__DEV__ !== false && globals.invariant.error(59);
|
|
53
53
|
}
|
|
54
54
|
var _a = React__namespace.useState({
|
|
55
55
|
inst: { value: value, getSnapshot: getSnapshot },
|
|
@@ -98,7 +98,7 @@ function useDeepMemo(memoFn, deps) {
|
|
|
98
98
|
var useIsomorphicLayoutEffect = utilities.canUseDOM ? React__namespace.useLayoutEffect : React__namespace.useEffect;
|
|
99
99
|
|
|
100
100
|
var Ctx;
|
|
101
|
-
function noop() { }
|
|
101
|
+
function noop$1() { }
|
|
102
102
|
function useRenderGuard() {
|
|
103
103
|
if (!Ctx) {
|
|
104
104
|
Ctx = React__namespace.createContext(null);
|
|
@@ -107,7 +107,7 @@ function useRenderGuard() {
|
|
|
107
107
|
function () {
|
|
108
108
|
var orig = console.error;
|
|
109
109
|
try {
|
|
110
|
-
console.error = noop;
|
|
110
|
+
console.error = noop$1;
|
|
111
111
|
React__namespace["useContext" ](Ctx);
|
|
112
112
|
return true;
|
|
113
113
|
}
|
|
@@ -153,181 +153,185 @@ function wrapHook(hookName, useHook, clientOrObsQuery) {
|
|
|
153
153
|
}
|
|
154
154
|
|
|
155
155
|
var hasOwnProperty = Object.prototype.hasOwnProperty;
|
|
156
|
+
var originalResult = Symbol();
|
|
157
|
+
function noop() { }
|
|
158
|
+
var lastWatchOptions = Symbol();
|
|
156
159
|
function useQuery(query, options) {
|
|
157
160
|
if (options === void 0) { options = Object.create(null); }
|
|
158
161
|
return wrapHook("useQuery", _useQuery, useApolloClient(options && options.client))(query, options);
|
|
159
162
|
}
|
|
160
163
|
function _useQuery(query, options) {
|
|
161
|
-
|
|
164
|
+
var _a = useQueryInternals(query, options), result = _a.result, obsQueryFields = _a.obsQueryFields;
|
|
165
|
+
return React__namespace.useMemo(function () { return (tslib.__assign(tslib.__assign({}, result), obsQueryFields)); }, [result, obsQueryFields]);
|
|
162
166
|
}
|
|
163
|
-
function useInternalState(client, query) {
|
|
164
|
-
var forceUpdateState = React__namespace.useReducer(function (tick) { return tick + 1; }, 0)[1];
|
|
167
|
+
function useInternalState(client, query, options, renderPromises, makeWatchQueryOptions) {
|
|
165
168
|
function createInternalState(previous) {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
+
var _a;
|
|
170
|
+
parser.verifyDocumentType(query, parser.DocumentType.Query);
|
|
171
|
+
var internalState = {
|
|
172
|
+
client: client,
|
|
173
|
+
query: query,
|
|
174
|
+
observable:
|
|
175
|
+
(renderPromises &&
|
|
176
|
+
renderPromises.getSSRObservable(makeWatchQueryOptions())) ||
|
|
177
|
+
client.watchQuery(getObsQueryOptions(void 0, client, options, makeWatchQueryOptions())),
|
|
178
|
+
resultData: {
|
|
179
|
+
previousData: (_a = previous === null || previous === void 0 ? void 0 : previous.resultData.current) === null || _a === void 0 ? void 0 : _a.data,
|
|
180
|
+
},
|
|
181
|
+
};
|
|
182
|
+
return internalState;
|
|
169
183
|
}
|
|
170
|
-
var _a = React__namespace.useState(createInternalState),
|
|
171
|
-
|
|
172
|
-
|
|
184
|
+
var _a = React__namespace.useState(createInternalState), internalState = _a[0], updateInternalState = _a[1];
|
|
185
|
+
function onQueryExecuted(watchQueryOptions) {
|
|
186
|
+
var _a;
|
|
187
|
+
var _b;
|
|
188
|
+
Object.assign(internalState.observable, (_a = {},
|
|
189
|
+
_a[lastWatchOptions] = watchQueryOptions,
|
|
190
|
+
_a));
|
|
191
|
+
var resultData = internalState.resultData;
|
|
192
|
+
updateInternalState(tslib.__assign(tslib.__assign({}, internalState), {
|
|
193
|
+
query: watchQueryOptions.query, resultData: Object.assign(resultData, {
|
|
194
|
+
previousData: ((_b = resultData.current) === null || _b === void 0 ? void 0 : _b.data) || resultData.previousData,
|
|
195
|
+
current: undefined,
|
|
196
|
+
}) }));
|
|
173
197
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
var _this = this;
|
|
179
|
-
this.client = client;
|
|
180
|
-
this.query = query;
|
|
181
|
-
this.forceUpdate = function () { return _this.forceUpdateState(); };
|
|
182
|
-
this.ssrDisabledResult = utilities.maybeDeepFreeze({
|
|
183
|
-
loading: true,
|
|
184
|
-
data: void 0,
|
|
185
|
-
error: void 0,
|
|
186
|
-
networkStatus: core.NetworkStatus.loading,
|
|
187
|
-
});
|
|
188
|
-
this.skipStandbyResult = utilities.maybeDeepFreeze({
|
|
189
|
-
loading: false,
|
|
190
|
-
data: void 0,
|
|
191
|
-
error: void 0,
|
|
192
|
-
networkStatus: core.NetworkStatus.ready,
|
|
193
|
-
});
|
|
194
|
-
this.toQueryResultCache = new (utilities.canUseWeakMap ? WeakMap : Map)();
|
|
195
|
-
parser.verifyDocumentType(query, parser.DocumentType.Query);
|
|
196
|
-
var previousResult = previous && previous.result;
|
|
197
|
-
var previousData = previousResult && previousResult.data;
|
|
198
|
-
if (previousData) {
|
|
199
|
-
this.previousData = previousData;
|
|
200
|
-
}
|
|
198
|
+
if (client !== internalState.client || query !== internalState.query) {
|
|
199
|
+
var newInternalState = createInternalState(internalState);
|
|
200
|
+
updateInternalState(newInternalState);
|
|
201
|
+
return [newInternalState, onQueryExecuted];
|
|
201
202
|
}
|
|
202
|
-
|
|
203
|
-
|
|
203
|
+
return [internalState, onQueryExecuted];
|
|
204
|
+
}
|
|
205
|
+
function useQueryInternals(query, options) {
|
|
206
|
+
var client = useApolloClient(options.client);
|
|
207
|
+
var renderPromises = React__namespace.useContext(context.getApolloContext()).renderPromises;
|
|
208
|
+
var isSyncSSR = !!renderPromises;
|
|
209
|
+
var disableNetworkFetches = client.disableNetworkFetches;
|
|
210
|
+
var ssrAllowed = options.ssr !== false && !options.skip;
|
|
211
|
+
var partialRefetch = options.partialRefetch;
|
|
212
|
+
var makeWatchQueryOptions = createMakeWatchQueryOptions(client, query, options, isSyncSSR);
|
|
213
|
+
var _a = useInternalState(client, query, options, renderPromises, makeWatchQueryOptions), _b = _a[0], observable = _b.observable, resultData = _b.resultData, onQueryExecuted = _a[1];
|
|
214
|
+
var watchQueryOptions = makeWatchQueryOptions(observable);
|
|
215
|
+
useResubscribeIfNecessary(resultData,
|
|
216
|
+
observable,
|
|
217
|
+
client, options, watchQueryOptions);
|
|
218
|
+
var obsQueryFields = React__namespace.useMemo(function () { return bindObservableMethods(observable); }, [observable]);
|
|
219
|
+
useHandleSkip(resultData,
|
|
220
|
+
observable, client, options, watchQueryOptions, disableNetworkFetches, isSyncSSR);
|
|
221
|
+
useRegisterSSRObservable(observable, renderPromises, ssrAllowed);
|
|
222
|
+
var result = useObservableSubscriptionResult(resultData, observable, client, disableNetworkFetches, partialRefetch, isSyncSSR, {
|
|
223
|
+
onCompleted: options.onCompleted || noop,
|
|
224
|
+
onError: options.onError || noop,
|
|
225
|
+
});
|
|
226
|
+
return {
|
|
227
|
+
result: result,
|
|
228
|
+
obsQueryFields: obsQueryFields,
|
|
229
|
+
observable: observable,
|
|
230
|
+
resultData: resultData,
|
|
231
|
+
client: client,
|
|
232
|
+
onQueryExecuted: onQueryExecuted,
|
|
204
233
|
};
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
234
|
+
}
|
|
235
|
+
function useObservableSubscriptionResult(resultData, observable, client, disableNetworkFetches, partialRefetch, skipSubscribing, callbacks) {
|
|
236
|
+
var callbackRef = React__namespace.useRef(callbacks);
|
|
237
|
+
React__namespace.useEffect(function () {
|
|
238
|
+
callbackRef.current = callbacks;
|
|
239
|
+
});
|
|
240
|
+
return useSyncExternalStore(React__namespace.useCallback(function (handleStoreChange) {
|
|
241
|
+
if (skipSubscribing) {
|
|
242
|
+
return function () { };
|
|
210
243
|
}
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
next: function (value) {
|
|
220
|
-
result = value;
|
|
221
|
-
},
|
|
222
|
-
error: function () {
|
|
223
|
-
resolve(_this.toQueryResult(_this.observable.getCurrentResult()));
|
|
224
|
-
},
|
|
225
|
-
complete: function () {
|
|
226
|
-
resolve(_this.toQueryResult(result));
|
|
227
|
-
},
|
|
228
|
-
});
|
|
229
|
-
});
|
|
230
|
-
};
|
|
231
|
-
InternalState.prototype.useQuery = function (options) {
|
|
232
|
-
var _this = this;
|
|
233
|
-
this.renderPromises = React__namespace.useContext(context.getApolloContext()).renderPromises;
|
|
234
|
-
this.useOptions(options);
|
|
235
|
-
var obsQuery = this.useObservableQuery();
|
|
236
|
-
var result = useSyncExternalStore(
|
|
237
|
-
React__namespace.useCallback(function (handleStoreChange) {
|
|
238
|
-
if (_this.renderPromises) {
|
|
239
|
-
return function () { };
|
|
244
|
+
var onNext = function () {
|
|
245
|
+
var previousResult = resultData.current;
|
|
246
|
+
var result = observable.getCurrentResult();
|
|
247
|
+
if (previousResult &&
|
|
248
|
+
previousResult.loading === result.loading &&
|
|
249
|
+
previousResult.networkStatus === result.networkStatus &&
|
|
250
|
+
equal.equal(previousResult.data, result.data)) {
|
|
251
|
+
return;
|
|
240
252
|
}
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
equal.equal(previousResult.data, result.data)) {
|
|
249
|
-
return;
|
|
250
|
-
}
|
|
251
|
-
_this.setResult(result);
|
|
252
|
-
};
|
|
253
|
-
var onError = function (error) {
|
|
254
|
-
subscription.unsubscribe();
|
|
255
|
-
subscription = obsQuery.resubscribeAfterError(onNext, onError);
|
|
256
|
-
if (!hasOwnProperty.call(error, "graphQLErrors")) {
|
|
257
|
-
throw error;
|
|
258
|
-
}
|
|
259
|
-
var previousResult = _this.result;
|
|
260
|
-
if (!previousResult ||
|
|
261
|
-
(previousResult && previousResult.loading) ||
|
|
262
|
-
!equal.equal(error, previousResult.error)) {
|
|
263
|
-
_this.setResult({
|
|
264
|
-
data: (previousResult && previousResult.data),
|
|
265
|
-
error: error,
|
|
266
|
-
loading: false,
|
|
267
|
-
networkStatus: core.NetworkStatus.error,
|
|
268
|
-
});
|
|
269
|
-
}
|
|
270
|
-
};
|
|
271
|
-
var subscription = obsQuery.subscribe(onNext, onError);
|
|
272
|
-
return function () {
|
|
273
|
-
setTimeout(function () { return subscription.unsubscribe(); });
|
|
274
|
-
_this.forceUpdate = function () { return _this.forceUpdateState(); };
|
|
275
|
-
};
|
|
276
|
-
}, [
|
|
277
|
-
obsQuery,
|
|
278
|
-
this.renderPromises,
|
|
279
|
-
this.client.disableNetworkFetches,
|
|
280
|
-
]), function () { return _this.getCurrentResult(); }, function () { return _this.getCurrentResult(); });
|
|
281
|
-
this.unsafeHandlePartialRefetch(result);
|
|
282
|
-
return this.toQueryResult(result);
|
|
283
|
-
};
|
|
284
|
-
InternalState.prototype.useOptions = function (options) {
|
|
285
|
-
var _a;
|
|
286
|
-
var watchQueryOptions = this.createWatchQueryOptions((this.queryHookOptions = options));
|
|
287
|
-
var currentWatchQueryOptions = this.watchQueryOptions;
|
|
288
|
-
if (!equal.equal(watchQueryOptions, currentWatchQueryOptions)) {
|
|
289
|
-
this.watchQueryOptions = watchQueryOptions;
|
|
290
|
-
if (currentWatchQueryOptions && this.observable) {
|
|
291
|
-
this.observable.reobserve(this.getObsQueryOptions());
|
|
292
|
-
this.previousData = ((_a = this.result) === null || _a === void 0 ? void 0 : _a.data) || this.previousData;
|
|
293
|
-
this.result = void 0;
|
|
253
|
+
setResult(result, resultData, observable, client, partialRefetch, handleStoreChange, callbackRef.current);
|
|
254
|
+
};
|
|
255
|
+
var onError = function (error) {
|
|
256
|
+
subscription.current.unsubscribe();
|
|
257
|
+
subscription.current = observable.resubscribeAfterError(onNext, onError);
|
|
258
|
+
if (!hasOwnProperty.call(error, "graphQLErrors")) {
|
|
259
|
+
throw error;
|
|
294
260
|
}
|
|
261
|
+
var previousResult = resultData.current;
|
|
262
|
+
if (!previousResult ||
|
|
263
|
+
(previousResult && previousResult.loading) ||
|
|
264
|
+
!equal.equal(error, previousResult.error)) {
|
|
265
|
+
setResult({
|
|
266
|
+
data: (previousResult && previousResult.data),
|
|
267
|
+
error: error,
|
|
268
|
+
loading: false,
|
|
269
|
+
networkStatus: core.NetworkStatus.error,
|
|
270
|
+
}, resultData, observable, client, partialRefetch, handleStoreChange, callbackRef.current);
|
|
271
|
+
}
|
|
272
|
+
};
|
|
273
|
+
var subscription = { current: observable.subscribe(onNext, onError) };
|
|
274
|
+
return function () {
|
|
275
|
+
setTimeout(function () { return subscription.current.unsubscribe(); });
|
|
276
|
+
};
|
|
277
|
+
}, [
|
|
278
|
+
disableNetworkFetches,
|
|
279
|
+
skipSubscribing,
|
|
280
|
+
observable,
|
|
281
|
+
resultData,
|
|
282
|
+
partialRefetch,
|
|
283
|
+
client,
|
|
284
|
+
]), function () {
|
|
285
|
+
return getCurrentResult(resultData, observable, callbackRef.current, partialRefetch, client);
|
|
286
|
+
}, function () {
|
|
287
|
+
return getCurrentResult(resultData, observable, callbackRef.current, partialRefetch, client);
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
function useRegisterSSRObservable(observable, renderPromises, ssrAllowed) {
|
|
291
|
+
if (renderPromises && ssrAllowed) {
|
|
292
|
+
renderPromises.registerSSRObservable(observable);
|
|
293
|
+
if (observable.getCurrentResult().loading) {
|
|
294
|
+
renderPromises.addObservableQueryPromise(observable);
|
|
295
295
|
}
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
function useHandleSkip(
|
|
299
|
+
resultData, observable, client, options, watchQueryOptions, disableNetworkFetches, isSyncSSR) {
|
|
300
|
+
if ((isSyncSSR || disableNetworkFetches) &&
|
|
301
|
+
options.ssr === false &&
|
|
302
|
+
!options.skip) {
|
|
303
|
+
resultData.current = toQueryResult(ssrDisabledResult, resultData.previousData, observable, client);
|
|
304
|
+
}
|
|
305
|
+
else if (options.skip || watchQueryOptions.fetchPolicy === "standby") {
|
|
306
|
+
resultData.current = toQueryResult(skipStandbyResult, resultData.previousData, observable, client);
|
|
307
|
+
}
|
|
308
|
+
else if (
|
|
309
|
+
resultData.current &&
|
|
310
|
+
(resultData.current[originalResult] === ssrDisabledResult ||
|
|
311
|
+
resultData.current[originalResult] === skipStandbyResult)) {
|
|
312
|
+
resultData.current = void 0;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
function useResubscribeIfNecessary(
|
|
316
|
+
resultData,
|
|
317
|
+
observable, client, options, watchQueryOptions) {
|
|
318
|
+
var _a;
|
|
319
|
+
if (observable[lastWatchOptions] &&
|
|
320
|
+
!equal.equal(observable[lastWatchOptions], watchQueryOptions)) {
|
|
321
|
+
observable.reobserve(getObsQueryOptions(observable, client, options, watchQueryOptions));
|
|
322
|
+
resultData.previousData =
|
|
323
|
+
((_a = resultData.current) === null || _a === void 0 ? void 0 : _a.data) || resultData.previousData;
|
|
324
|
+
resultData.current = void 0;
|
|
325
|
+
}
|
|
326
|
+
observable[lastWatchOptions] = watchQueryOptions;
|
|
327
|
+
}
|
|
328
|
+
function createMakeWatchQueryOptions(client, query, _a, isSyncSSR) {
|
|
329
|
+
if (_a === void 0) { _a = {}; }
|
|
330
|
+
var skip = _a.skip; _a.ssr; _a.onCompleted; _a.onError; var defaultOptions = _a.defaultOptions,
|
|
331
|
+
otherOptions = tslib.__rest(_a, ["skip", "ssr", "onCompleted", "onError", "defaultOptions"]);
|
|
332
|
+
return function (observable) {
|
|
333
|
+
var watchQueryOptions = Object.assign(otherOptions, { query: query });
|
|
334
|
+
if (isSyncSSR &&
|
|
331
335
|
(watchQueryOptions.fetchPolicy === "network-only" ||
|
|
332
336
|
watchQueryOptions.fetchPolicy === "cache-and-network")) {
|
|
333
337
|
watchQueryOptions.fetchPolicy = "cache-first";
|
|
@@ -336,117 +340,119 @@ var InternalState = (function () {
|
|
|
336
340
|
watchQueryOptions.variables = {};
|
|
337
341
|
}
|
|
338
342
|
if (skip) {
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
343
|
+
watchQueryOptions.initialFetchPolicy =
|
|
344
|
+
watchQueryOptions.initialFetchPolicy ||
|
|
345
|
+
watchQueryOptions.fetchPolicy ||
|
|
346
|
+
getDefaultFetchPolicy(defaultOptions, client.defaultOptions);
|
|
347
|
+
watchQueryOptions.fetchPolicy = "standby";
|
|
344
348
|
}
|
|
345
349
|
else if (!watchQueryOptions.fetchPolicy) {
|
|
346
350
|
watchQueryOptions.fetchPolicy =
|
|
347
|
-
(
|
|
348
|
-
|
|
351
|
+
(observable === null || observable === void 0 ? void 0 : observable.options.initialFetchPolicy) ||
|
|
352
|
+
getDefaultFetchPolicy(defaultOptions, client.defaultOptions);
|
|
349
353
|
}
|
|
350
354
|
return watchQueryOptions;
|
|
351
355
|
};
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
var
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
if (
|
|
379
|
-
|
|
356
|
+
}
|
|
357
|
+
function getObsQueryOptions(observable, client, queryHookOptions, watchQueryOptions) {
|
|
358
|
+
var toMerge = [];
|
|
359
|
+
var globalDefaults = client.defaultOptions.watchQuery;
|
|
360
|
+
if (globalDefaults)
|
|
361
|
+
toMerge.push(globalDefaults);
|
|
362
|
+
if (queryHookOptions.defaultOptions) {
|
|
363
|
+
toMerge.push(queryHookOptions.defaultOptions);
|
|
364
|
+
}
|
|
365
|
+
toMerge.push(utilities.compact(observable && observable.options, watchQueryOptions));
|
|
366
|
+
return toMerge.reduce(utilities.mergeOptions);
|
|
367
|
+
}
|
|
368
|
+
function setResult(nextResult, resultData, observable, client, partialRefetch, forceUpdate, callbacks) {
|
|
369
|
+
var previousResult = resultData.current;
|
|
370
|
+
if (previousResult && previousResult.data) {
|
|
371
|
+
resultData.previousData = previousResult.data;
|
|
372
|
+
}
|
|
373
|
+
resultData.current = toQueryResult(unsafeHandlePartialRefetch(nextResult, observable, partialRefetch), resultData.previousData, observable, client);
|
|
374
|
+
forceUpdate();
|
|
375
|
+
handleErrorOrCompleted(nextResult, previousResult === null || previousResult === void 0 ? void 0 : previousResult[originalResult], callbacks);
|
|
376
|
+
}
|
|
377
|
+
function handleErrorOrCompleted(result, previousResult, callbacks) {
|
|
378
|
+
if (!result.loading) {
|
|
379
|
+
var error_1 = toApolloError$1(result);
|
|
380
|
+
Promise.resolve()
|
|
381
|
+
.then(function () {
|
|
382
|
+
if (error_1) {
|
|
383
|
+
callbacks.onError(error_1);
|
|
380
384
|
}
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
};
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
385
|
+
else if (result.data &&
|
|
386
|
+
(previousResult === null || previousResult === void 0 ? void 0 : previousResult.networkStatus) !== result.networkStatus &&
|
|
387
|
+
result.networkStatus === core.NetworkStatus.ready) {
|
|
388
|
+
callbacks.onCompleted(result.data);
|
|
389
|
+
}
|
|
390
|
+
})
|
|
391
|
+
.catch(function (error) {
|
|
392
|
+
globalThis.__DEV__ !== false && globals.invariant.warn(error);
|
|
393
|
+
});
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
function getCurrentResult(resultData, observable, callbacks, partialRefetch, client) {
|
|
397
|
+
if (!resultData.current) {
|
|
398
|
+
setResult(observable.getCurrentResult(), resultData, observable, client, partialRefetch, function () { }, callbacks);
|
|
399
|
+
}
|
|
400
|
+
return resultData.current;
|
|
401
|
+
}
|
|
402
|
+
function getDefaultFetchPolicy(queryHookDefaultOptions, clientDefaultOptions) {
|
|
403
|
+
var _a;
|
|
404
|
+
return ((queryHookDefaultOptions === null || queryHookDefaultOptions === void 0 ? void 0 : queryHookDefaultOptions.fetchPolicy) ||
|
|
405
|
+
((_a = clientDefaultOptions === null || clientDefaultOptions === void 0 ? void 0 : clientDefaultOptions.watchQuery) === null || _a === void 0 ? void 0 : _a.fetchPolicy) ||
|
|
406
|
+
"cache-first");
|
|
407
|
+
}
|
|
408
|
+
function toApolloError$1(result) {
|
|
409
|
+
return utilities.isNonEmptyArray(result.errors) ?
|
|
410
|
+
new errors.ApolloError({ graphQLErrors: result.errors })
|
|
411
|
+
: result.error;
|
|
412
|
+
}
|
|
413
|
+
function toQueryResult(result, previousData, observable, client) {
|
|
414
|
+
var data = result.data; result.partial; var resultWithoutPartial = tslib.__rest(result, ["data", "partial"]);
|
|
415
|
+
var queryResult = tslib.__assign(tslib.__assign({ data: data }, resultWithoutPartial), { client: client, observable: observable, variables: observable.variables, called: result !== ssrDisabledResult && result !== skipStandbyResult, previousData: previousData });
|
|
416
|
+
Object.defineProperty(queryResult, originalResult, { value: result });
|
|
417
|
+
if (!queryResult.error && utilities.isNonEmptyArray(result.errors)) {
|
|
418
|
+
queryResult.error = new errors.ApolloError({ graphQLErrors: result.errors });
|
|
419
|
+
}
|
|
420
|
+
return queryResult;
|
|
421
|
+
}
|
|
422
|
+
function unsafeHandlePartialRefetch(result, observable, partialRefetch) {
|
|
423
|
+
if (result.partial &&
|
|
424
|
+
partialRefetch &&
|
|
425
|
+
!result.loading &&
|
|
426
|
+
(!result.data || Object.keys(result.data).length === 0) &&
|
|
427
|
+
observable.options.fetchPolicy !== "cache-only") {
|
|
428
|
+
observable.refetch();
|
|
429
|
+
return tslib.__assign(tslib.__assign({}, result), { loading: true, networkStatus: core.NetworkStatus.refetch });
|
|
430
|
+
}
|
|
431
|
+
return result;
|
|
432
|
+
}
|
|
433
|
+
var ssrDisabledResult = utilities.maybeDeepFreeze({
|
|
434
|
+
loading: true,
|
|
435
|
+
data: void 0,
|
|
436
|
+
error: void 0,
|
|
437
|
+
networkStatus: core.NetworkStatus.loading,
|
|
438
|
+
});
|
|
439
|
+
var skipStandbyResult = utilities.maybeDeepFreeze({
|
|
440
|
+
loading: false,
|
|
441
|
+
data: void 0,
|
|
442
|
+
error: void 0,
|
|
443
|
+
networkStatus: core.NetworkStatus.ready,
|
|
444
|
+
});
|
|
445
|
+
function bindObservableMethods(observable) {
|
|
446
|
+
return {
|
|
447
|
+
refetch: observable.refetch.bind(observable),
|
|
448
|
+
reobserve: observable.reobserve.bind(observable),
|
|
449
|
+
fetchMore: observable.fetchMore.bind(observable),
|
|
450
|
+
updateQuery: observable.updateQuery.bind(observable),
|
|
451
|
+
startPolling: observable.startPolling.bind(observable),
|
|
452
|
+
stopPolling: observable.stopPolling.bind(observable),
|
|
453
|
+
subscribeToMore: observable.subscribeToMore.bind(observable),
|
|
447
454
|
};
|
|
448
|
-
|
|
449
|
-
}());
|
|
455
|
+
}
|
|
450
456
|
|
|
451
457
|
var EAGER_METHODS = [
|
|
452
458
|
"refetch",
|
|
@@ -454,6 +460,7 @@ var EAGER_METHODS = [
|
|
|
454
460
|
"fetchMore",
|
|
455
461
|
"updateQuery",
|
|
456
462
|
"startPolling",
|
|
463
|
+
"stopPolling",
|
|
457
464
|
"subscribeToMore",
|
|
458
465
|
];
|
|
459
466
|
function useLazyQuery(query, options) {
|
|
@@ -465,11 +472,11 @@ function useLazyQuery(query, options) {
|
|
|
465
472
|
var document = (_a = merged === null || merged === void 0 ? void 0 : merged.query) !== null && _a !== void 0 ? _a : query;
|
|
466
473
|
optionsRef.current = options;
|
|
467
474
|
queryRef.current = document;
|
|
468
|
-
var
|
|
469
|
-
var useQueryResult =
|
|
470
|
-
var initialFetchPolicy =
|
|
471
|
-
|
|
472
|
-
var forceUpdateState =
|
|
475
|
+
var queryHookOptions = tslib.__assign(tslib.__assign({}, merged), { skip: !execOptionsRef.current });
|
|
476
|
+
var _b = useQueryInternals(document, queryHookOptions), obsQueryFields = _b.obsQueryFields, useQueryResult = _b.result, client = _b.client, resultData = _b.resultData, observable = _b.observable, onQueryExecuted = _b.onQueryExecuted;
|
|
477
|
+
var initialFetchPolicy = observable.options.initialFetchPolicy ||
|
|
478
|
+
getDefaultFetchPolicy(queryHookOptions.defaultOptions, client.defaultOptions);
|
|
479
|
+
var forceUpdateState = React__namespace.useReducer(function (tick) { return tick + 1; }, 0)[1];
|
|
473
480
|
var eagerMethods = React__namespace.useMemo(function () {
|
|
474
481
|
var eagerMethods = {};
|
|
475
482
|
var _loop_1 = function (key) {
|
|
@@ -496,13 +503,50 @@ function useLazyQuery(query, options) {
|
|
|
496
503
|
fetchPolicy: initialFetchPolicy,
|
|
497
504
|
};
|
|
498
505
|
var options = utilities.mergeOptions(optionsRef.current, tslib.__assign({ query: queryRef.current }, execOptionsRef.current));
|
|
499
|
-
var promise =
|
|
500
|
-
.executeQuery(tslib.__assign(tslib.__assign({}, options), { skip: false }))
|
|
501
|
-
.then(function (queryResult) { return Object.assign(queryResult, eagerMethods); });
|
|
506
|
+
var promise = executeQuery(resultData, observable, client, document, tslib.__assign(tslib.__assign({}, options), { skip: false }), onQueryExecuted).then(function (queryResult) { return Object.assign(queryResult, eagerMethods); });
|
|
502
507
|
promise.catch(function () { });
|
|
503
508
|
return promise;
|
|
504
|
-
}, [
|
|
505
|
-
|
|
509
|
+
}, [
|
|
510
|
+
client,
|
|
511
|
+
document,
|
|
512
|
+
eagerMethods,
|
|
513
|
+
initialFetchPolicy,
|
|
514
|
+
observable,
|
|
515
|
+
resultData,
|
|
516
|
+
onQueryExecuted,
|
|
517
|
+
]);
|
|
518
|
+
var executeRef = React__namespace.useRef(execute);
|
|
519
|
+
useIsomorphicLayoutEffect(function () {
|
|
520
|
+
executeRef.current = execute;
|
|
521
|
+
});
|
|
522
|
+
var stableExecute = React__namespace.useCallback(function () {
|
|
523
|
+
var args = [];
|
|
524
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
525
|
+
args[_i] = arguments[_i];
|
|
526
|
+
}
|
|
527
|
+
return executeRef.current.apply(executeRef, args);
|
|
528
|
+
}, []);
|
|
529
|
+
return [stableExecute, result];
|
|
530
|
+
}
|
|
531
|
+
function executeQuery(resultData, observable, client, currentQuery, options, onQueryExecuted) {
|
|
532
|
+
var query = options.query || currentQuery;
|
|
533
|
+
var watchQueryOptions = createMakeWatchQueryOptions(client, query, options, false)(observable);
|
|
534
|
+
var concast = observable.reobserveAsConcast(getObsQueryOptions(observable, client, options, watchQueryOptions));
|
|
535
|
+
onQueryExecuted(watchQueryOptions);
|
|
536
|
+
return new Promise(function (resolve) {
|
|
537
|
+
var result;
|
|
538
|
+
concast.subscribe({
|
|
539
|
+
next: function (value) {
|
|
540
|
+
result = value;
|
|
541
|
+
},
|
|
542
|
+
error: function () {
|
|
543
|
+
resolve(toQueryResult(observable.getCurrentResult(), resultData.previousData, observable, client));
|
|
544
|
+
},
|
|
545
|
+
complete: function () {
|
|
546
|
+
resolve(toQueryResult(result, resultData.previousData, observable, client));
|
|
547
|
+
},
|
|
548
|
+
});
|
|
549
|
+
});
|
|
506
550
|
}
|
|
507
551
|
|
|
508
552
|
function useMutation(mutation, options) {
|
|
@@ -617,89 +661,67 @@ function useMutation(mutation, options) {
|
|
|
617
661
|
}
|
|
618
662
|
|
|
619
663
|
function useSubscription(subscription, options) {
|
|
664
|
+
if (options === void 0) { options = Object.create(null); }
|
|
620
665
|
var hasIssuedDeprecationWarningRef = React__namespace.useRef(false);
|
|
621
|
-
var client = useApolloClient(options
|
|
666
|
+
var client = useApolloClient(options.client);
|
|
622
667
|
parser.verifyDocumentType(subscription, parser.DocumentType.Subscription);
|
|
623
|
-
var _a = React__namespace.useState({
|
|
624
|
-
loading: !(options === null || options === void 0 ? void 0 : options.skip),
|
|
625
|
-
error: void 0,
|
|
626
|
-
data: void 0,
|
|
627
|
-
variables: options === null || options === void 0 ? void 0 : options.variables,
|
|
628
|
-
}), result = _a[0], setResult = _a[1];
|
|
629
668
|
if (!hasIssuedDeprecationWarningRef.current) {
|
|
630
669
|
hasIssuedDeprecationWarningRef.current = true;
|
|
631
|
-
if (options
|
|
670
|
+
if (options.onSubscriptionData) {
|
|
632
671
|
globalThis.__DEV__ !== false && globals.invariant.warn(options.onData ? 52 : 53);
|
|
633
672
|
}
|
|
634
|
-
if (options
|
|
673
|
+
if (options.onSubscriptionComplete) {
|
|
635
674
|
globalThis.__DEV__ !== false && globals.invariant.warn(options.onComplete ? 54 : 55);
|
|
636
675
|
}
|
|
637
676
|
}
|
|
638
|
-
var
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
return function () {
|
|
652
|
-
canResetObservableRef.current = true;
|
|
653
|
-
};
|
|
654
|
-
}, []);
|
|
655
|
-
var ref = React__namespace.useRef({ client: client, subscription: subscription, options: options });
|
|
656
|
-
React__namespace.useEffect(function () {
|
|
657
|
-
var _a, _b, _c, _d;
|
|
658
|
-
var shouldResubscribe = options === null || options === void 0 ? void 0 : options.shouldResubscribe;
|
|
659
|
-
if (typeof shouldResubscribe === "function") {
|
|
660
|
-
shouldResubscribe = !!shouldResubscribe(options);
|
|
661
|
-
}
|
|
662
|
-
if (options === null || options === void 0 ? void 0 : options.skip) {
|
|
663
|
-
if (!(options === null || options === void 0 ? void 0 : options.skip) !== !((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.skip) ||
|
|
664
|
-
canResetObservableRef.current) {
|
|
665
|
-
setResult({
|
|
666
|
-
loading: false,
|
|
667
|
-
data: void 0,
|
|
668
|
-
error: void 0,
|
|
669
|
-
variables: options === null || options === void 0 ? void 0 : options.variables,
|
|
670
|
-
});
|
|
671
|
-
setObservable(null);
|
|
672
|
-
canResetObservableRef.current = false;
|
|
673
|
-
}
|
|
674
|
-
}
|
|
675
|
-
else if ((shouldResubscribe !== false &&
|
|
676
|
-
(client !== ref.current.client ||
|
|
677
|
-
subscription !== ref.current.subscription ||
|
|
678
|
-
(options === null || options === void 0 ? void 0 : options.fetchPolicy) !== ((_b = ref.current.options) === null || _b === void 0 ? void 0 : _b.fetchPolicy) ||
|
|
679
|
-
!(options === null || options === void 0 ? void 0 : options.skip) !== !((_c = ref.current.options) === null || _c === void 0 ? void 0 : _c.skip) ||
|
|
680
|
-
!equal.equal(options === null || options === void 0 ? void 0 : options.variables, (_d = ref.current.options) === null || _d === void 0 ? void 0 : _d.variables))) ||
|
|
681
|
-
canResetObservableRef.current) {
|
|
682
|
-
setResult({
|
|
683
|
-
loading: true,
|
|
684
|
-
data: void 0,
|
|
685
|
-
error: void 0,
|
|
686
|
-
variables: options === null || options === void 0 ? void 0 : options.variables,
|
|
687
|
-
});
|
|
688
|
-
setObservable(client.subscribe({
|
|
689
|
-
query: subscription,
|
|
690
|
-
variables: options === null || options === void 0 ? void 0 : options.variables,
|
|
691
|
-
fetchPolicy: options === null || options === void 0 ? void 0 : options.fetchPolicy,
|
|
692
|
-
context: options === null || options === void 0 ? void 0 : options.context,
|
|
693
|
-
}));
|
|
694
|
-
canResetObservableRef.current = false;
|
|
677
|
+
var skip = options.skip, fetchPolicy = options.fetchPolicy, errorPolicy = options.errorPolicy, shouldResubscribe = options.shouldResubscribe, context = options.context, extensions = options.extensions, ignoreResults = options.ignoreResults;
|
|
678
|
+
var variables = useDeepMemo(function () { return options.variables; }, [options.variables]);
|
|
679
|
+
var recreate = function () {
|
|
680
|
+
return createSubscription(client, subscription, variables, fetchPolicy, errorPolicy, context, extensions);
|
|
681
|
+
};
|
|
682
|
+
var _a = React__namespace.useState(options.skip ? null : recreate), observable = _a[0], setObservable = _a[1];
|
|
683
|
+
var recreateRef = React__namespace.useRef(recreate);
|
|
684
|
+
useIsomorphicLayoutEffect(function () {
|
|
685
|
+
recreateRef.current = recreate;
|
|
686
|
+
});
|
|
687
|
+
if (skip) {
|
|
688
|
+
if (observable) {
|
|
689
|
+
setObservable((observable = null));
|
|
695
690
|
}
|
|
696
|
-
|
|
697
|
-
|
|
691
|
+
}
|
|
692
|
+
else if (!observable ||
|
|
693
|
+
((client !== observable.__.client ||
|
|
694
|
+
subscription !== observable.__.query ||
|
|
695
|
+
fetchPolicy !== observable.__.fetchPolicy ||
|
|
696
|
+
errorPolicy !== observable.__.errorPolicy ||
|
|
697
|
+
!equal.equal(variables, observable.__.variables)) &&
|
|
698
|
+
(typeof shouldResubscribe === "function" ?
|
|
699
|
+
!!shouldResubscribe(options)
|
|
700
|
+
: shouldResubscribe) !== false)) {
|
|
701
|
+
setObservable((observable = recreate()));
|
|
702
|
+
}
|
|
703
|
+
var optionsRef = React__namespace.useRef(options);
|
|
698
704
|
React__namespace.useEffect(function () {
|
|
705
|
+
optionsRef.current = options;
|
|
706
|
+
});
|
|
707
|
+
var fallbackLoading = !skip && !ignoreResults;
|
|
708
|
+
var fallbackResult = React__namespace.useMemo(function () { return ({
|
|
709
|
+
loading: fallbackLoading,
|
|
710
|
+
error: void 0,
|
|
711
|
+
data: void 0,
|
|
712
|
+
variables: variables,
|
|
713
|
+
}); }, [fallbackLoading, variables]);
|
|
714
|
+
var ignoreResultsRef = React__namespace.useRef(ignoreResults);
|
|
715
|
+
useIsomorphicLayoutEffect(function () {
|
|
716
|
+
ignoreResultsRef.current = ignoreResults;
|
|
717
|
+
});
|
|
718
|
+
var ret = useSyncExternalStore(React__namespace.useCallback(function (update) {
|
|
699
719
|
if (!observable) {
|
|
700
|
-
return;
|
|
720
|
+
return function () { };
|
|
701
721
|
}
|
|
702
722
|
var subscriptionStopped = false;
|
|
723
|
+
var variables = observable.__.variables;
|
|
724
|
+
var client = observable.__.client;
|
|
703
725
|
var subscription = observable.subscribe({
|
|
704
726
|
next: function (fetchResult) {
|
|
705
727
|
var _a, _b;
|
|
@@ -709,18 +731,23 @@ function useSubscription(subscription, options) {
|
|
|
709
731
|
var result = {
|
|
710
732
|
loading: false,
|
|
711
733
|
data: fetchResult.data,
|
|
712
|
-
error:
|
|
713
|
-
variables:
|
|
734
|
+
error: toApolloError$1(fetchResult),
|
|
735
|
+
variables: variables,
|
|
714
736
|
};
|
|
715
|
-
setResult(result);
|
|
716
|
-
if (
|
|
717
|
-
|
|
737
|
+
observable.__.setResult(result);
|
|
738
|
+
if (!ignoreResultsRef.current)
|
|
739
|
+
update();
|
|
740
|
+
if (result.error) {
|
|
741
|
+
(_b = (_a = optionsRef.current).onError) === null || _b === void 0 ? void 0 : _b.call(_a, result.error);
|
|
742
|
+
}
|
|
743
|
+
else if (optionsRef.current.onData) {
|
|
744
|
+
optionsRef.current.onData({
|
|
718
745
|
client: client,
|
|
719
746
|
data: result,
|
|
720
747
|
});
|
|
721
748
|
}
|
|
722
|
-
else if (
|
|
723
|
-
|
|
749
|
+
else if (optionsRef.current.onSubscriptionData) {
|
|
750
|
+
optionsRef.current.onSubscriptionData({
|
|
724
751
|
client: client,
|
|
725
752
|
subscriptionData: result,
|
|
726
753
|
});
|
|
@@ -728,24 +755,27 @@ function useSubscription(subscription, options) {
|
|
|
728
755
|
},
|
|
729
756
|
error: function (error) {
|
|
730
757
|
var _a, _b;
|
|
758
|
+
error =
|
|
759
|
+
error instanceof core.ApolloError ? error : (new core.ApolloError({ protocolErrors: [error] }));
|
|
731
760
|
if (!subscriptionStopped) {
|
|
732
|
-
setResult({
|
|
761
|
+
observable.__.setResult({
|
|
733
762
|
loading: false,
|
|
734
763
|
data: void 0,
|
|
735
764
|
error: error,
|
|
736
|
-
variables:
|
|
765
|
+
variables: variables,
|
|
737
766
|
});
|
|
738
|
-
|
|
767
|
+
if (!ignoreResultsRef.current)
|
|
768
|
+
update();
|
|
769
|
+
(_b = (_a = optionsRef.current).onError) === null || _b === void 0 ? void 0 : _b.call(_a, error);
|
|
739
770
|
}
|
|
740
771
|
},
|
|
741
772
|
complete: function () {
|
|
742
|
-
var _a, _b;
|
|
743
773
|
if (!subscriptionStopped) {
|
|
744
|
-
if (
|
|
745
|
-
|
|
774
|
+
if (optionsRef.current.onComplete) {
|
|
775
|
+
optionsRef.current.onComplete();
|
|
746
776
|
}
|
|
747
|
-
else if (
|
|
748
|
-
|
|
777
|
+
else if (optionsRef.current.onSubscriptionComplete) {
|
|
778
|
+
optionsRef.current.onSubscriptionComplete();
|
|
749
779
|
}
|
|
750
780
|
}
|
|
751
781
|
},
|
|
@@ -756,8 +786,43 @@ function useSubscription(subscription, options) {
|
|
|
756
786
|
subscription.unsubscribe();
|
|
757
787
|
});
|
|
758
788
|
};
|
|
759
|
-
}, [observable])
|
|
760
|
-
|
|
789
|
+
}, [observable]), function () {
|
|
790
|
+
return observable && !skip && !ignoreResults ?
|
|
791
|
+
observable.__.result
|
|
792
|
+
: fallbackResult;
|
|
793
|
+
});
|
|
794
|
+
return React__namespace.useMemo(function () { return (tslib.__assign(tslib.__assign({}, ret), { restart: function () {
|
|
795
|
+
globals.invariant(!optionsRef.current.skip, 56);
|
|
796
|
+
setObservable(recreateRef.current());
|
|
797
|
+
} })); }, [ret]);
|
|
798
|
+
}
|
|
799
|
+
function createSubscription(client, query, variables, fetchPolicy, errorPolicy, context, extensions) {
|
|
800
|
+
var options = {
|
|
801
|
+
query: query,
|
|
802
|
+
variables: variables,
|
|
803
|
+
fetchPolicy: fetchPolicy,
|
|
804
|
+
errorPolicy: errorPolicy,
|
|
805
|
+
context: context,
|
|
806
|
+
extensions: extensions,
|
|
807
|
+
};
|
|
808
|
+
var __ = tslib.__assign(tslib.__assign({}, options), { client: client, result: {
|
|
809
|
+
loading: true,
|
|
810
|
+
data: void 0,
|
|
811
|
+
error: void 0,
|
|
812
|
+
variables: variables,
|
|
813
|
+
}, setResult: function (result) {
|
|
814
|
+
__.result = result;
|
|
815
|
+
} });
|
|
816
|
+
var observable = null;
|
|
817
|
+
return Object.assign(new core.Observable(function (observer) {
|
|
818
|
+
if (!observable) {
|
|
819
|
+
observable = client.subscribe(options);
|
|
820
|
+
}
|
|
821
|
+
var sub = observable.subscribe(observer);
|
|
822
|
+
return function () { return sub.unsubscribe(); };
|
|
823
|
+
}), {
|
|
824
|
+
__: __,
|
|
825
|
+
});
|
|
761
826
|
}
|
|
762
827
|
|
|
763
828
|
function useReactiveVar(rv) {
|
|
@@ -876,7 +941,7 @@ function _useSuspenseQuery(query, options) {
|
|
|
876
941
|
setPromise([queryRef.key, queryRef.promise]);
|
|
877
942
|
return promise;
|
|
878
943
|
}, [queryRef]);
|
|
879
|
-
var subscribeToMore =
|
|
944
|
+
var subscribeToMore = queryRef.observable.subscribeToMore;
|
|
880
945
|
return React__namespace.useMemo(function () {
|
|
881
946
|
return {
|
|
882
947
|
client: client,
|
|
@@ -903,11 +968,11 @@ function validateFetchPolicy(fetchPolicy) {
|
|
|
903
968
|
"no-cache",
|
|
904
969
|
"cache-and-network",
|
|
905
970
|
];
|
|
906
|
-
globals.invariant(supportedFetchPolicies.includes(fetchPolicy),
|
|
971
|
+
globals.invariant(supportedFetchPolicies.includes(fetchPolicy), 57, fetchPolicy);
|
|
907
972
|
}
|
|
908
973
|
function validatePartialDataReturn(fetchPolicy, returnPartialData) {
|
|
909
974
|
if (fetchPolicy === "no-cache" && returnPartialData) {
|
|
910
|
-
globalThis.__DEV__ !== false && globals.invariant.warn(
|
|
975
|
+
globalThis.__DEV__ !== false && globals.invariant.warn(58);
|
|
911
976
|
}
|
|
912
977
|
}
|
|
913
978
|
function toApolloError(result) {
|
|
@@ -984,7 +1049,11 @@ function _useBackgroundQuery(query, options) {
|
|
|
984
1049
|
React__namespace.useEffect(function () { return queryRef.softRetain(); }, [queryRef]);
|
|
985
1050
|
return [
|
|
986
1051
|
didFetchResult.current ? wrappedQueryRef : void 0,
|
|
987
|
-
{
|
|
1052
|
+
{
|
|
1053
|
+
fetchMore: fetchMore,
|
|
1054
|
+
refetch: refetch,
|
|
1055
|
+
subscribeToMore: queryRef.observable.subscribeToMore,
|
|
1056
|
+
},
|
|
988
1057
|
];
|
|
989
1058
|
}
|
|
990
1059
|
|
|
@@ -1041,10 +1110,14 @@ function useLoadableQuery(query, options) {
|
|
|
1041
1110
|
calledDuringRender,
|
|
1042
1111
|
client,
|
|
1043
1112
|
]);
|
|
1113
|
+
var subscribeToMore = React__namespace.useCallback(function (options) {
|
|
1114
|
+
globals.invariant(internalQueryRef, 51);
|
|
1115
|
+
return internalQueryRef.observable.subscribeToMore(options);
|
|
1116
|
+
}, [internalQueryRef]);
|
|
1044
1117
|
var reset = React__namespace.useCallback(function () {
|
|
1045
1118
|
setQueryRef(null);
|
|
1046
1119
|
}, []);
|
|
1047
|
-
return [loadQuery, queryRef, { fetchMore: fetchMore, refetch: refetch, reset: reset }];
|
|
1120
|
+
return [loadQuery, queryRef, { fetchMore: fetchMore, refetch: refetch, reset: reset, subscribeToMore: subscribeToMore }];
|
|
1048
1121
|
}
|
|
1049
1122
|
|
|
1050
1123
|
function useQueryRefHandlers(queryRef) {
|
|
@@ -1075,7 +1148,11 @@ function _useQueryRefHandlers(queryRef) {
|
|
|
1075
1148
|
setWrappedQueryRef(internal.wrapQueryRef(internalQueryRef));
|
|
1076
1149
|
return promise;
|
|
1077
1150
|
}, [internalQueryRef]);
|
|
1078
|
-
return {
|
|
1151
|
+
return {
|
|
1152
|
+
refetch: refetch,
|
|
1153
|
+
fetchMore: fetchMore,
|
|
1154
|
+
subscribeToMore: internalQueryRef.observable.subscribeToMore,
|
|
1155
|
+
};
|
|
1079
1156
|
}
|
|
1080
1157
|
|
|
1081
1158
|
function useReadQuery(queryRef) {
|