relay-runtime 11.0.1 → 13.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/handlers/RelayDefaultHandlerProvider.js.flow +2 -2
  2. package/handlers/connection/ConnectionHandler.js.flow +8 -17
  3. package/handlers/connection/MutationHandlers.js.flow +7 -11
  4. package/index.js +1 -1
  5. package/index.js.flow +60 -36
  6. package/lib/handlers/RelayDefaultHandlerProvider.js +1 -1
  7. package/lib/handlers/connection/ConnectionHandler.js +13 -19
  8. package/lib/handlers/connection/MutationHandlers.js +4 -7
  9. package/lib/index.js +58 -43
  10. package/lib/multi-actor-environment/ActorIdentifier.js +33 -0
  11. package/lib/multi-actor-environment/ActorSpecificEnvironment.js +152 -0
  12. package/lib/multi-actor-environment/ActorUtils.js +27 -0
  13. package/lib/multi-actor-environment/MultiActorEnvironment.js +419 -0
  14. package/lib/multi-actor-environment/MultiActorEnvironmentTypes.js +11 -0
  15. package/lib/multi-actor-environment/index.js +21 -0
  16. package/lib/mutations/RelayDeclarativeMutationConfig.js +4 -1
  17. package/lib/mutations/RelayRecordProxy.js +3 -2
  18. package/lib/mutations/RelayRecordSourceMutator.js +3 -2
  19. package/lib/mutations/RelayRecordSourceProxy.js +12 -4
  20. package/lib/mutations/RelayRecordSourceSelectorProxy.js +18 -5
  21. package/lib/mutations/applyOptimisticMutation.js +6 -6
  22. package/lib/mutations/commitMutation.js +14 -10
  23. package/lib/mutations/readUpdatableQuery_EXPERIMENTAL.js +238 -0
  24. package/lib/mutations/validateMutation.js +10 -5
  25. package/lib/network/ConvertToExecuteFunction.js +2 -1
  26. package/lib/network/RelayNetwork.js +3 -2
  27. package/lib/network/RelayQueryResponseCache.js +21 -5
  28. package/lib/network/wrapNetworkWithLogObserver.js +79 -0
  29. package/lib/query/GraphQLTag.js +3 -2
  30. package/lib/query/fetchQuery.js +6 -5
  31. package/lib/query/fetchQueryInternal.js +1 -1
  32. package/lib/query/fetchQuery_DEPRECATED.js +2 -1
  33. package/lib/store/ClientID.js +7 -1
  34. package/lib/store/DataChecker.js +123 -54
  35. package/lib/store/{RelayModernQueryExecutor.js → OperationExecutor.js} +518 -200
  36. package/lib/store/RelayConcreteVariables.js +26 -8
  37. package/lib/store/RelayExperimentalGraphResponseHandler.js +153 -0
  38. package/lib/store/RelayExperimentalGraphResponseTransform.js +391 -0
  39. package/lib/store/RelayModernEnvironment.js +175 -240
  40. package/lib/store/RelayModernFragmentSpecResolver.js +52 -26
  41. package/lib/store/RelayModernOperationDescriptor.js +2 -1
  42. package/lib/store/RelayModernRecord.js +47 -12
  43. package/lib/store/RelayModernSelector.js +14 -8
  44. package/lib/store/RelayModernStore.js +56 -28
  45. package/lib/store/RelayOperationTracker.js +34 -24
  46. package/lib/store/RelayPublishQueue.js +41 -13
  47. package/lib/store/RelayReader.js +288 -48
  48. package/lib/store/RelayRecordSource.js +87 -3
  49. package/lib/store/RelayReferenceMarker.js +34 -22
  50. package/lib/store/RelayResponseNormalizer.js +211 -110
  51. package/lib/store/RelayStoreReactFlightUtils.js +4 -10
  52. package/lib/store/RelayStoreSubscriptions.js +14 -9
  53. package/lib/store/RelayStoreUtils.js +12 -7
  54. package/lib/store/ResolverCache.js +213 -0
  55. package/lib/store/ResolverFragments.js +61 -0
  56. package/lib/store/cloneRelayHandleSourceField.js +5 -4
  57. package/lib/store/cloneRelayScalarHandleSourceField.js +5 -4
  58. package/lib/store/createRelayContext.js +4 -2
  59. package/lib/store/readInlineData.js +6 -2
  60. package/lib/subscription/requestSubscription.js +34 -25
  61. package/lib/util/RelayConcreteNode.js +3 -0
  62. package/lib/util/RelayFeatureFlags.js +10 -4
  63. package/lib/util/RelayProfiler.js +17 -187
  64. package/lib/util/RelayReplaySubject.js +22 -7
  65. package/lib/util/RelayRuntimeTypes.js +0 -6
  66. package/lib/util/StringInterner.js +71 -0
  67. package/lib/util/getFragmentIdentifier.js +15 -7
  68. package/lib/util/getOperation.js +2 -1
  69. package/lib/util/getPaginationMetadata.js +41 -0
  70. package/lib/util/getPaginationVariables.js +66 -0
  71. package/lib/util/getPendingOperationsForFragment.js +55 -0
  72. package/lib/util/getRefetchMetadata.js +36 -0
  73. package/lib/util/getRelayHandleKey.js +2 -2
  74. package/lib/util/getRequestIdentifier.js +2 -2
  75. package/lib/util/getValueAtPath.js +51 -0
  76. package/lib/util/isEmptyObject.js +1 -1
  77. package/lib/util/registerEnvironmentWithDevTools.js +26 -0
  78. package/lib/util/withDuration.js +31 -0
  79. package/multi-actor-environment/ActorIdentifier.js.flow +43 -0
  80. package/multi-actor-environment/ActorSpecificEnvironment.js.flow +225 -0
  81. package/multi-actor-environment/ActorUtils.js.flow +33 -0
  82. package/multi-actor-environment/MultiActorEnvironment.js.flow +506 -0
  83. package/multi-actor-environment/MultiActorEnvironmentTypes.js.flow +261 -0
  84. package/multi-actor-environment/index.js.flow +26 -0
  85. package/mutations/RelayDeclarativeMutationConfig.js.flow +32 -26
  86. package/mutations/RelayRecordProxy.js.flow +4 -5
  87. package/mutations/RelayRecordSourceMutator.js.flow +4 -6
  88. package/mutations/RelayRecordSourceProxy.js.flow +19 -10
  89. package/mutations/RelayRecordSourceSelectorProxy.js.flow +22 -7
  90. package/mutations/applyOptimisticMutation.js.flow +13 -14
  91. package/mutations/commitLocalUpdate.js.flow +1 -1
  92. package/mutations/commitMutation.js.flow +35 -46
  93. package/mutations/readUpdatableQuery_EXPERIMENTAL.js.flow +309 -0
  94. package/mutations/validateMutation.js.flow +26 -16
  95. package/network/ConvertToExecuteFunction.js.flow +2 -2
  96. package/network/RelayNetwork.js.flow +4 -5
  97. package/network/RelayNetworkTypes.js.flow +5 -4
  98. package/network/RelayObservable.js.flow +1 -1
  99. package/network/RelayQueryResponseCache.js.flow +34 -21
  100. package/network/wrapNetworkWithLogObserver.js.flow +100 -0
  101. package/package.json +3 -2
  102. package/query/GraphQLTag.js.flow +9 -9
  103. package/query/PreloadableQueryRegistry.js.flow +2 -1
  104. package/query/fetchQuery.js.flow +11 -13
  105. package/query/fetchQueryInternal.js.flow +6 -9
  106. package/query/fetchQuery_DEPRECATED.js.flow +6 -6
  107. package/relay-runtime.js +2 -2
  108. package/relay-runtime.min.js +2 -2
  109. package/store/ClientID.js.flow +14 -3
  110. package/store/DataChecker.js.flow +141 -59
  111. package/store/{RelayModernQueryExecutor.js.flow → OperationExecutor.js.flow} +605 -303
  112. package/store/RelayConcreteVariables.js.flow +27 -8
  113. package/store/RelayExperimentalGraphResponseHandler.js.flow +124 -0
  114. package/store/RelayExperimentalGraphResponseTransform.js.flow +475 -0
  115. package/store/RelayModernEnvironment.js.flow +173 -240
  116. package/store/RelayModernFragmentSpecResolver.js.flow +55 -31
  117. package/store/RelayModernOperationDescriptor.js.flow +12 -7
  118. package/store/RelayModernRecord.js.flow +67 -11
  119. package/store/RelayModernSelector.js.flow +24 -14
  120. package/store/RelayModernStore.js.flow +66 -36
  121. package/store/RelayOperationTracker.js.flow +59 -43
  122. package/store/RelayOptimisticRecordSource.js.flow +2 -2
  123. package/store/RelayPublishQueue.js.flow +79 -34
  124. package/store/RelayReader.js.flow +351 -73
  125. package/store/RelayRecordSource.js.flow +72 -6
  126. package/store/RelayReferenceMarker.js.flow +40 -26
  127. package/store/RelayResponseNormalizer.js.flow +258 -99
  128. package/store/RelayStoreReactFlightUtils.js.flow +4 -11
  129. package/store/RelayStoreSubscriptions.js.flow +19 -11
  130. package/store/RelayStoreTypes.js.flow +209 -43
  131. package/store/RelayStoreUtils.js.flow +24 -11
  132. package/store/ResolverCache.js.flow +249 -0
  133. package/store/ResolverFragments.js.flow +121 -0
  134. package/store/StoreInspector.js.flow +2 -2
  135. package/store/TypeID.js.flow +1 -1
  136. package/store/ViewerPattern.js.flow +2 -2
  137. package/store/cloneRelayHandleSourceField.js.flow +5 -6
  138. package/store/cloneRelayScalarHandleSourceField.js.flow +5 -6
  139. package/store/createFragmentSpecResolver.js.flow +3 -4
  140. package/store/createRelayContext.js.flow +3 -3
  141. package/store/normalizeRelayPayload.js.flow +6 -7
  142. package/store/readInlineData.js.flow +7 -8
  143. package/subscription/requestSubscription.js.flow +53 -41
  144. package/util/NormalizationNode.js.flow +10 -3
  145. package/util/ReaderNode.js.flow +38 -2
  146. package/util/RelayConcreteNode.js.flow +5 -0
  147. package/util/RelayFeatureFlags.js.flow +24 -10
  148. package/util/RelayProfiler.js.flow +22 -194
  149. package/util/RelayReplaySubject.js.flow +9 -9
  150. package/util/RelayRuntimeTypes.js.flow +72 -3
  151. package/util/StringInterner.js.flow +69 -0
  152. package/util/createPayloadFor3DField.js.flow +3 -3
  153. package/util/getFragmentIdentifier.js.flow +27 -15
  154. package/util/getOperation.js.flow +2 -2
  155. package/util/getPaginationMetadata.js.flow +72 -0
  156. package/util/getPaginationVariables.js.flow +108 -0
  157. package/util/getPendingOperationsForFragment.js.flow +62 -0
  158. package/util/getRefetchMetadata.js.flow +79 -0
  159. package/util/getRelayHandleKey.js.flow +1 -2
  160. package/util/getRequestIdentifier.js.flow +3 -3
  161. package/util/getValueAtPath.js.flow +46 -0
  162. package/util/isEmptyObject.js.flow +1 -0
  163. package/util/registerEnvironmentWithDevTools.js.flow +33 -0
  164. package/util/resolveImmediate.js.flow +1 -1
  165. package/util/withDuration.js.flow +32 -0
  166. package/lib/store/RelayRecordSourceMapImpl.js +0 -107
  167. package/lib/store/RelayStoreSubscriptionsUsingMapByID.js +0 -318
  168. package/store/RelayRecordSourceMapImpl.js.flow +0 -91
  169. package/store/RelayStoreSubscriptionsUsingMapByID.js.flow +0 -283
