react-relay 14.1.0 → 16.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ReactRelayContainerUtils.js.flow +1 -0
- package/ReactRelayContext.js +1 -1
- package/ReactRelayContext.js.flow +1 -0
- package/ReactRelayFragmentContainer.js.flow +6 -2
- package/ReactRelayFragmentMockRenderer.js.flow +1 -0
- package/ReactRelayLocalQueryRenderer.js.flow +5 -3
- package/ReactRelayPaginationContainer.js.flow +21 -12
- package/ReactRelayQueryFetcher.js.flow +20 -10
- package/ReactRelayQueryRenderer.js.flow +15 -11
- package/ReactRelayQueryRendererContext.js.flow +1 -0
- package/ReactRelayRefetchContainer.js.flow +9 -5
- package/ReactRelayTestMocker.js.flow +3 -1
- package/ReactRelayTypes.js.flow +2 -0
- package/RelayContext.js.flow +1 -0
- package/__flowtests__/ReactRelayFragmentContainer-flowtest.js.flow +2 -1
- package/__flowtests__/ReactRelayPaginationContainer-flowtest.js.flow +1 -0
- package/__flowtests__/ReactRelayRefetchContainer-flowtest.js.flow +1 -0
- package/__flowtests__/RelayModern-flowtest.js.flow +1 -0
- package/__flowtests__/RelayModernFlowtest_badref.graphql.js.flow +1 -0
- package/__flowtests__/RelayModernFlowtest_notref.graphql.js.flow +1 -0
- package/__flowtests__/RelayModernFlowtest_user.graphql.js.flow +1 -0
- package/__flowtests__/RelayModernFlowtest_users.graphql.js.flow +1 -0
- package/__flowtests__/__generated__/ReactRelayFragmentContainerFlowtest_viewer.graphql.js.flow +3 -1
- package/__flowtests__/__generated__/ReactRelayFragmentContainerFlowtest_viewer2.graphql.js.flow +3 -1
- package/__flowtests__/__generated__/ReactRelayPaginationContainerFlowtestQuery.graphql.js.flow +4 -2
- package/__flowtests__/__generated__/ReactRelayPaginationContainerFlowtest_viewer.graphql.js.flow +3 -1
- package/__flowtests__/__generated__/ReactRelayRefetchContainerFlowtestQuery.graphql.js.flow +4 -2
- package/__flowtests__/__generated__/ReactRelayRefetchContainerFlowtest_viewer.graphql.js.flow +3 -1
- package/__flowtests__/__generated__/RelayModernFlowtest_badref.graphql.js.flow +4 -2
- package/__flowtests__/__generated__/RelayModernFlowtest_notref.graphql.js.flow +4 -2
- package/__flowtests__/__generated__/RelayModernFlowtest_user.graphql.js.flow +3 -1
- package/__flowtests__/__generated__/RelayModernFlowtest_users.graphql.js.flow +3 -1
- package/assertFragmentMap.js.flow +1 -0
- package/buildReactRelayContainer.js.flow +10 -6
- package/getRootVariablesForFragments.js.flow +1 -1
- package/hooks.js +1 -1
- package/hooks.js.flow +4 -0
- package/index.js +1 -1
- package/index.js.flow +4 -0
- package/isRelayEnvironment.js.flow +1 -0
- package/jest-react/enqueueTask.js.flow +1 -1
- package/jest-react/index.js.flow +1 -1
- package/jest-react/internalAct.js.flow +1 -1
- package/legacy.js +1 -1
- package/legacy.js.flow +1 -0
- package/lib/ReactRelayContainerUtils.js +0 -11
- package/lib/ReactRelayContext.js +1 -12
- package/lib/ReactRelayFragmentContainer.js +23 -122
- package/lib/ReactRelayFragmentMockRenderer.js +0 -12
- package/lib/ReactRelayLocalQueryRenderer.js +12 -41
- package/lib/ReactRelayPaginationContainer.js +45 -341
- package/lib/ReactRelayQueryFetcher.js +36 -111
- package/lib/ReactRelayQueryRenderer.js +29 -137
- package/lib/ReactRelayQueryRendererContext.js +0 -10
- package/lib/ReactRelayRefetchContainer.js +33 -166
- package/lib/ReactRelayTestMocker.js +18 -128
- package/lib/ReactRelayTypes.js +0 -9
- package/lib/RelayContext.js +0 -23
- package/lib/assertFragmentMap.js +0 -16
- package/lib/buildReactRelayContainer.js +7 -41
- package/lib/getRootVariablesForFragments.js +2 -19
- package/lib/hooks.js +3 -30
- package/lib/index.js +3 -39
- package/lib/isRelayEnvironment.js +1 -16
- package/lib/jest-react/enqueueTask.js +1 -25
- package/lib/jest-react/index.js +0 -1
- package/lib/jest-react/internalAct.js +2 -51
- package/lib/legacy.js +0 -20
- package/lib/multi-actor/ActorChange.js +0 -14
- package/lib/multi-actor/index.js +0 -10
- package/lib/multi-actor/useRelayActorEnvironment.js +2 -16
- package/lib/relay-hooks/EntryPointContainer.react.js +7 -23
- package/lib/relay-hooks/EntryPointTypes.flow.js +0 -10
- package/lib/relay-hooks/FragmentResource.js +130 -280
- package/lib/relay-hooks/HooksImplementation.js +0 -14
- package/lib/relay-hooks/InternalLogger.js +0 -11
- package/lib/relay-hooks/LRUCache.js +0 -39
- package/lib/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js +27 -65
- package/lib/relay-hooks/MatchContainer.js +9 -111
- package/lib/relay-hooks/NestedRelayEntryPointBuilderUtils.js +9 -0
- package/lib/relay-hooks/ProfilerContext.js +0 -14
- package/lib/relay-hooks/QueryResource.js +14 -149
- package/lib/relay-hooks/RelayEnvironmentProvider.js +3 -17
- package/lib/relay-hooks/SuspenseResource.js +2 -59
- package/lib/relay-hooks/loadEntryPoint.js +10 -45
- package/lib/relay-hooks/loadQuery.js +29 -169
- package/lib/relay-hooks/preloadQuery_DEPRECATED.js +8 -58
- package/lib/relay-hooks/prepareEntryPoint_DEPRECATED.js +6 -24
- package/lib/relay-hooks/react-cache/RelayReactCache.js +4 -20
- package/lib/relay-hooks/react-cache/getQueryResultOrFetchQuery_REACT_CACHE.js +13 -102
- package/lib/relay-hooks/react-cache/readFragmentInternal_REACT_CACHE.js +18 -75
- package/lib/relay-hooks/react-cache/useFragmentInternal_REACT_CACHE.js +79 -222
- package/lib/relay-hooks/react-cache/useFragment_REACT_CACHE.js +3 -27
- package/lib/relay-hooks/react-cache/useLazyLoadQuery_REACT_CACHE.js +11 -33
- package/lib/relay-hooks/react-cache/usePaginationFragment_REACT_CACHE.js +62 -85
- package/lib/relay-hooks/react-cache/usePreloadedQuery_REACT_CACHE.js +20 -63
- package/lib/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js +53 -179
- package/lib/relay-hooks/react-cache/useRefetchableFragment_REACT_CACHE.js +5 -27
- package/lib/relay-hooks/useBlockingPaginationFragment.js +58 -121
- package/lib/relay-hooks/useClientQuery.js +0 -21
- package/lib/relay-hooks/useEntryPointLoader.js +12 -100
- package/lib/relay-hooks/useFetchTrackingRef.js +6 -33
- package/lib/relay-hooks/useFragment.js +5 -32
- package/lib/relay-hooks/useFragmentNode.js +14 -55
- package/lib/relay-hooks/useIsMountedRef.js +2 -14
- package/lib/relay-hooks/useIsOperationNodeActive.js +6 -29
- package/lib/relay-hooks/useIsParentQueryActive.js +1 -15
- package/lib/relay-hooks/useLazyLoadQuery.js +2 -23
- package/lib/relay-hooks/useLazyLoadQueryNode.js +18 -63
- package/lib/relay-hooks/useLoadMoreFunction.js +44 -100
- package/lib/relay-hooks/useMemoOperationDescriptor.js +4 -23
- package/lib/relay-hooks/useMemoVariables.js +8 -43
- package/lib/relay-hooks/useMutation.js +6 -34
- package/lib/relay-hooks/usePaginationFragment.js +49 -89
- package/lib/relay-hooks/usePreloadedQuery.js +10 -54
- package/lib/relay-hooks/useQueryLoader.js +18 -116
- package/lib/relay-hooks/useRefetchableFragment.js +4 -30
- package/lib/relay-hooks/useRefetchableFragmentNode.js +58 -184
- package/lib/relay-hooks/useRelayEnvironment.js +2 -16
- package/lib/relay-hooks/useStaticFragmentNodeWarning.js +2 -20
- package/lib/relay-hooks/useSubscribeToInvalidationState.js +3 -28
- package/lib/relay-hooks/useSubscription.js +3 -22
- package/lib/relay-hooks/useUnsafeRef_DEPRECATED.js +12 -0
- package/multi-actor/ActorChange.js.flow +1 -1
- package/multi-actor/index.js.flow +1 -1
- package/multi-actor/useRelayActorEnvironment.js.flow +2 -2
- package/package.json +2 -2
- package/react-relay-hooks.js +2 -2
- package/react-relay-hooks.min.js +2 -2
- package/react-relay-legacy.js +2 -2
- package/react-relay-legacy.min.js +2 -2
- package/react-relay.js +2 -2
- package/react-relay.min.js +2 -2
- package/relay-hooks/EntryPointContainer.react.js.flow +6 -1
- package/relay-hooks/EntryPointTypes.flow.js.flow +23 -20
- package/relay-hooks/FragmentResource.js.flow +148 -34
- package/relay-hooks/HooksImplementation.js.flow +1 -1
- package/relay-hooks/InternalLogger.js.flow +1 -1
- package/relay-hooks/LRUCache.js.flow +1 -1
- package/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js.flow +19 -10
- package/relay-hooks/MatchContainer.js.flow +1 -1
- package/relay-hooks/NestedRelayEntryPointBuilderUtils.js.flow +51 -0
- package/relay-hooks/ProfilerContext.js.flow +1 -1
- package/relay-hooks/QueryResource.js.flow +25 -5
- package/relay-hooks/RelayEnvironmentProvider.js.flow +2 -2
- package/relay-hooks/SuspenseResource.js.flow +1 -1
- package/relay-hooks/__flowtests__/EntryPointTypes/EntryPointElementConfig-flowtest.js.flow +3 -1
- package/relay-hooks/__flowtests__/EntryPointTypes/NestedEntrypoints-flowtest.js.flow +9 -7
- package/relay-hooks/__flowtests__/__generated__/useFragmentFlowtest_user.graphql.js.flow +3 -1
- package/relay-hooks/__flowtests__/__generated__/useFragmentFlowtest_users.graphql.js.flow +3 -1
- package/relay-hooks/__flowtests__/useBlockingPaginationFragment-flowtest.js.flow +40 -33
- package/relay-hooks/__flowtests__/useFragment-flowtest.js.flow +1 -1
- package/relay-hooks/__flowtests__/usePaginationFragment-flowtest.js.flow +38 -32
- package/relay-hooks/__flowtests__/useRefetchableFragment-flowtest.js.flow +20 -18
- package/relay-hooks/__flowtests__/utils.js.flow +13 -2
- package/relay-hooks/loadEntryPoint.js.flow +15 -8
- package/relay-hooks/loadQuery.js.flow +32 -8
- package/relay-hooks/preloadQuery_DEPRECATED.js.flow +5 -6
- package/relay-hooks/prepareEntryPoint_DEPRECATED.js.flow +17 -10
- package/relay-hooks/react-cache/RelayReactCache.js.flow +1 -1
- package/relay-hooks/react-cache/getQueryResultOrFetchQuery_REACT_CACHE.js.flow +4 -4
- package/relay-hooks/react-cache/readFragmentInternal_REACT_CACHE.js.flow +5 -4
- package/relay-hooks/react-cache/useFragmentInternal_REACT_CACHE.js.flow +32 -14
- package/relay-hooks/react-cache/useFragment_REACT_CACHE.js.flow +4 -10
- package/relay-hooks/react-cache/useLazyLoadQuery_REACT_CACHE.js.flow +1 -1
- package/relay-hooks/react-cache/usePaginationFragment_REACT_CACHE.js.flow +39 -49
- package/relay-hooks/react-cache/usePreloadedQuery_REACT_CACHE.js.flow +1 -2
- package/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js.flow +29 -16
- package/relay-hooks/react-cache/useRefetchableFragment_REACT_CACHE.js.flow +17 -33
- package/relay-hooks/useBlockingPaginationFragment.js.flow +85 -58
- package/relay-hooks/useClientQuery.js.flow +3 -3
- package/relay-hooks/useEntryPointLoader.js.flow +10 -6
- package/relay-hooks/useFetchTrackingRef.js.flow +5 -4
- package/relay-hooks/useFragment.js.flow +2 -2
- package/relay-hooks/useFragmentNode.js.flow +7 -6
- package/relay-hooks/useIsMountedRef.js.flow +1 -1
- package/relay-hooks/useIsOperationNodeActive.js.flow +1 -1
- package/relay-hooks/useIsParentQueryActive.js.flow +1 -1
- package/relay-hooks/useLazyLoadQuery.js.flow +2 -2
- package/relay-hooks/useLazyLoadQueryNode.js.flow +2 -2
- package/relay-hooks/useLoadMoreFunction.js.flow +27 -16
- package/relay-hooks/useMemoOperationDescriptor.js.flow +3 -3
- package/relay-hooks/useMemoVariables.js.flow +13 -29
- package/relay-hooks/useMutation.js.flow +30 -13
- package/relay-hooks/usePaginationFragment.js.flow +55 -54
- package/relay-hooks/usePreloadedQuery.js.flow +47 -22
- package/relay-hooks/useQueryLoader.js.flow +78 -21
- package/relay-hooks/useRefetchableFragment.js.flow +65 -33
- package/relay-hooks/useRefetchableFragmentNode.js.flow +38 -17
- package/relay-hooks/useRelayEnvironment.js.flow +2 -2
- package/relay-hooks/useStaticFragmentNodeWarning.js.flow +3 -3
- package/relay-hooks/useSubscribeToInvalidationState.js.flow +2 -2
- package/relay-hooks/useSubscription.js.flow +1 -1
- package/relay-hooks/useUnsafeRef_DEPRECATED.js.flow +25 -0
- package/lib/readContext.js +0 -27
- package/readContext.js.flow +0 -29
|
@@ -1,56 +1,38 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
* @emails oncall+relay
|
|
8
|
-
*
|
|
9
|
-
* @format
|
|
10
|
-
*/
|
|
11
1
|
'use strict';
|
|
12
2
|
|
|
13
3
|
var preloadQuery = require('./preloadQuery_DEPRECATED');
|
|
14
|
-
|
|
15
4
|
function prepareEntryPoint(environmentProvider, entryPoint, entryPointParams) {
|
|
16
|
-
// Start loading the code for the entrypoint
|
|
17
5
|
if (entryPoint.root.getModuleIfRequired() == null) {
|
|
18
6
|
entryPoint.root.load();
|
|
19
7
|
}
|
|
20
|
-
|
|
21
8
|
var preloadProps = entryPoint.getPreloadProps(entryPointParams);
|
|
22
9
|
var queries = preloadProps.queries,
|
|
23
|
-
|
|
10
|
+
entryPoints = preloadProps.entryPoints;
|
|
24
11
|
var preloadedQueries = {};
|
|
25
12
|
var preloadedEntryPoints = {};
|
|
26
|
-
|
|
27
13
|
if (queries != null) {
|
|
28
14
|
var queriesPropNames = Object.keys(queries);
|
|
29
15
|
queriesPropNames.forEach(function (queryPropName) {
|
|
30
16
|
var _queries$queryPropNam = queries[queryPropName],
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
17
|
+
environmentProviderOptions = _queries$queryPropNam.environmentProviderOptions,
|
|
18
|
+
options = _queries$queryPropNam.options,
|
|
19
|
+
parameters = _queries$queryPropNam.parameters,
|
|
20
|
+
variables = _queries$queryPropNam.variables;
|
|
35
21
|
var environment = environmentProvider.getEnvironment(environmentProviderOptions);
|
|
36
22
|
preloadedQueries[queryPropName] = preloadQuery(environment, parameters, variables, options, environmentProviderOptions);
|
|
37
23
|
});
|
|
38
24
|
}
|
|
39
|
-
|
|
40
25
|
if (entryPoints != null) {
|
|
41
26
|
var entryPointPropNames = Object.keys(entryPoints);
|
|
42
27
|
entryPointPropNames.forEach(function (entryPointPropName) {
|
|
43
28
|
var entryPointDescription = entryPoints[entryPointPropName];
|
|
44
|
-
|
|
45
29
|
if (entryPointDescription == null) {
|
|
46
30
|
return;
|
|
47
31
|
}
|
|
48
|
-
|
|
49
32
|
var nestedEntryPoint = entryPointDescription.entryPoint,
|
|
50
|
-
|
|
33
|
+
nestedParams = entryPointDescription.entryPointParams;
|
|
51
34
|
preloadedEntryPoints[entryPointPropName] = prepareEntryPoint(environmentProvider, nestedEntryPoint, nestedParams);
|
|
52
35
|
});
|
|
53
36
|
}
|
|
54
37
|
}
|
|
55
|
-
|
|
56
38
|
module.exports = prepareEntryPoint;
|
|
@@ -1,35 +1,19 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* @emails oncall+relay
|
|
9
|
-
* @format
|
|
10
|
-
*/
|
|
11
1
|
'use strict';
|
|
12
2
|
|
|
13
|
-
var invariant = require('invariant');
|
|
14
|
-
|
|
15
|
-
|
|
3
|
+
var invariant = require('invariant');
|
|
16
4
|
var _require = require('react'),
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
5
|
+
unstable_getCacheForType = _require.unstable_getCacheForType,
|
|
6
|
+
unstable_getCacheSignal = _require.unstable_getCacheSignal;
|
|
20
7
|
var _require2 = require('relay-runtime'),
|
|
21
|
-
|
|
22
|
-
|
|
8
|
+
RelayFeatureFlags = _require2.RelayFeatureFlags;
|
|
23
9
|
function getCacheForType(factory) {
|
|
24
10
|
!(typeof unstable_getCacheForType === 'function' && RelayFeatureFlags.USE_REACT_CACHE) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayReactCache.getCacheForType should only be called when the USE_REACT_CACHE feature flag is enabled and when on an experimental React build that supports it.') : invariant(false) : void 0;
|
|
25
11
|
return unstable_getCacheForType(factory);
|
|
26
12
|
}
|
|
27
|
-
|
|
28
13
|
function getCacheSignal() {
|
|
29
14
|
!(typeof unstable_getCacheSignal === 'function' && RelayFeatureFlags.USE_REACT_CACHE) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayReactCache.getCacheSignal should only be called when the USE_REACT_CACHE feature flag is enabled and when on an experimental React build that supports it.') : invariant(false) : void 0;
|
|
30
15
|
return unstable_getCacheSignal();
|
|
31
16
|
}
|
|
32
|
-
|
|
33
17
|
module.exports = {
|
|
34
18
|
getCacheForType: getCacheForType,
|
|
35
19
|
getCacheSignal: getCacheSignal
|
|
@@ -1,102 +1,64 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* @emails oncall+relay
|
|
9
|
-
* @format
|
|
10
|
-
*/
|
|
11
1
|
'use strict';
|
|
12
2
|
|
|
13
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
|
14
|
-
|
|
15
4
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
16
|
-
|
|
17
5
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
18
|
-
|
|
19
6
|
var SuspenseResource = require('../SuspenseResource');
|
|
20
|
-
|
|
21
7
|
var _require = require('./RelayReactCache'),
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
8
|
+
getCacheForType = _require.getCacheForType,
|
|
9
|
+
getCacheSignal = _require.getCacheSignal;
|
|
25
10
|
var invariant = require('invariant');
|
|
26
|
-
|
|
27
11
|
var _require2 = require('relay-runtime'),
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
12
|
+
fetchQueryInternal = _require2.__internal.fetchQuery,
|
|
13
|
+
RelayFeatureFlags = _require2.RelayFeatureFlags;
|
|
31
14
|
var warning = require("fbjs/lib/warning");
|
|
32
|
-
|
|
33
15
|
var DEFAULT_FETCH_POLICY = 'store-or-network';
|
|
34
16
|
var WEAKMAP_SUPPORTED = typeof WeakMap === 'function';
|
|
35
|
-
|
|
36
17
|
var QueryCache = /*#__PURE__*/function () {
|
|
37
18
|
function QueryCache() {
|
|
38
19
|
this._map = WEAKMAP_SUPPORTED ? new WeakMap() : new Map();
|
|
39
20
|
}
|
|
40
|
-
|
|
41
21
|
var _proto = QueryCache.prototype;
|
|
42
|
-
|
|
43
22
|
_proto.get = function get(environment, key) {
|
|
44
23
|
var forEnv = this._map.get(environment);
|
|
45
|
-
|
|
46
24
|
if (!forEnv) {
|
|
47
25
|
forEnv = new Map();
|
|
48
|
-
|
|
49
26
|
this._map.set(environment, forEnv);
|
|
50
27
|
}
|
|
51
|
-
|
|
52
28
|
return forEnv.get(key);
|
|
53
29
|
};
|
|
54
|
-
|
|
55
30
|
_proto.set = function set(environment, key, value) {
|
|
56
31
|
var forEnv = this._map.get(environment);
|
|
57
|
-
|
|
58
32
|
if (!forEnv) {
|
|
59
33
|
forEnv = new Map();
|
|
60
|
-
|
|
61
34
|
this._map.set(environment, forEnv);
|
|
62
35
|
}
|
|
63
|
-
|
|
64
36
|
forEnv.set(key, value);
|
|
65
37
|
};
|
|
66
|
-
|
|
67
38
|
_proto["delete"] = function _delete(environment, key) {
|
|
68
39
|
var forEnv = this._map.get(environment);
|
|
69
|
-
|
|
70
40
|
if (!forEnv) {
|
|
71
41
|
return;
|
|
72
42
|
}
|
|
73
|
-
|
|
74
43
|
forEnv["delete"](key);
|
|
75
|
-
|
|
76
44
|
if (forEnv.size === 0) {
|
|
77
45
|
this._map["delete"](environment);
|
|
78
46
|
}
|
|
79
47
|
};
|
|
80
|
-
|
|
81
48
|
return QueryCache;
|
|
82
49
|
}();
|
|
83
|
-
|
|
84
50
|
function createQueryCache() {
|
|
85
51
|
return new QueryCache();
|
|
86
52
|
}
|
|
87
|
-
|
|
88
53
|
var noopOnCommit = function noopOnCommit() {
|
|
89
54
|
return function () {
|
|
90
55
|
return undefined;
|
|
91
56
|
};
|
|
92
57
|
};
|
|
93
|
-
|
|
94
58
|
var noopPromise = new Promise(function () {});
|
|
95
|
-
|
|
96
59
|
function getQueryCacheKey(operation, fetchPolicy, renderPolicy, fetchKey) {
|
|
97
60
|
return "".concat(fetchPolicy, "-").concat(renderPolicy, "-").concat(operation.request.identifier, "-").concat(fetchKey !== null && fetchKey !== void 0 ? fetchKey : '');
|
|
98
61
|
}
|
|
99
|
-
|
|
100
62
|
function constructQueryResult(operation) {
|
|
101
63
|
var rootFragmentRef = {
|
|
102
64
|
__id: operation.fragment.dataID,
|
|
@@ -108,7 +70,6 @@ function constructQueryResult(operation) {
|
|
|
108
70
|
fragmentRef: rootFragmentRef
|
|
109
71
|
};
|
|
110
72
|
}
|
|
111
|
-
|
|
112
73
|
function makeInitialCacheEntry() {
|
|
113
74
|
return {
|
|
114
75
|
status: 'pending',
|
|
@@ -117,35 +78,24 @@ function makeInitialCacheEntry() {
|
|
|
117
78
|
suspenseResource: null
|
|
118
79
|
};
|
|
119
80
|
}
|
|
120
|
-
|
|
121
81
|
function getQueryResultOrFetchQuery_REACT_CACHE(environment, queryOperationDescriptor, options) {
|
|
122
82
|
var _options$fetchPolicy, _options$renderPolicy;
|
|
123
|
-
|
|
124
83
|
var fetchPolicy = (_options$fetchPolicy = options === null || options === void 0 ? void 0 : options.fetchPolicy) !== null && _options$fetchPolicy !== void 0 ? _options$fetchPolicy : DEFAULT_FETCH_POLICY;
|
|
125
84
|
var renderPolicy = (_options$renderPolicy = options === null || options === void 0 ? void 0 : options.renderPolicy) !== null && _options$renderPolicy !== void 0 ? _options$renderPolicy : environment.UNSTABLE_getDefaultRenderPolicy();
|
|
126
85
|
var cache = getCacheForType(createQueryCache);
|
|
127
86
|
var cacheKey = getQueryCacheKey(queryOperationDescriptor, fetchPolicy, renderPolicy, options === null || options === void 0 ? void 0 : options.fetchKey);
|
|
128
87
|
var initialEntry = cache.get(environment, cacheKey);
|
|
129
|
-
|
|
130
88
|
function updateCache(updater) {
|
|
131
89
|
var currentEntry = cache.get(environment, cacheKey);
|
|
132
|
-
|
|
133
90
|
if (!currentEntry) {
|
|
134
91
|
currentEntry = makeInitialCacheEntry();
|
|
135
92
|
cache.set(environment, cacheKey, currentEntry);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
cache.set(environment, cacheKey, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, currentEntry), newStatus)); // ... but we can because QueryCacheEntry spreads QueryCacheEntryStatus, so spreading
|
|
142
|
-
// a QueryCacheEntryStatus into a QueryCacheEntry will result in a valid QueryCacheEntry.
|
|
143
|
-
} // Initiate a query to fetch the data if needed:
|
|
144
|
-
|
|
145
|
-
|
|
93
|
+
}
|
|
94
|
+
var newStatus = updater(currentEntry);
|
|
95
|
+
cache.set(environment, cacheKey, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, currentEntry), newStatus));
|
|
96
|
+
}
|
|
146
97
|
if (RelayFeatureFlags.USE_REACT_CACHE_LEGACY_TIMEOUTS) {
|
|
147
98
|
var _entry;
|
|
148
|
-
|
|
149
99
|
if (initialEntry === undefined) {
|
|
150
100
|
onCacheMiss(environment, queryOperationDescriptor, fetchPolicy, renderPolicy, updateCache, options === null || options === void 0 ? void 0 : options.fetchObservable);
|
|
151
101
|
var createdEntry = cache.get(environment, cacheKey);
|
|
@@ -154,7 +104,6 @@ function getQueryResultOrFetchQuery_REACT_CACHE(environment, queryOperationDescr
|
|
|
154
104
|
} else {
|
|
155
105
|
_entry = initialEntry;
|
|
156
106
|
}
|
|
157
|
-
|
|
158
107
|
if (!_entry.suspenseResource) {
|
|
159
108
|
_entry.suspenseResource = new SuspenseResource(function () {
|
|
160
109
|
var retention = environment.retain(queryOperationDescriptor);
|
|
@@ -166,70 +115,49 @@ function getQueryResultOrFetchQuery_REACT_CACHE(environment, queryOperationDescr
|
|
|
166
115
|
};
|
|
167
116
|
});
|
|
168
117
|
}
|
|
169
|
-
|
|
170
118
|
if (_entry.onCommit === noopOnCommit) {
|
|
171
119
|
_entry.onCommit = function () {
|
|
172
120
|
!_entry.suspenseResource ? process.env.NODE_ENV !== "production" ? invariant(false, 'SuspenseResource should have been initialized. This is a bug in Relay.') : invariant(false) : void 0;
|
|
173
|
-
|
|
174
121
|
var retention = _entry.suspenseResource.permanentRetain(environment);
|
|
175
|
-
|
|
176
122
|
return function () {
|
|
177
123
|
retention.dispose();
|
|
178
124
|
};
|
|
179
125
|
};
|
|
180
126
|
}
|
|
181
|
-
|
|
182
127
|
_entry.suspenseResource.temporaryRetain(environment);
|
|
183
128
|
} else {
|
|
184
129
|
if (initialEntry === undefined) {
|
|
185
|
-
|
|
186
|
-
// presiding Cache component unmounts, at which point the AbortSignal
|
|
187
|
-
// will be triggered.
|
|
188
|
-
onCacheMiss(environment, queryOperationDescriptor, fetchPolicy, renderPolicy, updateCache, options === null || options === void 0 ? void 0 : options.fetchObservable); // Since this is the first time rendering, retain the query. React will
|
|
189
|
-
// trigger the abort signal when this cache entry is no longer needed.
|
|
190
|
-
|
|
130
|
+
onCacheMiss(environment, queryOperationDescriptor, fetchPolicy, renderPolicy, updateCache, options === null || options === void 0 ? void 0 : options.fetchObservable);
|
|
191
131
|
var retention = environment.retain(queryOperationDescriptor);
|
|
192
|
-
|
|
193
132
|
var dispose = function dispose() {
|
|
194
133
|
retention.dispose();
|
|
195
134
|
cache["delete"](environment, cacheKey);
|
|
196
135
|
};
|
|
197
|
-
|
|
198
136
|
var abortSignal = getCacheSignal();
|
|
199
137
|
abortSignal.addEventListener('abort', dispose, {
|
|
200
138
|
once: true
|
|
201
139
|
});
|
|
202
140
|
}
|
|
203
141
|
}
|
|
204
|
-
|
|
205
|
-
var entry = cache.get(environment, cacheKey); // could be a different entry now if synchronously resolved
|
|
206
|
-
|
|
142
|
+
var entry = cache.get(environment, cacheKey);
|
|
207
143
|
!(entry !== undefined) ? process.env.NODE_ENV !== "production" ? invariant(false, 'An entry should have been created by onCacheMiss. This is a bug in Relay.') : invariant(false) : void 0;
|
|
208
|
-
|
|
209
144
|
switch (entry.status) {
|
|
210
145
|
case 'pending':
|
|
211
146
|
throw entry.promise;
|
|
212
|
-
|
|
213
147
|
case 'rejected':
|
|
214
148
|
throw entry.error;
|
|
215
|
-
|
|
216
149
|
case 'resolved':
|
|
217
150
|
return [entry.result, entry.onCommit];
|
|
218
151
|
}
|
|
219
|
-
|
|
220
152
|
!false ? process.env.NODE_ENV !== "production" ? invariant(false, 'switch statement should be exhaustive') : invariant(false) : void 0;
|
|
221
153
|
}
|
|
222
|
-
|
|
223
154
|
function onCacheMiss(environment, operation, fetchPolicy, renderPolicy, updateCache, customFetchObservable) {
|
|
224
|
-
// NB: Besides checking if the data is available, calling `check` will write missing
|
|
225
|
-
// data to the store using any missing data handlers specified in the environment.
|
|
226
155
|
var queryAvailability = environment.check(operation);
|
|
227
156
|
var queryStatus = queryAvailability.status;
|
|
228
157
|
var hasFullQuery = queryStatus === 'available';
|
|
229
158
|
var canPartialRender = hasFullQuery || renderPolicy === 'partial' && queryStatus !== 'stale';
|
|
230
159
|
var shouldFetch;
|
|
231
160
|
var shouldRenderNow;
|
|
232
|
-
|
|
233
161
|
switch (fetchPolicy) {
|
|
234
162
|
case 'store-only':
|
|
235
163
|
{
|
|
@@ -237,21 +165,18 @@ function onCacheMiss(environment, operation, fetchPolicy, renderPolicy, updateCa
|
|
|
237
165
|
shouldRenderNow = true;
|
|
238
166
|
break;
|
|
239
167
|
}
|
|
240
|
-
|
|
241
168
|
case 'store-or-network':
|
|
242
169
|
{
|
|
243
170
|
shouldFetch = !hasFullQuery;
|
|
244
171
|
shouldRenderNow = canPartialRender;
|
|
245
172
|
break;
|
|
246
173
|
}
|
|
247
|
-
|
|
248
174
|
case 'store-and-network':
|
|
249
175
|
{
|
|
250
176
|
shouldFetch = true;
|
|
251
177
|
shouldRenderNow = canPartialRender;
|
|
252
178
|
break;
|
|
253
179
|
}
|
|
254
|
-
|
|
255
180
|
case 'network-only':
|
|
256
181
|
default:
|
|
257
182
|
{
|
|
@@ -260,17 +185,14 @@ function onCacheMiss(environment, operation, fetchPolicy, renderPolicy, updateCa
|
|
|
260
185
|
break;
|
|
261
186
|
}
|
|
262
187
|
}
|
|
263
|
-
|
|
264
188
|
if (shouldFetch) {
|
|
265
189
|
executeOperationAndKeepUpToDate(environment, operation, updateCache, customFetchObservable);
|
|
266
190
|
updateCache(function (existing) {
|
|
267
191
|
switch (existing.status) {
|
|
268
192
|
case 'resolved':
|
|
269
193
|
return existing;
|
|
270
|
-
|
|
271
194
|
case 'rejected':
|
|
272
195
|
return existing;
|
|
273
|
-
|
|
274
196
|
case 'pending':
|
|
275
197
|
return shouldRenderNow ? {
|
|
276
198
|
status: 'resolved',
|
|
@@ -288,16 +210,13 @@ function onCacheMiss(environment, operation, fetchPolicy, renderPolicy, updateCa
|
|
|
288
210
|
});
|
|
289
211
|
}
|
|
290
212
|
}
|
|
291
|
-
|
|
292
213
|
function executeOperationAndKeepUpToDate(environment, operation, updateCache, customFetchObservable) {
|
|
293
214
|
var resolvePromise;
|
|
294
215
|
var promise = new Promise(function (r) {
|
|
295
216
|
resolvePromise = r;
|
|
296
|
-
});
|
|
297
|
-
|
|
217
|
+
});
|
|
298
218
|
promise.displayName = 'Relay(' + operation.request.node.operation.name + ')';
|
|
299
|
-
var isFirstPayload = true;
|
|
300
|
-
|
|
219
|
+
var isFirstPayload = true;
|
|
301
220
|
var fetchObservable = customFetchObservable !== null && customFetchObservable !== void 0 ? customFetchObservable : fetchQueryInternal(environment, operation);
|
|
302
221
|
fetchObservable.subscribe({
|
|
303
222
|
start: function start(subscription) {},
|
|
@@ -310,16 +229,12 @@ function executeOperationAndKeepUpToDate(environment, operation, updateCache, cu
|
|
|
310
229
|
};
|
|
311
230
|
});
|
|
312
231
|
} else {
|
|
313
|
-
// TODO:T92030819 Remove this warning and actually throw the network error
|
|
314
|
-
// To complete this task we need to have a way of precisely tracking suspendable points
|
|
315
232
|
process.env.NODE_ENV !== "production" ? warning(false, 'getQueryResultOrFetchQuery: An incremental payload for query `%` returned an error: `%`:`%`.', operation.request.node.operation.name, _error.message, _error.stack) : void 0;
|
|
316
233
|
}
|
|
317
|
-
|
|
318
234
|
resolvePromise();
|
|
319
235
|
isFirstPayload = false;
|
|
320
236
|
},
|
|
321
237
|
next: function next(response) {
|
|
322
|
-
// Stop suspending on the first payload because of streaming, defer, etc.
|
|
323
238
|
updateCache(function (_existing) {
|
|
324
239
|
return {
|
|
325
240
|
status: 'resolved',
|
|
@@ -329,10 +244,7 @@ function executeOperationAndKeepUpToDate(environment, operation, updateCache, cu
|
|
|
329
244
|
resolvePromise();
|
|
330
245
|
isFirstPayload = false;
|
|
331
246
|
}
|
|
332
|
-
});
|
|
333
|
-
// above will have already happened and we'll now be in a resolved or rejected state.
|
|
334
|
-
// But in the usual case, we save the promise to the entry here:
|
|
335
|
-
|
|
247
|
+
});
|
|
336
248
|
updateCache(function (existing) {
|
|
337
249
|
return existing.status === 'pending' ? {
|
|
338
250
|
status: 'pending',
|
|
@@ -340,5 +252,4 @@ function executeOperationAndKeepUpToDate(environment, operation, updateCache, cu
|
|
|
340
252
|
} : existing;
|
|
341
253
|
});
|
|
342
254
|
}
|
|
343
|
-
|
|
344
255
|
module.exports = getQueryResultOrFetchQuery_REACT_CACHE;
|
|
@@ -1,36 +1,20 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* @emails oncall+relay
|
|
9
|
-
* @format
|
|
10
|
-
*/
|
|
11
1
|
'use strict';
|
|
12
2
|
|
|
13
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
|
14
|
-
|
|
15
4
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
16
|
-
|
|
17
5
|
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
|
|
18
|
-
|
|
19
6
|
var _require = require('../QueryResource'),
|
|
20
|
-
|
|
21
|
-
|
|
7
|
+
getQueryResourceForEnvironment = _require.getQueryResourceForEnvironment;
|
|
22
8
|
var invariant = require('invariant');
|
|
23
|
-
|
|
24
9
|
var _require2 = require('relay-runtime'),
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
10
|
+
fetchQueryInternal = _require2.__internal.fetchQuery,
|
|
11
|
+
RelayFeatureFlags = _require2.RelayFeatureFlags,
|
|
12
|
+
createOperationDescriptor = _require2.createOperationDescriptor,
|
|
13
|
+
getPendingOperationsForFragment = _require2.getPendingOperationsForFragment,
|
|
14
|
+
getSelector = _require2.getSelector,
|
|
15
|
+
getVariablesFromFragment = _require2.getVariablesFromFragment,
|
|
16
|
+
handlePotentialSnapshotErrors = _require2.handlePotentialSnapshotErrors;
|
|
32
17
|
var warning = require("fbjs/lib/warning");
|
|
33
|
-
|
|
34
18
|
function isMissingData(state) {
|
|
35
19
|
if (state.kind === 'bailout') {
|
|
36
20
|
return false;
|
|
@@ -42,32 +26,24 @@ function isMissingData(state) {
|
|
|
42
26
|
});
|
|
43
27
|
}
|
|
44
28
|
}
|
|
45
|
-
|
|
46
29
|
function getMissingClientEdges(state) {
|
|
47
30
|
if (state.kind === 'bailout') {
|
|
48
31
|
return null;
|
|
49
32
|
} else if (state.kind === 'singular') {
|
|
50
33
|
var _state$snapshot$missi;
|
|
51
|
-
|
|
52
34
|
return (_state$snapshot$missi = state.snapshot.missingClientEdges) !== null && _state$snapshot$missi !== void 0 ? _state$snapshot$missi : null;
|
|
53
35
|
} else {
|
|
54
36
|
var edges = null;
|
|
55
|
-
|
|
56
37
|
var _iterator = (0, _createForOfIteratorHelper2["default"])(state.snapshots),
|
|
57
|
-
|
|
58
|
-
|
|
38
|
+
_step;
|
|
59
39
|
try {
|
|
60
40
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
61
41
|
var snapshot = _step.value;
|
|
62
|
-
|
|
63
42
|
if (snapshot.missingClientEdges) {
|
|
64
43
|
var _edges;
|
|
65
|
-
|
|
66
44
|
edges = (_edges = edges) !== null && _edges !== void 0 ? _edges : [];
|
|
67
|
-
|
|
68
45
|
var _iterator2 = (0, _createForOfIteratorHelper2["default"])(snapshot.missingClientEdges),
|
|
69
|
-
|
|
70
|
-
|
|
46
|
+
_step2;
|
|
71
47
|
try {
|
|
72
48
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
73
49
|
var edge = _step2.value;
|
|
@@ -85,18 +61,15 @@ function getMissingClientEdges(state) {
|
|
|
85
61
|
} finally {
|
|
86
62
|
_iterator.f();
|
|
87
63
|
}
|
|
88
|
-
|
|
89
64
|
return edges;
|
|
90
65
|
}
|
|
91
66
|
}
|
|
92
|
-
|
|
93
67
|
function handlePotentialSnapshotErrorsForState(environment, state) {
|
|
94
68
|
if (state.kind === 'singular') {
|
|
95
69
|
handlePotentialSnapshotErrors(environment, state.snapshot.missingRequiredFields, state.snapshot.relayResolverErrors);
|
|
96
70
|
} else if (state.kind === 'plural') {
|
|
97
71
|
var _iterator3 = (0, _createForOfIteratorHelper2["default"])(state.snapshots),
|
|
98
|
-
|
|
99
|
-
|
|
72
|
+
_step3;
|
|
100
73
|
try {
|
|
101
74
|
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
102
75
|
var snapshot = _step3.value;
|
|
@@ -109,22 +82,15 @@ function handlePotentialSnapshotErrorsForState(environment, state) {
|
|
|
109
82
|
}
|
|
110
83
|
}
|
|
111
84
|
}
|
|
112
|
-
|
|
113
85
|
function handleMissingClientEdge(environment, parentFragmentNode, parentFragmentRef, missingClientEdgeRequestInfo, queryOptions) {
|
|
114
86
|
var originalVariables = getVariablesFromFragment(parentFragmentNode, parentFragmentRef);
|
|
115
87
|
var variables = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, originalVariables), {}, {
|
|
116
|
-
id: missingClientEdgeRequestInfo.clientEdgeDestinationID
|
|
117
|
-
|
|
88
|
+
id: missingClientEdgeRequestInfo.clientEdgeDestinationID
|
|
118
89
|
});
|
|
119
|
-
var queryOperationDescriptor = createOperationDescriptor(missingClientEdgeRequestInfo.request, variables, queryOptions === null || queryOptions === void 0 ? void 0 : queryOptions.networkCacheConfig);
|
|
120
|
-
// doing here is started the query if needed and retaining and releasing it
|
|
121
|
-
// according to the component mount/suspense cycle; QueryResource
|
|
122
|
-
// already handles this by itself.
|
|
123
|
-
|
|
90
|
+
var queryOperationDescriptor = createOperationDescriptor(missingClientEdgeRequestInfo.request, variables, queryOptions === null || queryOptions === void 0 ? void 0 : queryOptions.networkCacheConfig);
|
|
124
91
|
var QueryResource = getQueryResourceForEnvironment(environment);
|
|
125
92
|
return QueryResource.prepare(queryOperationDescriptor, fetchQueryInternal(environment, queryOperationDescriptor), queryOptions === null || queryOptions === void 0 ? void 0 : queryOptions.fetchPolicy);
|
|
126
93
|
}
|
|
127
|
-
|
|
128
94
|
function getFragmentState(environment, fragmentSelector) {
|
|
129
95
|
if (fragmentSelector == null) {
|
|
130
96
|
return {
|
|
@@ -151,36 +117,25 @@ function getFragmentState(environment, fragmentSelector) {
|
|
|
151
117
|
epoch: environment.getStore().getEpoch()
|
|
152
118
|
};
|
|
153
119
|
}
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
|
|
120
|
+
}
|
|
157
121
|
function readFragmentInternal_REACT_CACHE(environment, fragmentNode, fragmentRef, hookDisplayName, queryOptions, fragmentKey) {
|
|
158
122
|
var _fragmentNode$metadat, _fragmentNode$metadat2;
|
|
159
|
-
|
|
160
123
|
var fragmentSelector = getSelector(fragmentNode, fragmentRef);
|
|
161
124
|
var isPlural = (fragmentNode === null || fragmentNode === void 0 ? void 0 : (_fragmentNode$metadat = fragmentNode.metadata) === null || _fragmentNode$metadat === void 0 ? void 0 : _fragmentNode$metadat.plural) === true;
|
|
162
|
-
|
|
163
125
|
if (isPlural) {
|
|
164
126
|
!(fragmentRef == null || Array.isArray(fragmentRef)) ? process.env.NODE_ENV !== "production" ? invariant(false, 'Relay: Expected fragment pointer%s for fragment `%s` to be ' + 'an array, instead got `%s`. Remove `@relay(plural: true)` ' + 'from fragment `%s` to allow the prop to be an object.', fragmentKey != null ? " for key `".concat(fragmentKey, "`") : '', fragmentNode.name, typeof fragmentRef, fragmentNode.name) : invariant(false) : void 0;
|
|
165
127
|
} else {
|
|
166
128
|
!!Array.isArray(fragmentRef) ? process.env.NODE_ENV !== "production" ? invariant(false, 'Relay: Expected fragment pointer%s for fragment `%s` not to be ' + 'an array, instead got `%s`. Add `@relay(plural: true)` ' + 'to fragment `%s` to allow the prop to be an array.', fragmentKey != null ? " for key `".concat(fragmentKey, "`") : '', fragmentNode.name, typeof fragmentRef, fragmentNode.name) : invariant(false) : void 0;
|
|
167
129
|
}
|
|
168
|
-
|
|
169
130
|
!(fragmentRef == null || isPlural && Array.isArray(fragmentRef) && fragmentRef.length === 0 || fragmentSelector != null) ? process.env.NODE_ENV !== "production" ? invariant(false, 'Relay: Expected to receive an object where `...%s` was spread, ' + 'but the fragment reference was not found`. This is most ' + 'likely the result of:\n' + "- Forgetting to spread `%s` in `%s`'s parent's fragment.\n" + '- Conditionally fetching `%s` but unconditionally passing %s prop ' + 'to `%s`. If the parent fragment only fetches the fragment conditionally ' + '- with e.g. `@include`, `@skip`, or inside a `... on SomeType { }` ' + 'spread - then the fragment reference will not exist. ' + 'In this case, pass `null` if the conditions for evaluating the ' + 'fragment are not met (e.g. if the `@include(if)` value is false.)', fragmentNode.name, fragmentNode.name, hookDisplayName, fragmentNode.name, fragmentKey == null ? 'a fragment reference' : "the `".concat(fragmentKey, "`"), hookDisplayName) : invariant(false) : void 0;
|
|
170
|
-
var state = getFragmentState(environment, fragmentSelector);
|
|
171
|
-
// FIXME handle client edges in parallel.
|
|
172
|
-
|
|
131
|
+
var state = getFragmentState(environment, fragmentSelector);
|
|
173
132
|
var clientEdgeQueries = null;
|
|
174
|
-
|
|
175
133
|
if (((_fragmentNode$metadat2 = fragmentNode.metadata) === null || _fragmentNode$metadat2 === void 0 ? void 0 : _fragmentNode$metadat2.hasClientEdges) === true) {
|
|
176
134
|
var missingClientEdges = getMissingClientEdges(state);
|
|
177
|
-
|
|
178
135
|
if (missingClientEdges !== null && missingClientEdges !== void 0 && missingClientEdges.length) {
|
|
179
136
|
clientEdgeQueries = [];
|
|
180
|
-
|
|
181
137
|
var _iterator4 = (0, _createForOfIteratorHelper2["default"])(missingClientEdges),
|
|
182
|
-
|
|
183
|
-
|
|
138
|
+
_step4;
|
|
184
139
|
try {
|
|
185
140
|
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
186
141
|
var edge = _step4.value;
|
|
@@ -193,25 +148,16 @@ function readFragmentInternal_REACT_CACHE(environment, fragmentNode, fragmentRef
|
|
|
193
148
|
}
|
|
194
149
|
}
|
|
195
150
|
}
|
|
196
|
-
|
|
197
151
|
if (isMissingData(state)) {
|
|
198
|
-
// Suspend if an active operation bears on this fragment, either the
|
|
199
|
-
// fragment's owner or some other mutation etc. that could affect it:
|
|
200
152
|
!(fragmentSelector != null) ? process.env.NODE_ENV !== "production" ? invariant(false, 'refinement, see invariants above') : invariant(false) : void 0;
|
|
201
153
|
var fragmentOwner = fragmentSelector.kind === 'PluralReaderSelector' ? fragmentSelector.selectors[0].owner : fragmentSelector.owner;
|
|
202
154
|
var pendingOperationsResult = getPendingOperationsForFragment(environment, fragmentNode, fragmentOwner);
|
|
203
|
-
|
|
204
155
|
if (pendingOperationsResult) {
|
|
205
156
|
throw pendingOperationsResult.promise;
|
|
206
|
-
}
|
|
207
|
-
// they're missing even though we are out of options for possibly fetching them:
|
|
208
|
-
|
|
209
|
-
|
|
157
|
+
}
|
|
210
158
|
handlePotentialSnapshotErrorsForState(environment, state);
|
|
211
159
|
}
|
|
212
|
-
|
|
213
160
|
var data;
|
|
214
|
-
|
|
215
161
|
if (state.kind === 'bailout') {
|
|
216
162
|
data = isPlural ? [] : null;
|
|
217
163
|
} else if (state.kind === 'singular') {
|
|
@@ -221,19 +167,16 @@ function readFragmentInternal_REACT_CACHE(environment, fragmentNode, fragmentRef
|
|
|
221
167
|
return s.data;
|
|
222
168
|
});
|
|
223
169
|
}
|
|
224
|
-
|
|
225
|
-
if (process.env.NODE_ENV !== "production") {
|
|
170
|
+
if (RelayFeatureFlags.LOG_MISSING_RECORDS_IN_PROD || process.env.NODE_ENV !== "production") {
|
|
226
171
|
if (fragmentRef != null && (data === undefined || Array.isArray(data) && data.length > 0 && data.every(function (d) {
|
|
227
172
|
return d === undefined;
|
|
228
173
|
}))) {
|
|
229
174
|
process.env.NODE_ENV !== "production" ? warning(false, 'Relay: Expected to have been able to read non-null data for ' + 'fragment `%s` declared in ' + '`%s`, since fragment reference was non-null. ' + "Make sure that that `%s`'s parent isn't " + 'holding on to and/or passing a fragment reference for data that ' + 'has been deleted.', fragmentNode.name, hookDisplayName, hookDisplayName) : void 0;
|
|
230
175
|
}
|
|
231
176
|
}
|
|
232
|
-
|
|
233
177
|
return {
|
|
234
178
|
data: data,
|
|
235
179
|
clientEdgeQueries: clientEdgeQueries
|
|
236
180
|
};
|
|
237
181
|
}
|
|
238
|
-
|
|
239
182
|
module.exports = readFragmentInternal_REACT_CACHE;
|