relay-runtime 12.0.0 → 13.0.0-rc.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 (138) 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 +40 -33
  6. package/lib/handlers/connection/ConnectionHandler.js +12 -18
  7. package/lib/handlers/connection/MutationHandlers.js +3 -6
  8. package/lib/index.js +45 -45
  9. package/lib/multi-actor-environment/ActorSpecificEnvironment.js +8 -4
  10. package/lib/multi-actor-environment/MultiActorEnvironment.js +35 -22
  11. package/lib/multi-actor-environment/index.js +2 -2
  12. package/lib/mutations/RelayDeclarativeMutationConfig.js +4 -1
  13. package/lib/mutations/RelayRecordProxy.js +3 -2
  14. package/lib/mutations/RelayRecordSourceMutator.js +3 -2
  15. package/lib/mutations/RelayRecordSourceProxy.js +12 -4
  16. package/lib/mutations/RelayRecordSourceSelectorProxy.js +12 -4
  17. package/lib/mutations/applyOptimisticMutation.js +6 -6
  18. package/lib/mutations/commitMutation.js +15 -14
  19. package/lib/mutations/readUpdatableQuery_EXPERIMENTAL.js +238 -0
  20. package/lib/mutations/validateMutation.js +6 -6
  21. package/lib/network/ConvertToExecuteFunction.js +2 -1
  22. package/lib/network/RelayNetwork.js +3 -2
  23. package/lib/network/RelayObservable.js +1 -3
  24. package/lib/network/RelayQueryResponseCache.js +2 -2
  25. package/lib/network/wrapNetworkWithLogObserver.js +2 -1
  26. package/lib/query/GraphQLTag.js +2 -1
  27. package/lib/query/fetchQuery.js +6 -5
  28. package/lib/query/fetchQuery_DEPRECATED.js +2 -1
  29. package/lib/store/ClientID.js +7 -1
  30. package/lib/store/DataChecker.js +16 -17
  31. package/lib/store/OperationExecutor.js +13 -13
  32. package/lib/store/RelayConcreteVariables.js +6 -9
  33. package/lib/store/RelayModernEnvironment.js +66 -42
  34. package/lib/store/RelayModernFragmentSpecResolver.js +8 -8
  35. package/lib/store/RelayModernOperationDescriptor.js +2 -1
  36. package/lib/store/RelayModernRecord.js +12 -11
  37. package/lib/store/RelayModernSelector.js +14 -8
  38. package/lib/store/RelayModernStore.js +14 -15
  39. package/lib/store/RelayPublishQueue.js +11 -5
  40. package/lib/store/RelayReader.js +130 -37
  41. package/lib/store/RelayReferenceMarker.js +10 -11
  42. package/lib/store/RelayResponseNormalizer.js +25 -22
  43. package/lib/store/RelayStoreReactFlightUtils.js +3 -3
  44. package/lib/store/RelayStoreSubscriptions.js +6 -4
  45. package/lib/store/RelayStoreUtils.js +5 -5
  46. package/lib/store/ResolverCache.js +6 -6
  47. package/lib/store/ResolverFragments.js +9 -5
  48. package/lib/store/cloneRelayHandleSourceField.js +5 -4
  49. package/lib/store/cloneRelayScalarHandleSourceField.js +5 -4
  50. package/lib/store/createRelayContext.js +3 -1
  51. package/lib/store/readInlineData.js +6 -2
  52. package/lib/subscription/requestSubscription.js +5 -5
  53. package/lib/util/RelayConcreteNode.js +1 -0
  54. package/lib/util/RelayFeatureFlags.js +7 -1
  55. package/lib/util/RelayRuntimeTypes.js +0 -6
  56. package/lib/util/StringInterner.js +71 -0
  57. package/lib/util/getFragmentIdentifier.js +15 -7
  58. package/lib/util/getOperation.js +2 -1
  59. package/lib/util/getPaginationVariables.js +2 -3
  60. package/lib/util/getRelayHandleKey.js +2 -2
  61. package/lib/util/getRequestIdentifier.js +2 -2
  62. package/multi-actor-environment/ActorSpecificEnvironment.js.flow +27 -19
  63. package/multi-actor-environment/ActorUtils.js.flow +2 -2
  64. package/multi-actor-environment/MultiActorEnvironment.js.flow +45 -24
  65. package/multi-actor-environment/MultiActorEnvironmentTypes.js.flow +27 -11
  66. package/multi-actor-environment/index.js.flow +1 -2
  67. package/mutations/RelayDeclarativeMutationConfig.js.flow +32 -26
  68. package/mutations/RelayRecordProxy.js.flow +4 -5
  69. package/mutations/RelayRecordSourceMutator.js.flow +4 -6
  70. package/mutations/RelayRecordSourceProxy.js.flow +19 -10
  71. package/mutations/RelayRecordSourceSelectorProxy.js.flow +15 -5
  72. package/mutations/applyOptimisticMutation.js.flow +13 -14
  73. package/mutations/commitLocalUpdate.js.flow +1 -1
  74. package/mutations/commitMutation.js.flow +35 -48
  75. package/mutations/readUpdatableQuery_EXPERIMENTAL.js.flow +309 -0
  76. package/mutations/validateMutation.js.flow +19 -17
  77. package/network/ConvertToExecuteFunction.js.flow +2 -2
  78. package/network/RelayNetwork.js.flow +4 -5
  79. package/network/RelayObservable.js.flow +1 -3
  80. package/network/RelayQueryResponseCache.js.flow +3 -3
  81. package/network/wrapNetworkWithLogObserver.js.flow +8 -7
  82. package/package.json +1 -1
  83. package/query/GraphQLTag.js.flow +9 -9
  84. package/query/PreloadableQueryRegistry.js.flow +2 -1
  85. package/query/fetchQuery.js.flow +11 -13
  86. package/query/fetchQueryInternal.js.flow +6 -9
  87. package/query/fetchQuery_DEPRECATED.js.flow +6 -6
  88. package/relay-runtime.js +2 -2
  89. package/relay-runtime.min.js +2 -2
  90. package/store/ClientID.js.flow +9 -2
  91. package/store/DataChecker.js.flow +20 -29
  92. package/store/OperationExecutor.js.flow +54 -62
  93. package/store/RelayConcreteVariables.js.flow +4 -10
  94. package/store/RelayModernEnvironment.js.flow +56 -27
  95. package/store/RelayModernFragmentSpecResolver.js.flow +17 -19
  96. package/store/RelayModernOperationDescriptor.js.flow +10 -11
  97. package/store/RelayModernRecord.js.flow +19 -12
  98. package/store/RelayModernSelector.js.flow +24 -14
  99. package/store/RelayModernStore.js.flow +21 -24
  100. package/store/RelayOperationTracker.js.flow +11 -17
  101. package/store/RelayOptimisticRecordSource.js.flow +2 -2
  102. package/store/RelayPublishQueue.js.flow +42 -23
  103. package/store/RelayReader.js.flow +180 -60
  104. package/store/RelayRecordSource.js.flow +2 -2
  105. package/store/RelayReferenceMarker.js.flow +12 -15
  106. package/store/RelayResponseNormalizer.js.flow +43 -41
  107. package/store/RelayStoreReactFlightUtils.js.flow +3 -4
  108. package/store/RelayStoreSubscriptions.js.flow +9 -8
  109. package/store/RelayStoreTypes.js.flow +72 -29
  110. package/store/RelayStoreUtils.js.flow +8 -9
  111. package/store/ResolverCache.js.flow +16 -14
  112. package/store/ResolverFragments.js.flow +15 -22
  113. package/store/StoreInspector.js.flow +2 -2
  114. package/store/TypeID.js.flow +1 -1
  115. package/store/ViewerPattern.js.flow +2 -2
  116. package/store/cloneRelayHandleSourceField.js.flow +5 -6
  117. package/store/cloneRelayScalarHandleSourceField.js.flow +5 -6
  118. package/store/createFragmentSpecResolver.js.flow +3 -4
  119. package/store/createRelayContext.js.flow +2 -2
  120. package/store/normalizeRelayPayload.js.flow +6 -7
  121. package/store/readInlineData.js.flow +7 -8
  122. package/subscription/requestSubscription.js.flow +16 -24
  123. package/util/ReaderNode.js.flow +9 -0
  124. package/util/RelayConcreteNode.js.flow +1 -0
  125. package/util/RelayFeatureFlags.js.flow +14 -2
  126. package/util/RelayReplaySubject.js.flow +2 -3
  127. package/util/RelayRuntimeTypes.js.flow +69 -2
  128. package/util/StringInterner.js.flow +69 -0
  129. package/util/createPayloadFor3DField.js.flow +3 -3
  130. package/util/getFragmentIdentifier.js.flow +27 -15
  131. package/util/getOperation.js.flow +2 -2
  132. package/util/getPaginationMetadata.js.flow +5 -7
  133. package/util/getPaginationVariables.js.flow +5 -9
  134. package/util/getPendingOperationsForFragment.js.flow +2 -2
  135. package/util/getRefetchMetadata.js.flow +6 -7
  136. package/util/getRelayHandleKey.js.flow +1 -2
  137. package/util/getRequestIdentifier.js.flow +3 -3
  138. package/util/resolveImmediate.js.flow +1 -1
