react-relay 14.0.0 → 15.0.0

Sign up to get free protection for your applications and to get access to all the features.
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;