react-relay 14.0.0 → 15.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.
Files changed (194) hide show
  1. package/ReactRelayContainerUtils.js.flow +1 -2
  2. package/ReactRelayContext.js +1 -1
  3. package/ReactRelayContext.js.flow +1 -2
  4. package/ReactRelayFragmentContainer.js.flow +6 -4
  5. package/ReactRelayFragmentMockRenderer.js.flow +1 -2
  6. package/ReactRelayLocalQueryRenderer.js.flow +5 -5
  7. package/ReactRelayPaginationContainer.js.flow +21 -14
  8. package/ReactRelayQueryFetcher.js.flow +28 -16
  9. package/ReactRelayQueryRenderer.js.flow +42 -13
  10. package/ReactRelayQueryRendererContext.js.flow +2 -3
  11. package/ReactRelayRefetchContainer.js.flow +9 -9
  12. package/ReactRelayTestMocker.js.flow +3 -3
  13. package/ReactRelayTypes.js.flow +7 -8
  14. package/RelayContext.js.flow +1 -2
  15. package/__flowtests__/ReactRelayFragmentContainer-flowtest.js.flow +4 -5
  16. package/__flowtests__/ReactRelayPaginationContainer-flowtest.js.flow +4 -5
  17. package/__flowtests__/ReactRelayRefetchContainer-flowtest.js.flow +4 -5
  18. package/__flowtests__/RelayModern-flowtest.js.flow +3 -4
  19. package/__flowtests__/RelayModernFlowtest_badref.graphql.js.flow +3 -4
  20. package/__flowtests__/RelayModernFlowtest_notref.graphql.js.flow +3 -4
  21. package/__flowtests__/RelayModernFlowtest_user.graphql.js.flow +3 -4
  22. package/__flowtests__/RelayModernFlowtest_users.graphql.js.flow +3 -4
  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 -2
  34. package/buildReactRelayContainer.js.flow +7 -7
  35. package/getRootVariablesForFragments.js.flow +1 -3
  36. package/hooks.js +1 -1
  37. package/hooks.js.flow +4 -2
  38. package/index.js +1 -1
  39. package/index.js.flow +6 -2
  40. package/isRelayEnvironment.js.flow +1 -2
  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 -2
  46. package/lib/ReactRelayContainerUtils.js +2 -3
  47. package/lib/ReactRelayContext.js +3 -4
  48. package/lib/ReactRelayFragmentContainer.js +47 -73
  49. package/lib/ReactRelayFragmentMockRenderer.js +2 -4
  50. package/lib/ReactRelayLocalQueryRenderer.js +18 -31
  51. package/lib/ReactRelayPaginationContainer.js +74 -164
  52. package/lib/ReactRelayQueryFetcher.js +49 -76
  53. package/lib/ReactRelayQueryRenderer.js +63 -84
  54. package/lib/ReactRelayQueryRendererContext.js +2 -2
  55. package/lib/ReactRelayRefetchContainer.js +58 -108
  56. package/lib/ReactRelayTestMocker.js +33 -68
  57. package/lib/ReactRelayTypes.js +2 -1
  58. package/lib/RelayContext.js +4 -7
  59. package/lib/assertFragmentMap.js +3 -5
  60. package/lib/buildReactRelayContainer.js +11 -27
  61. package/lib/getRootVariablesForFragments.js +6 -10
  62. package/lib/hooks.js +5 -18
  63. package/lib/index.js +7 -24
  64. package/lib/isRelayEnvironment.js +5 -4
  65. package/lib/jest-react/enqueueTask.js +5 -9
  66. package/lib/jest-react/index.js +0 -1
  67. package/lib/jest-react/internalAct.js +9 -20
  68. package/lib/legacy.js +2 -8
  69. package/lib/multi-actor/ActorChange.js +2 -5
  70. package/lib/multi-actor/index.js +2 -1
  71. package/lib/multi-actor/useRelayActorEnvironment.js +4 -8
  72. package/lib/relay-hooks/EntryPointContainer.react.js +9 -15
  73. package/lib/relay-hooks/EntryPointTypes.flow.js +5 -3
  74. package/lib/relay-hooks/FragmentResource.js +109 -203
  75. package/lib/relay-hooks/HooksImplementation.js +3 -6
  76. package/lib/relay-hooks/InternalLogger.js +2 -3
  77. package/lib/relay-hooks/LRUCache.js +2 -20
  78. package/lib/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js +33 -54
  79. package/lib/relay-hooks/MatchContainer.js +15 -24
  80. package/lib/relay-hooks/ProfilerContext.js +3 -3
  81. package/lib/relay-hooks/QueryResource.js +31 -101
  82. package/lib/relay-hooks/RelayEnvironmentProvider.js +5 -9
  83. package/lib/relay-hooks/SuspenseResource.js +9 -33
  84. package/lib/relay-hooks/loadEntryPoint.js +19 -31
  85. package/lib/relay-hooks/loadQuery.js +42 -78
  86. package/lib/relay-hooks/preloadQuery_DEPRECATED.js +11 -37
  87. package/lib/relay-hooks/prepareEntryPoint_DEPRECATED.js +9 -15
  88. package/lib/relay-hooks/react-cache/RelayReactCache.js +7 -12
  89. package/lib/relay-hooks/react-cache/getQueryResultOrFetchQuery_REACT_CACHE.js +27 -81
  90. package/lib/relay-hooks/react-cache/readFragmentInternal_REACT_CACHE.js +206 -0
  91. package/lib/relay-hooks/react-cache/useFragmentInternal_REACT_CACHE.js +195 -215
  92. package/lib/relay-hooks/react-cache/useFragment_REACT_CACHE.js +5 -15
  93. package/lib/relay-hooks/react-cache/useLazyLoadQuery_REACT_CACHE.js +17 -24
  94. package/lib/relay-hooks/react-cache/usePaginationFragment_REACT_CACHE.js +149 -0
  95. package/lib/relay-hooks/react-cache/usePreloadedQuery_REACT_CACHE.js +24 -39
  96. package/lib/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js +325 -0
  97. package/lib/relay-hooks/react-cache/useRefetchableFragment_REACT_CACHE.js +37 -0
  98. package/lib/relay-hooks/useBlockingPaginationFragment.js +73 -93
  99. package/lib/relay-hooks/useClientQuery.js +30 -0
  100. package/lib/relay-hooks/useEntryPointLoader.js +18 -38
  101. package/lib/relay-hooks/useFetchTrackingRef.js +10 -12
  102. package/lib/relay-hooks/useFragment.js +8 -19
  103. package/lib/relay-hooks/useFragmentNode.js +20 -32
  104. package/lib/relay-hooks/useIsMountedRef.js +4 -6
  105. package/lib/relay-hooks/useIsOperationNodeActive.js +8 -20
  106. package/lib/relay-hooks/useIsParentQueryActive.js +3 -6
  107. package/lib/relay-hooks/useLazyLoadQuery.js +7 -24
  108. package/lib/relay-hooks/useLazyLoadQueryNode.js +23 -34
  109. package/lib/relay-hooks/useLoadMoreFunction.js +46 -78
  110. package/lib/relay-hooks/useMemoOperationDescriptor.js +6 -15
  111. package/lib/relay-hooks/useMemoVariables.js +15 -34
  112. package/lib/relay-hooks/useMutation.js +9 -27
  113. package/lib/relay-hooks/usePaginationFragment.js +73 -76
  114. package/lib/relay-hooks/usePreloadedQuery.js +13 -44
  115. package/lib/relay-hooks/useQueryLoader.js +24 -49
  116. package/lib/relay-hooks/useRefetchableFragment.js +19 -17
  117. package/lib/relay-hooks/useRefetchableFragmentNode.js +65 -109
  118. package/lib/relay-hooks/useRelayEnvironment.js +4 -8
  119. package/lib/relay-hooks/useStaticFragmentNodeWarning.js +4 -8
  120. package/lib/relay-hooks/useSubscribeToInvalidationState.js +8 -9
  121. package/lib/relay-hooks/useSubscription.js +5 -10
  122. package/lib/relay-hooks/useUnsafeRef_DEPRECATED.js +29 -0
  123. package/multi-actor/ActorChange.js.flow +1 -1
  124. package/multi-actor/index.js.flow +1 -1
  125. package/multi-actor/useRelayActorEnvironment.js.flow +2 -4
  126. package/package.json +2 -2
  127. package/react-relay-hooks.js +2 -2
  128. package/react-relay-hooks.min.js +2 -2
  129. package/react-relay-legacy.js +2 -2
  130. package/react-relay-legacy.min.js +2 -2
  131. package/react-relay.js +2 -2
  132. package/react-relay.min.js +2 -2
  133. package/relay-hooks/EntryPointContainer.react.js.flow +3 -5
  134. package/relay-hooks/EntryPointTypes.flow.js.flow +37 -37
  135. package/relay-hooks/FragmentResource.js.flow +43 -19
  136. package/relay-hooks/HooksImplementation.js.flow +7 -9
  137. package/relay-hooks/InternalLogger.js.flow +1 -3
  138. package/relay-hooks/LRUCache.js.flow +1 -3
  139. package/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js.flow +19 -14
  140. package/relay-hooks/MatchContainer.js.flow +6 -8
  141. package/relay-hooks/ProfilerContext.js.flow +1 -3
  142. package/relay-hooks/QueryResource.js.flow +29 -11
  143. package/relay-hooks/RelayEnvironmentProvider.js.flow +4 -6
  144. package/relay-hooks/SuspenseResource.js.flow +1 -3
  145. package/relay-hooks/__flowtests__/EntryPointTypes/EntryPointElementConfig-flowtest.js.flow +6 -4
  146. package/relay-hooks/__flowtests__/EntryPointTypes/NestedEntrypoints-flowtest.js.flow +4 -4
  147. package/relay-hooks/__flowtests__/__generated__/useFragmentFlowtest_user.graphql.js.flow +3 -1
  148. package/relay-hooks/__flowtests__/__generated__/useFragmentFlowtest_users.graphql.js.flow +3 -1
  149. package/relay-hooks/__flowtests__/useBlockingPaginationFragment-flowtest.js.flow +39 -39
  150. package/relay-hooks/__flowtests__/useFragment-flowtest.js.flow +1 -3
  151. package/relay-hooks/__flowtests__/usePaginationFragment-flowtest.js.flow +37 -38
  152. package/relay-hooks/__flowtests__/useRefetchableFragment-flowtest.js.flow +18 -20
  153. package/relay-hooks/__flowtests__/utils.js.flow +21 -12
  154. package/relay-hooks/loadEntryPoint.js.flow +11 -6
  155. package/relay-hooks/loadQuery.js.flow +11 -7
  156. package/relay-hooks/preloadQuery_DEPRECATED.js.flow +9 -12
  157. package/relay-hooks/prepareEntryPoint_DEPRECATED.js.flow +13 -10
  158. package/relay-hooks/react-cache/RelayReactCache.js.flow +1 -3
  159. package/relay-hooks/react-cache/getQueryResultOrFetchQuery_REACT_CACHE.js.flow +26 -20
  160. package/relay-hooks/react-cache/readFragmentInternal_REACT_CACHE.js.flow +297 -0
  161. package/relay-hooks/react-cache/useFragmentInternal_REACT_CACHE.js.flow +136 -96
  162. package/relay-hooks/react-cache/useFragment_REACT_CACHE.js.flow +1 -3
  163. package/relay-hooks/react-cache/useLazyLoadQuery_REACT_CACHE.js.flow +3 -5
  164. package/relay-hooks/react-cache/usePaginationFragment_REACT_CACHE.js.flow +190 -0
  165. package/relay-hooks/react-cache/usePreloadedQuery_REACT_CACHE.js.flow +3 -6
  166. package/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js.flow +601 -0
  167. package/relay-hooks/react-cache/useRefetchableFragment_REACT_CACHE.js.flow +65 -0
  168. package/relay-hooks/useBlockingPaginationFragment.js.flow +86 -59
  169. package/relay-hooks/useClientQuery.js.flow +39 -0
  170. package/relay-hooks/useEntryPointLoader.js.flow +16 -14
  171. package/relay-hooks/useFetchTrackingRef.js.flow +7 -8
  172. package/relay-hooks/useFragment.js.flow +2 -4
  173. package/relay-hooks/useFragmentNode.js.flow +7 -8
  174. package/relay-hooks/useIsMountedRef.js.flow +2 -4
  175. package/relay-hooks/useIsOperationNodeActive.js.flow +1 -1
  176. package/relay-hooks/useIsParentQueryActive.js.flow +1 -1
  177. package/relay-hooks/useLazyLoadQuery.js.flow +9 -32
  178. package/relay-hooks/useLazyLoadQueryNode.js.flow +4 -6
  179. package/relay-hooks/useLoadMoreFunction.js.flow +20 -17
  180. package/relay-hooks/useMemoOperationDescriptor.js.flow +3 -5
  181. package/relay-hooks/useMemoVariables.js.flow +13 -31
  182. package/relay-hooks/useMutation.js.flow +6 -8
  183. package/relay-hooks/usePaginationFragment.js.flow +75 -43
  184. package/relay-hooks/usePreloadedQuery.js.flow +49 -43
  185. package/relay-hooks/useQueryLoader.js.flow +89 -28
  186. package/relay-hooks/useRefetchableFragment.js.flow +83 -23
  187. package/relay-hooks/useRefetchableFragmentNode.js.flow +26 -22
  188. package/relay-hooks/useRelayEnvironment.js.flow +2 -4
  189. package/relay-hooks/useStaticFragmentNodeWarning.js.flow +3 -5
  190. package/relay-hooks/useSubscribeToInvalidationState.js.flow +2 -4
  191. package/relay-hooks/useSubscription.js.flow +1 -3
  192. package/relay-hooks/useUnsafeRef_DEPRECATED.js.flow +25 -0
  193. package/lib/readContext.js +0 -28
  194. package/readContext.js.flow +0 -31
