relay-runtime 12.0.0 → 13.0.0

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 (216) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +67 -0
  3. package/handlers/RelayDefaultHandlerProvider.js.flow +3 -3
  4. package/handlers/connection/ConnectionHandler.js.flow +9 -18
  5. package/handlers/connection/ConnectionInterface.js.flow +1 -1
  6. package/handlers/connection/MutationHandlers.js.flow +8 -12
  7. package/index.js +2 -2
  8. package/index.js.flow +43 -34
  9. package/lib/handlers/RelayDefaultHandlerProvider.js +1 -1
  10. package/lib/handlers/connection/ConnectionHandler.js +13 -19
  11. package/lib/handlers/connection/ConnectionInterface.js +1 -1
  12. package/lib/handlers/connection/MutationHandlers.js +4 -7
  13. package/lib/index.js +49 -46
  14. package/lib/multi-actor-environment/ActorIdentifier.js +1 -1
  15. package/lib/multi-actor-environment/ActorSpecificEnvironment.js +9 -5
  16. package/lib/multi-actor-environment/ActorUtils.js +1 -1
  17. package/lib/multi-actor-environment/MultiActorEnvironment.js +36 -23
  18. package/lib/multi-actor-environment/MultiActorEnvironmentTypes.js +1 -1
  19. package/lib/multi-actor-environment/index.js +3 -3
  20. package/lib/mutations/RelayDeclarativeMutationConfig.js +5 -2
  21. package/lib/mutations/RelayRecordProxy.js +4 -3
  22. package/lib/mutations/RelayRecordSourceMutator.js +4 -3
  23. package/lib/mutations/RelayRecordSourceProxy.js +13 -5
  24. package/lib/mutations/RelayRecordSourceSelectorProxy.js +13 -5
  25. package/lib/mutations/applyOptimisticMutation.js +7 -7
  26. package/lib/mutations/commitLocalUpdate.js +1 -1
  27. package/lib/mutations/commitMutation.js +16 -15
  28. package/lib/mutations/readUpdatableQuery_EXPERIMENTAL.js +242 -0
  29. package/lib/mutations/validateMutation.js +7 -7
  30. package/lib/network/ConvertToExecuteFunction.js +3 -2
  31. package/lib/network/RelayNetwork.js +4 -3
  32. package/lib/network/RelayNetworkTypes.js +1 -1
  33. package/lib/network/RelayObservable.js +2 -4
  34. package/lib/network/RelayQueryResponseCache.js +3 -3
  35. package/lib/network/wrapNetworkWithLogObserver.js +3 -2
  36. package/lib/query/GraphQLTag.js +3 -2
  37. package/lib/query/PreloadableQueryRegistry.js +1 -1
  38. package/lib/query/fetchQuery.js +7 -6
  39. package/lib/query/fetchQueryInternal.js +1 -1
  40. package/lib/query/fetchQuery_DEPRECATED.js +3 -2
  41. package/lib/store/ClientID.js +8 -2
  42. package/lib/store/DataChecker.js +17 -18
  43. package/lib/store/OperationExecutor.js +14 -14
  44. package/lib/store/RelayConcreteVariables.js +7 -10
  45. package/lib/store/RelayExperimentalGraphResponseHandler.js +153 -0
  46. package/lib/store/RelayExperimentalGraphResponseTransform.js +391 -0
  47. package/lib/store/RelayModernEnvironment.js +67 -43
  48. package/lib/store/RelayModernFragmentSpecResolver.js +9 -9
  49. package/lib/store/RelayModernOperationDescriptor.js +3 -2
  50. package/lib/store/RelayModernRecord.js +13 -12
  51. package/lib/store/RelayModernSelector.js +15 -9
  52. package/lib/store/RelayModernStore.js +15 -16
  53. package/lib/store/RelayOperationTracker.js +1 -1
  54. package/lib/store/RelayOptimisticRecordSource.js +1 -1
  55. package/lib/store/RelayPublishQueue.js +12 -6
  56. package/lib/store/RelayReader.js +131 -40
  57. package/lib/store/RelayRecordSource.js +1 -1
  58. package/lib/store/RelayRecordState.js +1 -1
  59. package/lib/store/RelayReferenceMarker.js +11 -12
  60. package/lib/store/RelayResponseNormalizer.js +26 -23
  61. package/lib/store/RelayStoreReactFlightUtils.js +4 -4
  62. package/lib/store/RelayStoreSubscriptions.js +7 -5
  63. package/lib/store/RelayStoreTypes.js +1 -1
  64. package/lib/store/RelayStoreUtils.js +6 -6
  65. package/lib/store/ResolverCache.js +7 -7
  66. package/lib/store/ResolverFragments.js +12 -8
  67. package/lib/store/StoreInspector.js +1 -1
  68. package/lib/store/TypeID.js +1 -1
  69. package/lib/store/ViewerPattern.js +1 -1
  70. package/lib/store/cloneRelayHandleSourceField.js +6 -5
  71. package/lib/store/cloneRelayScalarHandleSourceField.js +6 -5
  72. package/lib/store/createFragmentSpecResolver.js +1 -1
  73. package/lib/store/createRelayContext.js +4 -2
  74. package/lib/store/defaultGetDataID.js +1 -1
  75. package/lib/store/defaultRequiredFieldLogger.js +1 -1
  76. package/lib/store/hasOverlappingIDs.js +1 -1
  77. package/lib/store/isRelayModernEnvironment.js +1 -1
  78. package/lib/store/normalizeRelayPayload.js +1 -1
  79. package/lib/store/readInlineData.js +7 -3
  80. package/lib/subscription/requestSubscription.js +4 -6
  81. package/lib/util/JSResourceTypes.flow.js +1 -1
  82. package/lib/util/NormalizationNode.js +1 -1
  83. package/lib/util/ReaderNode.js +1 -1
  84. package/lib/util/RelayConcreteNode.js +2 -1
  85. package/lib/util/RelayDefaultHandleKey.js +1 -1
  86. package/lib/util/RelayError.js +1 -1
  87. package/lib/util/RelayFeatureFlags.js +8 -3
  88. package/lib/util/RelayProfiler.js +1 -1
  89. package/lib/util/RelayReplaySubject.js +1 -1
  90. package/lib/util/RelayRuntimeTypes.js +1 -7
  91. package/lib/util/StringInterner.js +71 -0
  92. package/lib/util/createPayloadFor3DField.js +1 -1
  93. package/lib/util/deepFreeze.js +1 -1
  94. package/lib/util/generateID.js +1 -1
  95. package/lib/util/getAllRootVariables.js +29 -0
  96. package/lib/util/getFragmentIdentifier.js +16 -8
  97. package/lib/util/getOperation.js +3 -2
  98. package/lib/util/getPaginationMetadata.js +1 -1
  99. package/lib/util/getPaginationVariables.js +3 -4
  100. package/lib/util/getPendingOperationsForFragment.js +1 -1
  101. package/lib/util/getRefetchMetadata.js +1 -1
  102. package/lib/util/getRelayHandleKey.js +3 -3
  103. package/lib/util/getRequestIdentifier.js +3 -3
  104. package/lib/util/getValueAtPath.js +1 -1
  105. package/lib/util/isEmptyObject.js +1 -1
  106. package/lib/util/isPromise.js +1 -1
  107. package/lib/util/isScalarAndEqual.js +1 -1
  108. package/lib/util/recycleNodesInto.js +1 -1
  109. package/lib/util/registerEnvironmentWithDevTools.js +1 -1
  110. package/lib/util/reportMissingRequiredFields.js +1 -1
  111. package/lib/util/resolveImmediate.js +1 -1
  112. package/lib/util/stableCopy.js +1 -1
  113. package/lib/util/withDuration.js +1 -1
  114. package/multi-actor-environment/ActorIdentifier.js.flow +1 -1
  115. package/multi-actor-environment/ActorSpecificEnvironment.js.flow +28 -20
  116. package/multi-actor-environment/ActorUtils.js.flow +3 -3
  117. package/multi-actor-environment/MultiActorEnvironment.js.flow +46 -25
  118. package/multi-actor-environment/MultiActorEnvironmentTypes.js.flow +28 -12
  119. package/multi-actor-environment/index.js.flow +2 -3
  120. package/mutations/RelayDeclarativeMutationConfig.js.flow +33 -28
  121. package/mutations/RelayRecordProxy.js.flow +5 -6
  122. package/mutations/RelayRecordSourceMutator.js.flow +5 -7
  123. package/mutations/RelayRecordSourceProxy.js.flow +20 -11
  124. package/mutations/RelayRecordSourceSelectorProxy.js.flow +16 -6
  125. package/mutations/applyOptimisticMutation.js.flow +14 -15
  126. package/mutations/commitLocalUpdate.js.flow +2 -2
  127. package/mutations/commitMutation.js.flow +36 -49
  128. package/mutations/readUpdatableQuery_EXPERIMENTAL.js.flow +318 -0
  129. package/mutations/validateMutation.js.flow +20 -18
  130. package/network/ConvertToExecuteFunction.js.flow +3 -3
  131. package/network/RelayNetwork.js.flow +5 -6
  132. package/network/RelayNetworkTypes.js.flow +1 -1
  133. package/network/RelayObservable.js.flow +2 -4
  134. package/network/RelayQueryResponseCache.js.flow +4 -4
  135. package/network/wrapNetworkWithLogObserver.js.flow +9 -9
  136. package/package.json +2 -2
  137. package/query/GraphQLTag.js.flow +11 -11
  138. package/query/PreloadableQueryRegistry.js.flow +5 -3
  139. package/query/fetchQuery.js.flow +19 -19
  140. package/query/fetchQueryInternal.js.flow +7 -10
  141. package/query/fetchQuery_DEPRECATED.js.flow +7 -7
  142. package/relay-runtime.js +2 -2
  143. package/relay-runtime.min.js +3 -3
  144. package/store/ClientID.js.flow +10 -3
  145. package/store/DataChecker.js.flow +21 -30
  146. package/store/OperationExecutor.js.flow +55 -63
  147. package/store/RelayConcreteVariables.js.flow +5 -11
  148. package/store/RelayExperimentalGraphResponseHandler.js.flow +121 -0
  149. package/store/RelayExperimentalGraphResponseTransform.js.flow +470 -0
  150. package/store/RelayModernEnvironment.js.flow +57 -28
  151. package/store/RelayModernFragmentSpecResolver.js.flow +18 -20
  152. package/store/RelayModernOperationDescriptor.js.flow +11 -12
  153. package/store/RelayModernRecord.js.flow +20 -13
  154. package/store/RelayModernSelector.js.flow +25 -15
  155. package/store/RelayModernStore.js.flow +22 -26
  156. package/store/RelayOperationTracker.js.flow +12 -18
  157. package/store/RelayOptimisticRecordSource.js.flow +3 -3
  158. package/store/RelayPublishQueue.js.flow +43 -24
  159. package/store/RelayReader.js.flow +181 -68
  160. package/store/RelayRecordSource.js.flow +3 -3
  161. package/store/RelayRecordState.js.flow +1 -1
  162. package/store/RelayReferenceMarker.js.flow +13 -16
  163. package/store/RelayResponseNormalizer.js.flow +44 -42
  164. package/store/RelayStoreReactFlightUtils.js.flow +4 -5
  165. package/store/RelayStoreSubscriptions.js.flow +10 -9
  166. package/store/RelayStoreTypes.js.flow +73 -30
  167. package/store/RelayStoreUtils.js.flow +9 -10
  168. package/store/ResolverCache.js.flow +17 -15
  169. package/store/ResolverFragments.js.flow +18 -25
  170. package/store/StoreInspector.js.flow +3 -3
  171. package/store/TypeID.js.flow +2 -2
  172. package/store/ViewerPattern.js.flow +3 -3
  173. package/store/cloneRelayHandleSourceField.js.flow +6 -7
  174. package/store/cloneRelayScalarHandleSourceField.js.flow +6 -7
  175. package/store/createFragmentSpecResolver.js.flow +4 -5
  176. package/store/createRelayContext.js.flow +3 -3
  177. package/store/defaultGetDataID.js.flow +1 -1
  178. package/store/defaultRequiredFieldLogger.js.flow +1 -1
  179. package/store/hasOverlappingIDs.js.flow +1 -1
  180. package/store/isRelayModernEnvironment.js.flow +1 -1
  181. package/store/normalizeRelayPayload.js.flow +7 -8
  182. package/store/readInlineData.js.flow +8 -9
  183. package/subscription/requestSubscription.js.flow +16 -25
  184. package/util/JSResourceTypes.flow.js.flow +1 -1
  185. package/util/NormalizationNode.js.flow +1 -1
  186. package/util/ReaderNode.js.flow +10 -1
  187. package/util/RelayConcreteNode.js.flow +4 -1
  188. package/util/RelayDefaultHandleKey.js.flow +1 -1
  189. package/util/RelayError.js.flow +1 -1
  190. package/util/RelayFeatureFlags.js.flow +15 -5
  191. package/util/RelayProfiler.js.flow +1 -1
  192. package/util/RelayReplaySubject.js.flow +3 -4
  193. package/util/RelayRuntimeTypes.js.flow +70 -3
  194. package/util/StringInterner.js.flow +69 -0
  195. package/util/createPayloadFor3DField.js.flow +4 -4
  196. package/util/deepFreeze.js.flow +1 -1
  197. package/util/generateID.js.flow +1 -1
  198. package/util/getAllRootVariables.js.flow +36 -0
  199. package/util/getFragmentIdentifier.js.flow +28 -16
  200. package/util/getOperation.js.flow +3 -3
  201. package/util/getPaginationMetadata.js.flow +6 -11
  202. package/util/getPaginationVariables.js.flow +6 -10
  203. package/util/getPendingOperationsForFragment.js.flow +3 -3
  204. package/util/getRefetchMetadata.js.flow +8 -12
  205. package/util/getRelayHandleKey.js.flow +2 -3
  206. package/util/getRequestIdentifier.js.flow +4 -4
  207. package/util/getValueAtPath.js.flow +1 -1
  208. package/util/isEmptyObject.js.flow +1 -1
  209. package/util/isPromise.js.flow +1 -1
  210. package/util/isScalarAndEqual.js.flow +1 -1
  211. package/util/recycleNodesInto.js.flow +1 -1
  212. package/util/registerEnvironmentWithDevTools.js.flow +1 -1
  213. package/util/reportMissingRequiredFields.js.flow +1 -1
  214. package/util/resolveImmediate.js.flow +2 -2
  215. package/util/stableCopy.js.flow +1 -1
  216. package/util/withDuration.js.flow +1 -1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -15,33 +15,33 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
