relay-runtime 13.0.0-rc.1 → 13.0.2

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 +64 -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 +27 -18
  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 +13 -4
  45. package/lib/store/RelayExperimentalGraphResponseHandler.js +3 -3
  46. package/lib/store/RelayExperimentalGraphResponseTransform.js +54 -22
  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 +5 -3
  56. package/lib/store/RelayReader.js +56 -16
  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 +2 -1
  65. package/lib/store/ResolverCache.js +11 -3
  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 +49 -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 +9 -20
  128. package/mutations/readUpdatableQuery_EXPERIMENTAL.js.flow +57 -50
  129. package/mutations/validateMutation.js.flow +1 -1
  130. package/network/ConvertToExecuteFunction.js.flow +1 -1
  131. package/network/RelayNetwork.js.flow +11 -4
  132. package/network/RelayNetworkTypes.js.flow +2 -2
  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 +13 -3
  148. package/store/RelayExperimentalGraphResponseHandler.js.flow +3 -6
  149. package/store/RelayExperimentalGraphResponseTransform.js.flow +51 -22
  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 +9 -2
  159. package/store/RelayReader.js.flow +79 -39
  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 +4 -3
  167. package/store/RelayStoreUtils.js.flow +2 -1
  168. package/store/ResolverCache.js.flow +19 -6
  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 +8 -14
  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 +5 -3
  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 +64 -0
@@ -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.
@@ -21,7 +21,7 @@ import type {OperationType} from '../util/RelayRuntimeTypes';
21
21
  const {getRequest} = require('../query/GraphQLTag');
22
22
  const {getArgumentValues} = require('../store/RelayStoreUtils');
23
23
 
24
- const nonUpdatableKeys = ['id', '__id', '__typename'];
24
+ const nonUpdatableKeys = ['id', '__id', '__typename', 'js'];
25
25
 