@@ -6,60 +6,49 @@
6
6
  *
7
7
  *
8
8
  * @format
9
+ * @oncall relay
9
10
  */
10
- // flowlint ambiguous-object-type:error
11
- 'use strict';
12
11
 
13
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
12
+ 'use strict';
14
13
 
14
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
15
15
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
16
-
17
16
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
18
-
19
17
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
20
-
21
18
  var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
22
-
23
19
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
24
-
20
+ var _excluded = ["componentRef", "__relayContext", "__rootIsQueryRenderer"];
25
21
  var buildReactRelayContainer = require('./buildReactRelayContainer');
26
-
27
22
  var _require = require('./ReactRelayContainerUtils'),
28
- getContainerName = _require.getContainerName;
29
-
23
+ getContainerName = _require.getContainerName;
30
24
  var _require2 = require('./RelayContext'),
31
- assertRelayContext = _require2.assertRelayContext;
32
-
25
+ assertRelayContext = _require2.assertRelayContext;
33
26
  var areEqual = require("fbjs/lib/areEqual");
34
-
35
27
  var React = require('react');
36
-
37
28
  var _require3 = require('relay-runtime'),
38
- createFragmentSpecResolver = _require3.createFragmentSpecResolver,
39
- getDataIDsFromObject = _require3.getDataIDsFromObject,
40
- isScalarAndEqual = _require3.isScalarAndEqual;
41
-
29
+ createFragmentSpecResolver = _require3.createFragmentSpecResolver,
30
+ getDataIDsFromObject = _require3.getDataIDsFromObject,
31
+ isScalarAndEqual = _require3.isScalarAndEqual;
42
32
  /**
43
33
  * Composes a React component class, returning a new class that intercepts
44
34
  * props, resolving them with the provided fragments and subscribing for
45
35
  * updates.
46
36
  */
