react-relay 14.1.0 → 16.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (196) hide show
  1. package/ReactRelayContainerUtils.js.flow +1 -0
  2. package/ReactRelayContext.js +1 -1
  3. package/ReactRelayContext.js.flow +1 -0
  4. package/ReactRelayFragmentContainer.js.flow +6 -2
  5. package/ReactRelayFragmentMockRenderer.js.flow +1 -0
  6. package/ReactRelayLocalQueryRenderer.js.flow +5 -3
  7. package/ReactRelayPaginationContainer.js.flow +21 -12
  8. package/ReactRelayQueryFetcher.js.flow +20 -10
  9. package/ReactRelayQueryRenderer.js.flow +15 -11
  10. package/ReactRelayQueryRendererContext.js.flow +1 -0
  11. package/ReactRelayRefetchContainer.js.flow +9 -5
  12. package/ReactRelayTestMocker.js.flow +3 -1
  13. package/ReactRelayTypes.js.flow +2 -0
  14. package/RelayContext.js.flow +1 -0
  15. package/__flowtests__/ReactRelayFragmentContainer-flowtest.js.flow +2 -1
  16. package/__flowtests__/ReactRelayPaginationContainer-flowtest.js.flow +1 -0
  17. package/__flowtests__/ReactRelayRefetchContainer-flowtest.js.flow +1 -0
  18. package/__flowtests__/RelayModern-flowtest.js.flow +1 -0
  19. package/__flowtests__/RelayModernFlowtest_badref.graphql.js.flow +1 -0
  20. package/__flowtests__/RelayModernFlowtest_notref.graphql.js.flow +1 -0
  21. package/__flowtests__/RelayModernFlowtest_user.graphql.js.flow +1 -0
  22. package/__flowtests__/RelayModernFlowtest_users.graphql.js.flow +1 -0
  23. package/__flowtests__/__generated__/ReactRelayFragmentContainerFlowtest_viewer.graphql.js.flow +3 -1
  24. package/__flowtests__/__generated__/ReactRelayFragmentContainerFlowtest_viewer2.graphql.js.flow +3 -1
  25. package/__flowtests__/__generated__/ReactRelayPaginationContainerFlowtestQuery.graphql.js.flow +4 -2
  26. package/__flowtests__/__generated__/ReactRelayPaginationContainerFlowtest_viewer.graphql.js.flow +3 -1
  27. package/__flowtests__/__generated__/ReactRelayRefetchContainerFlowtestQuery.graphql.js.flow +4 -2
  28. package/__flowtests__/__generated__/ReactRelayRefetchContainerFlowtest_viewer.graphql.js.flow +3 -1
  29. package/__flowtests__/__generated__/RelayModernFlowtest_badref.graphql.js.flow +4 -2
  30. package/__flowtests__/__generated__/RelayModernFlowtest_notref.graphql.js.flow +4 -2
  31. package/__flowtests__/__generated__/RelayModernFlowtest_user.graphql.js.flow +3 -1
  32. package/__flowtests__/__generated__/RelayModernFlowtest_users.graphql.js.flow +3 -1
  33. package/assertFragmentMap.js.flow +1 -0
  34. package/buildReactRelayContainer.js.flow +10 -6
  35. package/getRootVariablesForFragments.js.flow +1 -1
  36. package/hooks.js +1 -1
  37. package/hooks.js.flow +4 -0
  38. package/index.js +1 -1
  39. package/index.js.flow +4 -0
  40. package/isRelayEnvironment.js.flow +1 -0
  41. package/jest-react/enqueueTask.js.flow +1 -1
  42. package/jest-react/index.js.flow +1 -1
  43. package/jest-react/internalAct.js.flow +1 -1
  44. package/legacy.js +1 -1
  45. package/legacy.js.flow +1 -0
  46. package/lib/ReactRelayContainerUtils.js +0 -11
  47. package/lib/ReactRelayContext.js +1 -12
  48. package/lib/ReactRelayFragmentContainer.js +23 -122
  49. package/lib/ReactRelayFragmentMockRenderer.js +0 -12
  50. package/lib/ReactRelayLocalQueryRenderer.js +12 -41
  51. package/lib/ReactRelayPaginationContainer.js +45 -341
  52. package/lib/ReactRelayQueryFetcher.js +36 -111
  53. package/lib/ReactRelayQueryRenderer.js +29 -137
  54. package/lib/ReactRelayQueryRendererContext.js +0 -10
  55. package/lib/ReactRelayRefetchContainer.js +33 -166
  56. package/lib/ReactRelayTestMocker.js +18 -128
  57. package/lib/ReactRelayTypes.js +0 -9
  58. package/lib/RelayContext.js +0 -23
  59. package/lib/assertFragmentMap.js +0 -16
  60. package/lib/buildReactRelayContainer.js +7 -41
  61. package/lib/getRootVariablesForFragments.js +2 -19
  62. package/lib/hooks.js +3 -30
  63. package/lib/index.js +3 -39
  64. package/lib/isRelayEnvironment.js +1 -16
  65. package/lib/jest-react/enqueueTask.js +1 -25
  66. package/lib/jest-react/index.js +0 -1
  67. package/lib/jest-react/internalAct.js +2 -51
  68. package/lib/legacy.js +0 -20
  69. package/lib/multi-actor/ActorChange.js +0 -14
  70. package/lib/multi-actor/index.js +0 -10
  71. package/lib/multi-actor/useRelayActorEnvironment.js +2 -16
  72. package/lib/relay-hooks/EntryPointContainer.react.js +7 -23
  73. package/lib/relay-hooks/EntryPointTypes.flow.js +0 -10
  74. package/lib/relay-hooks/FragmentResource.js +130 -280
  75. package/lib/relay-hooks/HooksImplementation.js +0 -14
  76. package/lib/relay-hooks/InternalLogger.js +0 -11
  77. package/lib/relay-hooks/LRUCache.js +0 -39
  78. package/lib/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js +27 -65
  79. package/lib/relay-hooks/MatchContainer.js +9 -111
  80. package/lib/relay-hooks/NestedRelayEntryPointBuilderUtils.js +9 -0
  81. package/lib/relay-hooks/ProfilerContext.js +0 -14
  82. package/lib/relay-hooks/QueryResource.js +14 -149
  83. package/lib/relay-hooks/RelayEnvironmentProvider.js +3 -17
  84. package/lib/relay-hooks/SuspenseResource.js +2 -59
  85. package/lib/relay-hooks/loadEntryPoint.js +10 -45
  86. package/lib/relay-hooks/loadQuery.js +29 -169
  87. package/lib/relay-hooks/preloadQuery_DEPRECATED.js +8 -58
  88. package/lib/relay-hooks/prepareEntryPoint_DEPRECATED.js +6 -24
  89. package/lib/relay-hooks/react-cache/RelayReactCache.js +4 -20
  90. package/lib/relay-hooks/react-cache/getQueryResultOrFetchQuery_REACT_CACHE.js +13 -102
  91. package/lib/relay-hooks/react-cache/readFragmentInternal_REACT_CACHE.js +18 -75
  92. package/lib/relay-hooks/react-cache/useFragmentInternal_REACT_CACHE.js +79 -222
  93. package/lib/relay-hooks/react-cache/useFragment_REACT_CACHE.js +3 -27
  94. package/lib/relay-hooks/react-cache/useLazyLoadQuery_REACT_CACHE.js +11 -33
  95. package/lib/relay-hooks/react-cache/usePaginationFragment_REACT_CACHE.js +62 -85
  96. package/lib/relay-hooks/react-cache/usePreloadedQuery_REACT_CACHE.js +20 -63
  97. package/lib/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js +53 -179
  98. package/lib/relay-hooks/react-cache/useRefetchableFragment_REACT_CACHE.js +5 -27
  99. package/lib/relay-hooks/useBlockingPaginationFragment.js +58 -121
  100. package/lib/relay-hooks/useClientQuery.js +0 -21
  101. package/lib/relay-hooks/useEntryPointLoader.js +12 -100
  102. package/lib/relay-hooks/useFetchTrackingRef.js +6 -33
  103. package/lib/relay-hooks/useFragment.js +5 -32
  104. package/lib/relay-hooks/useFragmentNode.js +14 -55
  105. package/lib/relay-hooks/useIsMountedRef.js +2 -14
  106. package/lib/relay-hooks/useIsOperationNodeActive.js +6 -29
  107. package/lib/relay-hooks/useIsParentQueryActive.js +1 -15
  108. package/lib/relay-hooks/useLazyLoadQuery.js +2 -23
  109. package/lib/relay-hooks/useLazyLoadQueryNode.js +18 -63
  110. package/lib/relay-hooks/useLoadMoreFunction.js +44 -100
  111. package/lib/relay-hooks/useMemoOperationDescriptor.js +4 -23
  112. package/lib/relay-hooks/useMemoVariables.js +8 -43
  113. package/lib/relay-hooks/useMutation.js +6 -34
  114. package/lib/relay-hooks/usePaginationFragment.js +49 -89
  115. package/lib/relay-hooks/usePreloadedQuery.js +10 -54
  116. package/lib/relay-hooks/useQueryLoader.js +18 -116
  117. package/lib/relay-hooks/useRefetchableFragment.js +4 -30
  118. package/lib/relay-hooks/useRefetchableFragmentNode.js +58 -184
  119. package/lib/relay-hooks/useRelayEnvironment.js +2 -16
  120. package/lib/relay-hooks/useStaticFragmentNodeWarning.js +2 -20
  121. package/lib/relay-hooks/useSubscribeToInvalidationState.js +3 -28
  122. package/lib/relay-hooks/useSubscription.js +3 -22
  123. package/lib/relay-hooks/useUnsafeRef_DEPRECATED.js +12 -0
  124. package/multi-actor/ActorChange.js.flow +1 -1
  125. package/multi-actor/index.js.flow +1 -1
  126. package/multi-actor/useRelayActorEnvironment.js.flow +2 -2
  127. package/package.json +2 -2
  128. package/react-relay-hooks.js +2 -2
  129. package/react-relay-hooks.min.js +2 -2
  130. package/react-relay-legacy.js +2 -2
  131. package/react-relay-legacy.min.js +2 -2
  132. package/react-relay.js +2 -2
  133. package/react-relay.min.js +2 -2
  134. package/relay-hooks/EntryPointContainer.react.js.flow +6 -1
  135. package/relay-hooks/EntryPointTypes.flow.js.flow +23 -20
  136. package/relay-hooks/FragmentResource.js.flow +148 -34
  137. package/relay-hooks/HooksImplementation.js.flow +1 -1
  138. package/relay-hooks/InternalLogger.js.flow +1 -1
  139. package/relay-hooks/LRUCache.js.flow +1 -1
  140. package/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js.flow +19 -10
  141. package/relay-hooks/MatchContainer.js.flow +1 -1
  142. package/relay-hooks/NestedRelayEntryPointBuilderUtils.js.flow +51 -0
  143. package/relay-hooks/ProfilerContext.js.flow +1 -1
  144. package/relay-hooks/QueryResource.js.flow +25 -5
  145. package/relay-hooks/RelayEnvironmentProvider.js.flow +2 -2
  146. package/relay-hooks/SuspenseResource.js.flow +1 -1
  147. package/relay-hooks/__flowtests__/EntryPointTypes/EntryPointElementConfig-flowtest.js.flow +3 -1
  148. package/relay-hooks/__flowtests__/EntryPointTypes/NestedEntrypoints-flowtest.js.flow +9 -7
  149. package/relay-hooks/__flowtests__/__generated__/useFragmentFlowtest_user.graphql.js.flow +3 -1
  150. package/relay-hooks/__flowtests__/__generated__/useFragmentFlowtest_users.graphql.js.flow +3 -1
  151. package/relay-hooks/__flowtests__/useBlockingPaginationFragment-flowtest.js.flow +40 -33
  152. package/relay-hooks/__flowtests__/useFragment-flowtest.js.flow +1 -1
  153. package/relay-hooks/__flowtests__/usePaginationFragment-flowtest.js.flow +38 -32
  154. package/relay-hooks/__flowtests__/useRefetchableFragment-flowtest.js.flow +20 -18
  155. package/relay-hooks/__flowtests__/utils.js.flow +13 -2
  156. package/relay-hooks/loadEntryPoint.js.flow +15 -8
  157. package/relay-hooks/loadQuery.js.flow +32 -8
  158. package/relay-hooks/preloadQuery_DEPRECATED.js.flow +5 -6
  159. package/relay-hooks/prepareEntryPoint_DEPRECATED.js.flow +17 -10
  160. package/relay-hooks/react-cache/RelayReactCache.js.flow +1 -1
  161. package/relay-hooks/react-cache/getQueryResultOrFetchQuery_REACT_CACHE.js.flow +4 -4
  162. package/relay-hooks/react-cache/readFragmentInternal_REACT_CACHE.js.flow +5 -4
  163. package/relay-hooks/react-cache/useFragmentInternal_REACT_CACHE.js.flow +32 -14
  164. package/relay-hooks/react-cache/useFragment_REACT_CACHE.js.flow +4 -10
  165. package/relay-hooks/react-cache/useLazyLoadQuery_REACT_CACHE.js.flow +1 -1
  166. package/relay-hooks/react-cache/usePaginationFragment_REACT_CACHE.js.flow +39 -49
  167. package/relay-hooks/react-cache/usePreloadedQuery_REACT_CACHE.js.flow +1 -2
  168. package/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js.flow +29 -16
  169. package/relay-hooks/react-cache/useRefetchableFragment_REACT_CACHE.js.flow +17 -33
  170. package/relay-hooks/useBlockingPaginationFragment.js.flow +85 -58
  171. package/relay-hooks/useClientQuery.js.flow +3 -3
  172. package/relay-hooks/useEntryPointLoader.js.flow +10 -6
  173. package/relay-hooks/useFetchTrackingRef.js.flow +5 -4
  174. package/relay-hooks/useFragment.js.flow +2 -2
  175. package/relay-hooks/useFragmentNode.js.flow +7 -6
  176. package/relay-hooks/useIsMountedRef.js.flow +1 -1
  177. package/relay-hooks/useIsOperationNodeActive.js.flow +1 -1
  178. package/relay-hooks/useIsParentQueryActive.js.flow +1 -1
  179. package/relay-hooks/useLazyLoadQuery.js.flow +2 -2
  180. package/relay-hooks/useLazyLoadQueryNode.js.flow +2 -2
  181. package/relay-hooks/useLoadMoreFunction.js.flow +27 -16
  182. package/relay-hooks/useMemoOperationDescriptor.js.flow +3 -3
  183. package/relay-hooks/useMemoVariables.js.flow +13 -29
  184. package/relay-hooks/useMutation.js.flow +30 -13
  185. package/relay-hooks/usePaginationFragment.js.flow +55 -54
  186. package/relay-hooks/usePreloadedQuery.js.flow +47 -22
  187. package/relay-hooks/useQueryLoader.js.flow +78 -21
  188. package/relay-hooks/useRefetchableFragment.js.flow +65 -33
  189. package/relay-hooks/useRefetchableFragmentNode.js.flow +38 -17
  190. package/relay-hooks/useRelayEnvironment.js.flow +2 -2
  191. package/relay-hooks/useStaticFragmentNodeWarning.js.flow +3 -3
  192. package/relay-hooks/useSubscribeToInvalidationState.js.flow +2 -2
  193. package/relay-hooks/useSubscription.js.flow +1 -1
  194. package/relay-hooks/useUnsafeRef_DEPRECATED.js.flow +25 -0
  195. package/lib/readContext.js +0 -27
  196. package/readContext.js.flow +0 -29
