react-relay 2.0.0-rc.2 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (166) hide show
  1. package/index.js +2 -2
  2. package/lib/ReactRelayContext.js +6 -3
  3. package/lib/ReactRelayFragmentContainer.js +48 -46
  4. package/lib/ReactRelayFragmentMockRenderer.js +5 -1
  5. package/lib/ReactRelayPaginationContainer.js +102 -68
  6. package/lib/ReactRelayQueryFetcher.js +54 -28
  7. package/lib/ReactRelayQueryRenderer.js +28 -20
  8. package/lib/ReactRelayRefetchContainer.js +70 -58
  9. package/lib/ReactRelayTestMocker.js +56 -43
  10. package/lib/ReactRelayTypes.js +1 -1
  11. package/lib/RelayContext.js +8 -2
  12. package/lib/assertFragmentMap.js +9 -7
  13. package/lib/buildReactRelayContainer.js +32 -23
  14. package/lib/index.js +41 -0
  15. package/lib/isRelayEnvironment.js +1 -1
  16. package/lib/isRelayVariables.js +1 -1
  17. package/lib/readContext.js +7 -4
  18. package/package.json +4 -4
  19. package/react-relay.js +2 -2
  20. package/react-relay.min.js +2 -2
  21. package/classic.js +0 -10
  22. package/compat.js +0 -10
  23. package/lib/ConcreteQuery.js +0 -10
  24. package/lib/GraphQLQueryRunner.js +0 -264
  25. package/lib/GraphQLRange.js +0 -1124
  26. package/lib/GraphQLSegment.js +0 -743
  27. package/lib/GraphQLStoreChangeEmitter.js +0 -141
  28. package/lib/GraphQLStoreQueryResolver.js +0 -288
  29. package/lib/GraphQLStoreRangeUtils.js +0 -126
  30. package/lib/QueryBuilder.js +0 -228
  31. package/lib/ReactRelayClassicExports.js +0 -29
  32. package/lib/ReactRelayCompatContainerBuilder.js +0 -175
  33. package/lib/ReactRelayCompatPublic.js +0 -28
  34. package/lib/ReactRelayContainerProfiler.js +0 -30
  35. package/lib/ReactRelayFragmentContainer-flowtest.js +0 -201
  36. package/lib/ReactRelayPaginationContainer-flowtest.js +0 -213
  37. package/lib/ReactRelayPublic.js +0 -29
  38. package/lib/ReactRelayRefetchContainer-flowtest.js +0 -191
  39. package/lib/RelayCacheProcessor.js +0 -196
  40. package/lib/RelayChangeTracker.js +0 -83
  41. package/lib/RelayClassicContainerUtils.js +0 -49
  42. package/lib/RelayClassicCore.js +0 -34
  43. package/lib/RelayClassicRecordState.js +0 -31
  44. package/lib/RelayCompatContainer.js +0 -25
  45. package/lib/RelayCompatEnvironment.js +0 -27
  46. package/lib/RelayCompatMutations.js +0 -133
  47. package/lib/RelayCompatPaginationContainer.js +0 -27
  48. package/lib/RelayCompatRefetchContainer.js +0 -27
  49. package/lib/RelayCompatTypes.js +0 -10
  50. package/lib/RelayContainer.js +0 -889
  51. package/lib/RelayContainerComparators.js +0 -75
  52. package/lib/RelayContainerProxy.js +0 -21
  53. package/lib/RelayDefaultNetworkLayer.js +0 -192
  54. package/lib/RelayEnvironment.js +0 -449
  55. package/lib/RelayEnvironmentTypes.js +0 -10
  56. package/lib/RelayFetchMode.js +0 -17
  57. package/lib/RelayFragmentPointer.js +0 -161
  58. package/lib/RelayFragmentReference.js +0 -249
  59. package/lib/RelayFragmentSpecResolver.js +0 -305
  60. package/lib/RelayGraphQLMutation.js +0 -288
  61. package/lib/RelayGraphQLTag.js +0 -42
  62. package/lib/RelayInternalTypes.js +0 -15
  63. package/lib/RelayInternals.js +0 -24
  64. package/lib/RelayMetaRoute.js +0 -35
  65. package/lib/RelayMockRenderer.js +0 -71
  66. package/lib/RelayModern-flowtest.js +0 -342
  67. package/lib/RelayModernFlowtest_badref.graphql.js +0 -10
  68. package/lib/RelayModernFlowtest_notref.graphql.js +0 -10
  69. package/lib/RelayModernFlowtest_user.graphql.js +0 -10
  70. package/lib/RelayModernFlowtest_users.graphql.js +0 -10
  71. package/lib/RelayMutation.js +0 -322
  72. package/lib/RelayMutationDebugPrinter.js +0 -47
  73. package/lib/RelayMutationQuery.js +0 -558
  74. package/lib/RelayMutationQueue.js +0 -530
  75. package/lib/RelayMutationRequest.js +0 -103
  76. package/lib/RelayMutationTracker.js +0 -113
  77. package/lib/RelayMutationTransaction.js +0 -92
  78. package/lib/RelayMutationTransactionStatus.js +0 -55
  79. package/lib/RelayNetworkDebug.js +0 -131
  80. package/lib/RelayNetworkLayer.js +0 -185
  81. package/lib/RelayNodeInterface.js +0 -104
  82. package/lib/RelayOperationDescriptor.js +0 -40
  83. package/lib/RelayOptimisticMutationUtils.js +0 -208
  84. package/lib/RelayPendingQueryTracker.js +0 -166
  85. package/lib/RelayPropTypes.js +0 -57
  86. package/lib/RelayPublic.js +0 -44
  87. package/lib/RelayQL.js +0 -128
  88. package/lib/RelayQuery.js +0 -1584
  89. package/lib/RelayQueryCaching.js +0 -33
  90. package/lib/RelayQueryConfig.js +0 -58
  91. package/lib/RelayQueryPath.js +0 -204
  92. package/lib/RelayQueryRequest.js +0 -103
  93. package/lib/RelayQueryTracker.js +0 -86
  94. package/lib/RelayQueryTransform.js +0 -91
  95. package/lib/RelayQueryVisitor.js +0 -93
  96. package/lib/RelayQueryWriter.js +0 -573
  97. package/lib/RelayReadyState.js +0 -83
  98. package/lib/RelayReadyStateRenderer.js +0 -145
  99. package/lib/RelayRecord.js +0 -75
  100. package/lib/RelayRecordStatusMap.js +0 -57
  101. package/lib/RelayRecordStore.js +0 -433
  102. package/lib/RelayRecordWriter.js +0 -601
  103. package/lib/RelayRefQueryDescriptor.js +0 -27
  104. package/lib/RelayRenderer.js +0 -268
  105. package/lib/RelayRootContainer.js +0 -125
  106. package/lib/RelayRoute.js +0 -92
  107. package/lib/RelayRouteFragment.js +0 -44
  108. package/lib/RelaySelector.js +0 -201
  109. package/lib/RelayShallowMock.js +0 -69
  110. package/lib/RelayStaticContainer.js +0 -38
  111. package/lib/RelayStore.js +0 -12
  112. package/lib/RelayStoreConstants.js +0 -20
  113. package/lib/RelayStoreData.js +0 -660
  114. package/lib/RelayTaskQueue.js +0 -189
  115. package/lib/RelayTypes.js +0 -13
  116. package/lib/RelayVariable.js +0 -32
  117. package/lib/RelayVariables.js +0 -92
  118. package/lib/buildRQL.js +0 -160
  119. package/lib/callsFromGraphQL.js +0 -74
  120. package/lib/callsToGraphQL.js +0 -34
  121. package/lib/checkRelayQueryData.js +0 -250
  122. package/lib/createRelayQuery.js +0 -17
  123. package/lib/dedent.js +0 -49
  124. package/lib/diffRelayQuery.js +0 -757
  125. package/lib/directivesToGraphQL.js +0 -39
  126. package/lib/filterRelayQuery.js +0 -29
  127. package/lib/findRelayQueryLeaves.js +0 -293
  128. package/lib/flattenRelayQuery.js +0 -121
  129. package/lib/flattenSplitRelayQueries.js +0 -44
  130. package/lib/forEachRootCallArg.js +0 -40
  131. package/lib/fromGraphQL.js +0 -48
  132. package/lib/generateClientEdgeID.js +0 -22
  133. package/lib/generateClientID.js +0 -27
  134. package/lib/generateConcreteFragmentID.js +0 -30
  135. package/lib/generateForceIndex.js +0 -24
  136. package/lib/generateRQLFieldAlias.js +0 -39
  137. package/lib/getRangeBehavior.js +0 -58
  138. package/lib/getRelayQueries.js +0 -83
  139. package/lib/intersectRelayQuery.js +0 -149
  140. package/lib/isClassicRelayContext.js +0 -20
  141. package/lib/isClassicRelayEnvironment.js +0 -20
  142. package/lib/isCompatibleRelayFragmentType.js +0 -27
  143. package/lib/isRelayContainer.js +0 -16
  144. package/lib/makeLegacyStringishComponentRef.js +0 -52
  145. package/lib/printRelayOSSQuery.js +0 -329
  146. package/lib/printRelayQuery.js +0 -26
  147. package/lib/rangeOperationToMetadataKey.js +0 -25
  148. package/lib/readRelayQueryData.js +0 -551
  149. package/lib/relayUnstableBatchedUpdates.js +0 -12
  150. package/lib/relayUnstableBatchedUpdates.native.js +0 -11
  151. package/lib/restoreRelayCacheData.js +0 -188
  152. package/lib/serializeRelayQueryCall.js +0 -42
  153. package/lib/splitDeferredRelayQueries.js +0 -298
  154. package/lib/stableStringify.js +0 -85
  155. package/lib/testEditDistance.js +0 -112
  156. package/lib/throwFailedPromise.js +0 -26
  157. package/lib/toGraphQL.js +0 -94
  158. package/lib/transformRelayQueryPayload.js +0 -145
  159. package/lib/validateMutationConfig.js +0 -117
  160. package/lib/validateRelayReadQuery.js +0 -112
  161. package/lib/writeRelayQueryPayload.js +0 -44
  162. package/lib/writeRelayUpdatePayload.js +0 -513
  163. package/react-relay-classic.js +0 -4
  164. package/react-relay-classic.min.js +0 -9
  165. package/react-relay-compat.js +0 -4
  166. package/react-relay-compat.min.js +0 -9