47
37
  function createContainerWithFragments(Component, fragments) {
48
- var _class, _temp;
49
-
38
+ var _class;
50
39
  var containerName = getContainerName(Component);
51
- return _temp = _class = /*#__PURE__*/function (_React$Component) {
40
+ return _class = /*#__PURE__*/function (_React$Component) {
52
41
  (0, _inheritsLoose2["default"])(_class, _React$Component);
42
+ // $FlowFixMe[missing-local-annot]
53
43
 
54
44
  function _class(props) {
55
45
  var _props$__rootIsQueryR, _this;
56
-
57
46
  _this = _React$Component.call(this, props) || this;
58
47
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_handleFragmentDataUpdate", function () {
59
48
  var resolverFromThisUpdate = _this.state.resolver;
60
-
61
49
  _this.setState(function (updatedState) {
62
- return (// If this event belongs to the current data source, update.
50
+ return (
51
+ // If this event belongs to the current data source, update.
63
52
  // Otherwise we should ignore it.
64
53
  resolverFromThisUpdate === updatedState.resolver ? {
65
54
  data: updatedState.resolver.resolve(),
@@ -69,11 +58,11 @@ function createContainerWithFragments(Component, fragments) {
69
58
  });
70
59
  });
71
60
  var relayContext = assertRelayContext(props.__relayContext);
72
- var rootIsQueryRenderer = (_props$__rootIsQueryR = props.__rootIsQueryRenderer) !== null && _props$__rootIsQueryR !== void 0 ? _props$__rootIsQueryR : false; // Do not provide a subscription/callback here.
61
+ var rootIsQueryRenderer = (_props$__rootIsQueryR = props.__rootIsQueryRenderer) !== null && _props$__rootIsQueryR !== void 0 ? _props$__rootIsQueryR : false;
62
+ // Do not provide a subscription/callback here.
73
63
  // It is possible for this render to be interrupted or aborted,
74
64
  // In which case the subscription would cause a leak.
75
65
  // We will add the subscription in componentDidMount().
76
-
77
66
  var resolver = createFragmentSpecResolver(relayContext, containerName, fragments, props, rootIsQueryRenderer);
78
67
  _this.state = {
79
68
  data: resolver.resolve(),
@@ -84,16 +73,14 @@ function createContainerWithFragments(Component, fragments) {
84
73
  };
85
74
  return _this;
86
75
  }
76
+
87
77
  /**
88
78
  * When new props are received, read data for the new props and subscribe
89
79
  * for updates. Props may be the same in which case previous data and
90
80
  * subscriptions can be reused.
91
81
  */
92
-
93
-
94
82
  _class.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {
95
83
  var _nextProps$__rootIsQu;
96
-
97
84
  // Any props change could impact the query, so we mirror props in state.
98
85
  // This is an unusual pattern, but necessary for this container usecase.
99
86
  var prevProps = prevState.prevProps;
@@ -101,12 +88,13 @@ function createContainerWithFragments(Component, fragments) {
101
88
  var rootIsQueryRenderer = (_nextProps$__rootIsQu = nextProps.__rootIsQueryRenderer) !== null && _nextProps$__rootIsQu !== void 0 ? _nextProps$__rootIsQu : false;
102
89
  var prevIDs = getDataIDsFromObject(fragments, prevProps);
103
90
  var nextIDs = getDataIDsFromObject(fragments, nextProps);
104
- var resolver = prevState.resolver; // If the environment has changed or props point to new records then
91
+ var resolver = prevState.resolver;
92
+
93
+ // If the environment has changed or props point to new records then
105
94
  // previously fetched data and any pending fetches no longer apply:
106
95
  // - Existing references are on the old environment.
107
96
  // - Existing references are based on old variables.
108
97
  // - Pending fetches are for the previous records.
109
-
110
98
  if (prevState.prevPropsContext.environment !== relayContext.environment || !areEqual(prevIDs, nextIDs)) {
111
99
  // Do not provide a subscription/callback here.
112
100
  // It is possible for this render to be interrupted or aborted,
@@ -123,7 +111,6 @@ function createContainerWithFragments(Component, fragments) {
123
111
  } else {
124
112
  resolver.setProps(nextProps);
125
113
  var data = resolver.resolve();
126
-
127
114
  if (data !== prevState.data) {
128
115
  return {
129
116
  data: data,
@@ -133,114 +120,104 @@ function createContainerWithFragments(Component, fragments) {
133
120
  };
134
121
  }
135
122
  }
136
-
137
123
  return null;
138
124
  };
139
-
140
125
  var _proto = _class.prototype;
141
-
142
126
  _proto.componentDidMount = function componentDidMount() {
143
127
  this._subscribeToNewResolverAndRerenderIfStoreHasChanged();
144
128
  };
145
-
146
129
  _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {
147
130
  if (this.state.resolver !== prevState.resolver) {
148
131
  prevState.resolver.dispose();
149
-
150
132
  this._subscribeToNewResolverAndRerenderIfStoreHasChanged();
151
133
  } else {
152
134
  this._rerenderIfStoreHasChanged();
153
135
  }
154
136
  };
155
-
156
137
  _proto.componentWillUnmount = function componentWillUnmount() {
157
138
  this.state.resolver.dispose();
158
139
  };
159
-
160
140
  _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps, nextState) {
161
141
  // Short-circuit if any Relay-related data has changed
162
142
  if (nextState.data !== this.state.data) {
163
143
  return true;
164
- } // Otherwise, for convenience short-circuit if all non-Relay props
144
+ }
145
+ // Otherwise, for convenience short-circuit if all non-Relay props
165
146
  // are scalar and equal
166
-
167
-
168
147
  var keys = Object.keys(nextProps);
169
-
170
148
  for (var ii = 0; ii < keys.length; ii++) {
171
- var _key = keys[ii];
172
-
173
- if (_key === '__relayContext') {
149
+ var key = keys[ii];
150
+ if (key === '__relayContext') {
174
151
  if (nextState.prevPropsContext.environment !== this.state.prevPropsContext.environment) {
175
152
  return true;
176
153
  }
177
154
  } else {
178
- if (!fragments.hasOwnProperty(_key) && !isScalarAndEqual(nextProps[_key], this.props[_key])) {
155
+ if (!fragments.hasOwnProperty(key) && !isScalarAndEqual(nextProps[key], this.props[key])) {
179
156
  return true;
180
157
  }
181
158
  }
182
159
  }
183
-
184
160
  return false;
185
161
  }
162
+
186
163
  /**
187
164
  * Render new data for the existing props/context.
188
- */
189
- ;
190
-
165
+ */;
191
166
  _proto._rerenderIfStoreHasChanged = function _rerenderIfStoreHasChanged() {
192
167
  var _this$state = this.state,
193
- data = _this$state.data,
194
- resolver = _this$state.resolver; // External values could change between render and commit.
168
+ data = _this$state.data,
169
+ resolver = _this$state.resolver;
170
+ // External values could change between render and commit.
195
171
  // Check for this case, even though it requires an extra store read.
196
-
197
172
  var maybeNewData = resolver.resolve();
198
-
199
173
  if (data !== maybeNewData) {
200
174
  this.setState({
201
175
  data: maybeNewData
202
176
  });
203
177
  }
204
178
  };
205
-
206
179
  _proto._subscribeToNewResolverAndRerenderIfStoreHasChanged = function _subscribeToNewResolverAndRerenderIfStoreHasChanged() {
207
180
  var _this$state2 = this.state,
208
- data = _this$state2.data,
209
- resolver = _this$state2.resolver;
210
- var maybeNewData = resolver.resolve(); // Event listeners are only safe to add during the commit phase,
181
+ data = _this$state2.data,
182
+ resolver = _this$state2.resolver;
183
+ var maybeNewData = resolver.resolve();
184
+
185
+ // Event listeners are only safe to add during the commit phase,
211
186
  // So they won't leak if render is interrupted or errors.
187
+ resolver.setCallback(this.props, this._handleFragmentDataUpdate);
212
188
 
213
- resolver.setCallback(this.props, this._handleFragmentDataUpdate); // External values could change between render and commit.
189
+ // External values could change between render and commit.
214
190
  // Check for this case, even though it requires an extra store read.
215
-
216
191
  if (data !== maybeNewData) {
217
192
  this.setState({
218
193
  data: maybeNewData
219
194
  });
220
195
  }
221
- };
196
+ }
222
197
 
198
+ // $FlowFixMe[missing-local-annot]
199
+ ;
223
200
  _proto.render = function render() {
201
+ // eslint-disable-next-line no-unused-vars
224
202
  var _this$props = this.props,
225
- componentRef = _this$props.componentRef,
226
- __relayContext = _this$props.__relayContext,
227
- __rootIsQueryRenderer = _this$props.__rootIsQueryRenderer,
228
- props = (0, _objectWithoutPropertiesLoose2["default"])(_this$props, ["componentRef", "__relayContext", "__rootIsQueryRenderer"]);
203
+ componentRef = _this$props.componentRef,
204
+ __relayContext = _this$props.__relayContext,
205
+ __rootIsQueryRenderer = _this$props.__rootIsQueryRenderer,
206
+ props = (0, _objectWithoutPropertiesLoose2["default"])(_this$props, _excluded);
229
207
  return React.createElement(Component, (0, _objectSpread2["default"])((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, props), this.state.data), {}, {
230
208
  ref: componentRef,
231
209
  relay: this.state.relayProp
232
210
  }));
233
211
  };
234
-
235
212
  return _class;
236
- }(React.Component), (0, _defineProperty2["default"])(_class, "displayName", containerName), _temp;
213
+ }(React.Component), (0, _defineProperty2["default"])(_class, "displayName", containerName), _class;
237
214
  }
238
-
239
215
  function getRelayProp(environment) {
240
216
  return {
241
217
  environment: environment
242
218
  };
243
219
  }
220
+
244
221
  /**
245
222
  * Wrap the basic `createContainer()` function with logic to adapt to the
246
223
  * `context.relay.environment` in which it is rendered. Specifically, the
@@ -248,13 +225,10 @@ function getRelayProp(environment) {
248
225
  * `fragmentSpec` is memoized once per environment, rather than once per
249
226
  * instance of the container constructed/rendered.
250
227
  */
251
-
252
-
253
228
  function createContainer(Component, fragmentSpec) {
254
229
  // $FlowFixMe[incompatible-return]
255
230
  return buildReactRelayContainer(Component, fragmentSpec, createContainerWithFragments);
256
231
  }
257
-
258
232
  module.exports = {
259
233
  createContainer: createContainer
260
234
  };
@@ -6,14 +6,13 @@
6
6
  *
7
7
  *
8
8
  * @format
9
+ * @oncall relay
9
10
  */
10
- // flowlint ambiguous-object-type:error
11
+
11
12
  'use strict';
12
13
 
13
14
  var ReactRelayContext = require('./ReactRelayContext');
14
-
15
15
  var React = require('react');
16
-
17
16
  function ReactRelayFragmentMockRenderer(props) {
18
17
  return /*#__PURE__*/React.createElement(ReactRelayContext.Provider, {
19
18
  value: {
@@ -21,5 +20,4 @@ function ReactRelayFragmentMockRenderer(props) {
21
20
  }
22
21
  }, props.render());
23
22
  }
24
-
25
23
  module.exports = ReactRelayFragmentMockRenderer;
@@ -6,50 +6,41 @@
6
6
  *
7
7
  *
8
8
  * @format
9
+ * @oncall relay
9
10
  */
10
- // flowlint ambiguous-object-type:error
11
+
11
12
  'use strict';
12
13
 
13
14
  var ReactRelayContext = require('./ReactRelayContext');
14
-
15
15
  var ReactRelayQueryRendererContext = require('./ReactRelayQueryRendererContext');
16
-
17
16
  var areEqual = require("fbjs/lib/areEqual");
18
-
19
17
  var React = require('react');
20
-
21
18
  var _require = require('relay-runtime'),
22
- createOperationDescriptor = _require.createOperationDescriptor,
23
- deepFreeze = _require.deepFreeze,
24
- getRequest = _require.getRequest;
25
-
19
+ createOperationDescriptor = _require.createOperationDescriptor,
20
+ deepFreeze = _require.deepFreeze,
21
+ getRequest = _require.getRequest;
26
22
  var useLayoutEffect = React.useLayoutEffect,
27
- useState = React.useState,
28
- useRef = React.useRef,
29
- useMemo = React.useMemo;
23
+ useState = React.useState,
24
+ useRef = React.useRef,
25
+ useMemo = React.useMemo;
30
26
  var queryRendererContext = {
31
27
  rootIsQueryRenderer: true
32
28
  };
33
-
34
29
  function useDeepCompare(value) {
35
30
  var latestValue = React.useRef(value);
36
-
37
31
  if (!areEqual(latestValue.current, value)) {
38
32
  if (process.env.NODE_ENV !== "production") {
39
33
  deepFreeze(value);
40
34
  }
41
-
42
35
  latestValue.current = value;
43
36
  }
44
-
45
37
  return latestValue.current;
46
38
  }
47
-
48
39
  function ReactRelayLocalQueryRenderer(props) {
49
40
  var environment = props.environment,
50
- query = props.query,
51
- variables = props.variables,
52
- render = props.render;
41
+ query = props.query,
42
+ variables = props.variables,
43
+ render = props.render;
53
44
  var latestVariables = useDeepCompare(variables);
54
45
  var operation = useMemo(function () {
55
46
  var request = getRequest(query);
@@ -59,28 +50,27 @@ function ReactRelayLocalQueryRenderer(props) {
59
50
  return {
60
51
  environment: environment
61
52
  };
62
- }, [environment]); // Use a ref to prevent rendering twice when data changes
63
- // because of props change
53
+ }, [environment]);
64
54
 
55
+ // Use a ref to prevent rendering twice when data changes
56
+ // because of props change
65
57
  var dataRef = useRef(null);
66
-
67
58
  var _useState = useState(null),
68
- forceUpdate = _useState[1];
69
-
59
+ forceUpdate = _useState[1];
70
60
  var cleanupFnRef = useRef(null);
71
61
  var snapshot = useMemo(function () {
72
62
  environment.check(operation);
73
63
  var res = environment.lookup(operation.fragment);
74
- dataRef.current = res.data; // Run effects here so that the data can be retained
75
- // and subscribed before the component commits
64
+ dataRef.current = res.data;
76
65
 
66
+ // Run effects here so that the data can be retained
67
+ // and subscribed before the component commits
77
68
  var retainDisposable = environment.retain(operation);
78
69
  var subscribeDisposable = environment.subscribe(res, function (newSnapshot) {
79
70
  dataRef.current = newSnapshot.data;
80
71
  forceUpdate(dataRef.current);
81
72
  });
82
73
  var disposed = false;
83
-
84
74
  function nextCleanupFn() {
85
75
  if (!disposed) {
86
76
  disposed = true;
@@ -89,11 +79,9 @@ function ReactRelayLocalQueryRenderer(props) {
89
79
  subscribeDisposable.dispose();
90
80
  }
91
81
  }
92
-
93
82
  if (cleanupFnRef.current) {
94
83
  cleanupFnRef.current();
95
84
  }
96
-
97
85
  cleanupFnRef.current = nextCleanupFn;
98
86
  return res;
99
87
  }, [environment, operation]);
@@ -111,5 +99,4 @@ function ReactRelayLocalQueryRenderer(props) {
111
99
  props: dataRef.current
112
100
  })));
113
101
  }
114
-
115
102
  module.exports = ReactRelayLocalQueryRenderer;