15
15
 
16
16
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
17
17
 
18
- var OperationExecutor = require('./OperationExecutor');
19
-
20
18
  var RelayDefaultHandlerProvider = require('../handlers/RelayDefaultHandlerProvider');
21
19
 
22
- var RelayFeatureFlags = require('../util/RelayFeatureFlags');
20
+ var _require = require('../multi-actor-environment/ActorIdentifier'),
21
+ INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE = _require.INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE,
22
+ assertInternalActorIndentifier = _require.assertInternalActorIndentifier;
23
23
 
24
24
  var RelayObservable = require('../network/RelayObservable');
25
25
 
26
+ var wrapNetworkWithLogObserver = require('../network/wrapNetworkWithLogObserver');
27
+
26
28
  var RelayOperationTracker = require('../store/RelayOperationTracker');
27
29
 
28
- var RelayPublishQueue = require('./RelayPublishQueue');
30
+ var registerEnvironmentWithDevTools = require('../util/registerEnvironmentWithDevTools');
29
31
 
30
- var RelayRecordSource = require('./RelayRecordSource');
32
+ var RelayFeatureFlags = require('../util/RelayFeatureFlags');
31
33
 
32
34
  var defaultGetDataID = require('./defaultGetDataID');
33
35
 
34
36
  var defaultRequiredFieldLogger = require('./defaultRequiredFieldLogger');