@@ -4,12 +4,20 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
- * strict-local
7
+ *
8
8
  * @format
9
9
  */
10
10
  'use strict';
11
11
 
12
- var _defineProperty2 = require("@babel/runtime/helpers/interopRequireDefault")(require("@babel/runtime/helpers/defineProperty"));
12
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
13
+
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+
16
+ var invariant = require("fbjs/lib/invariant");
17
+
18
+ var _require = require("relay-runtime"),
19
+ isRelayModernEnvironment = _require.isRelayModernEnvironment,
20
+ fetchQuery = _require.__internal.fetchQuery;
13
21
 
14
22
  var ReactRelayQueryFetcher =
15
23
  /*#__PURE__*/
@@ -37,7 +45,7 @@ function () {
37
45
  if (environment.check(operation.root)) {
38
46
  this._retainCachedOperation(environment, operation);
39
47
 
40
- return environment.lookup(operation.fragment);
48
+ return environment.lookup(operation.fragment, operation);
41
49
  }
42
50
 
43
51
  return null;
@@ -52,32 +60,50 @@ function () {
52
60
  _ref$preservePrevious = _ref.preservePreviousReferences,
53
61
  preservePreviousReferences = _ref$preservePrevious === void 0 ? false : _ref$preservePrevious;
54
62
  var reference = environment.retain(operation.root);
55
- return environment.execute({
56
- operation: operation,
57
- cacheConfig: cacheConfig
58
- })["do"]({
59
- error: function error() {
60
- // We may have partially fulfilled the request, so let the next request
61
- // or the unmount dispose of the references.
62
- _this._selectionReferences = _this._selectionReferences.concat(reference);
63
- },
64
- complete: function complete() {
65
- if (!preservePreviousReferences) {
66
- _this.disposeSelectionReferences();
67
- }
63
+ var fetchQueryOptions = cacheConfig != null ? {
64
+ networkCacheConfig: cacheConfig
65
+ } : {};
66
+
67
+ var error = function error() {
68
+ // We may have partially fulfilled the request, so let the next request
69
+ // or the unmount dispose of the references.
70
+ _this._selectionReferences = _this._selectionReferences.concat(reference);
71
+ };
68
72
 
69
- _this._selectionReferences = _this._selectionReferences.concat(reference);
70
- },
71
- unsubscribe: function unsubscribe() {
72
- // Let the next request or the unmount code dispose of the references.
73
- // We may have partially fulfilled the request.
74
- _this._selectionReferences = _this._selectionReferences.concat(reference);
73
+ var complete = function complete() {
74
+ if (!preservePreviousReferences) {
75
+ _this.disposeSelectionReferences();
75
76
  }
77
+
78
+ _this._selectionReferences = _this._selectionReferences.concat(reference);
79
+ };
80
+
81
+ var unsubscribe = function unsubscribe() {
82
+ // Let the next request or the unmount code dispose of the references.
83
+ // We may have partially fulfilled the request.
84
+ _this._selectionReferences = _this._selectionReferences.concat(reference);
85
+ };
86
+
87
+ if (!isRelayModernEnvironment(environment)) {
88
+ return environment.execute({
89
+ operation: operation,
90
+ cacheConfig: cacheConfig
91
+ })["do"]({
92
+ error: error,
93
+ complete: complete,
94
+ unsubscribe: unsubscribe
95
+ });
96
+ }
97
+
98
+ return fetchQuery(environment, operation, fetchQueryOptions)["do"]({
99
+ error: error,
100
+ complete: complete,
101
+ unsubscribe: unsubscribe
76
102
  });
77
103
  };
78
104
 
79
105
  _proto.setOnDataChange = function setOnDataChange(onDataChange) {
80
- !this._fetchOptions ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, 'ReactRelayQueryFetcher: `setOnDataChange` should have been called after having called `fetch`') : require("fbjs/lib/invariant")(false) : void 0;
106
+ !this._fetchOptions ? process.env.NODE_ENV !== "production" ? invariant(false, 'ReactRelayQueryFetcher: `setOnDataChange` should have been called after having called `fetch`') : invariant(false) : void 0;
81
107
 
82
108
  if (typeof onDataChange === 'function') {
83
109
  // Mutate the most recent fetchOptions in place,
@@ -99,7 +125,7 @@ function () {
99
125
  }
100
126
  }
101
127
  }
102
- };
128
+ }
103
129
  /**
104
130
  * `fetch` fetches the data for the given operation.
105
131
  * If a result is immediately available synchronously, it will be synchronously
@@ -109,7 +135,7 @@ function () {
109
135
  * `onDataChange` will be called with the first result (**if it wasn't returned synchronously**),
110
136
  * and then subsequently whenever the data changes.
111
137
  */
112
-
138
+ ;
113
139
 
114
140
  _proto.fetch = function fetch(fetchOptions) {
115
141
  var _this2 = this;
@@ -190,7 +216,7 @@ function () {
190
216
  };
191
217
 
192
218
  _proto.retry = function retry() {
193
- !this._fetchOptions ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, 'ReactRelayQueryFetcher: `retry` should be called after having called `fetch`') : require("fbjs/lib/invariant")(false) : void 0;
219
+ !this._fetchOptions ? process.env.NODE_ENV !== "production" ? invariant(false, 'ReactRelayQueryFetcher: `retry` should be called after having called `fetch`') : invariant(false) : void 0;
194
220
  return this.fetch({
195
221
  cacheConfig: this._fetchOptions.cacheConfig,
196
222
  environment: this._fetchOptions.environment,
@@ -245,7 +271,7 @@ function () {
245
271
  var _this3 = this;
246
272
 
247
273
  var notifyFirstResult = _ref2.notifyFirstResult;
248
- !this._fetchOptions ? process.env.NODE_ENV !== "production" ? require("fbjs/lib/invariant")(false, 'ReactRelayQueryFetcher: `_onQueryDataAvailable` should have been called after having called `fetch`') : require("fbjs/lib/invariant")(false) : void 0;
274
+ !this._fetchOptions ? process.env.NODE_ENV !== "production" ? invariant(false, 'ReactRelayQueryFetcher: `_onQueryDataAvailable` should have been called after having called `fetch`') : invariant(false) : void 0;
249
275
  var _this$_fetchOptions = this._fetchOptions,
250
276
  environment = _this$_fetchOptions.environment,
251
277
  onDataChangeCallbacks = _this$_fetchOptions.onDataChangeCallbacks,
@@ -257,7 +283,7 @@ function () {
257
283
  return;
258
284
  }
259
285
 
260
- this._snapshot = environment.lookup(operation.fragment); // Subscribe to changes in the data of the root fragment
286
+ this._snapshot = environment.lookup(operation.fragment, operation); // Subscribe to changes in the data of the root fragment
261
287
 
262
288
  this._rootSubscription = environment.subscribe(this._snapshot, function (snapshot) {
263
289
  // Read from this._fetchOptions in case onDataChange() was lazily added.
@@ -9,9 +9,22 @@
9
9
  */
10
10
  'use strict';
11
11
 
12
- var _objectSpread2 = require("@babel/runtime/helpers/interopRequireDefault")(require("@babel/runtime/helpers/objectSpread"));
12
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
13
13
 
14
- var _inheritsLoose2 = require("@babel/runtime/helpers/interopRequireDefault")(require("@babel/runtime/helpers/inheritsLoose"));
14
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread"));
15
+
16
+ var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
17
+
18
+ var React = require("react");
19
+
20
+ var ReactRelayContext = require("./ReactRelayContext");
21
+
22
+ var ReactRelayQueryFetcher = require("./ReactRelayQueryFetcher");
23
+
24
+ var areEqual = require("fbjs/lib/areEqual");
25
+
26
+ var _require = require("relay-runtime"),
27
+ deepFreeze = _require.deepFreeze;
15
28
 
16
29
  /**
17
30
  * React may double-fire the constructor, and we call 'fetch' in the
@@ -59,15 +72,13 @@ function (_React$Component) {
59
72
  var requestCacheKey;
60
73
 
61
74
  if (props.query) {
62
- var query = props.query; // $FlowFixMe TODO t16225453 QueryRenderer works with old+new environment.
63
-
64
- var genericEnvironment = props.environment;
65
- var getRequest = genericEnvironment.unstable_internal.getRequest;
75
+ var query = props.query;
76
+ var getRequest = props.environment.unstable_internal.getRequest;
66
77
  var request = getRequest(query);
67
78
  requestCacheKey = getRequestCacheKey(request.params, props.variables);
68
- queryFetcher = requestCache[requestCacheKey] ? requestCache[requestCacheKey].queryFetcher : new (require("./ReactRelayQueryFetcher"))();
79
+ queryFetcher = requestCache[requestCacheKey] ? requestCache[requestCacheKey].queryFetcher : new ReactRelayQueryFetcher();
69
80
  } else {
70
- queryFetcher = new (require("./ReactRelayQueryFetcher"))();
81
+ queryFetcher = new ReactRelayQueryFetcher();
71
82
  }
72
83
 
73
84
  _this.state = (0, _objectSpread2["default"])({
@@ -81,21 +92,19 @@ function (_React$Component) {
81
92
  }
82
93
 
83
94
  ReactRelayQueryRenderer.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {
84
- if (prevState.prevQuery !== nextProps.query || prevState.prevPropsEnvironment !== nextProps.environment || !require("fbjs/lib/areEqual")(prevState.prevPropsVariables, nextProps.variables)) {
95
+ if (prevState.prevQuery !== nextProps.query || prevState.prevPropsEnvironment !== nextProps.environment || !areEqual(prevState.prevPropsVariables, nextProps.variables)) {
85
96
  var query = nextProps.query;
86
97
  var prevSelectionReferences = prevState.queryFetcher.getSelectionReferences();
87
98
  prevState.queryFetcher.disposeRequest();
88
99
  var queryFetcher;
89
100
 
90
101
  if (query) {
91
- // $FlowFixMe TODO t16225453 QueryRenderer works with old+new environment.
92
- var genericEnvironment = nextProps.environment;
93
- var getRequest = genericEnvironment.unstable_internal.getRequest;
102
+ var getRequest = nextProps.environment.unstable_internal.getRequest;
94
103
  var request = getRequest(query);
95
104
  var requestCacheKey = getRequestCacheKey(request.params, nextProps.variables);
96
- queryFetcher = requestCache[requestCacheKey] ? requestCache[requestCacheKey].queryFetcher : new (require("./ReactRelayQueryFetcher"))(prevSelectionReferences);
105
+ queryFetcher = requestCache[requestCacheKey] ? requestCache[requestCacheKey].queryFetcher : new ReactRelayQueryFetcher(prevSelectionReferences);
97
106
  } else {
98
- queryFetcher = new (require("./ReactRelayQueryFetcher"))(prevSelectionReferences);
107
+ queryFetcher = new ReactRelayQueryFetcher(prevSelectionReferences);
99
108
  }
100
109
 
101
110
  return (0, _objectSpread2["default"])({
@@ -142,7 +151,7 @@ function (_React$Component) {
142
151
  }
143
152
 
144
153
  return {
145
- renderProps: getRenderProps(error, snapshot, queryFetcher, retryCallbacks),
154
+ renderProps: getRenderProps(error, snapshot, prevState.queryFetcher, prevState.retryCallbacks),
146
155
  snapshot: snapshot,
147
156
  requestCacheKey: null
148
157
  };
@@ -198,16 +207,16 @@ function (_React$Component) {
198
207
  // error property if set.
199
208
 
200
209
  if (process.env.NODE_ENV !== "production") {
201
- require("relay-runtime").deepFreeze(renderProps);
210
+ deepFreeze(renderProps);
202
211
  }
203
212
 
204
- return require("react").createElement(require("./ReactRelayContext").Provider, {
213
+ return React.createElement(ReactRelayContext.Provider, {
205
214
  value: relayContext
206
215
  }, this.props.render(renderProps));
207
216
  };
208
217
 
209
218
  return ReactRelayQueryRenderer;
210
- }(require("react").Component);
219
+ }(React.Component);
211
220
 
212
221
  function getContext(environment, variables) {
213
222
  return {
@@ -265,8 +274,7 @@ function getRequestCacheKey(request, variables) {
265
274
  function fetchQueryAndComputeStateFromProps(props, queryFetcher, retryCallbacks, requestCacheKey) {
266
275
  var environment = props.environment,
267
276
  query = props.query,
268
- variables = props.variables; // $FlowFixMe TODO t16225453 QueryRenderer works with old+new environment.
269
-
277
+ variables = props.variables;
270
278
  var genericEnvironment = environment;
271
279
 
272
280
  if (query) {
@@ -9,17 +9,42 @@
9
9
  */
10
10
  'use strict';
11
11
 
12
- var _extends2 = require("@babel/runtime/helpers/interopRequireDefault")(require("@babel/runtime/helpers/extends"));
12
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
13
13
 
14
- var _objectWithoutPropertiesLoose2 = require("@babel/runtime/helpers/interopRequireDefault")(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
14
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
15
15
 
16
- var _objectSpread2 = require("@babel/runtime/helpers/interopRequireDefault")(require("@babel/runtime/helpers/objectSpread"));
16
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
17
17
 
18
- var _inheritsLoose2 = require("@babel/runtime/helpers/interopRequireDefault")(require("@babel/runtime/helpers/inheritsLoose"));
18
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread"));
19
19
 
20
- var _assertThisInitialized2 = require("@babel/runtime/helpers/interopRequireDefault")(require("@babel/runtime/helpers/assertThisInitialized"));
20
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
21
21
 
22
- var _defineProperty2 = require("@babel/runtime/helpers/interopRequireDefault")(require("@babel/runtime/helpers/defineProperty"));
22
+ var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
23
+
24
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
+
26
+ var React = require("react");
27
+
28
+ var ReactRelayContext = require("./ReactRelayContext");
29
+
30
+ var ReactRelayQueryFetcher = require("./ReactRelayQueryFetcher");
31
+
32
+ var areEqual = require("fbjs/lib/areEqual");
33
+
34
+ var buildReactRelayContainer = require("./buildReactRelayContainer");
35
+
36
+ var warning = require("fbjs/lib/warning");
37
+
38
+ var _require = require("./ReactRelayContainerUtils"),
39
+ getContainerName = _require.getContainerName;
40
+
41
+ var _require2 = require("./RelayContext"),
42
+ assertRelayContext = _require2.assertRelayContext;
43
+
44
+ var _require3 = require("relay-runtime"),
45
+ Observable = _require3.Observable,
46
+ getFragmentOwners = _require3.getFragmentOwners,
47
+ isScalarAndEqual = _require3.isScalarAndEqual;
23
48
 
24
49
  /**
25
50
  * Composes a React component class, returning a new class that intercepts
@@ -27,49 +52,45 @@ var _defineProperty2 = require("@babel/runtime/helpers/interopRequireDefault")(r
27
52
  * updates.
28
53
  */
29
54
  function createContainerWithFragments(Component, fragments, taggedNode) {
30
- var containerName = require("./ReactRelayContainerUtils").getContainerName(Component);
55
+ var _class, _temp;
31
56
 
32
- var Container =
57
+ var containerName = getContainerName(Component);
58
+ return _temp = _class =
33
59
  /*#__PURE__*/
34
60
  function (_React$Component) {
35
- (0, _inheritsLoose2["default"])(Container, _React$Component);
61
+ (0, _inheritsLoose2["default"])(_class, _React$Component);
36
62
 
37
- function Container(props) {
63
+ function _class(props) {
38
64
  var _this;
39
65
 
40
66
  _this = _React$Component.call(this, props) || this;
41
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])((0, _assertThisInitialized2["default"])(_this)), "_handleFragmentDataUpdate", function () {
42
- var profiler = require("relay-runtime").RelayProfiler.profile('ReactRelayRefetchContainer.handleFragmentDataUpdate');
43
-
67
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_handleFragmentDataUpdate", function () {
44
68
  var resolverFromThisUpdate = _this.state.resolver;
45
69
 
46
70
  _this.setState(function (updatedState) {
47
- // If this event belongs to the current data source, update.
48
- // Otherwise we should ignore it.
49
- if (resolverFromThisUpdate === updatedState.resolver) {
50
- return {
71
+ return (// If this event belongs to the current data source, update.
72
+ // Otherwise we should ignore it.
73
+ resolverFromThisUpdate === updatedState.resolver ? {
51
74
  data: updatedState.resolver.resolve()
52
- };
53
- }
54
-
55
- return null;
56
- }, profiler.stop);
75
+ } : null
76
+ );
77
+ });
57
78
  });
58
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])((0, _assertThisInitialized2["default"])(_this)), "_refetch", function (refetchVariables, renderVariables, observerOrCallback, options) {
79
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "_refetch", function (refetchVariables, renderVariables, observerOrCallback, options) {
59
80
  if (_this._isUnmounted) {
60
- process.env.NODE_ENV !== "production" ? require("fbjs/lib/warning")(false, 'ReactRelayRefetchContainer: Unexpected call of `refetch` ' + 'on unmounted container `%s`. It looks like some instances ' + 'of your container still trying to refetch the data but they already ' + 'unmounted. Please make sure you clear all timers, intervals, async ' + 'calls, etc that may trigger `refetch`.', containerName) : void 0;
81
+ process.env.NODE_ENV !== "production" ? warning(false, 'ReactRelayRefetchContainer: Unexpected call of `refetch` ' + 'on unmounted container `%s`. It looks like some instances ' + 'of your container still trying to refetch the data but they already ' + 'unmounted. Please make sure you clear all timers, intervals, async ' + 'calls, etc that may trigger `refetch`.', containerName) : void 0;
61
82
  return {
62
83
  dispose: function dispose() {}
63
84
  };
64
85
  }
65
86
 
66
- var _assertRelayContext = require("./RelayContext").assertRelayContext(_this.props.__relayContext),
87
+ var _assertRelayContext = assertRelayContext(_this.props.__relayContext),
67
88
  environment = _assertRelayContext.environment,
68
89
  rootVariables = _assertRelayContext.variables;
69
90
 
70
91
  var fetchVariables = typeof refetchVariables === 'function' ? refetchVariables(_this._getFragmentVariables()) : refetchVariables;
71
92
  fetchVariables = (0, _objectSpread2["default"])({}, rootVariables, fetchVariables);
72
- var fragmentVariables = renderVariables ? (0, _objectSpread2["default"])({}, rootVariables, renderVariables) : fetchVariables;
93
+ var fragmentVariables = renderVariables ? (0, _objectSpread2["default"])({}, fetchVariables, renderVariables) : fetchVariables;
73
94
  var cacheConfig = options ? {
74
95
  force: !!options.force
75
96
  } : undefined;
@@ -100,7 +121,7 @@ function createContainerWithFragments(Component, fragments, taggedNode) {
100
121
  var storeSnapshot = _this._getQueryFetcher().lookupInStore(environment, operation);
101
122
 
102
123
  if (storeSnapshot != null) {
103
- _this.state.resolver.setVariables(fragmentVariables);
124
+ _this.state.resolver.setVariables(fragmentVariables, operation.node);
104
125
 
105
126
  _this.setState(function (latestState) {
106
127
  return {
@@ -128,9 +149,9 @@ function createContainerWithFragments(Component, fragments, taggedNode) {
128
149
  // TODO (T26430099): Cleanup old references
129
150
  preservePreviousReferences: true
130
151
  }).mergeMap(function (response) {
131
- _this.state.resolver.setVariables(fragmentVariables);
152
+ _this.state.resolver.setVariables(fragmentVariables, operation.node);
132
153
 
133
- return require("relay-runtime").Observable.create(function (sink) {
154
+ return Observable.create(function (sink) {
134
155
  return _this.setState(function (latestState) {
135
156
  return {
136
157
  data: latestState.resolver.resolve(),
@@ -163,9 +184,7 @@ function createContainerWithFragments(Component, fragments, taggedNode) {
163
184
  }
164
185
  };
165
186
  });
166
-
167
- var relayContext = require("./RelayContext").assertRelayContext(props.__relayContext);
168
-
187
+ var relayContext = assertRelayContext(props.__relayContext);
169
188
  _this._refetchSubscription = null;
170
189
  var createFragmentSpecResolver = relayContext.environment.unstable_internal.createFragmentSpecResolver; // Do not provide a subscription/callback here.
171
190
  // It is possible for this render to be interrupted or aborted,
@@ -186,7 +205,7 @@ function createContainerWithFragments(Component, fragments, taggedNode) {
186
205
  return _this;
187
206
  }
188
207
 
189
- var _proto = Container.prototype;
208
+ var _proto = _class.prototype;
190
209
 
191
210
  _proto.componentDidMount = function componentDidMount() {
192
211
  this._subscribeToNewResolver();
@@ -205,20 +224,18 @@ function createContainerWithFragments(Component, fragments, taggedNode) {
205
224
 
206
225
  this._subscribeToNewResolver();
207
226
  }
208
- };
227
+ }
209
228
  /**
210
229
  * When new props are received, read data for the new props and add it to
211
230
  * state. Props may be the same in which case previous data can be reused.
212
231
  */
232
+ ;
213
233
 
214
-
215
- Container.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {
234
+ _class.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {
216
235
  // Any props change could impact the query, so we mirror props in state.
217
236
  // This is an unusual pattern, but necessary for this container usecase.
218
237
  var prevProps = prevState.prevProps;
219
-
220
- var relayContext = require("./RelayContext").assertRelayContext(nextProps.__relayContext);
221
-
238
+ var relayContext = assertRelayContext(nextProps.__relayContext);
222
239
  var _relayContext$environ = relayContext.environment.unstable_internal,
223
240
  createFragmentSpecResolver = _relayContext$environ.createFragmentSpecResolver,
224
241
  getDataIDsFromObject = _relayContext$environ.getDataIDsFromObject;
@@ -230,7 +247,7 @@ function createContainerWithFragments(Component, fragments, taggedNode) {
230
247
  // - Existing references are based on old variables.
231
248
  // - Pending fetches are for the previous records.
232
249
 
233
- if (prevState.prevPropsContext.environment !== relayContext.environment || prevState.prevPropsContext.variables !== relayContext.variables || !require("fbjs/lib/areEqual")(prevIDs, nextIDs)) {
250
+ if (prevState.prevPropsContext.environment !== relayContext.environment || prevState.prevPropsContext.variables !== relayContext.variables || !areEqual(prevIDs, nextIDs)) {
234
251
  // Do not provide a subscription/callback here.
235
252
  // It is possible for this render to be interrupted or aborted,
236
253
  // In which case the subscription would cause a leak.
@@ -286,7 +303,7 @@ function createContainerWithFragments(Component, fragments, taggedNode) {
286
303
  return true;
287
304
  }
288
305
  } else {
289
- if (!fragments.hasOwnProperty(_key) && !require("relay-runtime").isScalarAndEqual(nextProps[_key], this.props[_key])) {
306
+ if (!fragments.hasOwnProperty(_key) && !isScalarAndEqual(nextProps[_key], this.props[_key])) {
290
307
  return true;
291
308
  }
292
309
  }
@@ -311,20 +328,22 @@ function createContainerWithFragments(Component, fragments, taggedNode) {
311
328
  data: maybeNewData
312
329
  });
313
330
  }
314
- };
331
+ }
315
332
  /**
316
333
  * Render new data for the existing props/context.
317
334
  */
318
-
335
+ ;
319
336
 
320
337
  _proto._getFragmentVariables = function _getFragmentVariables() {
321
338
  var getVariablesFromObject = this.props.__relayContext.environment.unstable_internal.getVariablesFromObject;
322
- return getVariablesFromObject(this.props.__relayContext.variables, fragments, this.props);
339
+ return getVariablesFromObject( // NOTE: We pass empty operationVariables because we want to prefer
340
+ // the variables from the fragment owner
341
+ {}, fragments, this.props, getFragmentOwners(fragments, this.props));
323
342
  };
324
343
 
325
344
  _proto._getQueryFetcher = function _getQueryFetcher() {
326
345
  if (!this._queryFetcher) {
327
- this._queryFetcher = new (require("./ReactRelayQueryFetcher"))();
346
+ this._queryFetcher = new ReactRelayQueryFetcher();
328
347
  }
329
348
 
330
349
  return this._queryFetcher;
@@ -338,22 +357,16 @@ function createContainerWithFragments(Component, fragments, taggedNode) {
338
357
  var _this$state2 = this.state,
339
358
  relayProp = _this$state2.relayProp,
340
359
  contextForChildren = _this$state2.contextForChildren;
341
- return require("react").createElement(require("./ReactRelayContext").Provider, {
360
+ return React.createElement(ReactRelayContext.Provider, {
342
361
  value: contextForChildren
343
- }, require("react").createElement(Component, (0, _extends2["default"])({}, props, this.state.data, {
362
+ }, React.createElement(Component, (0, _extends2["default"])({}, props, this.state.data, {
344
363
  ref: componentRef,
345
364
  relay: relayProp
346
365
  })));
347
366
  };
348
367
 
349
- return Container;
350
- }(require("react").Component);
351
-
352
- (0, _defineProperty2["default"])(Container, "displayName", containerName);
353
-
354
- require("./ReactRelayContainerProfiler").profileContainer(Container, 'ReactRelayRefetchContainer');
355
-
356
- return Container;
368
+ return _class;
369
+ }(React.Component), (0, _defineProperty2["default"])(_class, "displayName", containerName), _temp;
357
370
  }
358
371
 
359
372
  function getRelayProp(environment, refetch) {
@@ -372,12 +385,11 @@ function getRelayProp(environment, refetch) {
372
385
 
373
386
 
374
387
  function createContainer(Component, fragmentSpec, taggedNode) {
375
- return require("./buildReactRelayContainer")(Component, fragmentSpec, function (ComponentClass, fragments) {
388
+ return buildReactRelayContainer(Component, fragmentSpec, function (ComponentClass, fragments) {
376
389
  return createContainerWithFragments(ComponentClass, fragments, taggedNode);
377
390
  });
378
391
  }
379
392
 
380
393
  module.exports = {
381
- createContainer: createContainer,
382
- createContainerWithFragments: createContainerWithFragments
394
+ createContainer: createContainer
383
395
  };