@apollo/client 3.5.10 → 3.6.4
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/LICENSE +1 -1
- package/apollo-client.cjs +509 -341
- package/apollo-client.cjs.map +1 -1
- package/apollo-client.min.cjs +1 -1
- package/cache/cache.cjs.native.js +2289 -0
- package/core/ApolloClient.d.ts +2 -3
- package/core/ApolloClient.d.ts.map +1 -1
- package/core/ApolloClient.js +4 -8
- package/core/ApolloClient.js.map +1 -1
- package/core/ObservableQuery.d.ts +10 -4
- package/core/ObservableQuery.d.ts.map +1 -1
- package/core/ObservableQuery.js +97 -45
- 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 +5 -2
- package/core/QueryManager.d.ts.map +1 -1
- package/core/QueryManager.js +29 -23
- package/core/QueryManager.js.map +1 -1
- package/core/core.cjs +138 -85
- package/core/core.cjs.map +1 -1
- package/core/core.cjs.native.js +2141 -0
- package/core/index.d.ts +1 -1
- package/core/index.d.ts.map +1 -1
- package/core/index.js +1 -1
- package/core/index.js.map +1 -1
- package/core/watchQueryOptions.d.ts +9 -1
- package/core/watchQueryOptions.d.ts.map +1 -1
- package/core/watchQueryOptions.js.map +1 -1
- package/errors/errors.cjs.native.js +48 -0
- package/invariantErrorCodes.js +1 -1
- package/link/batch/batch.cjs +47 -37
- package/link/batch/batch.cjs.map +1 -1
- package/link/batch/batch.cjs.native.js +161 -0
- package/link/batch/batching.d.ts +2 -6
- package/link/batch/batching.d.ts.map +1 -1
- package/link/batch/batching.js +47 -37
- package/link/batch/batching.js.map +1 -1
- package/link/batch-http/batch-http.cjs.native.js +127 -0
- package/link/context/context.cjs.native.js +38 -0
- package/link/core/core.cjs.native.js +121 -0
- package/link/error/error.cjs.native.js +90 -0
- package/link/http/http.cjs.native.js +320 -0
- package/link/http/selectHttpOptionsAndBody.d.ts.map +1 -1
- package/link/http/selectHttpOptionsAndBody.js.map +1 -1
- package/link/persisted-queries/index.d.ts +2 -1
- package/link/persisted-queries/index.d.ts.map +1 -1
- package/link/persisted-queries/index.js +26 -13
- package/link/persisted-queries/index.js.map +1 -1
- package/link/persisted-queries/persisted-queries.cjs +25 -12
- package/link/persisted-queries/persisted-queries.cjs.map +1 -1
- package/link/persisted-queries/persisted-queries.cjs.native.js +174 -0
- package/link/retry/retry.cjs.native.js +170 -0
- package/link/schema/schema.cjs.native.js +56 -0
- package/link/subscriptions/subscriptions.cjs.native.js +45 -0
- package/link/utils/utils.cjs.native.js +115 -0
- package/link/ws/ws.cjs.native.js +28 -0
- package/main.cjs.native.js +16 -0
- package/package.json +28 -26
- package/react/components/components.cjs.native.js +79 -0
- package/react/context/ApolloConsumer.js +2 -2
- package/react/context/ApolloProvider.js +2 -2
- package/react/context/context.cjs +4 -4
- package/react/context/context.cjs.map +1 -1
- package/react/context/context.cjs.native.js +67 -0
- package/react/hoc/hoc.cjs.native.js +325 -0
- package/react/hooks/hooks.cjs +351 -247
- package/react/hooks/hooks.cjs.map +1 -1
- package/react/hooks/hooks.cjs.native.js +604 -0
- 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 +22 -21
- 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 +36 -2
- package/react/hooks/useQuery.d.ts.map +1 -1
- package/react/hooks/useQuery.js +238 -204
- package/react/hooks/useQuery.js.map +1 -1
- package/react/hooks/useSubscription.d.ts.map +1 -1
- package/react/hooks/useSubscription.js +17 -7
- package/react/hooks/useSubscription.js.map +1 -1
- package/react/hooks/useSyncExternalStore.d.ts +4 -0
- package/react/hooks/useSyncExternalStore.d.ts.map +1 -0
- package/react/hooks/useSyncExternalStore.js +48 -0
- package/react/hooks/useSyncExternalStore.js.map +1 -0
- package/react/parser/index.d.ts.map +1 -1
- package/react/parser/index.js +24 -10
- package/react/parser/index.js.map +1 -1
- package/react/parser/parser.cjs +24 -10
- package/react/parser/parser.cjs.map +1 -1
- package/react/parser/parser.cjs.native.js +103 -0
- package/react/react.cjs.native.js +22 -0
- package/react/ssr/RenderPromises.d.ts +3 -2
- package/react/ssr/RenderPromises.d.ts.map +1 -1
- package/react/ssr/RenderPromises.js +25 -3
- package/react/ssr/RenderPromises.js.map +1 -1
- package/react/ssr/ssr.cjs +25 -3
- package/react/ssr/ssr.cjs.map +1 -1
- package/react/ssr/ssr.cjs.native.js +150 -0
- package/react/types/types.d.ts +10 -11
- package/react/types/types.d.ts.map +1 -1
- package/react/types/types.js.map +1 -1
- package/testing/core/core.cjs.native.js +288 -0
- package/testing/core/mocking/mockFetch.js +1 -1
- package/testing/core/mocking/mockFetch.js.map +1 -1
- package/testing/core/mocking/mockQueryManager.js +1 -1
- package/testing/core/mocking/mockWatchQuery.js +1 -1
- package/testing/core/wrap.js +1 -1
- package/testing/testing.cjs.native.js +58 -0
- package/utilities/common/canUse.d.ts +2 -0
- package/utilities/common/canUse.d.ts.map +1 -1
- package/utilities/common/canUse.js +6 -2
- package/utilities/common/canUse.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/globals/global.js +1 -2
- package/utilities/globals/globals.cjs.native.js +56 -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/observables/Concast.d.ts.map +1 -1
- package/utilities/observables/Concast.js +5 -2
- package/utilities/observables/Concast.js.map +1 -1
- package/utilities/policies/pagination.d.ts.map +1 -1
- package/utilities/policies/pagination.js +9 -7
- package/utilities/policies/pagination.js.map +1 -1
- package/utilities/utilities.cjs +29 -12
- package/utilities/utilities.cjs.map +1 -1
- package/utilities/utilities.cjs.native.js +1284 -0
- package/version.js +1 -1
package/react/hooks/hooks.cjs
CHANGED
|
@@ -3,16 +3,31 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var globals = require('../../utilities/globals');
|
|
6
|
-
var
|
|
6
|
+
var React = require('react');
|
|
7
7
|
var context = require('../context');
|
|
8
8
|
var tslib = require('tslib');
|
|
9
|
+
var utilities = require('../../utilities');
|
|
9
10
|
var equality = require('@wry/equality');
|
|
10
11
|
var core = require('../../core');
|
|
11
12
|
var errors = require('../../errors');
|
|
12
13
|
var parser = require('../parser');
|
|
13
14
|
|
|
15
|
+
function _interopNamespace(e) {
|
|
16
|
+
if (e && e.__esModule) return e;
|
|
17
|
+
var n = Object.create(null);
|
|
18
|
+
if (e) {
|
|
19
|
+
for (var k in e) {
|
|
20
|
+
n[k] = e[k];
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
n["default"] = e;
|
|
24
|
+
return Object.freeze(n);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
28
|
+
|
|
14
29
|
function useApolloClient(override) {
|
|
15
|
-
var context$1 =
|
|
30
|
+
var context$1 = React.useContext(context.getApolloContext());
|
|
16
31
|
var client = override || context$1.client;
|
|
17
32
|
__DEV__ ? globals.invariant(!!client, 'Could not find "client" in the context or passed in as an option. ' +
|
|
18
33
|
'Wrap the root component in an <ApolloProvider>, or pass an ApolloClient ' +
|
|
@@ -20,254 +35,331 @@ function useApolloClient(override) {
|
|
|
20
35
|
return client;
|
|
21
36
|
}
|
|
22
37
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
var
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
var didWarnUncachedGetSnapshot = false;
|
|
39
|
+
var uSESKey = "useSyncExternalStore";
|
|
40
|
+
var realHook = React__namespace[uSESKey];
|
|
41
|
+
var useSyncExternalStore = realHook || (function (subscribe, getSnapshot, getServerSnapshot) {
|
|
42
|
+
var value = getSnapshot();
|
|
43
|
+
if (__DEV__ &&
|
|
44
|
+
!didWarnUncachedGetSnapshot &&
|
|
45
|
+
value !== getSnapshot()) {
|
|
46
|
+
didWarnUncachedGetSnapshot = true;
|
|
47
|
+
__DEV__ && globals.invariant.error('The result of getSnapshot should be cached to avoid an infinite loop');
|
|
48
|
+
}
|
|
49
|
+
var _a = React__namespace.useState({ inst: { value: value, getSnapshot: getSnapshot } }), inst = _a[0].inst, forceUpdate = _a[1];
|
|
50
|
+
if (utilities.canUseLayoutEffect) {
|
|
51
|
+
React__namespace.useLayoutEffect(function () {
|
|
52
|
+
Object.assign(inst, { value: value, getSnapshot: getSnapshot });
|
|
53
|
+
if (checkIfSnapshotChanged(inst)) {
|
|
54
|
+
forceUpdate({ inst: inst });
|
|
39
55
|
}
|
|
56
|
+
}, [subscribe, value, getSnapshot]);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
Object.assign(inst, { value: value, getSnapshot: getSnapshot });
|
|
60
|
+
}
|
|
61
|
+
React__namespace.useEffect(function () {
|
|
62
|
+
if (checkIfSnapshotChanged(inst)) {
|
|
63
|
+
forceUpdate({ inst: inst });
|
|
40
64
|
}
|
|
41
|
-
|
|
42
|
-
(
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
65
|
+
return subscribe(function handleStoreChange() {
|
|
66
|
+
if (checkIfSnapshotChanged(inst)) {
|
|
67
|
+
forceUpdate({ inst: inst });
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}, [subscribe]);
|
|
71
|
+
return value;
|
|
72
|
+
});
|
|
73
|
+
function checkIfSnapshotChanged(_a) {
|
|
74
|
+
var value = _a.value, getSnapshot = _a.getSnapshot;
|
|
75
|
+
try {
|
|
76
|
+
return value !== getSnapshot();
|
|
77
|
+
}
|
|
78
|
+
catch (_b) {
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
var hasOwnProperty = Object.prototype.hasOwnProperty;
|
|
84
|
+
function useQuery(query, options) {
|
|
85
|
+
if (options === void 0) { options = Object.create(null); }
|
|
86
|
+
return useInternalState(useApolloClient(options.client), query).useQuery(options);
|
|
87
|
+
}
|
|
88
|
+
function useInternalState(client, query) {
|
|
89
|
+
var stateRef = React.useRef();
|
|
90
|
+
if (!stateRef.current ||
|
|
91
|
+
client !== stateRef.current.client ||
|
|
92
|
+
query !== stateRef.current.query) {
|
|
93
|
+
stateRef.current = new InternalState(client, query);
|
|
94
|
+
}
|
|
95
|
+
var state = stateRef.current;
|
|
96
|
+
var _a = React.useState(0); _a[0]; var setTick = _a[1];
|
|
97
|
+
state.forceUpdate = function () {
|
|
98
|
+
setTick(function (tick) { return tick + 1; });
|
|
99
|
+
};
|
|
100
|
+
return state;
|
|
101
|
+
}
|
|
102
|
+
var InternalState = (function () {
|
|
103
|
+
function InternalState(client, query) {
|
|
104
|
+
this.client = client;
|
|
105
|
+
this.query = query;
|
|
106
|
+
this.asyncResolveFns = new Set();
|
|
107
|
+
this.optionsToIgnoreOnce = new (utilities.canUseWeakSet ? WeakSet : Set)();
|
|
108
|
+
this.ssrDisabledResult = utilities.maybeDeepFreeze({
|
|
109
|
+
loading: true,
|
|
110
|
+
data: void 0,
|
|
111
|
+
error: void 0,
|
|
112
|
+
networkStatus: core.NetworkStatus.loading,
|
|
113
|
+
});
|
|
114
|
+
this.skipStandbyResult = utilities.maybeDeepFreeze({
|
|
115
|
+
loading: false,
|
|
116
|
+
data: void 0,
|
|
117
|
+
error: void 0,
|
|
118
|
+
networkStatus: core.NetworkStatus.ready,
|
|
119
|
+
});
|
|
120
|
+
this.toQueryResultCache = new (utilities.canUseWeakMap ? WeakMap : Map)();
|
|
121
|
+
parser.verifyDocumentType(query, parser.DocumentType.Query);
|
|
122
|
+
}
|
|
123
|
+
InternalState.prototype.forceUpdate = function () {
|
|
124
|
+
__DEV__ && globals.invariant.warn("Calling default no-op implementation of InternalState#forceUpdate");
|
|
125
|
+
};
|
|
126
|
+
InternalState.prototype.asyncUpdate = function () {
|
|
127
|
+
var _this = this;
|
|
128
|
+
return new Promise(function (resolve) {
|
|
129
|
+
_this.asyncResolveFns.add(resolve);
|
|
130
|
+
_this.optionsToIgnoreOnce.add(_this.watchQueryOptions);
|
|
131
|
+
_this.forceUpdate();
|
|
132
|
+
});
|
|
133
|
+
};
|
|
134
|
+
InternalState.prototype.useQuery = function (options) {
|
|
135
|
+
var _this = this;
|
|
136
|
+
this.renderPromises = React.useContext(context.getApolloContext()).renderPromises;
|
|
137
|
+
this.useOptions(options);
|
|
138
|
+
var obsQuery = this.useObservableQuery();
|
|
139
|
+
var result = useSyncExternalStore(React.useCallback(function () {
|
|
140
|
+
if (_this.renderPromises) {
|
|
141
|
+
return function () { };
|
|
142
|
+
}
|
|
143
|
+
var onNext = function () {
|
|
144
|
+
var previousResult = _this.result;
|
|
145
|
+
var result = obsQuery.getCurrentResult();
|
|
146
|
+
if (previousResult &&
|
|
147
|
+
previousResult.loading === result.loading &&
|
|
148
|
+
previousResult.networkStatus === result.networkStatus &&
|
|
149
|
+
equality.equal(previousResult.data, result.data)) {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
_this.setResult(result);
|
|
153
|
+
};
|
|
154
|
+
var onError = function (error) {
|
|
155
|
+
var last = obsQuery["last"];
|
|
156
|
+
subscription.unsubscribe();
|
|
157
|
+
try {
|
|
158
|
+
obsQuery.resetLastResults();
|
|
159
|
+
subscription = obsQuery.subscribe(onNext, onError);
|
|
160
|
+
}
|
|
161
|
+
finally {
|
|
162
|
+
obsQuery["last"] = last;
|
|
163
|
+
}
|
|
164
|
+
if (!hasOwnProperty.call(error, 'graphQLErrors')) {
|
|
165
|
+
throw error;
|
|
166
|
+
}
|
|
167
|
+
var previousResult = _this.result;
|
|
168
|
+
if (!previousResult ||
|
|
169
|
+
(previousResult && previousResult.loading) ||
|
|
170
|
+
!equality.equal(error, previousResult.error)) {
|
|
171
|
+
_this.setResult({
|
|
172
|
+
data: (previousResult && previousResult.data),
|
|
173
|
+
error: error,
|
|
174
|
+
loading: false,
|
|
175
|
+
networkStatus: core.NetworkStatus.error,
|
|
62
176
|
});
|
|
63
|
-
}
|
|
64
|
-
}
|
|
177
|
+
}
|
|
178
|
+
};
|
|
179
|
+
var subscription = obsQuery.subscribe(onNext, onError);
|
|
180
|
+
return function () { return subscription.unsubscribe(); };
|
|
181
|
+
}, [
|
|
182
|
+
obsQuery,
|
|
183
|
+
this.renderPromises,
|
|
184
|
+
this.client.disableNetworkFetches,
|
|
185
|
+
]), function () { return _this.getCurrentResult(); }, function () { return _this.getCurrentResult(); });
|
|
186
|
+
this.unsafeHandlePartialRefetch(result);
|
|
187
|
+
var queryResult = this.toQueryResult(result);
|
|
188
|
+
if (!queryResult.loading && this.asyncResolveFns.size) {
|
|
189
|
+
this.asyncResolveFns.forEach(function (resolve) { return resolve(queryResult); });
|
|
190
|
+
this.asyncResolveFns.clear();
|
|
65
191
|
}
|
|
66
|
-
return
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
var _a
|
|
70
|
-
var
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
192
|
+
return queryResult;
|
|
193
|
+
};
|
|
194
|
+
InternalState.prototype.useOptions = function (options) {
|
|
195
|
+
var _a;
|
|
196
|
+
var watchQueryOptions = this.createWatchQueryOptions(this.queryHookOptions = options);
|
|
197
|
+
var currentWatchQueryOptions = this.watchQueryOptions;
|
|
198
|
+
if (this.optionsToIgnoreOnce.has(currentWatchQueryOptions) ||
|
|
199
|
+
!equality.equal(watchQueryOptions, currentWatchQueryOptions)) {
|
|
200
|
+
this.watchQueryOptions = watchQueryOptions;
|
|
201
|
+
if (currentWatchQueryOptions && this.observable) {
|
|
202
|
+
this.optionsToIgnoreOnce.delete(currentWatchQueryOptions);
|
|
203
|
+
this.observable.reobserve(watchQueryOptions);
|
|
204
|
+
this.previousData = ((_a = this.result) === null || _a === void 0 ? void 0 : _a.data) || this.previousData;
|
|
205
|
+
this.result = void 0;
|
|
77
206
|
}
|
|
78
207
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
result: result,
|
|
86
|
-
previousData: void 0,
|
|
87
|
-
watchQueryOptions: createWatchQueryOptions(query, options, defaultWatchQueryOptions),
|
|
88
|
-
});
|
|
89
|
-
react.useEffect(function () {
|
|
90
|
-
var _a, _b;
|
|
91
|
-
var watchQueryOptions = createWatchQueryOptions(query, options, defaultWatchQueryOptions);
|
|
92
|
-
var nextResult;
|
|
93
|
-
if (ref.current.client !== client || !equality.equal(ref.current.query, query)) {
|
|
94
|
-
var obsQuery_1 = client.watchQuery(watchQueryOptions);
|
|
95
|
-
setObsQuery(obsQuery_1);
|
|
96
|
-
nextResult = obsQuery_1.getCurrentResult();
|
|
208
|
+
this.onCompleted = options.onCompleted || InternalState.prototype.onCompleted;
|
|
209
|
+
this.onError = options.onError || InternalState.prototype.onError;
|
|
210
|
+
if ((this.renderPromises || this.client.disableNetworkFetches) &&
|
|
211
|
+
this.queryHookOptions.ssr === false &&
|
|
212
|
+
!this.queryHookOptions.skip) {
|
|
213
|
+
this.result = this.ssrDisabledResult;
|
|
97
214
|
}
|
|
98
|
-
else if (
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
ref.current.watchQueryOptions = watchQueryOptions;
|
|
215
|
+
else if (this.queryHookOptions.skip ||
|
|
216
|
+
this.watchQueryOptions.fetchPolicy === 'standby') {
|
|
217
|
+
this.result = this.skipStandbyResult;
|
|
102
218
|
}
|
|
103
|
-
if (
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
ref.current.previousData = previousResult.data;
|
|
107
|
-
}
|
|
108
|
-
setResult(ref.current.result = nextResult);
|
|
109
|
-
if (!nextResult.loading && options) {
|
|
110
|
-
if (nextResult.error) {
|
|
111
|
-
(_a = options.onError) === null || _a === void 0 ? void 0 : _a.call(options, nextResult.error);
|
|
112
|
-
}
|
|
113
|
-
else if (nextResult.data) {
|
|
114
|
-
(_b = options.onCompleted) === null || _b === void 0 ? void 0 : _b.call(options, nextResult.data);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
219
|
+
else if (this.result === this.ssrDisabledResult ||
|
|
220
|
+
this.result === this.skipStandbyResult) {
|
|
221
|
+
this.result = void 0;
|
|
117
222
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
if (
|
|
122
|
-
|
|
223
|
+
};
|
|
224
|
+
InternalState.prototype.createWatchQueryOptions = function (_a) {
|
|
225
|
+
var _b;
|
|
226
|
+
if (_a === void 0) { _a = {}; }
|
|
227
|
+
var skip = _a.skip; _a.ssr; _a.onCompleted; _a.onError; _a.displayName; _a.defaultOptions; var otherOptions = tslib.__rest(_a, ["skip", "ssr", "onCompleted", "onError", "displayName", "defaultOptions"]);
|
|
228
|
+
var watchQueryOptions = Object.assign(otherOptions, { query: this.query });
|
|
229
|
+
if (this.renderPromises &&
|
|
230
|
+
(watchQueryOptions.fetchPolicy === 'network-only' ||
|
|
231
|
+
watchQueryOptions.fetchPolicy === 'cache-and-network')) {
|
|
232
|
+
watchQueryOptions.fetchPolicy = 'cache-first';
|
|
123
233
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
var _a, _b;
|
|
127
|
-
var previousResult = ref.current.result;
|
|
128
|
-
var result = obsQuery.getCurrentResult();
|
|
129
|
-
if (previousResult &&
|
|
130
|
-
previousResult.loading === result.loading &&
|
|
131
|
-
previousResult.networkStatus === result.networkStatus &&
|
|
132
|
-
equality.equal(previousResult.data, result.data)) {
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
if (previousResult.data) {
|
|
136
|
-
ref.current.previousData = previousResult.data;
|
|
137
|
-
}
|
|
138
|
-
setResult(ref.current.result = result);
|
|
139
|
-
if (!result.loading) {
|
|
140
|
-
(_b = (_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onCompleted) === null || _b === void 0 ? void 0 : _b.call(_a, result.data);
|
|
141
|
-
}
|
|
234
|
+
if (!watchQueryOptions.variables) {
|
|
235
|
+
watchQueryOptions.variables = {};
|
|
142
236
|
}
|
|
143
|
-
|
|
144
|
-
var
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
237
|
+
if (skip) {
|
|
238
|
+
var _c = watchQueryOptions.fetchPolicy, fetchPolicy = _c === void 0 ? this.getDefaultFetchPolicy() : _c, _d = watchQueryOptions.initialFetchPolicy, initialFetchPolicy = _d === void 0 ? fetchPolicy : _d;
|
|
239
|
+
Object.assign(watchQueryOptions, {
|
|
240
|
+
initialFetchPolicy: initialFetchPolicy,
|
|
241
|
+
fetchPolicy: 'standby',
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
else if (!watchQueryOptions.fetchPolicy) {
|
|
245
|
+
watchQueryOptions.fetchPolicy =
|
|
246
|
+
((_b = this.observable) === null || _b === void 0 ? void 0 : _b.options.initialFetchPolicy) ||
|
|
247
|
+
this.getDefaultFetchPolicy();
|
|
248
|
+
}
|
|
249
|
+
return watchQueryOptions;
|
|
250
|
+
};
|
|
251
|
+
InternalState.prototype.getDefaultFetchPolicy = function () {
|
|
252
|
+
var _a, _b;
|
|
253
|
+
return (((_a = this.queryHookOptions.defaultOptions) === null || _a === void 0 ? void 0 : _a.fetchPolicy) ||
|
|
254
|
+
((_b = this.client.defaultOptions.watchQuery) === null || _b === void 0 ? void 0 : _b.fetchPolicy) ||
|
|
255
|
+
"cache-first");
|
|
256
|
+
};
|
|
257
|
+
InternalState.prototype.onCompleted = function (data) { };
|
|
258
|
+
InternalState.prototype.onError = function (error) { };
|
|
259
|
+
InternalState.prototype.useObservableQuery = function () {
|
|
260
|
+
var obsQuery = this.observable =
|
|
261
|
+
this.renderPromises
|
|
262
|
+
&& this.renderPromises.getSSRObservable(this.watchQueryOptions)
|
|
263
|
+
|| this.observable
|
|
264
|
+
|| this.client.watchQuery(core.mergeOptions(this.queryHookOptions.defaultOptions, this.watchQueryOptions));
|
|
265
|
+
this.obsQueryFields = React.useMemo(function () { return ({
|
|
266
|
+
refetch: obsQuery.refetch.bind(obsQuery),
|
|
267
|
+
reobserve: obsQuery.reobserve.bind(obsQuery),
|
|
268
|
+
fetchMore: obsQuery.fetchMore.bind(obsQuery),
|
|
269
|
+
updateQuery: obsQuery.updateQuery.bind(obsQuery),
|
|
270
|
+
startPolling: obsQuery.startPolling.bind(obsQuery),
|
|
271
|
+
stopPolling: obsQuery.stopPolling.bind(obsQuery),
|
|
272
|
+
subscribeToMore: obsQuery.subscribeToMore.bind(obsQuery),
|
|
273
|
+
}); }, [obsQuery]);
|
|
274
|
+
var ssrAllowed = !(this.queryHookOptions.ssr === false ||
|
|
275
|
+
this.queryHookOptions.skip);
|
|
276
|
+
if (this.renderPromises && ssrAllowed) {
|
|
277
|
+
this.renderPromises.registerSSRObservable(obsQuery);
|
|
278
|
+
if (obsQuery.getCurrentResult().loading) {
|
|
279
|
+
this.renderPromises.addObservableQueryPromise(obsQuery);
|
|
153
280
|
}
|
|
154
|
-
|
|
155
|
-
|
|
281
|
+
}
|
|
282
|
+
return obsQuery;
|
|
283
|
+
};
|
|
284
|
+
InternalState.prototype.setResult = function (nextResult) {
|
|
285
|
+
var previousResult = this.result;
|
|
286
|
+
if (previousResult && previousResult.data) {
|
|
287
|
+
this.previousData = previousResult.data;
|
|
288
|
+
}
|
|
289
|
+
this.result = nextResult;
|
|
290
|
+
this.forceUpdate();
|
|
291
|
+
this.handleErrorOrCompleted(nextResult);
|
|
292
|
+
};
|
|
293
|
+
InternalState.prototype.handleErrorOrCompleted = function (result) {
|
|
294
|
+
if (!result.loading) {
|
|
295
|
+
if (result.error) {
|
|
296
|
+
this.onError(result.error);
|
|
156
297
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
!equality.equal(error, previousResult.error)) {
|
|
160
|
-
setResult(ref.current.result = {
|
|
161
|
-
data: previousResult.data,
|
|
162
|
-
error: error,
|
|
163
|
-
loading: false,
|
|
164
|
-
networkStatus: core.NetworkStatus.error,
|
|
165
|
-
});
|
|
166
|
-
(_b = (_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.onError) === null || _b === void 0 ? void 0 : _b.call(_a, error);
|
|
298
|
+
else if (result.data) {
|
|
299
|
+
this.onCompleted(result.data);
|
|
167
300
|
}
|
|
168
301
|
}
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
302
|
+
};
|
|
303
|
+
InternalState.prototype.getCurrentResult = function () {
|
|
304
|
+
if (!this.result) {
|
|
305
|
+
this.handleErrorOrCompleted(this.result = this.observable.getCurrentResult());
|
|
306
|
+
}
|
|
307
|
+
return this.result;
|
|
308
|
+
};
|
|
309
|
+
InternalState.prototype.toQueryResult = function (result) {
|
|
310
|
+
var queryResult = this.toQueryResultCache.get(result);
|
|
311
|
+
if (queryResult)
|
|
312
|
+
return queryResult;
|
|
313
|
+
var data = result.data; result.partial; var resultWithoutPartial = tslib.__rest(result, ["data", "partial"]);
|
|
314
|
+
this.toQueryResultCache.set(result, queryResult = tslib.__assign(tslib.__assign(tslib.__assign({ data: data }, resultWithoutPartial), this.obsQueryFields), { client: this.client, observable: this.observable, variables: this.observable.variables, called: true, previousData: this.previousData }));
|
|
315
|
+
if (!queryResult.error && utilities.isNonEmptyArray(result.errors)) {
|
|
316
|
+
queryResult.error = new errors.ApolloError({ graphQLErrors: result.errors });
|
|
317
|
+
}
|
|
318
|
+
return queryResult;
|
|
319
|
+
};
|
|
320
|
+
InternalState.prototype.unsafeHandlePartialRefetch = function (result) {
|
|
321
|
+
if (result.partial &&
|
|
322
|
+
this.queryHookOptions.partialRefetch &&
|
|
176
323
|
!result.loading &&
|
|
177
324
|
(!result.data || Object.keys(result.data).length === 0) &&
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
(
|
|
184
|
-
!(options === null || options === void 0 ? void 0 : options.skip) &&
|
|
185
|
-
result.loading) {
|
|
186
|
-
obsQuery.setOptions(createWatchQueryOptions(query, options, defaultWatchQueryOptions)).catch(function () { });
|
|
325
|
+
this.observable.options.fetchPolicy !== 'cache-only') {
|
|
326
|
+
Object.assign(result, {
|
|
327
|
+
loading: true,
|
|
328
|
+
networkStatus: core.NetworkStatus.refetch,
|
|
329
|
+
});
|
|
330
|
+
this.observable.refetch();
|
|
187
331
|
}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
(options === null || options === void 0 ? void 0 : options.ssr) === false) {
|
|
192
|
-
result = ref.current.result = {
|
|
193
|
-
loading: true,
|
|
194
|
-
data: void 0,
|
|
195
|
-
error: void 0,
|
|
196
|
-
networkStatus: core.NetworkStatus.loading,
|
|
197
|
-
};
|
|
198
|
-
}
|
|
199
|
-
else if ((options === null || options === void 0 ? void 0 : options.skip) || (options === null || options === void 0 ? void 0 : options.fetchPolicy) === 'standby') {
|
|
200
|
-
result = {
|
|
201
|
-
loading: false,
|
|
202
|
-
data: void 0,
|
|
203
|
-
error: void 0,
|
|
204
|
-
networkStatus: core.NetworkStatus.ready,
|
|
205
|
-
};
|
|
206
|
-
}
|
|
207
|
-
if (result.errors && result.errors.length) {
|
|
208
|
-
result = tslib.__assign(tslib.__assign({}, result), { error: result.error || new errors.ApolloError({ graphQLErrors: result.errors }) });
|
|
209
|
-
}
|
|
210
|
-
var obsQueryFields = react.useMemo(function () { return ({
|
|
211
|
-
refetch: obsQuery.refetch.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
|
-
return tslib.__assign(tslib.__assign(tslib.__assign({}, obsQueryFields), { variables: createWatchQueryOptions(query, options, defaultWatchQueryOptions).variables, client: client, called: true, previousData: ref.current.previousData }), result);
|
|
219
|
-
}
|
|
220
|
-
function createWatchQueryOptions(query, options, defaultOptions) {
|
|
221
|
-
var _a;
|
|
222
|
-
if (options === void 0) { options = {}; }
|
|
223
|
-
var skip = options.skip; options.ssr; options.onCompleted; options.onError; options.displayName; var otherOptions = tslib.__rest(options, ["skip", "ssr", "onCompleted", "onError", "displayName"]);
|
|
224
|
-
var watchQueryOptions = tslib.__assign({ query: query }, otherOptions);
|
|
225
|
-
if (defaultOptions) {
|
|
226
|
-
watchQueryOptions = core.mergeOptions(defaultOptions, watchQueryOptions);
|
|
227
|
-
}
|
|
228
|
-
if (skip) {
|
|
229
|
-
watchQueryOptions.fetchPolicy = 'standby';
|
|
230
|
-
}
|
|
231
|
-
else if (((_a = watchQueryOptions.context) === null || _a === void 0 ? void 0 : _a.renderPromises) &&
|
|
232
|
-
(watchQueryOptions.fetchPolicy === 'network-only' ||
|
|
233
|
-
watchQueryOptions.fetchPolicy === 'cache-and-network')) {
|
|
234
|
-
watchQueryOptions.fetchPolicy = 'cache-first';
|
|
235
|
-
}
|
|
236
|
-
else if (!watchQueryOptions.fetchPolicy) {
|
|
237
|
-
watchQueryOptions.fetchPolicy = 'cache-first';
|
|
238
|
-
}
|
|
239
|
-
if (!watchQueryOptions.variables) {
|
|
240
|
-
watchQueryOptions.variables = {};
|
|
241
|
-
}
|
|
242
|
-
return watchQueryOptions;
|
|
243
|
-
}
|
|
332
|
+
};
|
|
333
|
+
return InternalState;
|
|
334
|
+
}());
|
|
244
335
|
|
|
245
336
|
var EAGER_METHODS = [
|
|
246
337
|
'refetch',
|
|
338
|
+
'reobserve',
|
|
247
339
|
'fetchMore',
|
|
248
340
|
'updateQuery',
|
|
249
341
|
'startPolling',
|
|
250
342
|
'subscribeToMore',
|
|
251
343
|
];
|
|
252
344
|
function useLazyQuery(query, options) {
|
|
253
|
-
var
|
|
254
|
-
|
|
255
|
-
}),
|
|
256
|
-
var
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
345
|
+
var internalState = useInternalState(useApolloClient(options && options.client), query);
|
|
346
|
+
var execOptionsRef = React.useRef();
|
|
347
|
+
var useQueryResult = internalState.useQuery(tslib.__assign(tslib.__assign(tslib.__assign({}, options), execOptionsRef.current), { skip: !execOptionsRef.current }));
|
|
348
|
+
var initialFetchPolicy = useQueryResult.observable.options.initialFetchPolicy ||
|
|
349
|
+
internalState.getDefaultFetchPolicy();
|
|
350
|
+
var result = Object.assign(useQueryResult, {
|
|
351
|
+
called: !!execOptionsRef.current,
|
|
352
|
+
});
|
|
353
|
+
var eagerMethods = React.useMemo(function () {
|
|
261
354
|
var eagerMethods = {};
|
|
262
355
|
var _loop_1 = function (key) {
|
|
263
356
|
var method = result[key];
|
|
264
357
|
eagerMethods[key] = function () {
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
358
|
+
if (!execOptionsRef.current) {
|
|
359
|
+
execOptionsRef.current = Object.create(null);
|
|
360
|
+
internalState.forceUpdate();
|
|
268
361
|
}
|
|
269
|
-
|
|
270
|
-
return method.apply(void 0, args);
|
|
362
|
+
return method.apply(this, arguments);
|
|
271
363
|
};
|
|
272
364
|
};
|
|
273
365
|
for (var _i = 0, EAGER_METHODS_1 = EAGER_METHODS; _i < EAGER_METHODS_1.length; _i++) {
|
|
@@ -276,15 +368,14 @@ function useLazyQuery(query, options) {
|
|
|
276
368
|
}
|
|
277
369
|
return eagerMethods;
|
|
278
370
|
}, []);
|
|
279
|
-
result.error = result.error || void 0;
|
|
280
371
|
Object.assign(result, eagerMethods);
|
|
281
|
-
var execute =
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
372
|
+
var execute = React.useCallback(function (executeOptions) {
|
|
373
|
+
execOptionsRef.current = executeOptions ? tslib.__assign(tslib.__assign({}, executeOptions), { fetchPolicy: executeOptions.fetchPolicy || initialFetchPolicy }) : {
|
|
374
|
+
fetchPolicy: initialFetchPolicy,
|
|
375
|
+
};
|
|
376
|
+
var promise = internalState
|
|
377
|
+
.asyncUpdate()
|
|
378
|
+
.then(function (queryResult) { return Object.assign(queryResult, eagerMethods); });
|
|
288
379
|
promise.catch(function () { });
|
|
289
380
|
return promise;
|
|
290
381
|
}, []);
|
|
@@ -294,12 +385,12 @@ function useLazyQuery(query, options) {
|
|
|
294
385
|
function useMutation(mutation, options) {
|
|
295
386
|
var client = useApolloClient(options === null || options === void 0 ? void 0 : options.client);
|
|
296
387
|
parser.verifyDocumentType(mutation, parser.DocumentType.Mutation);
|
|
297
|
-
var _a =
|
|
388
|
+
var _a = React.useState({
|
|
298
389
|
called: false,
|
|
299
390
|
loading: false,
|
|
300
391
|
client: client,
|
|
301
392
|
}), result = _a[0], setResult = _a[1];
|
|
302
|
-
var ref =
|
|
393
|
+
var ref = React.useRef({
|
|
303
394
|
result: result,
|
|
304
395
|
mutationId: 0,
|
|
305
396
|
isMounted: true,
|
|
@@ -310,7 +401,7 @@ function useMutation(mutation, options) {
|
|
|
310
401
|
{
|
|
311
402
|
Object.assign(ref.current, { client: client, options: options, mutation: mutation });
|
|
312
403
|
}
|
|
313
|
-
var execute =
|
|
404
|
+
var execute = React.useCallback(function (executeOptions) {
|
|
314
405
|
if (executeOptions === void 0) { executeOptions = {}; }
|
|
315
406
|
var _a = ref.current, client = _a.client, options = _a.options, mutation = _a.mutation;
|
|
316
407
|
var baseOptions = tslib.__assign(tslib.__assign({}, options), { mutation: mutation });
|
|
@@ -370,25 +461,28 @@ function useMutation(mutation, options) {
|
|
|
370
461
|
throw error;
|
|
371
462
|
});
|
|
372
463
|
}, []);
|
|
373
|
-
var reset =
|
|
464
|
+
var reset = React.useCallback(function () {
|
|
374
465
|
setResult({ called: false, loading: false, client: client });
|
|
375
466
|
}, []);
|
|
376
|
-
|
|
377
|
-
ref.current.isMounted =
|
|
378
|
-
|
|
467
|
+
React.useEffect(function () {
|
|
468
|
+
ref.current.isMounted = true;
|
|
469
|
+
return function () {
|
|
470
|
+
ref.current.isMounted = false;
|
|
471
|
+
};
|
|
472
|
+
}, []);
|
|
379
473
|
return [execute, tslib.__assign({ reset: reset }, result)];
|
|
380
474
|
}
|
|
381
475
|
|
|
382
476
|
function useSubscription(subscription, options) {
|
|
383
477
|
var client = useApolloClient(options === null || options === void 0 ? void 0 : options.client);
|
|
384
478
|
parser.verifyDocumentType(subscription, parser.DocumentType.Subscription);
|
|
385
|
-
var _a =
|
|
479
|
+
var _a = React.useState({
|
|
386
480
|
loading: !(options === null || options === void 0 ? void 0 : options.skip),
|
|
387
481
|
error: void 0,
|
|
388
482
|
data: void 0,
|
|
389
483
|
variables: options === null || options === void 0 ? void 0 : options.variables,
|
|
390
484
|
}), result = _a[0], setResult = _a[1];
|
|
391
|
-
var _b =
|
|
485
|
+
var _b = React.useState(function () {
|
|
392
486
|
if (options === null || options === void 0 ? void 0 : options.skip) {
|
|
393
487
|
return null;
|
|
394
488
|
}
|
|
@@ -399,15 +493,21 @@ function useSubscription(subscription, options) {
|
|
|
399
493
|
context: options === null || options === void 0 ? void 0 : options.context,
|
|
400
494
|
});
|
|
401
495
|
}), observable = _b[0], setObservable = _b[1];
|
|
402
|
-
var
|
|
403
|
-
|
|
496
|
+
var canResetObservableRef = React.useRef(false);
|
|
497
|
+
React.useEffect(function () {
|
|
498
|
+
return function () {
|
|
499
|
+
canResetObservableRef.current = true;
|
|
500
|
+
};
|
|
501
|
+
}, []);
|
|
502
|
+
var ref = React.useRef({ client: client, subscription: subscription, options: options });
|
|
503
|
+
React.useEffect(function () {
|
|
404
504
|
var _a, _b, _c, _d;
|
|
405
505
|
var shouldResubscribe = options === null || options === void 0 ? void 0 : options.shouldResubscribe;
|
|
406
506
|
if (typeof shouldResubscribe === 'function') {
|
|
407
507
|
shouldResubscribe = !!shouldResubscribe(options);
|
|
408
508
|
}
|
|
409
509
|
if (options === null || options === void 0 ? void 0 : options.skip) {
|
|
410
|
-
if (!(options === null || options === void 0 ? void 0 : options.skip) !== !((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.skip)) {
|
|
510
|
+
if (!(options === null || options === void 0 ? void 0 : options.skip) !== !((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.skip) || canResetObservableRef.current) {
|
|
411
511
|
setResult({
|
|
412
512
|
loading: false,
|
|
413
513
|
data: void 0,
|
|
@@ -415,13 +515,16 @@ function useSubscription(subscription, options) {
|
|
|
415
515
|
variables: options === null || options === void 0 ? void 0 : options.variables,
|
|
416
516
|
});
|
|
417
517
|
setObservable(null);
|
|
518
|
+
canResetObservableRef.current = false;
|
|
418
519
|
}
|
|
419
520
|
}
|
|
420
|
-
else if (shouldResubscribe !== false &&
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
521
|
+
else if ((shouldResubscribe !== false &&
|
|
522
|
+
(client !== ref.current.client ||
|
|
523
|
+
subscription !== ref.current.subscription ||
|
|
524
|
+
(options === null || options === void 0 ? void 0 : options.fetchPolicy) !== ((_b = ref.current.options) === null || _b === void 0 ? void 0 : _b.fetchPolicy) ||
|
|
525
|
+
!(options === null || options === void 0 ? void 0 : options.skip) !== !((_c = ref.current.options) === null || _c === void 0 ? void 0 : _c.skip) ||
|
|
526
|
+
!equality.equal(options === null || options === void 0 ? void 0 : options.variables, (_d = ref.current.options) === null || _d === void 0 ? void 0 : _d.variables))) ||
|
|
527
|
+
canResetObservableRef.current) {
|
|
425
528
|
setResult({
|
|
426
529
|
loading: true,
|
|
427
530
|
data: void 0,
|
|
@@ -434,10 +537,11 @@ function useSubscription(subscription, options) {
|
|
|
434
537
|
fetchPolicy: options === null || options === void 0 ? void 0 : options.fetchPolicy,
|
|
435
538
|
context: options === null || options === void 0 ? void 0 : options.context,
|
|
436
539
|
}));
|
|
540
|
+
canResetObservableRef.current = false;
|
|
437
541
|
}
|
|
438
542
|
Object.assign(ref.current, { client: client, subscription: subscription, options: options });
|
|
439
|
-
}, [client, subscription, options]);
|
|
440
|
-
|
|
543
|
+
}, [client, subscription, options, canResetObservableRef.current]);
|
|
544
|
+
React.useEffect(function () {
|
|
441
545
|
if (!observable) {
|
|
442
546
|
return;
|
|
443
547
|
}
|
|
@@ -478,8 +582,8 @@ function useSubscription(subscription, options) {
|
|
|
478
582
|
|
|
479
583
|
function useReactiveVar(rv) {
|
|
480
584
|
var value = rv();
|
|
481
|
-
var setValue =
|
|
482
|
-
|
|
585
|
+
var setValue = React.useState(value)[1];
|
|
586
|
+
React.useEffect(function () {
|
|
483
587
|
var probablySameValue = rv();
|
|
484
588
|
if (value !== probablySameValue) {
|
|
485
589
|
setValue(probablySameValue);
|