relay-runtime 10.0.1 → 10.1.3

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 (82) hide show
  1. package/handlers/RelayDefaultHandlerProvider.js.flow +6 -0
  2. package/handlers/connection/MutationHandlers.js.flow +152 -20
  3. package/index.js +1 -1
  4. package/index.js.flow +17 -1
  5. package/lib/handlers/RelayDefaultHandlerProvider.js +9 -0
  6. package/lib/handlers/connection/MutationHandlers.js +185 -21
  7. package/lib/index.js +7 -0
  8. package/lib/mutations/RelayDeclarativeMutationConfig.js +5 -7
  9. package/lib/mutations/commitMutation.js +1 -4
  10. package/lib/mutations/validateMutation.js +28 -12
  11. package/lib/network/RelayQueryResponseCache.js +3 -7
  12. package/lib/query/GraphQLTag.js +2 -1
  13. package/lib/query/fetchQuery.js +2 -3
  14. package/lib/query/fetchQueryInternal.js +2 -3
  15. package/lib/store/DataChecker.js +85 -10
  16. package/lib/store/RelayConcreteVariables.js +2 -6
  17. package/lib/store/RelayModernEnvironment.js +81 -72
  18. package/lib/store/RelayModernFragmentSpecResolver.js +14 -7
  19. package/lib/store/RelayModernOperationDescriptor.js +6 -5
  20. package/lib/store/RelayModernQueryExecutor.js +46 -33
  21. package/lib/store/RelayModernRecord.js +3 -7
  22. package/lib/store/RelayModernStore.js +39 -137
  23. package/lib/store/RelayOperationTracker.js +7 -9
  24. package/lib/store/RelayOptimisticRecordSource.js +2 -6
  25. package/lib/store/RelayPublishQueue.js +1 -1
  26. package/lib/store/RelayReader.js +196 -33
  27. package/lib/store/RelayRecordSourceMapImpl.js +3 -5
  28. package/lib/store/RelayReferenceMarker.js +87 -5
  29. package/lib/store/RelayResponseNormalizer.js +115 -19
  30. package/lib/store/RelayStoreReactFlightUtils.js +47 -0
  31. package/lib/store/RelayStoreSubscriptions.js +162 -0
  32. package/lib/store/RelayStoreSubscriptionsUsingMapByID.js +258 -0
  33. package/lib/store/StoreInspector.js +2 -6
  34. package/lib/store/createRelayContext.js +5 -0
  35. package/lib/store/defaultRequiredFieldLogger.js +18 -0
  36. package/lib/store/normalizeRelayPayload.js +2 -6
  37. package/lib/subscription/requestSubscription.js +2 -3
  38. package/lib/util/NormalizationNode.js +1 -5
  39. package/lib/util/RelayConcreteNode.js +2 -0
  40. package/lib/util/RelayFeatureFlags.js +7 -2
  41. package/lib/util/createPayloadFor3DField.js +2 -7
  42. package/lib/util/getFragmentIdentifier.js +12 -3
  43. package/lib/util/getOperation.js +33 -0
  44. package/lib/util/isEmptyObject.js +25 -0
  45. package/lib/util/recycleNodesInto.js +4 -1
  46. package/lib/util/reportMissingRequiredFields.js +48 -0
  47. package/mutations/commitMutation.js.flow +1 -2
  48. package/mutations/validateMutation.js.flow +34 -5
  49. package/network/RelayNetworkTypes.js.flow +22 -0
  50. package/package.json +2 -2
  51. package/query/GraphQLTag.js.flow +3 -1
  52. package/query/fetchQuery.js.flow +2 -2
  53. package/query/fetchQueryInternal.js.flow +0 -5
  54. package/relay-runtime.js +2 -2
  55. package/relay-runtime.min.js +2 -2
  56. package/store/DataChecker.js.flow +68 -2
  57. package/store/RelayModernEnvironment.js.flow +107 -87
  58. package/store/RelayModernFragmentSpecResolver.js.flow +13 -1
  59. package/store/RelayModernOperationDescriptor.js.flow +5 -1
  60. package/store/RelayModernQueryExecutor.js.flow +47 -23
  61. package/store/RelayModernStore.js.flow +33 -107
  62. package/store/RelayPublishQueue.js.flow +1 -1
  63. package/store/RelayReader.js.flow +180 -15
  64. package/store/RelayReferenceMarker.js.flow +72 -5
  65. package/store/RelayResponseNormalizer.js.flow +130 -19
  66. package/store/RelayStoreReactFlightUtils.js.flow +64 -0
  67. package/store/RelayStoreSubscriptions.js.flow +168 -0
  68. package/store/RelayStoreSubscriptionsUsingMapByID.js.flow +259 -0
  69. package/store/RelayStoreTypes.js.flow +130 -37
  70. package/store/createRelayContext.js.flow +3 -0
  71. package/store/defaultRequiredFieldLogger.js.flow +23 -0
  72. package/subscription/requestSubscription.js.flow +5 -2
  73. package/util/NormalizationNode.js.flow +17 -2
  74. package/util/ReaderNode.js.flow +20 -1
  75. package/util/RelayConcreteNode.js.flow +6 -0
  76. package/util/RelayFeatureFlags.js.flow +12 -1
  77. package/util/getFragmentIdentifier.js.flow +33 -9
  78. package/util/getOperation.js.flow +40 -0
  79. package/util/getRequestIdentifier.js.flow +1 -1
  80. package/util/isEmptyObject.js.flow +25 -0
  81. package/util/recycleNodesInto.js.flow +11 -0
  82. package/util/reportMissingRequiredFields.js.flow +51 -0