@@ -1,88 +1,39 @@
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
- * @format
9
- */
10
1
  'use strict';
11
2
 
12
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
13
-
14
4
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
15
-
16
5
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
17
-
18
6
  var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
19
-
20
7
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
21
-
22
8
  var ReactRelayContext = require('./ReactRelayContext');
23
-
24
9
  var ReactRelayQueryFetcher = require('./ReactRelayQueryFetcher');
25
-
26
10
  var ReactRelayQueryRendererContext = require('./ReactRelayQueryRendererContext');
27
-
28
11
  var areEqual = require("fbjs/lib/areEqual");
29
-
30
12
  var React = require('react');
31
-
32
13
  var _require = require('relay-runtime'),
33
- createOperationDescriptor = _require.createOperationDescriptor,
34
- deepFreeze = _require.deepFreeze,
35
- getRequest = _require.getRequest;
36
-
37
- /**
38
- * React may double-fire the constructor, and we call 'fetch' in the
39
- * constructor. If a request is already in flight from a previous call to the
40
- * constructor, just reuse the query fetcher and wait for the response.
41
- */
14
+ createOperationDescriptor = _require.createOperationDescriptor,
15
+ deepFreeze = _require.deepFreeze,
16
+ getRequest = _require.getRequest;
42
17
  var requestCache = {};
