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,74 +6,58 @@
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 _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
16
-
17
16
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
18
-
19
17
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
20
-
21
18
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
22
-
23
19
  var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
24
-
25
20
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
26
-
21
+ var _excluded = ["componentRef", "__relayContext", "__rootIsQueryRenderer"];
27
22
  var buildReactRelayContainer = require('./buildReactRelayContainer');
28
-
29
23
  var getRootVariablesForFragments = require('./getRootVariablesForFragments');
30
-
31
24
  var _require = require('./ReactRelayContainerUtils'),
32
- getContainerName = _require.getContainerName;
33
-
25
+ getContainerName = _require.getContainerName;
34
26
  var ReactRelayContext = require('./ReactRelayContext');
35
-
36
27
  var ReactRelayQueryFetcher = require('./ReactRelayQueryFetcher');
37
-
38
28
  var _require2 = require('./RelayContext'),
39
- assertRelayContext = _require2.assertRelayContext;
40
-
29
+ assertRelayContext = _require2.assertRelayContext;
41
30
  var areEqual = require("fbjs/lib/areEqual");
42
-
43
31
  var React = require('react');
44
-
45
32
  var _require3 = require('relay-runtime'),
46
- Observable = _require3.Observable,
47
- createFragmentSpecResolver = _require3.createFragmentSpecResolver,
48
- createOperationDescriptor = _require3.createOperationDescriptor,
49
- getDataIDsFromObject = _require3.getDataIDsFromObject,
50
- getRequest = _require3.getRequest,
51
- getVariablesFromObject = _require3.getVariablesFromObject,
52
- isScalarAndEqual = _require3.isScalarAndEqual;
53
-
33
+ Observable = _require3.Observable,
34
+ createFragmentSpecResolver = _require3.createFragmentSpecResolver,
35
+ createOperationDescriptor = _require3.createOperationDescriptor,
36
+ getDataIDsFromObject = _require3.getDataIDsFromObject,
37
+ getRequest = _require3.getRequest,
38
+ getVariablesFromObject = _require3.getVariablesFromObject,
39
+ isScalarAndEqual = _require3.isScalarAndEqual;
54
40
  var warning = require("fbjs/lib/warning");
55
-
56
41
  /**
57
42
  * Composes a React component class, returning a new class that intercepts
58
43
  * props, resolving them with the provided fragments and subscribing for
59
44
  * updates.
60
45
  */