@@ -11,7 +11,6 @@
11
11
  'use strict';
12
12
 
13
13
  var generateID = require('../util/generateID');
14
-
15
14
  /**
16
15
  * Wraps the network with logging to ensure that network requests are
17
16
  * always logged. Relying on each network callsite to be wrapped is
@@ -20,6 +19,8 @@ var generateID = require('../util/generateID');
20
19
  * devtools will mutate the `env.__log` method, and the devtools rely
21
20
  * on it to receive network events.
22
21
  */
22
+
23
+
23
24
  function wrapNetworkWithLogObserver(env, network) {
24
25
  return {
25
26
  execute: function execute(params, variables, cacheConfig, uploadables) {
@@ -14,7 +14,8 @@ var RelayConcreteNode = require('../util/RelayConcreteNode');
14
14
 
15
15
  var invariant = require('invariant');
16
16
 
17
- var warning = require("fbjs/lib/warning");
17
+ var warning = require("fbjs/lib/warning"); // The type of a graphql`...` tagged template expression.
18
+
18
19
 
19
20
  /**
20
21
  * Runtime function to correspond to the `graphql` tagged template function.
@@ -17,18 +17,17 @@ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/obje
17
17
 
18
18
  var RelayObservable = require('../network/RelayObservable');
19
19
 
20
- var fetchQueryInternal = require('./fetchQueryInternal');
21
-
22
- var invariant = require('invariant');
20
+ var _require = require('../store/RelayModernOperationDescriptor'),
21
+ createOperationDescriptor = _require.createOperationDescriptor;
23
22
 
24
23
  var reportMissingRequiredFields = require('../util/reportMissingRequiredFields');
25
24
 
26
- var _require = require('../store/RelayModernOperationDescriptor'),
27
- createOperationDescriptor = _require.createOperationDescriptor;
25
+ var fetchQueryInternal = require('./fetchQueryInternal');
28
26
 
29
27
  var _require2 = require('./GraphQLTag'),
30
28
  getRequest = _require2.getRequest;
31
29
 
30
+ var invariant = require('invariant');
32
31
  /**
33
32
  * Fetches the given query and variables on the provided environment,
34
33
  * and de-dupes identical in-flight requests.
@@ -106,6 +105,8 @@ var _require2 = require('./GraphQLTag'),
106
105
  * ```
107
106
  * NOTE: When using .toPromise(), the request cannot be cancelled.
108
107
  */
108
+
109
+
109
110
  function fetchQuery(environment, query, variables, options) {
110
111
  var _options$fetchPolicy;
111
112
 
@@ -15,12 +15,13 @@ var _require = require('../store/RelayModernOperationDescriptor'),
15
15
 
16
16
  var _require2 = require('./GraphQLTag'),
17
17
  getRequest = _require2.getRequest;
18
-
19
18
  /**
20
19
  * A helper function to fetch the results of a query. Note that results for
21
20
  * fragment spreads are masked: fields must be explicitly listed in the query in
22
21
  * order to be accessible in the result object.
23
22
  */
23
+
24
+
24
25
  function fetchQuery_DEPRECATED(environment, taggedNode, variables, cacheConfig) {
25
26
  var query = getRequest(taggedNode);
26
27
 
@@ -10,10 +10,16 @@
10
10
  // flowlint ambiguous-object-type:error
11
11
  'use strict';
12
12
 
13
+ var RelayFeatureFlags = require('../util/RelayFeatureFlags');
14
+
15
+ var _require = require('../util/StringInterner'),
16
+ intern = _require.intern;
17
+
13
18
  var PREFIX = 'client:';
14
19
 
15
20
  function generateClientID(id, storageKey, index) {
16
- var key = id + ':' + storageKey;
21
+ var internedId = RelayFeatureFlags.STRING_INTERN_LEVEL <= 0 ? id : intern(id, RelayFeatureFlags.MAX_DATA_ID_LENGTH);
22
+ var key = internedId + ':' + storageKey;
17
23
 
18
24
  if (index != null) {
19
25
  key += ':' + index;
@@ -15,41 +15,41 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
15
15
 
16
16
  var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
17
17
 
18
- var RelayConcreteNode = require('../util/RelayConcreteNode');
19
-
20
- var RelayFeatureFlags = require('../util/RelayFeatureFlags');
21
-
22
- var RelayModernRecord = require('./RelayModernRecord');
23
-
24
18
  var RelayRecordSourceMutator = require('../mutations/RelayRecordSourceMutator');
25
19
 
26
20
  var RelayRecordSourceProxy = require('../mutations/RelayRecordSourceProxy');
27
21
 
28
- var RelayStoreReactFlightUtils = require('./RelayStoreReactFlightUtils');
29
-
30
- var RelayStoreUtils = require('./RelayStoreUtils');
31
-
32
- var cloneRelayHandleSourceField = require('./cloneRelayHandleSourceField');
33
-
34
- var cloneRelayScalarHandleSourceField = require('./cloneRelayScalarHandleSourceField');
35
-
36
22
  var getOperation = require('../util/getOperation');
37
23
 
38
- var invariant = require('invariant');
24
+ var RelayConcreteNode = require('../util/RelayConcreteNode');
25
+
26
+ var RelayFeatureFlags = require('../util/RelayFeatureFlags');
39
27
 
40
28
  var _require = require('./ClientID'),
41
29
  isClientID = _require.isClientID;
42
30
 
31
+ var cloneRelayHandleSourceField = require('./cloneRelayHandleSourceField');
32
+
33
+ var cloneRelayScalarHandleSourceField = require('./cloneRelayScalarHandleSourceField');
34
+
43
35
  var _require2 = require('./RelayConcreteVariables'),
44
36
  getLocalVariables = _require2.getLocalVariables;
45
37
 
38
+ var RelayModernRecord = require('./RelayModernRecord');
39
+
46
40
  var _require3 = require('./RelayRecordState'),
47
41
  EXISTENT = _require3.EXISTENT,
48
42
  UNKNOWN = _require3.UNKNOWN;
49
43
 
44
+ var RelayStoreReactFlightUtils = require('./RelayStoreReactFlightUtils');
45
+
46
+ var RelayStoreUtils = require('./RelayStoreUtils');
47
+
50
48
  var _require4 = require('./TypeID'),
51
49
  generateTypeID = _require4.generateTypeID;
52
50
 
51
+ var invariant = require('invariant');
52
+
53
53
  var ACTOR_CHANGE = RelayConcreteNode.ACTOR_CHANGE,
54
54
  CONDITION = RelayConcreteNode.CONDITION,
55
55
  CLIENT_COMPONENT = RelayConcreteNode.CLIENT_COMPONENT,
@@ -145,8 +145,7 @@ var DataChecker = /*#__PURE__*/function () {
145
145
  };
146
146
 
147
147
  _proto._getVariableValue = function _getVariableValue(name) {
148
- !this._variables.hasOwnProperty(name) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayAsyncLoader(): Undefined variable `%s`.', name) : invariant(false) : void 0; // $FlowFixMe[cannot-write]
149
-
148
+ !this._variables.hasOwnProperty(name) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayAsyncLoader(): Undefined variable `%s`.', name) : invariant(false) : void 0;
150
149
  return this._variables[name];
151
150
  };
152
151
 
@@ -21,27 +21,17 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
21
21
 
22
22
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
23
23
 
24
- var RelayError = require('../util/RelayError');
25
-
26
- var RelayFeatureFlags = require('../util/RelayFeatureFlags');
27
-
28
- var RelayModernRecord = require('./RelayModernRecord');
29
-
30
24
  var RelayObservable = require('../network/RelayObservable');
31
25
 
32
- var RelayRecordSource = require('./RelayRecordSource');
33
-
34
- var RelayResponseNormalizer = require('./RelayResponseNormalizer');
35
-
36
26
  var generateID = require('../util/generateID');
37
27
 
38
28
  var getOperation = require('../util/getOperation');
39
29
 
40
- var invariant = require('invariant');
30
+ var RelayError = require('../util/RelayError');
41
31
 
42
- var stableCopy = require('../util/stableCopy');
32
+ var RelayFeatureFlags = require('../util/RelayFeatureFlags');
43
33
 
44
- var warning = require("fbjs/lib/warning");
34
+ var stableCopy = require('../util/stableCopy');
45
35
 
46
36
  var withDuration = require('../util/withDuration');
47
37
 
@@ -52,15 +42,25 @@ var _require = require('./ClientID'),
52
42
  var _require2 = require('./RelayConcreteVariables'),
53
43
  getLocalVariables = _require2.getLocalVariables;
54
44
 
45
+ var RelayModernRecord = require('./RelayModernRecord');
46
+
55
47
  var _require3 = require('./RelayModernSelector'),
56
48
  createNormalizationSelector = _require3.createNormalizationSelector,
57
49
  createReaderSelector = _require3.createReaderSelector;
58
50
 
51
+ var RelayRecordSource = require('./RelayRecordSource');
52
+
53
+ var RelayResponseNormalizer = require('./RelayResponseNormalizer');
54
+
59
55
  var _require4 = require('./RelayStoreUtils'),
60
56
  ROOT_TYPE = _require4.ROOT_TYPE,
61
57
  TYPENAME_KEY = _require4.TYPENAME_KEY,
62
58
  getStorageKey = _require4.getStorageKey;
63
59
 
60
+ var invariant = require('invariant');
61
+
62
+ var warning = require("fbjs/lib/warning");
63
+
64
64
  function execute(config) {
65
65
  return new Executor(config);
66
66
  }
@@ -14,11 +14,10 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
14
14
 
15
15
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
16
16
 
17
- var invariant = require('invariant');
18
-
19
17
  var _require = require('./RelayStoreUtils'),
20
18
  getArgumentValues = _require.getArgumentValues;
21
19
 
20
+ var invariant = require('invariant');
22
21
  /**
23
22
  * Determines the variables that are in scope for a fragment given the variables
24
23
  * in scope at the root query as well as any arguments applied at the fragment
@@ -26,13 +25,14 @@ var _require = require('./RelayStoreUtils'),
26
25
  *
27
26
  * Note that this is analagous to determining function arguments given a function call.
28
27
  */
28
+
29
+
29
30
  function getFragmentVariables(fragment, rootVariables, argumentVariables) {
30
31
  var variables;
31
32
  fragment.argumentDefinitions.forEach(function (definition) {
32
33
  if (argumentVariables.hasOwnProperty(definition.name)) {
33
34
  return;
34
- } // $FlowFixMe[cannot-spread-interface]
35
-
35
+ }
36
36
 
37
37
  variables = variables || (0, _objectSpread2["default"])({}, argumentVariables);
38
38
 
@@ -52,12 +52,9 @@ function getFragmentVariables(fragment, rootVariables, argumentVariables) {
52
52
  * RelayStoreUtils.getStableVariableValue() that variable keys are all
53
53
  * present.
54
54
  */
55
- // $FlowFixMe[incompatible-use]
56
55
  variables[definition.name] = undefined;
57
56
  break;
58
- } // $FlowFixMe[incompatible-use]
59
- // $FlowFixMe[cannot-write]
60
-
57
+ }
61
58
 
62
59
  variables[definition.name] = rootVariables[definition.name];
63
60
  break;
@@ -80,7 +77,7 @@ function getFragmentVariables(fragment, rootVariables, argumentVariables) {
80
77
  function getOperationVariables(operation, variables) {
81
78
  var operationVariables = {};
82
79
  operation.argumentDefinitions.forEach(function (def) {
83
- var value = def.defaultValue; // $FlowFixMe[cannot-write]
80
+ var value = def.defaultValue;
84
81
 
85
82
  if (variables[def.name] != null) {
86
83
  value = variables[def.name];
@@ -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 () {
@@ -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
@@ -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;
@@ -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
  }
@@ -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