relay-runtime 13.0.0-rc.0 → 13.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +67 -0
  3. package/handlers/RelayDefaultHandlerProvider.js.flow +1 -1
  4. package/handlers/connection/ConnectionHandler.js.flow +1 -1
  5. package/handlers/connection/ConnectionInterface.js.flow +1 -1
  6. package/handlers/connection/MutationHandlers.js.flow +1 -1
  7. package/index.js +2 -2
  8. package/index.js.flow +5 -1
  9. package/lib/handlers/RelayDefaultHandlerProvider.js +1 -1
  10. package/lib/handlers/connection/ConnectionHandler.js +1 -1
  11. package/lib/handlers/connection/ConnectionInterface.js +1 -1
  12. package/lib/handlers/connection/MutationHandlers.js +1 -1
  13. package/lib/index.js +8 -2
  14. package/lib/multi-actor-environment/ActorIdentifier.js +1 -1
  15. package/lib/multi-actor-environment/ActorSpecificEnvironment.js +1 -1
  16. package/lib/multi-actor-environment/ActorUtils.js +1 -1
  17. package/lib/multi-actor-environment/MultiActorEnvironment.js +1 -1
  18. package/lib/multi-actor-environment/MultiActorEnvironmentTypes.js +1 -1
  19. package/lib/multi-actor-environment/index.js +1 -1
  20. package/lib/mutations/RelayDeclarativeMutationConfig.js +1 -1
  21. package/lib/mutations/RelayRecordProxy.js +1 -1
  22. package/lib/mutations/RelayRecordSourceMutator.js +1 -1
  23. package/lib/mutations/RelayRecordSourceProxy.js +1 -1
  24. package/lib/mutations/RelayRecordSourceSelectorProxy.js +1 -1
  25. package/lib/mutations/applyOptimisticMutation.js +1 -1
  26. package/lib/mutations/commitLocalUpdate.js +1 -1
  27. package/lib/mutations/commitMutation.js +1 -1
  28. package/lib/mutations/readUpdatableQuery_EXPERIMENTAL.js +25 -16
  29. package/lib/mutations/validateMutation.js +1 -1
  30. package/lib/network/ConvertToExecuteFunction.js +1 -1
  31. package/lib/network/RelayNetwork.js +8 -4
  32. package/lib/network/RelayNetworkTypes.js +1 -1
  33. package/lib/network/RelayObservable.js +1 -1
  34. package/lib/network/RelayQueryResponseCache.js +1 -1
  35. package/lib/network/wrapNetworkWithLogObserver.js +1 -1
  36. package/lib/query/GraphQLTag.js +1 -1
  37. package/lib/query/PreloadableQueryRegistry.js +1 -1
  38. package/lib/query/fetchQuery.js +4 -1
  39. package/lib/query/fetchQueryInternal.js +1 -1
  40. package/lib/query/fetchQuery_DEPRECATED.js +1 -1
  41. package/lib/store/ClientID.js +1 -1
  42. package/lib/store/DataChecker.js +1 -1
  43. package/lib/store/OperationExecutor.js +1 -1
  44. package/lib/store/RelayConcreteVariables.js +14 -4
  45. package/lib/store/RelayExperimentalGraphResponseHandler.js +153 -0
  46. package/lib/store/RelayExperimentalGraphResponseTransform.js +391 -0
  47. package/lib/store/RelayModernEnvironment.js +1 -1
  48. package/lib/store/RelayModernFragmentSpecResolver.js +1 -1
  49. package/lib/store/RelayModernOperationDescriptor.js +2 -2
  50. package/lib/store/RelayModernRecord.js +1 -1
  51. package/lib/store/RelayModernSelector.js +1 -1
  52. package/lib/store/RelayModernStore.js +1 -1
  53. package/lib/store/RelayOperationTracker.js +1 -1
  54. package/lib/store/RelayOptimisticRecordSource.js +1 -1
  55. package/lib/store/RelayPublishQueue.js +1 -1
  56. package/lib/store/RelayReader.js +1 -3
  57. package/lib/store/RelayRecordSource.js +1 -1
  58. package/lib/store/RelayRecordState.js +1 -1
  59. package/lib/store/RelayReferenceMarker.js +1 -1
  60. package/lib/store/RelayResponseNormalizer.js +1 -1
  61. package/lib/store/RelayStoreReactFlightUtils.js +1 -1
  62. package/lib/store/RelayStoreSubscriptions.js +1 -1
  63. package/lib/store/RelayStoreTypes.js +1 -1
  64. package/lib/store/RelayStoreUtils.js +1 -1
  65. package/lib/store/ResolverCache.js +1 -1
  66. package/lib/store/ResolverFragments.js +3 -3
  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 +1 -1
  71. package/lib/store/cloneRelayScalarHandleSourceField.js +1 -1
  72. package/lib/store/createFragmentSpecResolver.js +1 -1
  73. package/lib/store/createRelayContext.js +1 -1
  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 +1 -1
  80. package/lib/subscription/requestSubscription.js +1 -3
  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 +1 -1
  85. package/lib/util/RelayDefaultHandleKey.js +1 -1
  86. package/lib/util/RelayError.js +1 -1
  87. package/lib/util/RelayFeatureFlags.js +1 -2
  88. package/lib/util/RelayProfiler.js +1 -1
  89. package/lib/util/RelayReplaySubject.js +1 -1
  90. package/lib/util/RelayRuntimeTypes.js +1 -1
  91. package/lib/util/StringInterner.js +1 -1
  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/getFragmentIdentifier.js +1 -1
  96. package/lib/util/getOperation.js +1 -1
  97. package/lib/util/getPaginationMetadata.js +1 -1
  98. package/lib/util/getPaginationVariables.js +1 -1
  99. package/lib/util/getPendingOperationsForFragment.js +1 -1
  100. package/lib/util/getRefetchMetadata.js +1 -1
  101. package/lib/util/getRelayHandleKey.js +1 -1
  102. package/lib/util/getRequestIdentifier.js +1 -1
  103. package/lib/util/getValueAtPath.js +1 -1
  104. package/lib/util/isEmptyObject.js +1 -1
  105. package/lib/util/isPromise.js +1 -1
  106. package/lib/util/isScalarAndEqual.js +1 -1
  107. package/lib/util/recycleNodesInto.js +1 -1
  108. package/lib/util/registerEnvironmentWithDevTools.js +1 -1
  109. package/lib/util/reportMissingRequiredFields.js +1 -1
  110. package/lib/util/resolveImmediate.js +1 -1
  111. package/lib/util/stableCopy.js +1 -1
  112. package/lib/util/withDuration.js +1 -1
  113. package/lib/util/withProvidedVariables.js +29 -0
  114. package/multi-actor-environment/ActorIdentifier.js.flow +1 -1
  115. package/multi-actor-environment/ActorSpecificEnvironment.js.flow +1 -1
  116. package/multi-actor-environment/ActorUtils.js.flow +1 -1
  117. package/multi-actor-environment/MultiActorEnvironment.js.flow +1 -1
  118. package/multi-actor-environment/MultiActorEnvironmentTypes.js.flow +1 -1
  119. package/multi-actor-environment/index.js.flow +1 -1
  120. package/mutations/RelayDeclarativeMutationConfig.js.flow +1 -2
  121. package/mutations/RelayRecordProxy.js.flow +1 -1
  122. package/mutations/RelayRecordSourceMutator.js.flow +1 -1
  123. package/mutations/RelayRecordSourceProxy.js.flow +1 -1
  124. package/mutations/RelayRecordSourceSelectorProxy.js.flow +1 -1
  125. package/mutations/applyOptimisticMutation.js.flow +1 -1
  126. package/mutations/commitLocalUpdate.js.flow +1 -1
  127. package/mutations/commitMutation.js.flow +1 -1
  128. package/mutations/readUpdatableQuery_EXPERIMENTAL.js.flow +55 -48
  129. package/mutations/validateMutation.js.flow +1 -1
  130. package/network/ConvertToExecuteFunction.js.flow +1 -1
  131. package/network/RelayNetwork.js.flow +8 -4
  132. package/network/RelayNetworkTypes.js.flow +1 -1
  133. package/network/RelayObservable.js.flow +1 -1
  134. package/network/RelayQueryResponseCache.js.flow +1 -1
  135. package/network/wrapNetworkWithLogObserver.js.flow +2 -3
  136. package/package.json +2 -2
  137. package/query/GraphQLTag.js.flow +2 -2
  138. package/query/PreloadableQueryRegistry.js.flow +3 -2
  139. package/query/fetchQuery.js.flow +16 -12
  140. package/query/fetchQueryInternal.js.flow +1 -1
  141. package/query/fetchQuery_DEPRECATED.js.flow +1 -1
  142. package/relay-runtime.js +2 -2
  143. package/relay-runtime.min.js +3 -3
  144. package/store/ClientID.js.flow +1 -1
  145. package/store/DataChecker.js.flow +1 -1
  146. package/store/OperationExecutor.js.flow +1 -1
  147. package/store/RelayConcreteVariables.js.flow +14 -3
  148. package/store/RelayExperimentalGraphResponseHandler.js.flow +121 -0
  149. package/store/RelayExperimentalGraphResponseTransform.js.flow +470 -0
  150. package/store/RelayModernEnvironment.js.flow +1 -1
  151. package/store/RelayModernFragmentSpecResolver.js.flow +1 -1
  152. package/store/RelayModernOperationDescriptor.js.flow +6 -2
  153. package/store/RelayModernRecord.js.flow +1 -1
  154. package/store/RelayModernSelector.js.flow +1 -1
  155. package/store/RelayModernStore.js.flow +1 -2
  156. package/store/RelayOperationTracker.js.flow +1 -1
  157. package/store/RelayOptimisticRecordSource.js.flow +1 -1
  158. package/store/RelayPublishQueue.js.flow +1 -1
  159. package/store/RelayReader.js.flow +1 -8
  160. package/store/RelayRecordSource.js.flow +1 -1
  161. package/store/RelayRecordState.js.flow +1 -1
  162. package/store/RelayReferenceMarker.js.flow +1 -1
  163. package/store/RelayResponseNormalizer.js.flow +1 -1
  164. package/store/RelayStoreReactFlightUtils.js.flow +1 -1
  165. package/store/RelayStoreSubscriptions.js.flow +1 -1
  166. package/store/RelayStoreTypes.js.flow +1 -1
  167. package/store/RelayStoreUtils.js.flow +1 -1
  168. package/store/ResolverCache.js.flow +1 -1
  169. package/store/ResolverFragments.js.flow +3 -3
  170. package/store/StoreInspector.js.flow +1 -1
  171. package/store/TypeID.js.flow +1 -1
  172. package/store/ViewerPattern.js.flow +1 -1
  173. package/store/cloneRelayHandleSourceField.js.flow +1 -1
  174. package/store/cloneRelayScalarHandleSourceField.js.flow +1 -1
  175. package/store/createFragmentSpecResolver.js.flow +1 -1
  176. package/store/createRelayContext.js.flow +1 -1
  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 +1 -1
  182. package/store/readInlineData.js.flow +1 -1
  183. package/subscription/requestSubscription.js.flow +1 -2
  184. package/util/JSResourceTypes.flow.js.flow +1 -1
  185. package/util/NormalizationNode.js.flow +1 -1
  186. package/util/ReaderNode.js.flow +1 -1
  187. package/util/RelayConcreteNode.js.flow +3 -1
  188. package/util/RelayDefaultHandleKey.js.flow +1 -1
  189. package/util/RelayError.js.flow +1 -1
  190. package/util/RelayFeatureFlags.js.flow +1 -3
  191. package/util/RelayProfiler.js.flow +1 -1
  192. package/util/RelayReplaySubject.js.flow +1 -1
  193. package/util/RelayRuntimeTypes.js.flow +1 -1
  194. package/util/StringInterner.js.flow +1 -1
  195. package/util/createPayloadFor3DField.js.flow +1 -1
  196. package/util/deepFreeze.js.flow +1 -1
  197. package/util/generateID.js.flow +1 -1
  198. package/util/getFragmentIdentifier.js.flow +1 -1
  199. package/util/getOperation.js.flow +1 -1
  200. package/util/getPaginationMetadata.js.flow +3 -6
  201. package/util/getPaginationVariables.js.flow +1 -1
  202. package/util/getPendingOperationsForFragment.js.flow +1 -1
  203. package/util/getRefetchMetadata.js.flow +3 -6
  204. package/util/getRelayHandleKey.js.flow +1 -1
  205. package/util/getRequestIdentifier.js.flow +1 -1
  206. package/util/getValueAtPath.js.flow +1 -1
  207. package/util/isEmptyObject.js.flow +1 -1
  208. package/util/isPromise.js.flow +1 -1
  209. package/util/isScalarAndEqual.js.flow +1 -1
  210. package/util/recycleNodesInto.js.flow +1 -1
  211. package/util/registerEnvironmentWithDevTools.js.flow +1 -1
  212. package/util/reportMissingRequiredFields.js.flow +1 -1
  213. package/util/resolveImmediate.js.flow +1 -1
  214. package/util/stableCopy.js.flow +1 -1
  215. package/util/withDuration.js.flow +1 -1
  216. package/util/withProvidedVariables.js.flow +36 -0
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) Facebook, Inc. and its affiliates.
3
+ Copyright (c) Meta Platforms, Inc. and affiliates.
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md ADDED
@@ -0,0 +1,67 @@
1
+ Relay Runtime
2
+ ---
3
+
4
+ A set of Relay APIs responsible for data fetching, reading and normalization of
5
+ the GraphQL data.
6
+
7
+ Example:
8
+
9
+ ```js
10
+
11
+ // @flow strict-local
12
+
13
+ import type {FetchFunction} from 'relay-runtime';
14
+
15
+ const {
16
+ Environment,
17
+ Network,
18
+ Observable,
19
+ RecordSource,
20
+ Store,
21
+ fetchQuery,
22
+ graphql,
23
+ } = require('relay-runtime');
24
+
25
+ const fetchFn: FetchFunction = function (request, variables) {
26
+ return new Observable.create(source => {
27
+ fetch('/my-graphql-api', {
28
+ method: 'POST',
29
+ body: JSON.stringify({
30
+ text: request.text,
31
+ variables,
32
+ }),
33
+ })
34
+ .then(response => response.json())
35
+ .then(data => source.next(data));
36
+ });
37
+ };
38
+
39
+ const network = Network.create(fetchFn);
40
+ const store = new Store(new RecordSource());
41
+ const environment = new Environment({
42
+ network,
43
+ store,
44
+ });
45
+
46
+ fetchQuery(
47
+ environment,
48
+ graphql`
49
+ query AppQuery($id: ID!) {
50
+ user(id: $id) {
51
+ name
52
+ }
53
+ }
54
+ `,
55
+ {id: 'my-node-id'},
56
+ ).subscribe({
57
+ error: error => {
58
+ console.error(error);
59
+ },
60
+ next: data => {
61
+ console.log(data);
62
+ },
63
+ });
64
+
65
+ ```
66
+
67
+ For complete API reference, visit https://relay.dev/.
@@ -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.
@@ -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.
package/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Relay v13.0.0-rc.0
2
+ * Relay v13.0.1
3
3
  *
