@apollo/client 3.6.0-beta.3 → 3.6.0-beta.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/apollo-client.cjs +233 -196
- package/apollo-client.cjs.map +1 -1
- package/apollo-client.min.cjs +1 -1
- package/core/ObservableQuery.d.ts.map +1 -1
- package/core/ObservableQuery.js +6 -3
- package/core/ObservableQuery.js.map +1 -1
- package/core/core.cjs +7 -4
- package/core/core.cjs.map +1 -1
- package/invariantErrorCodes.js +3 -3
- package/link/batch/batch.cjs +47 -37
- package/link/batch/batch.cjs.map +1 -1
- 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/subscriptions/index.d.ts +9 -0
- package/link/subscriptions/index.d.ts.map +1 -0
- package/link/subscriptions/index.js +39 -0
- package/link/subscriptions/index.js.map +1 -0
- package/link/subscriptions/package.json +8 -0
- package/link/subscriptions/subscriptions.cjs +45 -0
- package/link/subscriptions/subscriptions.cjs.map +1 -0
- package/package.json +20 -19
- package/react/hooks/hooks.cjs +225 -191
- package/react/hooks/hooks.cjs.map +1 -1
- package/react/hooks/useApolloClient.js +2 -2
- package/react/hooks/useApolloClient.js.map +1 -1
- package/react/hooks/useLazyQuery.d.ts.map +1 -1
- package/react/hooks/useLazyQuery.js +20 -27
- package/react/hooks/useLazyQuery.js.map +1 -1
- package/react/hooks/useMutation.d.ts.map +1 -1
- package/react/hooks/useMutation.js +59 -68
- package/react/hooks/useMutation.js.map +1 -1
- package/react/hooks/useQuery.d.ts.map +1 -1
- package/react/hooks/useQuery.js +137 -88
- package/react/hooks/useQuery.js.map +1 -1
- package/react/hooks/useSubscription.d.ts.map +1 -1
- package/react/hooks/useSubscription.js +10 -8
- package/react/hooks/useSubscription.js.map +1 -1
- package/react/ssr/RenderPromises.d.ts +2 -2
- package/react/ssr/RenderPromises.d.ts.map +1 -1
- package/react/ssr/RenderPromises.js +7 -5
- package/react/ssr/RenderPromises.js.map +1 -1
- package/react/ssr/ssr.cjs +7 -5
- package/react/ssr/ssr.cjs.map +1 -1
- package/react/types/types.d.ts +1 -1
- package/react/types/types.d.ts.map +1 -1
- package/react/types/types.js.map +1 -1
- package/utilities/globals/global.d.ts.map +1 -1
- package/utilities/globals/global.js +1 -1
- package/utilities/globals/global.js.map +1 -1
- package/utilities/globals/globals.cjs +1 -1
- package/utilities/globals/globals.cjs.map +1 -1
- package/version.js +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@apollo/client",
|
|
3
|
-
"version": "3.6.0-beta.
|
|
3
|
+
"version": "3.6.0-beta.4",
|
|
4
4
|
"description": "A fully-featured caching GraphQL client.",
|
|
5
5
|
"private": false,
|
|
6
6
|
"keywords": [
|
|
@@ -30,18 +30,18 @@
|
|
|
30
30
|
"homepage": "https://www.apollographql.com/docs/react/",
|
|
31
31
|
"peerDependencies": {
|
|
32
32
|
"graphql": "^14.0.0 || ^15.0.0 || ^16.0.0",
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
33
|
+
"graphql-ws": "^5.5.5",
|
|
34
|
+
"react": "^16.8.0 || ^17.0.0",
|
|
35
|
+
"subscriptions-transport-ws": "^0.9.0 || ^0.11.0"
|
|
36
36
|
},
|
|
37
37
|
"peerDependenciesMeta": {
|
|
38
|
-
"
|
|
38
|
+
"graphql-ws": {
|
|
39
39
|
"optional": true
|
|
40
40
|
},
|
|
41
|
-
"
|
|
41
|
+
"react": {
|
|
42
42
|
"optional": true
|
|
43
43
|
},
|
|
44
|
-
"
|
|
44
|
+
"subscriptions-transport-ws": {
|
|
45
45
|
"optional": true
|
|
46
46
|
}
|
|
47
47
|
},
|
|
@@ -55,12 +55,12 @@
|
|
|
55
55
|
"optimism": "^0.16.1",
|
|
56
56
|
"prop-types": "^15.7.2",
|
|
57
57
|
"symbol-observable": "^4.0.0",
|
|
58
|
-
"ts-invariant": "^0.9.
|
|
58
|
+
"ts-invariant": "^0.9.4",
|
|
59
59
|
"tslib": "^2.3.0",
|
|
60
60
|
"zen-observable-ts": "^1.2.0"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
|
-
"@babel/parser": "7.16.
|
|
63
|
+
"@babel/parser": "7.16.12",
|
|
64
64
|
"@graphql-tools/schema": "8.3.1",
|
|
65
65
|
"@rollup/plugin-node-resolve": "11.2.1",
|
|
66
66
|
"@testing-library/react": "12.1.2",
|
|
@@ -69,33 +69,34 @@
|
|
|
69
69
|
"@types/fetch-mock": "7.3.5",
|
|
70
70
|
"@types/glob": "7.2.0",
|
|
71
71
|
"@types/hoist-non-react-statics": "3.3.1",
|
|
72
|
-
"@types/jest": "27.0
|
|
73
|
-
"@types/lodash": "4.14.
|
|
74
|
-
"@types/node": "16.11.
|
|
72
|
+
"@types/jest": "27.4.0",
|
|
73
|
+
"@types/lodash": "4.14.178",
|
|
74
|
+
"@types/node": "16.11.21",
|
|
75
75
|
"@types/react": "17.0.34",
|
|
76
76
|
"@types/react-dom": "17.0.2",
|
|
77
|
-
"
|
|
77
|
+
"acorn": "8.6.0",
|
|
78
78
|
"bundlesize": "0.18.1",
|
|
79
|
-
"cross-fetch": "3.1.
|
|
79
|
+
"cross-fetch": "3.1.5",
|
|
80
80
|
"crypto-hash": "1.3.0",
|
|
81
81
|
"fetch-mock": "9.11.0",
|
|
82
82
|
"glob": "7.2.0",
|
|
83
83
|
"graphql": "16.0.1",
|
|
84
|
-
"
|
|
84
|
+
"graphql-ws": "5.5.5",
|
|
85
|
+
"jest": "27.4.7",
|
|
85
86
|
"jest-fetch-mock": "3.0.3",
|
|
86
87
|
"jest-junit": "13.0.0",
|
|
87
88
|
"lodash": "4.17.21",
|
|
88
89
|
"react": "17.0.2",
|
|
89
90
|
"react-dom": "17.0.2",
|
|
90
|
-
"recast": "0.
|
|
91
|
-
"resolve": "1.
|
|
91
|
+
"recast": "0.21.0",
|
|
92
|
+
"resolve": "1.22.0",
|
|
92
93
|
"rimraf": "3.0.2",
|
|
93
|
-
"rollup": "2.
|
|
94
|
+
"rollup": "2.66.1",
|
|
94
95
|
"rollup-plugin-terser": "7.0.2",
|
|
95
96
|
"rxjs": "6.6.7",
|
|
96
97
|
"subscriptions-transport-ws": "0.11.0",
|
|
97
98
|
"terser": "5.10.0",
|
|
98
|
-
"ts-jest": "27.
|
|
99
|
+
"ts-jest": "27.1.3",
|
|
99
100
|
"ts-node": "10.4.0",
|
|
100
101
|
"typescript": "4.5.2",
|
|
101
102
|
"wait-for-observables": "1.0.3",
|
package/react/hooks/hooks.cjs
CHANGED
|
@@ -6,18 +6,17 @@ 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 shim = require('use-sync-external-store/shim');
|
|
10
9
|
var equality = require('@wry/equality');
|
|
11
|
-
var errors = require('../../errors');
|
|
12
10
|
var core = require('../../core');
|
|
11
|
+
var errors = require('../../errors');
|
|
13
12
|
var parser = require('../parser');
|
|
14
13
|
|
|
15
14
|
function useApolloClient(override) {
|
|
16
15
|
var context$1 = react.useContext(context.getApolloContext());
|
|
17
16
|
var client = override || context$1.client;
|
|
18
17
|
__DEV__ ? globals.invariant(!!client, 'Could not find "client" in the context or passed in as an option. ' +
|
|
19
|
-
'Wrap the root component in an <ApolloProvider>, or pass an ApolloClient' +
|
|
20
|
-
'
|
|
18
|
+
'Wrap the root component in an <ApolloProvider>, or pass an ApolloClient ' +
|
|
19
|
+
'instance in via options.') : globals.invariant(!!client, 29);
|
|
21
20
|
return client;
|
|
22
21
|
}
|
|
23
22
|
|
|
@@ -25,15 +24,10 @@ function useQuery(query, options) {
|
|
|
25
24
|
var _a;
|
|
26
25
|
var context$1 = react.useContext(context.getApolloContext());
|
|
27
26
|
var client = useApolloClient(options === null || options === void 0 ? void 0 : options.client);
|
|
27
|
+
var defaultWatchQueryOptions = client.defaultOptions.watchQuery;
|
|
28
28
|
parser.verifyDocumentType(query, parser.DocumentType.Query);
|
|
29
|
-
var ref = react.useRef({
|
|
30
|
-
client: client,
|
|
31
|
-
query: query,
|
|
32
|
-
options: options,
|
|
33
|
-
watchQueryOptions: createWatchQueryOptions(query, options),
|
|
34
|
-
});
|
|
35
29
|
var _b = react.useState(function () {
|
|
36
|
-
var watchQueryOptions = createWatchQueryOptions(query, options);
|
|
30
|
+
var watchQueryOptions = createWatchQueryOptions(query, options, defaultWatchQueryOptions);
|
|
37
31
|
var obsQuery = null;
|
|
38
32
|
if (context$1.renderPromises) {
|
|
39
33
|
obsQuery = context$1.renderPromises.getSSRObservable(watchQueryOptions);
|
|
@@ -49,7 +43,7 @@ function useQuery(query, options) {
|
|
|
49
43
|
!(options === null || options === void 0 ? void 0 : options.skip) &&
|
|
50
44
|
obsQuery.getCurrentResult().loading) {
|
|
51
45
|
context$1.renderPromises.addQueryPromise({
|
|
52
|
-
getOptions: function () { return createWatchQueryOptions(query, options); },
|
|
46
|
+
getOptions: function () { return createWatchQueryOptions(query, options, defaultWatchQueryOptions); },
|
|
53
47
|
fetchData: function () { return new Promise(function (resolve) {
|
|
54
48
|
var sub = obsQuery.subscribe({
|
|
55
49
|
next: function (result) {
|
|
@@ -71,96 +65,112 @@ function useQuery(query, options) {
|
|
|
71
65
|
}
|
|
72
66
|
return obsQuery;
|
|
73
67
|
}), obsQuery = _b[0], setObsQuery = _b[1];
|
|
68
|
+
var _c = react.useState(function () {
|
|
69
|
+
var _a, _b;
|
|
70
|
+
var result = obsQuery.getCurrentResult();
|
|
71
|
+
if (!result.loading && options) {
|
|
72
|
+
if (result.error) {
|
|
73
|
+
(_a = options.onError) === null || _a === void 0 ? void 0 : _a.call(options, result.error);
|
|
74
|
+
}
|
|
75
|
+
else if (result.data) {
|
|
76
|
+
(_b = options.onCompleted) === null || _b === void 0 ? void 0 : _b.call(options, result.data);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return result;
|
|
80
|
+
}), result = _c[0], setResult = _c[1];
|
|
81
|
+
var ref = react.useRef({
|
|
82
|
+
client: client,
|
|
83
|
+
query: query,
|
|
84
|
+
options: options,
|
|
85
|
+
result: result,
|
|
86
|
+
previousData: void 0,
|
|
87
|
+
watchQueryOptions: createWatchQueryOptions(query, options, defaultWatchQueryOptions),
|
|
88
|
+
});
|
|
74
89
|
react.useEffect(function () {
|
|
75
|
-
var
|
|
90
|
+
var _a, _b;
|
|
91
|
+
var watchQueryOptions = createWatchQueryOptions(query, options, defaultWatchQueryOptions);
|
|
92
|
+
var nextResult;
|
|
76
93
|
if (ref.current.client !== client || !equality.equal(ref.current.query, query)) {
|
|
77
94
|
var obsQuery_1 = client.watchQuery(watchQueryOptions);
|
|
78
95
|
setObsQuery(obsQuery_1);
|
|
96
|
+
nextResult = obsQuery_1.getCurrentResult();
|
|
79
97
|
}
|
|
80
98
|
else if (!equality.equal(ref.current.watchQueryOptions, watchQueryOptions)) {
|
|
81
|
-
obsQuery.setOptions(watchQueryOptions);
|
|
82
|
-
|
|
99
|
+
obsQuery.setOptions(watchQueryOptions).catch(function () { });
|
|
100
|
+
nextResult = obsQuery.getCurrentResult();
|
|
101
|
+
ref.current.watchQueryOptions = watchQueryOptions;
|
|
83
102
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
watchQueryOptions: watchQueryOptions,
|
|
89
|
-
});
|
|
90
|
-
}, [obsQuery, client, query, options]);
|
|
91
|
-
var _c = react.useMemo(function () {
|
|
92
|
-
var previousResult;
|
|
93
|
-
var subscribe = function (forceUpdate) {
|
|
94
|
-
var subscription = obsQuery.subscribe(forceUpdate, onError);
|
|
95
|
-
function onError(error) {
|
|
96
|
-
forceUpdate();
|
|
97
|
-
subscription.unsubscribe();
|
|
98
|
-
var last = obsQuery["last"];
|
|
99
|
-
obsQuery.resetLastResults();
|
|
100
|
-
obsQuery.subscribe(forceUpdate, onError);
|
|
101
|
-
obsQuery["last"] = last;
|
|
102
|
-
if (!error.hasOwnProperty('graphQLErrors')) {
|
|
103
|
-
throw error;
|
|
104
|
-
}
|
|
103
|
+
if (nextResult) {
|
|
104
|
+
var previousResult = ref.current.result;
|
|
105
|
+
if (previousResult.data) {
|
|
106
|
+
ref.current.previousData = previousResult.data;
|
|
105
107
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
result = tslib.__assign(tslib.__assign({}, result), { error: result.error || new errors.ApolloError({ graphQLErrors: result.errors }) });
|
|
114
|
-
}
|
|
115
|
-
if (!previousResult ||
|
|
116
|
-
previousResult.loading !== result.loading ||
|
|
117
|
-
previousResult.networkStatus !== result.networkStatus ||
|
|
118
|
-
!equality.equal(previousResult.data, result.data) ||
|
|
119
|
-
!equality.equal(previousResult.error, result.error)) {
|
|
120
|
-
if (previousResult) {
|
|
121
|
-
result = tslib.__assign(tslib.__assign({}, result), { previousData: previousResult.data || previousResult.previousData });
|
|
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);
|
|
122
115
|
}
|
|
123
|
-
previousResult = result;
|
|
124
116
|
}
|
|
125
|
-
|
|
126
|
-
};
|
|
127
|
-
|
|
128
|
-
}, [obsQuery]), subscribe = _c[0], getSnapshot = _c[1];
|
|
129
|
-
var obsQueryMethods = react.useMemo(function () { return ({
|
|
130
|
-
refetch: obsQuery.refetch.bind(obsQuery),
|
|
131
|
-
fetchMore: obsQuery.fetchMore.bind(obsQuery),
|
|
132
|
-
updateQuery: obsQuery.updateQuery.bind(obsQuery),
|
|
133
|
-
startPolling: obsQuery.startPolling.bind(obsQuery),
|
|
134
|
-
stopPolling: obsQuery.stopPolling.bind(obsQuery),
|
|
135
|
-
subscribeToMore: obsQuery.subscribeToMore.bind(obsQuery),
|
|
136
|
-
}); }, [obsQuery]);
|
|
137
|
-
var result = shim.useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
|
|
117
|
+
}
|
|
118
|
+
Object.assign(ref.current, { client: client, query: query });
|
|
119
|
+
}, [obsQuery, client, query, options]);
|
|
138
120
|
react.useEffect(function () {
|
|
139
|
-
|
|
140
|
-
if (((_a = ref.current.options) === null || _a === void 0 ? void 0 : _a.skip) ||
|
|
141
|
-
((_b = ref.current.options) === null || _b === void 0 ? void 0 : _b.fetchPolicy) === 'standby') {
|
|
121
|
+
if (context$1.renderPromises) {
|
|
142
122
|
return;
|
|
143
123
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
124
|
+
var subscription = obsQuery.subscribe(onNext, onError);
|
|
125
|
+
function onNext() {
|
|
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;
|
|
147
134
|
}
|
|
148
|
-
|
|
149
|
-
|
|
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
|
+
}
|
|
142
|
+
}
|
|
143
|
+
function onError(error) {
|
|
144
|
+
var _a, _b;
|
|
145
|
+
var last = obsQuery["last"];
|
|
146
|
+
subscription.unsubscribe();
|
|
147
|
+
try {
|
|
148
|
+
obsQuery.resetLastResults();
|
|
149
|
+
subscription = obsQuery.subscribe(onNext, onError);
|
|
150
|
+
}
|
|
151
|
+
finally {
|
|
152
|
+
obsQuery["last"] = last;
|
|
153
|
+
}
|
|
154
|
+
if (!error.hasOwnProperty('graphQLErrors')) {
|
|
155
|
+
throw error;
|
|
156
|
+
}
|
|
157
|
+
var previousResult = ref.current.result;
|
|
158
|
+
if ((previousResult && previousResult.loading) ||
|
|
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);
|
|
150
167
|
}
|
|
151
168
|
}
|
|
152
|
-
|
|
169
|
+
return function () { return subscription.unsubscribe(); };
|
|
170
|
+
}, [obsQuery, context$1.renderPromises, client.disableNetworkFetches]);
|
|
153
171
|
var partial;
|
|
154
172
|
(_a = result, partial = _a.partial, result = tslib.__rest(_a, ["partial"]));
|
|
155
|
-
|
|
156
|
-
result = {
|
|
157
|
-
loading: false,
|
|
158
|
-
data: void 0,
|
|
159
|
-
error: void 0,
|
|
160
|
-
networkStatus: core.NetworkStatus.ready,
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
173
|
+
{
|
|
164
174
|
if (partial &&
|
|
165
175
|
(options === null || options === void 0 ? void 0 : options.partialRefetch) &&
|
|
166
176
|
!result.loading &&
|
|
@@ -169,17 +179,52 @@ function useQuery(query, options) {
|
|
|
169
179
|
result = tslib.__assign(tslib.__assign({}, result), { loading: true, networkStatus: core.NetworkStatus.refetch });
|
|
170
180
|
obsQuery.refetch();
|
|
171
181
|
}
|
|
172
|
-
if (context$1.renderPromises &&
|
|
173
|
-
|
|
174
|
-
|
|
182
|
+
if (context$1.renderPromises &&
|
|
183
|
+
(options === null || options === void 0 ? void 0 : options.ssr) !== false &&
|
|
184
|
+
!(options === null || options === void 0 ? void 0 : options.skip) &&
|
|
185
|
+
result.loading) {
|
|
186
|
+
obsQuery.setOptions(createWatchQueryOptions(query, options, defaultWatchQueryOptions)).catch(function () { });
|
|
175
187
|
}
|
|
188
|
+
Object.assign(ref.current, { options: options });
|
|
189
|
+
}
|
|
190
|
+
if ((context$1.renderPromises || client.disableNetworkFetches) &&
|
|
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
|
+
};
|
|
176
206
|
}
|
|
177
|
-
|
|
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);
|
|
178
219
|
}
|
|
179
|
-
function createWatchQueryOptions(query, options) {
|
|
220
|
+
function createWatchQueryOptions(query, options, defaultOptions) {
|
|
180
221
|
var _a;
|
|
181
222
|
if (options === void 0) { options = {}; }
|
|
182
|
-
var skip = options.skip; options.ssr; options.onCompleted; options.onError; options.displayName; var
|
|
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
|
+
}
|
|
183
228
|
if (skip) {
|
|
184
229
|
watchQueryOptions.fetchPolicy = 'standby';
|
|
185
230
|
}
|
|
@@ -191,7 +236,10 @@ function createWatchQueryOptions(query, options) {
|
|
|
191
236
|
else if (!watchQueryOptions.fetchPolicy) {
|
|
192
237
|
watchQueryOptions.fetchPolicy = 'cache-first';
|
|
193
238
|
}
|
|
194
|
-
|
|
239
|
+
if (!watchQueryOptions.variables) {
|
|
240
|
+
watchQueryOptions.variables = {};
|
|
241
|
+
}
|
|
242
|
+
return watchQueryOptions;
|
|
195
243
|
}
|
|
196
244
|
|
|
197
245
|
var EAGER_METHODS = [
|
|
@@ -204,36 +252,16 @@ var EAGER_METHODS = [
|
|
|
204
252
|
function useLazyQuery(query, options) {
|
|
205
253
|
var _a = react.useState({
|
|
206
254
|
called: false,
|
|
207
|
-
resolves: [],
|
|
208
255
|
}), execution = _a[0], setExecution = _a[1];
|
|
209
|
-
var execute = react.useCallback(function (executeOptions) {
|
|
210
|
-
var resolve;
|
|
211
|
-
var promise = new Promise(function (resolve1) { return (resolve = resolve1); });
|
|
212
|
-
setExecution(function (execution) {
|
|
213
|
-
if (execution.called) {
|
|
214
|
-
result && result.refetch(executeOptions === null || executeOptions === void 0 ? void 0 : executeOptions.variables);
|
|
215
|
-
}
|
|
216
|
-
return {
|
|
217
|
-
called: true,
|
|
218
|
-
resolves: tslib.__spreadArray(tslib.__spreadArray([], execution.resolves, true), [resolve], false),
|
|
219
|
-
options: executeOptions,
|
|
220
|
-
};
|
|
221
|
-
});
|
|
222
|
-
return promise;
|
|
223
|
-
}, []);
|
|
224
256
|
var result = useQuery(query, tslib.__assign(tslib.__assign(tslib.__assign({}, options), execution.options), { fetchPolicy: execution.called ? options === null || options === void 0 ? void 0 : options.fetchPolicy : 'standby', skip: undefined }));
|
|
225
|
-
react.useEffect(function () {
|
|
226
|
-
var resolves = execution.resolves;
|
|
227
|
-
if (!result.loading && resolves.length) {
|
|
228
|
-
setExecution(function (execution) { return (tslib.__assign(tslib.__assign({}, execution), { resolves: [] })); });
|
|
229
|
-
resolves.forEach(function (resolve) { return resolve(result); });
|
|
230
|
-
}
|
|
231
|
-
}, [result, execution]);
|
|
232
257
|
if (!execution.called) {
|
|
233
258
|
result = tslib.__assign(tslib.__assign({}, result), { loading: false, data: void 0, error: void 0, called: false });
|
|
259
|
+
}
|
|
260
|
+
var eagerMethods = react.useMemo(function () {
|
|
261
|
+
var eagerMethods = {};
|
|
234
262
|
var _loop_1 = function (key) {
|
|
235
263
|
var method = result[key];
|
|
236
|
-
|
|
264
|
+
eagerMethods[key] = function () {
|
|
237
265
|
var args = [];
|
|
238
266
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
239
267
|
args[_i] = arguments[_i];
|
|
@@ -246,7 +274,20 @@ function useLazyQuery(query, options) {
|
|
|
246
274
|
var key = EAGER_METHODS_1[_i];
|
|
247
275
|
_loop_1(key);
|
|
248
276
|
}
|
|
249
|
-
|
|
277
|
+
return eagerMethods;
|
|
278
|
+
}, []);
|
|
279
|
+
result.error = result.error || void 0;
|
|
280
|
+
Object.assign(result, eagerMethods);
|
|
281
|
+
var execute = react.useCallback(function (executeOptions) {
|
|
282
|
+
setExecution({ called: true, options: executeOptions });
|
|
283
|
+
var promise = result.refetch(executeOptions === null || executeOptions === void 0 ? void 0 : executeOptions.variables).then(function (result1) {
|
|
284
|
+
var result2 = tslib.__assign(tslib.__assign({}, result), { data: result1.data, error: result1.error, called: true, loading: false });
|
|
285
|
+
Object.assign(result2, eagerMethods);
|
|
286
|
+
return result2;
|
|
287
|
+
});
|
|
288
|
+
promise.catch(function () { });
|
|
289
|
+
return promise;
|
|
290
|
+
}, []);
|
|
250
291
|
return [execute, result];
|
|
251
292
|
}
|
|
252
293
|
|
|
@@ -262,82 +303,73 @@ function useMutation(mutation, options) {
|
|
|
262
303
|
result: result,
|
|
263
304
|
mutationId: 0,
|
|
264
305
|
isMounted: true,
|
|
265
|
-
execute: null,
|
|
266
306
|
client: client,
|
|
267
307
|
mutation: mutation,
|
|
268
308
|
options: options,
|
|
269
309
|
});
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
310
|
+
{
|
|
311
|
+
Object.assign(ref.current, { client: client, options: options, mutation: mutation });
|
|
312
|
+
}
|
|
313
|
+
var execute = react.useCallback(function (executeOptions) {
|
|
314
|
+
if (executeOptions === void 0) { executeOptions = {}; }
|
|
315
|
+
var _a = ref.current, client = _a.client, options = _a.options, mutation = _a.mutation;
|
|
316
|
+
var baseOptions = tslib.__assign(tslib.__assign({}, options), { mutation: mutation });
|
|
317
|
+
if (!ref.current.result.loading && !baseOptions.ignoreResults) {
|
|
318
|
+
setResult(ref.current.result = {
|
|
319
|
+
loading: true,
|
|
320
|
+
error: void 0,
|
|
321
|
+
data: void 0,
|
|
322
|
+
called: true,
|
|
323
|
+
client: client,
|
|
324
|
+
});
|
|
276
325
|
}
|
|
277
|
-
ref.current.
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
var
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
326
|
+
var mutationId = ++ref.current.mutationId;
|
|
327
|
+
var clientOptions = core.mergeOptions(baseOptions, executeOptions);
|
|
328
|
+
return client.mutate(clientOptions).then(function (response) {
|
|
329
|
+
var _a, _b;
|
|
330
|
+
var data = response.data, errors$1 = response.errors;
|
|
331
|
+
var error = errors$1 && errors$1.length > 0
|
|
332
|
+
? new errors.ApolloError({ graphQLErrors: errors$1 })
|
|
333
|
+
: void 0;
|
|
334
|
+
if (mutationId === ref.current.mutationId &&
|
|
335
|
+
!clientOptions.ignoreResults) {
|
|
336
|
+
var result_1 = {
|
|
288
337
|
called: true,
|
|
338
|
+
loading: false,
|
|
339
|
+
data: data,
|
|
340
|
+
error: error,
|
|
289
341
|
client: client,
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
var clientOptions = core.mergeOptions(baseOptions, executeOptions);
|
|
294
|
-
return client.mutate(clientOptions).then(function (response) {
|
|
295
|
-
var _a, _b;
|
|
296
|
-
var data = response.data, errors$1 = response.errors;
|
|
297
|
-
var error = errors$1 && errors$1.length > 0
|
|
298
|
-
? new errors.ApolloError({ graphQLErrors: errors$1 })
|
|
299
|
-
: void 0;
|
|
300
|
-
if (mutationId === ref.current.mutationId &&
|
|
301
|
-
!clientOptions.ignoreResults) {
|
|
302
|
-
var result_1 = {
|
|
303
|
-
called: true,
|
|
304
|
-
loading: false,
|
|
305
|
-
data: data,
|
|
306
|
-
error: error,
|
|
307
|
-
client: client,
|
|
308
|
-
};
|
|
309
|
-
if (ref.current.isMounted && !equality.equal(ref.current.result, result_1)) {
|
|
310
|
-
setResult(ref.current.result = result_1);
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
(_a = baseOptions.onCompleted) === null || _a === void 0 ? void 0 : _a.call(baseOptions, response.data);
|
|
314
|
-
(_b = executeOptions.onCompleted) === null || _b === void 0 ? void 0 : _b.call(executeOptions, response.data);
|
|
315
|
-
return response;
|
|
316
|
-
}).catch(function (error) {
|
|
317
|
-
var _a, _b;
|
|
318
|
-
if (mutationId === ref.current.mutationId &&
|
|
319
|
-
ref.current.isMounted) {
|
|
320
|
-
var result_2 = {
|
|
321
|
-
loading: false,
|
|
322
|
-
error: error,
|
|
323
|
-
data: void 0,
|
|
324
|
-
called: true,
|
|
325
|
-
client: client,
|
|
326
|
-
};
|
|
327
|
-
if (!equality.equal(ref.current.result, result_2)) {
|
|
328
|
-
setResult(ref.current.result = result_2);
|
|
329
|
-
}
|
|
342
|
+
};
|
|
343
|
+
if (ref.current.isMounted && !equality.equal(ref.current.result, result_1)) {
|
|
344
|
+
setResult(ref.current.result = result_1);
|
|
330
345
|
}
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
346
|
+
}
|
|
347
|
+
(_a = baseOptions.onCompleted) === null || _a === void 0 ? void 0 : _a.call(baseOptions, response.data);
|
|
348
|
+
(_b = executeOptions.onCompleted) === null || _b === void 0 ? void 0 : _b.call(executeOptions, response.data);
|
|
349
|
+
return response;
|
|
350
|
+
}).catch(function (error) {
|
|
351
|
+
var _a, _b;
|
|
352
|
+
if (mutationId === ref.current.mutationId &&
|
|
353
|
+
ref.current.isMounted) {
|
|
354
|
+
var result_2 = {
|
|
355
|
+
loading: false,
|
|
356
|
+
error: error,
|
|
357
|
+
data: void 0,
|
|
358
|
+
called: true,
|
|
359
|
+
client: client,
|
|
360
|
+
};
|
|
361
|
+
if (!equality.equal(ref.current.result, result_2)) {
|
|
362
|
+
setResult(ref.current.result = result_2);
|
|
335
363
|
}
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
364
|
+
}
|
|
365
|
+
if (baseOptions.onError || clientOptions.onError) {
|
|
366
|
+
(_a = baseOptions.onError) === null || _a === void 0 ? void 0 : _a.call(baseOptions, error);
|
|
367
|
+
(_b = executeOptions.onError) === null || _b === void 0 ? void 0 : _b.call(executeOptions, error);
|
|
368
|
+
return { data: void 0, errors: error };
|
|
369
|
+
}
|
|
370
|
+
throw error;
|
|
371
|
+
});
|
|
372
|
+
}, []);
|
|
341
373
|
var reset = react.useCallback(function () {
|
|
342
374
|
setResult({ called: false, loading: false, client: client });
|
|
343
375
|
}, []);
|
|
@@ -374,14 +406,16 @@ function useSubscription(subscription, options) {
|
|
|
374
406
|
if (typeof shouldResubscribe === 'function') {
|
|
375
407
|
shouldResubscribe = !!shouldResubscribe(options);
|
|
376
408
|
}
|
|
377
|
-
if (
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
409
|
+
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)) {
|
|
411
|
+
setResult({
|
|
412
|
+
loading: false,
|
|
413
|
+
data: void 0,
|
|
414
|
+
error: void 0,
|
|
415
|
+
variables: options === null || options === void 0 ? void 0 : options.variables,
|
|
416
|
+
});
|
|
417
|
+
setObservable(null);
|
|
418
|
+
}
|
|
385
419
|
}
|
|
386
420
|
else if (shouldResubscribe !== false && (client !== ref.current.client ||
|
|
387
421
|
subscription !== ref.current.subscription ||
|