@@ -14,26 +14,30 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
14
14
 
15
15
  var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
16
16
 
17
+ var getOperation = require('../util/getOperation');
18
+
17
19
  var RelayConcreteNode = require('../util/RelayConcreteNode');
18
20
 
19
21
  var RelayFeatureFlags = require('../util/RelayFeatureFlags');
20
22
 
23
+ var cloneRelayHandleSourceField = require('./cloneRelayHandleSourceField');
24
+
25
+ var _require = require('./RelayConcreteVariables'),
26
+ getLocalVariables = _require.getLocalVariables;
27
+
21
28
  var RelayModernRecord = require('./RelayModernRecord');
22
29
 
23
30
  var RelayStoreReactFlightUtils = require('./RelayStoreReactFlightUtils');
24
31
 
25
32
  var RelayStoreUtils = require('./RelayStoreUtils');
26
33
 
27
- var cloneRelayHandleSourceField = require('./cloneRelayHandleSourceField');
28
-
29
- var getOperation = require('../util/getOperation');
34
+ var _require2 = require('./TypeID'),
35
+ generateTypeID = _require2.generateTypeID;
30
36
 
31
- var invariant = require("fbjs/lib/invariant");
37
+ var invariant = require('invariant');
32
38
 
33
- var _require = require('./TypeID'),
34
- generateTypeID = _require.generateTypeID;
35
-
36
- var CONDITION = RelayConcreteNode.CONDITION,
39
+ var ACTOR_CHANGE = RelayConcreteNode.ACTOR_CHANGE,
40
+ CONDITION = RelayConcreteNode.CONDITION,
37
41
  CLIENT_COMPONENT = RelayConcreteNode.CLIENT_COMPONENT,