4
- * Copyright (c) Facebook, Inc. and its affiliates.
4
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
5
5
  *
6
6
  * This source code is licensed under the MIT license found in the
7
7
  * LICENSE file in the root directory of this source tree.
package/index.js.flow CHANGED
@@ -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.
@@ -46,6 +46,7 @@ const RelayModernStore = require('./store/RelayModernStore');
46
46
  const RelayOperationTracker = require('./store/RelayOperationTracker');
47
47
  const RelayRecordSource = require('./store/RelayRecordSource');
48
48
  const RelayStoreUtils = require('./store/RelayStoreUtils');
49
+ const ResolverFragments = require('./store/ResolverFragments');
49
50
  const ViewerPattern = require('./store/ViewerPattern');
50
51
  const requestSubscription = require('./subscription/requestSubscription');
51
52
  const createPayloadFor3DField = require('./util/createPayloadFor3DField');
@@ -69,6 +70,7 @@ const RelayProfiler = require('./util/RelayProfiler');
69
70
  const RelayReplaySubject = require('./util/RelayReplaySubject');
70
71
  const reportMissingRequiredFields = require('./util/reportMissingRequiredFields');
71
72
  const stableCopy = require('./util/stableCopy');
73
+ const withProvidedVariables = require('./util/withProvidedVariables');
72
74
 
