@apollo/client 3.8.0-alpha.10 → 3.8.0-alpha.11
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 +248 -235
- package/apollo-client.cjs.map +1 -1
- package/apollo-client.min.cjs +1 -1
- package/cache/cache.cjs +2 -0
- package/cache/cache.cjs.map +1 -1
- package/cache/cache.cjs.native.js +2 -0
- package/cache/core/cache.d.ts +1 -0
- package/cache/core/cache.d.ts.map +1 -1
- package/cache/core/cache.js +1 -0
- package/cache/core/cache.js.map +1 -1
- package/cache/inmemory/inMemoryCache.d.ts +1 -0
- package/cache/inmemory/inMemoryCache.d.ts.map +1 -1
- package/cache/inmemory/inMemoryCache.js +1 -0
- package/cache/inmemory/inMemoryCache.js.map +1 -1
- package/core/ApolloClient.js +6 -6
- package/core/ApolloClient.js.map +1 -1
- package/core/ObservableQuery.d.ts +1 -2
- package/core/ObservableQuery.d.ts.map +1 -1
- package/core/ObservableQuery.js +4 -8
- package/core/ObservableQuery.js.map +1 -1
- package/core/QueryInfo.d.ts.map +1 -1
- package/core/QueryInfo.js.map +1 -1
- package/core/QueryManager.d.ts.map +1 -1
- package/core/QueryManager.js +2 -2
- package/core/QueryManager.js.map +1 -1
- package/core/core.cjs +13 -17
- package/core/core.cjs.map +1 -1
- package/core/core.cjs.native.js +13 -17
- package/core/networkStatus.d.ts +1 -0
- package/core/networkStatus.d.ts.map +1 -1
- package/core/networkStatus.js +3 -0
- package/core/networkStatus.js.map +1 -1
- package/core/types.d.ts +3 -0
- package/core/types.d.ts.map +1 -1
- package/core/types.js.map +1 -1
- package/core/watchQueryOptions.d.ts +0 -1
- package/core/watchQueryOptions.d.ts.map +1 -1
- package/core/watchQueryOptions.js.map +1 -1
- package/invariantErrorCodes.js +35 -30
- package/package.json +2 -2
- package/react/cache/QuerySubscription.d.ts +26 -0
- package/react/cache/QuerySubscription.d.ts.map +1 -0
- package/react/cache/QuerySubscription.js +88 -0
- package/react/cache/QuerySubscription.js.map +1 -0
- package/react/cache/SuspenseCache.d.ts +9 -13
- package/react/cache/SuspenseCache.d.ts.map +1 -1
- package/react/cache/SuspenseCache.js +17 -40
- package/react/cache/SuspenseCache.js.map +1 -1
- package/react/context/ApolloConsumer.js +1 -1
- package/react/context/ApolloProvider.js +1 -1
- package/react/context/context.cjs +2 -2
- package/react/context/context.cjs.map +1 -1
- package/react/context/context.cjs.native.js +2 -2
- package/react/hoc/hoc-utils.js +1 -1
- package/react/hoc/hoc.cjs +2 -2
- package/react/hoc/hoc.cjs.map +1 -1
- package/react/hoc/hoc.cjs.native.js +2 -2
- package/react/hoc/withApollo.js +1 -1
- package/react/hooks/hooks.cjs +111 -155
- package/react/hooks/hooks.cjs.map +1 -1
- package/react/hooks/hooks.cjs.native.js +111 -155
- package/react/hooks/internal/__use.d.ts +2 -0
- package/react/hooks/internal/__use.d.ts.map +1 -0
- package/react/hooks/internal/__use.js +13 -0
- package/react/hooks/internal/__use.js.map +1 -0
- package/react/hooks/internal/index.d.ts +2 -0
- package/react/hooks/internal/index.d.ts.map +1 -1
- package/react/hooks/internal/index.js +2 -0
- package/react/hooks/internal/index.js.map +1 -1
- package/react/hooks/internal/useIsomorphicLayoutEffect.d.ts.map +1 -1
- package/react/hooks/internal/useIsomorphicLayoutEffect.js +2 -2
- package/react/hooks/internal/useIsomorphicLayoutEffect.js.map +1 -1
- package/react/hooks/internal/useStrictModeSafeCleanupEffect.d.ts +2 -0
- package/react/hooks/internal/useStrictModeSafeCleanupEffect.d.ts.map +1 -0
- package/react/hooks/internal/useStrictModeSafeCleanupEffect.js +11 -0
- package/react/hooks/internal/useStrictModeSafeCleanupEffect.js.map +1 -0
- package/react/hooks/useApolloClient.js +1 -1
- package/react/hooks/useSuspenseCache.js +1 -1
- package/react/hooks/useSuspenseQuery.d.ts +7 -2
- package/react/hooks/useSuspenseQuery.d.ts.map +1 -1
- package/react/hooks/useSuspenseQuery.js +66 -153
- package/react/hooks/useSuspenseQuery.js.map +1 -1
- 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/react.cjs +112 -38
- package/react/react.cjs.map +1 -1
- package/react/react.cjs.native.js +112 -38
- package/react/types/types.d.ts +0 -2
- package/react/types/types.d.ts.map +1 -1
- package/react/types/types.js.map +1 -1
- package/testing/core/core.cjs +1 -1
- package/testing/core/core.cjs.map +1 -1
- package/testing/core/core.cjs.native.js +1 -1
- package/testing/core/mocking/mockLink.js +1 -1
- package/testing/testing.cjs +110 -38
- package/testing/testing.cjs.map +1 -1
- package/testing/testing.cjs.native.js +110 -38
- package/utilities/common/mergeOptions.js +1 -1
- package/utilities/common/mergeOptions.js.map +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/promises/decoration.d.ts +15 -0
- package/utilities/promises/decoration.d.ts.map +1 -0
- package/utilities/promises/decoration.js +25 -0
- package/utilities/promises/decoration.js.map +1 -0
- package/utilities/utilities.cjs +17 -17
- package/utilities/utilities.cjs.map +1 -1
- package/utilities/utilities.cjs.native.js +17 -17
- package/version.js +1 -1
- package/cache/inmemory/__mocks__/optimism.d.ts +0 -2
- package/cache/inmemory/__mocks__/optimism.d.ts.map +0 -1
- package/cache/inmemory/__mocks__/optimism.js +0 -14
- package/cache/inmemory/__mocks__/optimism.js.map +0 -1
|
@@ -1,119 +1,75 @@
|
|
|
1
|
-
import { __assign
|
|
1
|
+
import { __assign } from "tslib";
|
|
2
2
|
import { invariant, __DEV__ } from "../../utilities/globals/index.js";
|
|
3
|
-
import { useRef, useEffect, useCallback, useMemo, useState } from 'react';
|
|
4
3
|
import { equal } from '@wry/equality';
|
|
4
|
+
import { useRef, useCallback, useMemo } from 'react';
|
|
5
5
|
import { ApolloError, NetworkStatus, } from "../../core/index.js";
|
|
6
|
-
import {
|
|
6
|
+
import { isNonEmptyArray } from "../../utilities/index.js";
|
|
7
7
|
import { useApolloClient } from "./useApolloClient.js";
|
|
8
8
|
import { DocumentType, verifyDocumentType } from "../parser/index.js";
|
|
9
|
-
import { useDeepMemo,
|
|
9
|
+
import { useDeepMemo, useStrictModeSafeCleanupEffect, __use } from "./internal/index.js";
|
|
10
10
|
import { useSuspenseCache } from "./useSuspenseCache.js";
|
|
11
11
|
import { useSyncExternalStore } from "./useSyncExternalStore.js";
|
|
12
|
-
var SUPPORTED_FETCH_POLICIES = [
|
|
13
|
-
'cache-first',
|
|
14
|
-
'network-only',
|
|
15
|
-
'no-cache',
|
|
16
|
-
'cache-and-network',
|
|
17
|
-
];
|
|
18
|
-
var DEFAULT_FETCH_POLICY = 'cache-first';
|
|
19
|
-
var DEFAULT_SUSPENSE_POLICY = 'always';
|
|
20
|
-
var DEFAULT_ERROR_POLICY = 'none';
|
|
21
12
|
export function useSuspenseQuery_experimental(query, options) {
|
|
22
13
|
if (options === void 0) { options = Object.create(null); }
|
|
23
|
-
var
|
|
14
|
+
var didPreviouslySuspend = useRef(false);
|
|
24
15
|
var client = useApolloClient(options.client);
|
|
25
|
-
var
|
|
26
|
-
var
|
|
27
|
-
var
|
|
28
|
-
var
|
|
29
|
-
var
|
|
30
|
-
var
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
var result =
|
|
34
|
-
var
|
|
35
|
-
var
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
(result.error.networkError || allowsThrownErrors)) {
|
|
40
|
-
throw result.error;
|
|
41
|
-
}
|
|
42
|
-
if (result.loading) {
|
|
43
|
-
if (!cacheEntry) {
|
|
44
|
-
cacheEntry = suspenseCache.add(query, variables, {
|
|
45
|
-
promise: maybeWrapConcastWithCustomPromise(observable.reobserveAsConcast(watchQueryOptions), { deferred: deferred }),
|
|
46
|
-
observable: observable,
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
var hasUsableResult = usePartialResult ||
|
|
50
|
-
(fetchPolicy === 'cache-and-network' && hasFullResult);
|
|
51
|
-
if (!hasUsableResult && !cacheEntry.fulfilled) {
|
|
52
|
-
throw cacheEntry.promise;
|
|
16
|
+
var suspenseCache = useSuspenseCache(options.suspenseCache);
|
|
17
|
+
var watchQueryOptions = useWatchQueryOptions({ query: query, options: options });
|
|
18
|
+
var _a = watchQueryOptions.returnPartialData, returnPartialData = _a === void 0 ? false : _a, variables = watchQueryOptions.variables;
|
|
19
|
+
var _b = options.suspensePolicy, suspensePolicy = _b === void 0 ? 'always' : _b;
|
|
20
|
+
var shouldSuspend = suspensePolicy === 'always' || !didPreviouslySuspend.current;
|
|
21
|
+
var subscription = suspenseCache.getSubscription(client, query, variables, function () { return client.watchQuery(watchQueryOptions); });
|
|
22
|
+
var dispose = useTrackedSubscriptions(subscription);
|
|
23
|
+
useStrictModeSafeCleanupEffect(dispose);
|
|
24
|
+
var result = useSyncExternalStore(subscription.listen, function () { return subscription.result; }, function () { return subscription.result; });
|
|
25
|
+
var previousVariables = useRef(variables);
|
|
26
|
+
var previousData = useRef(result.data);
|
|
27
|
+
if (!equal(variables, previousVariables.current)) {
|
|
28
|
+
if (result.networkStatus !== NetworkStatus.ready) {
|
|
29
|
+
result = __assign(__assign({}, result), { data: previousData.current, networkStatus: NetworkStatus.setVariables });
|
|
53
30
|
}
|
|
31
|
+
previousVariables.current = variables;
|
|
32
|
+
previousData.current = result.data;
|
|
54
33
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}, [
|
|
67
|
-
useEffect(function () {
|
|
68
|
-
return function () {
|
|
69
|
-
suspenseCache.remove(query, variables);
|
|
70
|
-
};
|
|
71
|
-
}, []);
|
|
72
|
-
var fetchMore = useCallback(function (options) {
|
|
73
|
-
var promise = observable.fetchMore(options);
|
|
74
|
-
suspenseCache.add(query, watchQueryOptions.variables, {
|
|
75
|
-
promise: promise,
|
|
76
|
-
observable: observable,
|
|
77
|
-
});
|
|
78
|
-
return promise;
|
|
79
|
-
}, [observable]);
|
|
80
|
-
var refetch = useCallback(function (variables) {
|
|
81
|
-
var promise = observable.refetch(variables);
|
|
82
|
-
suspenseCache.add(query, watchQueryOptions.variables, {
|
|
83
|
-
promise: promise,
|
|
84
|
-
observable: observable,
|
|
85
|
-
});
|
|
86
|
-
return promise;
|
|
87
|
-
}, [observable]);
|
|
88
|
-
var subscribeToMore = useCallback(function (options) { return observable.subscribeToMore(options); }, [observable]);
|
|
34
|
+
if (result.networkStatus === NetworkStatus.error ||
|
|
35
|
+
(shouldSuspend &&
|
|
36
|
+
!shouldUseCachedResult(subscription.result, {
|
|
37
|
+
returnPartialData: returnPartialData,
|
|
38
|
+
fetchPolicy: options.fetchPolicy,
|
|
39
|
+
}))) {
|
|
40
|
+
__use(subscription.promise);
|
|
41
|
+
}
|
|
42
|
+
didPreviouslySuspend.current = true;
|
|
43
|
+
var fetchMore = useCallback(function (options) { return subscription.fetchMore(options); }, [subscription]);
|
|
44
|
+
var refetch = useCallback(function (variables) { return subscription.refetch(variables); }, [subscription]);
|
|
45
|
+
var subscribeToMore = useCallback(function (options) { return subscription.observable.subscribeToMore(options); }, [subscription]);
|
|
89
46
|
return useMemo(function () {
|
|
90
47
|
return {
|
|
91
48
|
client: client,
|
|
92
49
|
data: result.data,
|
|
93
|
-
error:
|
|
50
|
+
error: toApolloError(result),
|
|
94
51
|
networkStatus: result.networkStatus,
|
|
95
52
|
fetchMore: fetchMore,
|
|
96
53
|
refetch: refetch,
|
|
97
54
|
subscribeToMore: subscribeToMore,
|
|
98
55
|
};
|
|
99
|
-
}, [
|
|
100
|
-
client,
|
|
101
|
-
fetchMore,
|
|
102
|
-
refetch,
|
|
103
|
-
result,
|
|
104
|
-
observable,
|
|
105
|
-
errorPolicy,
|
|
106
|
-
subscribeToMore,
|
|
107
|
-
]);
|
|
56
|
+
}, [client, fetchMore, refetch, result, subscribeToMore]);
|
|
108
57
|
}
|
|
109
58
|
function validateOptions(options) {
|
|
110
|
-
var query = options.query,
|
|
59
|
+
var query = options.query, fetchPolicy = options.fetchPolicy, returnPartialData = options.returnPartialData;
|
|
111
60
|
verifyDocumentType(query, DocumentType.Query);
|
|
112
61
|
validateFetchPolicy(fetchPolicy);
|
|
113
62
|
validatePartialDataReturn(fetchPolicy, returnPartialData);
|
|
114
63
|
}
|
|
115
64
|
function validateFetchPolicy(fetchPolicy) {
|
|
116
|
-
|
|
65
|
+
if (fetchPolicy === void 0) { fetchPolicy = 'cache-first'; }
|
|
66
|
+
var supportedFetchPolicies = [
|
|
67
|
+
'cache-first',
|
|
68
|
+
'network-only',
|
|
69
|
+
'no-cache',
|
|
70
|
+
'cache-and-network',
|
|
71
|
+
];
|
|
72
|
+
__DEV__ ? invariant(supportedFetchPolicies.includes(fetchPolicy), "The fetch policy `".concat(fetchPolicy, "` is not supported with suspense.")) : invariant(supportedFetchPolicies.includes(fetchPolicy), 35);
|
|
117
73
|
}
|
|
118
74
|
function validatePartialDataReturn(fetchPolicy, returnPartialData) {
|
|
119
75
|
if (fetchPolicy === 'no-cache' && returnPartialData) {
|
|
@@ -125,79 +81,36 @@ function toApolloError(result) {
|
|
|
125
81
|
? new ApolloError({ graphQLErrors: result.errors })
|
|
126
82
|
: result.error;
|
|
127
83
|
}
|
|
128
|
-
function
|
|
129
|
-
var
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
resolve(value);
|
|
135
|
-
subscription.unsubscribe();
|
|
136
|
-
},
|
|
137
|
-
error: reject,
|
|
138
|
-
});
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
return concast.promise;
|
|
84
|
+
function useTrackedSubscriptions(subscription) {
|
|
85
|
+
var trackedSubscriptions = useRef(new Set());
|
|
86
|
+
trackedSubscriptions.current.add(subscription);
|
|
87
|
+
return function dispose() {
|
|
88
|
+
trackedSubscriptions.current.forEach(function (sub) { return sub.dispose(); });
|
|
89
|
+
};
|
|
142
90
|
}
|
|
143
91
|
function useWatchQueryOptions(_a) {
|
|
144
|
-
var query = _a.query, options = _a.options
|
|
145
|
-
var
|
|
146
|
-
var watchQueryOptions = useDeepMemo(function () {
|
|
147
|
-
var errorPolicy = options.errorPolicy, fetchPolicy = options.fetchPolicy, _a = options.suspensePolicy, suspensePolicy = _a === void 0 ? DEFAULT_SUSPENSE_POLICY : _a, variables = options.variables, watchQueryOptions = __rest(options, ["errorPolicy", "fetchPolicy", "suspensePolicy", "variables"]);
|
|
148
|
-
return __assign(__assign({}, watchQueryOptions), { query: query, errorPolicy: errorPolicy || (defaultOptions === null || defaultOptions === void 0 ? void 0 : defaultOptions.errorPolicy) || DEFAULT_ERROR_POLICY, fetchPolicy: fetchPolicy || (defaultOptions === null || defaultOptions === void 0 ? void 0 : defaultOptions.fetchPolicy) || DEFAULT_FETCH_POLICY, notifyOnNetworkStatusChange: suspensePolicy === 'always', fetchOnFirstSubscribe: false, variables: compact(__assign(__assign({}, defaultOptions === null || defaultOptions === void 0 ? void 0 : defaultOptions.variables), variables)) });
|
|
149
|
-
}, [options, query, defaultOptions]);
|
|
92
|
+
var query = _a.query, options = _a.options;
|
|
93
|
+
var watchQueryOptions = useDeepMemo(function () { return (__assign(__assign({}, options), { query: query, notifyOnNetworkStatusChange: true, nextFetchPolicy: void 0 })); }, [options, query]);
|
|
150
94
|
if (__DEV__) {
|
|
151
95
|
validateOptions(watchQueryOptions);
|
|
152
96
|
}
|
|
153
97
|
return watchQueryOptions;
|
|
154
98
|
}
|
|
155
|
-
function
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
var subscribeTimeoutRef = useRef();
|
|
162
|
-
if (!resultRef.current) {
|
|
163
|
-
resultRef.current = observable.getCurrentResult();
|
|
99
|
+
function shouldUseCachedResult(result, _a) {
|
|
100
|
+
var returnPartialData = _a.returnPartialData, fetchPolicy = _a.fetchPolicy;
|
|
101
|
+
if (result.networkStatus === NetworkStatus.refetch ||
|
|
102
|
+
result.networkStatus === NetworkStatus.fetchMore ||
|
|
103
|
+
result.networkStatus === NetworkStatus.error) {
|
|
104
|
+
return false;
|
|
164
105
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
}, []);
|
|
171
|
-
return useSyncExternalStore(useCallback(function (forceUpdate) {
|
|
172
|
-
clearTimeout(subscribeTimeoutRef.current);
|
|
173
|
-
function handleUpdate() {
|
|
174
|
-
var previousResult = resultRef.current;
|
|
175
|
-
var result = observable.getCurrentResult();
|
|
176
|
-
if (previousResult.loading === result.loading &&
|
|
177
|
-
previousResult.networkStatus === result.networkStatus &&
|
|
178
|
-
equal(previousResult.data, result.data)) {
|
|
179
|
-
return;
|
|
180
|
-
}
|
|
181
|
-
resultRef.current = result;
|
|
182
|
-
if (isMountedRef.current) {
|
|
183
|
-
forceUpdate();
|
|
184
|
-
}
|
|
106
|
+
switch (fetchPolicy) {
|
|
107
|
+
case void 0:
|
|
108
|
+
case 'cache-first':
|
|
109
|
+
case 'cache-and-network': {
|
|
110
|
+
return Boolean(result.data && (!result.partial || returnPartialData));
|
|
185
111
|
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
next: handleUpdate,
|
|
190
|
-
error: handleUpdate,
|
|
191
|
-
});
|
|
192
|
-
var result = resultRef.current;
|
|
193
|
-
if (result.networkStatus !== observable['queryInfo'].networkStatus &&
|
|
194
|
-
result.networkStatus === NetworkStatus.ready) {
|
|
195
|
-
observable['queryInfo'].markReady();
|
|
196
|
-
}
|
|
197
|
-
});
|
|
198
|
-
return function () {
|
|
199
|
-
subscription === null || subscription === void 0 ? void 0 : subscription.unsubscribe();
|
|
200
|
-
};
|
|
201
|
-
}, [observable]), function () { return resultRef.current; }, function () { return resultRef.current; });
|
|
112
|
+
default:
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
202
115
|
}
|
|
203
116
|
//# sourceMappingURL=useSuspenseQuery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSuspenseQuery.js","sourceRoot":"","sources":["../../../src/react/hooks/useSuspenseQuery.ts"],"names":[],"mappings":"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","sourcesContent":["import { invariant, __DEV__ } from '../../utilities/globals';\nimport { useRef, useEffect, useCallback, useMemo, useState } from 'react';\nimport { equal } from '@wry/equality';\nimport {\n ApolloClient,\n ApolloError,\n ApolloQueryResult,\n DocumentNode,\n ObservableQuery,\n OperationVariables,\n TypedDocumentNode,\n WatchQueryOptions,\n WatchQueryFetchPolicy,\n NetworkStatus,\n} from '../../core';\nimport {\n compact,\n Concast,\n isNonEmptyArray,\n hasDirectives,\n} from '../../utilities';\nimport { useApolloClient } from './useApolloClient';\nimport { DocumentType, verifyDocumentType } from '../parser';\nimport {\n SuspenseQueryHookOptions,\n ObservableQueryFields,\n} from '../types/types';\nimport { useDeepMemo, useIsomorphicLayoutEffect } from './internal';\nimport { useSuspenseCache } from './useSuspenseCache';\nimport { useSyncExternalStore } from './useSyncExternalStore';\nimport { Subscription } from 'zen-observable-ts';\n\nexport interface UseSuspenseQueryResult<\n TData = any,\n TVariables extends OperationVariables = OperationVariables\n> {\n client: ApolloClient<any>;\n data: TData;\n error: ApolloError | undefined;\n fetchMore: FetchMoreFunction<TData, TVariables>;\n networkStatus: NetworkStatus;\n refetch: RefetchFunction<TData, TVariables>;\n subscribeToMore: SubscribeToMoreFunction<TData, TVariables>;\n}\n\ntype FetchMoreFunction<\n TData,\n TVariables extends OperationVariables\n> = ObservableQueryFields<TData, TVariables>['fetchMore'];\n\ntype RefetchFunction<\n TData,\n TVariables extends OperationVariables\n> = ObservableQueryFields<TData, TVariables>['refetch'];\n\ntype SubscribeToMoreFunction<\n TData,\n TVariables extends OperationVariables\n> = ObservableQueryFields<TData, TVariables>['subscribeToMore'];\n\nconst SUPPORTED_FETCH_POLICIES: WatchQueryFetchPolicy[] = [\n 'cache-first',\n 'network-only',\n 'no-cache',\n 'cache-and-network',\n];\n\nconst DEFAULT_FETCH_POLICY = 'cache-first';\nconst DEFAULT_SUSPENSE_POLICY = 'always';\nconst DEFAULT_ERROR_POLICY = 'none';\n\nexport function useSuspenseQuery_experimental<\n TData = any,\n TVariables extends OperationVariables = OperationVariables\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: SuspenseQueryHookOptions<TData, TVariables> = Object.create(null)\n): UseSuspenseQueryResult<TData, TVariables> {\n const suspenseCache = useSuspenseCache(options.suspenseCache);\n const client = useApolloClient(options.client);\n const watchQueryOptions = useWatchQueryOptions({ query, options, client });\n const previousWatchQueryOptionsRef = useRef(watchQueryOptions);\n const deferred = useIsDeferred(query);\n\n const { fetchPolicy, errorPolicy, returnPartialData, variables } =\n watchQueryOptions;\n\n let cacheEntry = suspenseCache.lookup(query, variables);\n\n const [observable] = useState(() => {\n return cacheEntry?.observable || client.watchQuery(watchQueryOptions);\n });\n\n const result = useObservableQueryResult(observable);\n\n const hasFullResult = result.data && !result.partial;\n const hasPartialResult = result.data && result.partial;\n const usePartialResult = returnPartialData && hasPartialResult;\n\n const allowsThrownErrors =\n // If we've got a deferred query that errors on an incremental chunk, we\n // will have a partial result before the error is collected. We do not want\n // to throw errors that have been returned from incremental chunks. Instead\n // we offload those errors to the `error` property.\n errorPolicy === 'none' && (!deferred || !hasPartialResult);\n\n if (\n result.error &&\n // Always throw network errors regardless of the error policy\n (result.error.networkError || allowsThrownErrors)\n ) {\n throw result.error;\n }\n\n if (result.loading) {\n // If we don't have a cache entry, but we are in a loading state, we are on\n // the first run of the hook. Kick off a network request so we can suspend\n // immediately\n if (!cacheEntry) {\n cacheEntry = suspenseCache.add(query, variables, {\n promise: maybeWrapConcastWithCustomPromise(\n observable.reobserveAsConcast(watchQueryOptions),\n { deferred }\n ),\n observable,\n });\n }\n\n const hasUsableResult =\n // When we have partial data in the cache, a network request will be kicked\n // off to load the full set of data. Avoid suspending when the request is\n // in flight to return the partial data immediately.\n usePartialResult ||\n // `cache-and-network` kicks off a network request even with a full set of\n // data in the cache, which means the loading state will be set to `true`.\n // Avoid suspending in this case.\n (fetchPolicy === 'cache-and-network' && hasFullResult);\n\n if (!hasUsableResult && !cacheEntry.fulfilled) {\n throw cacheEntry.promise;\n }\n }\n\n useEffect(() => {\n const { variables, query } = watchQueryOptions;\n const previousOpts = previousWatchQueryOptionsRef.current;\n\n if (variables !== previousOpts.variables || query !== previousOpts.query) {\n suspenseCache.remove(previousOpts.query, previousOpts.variables);\n\n suspenseCache.add(query, variables, {\n promise: observable.reobserve({ query, variables }),\n observable,\n });\n\n previousWatchQueryOptionsRef.current = watchQueryOptions;\n }\n }, [watchQueryOptions]);\n\n useEffect(() => {\n return () => {\n suspenseCache.remove(query, variables);\n };\n }, []);\n\n const fetchMore: FetchMoreFunction<TData, TVariables> = useCallback(\n (options) => {\n const promise = observable.fetchMore(options);\n\n suspenseCache.add(query, watchQueryOptions.variables, {\n promise,\n observable,\n });\n\n return promise;\n },\n [observable]\n );\n\n const refetch: RefetchFunction<TData, TVariables> = useCallback(\n (variables) => {\n const promise = observable.refetch(variables);\n\n suspenseCache.add(query, watchQueryOptions.variables, {\n promise,\n observable,\n });\n\n return promise;\n },\n [observable]\n );\n\n const subscribeToMore: SubscribeToMoreFunction<TData, TVariables> =\n useCallback((options) => observable.subscribeToMore(options), [observable]);\n\n return useMemo(() => {\n return {\n client,\n data: result.data,\n error: errorPolicy === 'ignore' ? void 0 : toApolloError(result),\n networkStatus: result.networkStatus,\n fetchMore,\n refetch,\n subscribeToMore,\n };\n }, [\n client,\n fetchMore,\n refetch,\n result,\n observable,\n errorPolicy,\n subscribeToMore,\n ]);\n}\n\nfunction validateOptions(options: WatchQueryOptions) {\n const {\n query,\n fetchPolicy = DEFAULT_FETCH_POLICY,\n returnPartialData,\n } = options;\n\n verifyDocumentType(query, DocumentType.Query);\n validateFetchPolicy(fetchPolicy);\n validatePartialDataReturn(fetchPolicy, returnPartialData);\n}\n\nfunction validateFetchPolicy(fetchPolicy: WatchQueryFetchPolicy) {\n invariant(\n SUPPORTED_FETCH_POLICIES.includes(fetchPolicy),\n `The fetch policy \\`${fetchPolicy}\\` is not supported with suspense.`\n );\n}\n\nfunction validatePartialDataReturn(\n fetchPolicy: WatchQueryFetchPolicy,\n returnPartialData: boolean | undefined\n) {\n if (fetchPolicy === 'no-cache' && returnPartialData) {\n invariant.warn(\n 'Using `returnPartialData` with a `no-cache` fetch policy has no effect. To read partial data from the cache, consider using an alternate fetch policy.'\n );\n }\n}\n\nfunction toApolloError(result: ApolloQueryResult<any>) {\n return isNonEmptyArray(result.errors)\n ? new ApolloError({ graphQLErrors: result.errors })\n : result.error;\n}\n\nfunction maybeWrapConcastWithCustomPromise<TData>(\n concast: Concast<ApolloQueryResult<TData>>,\n { deferred }: { deferred: boolean }\n): Promise<ApolloQueryResult<TData>> {\n if (deferred) {\n return new Promise((resolve, reject) => {\n // Unlike `concast.promise`, we want to resolve the promise on the initial\n // chunk of the deferred query. This allows the component to unsuspend\n // when we get the initial set of data, rather than waiting until all\n // chunks have been loaded.\n const subscription = concast.subscribe({\n next: (value) => {\n resolve(value);\n subscription.unsubscribe();\n },\n error: reject,\n });\n });\n }\n\n return concast.promise;\n}\n\ninterface UseWatchQueryOptionsHookOptions<\n TData,\n TVariables extends OperationVariables\n> {\n query: DocumentNode | TypedDocumentNode<TData, TVariables>;\n options: SuspenseQueryHookOptions<TData, TVariables>;\n client: ApolloClient<any>;\n}\n\nfunction useWatchQueryOptions<TData, TVariables extends OperationVariables>({\n query,\n options,\n client,\n}: UseWatchQueryOptionsHookOptions<TData, TVariables>): WatchQueryOptions<\n TVariables,\n TData\n> {\n const { watchQuery: defaultOptions } = client.defaultOptions;\n\n const watchQueryOptions = useDeepMemo<\n WatchQueryOptions<TVariables, TData>\n >(() => {\n const {\n errorPolicy,\n fetchPolicy,\n suspensePolicy = DEFAULT_SUSPENSE_POLICY,\n variables,\n ...watchQueryOptions\n } = options;\n\n return {\n ...watchQueryOptions,\n query,\n errorPolicy:\n errorPolicy || defaultOptions?.errorPolicy || DEFAULT_ERROR_POLICY,\n fetchPolicy:\n fetchPolicy || defaultOptions?.fetchPolicy || DEFAULT_FETCH_POLICY,\n notifyOnNetworkStatusChange: suspensePolicy === 'always',\n // By default, `ObservableQuery` will run `reobserve` the first time\n // something `subscribe`s to the observable, which kicks off a network\n // request. This creates a problem for suspense because we need to begin\n // fetching the data immediately so we can throw the promise on the first\n // render. Since we don't subscribe until after we've unsuspended, we need\n // to avoid kicking off another network request for the same data we just\n // fetched. This option toggles that behavior off to avoid the `reobserve`\n // when the observable is first subscribed to.\n fetchOnFirstSubscribe: false,\n variables: compact({ ...defaultOptions?.variables, ...variables }),\n };\n }, [options, query, defaultOptions]);\n\n if (__DEV__) {\n validateOptions(watchQueryOptions);\n }\n\n return watchQueryOptions;\n}\n\nfunction useIsDeferred(query: DocumentNode) {\n return useMemo(() => hasDirectives(['defer'], query), [query]);\n}\n\nfunction useObservableQueryResult<TData>(observable: ObservableQuery<TData>) {\n const resultRef = useRef<ApolloQueryResult<TData>>();\n const isMountedRef = useRef(false);\n const subscribeTimeoutRef = useRef<NodeJS.Timeout>();\n\n if (!resultRef.current) {\n resultRef.current = observable.getCurrentResult();\n }\n\n // React keeps refs and effects from useSyncExternalStore around after the\n // component initially mounts even if the component re-suspends. We need to\n // track when the component suspends/unsuspends to ensure we don't try and\n // update the component while its suspended since the observable's\n // `next` function is called before the promise resolved.\n //\n // Unlike useEffect, useLayoutEffect will run its cleanup and initialization\n // functions each time a component is suspended.\n useIsomorphicLayoutEffect(() => {\n isMountedRef.current = true;\n\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n\n return useSyncExternalStore(\n useCallback(\n (forceUpdate) => {\n clearTimeout(subscribeTimeoutRef.current);\n\n function handleUpdate() {\n const previousResult = resultRef.current!;\n const result = observable.getCurrentResult();\n\n if (\n previousResult.loading === result.loading &&\n previousResult.networkStatus === result.networkStatus &&\n equal(previousResult.data, result.data)\n ) {\n return;\n }\n\n resultRef.current = result;\n\n if (isMountedRef.current) {\n forceUpdate();\n }\n }\n\n let subscription: Subscription;\n\n // We use a `setTimeout` here to avoid issues in React's strict mode\n // where the subscription would be torn down, but resubscribing would\n // be stuck in the torn down state, therefore updates to the cache would\n // not trigger the observable's subscription. This occurs due to the new\n // `fetchOnFirstSubscribe` option introduced with `useSuspenseQuery`,\n // which avoids issuing a network request (via `reobserve`) when calling\n // `subscribe` on the observable. Unfortunately `reobserve` is required\n // to put the observable back into a non-torn-down state, which is not\n // called due to this option. Instead we try delaying calling subscribe\n // for the first time by allowing React to run this effect, tear it down,\n // then set it back up again before we resubscribe.\n //\n // Authors note (Jerel): This feels super hacky and I hate it, but this\n // seems like the best approach to avoid completely changing around the\n // internals of ObservableQuery, which could introduce new bugs if I'm\n // not careful. Ideally we could call `subscribe()`, `unsubscribe()`,\n // then `subscribe()` again and be back into a normal state, but this\n // might require a sizable refactor to accomplish.\n //\n // Related to https://github.com/apollographql/apollo-client/issues/10428\n subscribeTimeoutRef.current = setTimeout(() => {\n subscription = observable.subscribe({\n next: handleUpdate,\n error: handleUpdate,\n });\n\n // Fixes an issue where mounting this hook with data already in the\n // cache while using a cache-first fetch policy did not respond to\n // cache updates.\n //\n // This is due to the fact that this hook manages the\n // fetching lifecycle (via `reobserve`) rather than the subscription.\n // We disable fetching when subscribing to the observable since we\n // kick off the fetch in the first render. This however has some\n // downstream issues, since `reobserve` is necessary to set some\n // internal state updates on `ObservableQuery` and `QueryInfo`. In\n // cases where we can fulfill the result via the cache immediately, we\n // avoid calling `reobserve` by subscribing (via the\n // `fetchOnFirstSubscribe` option) to avoid the network request, but\n // this means the interal state updates do not happen.\n //\n // In this case, `QueryInfo`, is initialized with a `networkStatus` of\n // 1, but because we don't call `reobserve`, this value never gets\n // updated to 7 even though `observableQuery.getCurrentResult()` is\n // able to correctly set this value to 7. This caused issues where\n // `broadcastQueries` was not sending notifications since `queryInfo`\n // avoids broadcasting to in-flight queries for fetch policies other\n // than cache-only and cache-and-network.\n //\n // This attempts to patch the behavior expected from `reobserve` by\n // marking the queryInfo as ready if we detect that the result is also\n // ready.\n //\n // Related to https://github.com/apollographql/apollo-client/issues/10478\n const result = resultRef.current!;\n\n if (\n result.networkStatus !== observable['queryInfo'].networkStatus &&\n result.networkStatus === NetworkStatus.ready\n ) {\n observable['queryInfo'].markReady();\n }\n });\n\n return () => {\n subscription?.unsubscribe();\n };\n },\n [observable]\n ),\n () => resultRef.current!,\n () => resultRef.current!\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"useSuspenseQuery.js","sourceRoot":"","sources":["../../../src/react/hooks/useSuspenseQuery.ts"],"names":[],"mappings":"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","sourcesContent":["import { invariant, __DEV__ } from '../../utilities/globals';\nimport { equal } from '@wry/equality';\nimport { useRef, useCallback, useMemo } from 'react';\nimport {\n ApolloClient,\n ApolloError,\n ApolloQueryResult,\n DocumentNode,\n OperationVariables,\n TypedDocumentNode,\n WatchQueryOptions,\n WatchQueryFetchPolicy,\n NetworkStatus,\n FetchMoreQueryOptions,\n} from '../../core';\nimport { isNonEmptyArray } from '../../utilities';\nimport { useApolloClient } from './useApolloClient';\nimport { DocumentType, verifyDocumentType } from '../parser';\nimport {\n SuspenseQueryHookFetchPolicy,\n SuspenseQueryHookOptions,\n ObservableQueryFields,\n} from '../types/types';\nimport { useDeepMemo, useStrictModeSafeCleanupEffect, __use } from './internal';\nimport { useSuspenseCache } from './useSuspenseCache';\nimport { useSyncExternalStore } from './useSyncExternalStore';\nimport { QuerySubscription } from '../cache/QuerySubscription';\n\nexport interface UseSuspenseQueryResult<\n TData = any,\n TVariables extends OperationVariables = OperationVariables\n> {\n client: ApolloClient<any>;\n data: TData;\n error: ApolloError | undefined;\n fetchMore: FetchMoreFunction<TData, TVariables>;\n networkStatus: NetworkStatus;\n refetch: RefetchFunction<TData, TVariables>;\n subscribeToMore: SubscribeToMoreFunction<TData, TVariables>;\n}\n\ntype FetchMoreFunction<TData, TVariables extends OperationVariables> = (\n fetchMoreOptions: FetchMoreQueryOptions<TVariables, TData> & {\n updateQuery?: (\n previousQueryResult: TData,\n options: {\n fetchMoreResult: TData;\n variables: TVariables;\n }\n ) => TData;\n }\n) => Promise<ApolloQueryResult<TData>>;\n\ntype RefetchFunction<\n TData,\n TVariables extends OperationVariables\n> = ObservableQueryFields<TData, TVariables>['refetch'];\n\ntype SubscribeToMoreFunction<\n TData,\n TVariables extends OperationVariables\n> = ObservableQueryFields<TData, TVariables>['subscribeToMore'];\n\nexport function useSuspenseQuery_experimental<\n TData = any,\n TVariables extends OperationVariables = OperationVariables\n>(\n query: DocumentNode | TypedDocumentNode<TData, TVariables>,\n options: SuspenseQueryHookOptions<TData, TVariables> = Object.create(null)\n): UseSuspenseQueryResult<TData, TVariables> {\n const didPreviouslySuspend = useRef(false);\n const client = useApolloClient(options.client);\n const suspenseCache = useSuspenseCache(options.suspenseCache);\n const watchQueryOptions = useWatchQueryOptions({ query, options });\n const { returnPartialData = false, variables } = watchQueryOptions;\n const { suspensePolicy = 'always' } = options;\n const shouldSuspend =\n suspensePolicy === 'always' || !didPreviouslySuspend.current;\n\n const subscription = suspenseCache.getSubscription(\n client,\n query,\n variables,\n () => client.watchQuery(watchQueryOptions)\n );\n\n const dispose = useTrackedSubscriptions(subscription);\n\n useStrictModeSafeCleanupEffect(dispose);\n\n let result = useSyncExternalStore(\n subscription.listen,\n () => subscription.result,\n () => subscription.result\n );\n\n const previousVariables = useRef(variables);\n const previousData = useRef(result.data);\n\n if (!equal(variables, previousVariables.current)) {\n if (result.networkStatus !== NetworkStatus.ready) {\n // Since we now create separate ObservableQuery instances per unique\n // query + variables combination, we need to manually insert the previous\n // data into the returned result to mimic the behavior when changing\n // variables from a single ObservableQuery, where the previous result was\n // held onto until the request was finished.\n result = {\n ...result,\n data: previousData.current,\n networkStatus: NetworkStatus.setVariables,\n };\n }\n\n previousVariables.current = variables;\n previousData.current = result.data;\n }\n\n if (\n result.networkStatus === NetworkStatus.error ||\n (shouldSuspend &&\n !shouldUseCachedResult(subscription.result, {\n returnPartialData,\n fetchPolicy: options.fetchPolicy,\n }))\n ) {\n // Intentionally ignore the result returned from __use since we want to\n // observe results from the observable instead of the the promise.\n __use(subscription.promise);\n }\n\n didPreviouslySuspend.current = true;\n\n const fetchMore: FetchMoreFunction<TData, TVariables> = useCallback(\n (options) => subscription.fetchMore(options),\n [subscription]\n );\n\n const refetch: RefetchFunction<TData, TVariables> = useCallback(\n (variables) => subscription.refetch(variables),\n [subscription]\n );\n\n const subscribeToMore: SubscribeToMoreFunction<TData, TVariables> =\n useCallback(\n (options) => subscription.observable.subscribeToMore(options),\n [subscription]\n );\n\n return useMemo(() => {\n return {\n client,\n data: result.data,\n error: toApolloError(result),\n networkStatus: result.networkStatus,\n fetchMore,\n refetch,\n subscribeToMore,\n };\n }, [client, fetchMore, refetch, result, subscribeToMore]);\n}\n\nfunction validateOptions(options: WatchQueryOptions) {\n const { query, fetchPolicy, returnPartialData } = options;\n\n verifyDocumentType(query, DocumentType.Query);\n validateFetchPolicy(fetchPolicy);\n validatePartialDataReturn(fetchPolicy, returnPartialData);\n}\n\nfunction validateFetchPolicy(\n fetchPolicy: WatchQueryFetchPolicy = 'cache-first'\n) {\n const supportedFetchPolicies: WatchQueryFetchPolicy[] = [\n 'cache-first',\n 'network-only',\n 'no-cache',\n 'cache-and-network',\n ];\n\n invariant(\n supportedFetchPolicies.includes(fetchPolicy),\n `The fetch policy \\`${fetchPolicy}\\` is not supported with suspense.`\n );\n}\n\nfunction validatePartialDataReturn(\n fetchPolicy: WatchQueryFetchPolicy | undefined,\n returnPartialData: boolean | undefined\n) {\n if (fetchPolicy === 'no-cache' && returnPartialData) {\n invariant.warn(\n 'Using `returnPartialData` with a `no-cache` fetch policy has no effect. To read partial data from the cache, consider using an alternate fetch policy.'\n );\n }\n}\n\nfunction toApolloError(result: ApolloQueryResult<any>) {\n return isNonEmptyArray(result.errors)\n ? new ApolloError({ graphQLErrors: result.errors })\n : result.error;\n}\n\nfunction useTrackedSubscriptions(subscription: QuerySubscription) {\n const trackedSubscriptions = useRef(new Set<QuerySubscription>());\n\n trackedSubscriptions.current.add(subscription);\n\n return function dispose() {\n trackedSubscriptions.current.forEach((sub) => sub.dispose());\n };\n}\n\ninterface UseWatchQueryOptionsHookOptions<\n TData,\n TVariables extends OperationVariables\n> {\n query: DocumentNode | TypedDocumentNode<TData, TVariables>;\n options: SuspenseQueryHookOptions<TData, TVariables>;\n}\n\nfunction useWatchQueryOptions<TData, TVariables extends OperationVariables>({\n query,\n options,\n}: UseWatchQueryOptionsHookOptions<TData, TVariables>): WatchQueryOptions<\n TVariables,\n TData\n> {\n const watchQueryOptions = useDeepMemo<WatchQueryOptions<TVariables, TData>>(\n () => ({\n ...options,\n query,\n notifyOnNetworkStatusChange: true,\n nextFetchPolicy: void 0,\n }),\n [options, query]\n );\n\n if (__DEV__) {\n validateOptions(watchQueryOptions);\n }\n\n return watchQueryOptions;\n}\n\nfunction shouldUseCachedResult(\n result: ApolloQueryResult<unknown>,\n {\n returnPartialData,\n fetchPolicy,\n }: {\n returnPartialData: boolean | undefined;\n fetchPolicy: SuspenseQueryHookFetchPolicy | undefined;\n }\n) {\n if (\n result.networkStatus === NetworkStatus.refetch ||\n result.networkStatus === NetworkStatus.fetchMore ||\n result.networkStatus === NetworkStatus.error\n ) {\n return false;\n }\n\n switch (fetchPolicy) {\n // The default fetch policy is cache-first, so we can treat undefined as\n // such.\n case void 0:\n case 'cache-first':\n case 'cache-and-network': {\n return Boolean(result.data && (!result.partial || returnPartialData));\n }\n default:\n return false;\n }\n}\n"]}
|
package/react/parser/index.js
CHANGED
|
@@ -28,7 +28,7 @@ export function parser(document) {
|
|
|
28
28
|
var variables, type, name;
|
|
29
29
|
__DEV__ ? invariant(!!document && !!document.kind, "Argument of ".concat(document, " passed to parser was not a valid GraphQL ") +
|
|
30
30
|
"DocumentNode. You may need to use 'graphql-tag' or another method " +
|
|
31
|
-
"to convert your operation into a document") : invariant(!!document && !!document.kind,
|
|
31
|
+
"to convert your operation into a document") : invariant(!!document && !!document.kind, 36);
|
|
32
32
|
var fragments = [];
|
|
33
33
|
var queries = [];
|
|
34
34
|
var mutations = [];
|
|
@@ -56,11 +56,11 @@ export function parser(document) {
|
|
|
56
56
|
__DEV__ ? invariant(!fragments.length ||
|
|
57
57
|
(queries.length || mutations.length || subscriptions.length), "Passing only a fragment to 'graphql' is not yet supported. " +
|
|
58
58
|
"You must include a query, subscription or mutation as well") : invariant(!fragments.length ||
|
|
59
|
-
(queries.length || mutations.length || subscriptions.length),
|
|
59
|
+
(queries.length || mutations.length || subscriptions.length), 37);
|
|
60
60
|
__DEV__ ? invariant(queries.length + mutations.length + subscriptions.length <= 1, "react-apollo only supports a query, subscription, or a mutation per HOC. " +
|
|
61
61
|
"".concat(document, " had ").concat(queries.length, " queries, ").concat(subscriptions.length, " ") +
|
|
62
62
|
"subscriptions and ".concat(mutations.length, " mutations. ") +
|
|
63
|
-
"You can use 'compose' to join multiple operation types to a component") : invariant(queries.length + mutations.length + subscriptions.length <= 1,
|
|
63
|
+
"You can use 'compose' to join multiple operation types to a component") : invariant(queries.length + mutations.length + subscriptions.length <= 1, 38);
|
|
64
64
|
type = queries.length ? DocumentType.Query : DocumentType.Mutation;
|
|
65
65
|
if (!queries.length && !mutations.length)
|
|
66
66
|
type = DocumentType.Subscription;
|
|
@@ -71,7 +71,7 @@ export function parser(document) {
|
|
|
71
71
|
: subscriptions;
|
|
72
72
|
__DEV__ ? invariant(definitions.length === 1, "react-apollo only supports one definition per HOC. ".concat(document, " had ") +
|
|
73
73
|
"".concat(definitions.length, " definitions. ") +
|
|
74
|
-
"You can use 'compose' to join multiple operation types to a component") : invariant(definitions.length === 1,
|
|
74
|
+
"You can use 'compose' to join multiple operation types to a component") : invariant(definitions.length === 1, 39);
|
|
75
75
|
var definition = definitions[0];
|
|
76
76
|
variables = definition.variableDefinitions || [];
|
|
77
77
|
if (definition.name && definition.name.kind === 'Name') {
|
|
@@ -89,6 +89,6 @@ export function verifyDocumentType(document, type) {
|
|
|
89
89
|
var requiredOperationName = operationName(type);
|
|
90
90
|
var usedOperationName = operationName(operation.type);
|
|
91
91
|
__DEV__ ? invariant(operation.type === type, "Running a ".concat(requiredOperationName, " requires a graphql ") +
|
|
92
|
-
"".concat(requiredOperationName, ", but a ").concat(usedOperationName, " was used instead.")) : invariant(operation.type === type,
|
|
92
|
+
"".concat(requiredOperationName, ", but a ").concat(usedOperationName, " was used instead.")) : invariant(operation.type === type, 40);
|
|
93
93
|
}
|
|
94
94
|
//# sourceMappingURL=index.js.map
|
package/react/parser/parser.cjs
CHANGED
|
@@ -33,7 +33,7 @@ function parser(document) {
|
|
|
33
33
|
var variables, type, name;
|
|
34
34
|
globals.__DEV__ ? globals.invariant(!!document && !!document.kind, "Argument of ".concat(document, " passed to parser was not a valid GraphQL ") +
|
|
35
35
|
"DocumentNode. You may need to use 'graphql-tag' or another method " +
|
|
36
|
-
"to convert your operation into a document") : globals.invariant(!!document && !!document.kind,
|
|
36
|
+
"to convert your operation into a document") : globals.invariant(!!document && !!document.kind, 36);
|
|
37
37
|
var fragments = [];
|
|
38
38
|
var queries = [];
|
|
39
39
|
var mutations = [];
|
|
@@ -61,11 +61,11 @@ function parser(document) {
|
|
|
61
61
|
globals.__DEV__ ? globals.invariant(!fragments.length ||
|
|
62
62
|
(queries.length || mutations.length || subscriptions.length), "Passing only a fragment to 'graphql' is not yet supported. " +
|
|
63
63
|
"You must include a query, subscription or mutation as well") : globals.invariant(!fragments.length ||
|
|
64
|
-
(queries.length || mutations.length || subscriptions.length),
|
|
64
|
+
(queries.length || mutations.length || subscriptions.length), 37);
|
|
65
65
|
globals.__DEV__ ? globals.invariant(queries.length + mutations.length + subscriptions.length <= 1, "react-apollo only supports a query, subscription, or a mutation per HOC. " +
|
|
66
66
|
"".concat(document, " had ").concat(queries.length, " queries, ").concat(subscriptions.length, " ") +
|
|
67
67
|
"subscriptions and ".concat(mutations.length, " mutations. ") +
|
|
68
|
-
"You can use 'compose' to join multiple operation types to a component") : globals.invariant(queries.length + mutations.length + subscriptions.length <= 1,
|
|
68
|
+
"You can use 'compose' to join multiple operation types to a component") : globals.invariant(queries.length + mutations.length + subscriptions.length <= 1, 38);
|
|
69
69
|
type = queries.length ? exports.DocumentType.Query : exports.DocumentType.Mutation;
|
|
70
70
|
if (!queries.length && !mutations.length)
|
|
71
71
|
type = exports.DocumentType.Subscription;
|
|
@@ -76,7 +76,7 @@ function parser(document) {
|
|
|
76
76
|
: subscriptions;
|
|
77
77
|
globals.__DEV__ ? globals.invariant(definitions.length === 1, "react-apollo only supports one definition per HOC. ".concat(document, " had ") +
|
|
78
78
|
"".concat(definitions.length, " definitions. ") +
|
|
79
|
-
"You can use 'compose' to join multiple operation types to a component") : globals.invariant(definitions.length === 1,
|
|
79
|
+
"You can use 'compose' to join multiple operation types to a component") : globals.invariant(definitions.length === 1, 39);
|
|
80
80
|
var definition = definitions[0];
|
|
81
81
|
variables = definition.variableDefinitions || [];
|
|
82
82
|
if (definition.name && definition.name.kind === 'Name') {
|
|
@@ -94,7 +94,7 @@ function verifyDocumentType(document, type) {
|
|
|
94
94
|
var requiredOperationName = operationName(type);
|
|
95
95
|
var usedOperationName = operationName(operation.type);
|
|
96
96
|
globals.__DEV__ ? globals.invariant(operation.type === type, "Running a ".concat(requiredOperationName, " requires a graphql ") +
|
|
97
|
-
"".concat(requiredOperationName, ", but a ").concat(usedOperationName, " was used instead.")) : globals.invariant(operation.type === type,
|
|
97
|
+
"".concat(requiredOperationName, ", but a ").concat(usedOperationName, " was used instead.")) : globals.invariant(operation.type === type, 40);
|
|
98
98
|
}
|
|
99
99
|
|
|
100
100
|
exports.operationName = operationName;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.cjs","sources":["index.js"],"sourcesContent":["import { invariant, __DEV__ } from '../../utilities/globals';\nexport var DocumentType;\n(function (DocumentType) {\n DocumentType[DocumentType[\"Query\"] = 0] = \"Query\";\n DocumentType[DocumentType[\"Mutation\"] = 1] = \"Mutation\";\n DocumentType[DocumentType[\"Subscription\"] = 2] = \"Subscription\";\n})(DocumentType || (DocumentType = {}));\nvar cache = new Map();\nexport function operationName(type) {\n var name;\n switch (type) {\n case DocumentType.Query:\n name = 'Query';\n break;\n case DocumentType.Mutation:\n name = 'Mutation';\n break;\n case DocumentType.Subscription:\n name = 'Subscription';\n break;\n }\n return name;\n}\nexport function parser(document) {\n var cached = cache.get(document);\n if (cached)\n return cached;\n var variables, type, name;\n __DEV__ ? invariant(!!document && !!document.kind, \"Argument of \".concat(document, \" passed to parser was not a valid GraphQL \") +\n \"DocumentNode. You may need to use 'graphql-tag' or another method \" +\n \"to convert your operation into a document\") : invariant(!!document && !!document.kind,
|
|
1
|
+
{"version":3,"file":"parser.cjs","sources":["index.js"],"sourcesContent":["import { invariant, __DEV__ } from '../../utilities/globals';\nexport var DocumentType;\n(function (DocumentType) {\n DocumentType[DocumentType[\"Query\"] = 0] = \"Query\";\n DocumentType[DocumentType[\"Mutation\"] = 1] = \"Mutation\";\n DocumentType[DocumentType[\"Subscription\"] = 2] = \"Subscription\";\n})(DocumentType || (DocumentType = {}));\nvar cache = new Map();\nexport function operationName(type) {\n var name;\n switch (type) {\n case DocumentType.Query:\n name = 'Query';\n break;\n case DocumentType.Mutation:\n name = 'Mutation';\n break;\n case DocumentType.Subscription:\n name = 'Subscription';\n break;\n }\n return name;\n}\nexport function parser(document) {\n var cached = cache.get(document);\n if (cached)\n return cached;\n var variables, type, name;\n __DEV__ ? invariant(!!document && !!document.kind, \"Argument of \".concat(document, \" passed to parser was not a valid GraphQL \") +\n \"DocumentNode. You may need to use 'graphql-tag' or another method \" +\n \"to convert your operation into a document\") : invariant(!!document && !!document.kind, 36);\n var fragments = [];\n var queries = [];\n var mutations = [];\n var subscriptions = [];\n for (var _i = 0, _a = document.definitions; _i < _a.length; _i++) {\n var x = _a[_i];\n if (x.kind === 'FragmentDefinition') {\n fragments.push(x);\n continue;\n }\n if (x.kind === 'OperationDefinition') {\n switch (x.operation) {\n case 'query':\n queries.push(x);\n break;\n case 'mutation':\n mutations.push(x);\n break;\n case 'subscription':\n subscriptions.push(x);\n break;\n }\n }\n }\n __DEV__ ? invariant(!fragments.length ||\n (queries.length || mutations.length || subscriptions.length), \"Passing only a fragment to 'graphql' is not yet supported. \" +\n \"You must include a query, subscription or mutation as well\") : invariant(!fragments.length ||\n (queries.length || mutations.length || subscriptions.length), 37);\n __DEV__ ? invariant(queries.length + mutations.length + subscriptions.length <= 1, \"react-apollo only supports a query, subscription, or a mutation per HOC. \" +\n \"\".concat(document, \" had \").concat(queries.length, \" queries, \").concat(subscriptions.length, \" \") +\n \"subscriptions and \".concat(mutations.length, \" mutations. \") +\n \"You can use 'compose' to join multiple operation types to a component\") : invariant(queries.length + mutations.length + subscriptions.length <= 1, 38);\n type = queries.length ? DocumentType.Query : DocumentType.Mutation;\n if (!queries.length && !mutations.length)\n type = DocumentType.Subscription;\n var definitions = queries.length\n ? queries\n : mutations.length\n ? mutations\n : subscriptions;\n __DEV__ ? invariant(definitions.length === 1, \"react-apollo only supports one definition per HOC. \".concat(document, \" had \") +\n \"\".concat(definitions.length, \" definitions. \") +\n \"You can use 'compose' to join multiple operation types to a component\") : invariant(definitions.length === 1, 39);\n var definition = definitions[0];\n variables = definition.variableDefinitions || [];\n if (definition.name && definition.name.kind === 'Name') {\n name = definition.name.value;\n }\n else {\n name = 'data';\n }\n var payload = { name: name, type: type, variables: variables };\n cache.set(document, payload);\n return payload;\n}\nexport function verifyDocumentType(document, type) {\n var operation = parser(document);\n var requiredOperationName = operationName(type);\n var usedOperationName = operationName(operation.type);\n __DEV__ ? invariant(operation.type === type, \"Running a \".concat(requiredOperationName, \" requires a graphql \") +\n \"\".concat(requiredOperationName, \", but a \").concat(usedOperationName, \" was used instead.\")) : invariant(operation.type === type, 40);\n}\n//# sourceMappingURL=index.js.map"],"names":["DocumentType","__DEV__","invariant"],"mappings":"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"}
|
|
@@ -33,7 +33,7 @@ function parser(document) {
|
|
|
33
33
|
var variables, type, name;
|
|
34
34
|
globals.__DEV__ ? globals.invariant(!!document && !!document.kind, "Argument of ".concat(document, " passed to parser was not a valid GraphQL ") +
|
|
35
35
|
"DocumentNode. You may need to use 'graphql-tag' or another method " +
|
|
36
|
-
"to convert your operation into a document") : globals.invariant(!!document && !!document.kind,
|
|
36
|
+
"to convert your operation into a document") : globals.invariant(!!document && !!document.kind, 36);
|
|
37
37
|
var fragments = [];
|
|
38
38
|
var queries = [];
|
|
39
39
|
var mutations = [];
|
|
@@ -61,11 +61,11 @@ function parser(document) {
|
|
|
61
61
|
globals.__DEV__ ? globals.invariant(!fragments.length ||
|
|
62
62
|
(queries.length || mutations.length || subscriptions.length), "Passing only a fragment to 'graphql' is not yet supported. " +
|
|
63
63
|
"You must include a query, subscription or mutation as well") : globals.invariant(!fragments.length ||
|
|
64
|
-
(queries.length || mutations.length || subscriptions.length),
|
|
64
|
+
(queries.length || mutations.length || subscriptions.length), 37);
|
|
65
65
|
globals.__DEV__ ? globals.invariant(queries.length + mutations.length + subscriptions.length <= 1, "react-apollo only supports a query, subscription, or a mutation per HOC. " +
|
|
66
66
|
"".concat(document, " had ").concat(queries.length, " queries, ").concat(subscriptions.length, " ") +
|
|
67
67
|
"subscriptions and ".concat(mutations.length, " mutations. ") +
|
|
68
|
-
"You can use 'compose' to join multiple operation types to a component") : globals.invariant(queries.length + mutations.length + subscriptions.length <= 1,
|
|
68
|
+
"You can use 'compose' to join multiple operation types to a component") : globals.invariant(queries.length + mutations.length + subscriptions.length <= 1, 38);
|
|
69
69
|
type = queries.length ? exports.DocumentType.Query : exports.DocumentType.Mutation;
|
|
70
70
|
if (!queries.length && !mutations.length)
|
|
71
71
|
type = exports.DocumentType.Subscription;
|
|
@@ -76,7 +76,7 @@ function parser(document) {
|
|
|
76
76
|
: subscriptions;
|
|
77
77
|
globals.__DEV__ ? globals.invariant(definitions.length === 1, "react-apollo only supports one definition per HOC. ".concat(document, " had ") +
|
|
78
78
|
"".concat(definitions.length, " definitions. ") +
|
|
79
|
-
"You can use 'compose' to join multiple operation types to a component") : globals.invariant(definitions.length === 1,
|
|
79
|
+
"You can use 'compose' to join multiple operation types to a component") : globals.invariant(definitions.length === 1, 39);
|
|
80
80
|
var definition = definitions[0];
|
|
81
81
|
variables = definition.variableDefinitions || [];
|
|
82
82
|
if (definition.name && definition.name.kind === 'Name') {
|
|
@@ -94,7 +94,7 @@ function verifyDocumentType(document, type) {
|
|
|
94
94
|
var requiredOperationName = operationName(type);
|
|
95
95
|
var usedOperationName = operationName(operation.type);
|
|
96
96
|
globals.__DEV__ ? globals.invariant(operation.type === type, "Running a ".concat(requiredOperationName, " requires a graphql ") +
|
|
97
|
-
"".concat(requiredOperationName, ", but a ").concat(usedOperationName, " was used instead.")) : globals.invariant(operation.type === type,
|
|
97
|
+
"".concat(requiredOperationName, ", but a ").concat(usedOperationName, " was used instead.")) : globals.invariant(operation.type === type, 40);
|
|
98
98
|
}
|
|
99
99
|
|
|
100
100
|
exports.operationName = operationName;
|