38
42
  CLIENT_EXTENSION = RelayConcreteNode.CLIENT_EXTENSION,
39
43
  DEFER = RelayConcreteNode.DEFER,
@@ -96,8 +100,7 @@ var RelayReferenceMarker = /*#__PURE__*/function () {
96
100
  };
97
101
 
98
102
  _proto._getVariableValue = function _getVariableValue(name) {
99
- !this._variables.hasOwnProperty(name) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayReferenceMarker(): Undefined variable `%s`.', name) : invariant(false) : void 0; // $FlowFixMe[cannot-write]
100
-
103
+ !this._variables.hasOwnProperty(name) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayReferenceMarker(): Undefined variable `%s`.', name) : invariant(false) : void 0;
101
104
  return this._variables[name];
102
105
  };
103
106
 
@@ -107,6 +110,12 @@ var RelayReferenceMarker = /*#__PURE__*/function () {
107
110
  selections.forEach(function (selection) {
108
111
  /* eslint-disable no-fallthrough */
109
112
  switch (selection.kind) {
113
+ case ACTOR_CHANGE:
114
+ // TODO: T89695151 Support multi-actor record sources in RelayReferenceMarker.js
115
+ _this._traverseLink(selection.linkedField, record);
116
+
117
+ break;
118
+
110
119
  case LINKED_FIELD:
111
120
  if (selection.plural) {
112
121
  _this._traversePluralLink(selection, record);
@@ -117,7 +126,7 @@ var RelayReferenceMarker = /*#__PURE__*/function () {
117
126
  break;
118
127
 
119
128
  case CONDITION:
120
- var conditionValue = _this._getVariableValue(selection.condition);
129
+ var conditionValue = Boolean(_this._getVariableValue(selection.condition));
121
130
 
122
131
  if (conditionValue === selection.passingValue) {
123
132
  _this._traverseSelections(selection.selections, record);
@@ -132,24 +141,25 @@ var RelayReferenceMarker = /*#__PURE__*/function () {
132
141
  if (typeName != null && typeName === selection.type) {
133
142
  _this._traverseSelections(selection.selections, record);
134
143
  }
135
- } else if (RelayFeatureFlags.ENABLE_PRECISE_TYPE_REFINEMENT) {
144
+ } else {
136
145
  var _typeName = RelayModernRecord.getType(record);
137
146
 
138
147
  var typeID = generateTypeID(_typeName);
139
148
 
140
149
  _this._references.add(typeID);
141
150
 
142
- _this._traverseSelections(selection.selections, record);
143
- } else {
144
151
  _this._traverseSelections(selection.selections, record);
145
152
  }
146
153
 
147
154
  break;
148
- // $FlowFixMe[incompatible-type]
149
155
 
150
156
  case FRAGMENT_SPREAD:
157
+ var prevVariables = _this._variables;
158
+ _this._variables = getLocalVariables(_this._variables, selection.fragment.argumentDefinitions, selection.args);
159
+
151
160
  _this._traverseSelections(selection.fragment.selections, record);
152
161
 
162
+ _this._variables = prevVariables;
153
163
  break;
154
164
 
155
165
  case LINKED_HANDLE:
@@ -184,13 +194,11 @@ var RelayReferenceMarker = /*#__PURE__*/function () {
184
194
 
185
195
  case TYPE_DISCRIMINATOR:
186
196
  {
187
- if (RelayFeatureFlags.ENABLE_PRECISE_TYPE_REFINEMENT) {
188
- var _typeName2 = RelayModernRecord.getType(record);
197
+ var _typeName2 = RelayModernRecord.getType(record);
189
198
 
190
- var _typeID = generateTypeID(_typeName2);
199
+ var _typeID = generateTypeID(_typeName2);
191
200
 
192
- _this._references.add(_typeID);
193
- }
201
+ _this._references.add(_typeID);
194
202
 
195
203
  break;
196
204
  }
@@ -245,9 +253,13 @@ var RelayReferenceMarker = /*#__PURE__*/function () {
245
253
  var normalizationRootNode = operationLoader.get(operationReference);
246
254
 
247
255
  if (normalizationRootNode != null) {
248
- var selections = getOperation(normalizationRootNode).selections;
256
+ var operation = getOperation(normalizationRootNode);
257
+ var prevVariables = this._variables;
258
+ this._variables = getLocalVariables(this._variables, operation.argumentDefinitions, moduleImport.args);
259
+
260
+ this._traverseSelections(operation.selections, record);
249
261
 
250
- this._traverseSelections(selections, record);
262
+ this._variables = prevVariables;
251
263
  } // Otherwise, if the operation is not available, we assume that the data
252
264
  // cannot have been processed yet and therefore isn't in the store to
253
265
  // begin with.