@@ -16,8 +16,6 @@ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers
16
16
 
17
17
  var RelayDeclarativeMutationConfig = require('./RelayDeclarativeMutationConfig');
18
18
 
19
- var RelayFeatureFlags = require('../util/RelayFeatureFlags');
20
-
21
19
  var invariant = require("fbjs/lib/invariant");
22
20
 
23
21
  var isRelayModernEnvironment = require('../store/isRelayModernEnvironment');
@@ -60,7 +58,7 @@ function commitMutation(environment, config) {
60
58
  onUnsubscribe = config.onUnsubscribe,
61
59
  variables = config.variables,
62
60
  uploadables = config.uploadables;
63
- var operation = createOperationDescriptor(mutation, variables, generateUniqueClientID()); // TODO: remove this check after we fix flow.
61
+ var operation = createOperationDescriptor(mutation, variables, cacheConfig, generateUniqueClientID()); // TODO: remove this check after we fix flow.
64
62
 
65
63
  if (typeof optimisticResponse === 'function') {
66
64
  optimisticResponse = optimisticResponse();
@@ -82,7 +80,6 @@ function commitMutation(environment, config) {
82
80
 
83
81
  var errors = [];
84
82
  var subscription = environment.executeMutation({
85
- cacheConfig: cacheConfig,
86
83
  operation: operation,
87
84
  optimisticResponse: optimisticResponse,
88
85
  optimisticUpdater: optimisticUpdater,
@@ -12,14 +12,12 @@
12
12
 
13
13
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
14
14
 
15
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
-
17
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
18
-
19
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
15
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
20
16
 
21
17
  var warning = require("fbjs/lib/warning");
22
18
 
19
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
20
+
23
21
  var validateMutation = function validateMutation() {};
24
22
 
25
23
  if (process.env.NODE_ENV !== "production") {
@@ -45,7 +43,8 @@ if (process.env.NODE_ENV !== "production") {
45
43
  visitedPaths: new Set(),
46
44
  variables: variables || {},
47
45
  missingDiff: {},
48
- extraDiff: {}
46
+ extraDiff: {},
47
+ moduleImportPaths: new Set()
49
48
  };
50
49
  validateSelections(optimisticResponse, mutation.operation.selections, context);
51
50
  validateOptimisticResponse(optimisticResponse, context);
@@ -67,6 +66,7 @@ if (process.env.NODE_ENV !== "production") {
67
66
 
68
67
  case 'ScalarField':
69
68
  case 'LinkedField':
69
+ case 'FlightField':
70
70
  return validateField(optimisticResponse, selection, context);
71
71
 
72
72
  case 'InlineFragment':
@@ -88,6 +88,8 @@ if (process.env.NODE_ENV !== "production") {
88
88
  return;
89
89
 
90
90
  case 'ModuleImport':
91
+ return validateModuleImport(context);
92
+
91
93
  case 'LinkedHandle':
92
94
  case 'ScalarHandle':
93
95
  case 'Defer':
@@ -104,6 +106,10 @@ if (process.env.NODE_ENV !== "production") {
104
106
  }
105
107
  };
106
108
 
109
+ var validateModuleImport = function validateModuleImport(context) {
110
+ context.moduleImportPaths.add(context.path);
111
+ };
112
+
107
113
  var validateField = function validateField(optimisticResponse, field, context) {
108
114
  var fieldName = field.alias || field.name;
109
115
  var path = "".concat(context.path, ".").concat(fieldName);
@@ -111,7 +117,7 @@ if (process.env.NODE_ENV !== "production") {
111
117
 
112
118
  switch (field.kind) {
113
119
  case 'ScalarField':
114
- if (optimisticResponse.hasOwnProperty(fieldName) === false) {
120
+ if (hasOwnProperty.call(optimisticResponse, fieldName) === false) {
115
121
  addFieldToDiff(path, context.missingDiff, true);
116
122
  }
117
123
 
@@ -120,7 +126,7 @@ if (process.env.NODE_ENV !== "production") {
120
126
  case 'LinkedField':
121
127
  var selections = field.selections;
122
128
 
123
- if (optimisticResponse[fieldName] === null || Object.hasOwnProperty(fieldName) && optimisticResponse[fieldName] === undefined) {
129
+ if (optimisticResponse[fieldName] === null || hasOwnProperty.call(optimisticResponse, fieldName) && optimisticResponse[fieldName] === undefined) {
124
130
  return;
125
131
  }
126
132
 
@@ -128,7 +134,7 @@ if (process.env.NODE_ENV !== "production") {
128
134
  if (Array.isArray(optimisticResponse[fieldName])) {
129
135
  optimisticResponse[fieldName].forEach(function (r) {
130
136
  if (r !== null) {
131
- validateSelections(r, selections, _objectSpread({}, context, {
137
+ validateSelections(r, selections, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, context), {}, {
132
138
  path: path
133
139
  }));
134
140
  }
@@ -140,7 +146,7 @@ if (process.env.NODE_ENV !== "production") {
140
146
  }
141
147
  } else {
142
148
  if (optimisticResponse[fieldName] instanceof Object) {
143
- validateSelections(optimisticResponse[fieldName], selections, _objectSpread({}, context, {
149
+ validateSelections(optimisticResponse[fieldName], selections, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, context), {}, {
144
150
  path: path
145
151
  }));
146
152
  return;
@@ -150,6 +156,12 @@ if (process.env.NODE_ENV !== "production") {
150
156
  }
151
157
  }
152
158
 
159
+ case 'FlightField':
160
+ if (optimisticResponse[fieldName] === null || hasOwnProperty.call(optimisticResponse, fieldName) && optimisticResponse[fieldName] === undefined) {
161
+ return;
162
+ }
163
+
164
+ throw new Error('validateMutation: Flight fields are not compatible with ' + 'optimistic updates, as React does not have the component code ' + 'necessary to process new data on the client. Instead, you ' + 'should update your code to require a full refetch of the Flight ' + 'field so your UI can be updated.');
153
165
  }
154
166
  };
155
167
 
@@ -165,7 +177,11 @@ if (process.env.NODE_ENV !== "production") {
165
177
 
166
178
  Object.keys(optimisticResponse).forEach(function (key) {
167
179
  var value = optimisticResponse[key];
168
- var path = "".concat(context.path, ".").concat(key);
180
+ var path = "".concat(context.path, ".").concat(key); // if it's a module import path we don't have an ast so we cannot validate it
181
+
182
+ if (context.moduleImportPaths.has(path)) {
183
+ return;
184
+ }
169
185
 
170
186
  if (!context.visitedPaths.has(path)) {
171
187
  addFieldToDiff(path, context.extraDiff);
@@ -173,7 +189,7 @@ if (process.env.NODE_ENV !== "production") {
173
189
  }
174
190
 
175
191
  if (value instanceof Object) {
176
- validateOptimisticResponse(value, _objectSpread({}, context, {
192
+ validateOptimisticResponse(value, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, context), {}, {
177
193
  path: path
178
194
  }));
179
195
  }
@@ -12,11 +12,7 @@
12
12
 
13
13
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
14
14
 
15
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
-
17
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
18
-
19
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
15
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
20
16
 
21
17
  var invariant = require("fbjs/lib/invariant");
22
18
 
@@ -57,8 +53,8 @@ var RelayQueryResponseCache = /*#__PURE__*/function () {
57
53
 
58
54
  var response = this._responses.get(cacheKey);
59
55
 
60
- return response != null ? _objectSpread({}, response.payload, {
61
- extensions: _objectSpread({}, response.payload.extensions, {
56
+ return response != null ? (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, response.payload), {}, {
57
+ extensions: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, response.payload.extensions), {}, {
62
58
  cacheTimestamp: response.fetchTime
63
59
  })
64
60
  }) : null;
@@ -21,7 +21,7 @@ var warning = require("fbjs/lib/warning");
21
21
  * All calls to this function should be transformed by the plugin.
22
22
  */
23
23
  function graphql(strings) {
24
- !false ? process.env.NODE_ENV !== "production" ? invariant(false, 'graphql: Unexpected invocation at runtime. Either the Babel transform ' + 'was not set up, or it failed to identify this call site. Make sure it ' + 'is being used verbatim as `graphql`.') : invariant(false) : void 0;
24
+ !false ? process.env.NODE_ENV !== "production" ? invariant(false, 'graphql: Unexpected invocation at runtime. Either the Babel transform ' + 'was not set up, or it failed to identify this call site. Make sure it ' + 'is being used verbatim as `graphql`. Note also that there cannot be ' + 'a space between graphql and the backtick that follows.') : invariant(false) : void 0;
25
25
  }
26
26
 
27
27
  function getNode(taggedNode) {
@@ -100,6 +100,7 @@ function getInlineDataFragment(taggedNode) {
100
100
 
101
101
  module.exports = {
102
102
  getFragment: getFragment,
103
+ getNode: getNode,
103
104
  getPaginationFragment: getPaginationFragment,
104
105
  getRefetchableFragment: getRefetchableFragment,
105
106
  getRequest: getRequest,
@@ -28,10 +28,9 @@ function fetchQuery(environment, taggedNode, variables, cacheConfig) {
28
28
  throw new Error('fetchQuery: Expected query operation');
29
29
  }
30
30
 
31
- var operation = createOperationDescriptor(query, variables);
31
+ var operation = createOperationDescriptor(query, variables, cacheConfig);
32
32
  return environment.execute({
33
- operation: operation,
34
- cacheConfig: cacheConfig
33
+ operation: operation
35
34
  }).map(function () {
36
35
  return environment.lookup(operation.fragment).data;
37
36
  }).toPromise();
@@ -82,11 +82,10 @@ var requestCachesByEnvironment = WEAKMAP_SUPPORTED ? new WeakMap() : new Map();
82
82
  * ```
83
83
  */
84
84
 
85
- function fetchQuery(environment, operation, options) {
85
+ function fetchQuery(environment, operation) {
86
86
  return fetchQueryDeduped(environment, operation.request.identifier, function () {
87
87
  return environment.execute({
88
- operation: operation,
89
- cacheConfig: options === null || options === void 0 ? void 0 : options.networkCacheConfig
88
+ operation: operation
90
89
  });
91
90
  });
92
91
  }
@@ -11,11 +11,9 @@
11
11
  // flowlint ambiguous-object-type:error
12
12
  'use strict';
13
13
 
14
- function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
14
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
15
15
 
16
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
17
-
18
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
16
+ var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
19
17
 
20
18
  var RelayConcreteNode = require('../util/RelayConcreteNode');
21
19
 
@@ -27,12 +25,16 @@ var RelayRecordSourceMutator = require('../mutations/RelayRecordSourceMutator');
27
25
 
28
26
  var RelayRecordSourceProxy = require('../mutations/RelayRecordSourceProxy');
29
27
 
28
+ var RelayStoreReactFlightUtils = require('./RelayStoreReactFlightUtils');
29
+
30
30
  var RelayStoreUtils = require('./RelayStoreUtils');
31
31
 
32
32
  var cloneRelayHandleSourceField = require('./cloneRelayHandleSourceField');
33
33
 
34
34
  var cloneRelayScalarHandleSourceField = require('./cloneRelayScalarHandleSourceField');
35
35
 
36
+ var getOperation = require('../util/getOperation');
37
+
36
38
  var invariant = require("fbjs/lib/invariant");
37
39
 
38
40
  var _require = require('./ClientID'),
@@ -48,6 +50,7 @@ var _require3 = require('./TypeID'),
48
50
  var CONDITION = RelayConcreteNode.CONDITION,
49
51
  CLIENT_EXTENSION = RelayConcreteNode.CLIENT_EXTENSION,
50
52
  DEFER = RelayConcreteNode.DEFER,
53
+ FLIGHT_FIELD = RelayConcreteNode.FLIGHT_FIELD,
51
54
  FRAGMENT_SPREAD = RelayConcreteNode.FRAGMENT_SPREAD,
52
55
  INLINE_FRAGMENT = RelayConcreteNode.INLINE_FRAGMENT,
53
56
  LINKED_FIELD = RelayConcreteNode.LINKED_FIELD,
@@ -57,7 +60,8 @@ var CONDITION = RelayConcreteNode.CONDITION,
57
60
  SCALAR_HANDLE = RelayConcreteNode.SCALAR_HANDLE,
58
61
  STREAM = RelayConcreteNode.STREAM,
59
62
  TYPE_DISCRIMINATOR = RelayConcreteNode.TYPE_DISCRIMINATOR;
60
- var getModuleOperationKey = RelayStoreUtils.getModuleOperationKey,
63
+ var ROOT_ID = RelayStoreUtils.ROOT_ID,
64
+ getModuleOperationKey = RelayStoreUtils.getModuleOperationKey,
61
65
  getStorageKey = RelayStoreUtils.getStorageKey,
62
66
  getArgumentValues = RelayStoreUtils.getArgumentValues;
63
67
  /**
@@ -141,7 +145,7 @@ var DataChecker = /*#__PURE__*/function () {
141
145
  args = _this$_getDataForHand.args,
142
146
  record = _this$_getDataForHand.record;
143
147
 
144
- var _iterator = _createForOfIteratorHelper(this._handlers),
148
+ var _iterator = (0, _createForOfIteratorHelper2["default"])(this._handlers),
145
149
  _step;
146
150
 
147
151
  try {
@@ -170,7 +174,7 @@ var DataChecker = /*#__PURE__*/function () {
170
174
  args = _this$_getDataForHand2.args,
171
175
  record = _this$_getDataForHand2.record;
172
176
 
173
- var _iterator2 = _createForOfIteratorHelper(this._handlers),
177
+ var _iterator2 = (0, _createForOfIteratorHelper2["default"])(this._handlers),
174
178
  _step2;
175
179
 
176
180
  try {
@@ -201,7 +205,7 @@ var DataChecker = /*#__PURE__*/function () {
201
205
  args = _this$_getDataForHand3.args,
202
206
  record = _this$_getDataForHand3.record;
203
207
 
204
- var _iterator3 = _createForOfIteratorHelper(this._handlers),
208
+ var _iterator3 = (0, _createForOfIteratorHelper2["default"])(this._handlers),
205
209
  _step3;
206
210
 
207
211
  try {
@@ -358,6 +362,7 @@ var DataChecker = /*#__PURE__*/function () {
358
362
  _this2._traverseSelections(selection.selections, dataID);
359
363
 
360
364
  break;
365
+ // $FlowFixMe[incompatible-type]
361
366
 
362
367
  case FRAGMENT_SPREAD:
363
368
  !false ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayAsyncLoader(): Unexpected ast kind `%s`.', selection.kind) : invariant(false) : void 0; // $FlowExpectedError[unreachable-code] - we need the break; for OSS linter
@@ -394,6 +399,15 @@ var DataChecker = /*#__PURE__*/function () {
394
399
 
395
400
  break;
396
401
 
402
+ case FLIGHT_FIELD:
403
+ if (RelayFeatureFlags.ENABLE_REACT_FLIGHT_COMPONENT_FIELD) {
404
+ _this2._checkFlightField(selection, dataID);
405
+ } else {
406
+ throw new Error('Flight fields are not yet supported.');
407
+ }
408
+
409
+ break;
410
+
397
411
  default:
398
412
  selection;
399
413
  !false ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayAsyncLoader(): Unexpected ast kind `%s`.', selection.kind) : invariant(false) : void 0;
@@ -416,9 +430,11 @@ var DataChecker = /*#__PURE__*/function () {
416
430
  return;
417
431
  }
418
432
 
419
- var operation = operationLoader.get(operationReference);
433
+ var normalizationRootNode = operationLoader.get(operationReference);
434
+
435
+ if (normalizationRootNode != null) {
436
+ var operation = getOperation(normalizationRootNode);
420
437
 
421
- if (operation != null) {
422
438
  this._traverse(operation, dataID);
423
439
  } else {
424
440
  // If the fragment is not available, we assume that the data cannot have been
@@ -487,6 +503,65 @@ var DataChecker = /*#__PURE__*/function () {
487
503
  }
488
504
  };
489
505
 
506
+ _proto._checkFlightField = function _checkFlightField(field, dataID) {
507
+ var storageKey = getStorageKey(field, this._variables);
508
+
509
+ var linkedID = this._mutator.getLinkedRecordID(dataID, storageKey);
510
+
511
+ if (linkedID == null) {
512
+ if (linkedID === undefined) {
513
+ this._handleMissing();
514
+
515
+ return;
516
+ }
517
+
518
+ return;
519
+ }
520
+
521
+ var tree = this._mutator.getValue(linkedID, RelayStoreReactFlightUtils.REACT_FLIGHT_TREE_STORAGE_KEY);
522
+
523
+ var reachableQueries = this._mutator.getValue(linkedID, RelayStoreReactFlightUtils.REACT_FLIGHT_QUERIES_STORAGE_KEY);
524
+
525
+ if (tree == null || !Array.isArray(reachableQueries)) {
526
+ this._handleMissing();
527
+
528
+ return;
529
+ }
530
+
531
+ var operationLoader = this._operationLoader;
532
+ !(operationLoader !== null) ? process.env.NODE_ENV !== "production" ? invariant(false, 'DataChecker: Expected an operationLoader to be configured when using ' + 'React Flight.') : invariant(false) : void 0; // In Flight, the variables that are in scope for reachable queries aren't
533
+ // the same as what's in scope for the outer query.
534
+
535
+ var prevVariables = this._variables; // $FlowFixMe[incompatible-cast]
536
+
537
+ var _iterator4 = (0, _createForOfIteratorHelper2["default"])(reachableQueries),
538
+ _step4;
539
+
540
+ try {
541
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
542
+ var query = _step4.value;
543
+ this._variables = query.variables;
544
+ var normalizationRootNode = operationLoader.get(query.module);
545
+
546
+ if (normalizationRootNode != null) {
547
+ var operation = getOperation(normalizationRootNode);
548
+
549
+ this._traverseSelections(operation.selections, ROOT_ID);
550
+ } else {
551
+ // If the fragment is not available, we assume that the data cannot have
552
+ // been processed yet and must therefore be missing.
553
+ this._handleMissing();
554
+ }
555
+ }
556
+ } catch (err) {
557
+ _iterator4.e(err);
558
+ } finally {
559
+ _iterator4.f();
560
+ }
561
+
562
+ this._variables = prevVariables;
563
+ };
564
+
490
565
  return DataChecker;
491
566
  }();
492
567
 
@@ -12,11 +12,7 @@
12
12
 
13
13
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
14
14
 
15
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
-
17
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
18
-
19
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
15
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
20
16
 
21
17
  var invariant = require("fbjs/lib/invariant");
22
18
 
@@ -34,7 +30,7 @@ function getFragmentVariables(fragment, rootVariables, argumentVariables) {
34
30
  return;
35
31
  }
36
32
 
37
- variables = variables || _objectSpread({}, argumentVariables);
33
+ variables = variables || (0, _objectSpread2["default"])({}, argumentVariables);
38
34
 
39
35
  switch (definition.kind) {
40
36
  case 'LocalArgument':