26
26
  function readUpdatableQuery_EXPERIMENTAL<TQuery: OperationType>(
27
27
  query: GraphQLTaggedNode,
@@ -55,50 +55,46 @@ function updateProxyFromSelections<TQuery: OperationType>(
55
55
  for (const selection of selections) {
56
56
  switch (selection.kind) {
57
57
  case 'LinkedField':
58
- // Linked fields are assignable if they contain fragment spreads or
59
- // read-only otherwise.
60
- const isAssignable = selection.selections.some(
61
- item => item.kind === 'FragmentSpread',
62
- );
63
-
64
- const set = !isAssignable
65
- ? undefined
66
- : selection.plural
67
- ? createSetterForPluralLinkedField(
68
- selection,
69
- queryVariables,
70
- recordProxy,
71
- root,
72
- )
73
- : createSetterForSingularLinkedField(
74
- selection,
75
- queryVariables,
76
- recordProxy,
77
- root,
78
- );
79
-
80
- const get = selection.plural
81
- ? createGetterForPluralLinkedField(
82
- selection,
83
- queryVariables,
84
- recordProxy,
85
- root,
86
- )
87
- : createGetterForSingularLinkedField(
88
- selection,
89
- queryVariables,
90
- recordProxy,
91
- root,
92
- );
93
-
94
- Object.defineProperty(
95
- mutableUpdatableProxy,
96
- selection.alias ?? selection.name,
97
- {
98
- get,
99
- set,
100
- },
101
- );
58
+ if (selection.plural) {
59
+ Object.defineProperty(
60
+ mutableUpdatableProxy,
61
+ selection.alias ?? selection.name,
62
+ {
63
+ // $FlowFixMe[incompatible-call] these getters and setters have different types on purpose
64
+ get: createGetterForPluralLinkedField(
65
+ selection,
66
+ queryVariables,
67
+ recordProxy,
68
+ root,
69
+ ),
70
+ set: createSetterForPluralLinkedField(
71
+ selection,
72
+ queryVariables,
73
+ recordProxy,
74
+ root,
75
+ ),
76
+ },
77
+ );
78
+ } else {
79
+ Object.defineProperty(
80
+ mutableUpdatableProxy,
81
+ selection.alias ?? selection.name,
82
+ {
83
+ get: createGetterForSingularLinkedField(
84
+ selection,
85
+ queryVariables,
86
+ recordProxy,
87
+ root,
88
+ ),
89
+ set: createSetterForSingularLinkedField(
90
+ selection,
91
+ queryVariables,
92
+ recordProxy,
93
+ root,
94
+ ),
95
+ },
96
+ );
97
+ }
102
98
  break;
103
99
  case 'ScalarField':
104
100
  const scalarFieldName = selection.alias ?? selection.name;
@@ -145,6 +141,15 @@ function updateProxyFromSelections<TQuery: OperationType>(
145
141
  );
146
142
  }
147
143
  break;
144
+ case 'ClientExtension':
145
+ updateProxyFromSelections(
146
+ mutableUpdatableProxy,
147
+ recordProxy,
148
+ queryVariables,
149
+ selection.selections,
150
+ root,
151
+ );
152
+ break;
148
153
  case 'FragmentSpread':
149
154
  // Explicitly ignore
150
155
  break;
@@ -162,11 +167,12 @@ function createSetterForPluralLinkedField<TQuery: OperationType>(
162
167
  recordProxy: RecordProxy,
163
168
  root: RecordSourceProxy,
164
169
  ) {
165
- return function set(newValue: ?$ReadOnlyArray<{__id: string, ...}>) {
170
+ return function set(newValue: $ReadOnlyArray<{__id: string, ...}>) {
166
171
  const variables = getArgumentValues(selection.args ?? [], queryVariables);
167
172
  if (newValue == null) {
168
- // $FlowFixMe[unclear-type] No good way to type these variables
169
- recordProxy.setValue(null, selection.name, (variables: any));
173
+ throw new Error(
174
+ 'Do not assign null to plural linked fields; assign an empty array instead.',
175
+ );
170
176
  } else {
171
177
  const recordProxies = newValue.map(item => {
172
178
  if (item == null) {
@@ -197,6 +203,7 @@ function createSetterForPluralLinkedField<TQuery: OperationType>(
197
203
  }
198
204
  };
199
205
  }
206
+
200
207
  function createSetterForSingularLinkedField<TQuery: OperationType>(
201
208
  selection: ReaderLinkedField,
202
209
  queryVariables: TQuery['variables'],
@@ -207,7 +214,7 @@ function createSetterForSingularLinkedField<TQuery: OperationType>(
207
214
  const variables = getArgumentValues(selection.args ?? [], queryVariables);
208
215
  if (newValue == null) {
209
216
  // $FlowFixMe[unclear-type] No good way to type these variables
210
- recordProxy.setValue(null, selection.name, (variables: any));
217
+ recordProxy.setValue(newValue, selection.name, (variables: any));
211
218
  } else {
212
219
  const {__id} = newValue;
213
220
  if (__id == 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.
@@ -24,6 +24,7 @@ import type {
24
24
  } from './RelayNetworkTypes';
25
25
  import type RelayObservable from './RelayObservable';
26
26
 
27
+ const withProvidedVariables = require('../util/withProvidedVariables');
27
28
  const {convertFetch} = require('./ConvertToExecuteFunction');
28
29
  const invariant = require('invariant');
29
30
 
@@ -45,6 +46,10 @@ function create(
45
46
  uploadables?: ?UploadableMap,
46
47
  logRequestInfo: ?LogRequestInfoFunction,
47
48
  ): RelayObservable<GraphQLResponse> {
49
+ const operationVariables = withProvidedVariables(
50
+ variables,
51
+ request.providedVariables,
52
+ );
48
53
  if (request.operationKind === 'subscription') {
49
54
  invariant(
50
55
  subscribe,
@@ -56,7 +61,7 @@ function create(
56
61
  !uploadables,
57
62
  'RelayNetwork: Cannot provide uploadables while subscribing.',
58
63
  );
59
- return subscribe(request, variables, cacheConfig);
64
+ return subscribe(request, operationVariables, cacheConfig);
60
65
  }
61
66
 
62
67
  const pollInterval = cacheConfig.poll;
@@ -65,12 +70,14 @@ function create(
65
70
  !uploadables,
66
71
  'RelayNetwork: Cannot provide uploadables while polling.',
67
72
  );
68
- return observeFetch(request, variables, {force: true}).poll(pollInterval);
73
+ return observeFetch(request, operationVariables, {force: true}).poll(
74
+ pollInterval,
75
+ );
69
76
  }
70
77
 
71
78
  return observeFetch(
72
79
  request,
73
- variables,
80
+ operationVariables,
74
81
  cacheConfig,
75
82
  uploadables,
76
83
  logRequestInfo,
@@ -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.
@@ -26,7 +26,7 @@ export interface INetwork {
26
26
 
27
27
  export type LogRequestInfoFunction = mixed => void;
28
28
 
29
- export type PayloadData = interface {[key: string]: mixed};
29
+ export type PayloadData = {[key: string]: mixed};
30
30
 
31
31
  export type PayloadError = interface {
32
32
  message: string,
@@ -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.
@@ -11,8 +11,6 @@
11
11
  // flowlint ambiguous-object-type:error
12
12
 
13
13
  'use strict';
14
- import type {Subscription} from './RelayObservable';
15
-
16
14
  import type ActorSpecificEnvironment from '../multi-actor-environment/ActorSpecificEnvironment';
17
15
  import type RelayModernEnvironment from '../store/RelayModernEnvironment';
18
16
  import type {RequestParameters} from '../util/RelayConcreteNode';
@@ -23,6 +21,7 @@ import type {
23
21
  UploadableMap,
24
22
  } from './RelayNetworkTypes';
25
23
  import type RelayObservable from './RelayObservable';
24
+ import type {Subscription} from './RelayObservable';
26
25
 
27
26
  const generateID = require('../util/generateID');
28
27
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "relay-runtime",
3
3
  "description": "A core runtime for building GraphQL-driven applications.",
4
- "version": "13.0.0-rc.1",
4
+ "version": "13.0.2",
5
5
  "keywords": [
6
6
  "graphql",
7
7
  "relay"
@@ -12,7 +12,7 @@
12
12
  "repository": "facebook/relay",
13
13
  "dependencies": {
14
14
  "@babel/runtime": "^7.0.0",
15
- "fbjs": "^3.0.0",
15
+ "fbjs": "^3.0.2",
16
16
  "invariant": "^2.2.4"
17
17
  },
18
18
  "directories": {
@@ -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.
@@ -39,7 +39,7 @@ export type GraphQLTaggedNode =
39
39
  * Runtime function to correspond to the `graphql` tagged template function.
40
40
  * All calls to this function should be transformed by the plugin.
41
41
  */
42
- function graphql(strings: Array<string>): GraphQLTaggedNode {
42
+ function graphql(strings: Array<string>): any {
43
43
  invariant(
44
44
  false,
45
45
  'graphql: Unexpected invocation at runtime. Either the Babel transform ' +
@@ -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.
@@ -11,7 +11,8 @@
11
11
 
12
12
  'use strict';
13
13
 
14
- import type {ConcreteRequest, Disposable} from 'relay-runtime';
14
+ import type {ConcreteRequest} from '../util/RelayConcreteNode';
15
+ import type {Disposable} from '../util/RelayRuntimeTypes';
15
16
 
16
17
  type Callback = (concreteRequest: ConcreteRequest) => void;
17
18
 
@@ -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,15 +14,17 @@
14
14
  'use strict';
15
15
 
16
16
  import type {
17
- CacheConfig,
18
- FetchQueryFetchPolicy,
19
- GraphQLTaggedNode,
20
17
  IEnvironment,
21
18
  OperationDescriptor,
22
- OperationType,
23
19
  Snapshot,
24
- VariablesOf,
25
- } from 'relay-runtime';
20
+ } from '../store/RelayStoreTypes';
21
+ import type {
22
+ CacheConfig,
23
+ FetchQueryFetchPolicy,
24
+ OperationType,
25
+ Query,
26
+ Variables,
27
+ } from '../util/RelayRuntimeTypes';
26
28
 
27
29
  const RelayObservable = require('../network/RelayObservable');
28
30
  const {
@@ -110,15 +112,15 @@ const invariant = require('invariant');
110
112
  * ```
111
113
  * NOTE: When using .toPromise(), the request cannot be cancelled.
112
114
  */
113
- function fetchQuery<TQuery: OperationType>(
115
+ function fetchQuery<TVariables: Variables, TData, TRawResponse>(
114
116
  environment: IEnvironment,
115
- query: GraphQLTaggedNode,
116
- variables: VariablesOf<TQuery>,
117
+ query: Query<TVariables, TData, TRawResponse>,
118
+ variables: TVariables,
117
119
  options?: $ReadOnly<{|
118
120
  fetchPolicy?: FetchQueryFetchPolicy,
119
121
  networkCacheConfig?: CacheConfig,
120
122
  |}>,
121
- ): RelayObservable<TQuery['response']> {
123
+ ): RelayObservable<TData> {
122
124
  const queryNode = getRequest(query);
123
125
  invariant(
124
126
  queryNode.params.operationKind === 'query',
@@ -135,10 +137,12 @@ function fetchQuery<TQuery: OperationType>(
135
137
  );
136
138
  const fetchPolicy = options?.fetchPolicy ?? 'network-only';
137
139
 
138
- function readData(snapshot: Snapshot) {
140
+ function readData(snapshot: Snapshot): TData {
139
141
  if (snapshot.missingRequiredFields != null) {
140
142
  reportMissingRequiredFields(environment, snapshot.missingRequiredFields);
141
143
  }
144
+ /* $FlowFixMe[incompatible-return] we assume readData returns the right
145
+ * data just having written it from network or checked availability. */
142
146
  return snapshot.data;
143
147
  }
144
148
 
@@ -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.