73
75
  export type {ConnectionMetadata} from './handlers/connection/ConnectionHandler';
74
76
  export type {
@@ -352,6 +354,7 @@ module.exports = {
352
354
  getPendingOperationsForFragment: getPendingOperationsForFragment,
353
355
  getValueAtPath: getValueAtPath,
354
356
  __internal: {
357
+ ResolverFragments,
355
358
  OperationTracker: RelayOperationTracker,
356
359
  createRelayContext: createRelayContext,
357
360
  getOperationVariables: RelayConcreteVariables.getOperationVariables,
@@ -360,5 +363,6 @@ module.exports = {
360
363
  getPromiseForActiveRequest: fetchQueryInternal.getPromiseForActiveRequest,
361
364
  getObservableForActiveRequest:
362
365
  fetchQueryInternal.getObservableForActiveRequest,
366
+ withProvidedVariables: withProvidedVariables,
363
367
  },
364
368
  };
@@ -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.
@@ -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.
package/lib/index.js CHANGED
@@ -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.
@@ -73,6 +73,8 @@ var RelayRecordSource = require('./store/RelayRecordSource');
73
73
 
74
74
  var RelayStoreUtils = require('./store/RelayStoreUtils');
75
75
 
76
+ var ResolverFragments = require('./store/ResolverFragments');
77
+
76
78
  var ViewerPattern = require('./store/ViewerPattern');
77
79
 
78
80
  var requestSubscription = require('./subscription/requestSubscription');
@@ -119,6 +121,8 @@ var reportMissingRequiredFields = require('./util/reportMissingRequiredFields');
119
121
 
120
122
  var stableCopy = require('./util/stableCopy');
121
123
 
124
+ var withProvidedVariables = require('./util/withProvidedVariables');
125
+
122
126
  // As early as possible, check for the existence of the JavaScript globals which
123
127
  // Relay Runtime relies upon, and produce a clear message if they do not exist.
124
128
  if (process.env.NODE_ENV !== "production") {
@@ -230,12 +234,14 @@ module.exports = {
230
234
  getPendingOperationsForFragment: getPendingOperationsForFragment,
231
235
  getValueAtPath: getValueAtPath,
232
236
  __internal: {
237
+ ResolverFragments: ResolverFragments,
233
238
  OperationTracker: RelayOperationTracker,
234
239
  createRelayContext: createRelayContext,
235
240
  getOperationVariables: RelayConcreteVariables.getOperationVariables,
236
241
  fetchQuery: fetchQueryInternal.fetchQuery,
237
242
  fetchQueryDeduped: fetchQueryInternal.fetchQueryDeduped,
238
243
  getPromiseForActiveRequest: fetchQueryInternal.getPromiseForActiveRequest,
239
- getObservableForActiveRequest: fetchQueryInternal.getObservableForActiveRequest
244
+ getObservableForActiveRequest: fetchQueryInternal.getObservableForActiveRequest,
245
+ withProvidedVariables: withProvidedVariables
240
246
  }
241
247
  };
@@ -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.
@@ -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.
@@ -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.
@@ -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.
@@ -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.
@@ -37,7 +37,7 @@ function readUpdatableQuery_EXPERIMENTAL(query, variables, proxy) {
37
37
  }
38
38
 
39
39
  function updateProxyFromSelections(mutableUpdatableProxy, recordProxy, queryVariables, selections, root) {
40
- var _selection$alias, _selection$alias2;
40
+ var _selection$alias3;
41
41
 
42
42
  var _iterator = (0, _createForOfIteratorHelper2["default"])(selections),
43
43
  _step;
@@ -48,21 +48,23 @@ function updateProxyFromSelections(mutableUpdatableProxy, recordProxy, queryVari
48
48
 
49
49
  switch (selection.kind) {
50
50
  case 'LinkedField':
51
- // Linked fields are assignable if they contain fragment spreads or
52
- // read-only otherwise.
53
- var isAssignable = selection.selections.some(function (item) {
54
- return item.kind === 'FragmentSpread';
55
- });
56
- var set = !isAssignable ? undefined : selection.plural ? createSetterForPluralLinkedField(selection, queryVariables, recordProxy, root) : createSetterForSingularLinkedField(selection, queryVariables, recordProxy, root);
57
- var get = selection.plural ? createGetterForPluralLinkedField(selection, queryVariables, recordProxy, root) : createGetterForSingularLinkedField(selection, queryVariables, recordProxy, root);
58
- Object.defineProperty(mutableUpdatableProxy, (_selection$alias = selection.alias) !== null && _selection$alias !== void 0 ? _selection$alias : selection.name, {
59
- get: get,
60
- set: set
61
- });
51
+ if (selection.plural) {
52
+ Object.defineProperty(mutableUpdatableProxy, (_selection$alias = selection.alias) !== null && _selection$alias !== void 0 ? _selection$alias : selection.name, {
53
+ // $FlowFixMe[incompatible-call] these getters and setters have different types on purpose
54
+ get: createGetterForPluralLinkedField(selection, queryVariables, recordProxy, root),
55
+ set: createSetterForPluralLinkedField(selection, queryVariables, recordProxy, root)
56
+ });
57
+ } else {
58
+ Object.defineProperty(mutableUpdatableProxy, (_selection$alias2 = selection.alias) !== null && _selection$alias2 !== void 0 ? _selection$alias2 : selection.name, {
59
+ get: createGetterForSingularLinkedField(selection, queryVariables, recordProxy, root),
60
+ set: createSetterForSingularLinkedField(selection, queryVariables, recordProxy, root)
61
+ });
62
+ }
63
+
62
64
  break;
63
65
 
64
66
  case 'ScalarField':
65
- var scalarFieldName = (_selection$alias2 = selection.alias) !== null && _selection$alias2 !== void 0 ? _selection$alias2 : selection.name;
67
+ var scalarFieldName = (_selection$alias3 = selection.alias) !== null && _selection$alias3 !== void 0 ? _selection$alias3 : selection.name;
66
68
  Object.defineProperty(mutableUpdatableProxy, scalarFieldName, {
67
69
  get: function get() {
68
70
  var _selection$args;
@@ -92,6 +94,10 @@ function updateProxyFromSelections(mutableUpdatableProxy, recordProxy, queryVari
92
94
 
93
95
  break;
94
96
 
97
+ case 'ClientExtension':
98
+ updateProxyFromSelections(mutableUpdatableProxy, recordProxy, queryVariables, selection.selections, root);
99
+ break;
100
+
95
101
  case 'FragmentSpread':
96
102
  // Explicitly ignore
97
103
  break;
@@ -102,6 +108,10 @@ function updateProxyFromSelections(mutableUpdatableProxy, recordProxy, queryVari
102
108
  };
103
109
 
104
110
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
111
+ var _selection$alias;
112
+
113
+ var _selection$alias2;
114
+
105
115
  _loop();
106
116
  }
107
117
  } catch (err) {
@@ -118,8 +128,7 @@ function createSetterForPluralLinkedField(selection, queryVariables, recordProxy
118
128
  var variables = getArgumentValues((_selection$args3 = selection.args) !== null && _selection$args3 !== void 0 ? _selection$args3 : [], queryVariables);
119
129
 
120
130
  if (newValue == null) {
121
- // $FlowFixMe[unclear-type] No good way to type these variables
122
- recordProxy.setValue(null, selection.name, variables);
131
+ throw new Error('Do not assign null to plural linked fields; assign an empty array instead.');
123
132
  } else {
124
133
  var recordProxies = newValue.map(function (item) {
125
134
  if (item == null) {
@@ -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.
@@ -10,6 +10,8 @@
10
10
  // flowlint ambiguous-object-type:error
11
11
  'use strict';
12
12
 
13
+ var withProvidedVariables = require('../util/withProvidedVariables');
14
+
13
15
  var _require = require('./ConvertToExecuteFunction'),
14
16
  convertFetch = _require.convertFetch;
15
17
 
@@ -25,22 +27,24 @@ function create(fetchFn, subscribe) {
25
27
  var observeFetch = convertFetch(fetchFn);
26
28
 
27
29
  function execute(request, variables, cacheConfig, uploadables, logRequestInfo) {
30
+ var operationVariables = withProvidedVariables(variables, request);
31
+
28
32
  if (request.operationKind === 'subscription') {
29
33
  !subscribe ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayNetwork: This network layer does not support Subscriptions. ' + 'To use Subscriptions, provide a custom network layer.') : invariant(false) : void 0;
30
34
  !!uploadables ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayNetwork: Cannot provide uploadables while subscribing.') : invariant(false) : void 0;
31
- return subscribe(request, variables, cacheConfig);
35
+ return subscribe(request, operationVariables, cacheConfig);
32
36
  }
33
37
 
34
38
  var pollInterval = cacheConfig.poll;
35
39
 
36
40
  if (pollInterval != null) {
37
41
  !!uploadables ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayNetwork: Cannot provide uploadables while polling.') : invariant(false) : void 0;
38
- return observeFetch(request, variables, {
42
+ return observeFetch(request, operationVariables, {
39
43
  force: true
40
44
  }).poll(pollInterval);
41
45
  }
42
46
 
43
- return observeFetch(request, variables, cacheConfig, uploadables, logRequestInfo);
47
+ return observeFetch(request, operationVariables, cacheConfig, uploadables, logRequestInfo);
44
48
  }
45
49
 
46
50
  return {
@@ -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.
@@ -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.
@@ -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.
@@ -122,6 +122,9 @@ function fetchQuery(environment, query, variables, options) {
122
122
  if (snapshot.missingRequiredFields != null) {
123
123
  reportMissingRequiredFields(environment, snapshot.missingRequiredFields);
124
124
  }
125
+ /* $FlowFixMe[incompatible-return] we assume readData returns the right
126
+ * data just having written it from network or checked availability. */
127
+
125
128
 
126
129
  return snapshot.data;
127
130
  }
@@ -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.
@@ -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.
@@ -68,13 +68,15 @@ function getFragmentVariables(fragment, rootVariables, argumentVariables) {
68
68
  }
69
69
  /**
70
70
  * Determines the variables that are in scope for a given operation given values
71
- * for some/all of its arguments. Extraneous input variables are filtered from
72
- * the output, and missing variables are set to default values (if given in the
71
+ * for some/all of its arguments.
72
+ * - extraneous input variables are filtered from the output
73
+ * - missing variables are set to default values (if given in the
73
74
  * operation's definition).
75
+ * - variables with provider modules are added
74
76
  */
75
77
 
76
78
 
77
- function getOperationVariables(operation, variables) {
79
+ function getOperationVariables(operation, parameters, variables) {
78
80
  var operationVariables = {};
79
81
  operation.argumentDefinitions.forEach(function (def) {
80
82
  var value = def.defaultValue;
@@ -85,6 +87,14 @@ function getOperationVariables(operation, variables) {
85
87
 
86
88
  operationVariables[def.name] = value;
87
89
  });
90
+ var providedVariables = parameters.providedVariables;
91
+
92
+ if (providedVariables != null) {
93
+ Object.keys(providedVariables).forEach(function (varName) {
94
+ operationVariables[varName] = providedVariables[varName].get();
95
+ });
96
+ }
97
+
88
98
  return operationVariables;
89
99
  }
90
100