43
18
  var queryRendererContext = {
44
19
  rootIsQueryRenderer: true
45
20
  };
46
-
47
- /**
48
- * @public
49
- *
50
- * Orchestrates fetching and rendering data for a single view or view hierarchy:
51
- * - Fetches the query/variables using the given network implementation.
52
- * - Normalizes the response(s) to that query, publishing them to the given
53
- * store.
54
- * - Renders the pending/fail/success states with the provided render function.
55
- * - Subscribes for updates to the root data and re-renders with any changes.
56
- */
57
21
  var ReactRelayQueryRenderer = /*#__PURE__*/function (_React$Component) {
58
22
  (0, _inheritsLoose2["default"])(ReactRelayQueryRenderer, _React$Component);
59
-
60
23
  function ReactRelayQueryRenderer(props) {
61
24
  var _this;
62
-
63
- _this = _React$Component.call(this, props) || this; // Callbacks are attached to the current instance and shared with static
64
- // lifecyles by bundling with state. This is okay to do because the
65
- // callbacks don't change in reaction to props. However we should not
66
- // "leak" them before mounting (since we would be unable to clean up). For
67
- // that reason, we define them as null initially and fill them in after
68
- // mounting to avoid leaking memory.
69
-
25
+ _this = _React$Component.call(this, props) || this;
70
26
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_handleDataChange", function (params) {
71
27
  var error = params.error == null ? null : params.error;
72
28
  var snapshot = params.snapshot == null ? null : params.snapshot;
73
-
74
29
  _this.setState(function (prevState) {
75
30
  var prevRequestCacheKey = prevState.requestCacheKey;
76
-
77
31
  if (prevRequestCacheKey) {
78
32
  delete requestCache[prevRequestCacheKey];
79
- } // Don't update state if nothing has changed.
80
-
81
-
33
+ }
82
34
  if (snapshot === prevState.snapshot && error === prevState.error) {
83
35
  return null;
84
36
  }
85
-
86
37
  return {
87
38
  renderProps: getRenderProps(error, snapshot, prevState.queryFetcher, prevState.retryCallbacks),
88
39
  snapshot: snapshot,
@@ -96,7 +47,6 @@ var ReactRelayQueryRenderer = /*#__PURE__*/function (_React$Component) {
96
47
  };
97
48
  var queryFetcher;
98
49
  var requestCacheKey;
99
-
100
50
  if (props.query) {
101
51
  var query = props.query;
102
52
  var request = getRequest(query);
@@ -105,7 +55,6 @@ var ReactRelayQueryRenderer = /*#__PURE__*/function (_React$Component) {
105
55
  } else {
106
56
  queryFetcher = new ReactRelayQueryFetcher();
107
57
  }
108
-
109
58
  _this._maybeHiddenOrFastRefresh = false;
110
59
  _this.state = (0, _objectSpread2["default"])({
111
60
  prevPropsEnvironment: props.environment,
@@ -116,166 +65,127 @@ var ReactRelayQueryRenderer = /*#__PURE__*/function (_React$Component) {
116
65
  }, fetchQueryAndComputeStateFromProps(props, queryFetcher, retryCallbacks, requestCacheKey));
117
66
  return _this;
118
67
  }
119
-
120
68
  ReactRelayQueryRenderer.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {
121
69
  if (prevState.prevQuery !== nextProps.query || prevState.prevPropsEnvironment !== nextProps.environment || !areEqual(prevState.prevPropsVariables, nextProps.variables)) {
122
70
  return resetQueryStateForUpdate(nextProps, prevState);
123
71
  }
124
-
125
72
  return null;
126
73
  };
127
-
128
74
  var _proto = ReactRelayQueryRenderer.prototype;
129
-
130
75
  _proto.componentDidMount = function componentDidMount() {
131
76
  var _this2 = this;
132
-
133
77
  if (this._maybeHiddenOrFastRefresh === true) {
134
- // This block only runs if the component has previously "unmounted"
135
- // due to it being hidden by the Offscreen API, or during fast refresh.
136
- // At this point, the current cached resource will have been disposed
137
- // by the previous cleanup, so instead of attempting to
138
- // do our regular commit setup, so that the query is re-evaluated
139
- // (and potentially cause a refetch).
140
- this._maybeHiddenOrFastRefresh = false; // eslint-disable-next-line react/no-did-mount-set-state
141
-
78
+ this._maybeHiddenOrFastRefresh = false;
142
79
  this.setState(function (prevState) {
143
- return resetQueryStateForUpdate(_this2.props, prevState);
80
+ var newState = resetQueryStateForUpdate(_this2.props, prevState);
81
+ var requestCacheKey = newState.requestCacheKey,
82
+ queryFetcher = newState.queryFetcher;
83
+ if (requestCacheKey != null && requestCache[requestCacheKey] != null) {
84
+ queryFetcher.setOnDataChange(_this2._handleDataChange);
85
+ }
86
+ return newState;
144
87
  });
145
88
  return;
146
89
  }
147
-
148
90
  var _this$state = this.state,
149
- retryCallbacks = _this$state.retryCallbacks,
150
- queryFetcher = _this$state.queryFetcher,
151
- requestCacheKey = _this$state.requestCacheKey; // We don't need to cache the request after the component commits
152
-
91
+ retryCallbacks = _this$state.retryCallbacks,
92
+ queryFetcher = _this$state.queryFetcher,
93
+ requestCacheKey = _this$state.requestCacheKey;
153
94
  if (requestCacheKey) {
154
95
  delete requestCache[requestCacheKey];
155
96
  }
156
-
157
97
  retryCallbacks.handleDataChange = this._handleDataChange;
158
-
159
98
  retryCallbacks.handleRetryAfterError = function (error) {
160
99
  return _this2.setState(function (prevState) {
161
100
  var prevRequestCacheKey = prevState.requestCacheKey;
162
-
163
101
  if (prevRequestCacheKey) {
164
102
  delete requestCache[prevRequestCacheKey];
165
103
  }
166
-
167
104
  return {
168
105
  renderProps: getLoadingRenderProps(),
169
106
  requestCacheKey: null
170
107
  };
171
108
  });
172
- }; // Re-initialize the ReactRelayQueryFetcher with callbacks.
173
- // If data has changed since constructions, this will re-render.
174
-
175
-
109
+ };
176
110
  if (this.props.query) {
177
111
  queryFetcher.setOnDataChange(this._handleDataChange);
178
112
  }
179
113
  };
180
-
181
114
  _proto.componentDidUpdate = function componentDidUpdate(_prevProps, prevState) {
182
- // We don't need to cache the request after the component commits
183
115
  var _this$state2 = this.state,
184
- queryFetcher = _this$state2.queryFetcher,
185
- requestCacheKey = _this$state2.requestCacheKey;
186
-
116
+ queryFetcher = _this$state2.queryFetcher,
117
+ requestCacheKey = _this$state2.requestCacheKey;
187
118
  if (requestCacheKey) {
188
- delete requestCache[requestCacheKey]; // HACK
189
-
119
+ delete requestCache[requestCacheKey];
190
120
  delete this.state.requestCacheKey;
191
121
  }
192
-
193
122
  if (this.props.query && queryFetcher !== prevState.queryFetcher) {
194
123
  queryFetcher.setOnDataChange(this._handleDataChange);
195
124
  }
196
125
  };
197
-
198
126
  _proto.componentWillUnmount = function componentWillUnmount() {
199
127
  this.state.queryFetcher.dispose();
200
128
  this._maybeHiddenOrFastRefresh = true;
201
129
  };
202
-
203
130
  _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps, nextState) {
204
131
  return nextProps.render !== this.props.render || nextState.renderProps !== this.state.renderProps;
205
132
  };
206
-
207
133
  _proto.render = function render() {
208
134
  var _this$state3 = this.state,
209
- renderProps = _this$state3.renderProps,
210
- relayContext = _this$state3.relayContext; // Note that the root fragment results in `renderProps.props` is already
211
- // frozen by the store; this call is to freeze the renderProps object and
212
- // error property if set.
213
-
135
+ renderProps = _this$state3.renderProps,
136
+ relayContext = _this$state3.relayContext;
214
137
  if (process.env.NODE_ENV !== "production") {
215
138
  deepFreeze(renderProps);
216
139
  }
217
-
218
140
  return /*#__PURE__*/React.createElement(ReactRelayContext.Provider, {
219
141
  value: relayContext
220
142
  }, /*#__PURE__*/React.createElement(ReactRelayQueryRendererContext.Provider, {
221
143
  value: queryRendererContext
222
144
  }, this.props.render(renderProps)));
223
145
  };
224
-
225
146
  return ReactRelayQueryRenderer;
226
147
  }(React.Component);
227
-
228
148
  function getLoadingRenderProps() {
229
149
  return {
230
150
  error: null,
231
151
  props: null,
232
- // `props: null` indicates that the data is being fetched (i.e. loading)
233
152
  retry: null
234
153
  };
235
154
  }
236
-
237
155
  function getEmptyRenderProps() {
238
156
  return {
239
157
  error: null,
240
158
  props: {},
241
- // `props: {}` indicates no data available
242
159
  retry: null
243
160
  };
244
161
  }
245
-
246
162
  function getRenderProps(error, snapshot, queryFetcher, retryCallbacks) {
247
163
  return {
248
164
  error: error ? error : null,
249
165
  props: snapshot ? snapshot.data : null,
250
166
  retry: function retry(cacheConfigOverride) {
251
167
  var syncSnapshot = queryFetcher.retry(cacheConfigOverride);
252
-
253
168
  if (syncSnapshot && typeof retryCallbacks.handleDataChange === 'function') {
254
169
  retryCallbacks.handleDataChange({
255
170
  snapshot: syncSnapshot
256
171
  });
257
172
  } else if (error && typeof retryCallbacks.handleRetryAfterError === 'function') {
258
- // If retrying after an error and no synchronous result available,
259
- // reset the render props
260
173
  retryCallbacks.handleRetryAfterError(error);
261
174
  }
262
175
  }
263
176
  };
264
177
  }
265
-
266
178
  function getRequestCacheKey(request, variables) {
267
179
  return JSON.stringify({
268
180
  id: request.cacheID ? request.cacheID : request.id,
269
181
  variables: variables
270
182
  });
271
183
  }
272
-
273
184
  function resetQueryStateForUpdate(props, prevState) {
274
185
  var query = props.query;
275
186
  var prevSelectionReferences = prevState.queryFetcher.getSelectionReferences();
276
187
  prevState.queryFetcher.disposeRequest();
277
188
  var queryFetcher;
278
-
279
189
  if (query) {
280
190
  var request = getRequest(query);
281
191
  var requestCacheKey = getRequestCacheKey(request.params, props.variables);
@@ -283,37 +193,28 @@ function resetQueryStateForUpdate(props, prevState) {
283
193
  } else {
284
194
  queryFetcher = new ReactRelayQueryFetcher(prevSelectionReferences);
285
195
  }
286
-
287
196
  return (0, _objectSpread2["default"])({
288
197
  prevQuery: props.query,
289
198
  prevPropsEnvironment: props.environment,
290
199
  prevPropsVariables: props.variables,
291
200
  queryFetcher: queryFetcher
292
- }, fetchQueryAndComputeStateFromProps(props, queryFetcher, prevState.retryCallbacks // passing no requestCacheKey will cause it to be recalculated internally
293
- // and we want the updated requestCacheKey, since variables may have changed
294
- ));
201
+ }, fetchQueryAndComputeStateFromProps(props, queryFetcher, prevState.retryCallbacks));
295
202
  }
296
-
297
203
  function fetchQueryAndComputeStateFromProps(props, queryFetcher, retryCallbacks, requestCacheKey) {
298
204
  var environment = props.environment,
299
- query = props.query,
300
- variables = props.variables,
301
- cacheConfig = props.cacheConfig;
205
+ query = props.query,
206
+ variables = props.variables,
207
+ cacheConfig = props.cacheConfig;
302
208
  var genericEnvironment = environment;
303
-
304
209
  if (query) {
305
210
  var request = getRequest(query);
306
211
  var operation = createOperationDescriptor(request, variables, cacheConfig);
307
212
  var relayContext = {
308
213
  environment: genericEnvironment
309
214
  };
310
-
311
215
  if (typeof requestCacheKey === 'string' && requestCache[requestCacheKey]) {
312
- // This same request is already in flight.
313
216
  var snapshot = requestCache[requestCacheKey].snapshot;
314
-
315
217
  if (snapshot) {
316
- // Use the cached response
317
218
  return {
318
219
  error: null,
319
220
  relayContext: relayContext,
@@ -322,7 +223,6 @@ function fetchQueryAndComputeStateFromProps(props, queryFetcher, retryCallbacks,
322
223
  requestCacheKey: requestCacheKey
323
224
  };
324
225
  } else {
325
- // Render loading state
326
226
  return {
327
227
  error: null,
328
228
  relayContext: relayContext,
@@ -332,24 +232,19 @@ function fetchQueryAndComputeStateFromProps(props, queryFetcher, retryCallbacks,
332
232
  };
333
233
  }
334
234
  }
335
-
336
235
  try {
337
236
  var storeSnapshot = queryFetcher.lookupInStore(genericEnvironment, operation, props.fetchPolicy);
338
237
  var querySnapshot = queryFetcher.fetch({
339
238
  environment: genericEnvironment,
340
239
  onDataChange: null,
341
240
  operation: operation
342
- }); // Use network data first, since it may be fresher
343
-
344
- var _snapshot = querySnapshot || storeSnapshot; // cache the request to avoid duplicate requests
345
-
346
-
241
+ });
242
+ var _snapshot = querySnapshot || storeSnapshot;
347
243
  requestCacheKey = requestCacheKey || getRequestCacheKey(request.params, props.variables);
348
244
  requestCache[requestCacheKey] = {
349
245
  queryFetcher: queryFetcher,
350
246
  snapshot: _snapshot
351
247
  };
352
-
353
248
  if (!_snapshot) {
354
249
  return {
355
250
  error: null,
@@ -359,7 +254,6 @@ function fetchQueryAndComputeStateFromProps(props, queryFetcher, retryCallbacks,
359
254
  requestCacheKey: requestCacheKey
360
255
  };
361
256
  }
362
-
363
257
  return {
364
258
  error: null,
365
259
  relayContext: relayContext,
@@ -385,10 +279,8 @@ function fetchQueryAndComputeStateFromProps(props, queryFetcher, retryCallbacks,
385
279
  error: null,
386
280
  relayContext: _relayContext,
387
281
  renderProps: getEmptyRenderProps(),
388
- requestCacheKey: null // if there is an error, don't cache request
389
-
282
+ requestCacheKey: null
390
283
  };
391
284
  }
392
285
  }
393
-
394
286
  module.exports = ReactRelayQueryRenderer;
@@ -1,16 +1,6 @@
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
- * @format
9
- */
10
1
  'use strict';
11
2
 
12
3
  var React = require('react');
13
-
14
4
  module.exports = React.createContext({
15
5
  rootIsQueryRenderer: false
16
6
  });