61
46
  function createContainerWithFragments(Component, fragments, taggedNode) {
62
- var _class, _temp;
63
-
47
+ var _class;
64
48
  var containerName = getContainerName(Component);
65
- return _temp = _class = /*#__PURE__*/function (_React$Component) {
49
+ return _class = /*#__PURE__*/function (_React$Component) {
66
50
  (0, _inheritsLoose2["default"])(_class, _React$Component);
51
+ // $FlowFixMe[missing-local-annot]
67
52
 
68
53
  function _class(props) {
69
54
  var _props$__rootIsQueryR, _this;
70
-
71
55
  _this = _React$Component.call(this, props) || this;
72
56
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_handleFragmentDataUpdate", function () {
73
57
  var resolverFromThisUpdate = _this.state.resolver;
74
-
75
58
  _this.setState(function (updatedState) {
76
- return (// If this event belongs to the current data source, update.
59
+ return (
60
+ // If this event belongs to the current data source, update.
77
61
  // Otherwise we should ignore it.
78
62
  resolverFromThisUpdate === updatedState.resolver ? {
79
63
  data: updatedState.resolver.resolve()
@@ -88,10 +72,8 @@ function createContainerWithFragments(Component, fragments, taggedNode) {
88
72
  dispose: function dispose() {}
89
73
  };
90
74
  }
91
-
92
75
  var _assertRelayContext = assertRelayContext(_this.props.__relayContext),
93
- environment = _assertRelayContext.environment;
94
-
76
+ environment = _assertRelayContext.environment;
95
77
  var rootVariables = getRootVariablesForFragments(fragments, _this.props);
96
78
  var fetchVariables = typeof refetchVariables === 'function' ? refetchVariables(_this._getFragmentVariables()) : refetchVariables;
97
79
  fetchVariables = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, rootVariables), fetchVariables);
@@ -99,11 +81,9 @@ function createContainerWithFragments(Component, fragments, taggedNode) {
99
81
  var cacheConfig = options ? {
100
82
  force: !!options.force
101
83
  } : undefined;
102
-
103
84
  if (cacheConfig != null && (options === null || options === void 0 ? void 0 : options.metadata) != null) {
104
85
  cacheConfig.metadata = options === null || options === void 0 ? void 0 : options.metadata;
105
86
  }
106
-
107
87
  var observer = typeof observerOrCallback === 'function' ? {
108
88
  // callback is not exectued on complete or unsubscribe
109
89
  // for backward compatibility
@@ -111,24 +91,20 @@ function createContainerWithFragments(Component, fragments, taggedNode) {
111
91
  error: observerOrCallback
112
92
  } : observerOrCallback || {};
113
93
  var query = getRequest(taggedNode);
114
- var operation = createOperationDescriptor(query, fetchVariables, cacheConfig); // TODO: T26288752 find a better way
115
-
116
- /* eslint-disable lint/react-state-props-mutation */
94
+ var operation = createOperationDescriptor(query, fetchVariables, cacheConfig);
117
95
 
96
+ // TODO: T26288752 find a better way
118
97
  _this.state.localVariables = fetchVariables;
119
- /* eslint-enable lint/react-state-props-mutation */
98
+
120
99
  // Cancel any previously running refetch.
100
+ _this._refetchSubscription && _this._refetchSubscription.unsubscribe();
121
101
 
122
- _this._refetchSubscription && _this._refetchSubscription.unsubscribe(); // Declare refetchSubscription before assigning it in .start(), since
102
+ // Declare refetchSubscription before assigning it in .start(), since
123
103
  // synchronous completion may call callbacks .subscribe() returns.
124
-
125
104
  var refetchSubscription;
126
-
127
105
  var storeSnapshot = _this._getQueryFetcher().lookupInStore(environment, operation, options === null || options === void 0 ? void 0 : options.fetchPolicy);
128
-
129
106
  if (storeSnapshot != null) {
130
107
  _this.state.resolver.setVariables(fragmentVariables, operation.request.node);
131
-
132
108
  _this.setState(function (latestState) {
133
109
  return {
134
110
  data: latestState.resolver.resolve(),
@@ -140,12 +116,10 @@ function createContainerWithFragments(Component, fragments, taggedNode) {
140
116
  observer.next && observer.next();
141
117
  observer.complete && observer.complete();
142
118
  });
143
-
144
119
  return {
145
120
  dispose: function dispose() {}
146
121
  };
147
122
  }
148
-
149
123
  _this._getQueryFetcher().execute({
150
124
  environment: environment,
151
125
  operation: operation,
@@ -153,7 +127,6 @@ function createContainerWithFragments(Component, fragments, taggedNode) {
153
127
  preservePreviousReferences: true
154
128
  }).mergeMap(function (response) {
155
129
  _this.state.resolver.setVariables(fragmentVariables, operation.request.node);
156
-
157
130
  return Observable.create(function (sink) {
158
131
  return _this.setState(function (latestState) {
159
132
  return {
@@ -179,7 +152,6 @@ function createContainerWithFragments(Component, fragments, taggedNode) {
179
152
  observer.start && observer.start(subscription);
180
153
  }
181
154
  }));
182
-
183
155
  return {
184
156
  dispose: function dispose() {
185
157
  refetchSubscription && refetchSubscription.unsubscribe();
@@ -188,11 +160,11 @@ function createContainerWithFragments(Component, fragments, taggedNode) {
188
160
  });
189
161
  var relayContext = assertRelayContext(props.__relayContext);
190
162
  var rootIsQueryRenderer = (_props$__rootIsQueryR = props.__rootIsQueryRenderer) !== null && _props$__rootIsQueryR !== void 0 ? _props$__rootIsQueryR : false;
191
- _this._refetchSubscription = null; // Do not provide a subscription/callback here.
163
+ _this._refetchSubscription = null;
164
+ // Do not provide a subscription/callback here.
192
165
  // It is possible for this render to be interrupted or aborted,
193
166
  // In which case the subscription would cause a leak.
194
167
  // We will add the subscription in componentDidMount().
195
-
196
168
  var resolver = createFragmentSpecResolver(relayContext, containerName, fragments, props, rootIsQueryRenderer);
197
169
  _this.state = {
198
170
  data: resolver.resolve(),
@@ -206,15 +178,11 @@ function createContainerWithFragments(Component, fragments, taggedNode) {
206
178
  _this._isUnmounted = false;
207
179
  return _this;
208
180
  }
209
-
210
181
  var _proto = _class.prototype;
211
-
212
182
  _proto.componentDidMount = function componentDidMount() {
213
183
  this._isUnmounted = false;
214
-
215
184
  this._subscribeToNewResolverAndRerenderIfStoreHasChanged();
216
185
  };
217
-
218
186
  _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {
219
187
  // If the environment has changed or props point to new records then
220
188
  // previously fetched data and any pending fetches no longer apply:
@@ -225,21 +193,18 @@ function createContainerWithFragments(Component, fragments, taggedNode) {
225
193
  prevState.resolver.dispose();
226
194
  this._queryFetcher && this._queryFetcher.dispose();
227
195
  this._refetchSubscription && this._refetchSubscription.unsubscribe();
228
-
229
196
  this._subscribeToNewResolverAndRerenderIfStoreHasChanged();
230
197
  } else {
231
198
  this._rerenderIfStoreHasChanged();
232
199
  }
233
200
  }
201
+
234
202
  /**
235
203
  * When new props are received, read data for the new props and add it to
236
204
  * state. Props may be the same in which case previous data can be reused.
237
- */
238
- ;
239
-
205
+ */;
240
206
  _class.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {
241
207
  var _nextProps$__rootIsQu;
242
-
243
208
  // Any props change could impact the query, so we mirror props in state.
244
209
  // This is an unusual pattern, but necessary for this container usecase.
245
210
  var prevProps = prevState.prevProps;
@@ -249,12 +214,13 @@ function createContainerWithFragments(Component, fragments, taggedNode) {
249
214
  var nextIDs = getDataIDsFromObject(fragments, nextProps);
250
215
  var prevRootVariables = getRootVariablesForFragments(fragments, prevProps);
251
216
  var nextRootVariables = getRootVariablesForFragments(fragments, nextProps);
252
- var resolver = prevState.resolver; // If the environment has changed or props point to new records then
217
+ var resolver = prevState.resolver;
218
+
219
+ // If the environment has changed or props point to new records then
253
220
  // previously fetched data and any pending fetches no longer apply:
254
221
  // - Existing references are on the old environment.
255
222
  // - Existing references are based on old variables.
256
223
  // - Pending fetches are for the previous records.
257
-
258
224
  if (prevState.prevPropsContext.environment !== relayContext.environment || !areEqual(prevRootVariables, nextRootVariables) || !areEqual(prevIDs, nextIDs)) {
259
225
  // Do not provide a subscription/callback here.
260
226
  // It is possible for this render to be interrupted or aborted,
@@ -273,110 +239,98 @@ function createContainerWithFragments(Component, fragments, taggedNode) {
273
239
  } else if (!prevState.localVariables) {
274
240
  resolver.setProps(nextProps);
275
241
  }
276
-
277
242
  var data = resolver.resolve();
278
-
279
243
  if (data !== prevState.data) {
280
244
  return {
281
245
  data: data,
282
246
  prevProps: nextProps
283
247
  };
284
248
  }
285
-
286
249
  return null;
287
250
  };
288
-
289
251
  _proto.componentWillUnmount = function componentWillUnmount() {
290
252
  this._isUnmounted = true;
291
253
  this.state.resolver.dispose();
292
254
  this._queryFetcher && this._queryFetcher.dispose();
293
255
  this._refetchSubscription && this._refetchSubscription.unsubscribe();
294
256
  };
295
-
296
257
  _proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps, nextState) {
297
258
  // Short-circuit if any Relay-related data has changed
298
259
  if (nextState.data !== this.state.data || nextState.relayProp !== this.state.relayProp) {
299
260
  return true;
300
- } // Otherwise, for convenience short-circuit if all non-Relay props
261
+ }
262
+ // Otherwise, for convenience short-circuit if all non-Relay props
301
263
  // are scalar and equal
302
-
303
-
304
264
  var keys = Object.keys(nextProps);
305
-
306
265
  for (var ii = 0; ii < keys.length; ii++) {
307
- var _key = keys[ii];
308
-
309
- if (_key === '__relayContext') {
266
+ var key = keys[ii];
267
+ if (key === '__relayContext') {
310
268
  if (this.state.prevPropsContext.environment !== nextState.prevPropsContext.environment) {
311
269
  return true;
312
270
  }
313
271
  } else {
314
- if (!fragments.hasOwnProperty(_key) && !isScalarAndEqual(nextProps[_key], this.props[_key])) {
272
+ if (!fragments.hasOwnProperty(key) && !isScalarAndEqual(nextProps[key], this.props[key])) {
315
273
  return true;
316
274
  }
317
275
  }
318
276
  }
319
-
320
277
  return false;
321
278
  };
322
-
323
279
  _proto._rerenderIfStoreHasChanged = function _rerenderIfStoreHasChanged() {
324
280
  var _this$state = this.state,
325
- data = _this$state.data,
326
- resolver = _this$state.resolver; // External values could change between render and commit.
281
+ data = _this$state.data,
282
+ resolver = _this$state.resolver;
283
+ // External values could change between render and commit.
327
284
  // Check for this case, even though it requires an extra store read.
328
-
329
285
  var maybeNewData = resolver.resolve();
330
-
331
286
  if (data !== maybeNewData) {
332
287
  this.setState({
333
288
  data: maybeNewData
334
289
  });
335
290
  }
336
291
  };
337
-
338
292
  _proto._subscribeToNewResolverAndRerenderIfStoreHasChanged = function _subscribeToNewResolverAndRerenderIfStoreHasChanged() {
339
293
  var _this$state2 = this.state,
340
- data = _this$state2.data,
341
- resolver = _this$state2.resolver;
342
- var maybeNewData = resolver.resolve(); // Event listeners are only safe to add during the commit phase,
294
+ data = _this$state2.data,
295
+ resolver = _this$state2.resolver;
296
+ var maybeNewData = resolver.resolve();
297
+
298
+ // Event listeners are only safe to add during the commit phase,
343
299
  // So they won't leak if render is interrupted or errors.
300
+ resolver.setCallback(this.props, this._handleFragmentDataUpdate);
344
301
 
345
- resolver.setCallback(this.props, this._handleFragmentDataUpdate); // External values could change between render and commit.
302
+ // External values could change between render and commit.
346
303
  // Check for this case, even though it requires an extra store read.
347
-
348
304
  if (data !== maybeNewData) {
349
305
  this.setState({
350
306
  data: maybeNewData
351
307
  });
352
308
  }
353
309
  }
310
+
354
311
  /**
355
312
  * Render new data for the existing props/context.
356
- */
357
- ;
358
-
313
+ */;
359
314
  _proto._getFragmentVariables = function _getFragmentVariables() {
360
315
  return getVariablesFromObject(fragments, this.props);
361
316
  };
362
-
363
317
  _proto._getQueryFetcher = function _getQueryFetcher() {
364
318
  if (!this._queryFetcher) {
365
319
  this._queryFetcher = new ReactRelayQueryFetcher();
366
320
  }
367
-
368
321
  return this._queryFetcher;
369
322
  };
370
-
323
+ // $FlowFixMe[missing-local-annot]
371
324
  _proto.render = function render() {
325
+ // eslint-disable-next-line no-unused-vars
372
326
  var _this$props = this.props,
373
- componentRef = _this$props.componentRef,
374
- __relayContext = _this$props.__relayContext,
375
- __rootIsQueryRenderer = _this$props.__rootIsQueryRenderer,
376
- props = (0, _objectWithoutPropertiesLoose2["default"])(_this$props, ["componentRef", "__relayContext", "__rootIsQueryRenderer"]);
327
+ componentRef = _this$props.componentRef,
328
+ __relayContext = _this$props.__relayContext,
329
+ __rootIsQueryRenderer = _this$props.__rootIsQueryRenderer,
330
+ props = (0, _objectWithoutPropertiesLoose2["default"])(_this$props, _excluded);
377
331
  var _this$state3 = this.state,
378
- relayProp = _this$state3.relayProp,
379
- contextForChildren = _this$state3.contextForChildren;
332
+ relayProp = _this$state3.relayProp,
333
+ contextForChildren = _this$state3.contextForChildren;
380
334
  return /*#__PURE__*/React.createElement(ReactRelayContext.Provider, {
381
335
  value: contextForChildren
382
336
  }, /*#__PURE__*/React.createElement(Component, (0, _extends2["default"])({}, props, this.state.data, {
@@ -384,17 +338,16 @@ function createContainerWithFragments(Component, fragments, taggedNode) {
384
338
  relay: relayProp
385
339
  })));
386
340
  };
387
-
388
341
  return _class;
389
- }(React.Component), (0, _defineProperty2["default"])(_class, "displayName", containerName), _temp;
342
+ }(React.Component), (0, _defineProperty2["default"])(_class, "displayName", containerName), _class;
390
343
  }
391
-
392
344
  function getRelayProp(environment, refetch) {
393
345
  return {
394
346
  environment: environment,
395
347
  refetch: refetch
396
348
  };
397
349
  }
350
+
398
351
  /**
399
352
  * Wrap the basic `createContainer()` function with logic to adapt to the
400
353
  * `context.relay.environment` in which it is rendered. Specifically, the
@@ -402,15 +355,12 @@ function getRelayProp(environment, refetch) {
402
355
  * `fragmentSpec` is memoized once per environment, rather than once per
403
356
  * instance of the container constructed/rendered.
404
357
  */
405
-
406
-
407
358
  function createContainer(Component, fragmentSpec, taggedNode) {
408
359
  // $FlowFixMe[incompatible-return]
409
360
  return buildReactRelayContainer(Component, fragmentSpec, function (ComponentClass, fragments) {
410
361
  return createContainerWithFragments(ComponentClass, fragments, taggedNode);
411
362
  });
412
363
  }
413
-
414
364
  module.exports = {
415
365
  createContainer: createContainer
416
366
  };