35
37
 
36
- var invariant = require('invariant');
38
+ var OperationExecutor = require('./OperationExecutor');
37
39
 
38
- var registerEnvironmentWithDevTools = require('../util/registerEnvironmentWithDevTools');
40
+ var RelayPublishQueue = require('./RelayPublishQueue');
39
41
 
40
- var wrapNetworkWithLogObserver = require('../network/wrapNetworkWithLogObserver');
42
+ var RelayRecordSource = require('./RelayRecordSource');
41
43
 
42
- var _require = require('../multi-actor-environment/ActorIdentifier'),
43
- INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE = _require.INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE,
44
- assertInternalActorIndentifier = _require.assertInternalActorIndentifier;
44
+ var invariant = require('invariant');
45
45
 
46
46
  var RelayModernEnvironment = /*#__PURE__*/function () {
47
47
  function RelayModernEnvironment(config) {
@@ -277,7 +277,7 @@ var RelayModernEnvironment = /*#__PURE__*/function () {
277
277
  }
278
278
  /**
279
279
  * Returns an Observable of GraphQLResponse resulting from executing the
280
- * provided Query or Subscription operation, each result of which is then
280
+ * provided Query operation, each result of which is then
281
281
  * normalized and committed to the publish queue.
282
282
  *
283
283
  * Note: Observables are lazy, so calling this method will do nothing until
@@ -288,8 +288,7 @@ var RelayModernEnvironment = /*#__PURE__*/function () {
288
288
  _proto.execute = function execute(_ref) {
289
289
  var _this7 = this;
290
290
 
291
- var operation = _ref.operation,
292
- updater = _ref.updater;
291
+ var operation = _ref.operation;
293
292
  return this._execute({
294
293
  createSource: function createSource() {
295
294
  return _this7._network.execute(operation.request.node.params, operation.request.variables, operation.request.cacheConfig || {}, null);
@@ -297,6 +296,31 @@ var RelayModernEnvironment = /*#__PURE__*/function () {
297
296
  isClientPayload: false,
298
297
  operation: operation,
299
298
  optimisticConfig: null,
299
+ updater: null
300
+ });
301
+ }
302
+ /**
303
+ * Returns an Observable of GraphQLResponse resulting from executing the
304
+ * provided Subscription operation, each result of which is then
305
+ * normalized and committed to the publish queue.
306
+ *
307
+ * Note: Observables are lazy, so calling this method will do nothing until
308
+ * the result is subscribed to: environment.execute({...}).subscribe({...}).
309
+ */
310
+ ;
311
+
312
+ _proto.executeSubscription = function executeSubscription(_ref2) {
313
+ var _this8 = this;
314
+
315
+ var operation = _ref2.operation,
316
+ updater = _ref2.updater;
317
+ return this._execute({
318
+ createSource: function createSource() {
319
+ return _this8._network.execute(operation.request.node.params, operation.request.variables, operation.request.cacheConfig || {}, null);
320
+ },
321
+ isClientPayload: false,
322
+ operation: operation,
323
+ optimisticConfig: null,
300
324
  updater: updater
301
325
  });
302
326
  }
@@ -312,14 +336,14 @@ var RelayModernEnvironment = /*#__PURE__*/function () {
312
336
  */
313
337
  ;
314
338
 
315
- _proto.executeMutation = function executeMutation(_ref2) {
316
- var _this8 = this;
339
+ _proto.executeMutation = function executeMutation(_ref3) {
340
+ var _this9 = this;
317
341
 
318
- var operation = _ref2.operation,
319
- optimisticResponse = _ref2.optimisticResponse,
320
- optimisticUpdater = _ref2.optimisticUpdater,
321
- updater = _ref2.updater,
322
- uploadables = _ref2.uploadables;
342
+ var operation = _ref3.operation,
343
+ optimisticResponse = _ref3.optimisticResponse,
344
+ optimisticUpdater = _ref3.optimisticUpdater,
345
+ updater = _ref3.updater,
346
+ uploadables = _ref3.uploadables;
323
347
  var optimisticConfig;
324
348
 
325
349
  if (optimisticResponse || optimisticUpdater) {
@@ -332,7 +356,7 @@ var RelayModernEnvironment = /*#__PURE__*/function () {
332
356
 
333
357
  return this._execute({
334
358
  createSource: function createSource() {
335
- return _this8._network.execute(operation.request.node.params, operation.request.variables, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, operation.request.cacheConfig), {}, {
359
+ return _this9._network.execute(operation.request.node.params, operation.request.variables, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, operation.request.cacheConfig), {}, {
336
360
  force: true
337
361
  }), uploadables);
338
362
  },
@@ -353,9 +377,9 @@ var RelayModernEnvironment = /*#__PURE__*/function () {
353
377
  */
354
378
  ;
355
379
 
356
- _proto.executeWithSource = function executeWithSource(_ref3) {
357
- var operation = _ref3.operation,
358
- source = _ref3.source;
380
+ _proto.executeWithSource = function executeWithSource(_ref4) {
381
+ var operation = _ref4.operation,
382
+ source = _ref4.source;
359
383
  return this._execute({
360
384
  createSource: function createSource() {
361
385
  return source;
@@ -373,35 +397,35 @@ var RelayModernEnvironment = /*#__PURE__*/function () {
373
397
  return "RelayModernEnvironment(".concat((_this$configName = this.configName) !== null && _this$configName !== void 0 ? _this$configName : '', ")");
374
398
  };
375
399
 
376
- _proto._execute = function _execute(_ref4) {
377
- var _this9 = this;
400
+ _proto._execute = function _execute(_ref5) {
401
+ var _this10 = this;
378
402
 
379
- var createSource = _ref4.createSource,
380
- isClientPayload = _ref4.isClientPayload,
381
- operation = _ref4.operation,
382
- optimisticConfig = _ref4.optimisticConfig,
383
- updater = _ref4.updater;
403
+ var createSource = _ref5.createSource,
404
+ isClientPayload = _ref5.isClientPayload,
405
+ operation = _ref5.operation,
406
+ optimisticConfig = _ref5.optimisticConfig,
407
+ updater = _ref5.updater;
384
408
  var publishQueue = this._publishQueue;
385
409
  var store = this._store;
386
410
  return RelayObservable.create(function (sink) {
387
411
  var executor = OperationExecutor.execute({
388
412
  actorIdentifier: INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE,
389
- getDataID: _this9._getDataID,
413
+ getDataID: _this10._getDataID,
390
414
  isClientPayload: isClientPayload,
391
- log: _this9.__log,
415
+ log: _this10.__log,
392
416
  operation: operation,
393
- operationExecutions: _this9._operationExecutions,
394
- operationLoader: _this9._operationLoader,
395
- operationTracker: _this9._operationTracker,
417
+ operationExecutions: _this10._operationExecutions,
418
+ operationLoader: _this10._operationLoader,
419
+ operationTracker: _this10._operationTracker,
396
420
  optimisticConfig: optimisticConfig,
397
421
  getPublishQueue: function getPublishQueue(actorIdentifier) {
398
422
  assertInternalActorIndentifier(actorIdentifier);
399
423
  return publishQueue;
400
424
  },
401
- reactFlightPayloadDeserializer: _this9._reactFlightPayloadDeserializer,
402
- reactFlightServerErrorHandler: _this9._reactFlightServerErrorHandler,
403
- scheduler: _this9._scheduler,
404
- shouldProcessClientComponents: _this9._shouldProcessClientComponents,
425
+ reactFlightPayloadDeserializer: _this10._reactFlightPayloadDeserializer,
426
+ reactFlightServerErrorHandler: _this10._reactFlightServerErrorHandler,
427
+ scheduler: _this10._scheduler,
428
+ shouldProcessClientComponents: _this10._shouldProcessClientComponents,
405
429
  sink: sink,
406
430
  // NOTE: Some product tests expect `Network.execute` to be called only
407
431
  // when the Observable is executed.
@@ -410,7 +434,7 @@ var RelayModernEnvironment = /*#__PURE__*/function () {
410
434
  assertInternalActorIndentifier(actorIdentifier);
411
435
  return store;
412
436
  },
413
- treatMissingFieldsAsNull: _this9._treatMissingFieldsAsNull,
437
+ treatMissingFieldsAsNull: _this10._treatMissingFieldsAsNull,
414
438
  updater: updater
415
439
  });
416
440
  return function () {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -16,21 +16,15 @@ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/obje
16
16
 
17
17
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
18
18
 
19
- var RelayFeatureFlags = require('../util/RelayFeatureFlags');
20
-
21
- var areEqual = require("fbjs/lib/areEqual");
22
-
23
19
  var getPendingOperationsForFragment = require('../util/getPendingOperationsForFragment');
24
20
 
25
- var invariant = require('invariant');
26
-
27
21
  var isScalarAndEqual = require('../util/isScalarAndEqual');
28
22
 
29
23
  var recycleNodesInto = require('../util/recycleNodesInto');
30
24
 
31
- var reportMissingRequiredFields = require('../util/reportMissingRequiredFields');
25
+ var RelayFeatureFlags = require('../util/RelayFeatureFlags');
32
26
 
33
- var warning = require("fbjs/lib/warning");
27
+ var reportMissingRequiredFields = require('../util/reportMissingRequiredFields');
34
28
 
35
29
  var _require = require('./RelayModernOperationDescriptor'),
36
30
  createRequestDescriptor = _require.createRequestDescriptor;
@@ -40,6 +34,12 @@ var _require2 = require('./RelayModernSelector'),
40
34
  createReaderSelector = _require2.createReaderSelector,
41
35
  getSelectorsFromObject = _require2.getSelectorsFromObject;
42
36
 
37
+ var areEqual = require("fbjs/lib/areEqual");
38
+
39
+ var invariant = require('invariant');
40
+
41
+ var warning = require("fbjs/lib/warning");
42
+
43
43
  /**
44
44
  * A utility for resolving and subscribing to the results of a fragment spec
45
45
  * (key -> fragment mapping) given some "props" that determine the root ID
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -23,13 +23,14 @@ var _require2 = require('./RelayModernSelector'),
23
23
 
24
24
  var _require3 = require('./RelayStoreUtils'),
25
25
  ROOT_ID = _require3.ROOT_ID;
26
-
27
26
  /**
28
27
  * Creates an instance of the `OperationDescriptor` type defined in
29
28
  * `RelayStoreTypes` given an operation and some variables. The input variables
30
29
  * are filtered to exclude variables that do not match defined arguments on the
31
30
  * operation, and default values are populated for null values.
32
31
  */
32
+
33
+
33
34
  function createOperationDescriptor(request, variables, cacheConfig) {
34
35
  var dataID = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : ROOT_ID;
35
36
  var operation = request.operation;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -14,26 +14,25 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
14
14
 
15
15
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
16
16
 
17
- var areEqual = require("fbjs/lib/areEqual");
18
-
19
17
  var deepFreeze = require('../util/deepFreeze');
20
18
 
21
- var invariant = require('invariant');
22
-
23
- var warning = require("fbjs/lib/warning");
24
-
25
19
  var _require = require('./ClientID'),
26
20
  isClientID = _require.isClientID;
27
21
 
28
22
  var _require2 = require('./RelayStoreUtils'),
29
23
  ACTOR_IDENTIFIER_KEY = _require2.ACTOR_IDENTIFIER_KEY,
30
24
  ID_KEY = _require2.ID_KEY,
25
+ INVALIDATED_AT_KEY = _require2.INVALIDATED_AT_KEY,
31
26
  REF_KEY = _require2.REF_KEY,
32
27
  REFS_KEY = _require2.REFS_KEY,
33
- TYPENAME_KEY = _require2.TYPENAME_KEY,
34
- INVALIDATED_AT_KEY = _require2.INVALIDATED_AT_KEY,
35
- ROOT_ID = _require2.ROOT_ID;
28
+ ROOT_ID = _require2.ROOT_ID,
29
+ TYPENAME_KEY = _require2.TYPENAME_KEY;
36
30
 
31
+ var areEqual = require("fbjs/lib/areEqual");
32
+
33
+ var invariant = require('invariant');
34
+
35
+ var warning = require("fbjs/lib/warning");
37
36
  /**
38
37
  * @public
39
38
  *
@@ -83,6 +82,8 @@ var _require2 = require('./RelayStoreUtils'),
83
82
  *
84
83
  * Clone a record.
85
84
  */
85
+
86
+
86
87
  function clone(record) {
87
88
  return (0, _objectSpread2["default"])({}, record);
88
89
  }
@@ -172,7 +173,7 @@ function getLinkedRecordID(record, storageKey) {
172
173
  return link;
173
174
  }
174
175
 
175
- !(typeof link === 'object' && link && typeof link[REF_KEY] === 'string') ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayModernRecord.getLinkedRecordID(): Expected `%s.%s` to be a linked ID, ' + 'was `%s`.', record[ID_KEY], storageKey, JSON.stringify(link)) : invariant(false) : void 0;
176
+ !(typeof link === 'object' && link && typeof link[REF_KEY] === 'string') ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayModernRecord.getLinkedRecordID(): Expected `%s.%s` to be a linked ID, ' + 'was `%s`.%s', record[ID_KEY], storageKey, JSON.stringify(link), typeof link === 'object' && link[REFS_KEY] !== undefined ? ' It appears to be a plural linked record: did you mean to call ' + 'getLinkedRecords() instead of getLinkedRecord()?' : '') : invariant(false) : void 0;
176
177
  return link[REF_KEY];
177
178
  }
178
179
  /**
@@ -190,7 +191,7 @@ function getLinkedRecordIDs(record, storageKey) {
190
191
  return links;
191
192
  }
192
193
 
193
- !(typeof links === 'object' && Array.isArray(links[REFS_KEY])) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayModernRecord.getLinkedRecordIDs(): Expected `%s.%s` to contain an array ' + 'of linked IDs, got `%s`.', record[ID_KEY], storageKey, JSON.stringify(links)) : invariant(false) : void 0; // assume items of the array are ids
194
+ !(typeof links === 'object' && Array.isArray(links[REFS_KEY])) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayModernRecord.getLinkedRecordIDs(): Expected `%s.%s` to contain an array ' + 'of linked IDs, got `%s`.%s', record[ID_KEY], storageKey, JSON.stringify(links), typeof links === 'object' && links[REF_KEY] !== undefined ? ' It appears to be a singular linked record: did you mean to call ' + 'getLinkedRecord() instead of getLinkedRecords()?' : '') : invariant(false) : void 0; // assume items of the array are ids
194
195
 
195
196
  return links[REFS_KEY];
196
197
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -10,21 +10,21 @@
10
10
  // flowlint ambiguous-object-type:error
11
11
  'use strict';
12
12
 
13
- var areEqual = require("fbjs/lib/areEqual");
14
-
15
- var invariant = require('invariant');
16
-
17
- var warning = require("fbjs/lib/warning");
18
-
19
13
  var _require = require('./RelayConcreteVariables'),
20
14
  getFragmentVariables = _require.getFragmentVariables;
21
15
 
22
16
  var _require2 = require('./RelayStoreUtils'),
17
+ CLIENT_EDGE_TRAVERSAL_PATH = _require2.CLIENT_EDGE_TRAVERSAL_PATH,
23
18
  FRAGMENT_OWNER_KEY = _require2.FRAGMENT_OWNER_KEY,
24
19
  FRAGMENTS_KEY = _require2.FRAGMENTS_KEY,
25
20
  ID_KEY = _require2.ID_KEY,
26
21
  IS_WITHIN_UNMATCHED_TYPE_REFINEMENT = _require2.IS_WITHIN_UNMATCHED_TYPE_REFINEMENT;
27
22
 
23
+ var areEqual = require("fbjs/lib/areEqual");
24
+
25
+ var invariant = require('invariant');
26
+
27
+ var warning = require("fbjs/lib/warning");
28
28
  /**
29
29
  * @public
30
30
  *
@@ -54,18 +54,22 @@ var _require2 = require('./RelayStoreUtils'),
54
54
  * const childData = environment.lookup(childSelector).data;
55
55
  * ```
56
56
  */
57
+
58
+
57
59
  function getSingularSelector(fragment, item) {
58
60
  !(typeof item === 'object' && item !== null && !Array.isArray(item)) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayModernSelector: Expected value for fragment `%s` to be an object, got ' + '`%s`.', fragment.name, JSON.stringify(item)) : invariant(false) : void 0;
59
61
  var dataID = item[ID_KEY];
60
62
  var fragments = item[FRAGMENTS_KEY];
61
63
  var mixedOwner = item[FRAGMENT_OWNER_KEY];
62
64
  var isWithinUnmatchedTypeRefinement = item[IS_WITHIN_UNMATCHED_TYPE_REFINEMENT] === true;
65
+ var mixedClientEdgeTraversalPath = item[CLIENT_EDGE_TRAVERSAL_PATH];
63
66
 
64
- if (typeof dataID === 'string' && typeof fragments === 'object' && fragments !== null && typeof fragments[fragment.name] === 'object' && fragments[fragment.name] !== null && typeof mixedOwner === 'object' && mixedOwner !== null) {
67
+ if (typeof dataID === 'string' && typeof fragments === 'object' && fragments !== null && typeof fragments[fragment.name] === 'object' && fragments[fragment.name] !== null && typeof mixedOwner === 'object' && mixedOwner !== null && (mixedClientEdgeTraversalPath == null || Array.isArray(mixedClientEdgeTraversalPath))) {
65
68
  var owner = mixedOwner;
69
+ var clientEdgeTraversalPath = mixedClientEdgeTraversalPath;
66
70
  var argumentVariables = fragments[fragment.name];
67
71
  var fragmentVariables = getFragmentVariables(fragment, owner.variables, argumentVariables);
68
- return createReaderSelector(fragment, dataID, fragmentVariables, owner, isWithinUnmatchedTypeRefinement);
72
+ return createReaderSelector(fragment, dataID, fragmentVariables, owner, isWithinUnmatchedTypeRefinement, clientEdgeTraversalPath);
69
73
  }
70
74
 
71
75
  if (process.env.NODE_ENV !== "production") {
@@ -295,10 +299,12 @@ function areEqualSelectors(thisSelector, thatSelector) {
295
299
 
296
300
  function createReaderSelector(fragment, dataID, variables, request) {
297
301
  var isWithinUnmatchedTypeRefinement = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
302
+ var clientEdgeTraversalPath = arguments.length > 5 ? arguments[5] : undefined;
298
303
  return {
299
304
  kind: 'SingularReaderSelector',
300
305
  dataID: dataID,
301
306
  isWithinUnmatchedTypeRefinement: isWithinUnmatchedTypeRefinement,
307
+ clientEdgeTraversalPath: clientEdgeTraversalPath !== null && clientEdgeTraversalPath !== void 0 ? clientEdgeTraversalPath : null,
302
308
  node: fragment,
303
309
  variables: variables,
304
310
  owner: request
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -16,10 +16,20 @@ var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime
16
16
 
17
17
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
18
18
 
19
- var DataChecker = require('./DataChecker');
19
+ var _require = require('../multi-actor-environment/ActorIdentifier'),
20
+ INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE = _require.INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE,
21
+ assertInternalActorIndentifier = _require.assertInternalActorIndentifier;
22
+
23
+ var deepFreeze = require('../util/deepFreeze');
20
24
 
21
25
  var RelayFeatureFlags = require('../util/RelayFeatureFlags');
22
26
 
27
+ var resolveImmediate = require('../util/resolveImmediate');
28
+
29
+ var DataChecker = require('./DataChecker');
30
+
31
+ var defaultGetDataID = require('./defaultGetDataID');
32
+
23
33
  var RelayModernRecord = require('./RelayModernRecord');
24
34
 
25
35
  var RelayOptimisticRecordSource = require('./RelayOptimisticRecordSource');
@@ -34,18 +44,6 @@ var RelayStoreSubscriptions = require('./RelayStoreSubscriptions');
34
44
 
35
45
  var RelayStoreUtils = require('./RelayStoreUtils');
36
46
 
37
- var deepFreeze = require('../util/deepFreeze');
38
-
39
- var defaultGetDataID = require('./defaultGetDataID');
40
-
41
- var invariant = require('invariant');
42
-
43
- var resolveImmediate = require('../util/resolveImmediate');
44
-
45
- var _require = require('../multi-actor-environment/ActorIdentifier'),
46
- INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE = _require.INTERNAL_ACTOR_IDENTIFIER_DO_NOT_USE,
47
- assertInternalActorIndentifier = _require.assertInternalActorIndentifier;
48
-
49
47
  var _require2 = require('./RelayStoreUtils'),
50
48
  ROOT_ID = _require2.ROOT_ID,
51
49
  ROOT_TYPE = _require2.ROOT_TYPE;
@@ -53,6 +51,8 @@ var _require2 = require('./RelayStoreUtils'),
53
51
  var _require3 = require('./ResolverCache'),
54
52
  RecordResolverCache = _require3.RecordResolverCache;
55
53
 
54
+ var invariant = require('invariant');
55
+
56
56
  var DEFAULT_RELEASE_BUFFER_SIZE = 10;
57
57
  /**
58
58
  * @public
@@ -680,8 +680,7 @@ function updateTargetFromSource(target, source, currentWriteEpoch, idsMarkedForI
680
680
  }
681
681
 
682
682
  RelayModernRecord.setValue(nextRecord, RelayStoreUtils.INVALIDATED_AT_KEY, currentWriteEpoch);
683
- invalidatedRecordIDs.add(dataID); // $FlowFixMe[incompatible-call]
684
-
683
+ invalidatedRecordIDs.add(dataID);
685
684
  target.set(dataID, nextRecord);
686
685
  });
687
686
  } // Update the target based on the changes present in source
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
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.
@@ -12,16 +12,16 @@
12
12
 
13
13
  var _global$ErrorUtils$ap, _global, _global$ErrorUtils;
14
14
 
15
- var RelayReader = require('./RelayReader');
16
-
17
- var RelayRecordSource = require('./RelayRecordSource');
18
-
19
15
  var RelayRecordSourceMutator = require('../mutations/RelayRecordSourceMutator');
20
16
 
21
17
  var RelayRecordSourceProxy = require('../mutations/RelayRecordSourceProxy');
22
18
 
23
19
  var RelayRecordSourceSelectorProxy = require('../mutations/RelayRecordSourceSelectorProxy');
24
20
 
21
+ var RelayReader = require('./RelayReader');
22
+
23
+ var RelayRecordSource = require('./RelayRecordSource');
24
+
25
25
  var invariant = require('invariant');
26
26
 
27
27
  var warning = require("fbjs/lib/warning");
@@ -45,9 +45,15 @@ var RelayPublishQueue = /*#__PURE__*/function () {
45
45
  // True if the next `run()` should apply the backup and rerun all optimistic
46
46
  // updates performing a rebase.
47
47
  // Payloads to apply or Sources to publish to the store with the next `run()`.
48
+ // $FlowFixMe[unclear-type] See explanation below.
48
49
  // Optimistic updaters to add with the next `run()`.
50
+ // $FlowFixMe[unclear-type] See explanation below.
49
51
  // Optimistic updaters that are already added and might be rerun in order to
50
52
  // rebase them.
53
+ // $FlowFixMe[unclear-type] See explanation below.
54
+ // For _pendingOptimisticUpdates, _appliedOptimisticUpdates, and _pendingData,
55
+ // we want to parametrize by "any" since the type is effectively
56
+ // "the union of all T's that PublishQueue's methods were called with".
51
57
  // Garbage collection hold, should rerun gc on dispose
52
58
  function RelayPublishQueue(store, handlerProvider, getDataID) {
53
59
  this._hasStoreSnapshot = false;
@@ -301,7 +307,7 @@ var RelayPublishQueue = /*#__PURE__*/function () {
301
307
 
302
308
  var sink = RelayRecordSource.create();
303
309
  var mutator = new RelayRecordSourceMutator(this._store.getSource(), sink);
304
- var recordSourceProxy = new RelayRecordSourceProxy(mutator, this._getDataID, this._handlerProvider);
310
+ var recordSourceProxy = new RelayRecordSourceProxy(mutator, this._getDataID, this._handlerProvider); // $FlowFixMe[unclear-type] see explanation above.
305
311
 
306
312
  var processUpdate = function processUpdate(optimisticUpdate) {
307
313
  if (optimisticUpdate.storeUpdater) {