relay-runtime 11.0.2 → 13.0.0-rc.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 (219) hide show
  1. package/README.md +67 -0
  2. package/handlers/RelayDefaultHandlerProvider.js.flow +3 -3
  3. package/handlers/connection/ConnectionHandler.js.flow +9 -18
  4. package/handlers/connection/ConnectionInterface.js.flow +1 -1
  5. package/handlers/connection/MutationHandlers.js.flow +8 -12
  6. package/index.js +1 -1
  7. package/index.js.flow +57 -35
  8. package/lib/handlers/RelayDefaultHandlerProvider.js +1 -1
  9. package/lib/handlers/connection/ConnectionHandler.js +13 -19
  10. package/lib/handlers/connection/ConnectionInterface.js +1 -1
  11. package/lib/handlers/connection/MutationHandlers.js +4 -7
  12. package/lib/index.js +59 -44
  13. package/lib/multi-actor-environment/ActorIdentifier.js +12 -2
  14. package/lib/multi-actor-environment/ActorSpecificEnvironment.js +64 -20
  15. package/lib/multi-actor-environment/ActorUtils.js +27 -0
  16. package/lib/multi-actor-environment/MultiActorEnvironment.js +324 -61
  17. package/lib/multi-actor-environment/MultiActorEnvironmentTypes.js +1 -1
  18. package/lib/multi-actor-environment/index.js +6 -2
  19. package/lib/mutations/RelayDeclarativeMutationConfig.js +5 -2
  20. package/lib/mutations/RelayRecordProxy.js +4 -3
  21. package/lib/mutations/RelayRecordSourceMutator.js +4 -3
  22. package/lib/mutations/RelayRecordSourceProxy.js +13 -5
  23. package/lib/mutations/RelayRecordSourceSelectorProxy.js +19 -6
  24. package/lib/mutations/applyOptimisticMutation.js +7 -7
  25. package/lib/mutations/commitLocalUpdate.js +1 -1
  26. package/lib/mutations/commitMutation.js +15 -11
  27. package/lib/mutations/readUpdatableQuery_EXPERIMENTAL.js +242 -0
  28. package/lib/mutations/validateMutation.js +11 -6
  29. package/lib/network/ConvertToExecuteFunction.js +3 -2
  30. package/lib/network/RelayNetwork.js +4 -3
  31. package/lib/network/RelayNetworkTypes.js +1 -1
  32. package/lib/network/RelayObservable.js +1 -1
  33. package/lib/network/RelayQueryResponseCache.js +22 -6
  34. package/lib/network/wrapNetworkWithLogObserver.js +79 -0
  35. package/lib/query/GraphQLTag.js +3 -2
  36. package/lib/query/PreloadableQueryRegistry.js +1 -1
  37. package/lib/query/fetchQuery.js +7 -6
  38. package/lib/query/fetchQueryInternal.js +1 -1
  39. package/lib/query/fetchQuery_DEPRECATED.js +3 -2
  40. package/lib/store/ClientID.js +8 -2
  41. package/lib/store/DataChecker.js +124 -55
  42. package/lib/store/OperationExecutor.js +489 -215
  43. package/lib/store/RelayConcreteVariables.js +27 -9
  44. package/lib/store/RelayExperimentalGraphResponseHandler.js +153 -0
  45. package/lib/store/RelayExperimentalGraphResponseTransform.js +391 -0
  46. package/lib/store/RelayModernEnvironment.js +100 -120
  47. package/lib/store/RelayModernFragmentSpecResolver.js +53 -27
  48. package/lib/store/RelayModernOperationDescriptor.js +3 -2
  49. package/lib/store/RelayModernRecord.js +48 -13
  50. package/lib/store/RelayModernSelector.js +15 -9
  51. package/lib/store/RelayModernStore.js +56 -23
  52. package/lib/store/RelayOperationTracker.js +34 -24
  53. package/lib/store/RelayOptimisticRecordSource.js +1 -1
  54. package/lib/store/RelayPublishQueue.js +35 -11
  55. package/lib/store/RelayReader.js +257 -72
  56. package/lib/store/RelayRecordSource.js +88 -4
  57. package/lib/store/RelayRecordState.js +1 -1
  58. package/lib/store/RelayReferenceMarker.js +34 -22
  59. package/lib/store/RelayResponseNormalizer.js +172 -96
  60. package/lib/store/RelayStoreReactFlightUtils.js +5 -11
  61. package/lib/store/RelayStoreSubscriptions.js +15 -10
  62. package/lib/store/RelayStoreTypes.js +1 -1
  63. package/lib/store/RelayStoreUtils.js +13 -8
  64. package/lib/store/ResolverCache.js +213 -0
  65. package/lib/store/ResolverFragments.js +10 -6
  66. package/lib/store/StoreInspector.js +1 -1
  67. package/lib/store/TypeID.js +1 -1
  68. package/lib/store/ViewerPattern.js +1 -1
  69. package/lib/store/cloneRelayHandleSourceField.js +6 -5
  70. package/lib/store/cloneRelayScalarHandleSourceField.js +6 -5
  71. package/lib/store/createFragmentSpecResolver.js +1 -1
  72. package/lib/store/createRelayContext.js +5 -3
  73. package/lib/store/defaultGetDataID.js +1 -1
  74. package/lib/store/defaultRequiredFieldLogger.js +1 -1
  75. package/lib/store/hasOverlappingIDs.js +1 -1
  76. package/lib/store/isRelayModernEnvironment.js +1 -1
  77. package/lib/store/normalizeRelayPayload.js +1 -1
  78. package/lib/store/readInlineData.js +7 -3
  79. package/lib/subscription/requestSubscription.js +32 -34
  80. package/lib/util/JSResourceTypes.flow.js +1 -1
  81. package/lib/util/NormalizationNode.js +1 -1
  82. package/lib/util/ReaderNode.js +1 -1
  83. package/lib/util/RelayConcreteNode.js +3 -1
  84. package/lib/util/RelayDefaultHandleKey.js +1 -1
  85. package/lib/util/RelayError.js +1 -1
  86. package/lib/util/RelayFeatureFlags.js +10 -7
  87. package/lib/util/RelayProfiler.js +1 -1
  88. package/lib/util/RelayReplaySubject.js +22 -7
  89. package/lib/util/RelayRuntimeTypes.js +1 -7
  90. package/lib/util/StringInterner.js +71 -0
  91. package/lib/util/createPayloadFor3DField.js +1 -1
  92. package/lib/util/deepFreeze.js +1 -1
  93. package/lib/util/generateID.js +1 -1
  94. package/lib/util/getAllRootVariables.js +29 -0
  95. package/lib/util/getFragmentIdentifier.js +16 -8
  96. package/lib/util/getOperation.js +3 -2
  97. package/lib/util/getPaginationMetadata.js +41 -0
  98. package/lib/util/getPaginationVariables.js +66 -0
  99. package/lib/util/getPendingOperationsForFragment.js +55 -0
  100. package/lib/util/getRefetchMetadata.js +36 -0
  101. package/lib/util/getRelayHandleKey.js +3 -3
  102. package/lib/util/getRequestIdentifier.js +3 -3
  103. package/lib/util/getValueAtPath.js +51 -0
  104. package/lib/util/isEmptyObject.js +2 -2
  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 +26 -0
  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 +31 -0
  113. package/multi-actor-environment/ActorIdentifier.js.flow +18 -2
  114. package/multi-actor-environment/ActorSpecificEnvironment.js.flow +94 -58
  115. package/multi-actor-environment/ActorUtils.js.flow +33 -0
  116. package/multi-actor-environment/MultiActorEnvironment.js.flow +366 -93
  117. package/multi-actor-environment/MultiActorEnvironmentTypes.js.flow +88 -23
  118. package/multi-actor-environment/index.js.flow +3 -1
  119. package/mutations/RelayDeclarativeMutationConfig.js.flow +33 -27
  120. package/mutations/RelayRecordProxy.js.flow +5 -6
  121. package/mutations/RelayRecordSourceMutator.js.flow +5 -7
  122. package/mutations/RelayRecordSourceProxy.js.flow +20 -11
  123. package/mutations/RelayRecordSourceSelectorProxy.js.flow +23 -8
  124. package/mutations/applyOptimisticMutation.js.flow +14 -15
  125. package/mutations/commitLocalUpdate.js.flow +2 -2
  126. package/mutations/commitMutation.js.flow +36 -47
  127. package/mutations/readUpdatableQuery_EXPERIMENTAL.js.flow +318 -0
  128. package/mutations/validateMutation.js.flow +27 -17
  129. package/network/ConvertToExecuteFunction.js.flow +3 -3
  130. package/network/RelayNetwork.js.flow +5 -6
  131. package/network/RelayNetworkTypes.js.flow +1 -1
  132. package/network/RelayObservable.js.flow +2 -2
  133. package/network/RelayQueryResponseCache.js.flow +35 -22
  134. package/network/wrapNetworkWithLogObserver.js.flow +99 -0
  135. package/package.json +2 -2
  136. package/query/GraphQLTag.js.flow +11 -11
  137. package/query/PreloadableQueryRegistry.js.flow +5 -3
  138. package/query/fetchQuery.js.flow +19 -19
  139. package/query/fetchQueryInternal.js.flow +7 -10
  140. package/query/fetchQuery_DEPRECATED.js.flow +7 -7
  141. package/relay-runtime.js +2 -2
  142. package/relay-runtime.min.js +2 -2
  143. package/store/ClientID.js.flow +15 -4
  144. package/store/DataChecker.js.flow +142 -60
  145. package/store/OperationExecutor.js.flow +575 -320
  146. package/store/RelayConcreteVariables.js.flow +28 -9
  147. package/store/RelayExperimentalGraphResponseHandler.js.flow +121 -0
  148. package/store/RelayExperimentalGraphResponseTransform.js.flow +470 -0
  149. package/store/RelayModernEnvironment.js.flow +91 -115
  150. package/store/RelayModernFragmentSpecResolver.js.flow +56 -32
  151. package/store/RelayModernOperationDescriptor.js.flow +13 -8
  152. package/store/RelayModernRecord.js.flow +68 -12
  153. package/store/RelayModernSelector.js.flow +25 -15
  154. package/store/RelayModernStore.js.flow +67 -32
  155. package/store/RelayOperationTracker.js.flow +60 -44
  156. package/store/RelayOptimisticRecordSource.js.flow +3 -3
  157. package/store/RelayPublishQueue.js.flow +74 -32
  158. package/store/RelayReader.js.flow +319 -100
  159. package/store/RelayRecordSource.js.flow +73 -7
  160. package/store/RelayRecordState.js.flow +1 -1
  161. package/store/RelayReferenceMarker.js.flow +41 -27
  162. package/store/RelayResponseNormalizer.js.flow +204 -86
  163. package/store/RelayStoreReactFlightUtils.js.flow +5 -12
  164. package/store/RelayStoreSubscriptions.js.flow +20 -12
  165. package/store/RelayStoreTypes.js.flow +200 -41
  166. package/store/RelayStoreUtils.js.flow +25 -12
  167. package/store/ResolverCache.js.flow +249 -0
  168. package/store/ResolverFragments.js.flow +16 -20
  169. package/store/StoreInspector.js.flow +3 -3
  170. package/store/TypeID.js.flow +2 -2
  171. package/store/ViewerPattern.js.flow +3 -3
  172. package/store/cloneRelayHandleSourceField.js.flow +6 -7
  173. package/store/cloneRelayScalarHandleSourceField.js.flow +6 -7
  174. package/store/createFragmentSpecResolver.js.flow +4 -5
  175. package/store/createRelayContext.js.flow +4 -4
  176. package/store/defaultGetDataID.js.flow +1 -1
  177. package/store/defaultRequiredFieldLogger.js.flow +1 -1
  178. package/store/hasOverlappingIDs.js.flow +1 -1
  179. package/store/isRelayModernEnvironment.js.flow +1 -1
  180. package/store/normalizeRelayPayload.js.flow +7 -8
  181. package/store/readInlineData.js.flow +8 -9
  182. package/subscription/requestSubscription.js.flow +55 -51
  183. package/util/JSResourceTypes.flow.js.flow +1 -1
  184. package/util/NormalizationNode.js.flow +11 -4
  185. package/util/ReaderNode.js.flow +25 -2
  186. package/util/RelayConcreteNode.js.flow +5 -1
  187. package/util/RelayDefaultHandleKey.js.flow +1 -1
  188. package/util/RelayError.js.flow +1 -1
  189. package/util/RelayFeatureFlags.js.flow +23 -15
  190. package/util/RelayProfiler.js.flow +1 -1
  191. package/util/RelayReplaySubject.js.flow +10 -10
  192. package/util/RelayRuntimeTypes.js.flow +70 -3
  193. package/util/StringInterner.js.flow +69 -0
  194. package/util/createPayloadFor3DField.js.flow +4 -4
  195. package/util/deepFreeze.js.flow +1 -1
  196. package/util/generateID.js.flow +1 -1
  197. package/util/getAllRootVariables.js.flow +36 -0
  198. package/util/getFragmentIdentifier.js.flow +28 -16
  199. package/util/getOperation.js.flow +3 -3
  200. package/util/getPaginationMetadata.js.flow +69 -0
  201. package/util/getPaginationVariables.js.flow +108 -0
  202. package/util/getPendingOperationsForFragment.js.flow +62 -0
  203. package/util/getRefetchMetadata.js.flow +76 -0
  204. package/util/getRelayHandleKey.js.flow +2 -3
  205. package/util/getRequestIdentifier.js.flow +4 -4
  206. package/util/getValueAtPath.js.flow +46 -0
  207. package/util/isEmptyObject.js.flow +2 -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 +33 -0
  212. package/util/reportMissingRequiredFields.js.flow +1 -1
  213. package/util/resolveImmediate.js.flow +2 -2
  214. package/util/stableCopy.js.flow +1 -1
  215. package/util/withDuration.js.flow +32 -0
  216. package/lib/store/RelayRecordSourceMapImpl.js +0 -107
  217. package/lib/store/RelayStoreSubscriptionsUsingMapByID.js +0 -318
  218. package/store/RelayRecordSourceMapImpl.js.flow +0 -91
  219. package/store/RelayStoreSubscriptionsUsingMapByID.js.flow +0 -283
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.
@@ -12,12 +12,12 @@
12
12
 
13
13
  'use strict';
14
14
 
15
+ import type {Handler} from '../store/RelayStoreTypes';
16
+
15
17
  const ConnectionHandler = require('./connection/ConnectionHandler');
16
18
  const MutationHandlers = require('./connection/MutationHandlers');
17
-
18
19
  const invariant = require('invariant');
19
20
 
20
- import type {Handler} from '../store/RelayStoreTypes';
21
21
  export type HandlerProvider = (name: string) => ?Handler;
22
22
 
23
23
  function RelayDefaultHandlerProvider(handle: string): Handler {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -12,23 +12,21 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const ConnectionInterface = require('./ConnectionInterface');
16
-
17
- const getRelayHandleKey = require('../../util/getRelayHandleKey');
18
- const invariant = require('invariant');
19
- const warning = require('warning');
20
-
21
- const {generateClientID} = require('../../store/ClientID');
22
- const {getStableStorageKey} = require('../../store/RelayStoreUtils');
23
-
24
15
  import type {
25
16
  HandleFieldPayload,
26
- RecordProxy,
27
17
  ReadOnlyRecordProxy,
18
+ RecordProxy,
28
19
  RecordSourceProxy,
29
20
  } from '../../store/RelayStoreTypes';
30
21
  import type {DataID, Variables} from '../../util/RelayRuntimeTypes';
31
22
 
23
+ const {generateClientID} = require('../../store/ClientID');
24
+ const {getStableStorageKey} = require('../../store/RelayStoreUtils');
25
+ const getRelayHandleKey = require('../../util/getRelayHandleKey');
26
+ const ConnectionInterface = require('./ConnectionInterface');
27
+ const invariant = require('invariant');
28
+ const warning = require('warning');
29
+
32
30
  export type ConnectionMetadata = {
33
31
  path: ?Array<string>,
34
32
  direction: ?('forward' | 'backward' | 'bidirectional'),
@@ -146,12 +144,10 @@ function update(store: RecordSourceProxy, payload: HandleFieldPayload): void {
146
144
  let nextEdges = [];
147
145
  const args = payload.args;
148
146
  if (prevEdges && serverEdges) {
149
- // $FlowFixMe[prop-missing]
150
147
  if (args.after != null) {
151
148
  // Forward pagination from the end of the connection: append edges
152
149
  if (
153
150
  clientPageInfo &&
154
- // $FlowFixMe[prop-missing]
155
151
  args.after === clientPageInfo.getValue(END_CURSOR)
156
152
  ) {
157
153
  const nodeIDs = new Set();
@@ -167,12 +163,10 @@ function update(store: RecordSourceProxy, payload: HandleFieldPayload): void {
167
163
  );
168
164
  return;
169
165
  }
170
- // $FlowFixMe[prop-missing]
171
166
  } else if (args.before != null) {
172
167
  // Backward pagination from the start of the connection: prepend edges
173
168
  if (
174
169
  clientPageInfo &&
175
- // $FlowFixMe[prop-missing]
176
170
  args.before === clientPageInfo.getValue(START_CURSOR)
177
171
  ) {
178
172
  const nodeIDs = new Set();
@@ -204,12 +198,10 @@ function update(store: RecordSourceProxy, payload: HandleFieldPayload): void {
204
198
  }
205
199
  // Page info should be updated even if no new edge were returned.
206
200
  if (clientPageInfo && serverPageInfo) {
207
- // $FlowFixMe[prop-missing]
208
201
  if (args.after == null && args.before == null) {
209
202
  // The connection was refetched from the beginning/end: replace
210
203
  // page_info
211
204
  clientPageInfo.copyFieldsFrom(serverPageInfo);
212
- // $FlowFixMe[prop-missing]
213
205
  } else if (args.before != null || (args.after == null && args.last)) {
214
206
  clientPageInfo.setValue(
215
207
  !!serverPageInfo.getValue(HAS_PREV_PAGE),
@@ -219,7 +211,6 @@ function update(store: RecordSourceProxy, payload: HandleFieldPayload): void {
219
211
  if (typeof startCursor === 'string') {
220
212
  clientPageInfo.setValue(startCursor, START_CURSOR);
221
213
  }
222
- // $FlowFixMe[prop-missing]
223
214
  } else if (args.after != null || (args.before == null && args.first)) {
224
215
  clientPageInfo.setValue(
225
216
  !!serverPageInfo.getValue(HAS_NEXT_PAGE),
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -12,19 +12,18 @@
12
12
 
13
13
  'use strict';
14
14
 
15
- const ConnectionHandler = require('./ConnectionHandler');
16
- const ConnectionInterface = require('./ConnectionInterface');
17
-
18
- const invariant = require('invariant');
19
- const warning = require('warning');
20
-
21
15
  import type {
22
- RecordProxy,
23
16
  HandleFieldPayload,
24
- RecordSourceProxy,
25
17
  Handler,
18
+ RecordProxy,
19
+ RecordSourceProxy,
26
20
  } from '../../store/RelayStoreTypes';
27
21
 
22
+ const ConnectionHandler = require('./ConnectionHandler');
23
+ const ConnectionInterface = require('./ConnectionInterface');
24
+ const invariant = require('invariant');
25
+ const warning = require('warning');
26
+
28
27
  const DeleteRecordHandler = {
29
28
  update: (store: RecordSourceProxy, payload: HandleFieldPayload) => {
30
29
  const record = store.get(payload.dataID);
@@ -51,7 +50,6 @@ const DeleteEdgeHandler = {
51
50
  if (record == null) {
52
51
  return;
53
52
  }
54
- // $FlowFixMe[prop-missing]
55
53
  const {connections} = payload.handleArgs;
56
54
  invariant(
57
55
  connections != null,
@@ -101,7 +99,6 @@ function edgeUpdater(
101
99
  if (record == null) {
102
100
  return;
103
101
  }
104
- // $FlowFixMe[prop-missing]
105
102
  const {connections} = payload.handleArgs;
106
103
  invariant(
107
104
  connections != null,
@@ -174,7 +171,6 @@ function nodeUpdater(
174
171
  if (record == null) {
175
172
  return;
176
173
  }
177
- // $FlowFixMe[prop-missing]
178
174
  const {connections, edgeTypeName} = payload.handleArgs;
179
175
  invariant(
180
176
  connections != null,
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Relay v11.0.2
2
+ * Relay v13.0.0-rc.2
3
3
  *
4
4
  * Copyright (c) Facebook, Inc. and its affiliates.
5
5
  *
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.
@@ -14,59 +14,62 @@
14
14
 
15
15
  const ConnectionHandler = require('./handlers/connection/ConnectionHandler');
16
16
  const ConnectionInterface = require('./handlers/connection/ConnectionInterface');
17
- const GraphQLTag = require('./query/GraphQLTag');
18
17
  const MutationHandlers = require('./handlers/connection/MutationHandlers');
18
+ const RelayDefaultHandlerProvider = require('./handlers/RelayDefaultHandlerProvider');
19
+ const applyOptimisticMutation = require('./mutations/applyOptimisticMutation');
20
+ const commitLocalUpdate = require('./mutations/commitLocalUpdate');
21
+ const commitMutation = require('./mutations/commitMutation');
22
+ const RelayDeclarativeMutationConfig = require('./mutations/RelayDeclarativeMutationConfig');
23
+ const RelayNetwork = require('./network/RelayNetwork');
24
+ const RelayObservable = require('./network/RelayObservable');
25
+ const RelayQueryResponseCache = require('./network/RelayQueryResponseCache');
26
+ const fetchQuery = require('./query/fetchQuery');
27
+ const fetchQuery_DEPRECATED = require('./query/fetchQuery_DEPRECATED');
28
+ const fetchQueryInternal = require('./query/fetchQueryInternal');
29
+ const GraphQLTag = require('./query/GraphQLTag');
19
30
  const PreloadableQueryRegistry = require('./query/PreloadableQueryRegistry');
20
- const RelayConcreteNode = require('./util/RelayConcreteNode');
31
+ const {
32
+ generateClientID,
33
+ generateUniqueClientID,
34
+ isClientID,
35
+ } = require('./store/ClientID');
36
+ const createFragmentSpecResolver = require('./store/createFragmentSpecResolver');
37
+ const createRelayContext = require('./store/createRelayContext');
38
+ const isRelayModernEnvironment = require('./store/isRelayModernEnvironment');
39
+ const readInlineData = require('./store/readInlineData');
21
40
  const RelayConcreteVariables = require('./store/RelayConcreteVariables');
22
- const RelayDeclarativeMutationConfig = require('./mutations/RelayDeclarativeMutationConfig');
23
- const RelayDefaultHandleKey = require('./util/RelayDefaultHandleKey');
24
- const RelayDefaultHandlerProvider = require('./handlers/RelayDefaultHandlerProvider');
25
- const RelayError = require('./util/RelayError');
26
- const RelayFeatureFlags = require('./util/RelayFeatureFlags');
27
41
  const RelayModernEnvironment = require('./store/RelayModernEnvironment');
28
42
  const RelayModernOperationDescriptor = require('./store/RelayModernOperationDescriptor');
29
43
  const RelayModernRecord = require('./store/RelayModernRecord');
30
44
  const RelayModernSelector = require('./store/RelayModernSelector');
31
45
  const RelayModernStore = require('./store/RelayModernStore');
32
- const RelayNetwork = require('./network/RelayNetwork');
33
- const RelayObservable = require('./network/RelayObservable');
34
46
  const RelayOperationTracker = require('./store/RelayOperationTracker');
35
- const RelayProfiler = require('./util/RelayProfiler');
36
- const RelayQueryResponseCache = require('./network/RelayQueryResponseCache');
37
47
  const RelayRecordSource = require('./store/RelayRecordSource');
38
- const RelayReplaySubject = require('./util/RelayReplaySubject');
39
48
  const RelayStoreUtils = require('./store/RelayStoreUtils');
40
49
  const ViewerPattern = require('./store/ViewerPattern');
41
-
42
- const applyOptimisticMutation = require('./mutations/applyOptimisticMutation');
43
- const commitLocalUpdate = require('./mutations/commitLocalUpdate');
44
- const commitMutation = require('./mutations/commitMutation');
45
- const createFragmentSpecResolver = require('./store/createFragmentSpecResolver');
50
+ const requestSubscription = require('./subscription/requestSubscription');
46
51
  const createPayloadFor3DField = require('./util/createPayloadFor3DField');
47
- const createRelayContext = require('./store/createRelayContext');
48
52
  const deepFreeze = require('./util/deepFreeze');
49
- const fetchQuery = require('./query/fetchQuery');
50
- const fetchQueryInternal = require('./query/fetchQueryInternal');
51
- const fetchQuery_DEPRECATED = require('./query/fetchQuery_DEPRECATED');
52
53
  const getFragmentIdentifier = require('./util/getFragmentIdentifier');
54
+ const getPaginationMetadata = require('./util/getPaginationMetadata');
55
+ const getPaginationVariables = require('./util/getPaginationVariables');
56
+ const getPendingOperationsForFragment = require('./util/getPendingOperationsForFragment');
57
+ const getRefetchMetadata = require('./util/getRefetchMetadata');
53
58
  const getRelayHandleKey = require('./util/getRelayHandleKey');
54
59
  const getRequestIdentifier = require('./util/getRequestIdentifier');
60
+ const getValueAtPath = require('./util/getValueAtPath');
55
61
  const isPromise = require('./util/isPromise');
56
- const isRelayModernEnvironment = require('./store/isRelayModernEnvironment');
57
62
  const isScalarAndEqual = require('./util/isScalarAndEqual');
58
- const readInlineData = require('./store/readInlineData');
59
63
  const recycleNodesInto = require('./util/recycleNodesInto');
64
+ const RelayConcreteNode = require('./util/RelayConcreteNode');
65
+ const RelayDefaultHandleKey = require('./util/RelayDefaultHandleKey');
66
+ const RelayError = require('./util/RelayError');
67
+ const RelayFeatureFlags = require('./util/RelayFeatureFlags');
68
+ const RelayProfiler = require('./util/RelayProfiler');
69
+ const RelayReplaySubject = require('./util/RelayReplaySubject');
60
70
  const reportMissingRequiredFields = require('./util/reportMissingRequiredFields');
61
- const requestSubscription = require('./subscription/requestSubscription');
62
71
  const stableCopy = require('./util/stableCopy');
63
72
 
64
- const {
65
- generateClientID,
66
- generateUniqueClientID,
67
- isClientID,
68
- } = require('./store/ClientID');
69
-
70
73
  export type {ConnectionMetadata} from './handlers/connection/ConnectionHandler';
71
74
  export type {
72
75
  EdgeRecord,
@@ -82,7 +85,6 @@ export type {OptimisticMutationConfig} from './mutations/applyOptimisticMutation
82
85
  export type {
83
86
  DEPRECATED_MutationConfig,
84
87
  MutationConfig,
85
- MutationParameters,
86
88
  } from './mutations/commitMutation';
87
89
  export type {
88
90
  ExecuteFunction,
@@ -116,7 +118,9 @@ export type {RecordState} from './store/RelayRecordState';
116
118
  export type {
117
119
  ExecuteMutationConfig,
118
120
  FragmentMap,
119
- FragmentReference,
121
+ // DEPRECATED: use FragmentType instead of FragmentReference
122
+ FragmentType as FragmentReference,
123
+ FragmentType,
120
124
  FragmentSpecResolver,
121
125
  HandleFieldPayload,
122
126
  IEnvironment,
@@ -126,6 +130,7 @@ export type {
126
130
  MissingFieldHandler,
127
131
  MissingRequiredFields,
128
132
  ModuleImportPointer,
133
+ MutationParameters,
129
134
  NormalizationSelector,
130
135
  OperationAvailability,
131
136
  OperationDescriptor,
@@ -154,7 +159,11 @@ export type {
154
159
  Snapshot,
155
160
  StoreUpdater,
156
161
  } from './store/RelayStoreTypes';
157
- export type {GraphQLSubscriptionConfig} from './subscription/requestSubscription';
162
+ export type {
163
+ DEPRECATED_GraphQLSubscriptionConfig,
164
+ GraphQLSubscriptionConfig,
165
+ SubscriptionParameters,
166
+ } from './subscription/requestSubscription';
158
167
  export type {JSResourceReference} from './util/JSResourceTypes.flow';
159
168
  export type {
160
169
  NormalizationArgument,
@@ -170,8 +179,8 @@ export type {
170
179
  NormalizationSplitOperation,
171
180
  NormalizationStream,
172
181
  NormalizationTypeDiscriminator,
182
+ NormalizationOperation,
173
183
  } from './util/NormalizationNode';
174
- export type {NormalizationOperation} from './util/NormalizationNode';
175
184
  export type {
176
185
  ReaderArgument,
177
186
  ReaderArgumentDefinition,
@@ -201,12 +210,20 @@ export type {
201
210
  Disposable,
202
211
  FetchPolicy,
203
212
  FetchQueryFetchPolicy,
213
+ Fragment,
214
+ GraphQLSubscription,
215
+ InlineFragment,
216
+ Mutation,
217
+ Operation,
204
218
  OperationType,
219
+ Query,
220
+ RefetchableFragment,
205
221
  RenderPolicy,
206
222
  Variables,
207
223
  VariablesOf,
208
224
  } from './util/RelayRuntimeTypes';
209
225
  export type {Local3DPayload} from './util/createPayloadFor3DField';
226
+ export type {Direction} from './util/getPaginationVariables';
210
227
  export type {RequestIdentifier} from './util/getRequestIdentifier';
211
228
 
212
229
  // As early as possible, check for the existence of the JavaScript globals which
@@ -329,6 +346,11 @@ module.exports = {
329
346
  recycleNodesInto: recycleNodesInto,
330
347
  stableCopy: stableCopy,
331
348
  getFragmentIdentifier: getFragmentIdentifier,
349
+ getRefetchMetadata: getRefetchMetadata,
350
+ getPaginationMetadata: getPaginationMetadata,
351
+ getPaginationVariables: getPaginationVariables,
352
+ getPendingOperationsForFragment: getPendingOperationsForFragment,
353
+ getValueAtPath: getValueAtPath,
332
354
  __internal: {
333
355
  OperationTracker: RelayOperationTracker,
334
356
  createRelayContext: createRelayContext,
@@ -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,20 +10,20 @@
10
10
  // flowlint ambiguous-object-type:error
11
11
  'use strict';
12
12
 
13
- var ConnectionInterface = require('./ConnectionInterface');
13
+ var _require = require('../../store/ClientID'),
14
+ generateClientID = _require.generateClientID;
15
+
16
+ var _require2 = require('../../store/RelayStoreUtils'),
17
+ getStableStorageKey = _require2.getStableStorageKey;
14
18
 
15
19
  var getRelayHandleKey = require('../../util/getRelayHandleKey');
16
20
 
21
+ var ConnectionInterface = require('./ConnectionInterface');
22
+
17
23
  var invariant = require('invariant');
18
24
 
19
25
  var warning = require("fbjs/lib/warning");
20
26
 
21
- var _require = require('../../store/ClientID'),
22
- generateClientID = _require.generateClientID;
23
-
24
- var _require2 = require('../../store/RelayStoreUtils'),
25
- getStableStorageKey = _require2.getStableStorageKey;
26
-
27
27
  var CONNECTION = 'connection'; // Per-instance incrementing index used to generate unique edge IDs
28
28
 
29
29
  var NEXT_EDGE_INDEX = '__connection_next_edge_index';
@@ -133,23 +133,19 @@ function update(store, payload) {
133
133
  var args = payload.args;
134
134
 
135
135
  if (prevEdges && _serverEdges) {
136
- // $FlowFixMe[prop-missing]
137
136
  if (args.after != null) {
138
137
  // Forward pagination from the end of the connection: append edges
139
- if (clientPageInfo && // $FlowFixMe[prop-missing]
140
- args.after === clientPageInfo.getValue(END_CURSOR)) {
138
+ if (clientPageInfo && args.after === clientPageInfo.getValue(END_CURSOR)) {
141
139
  var nodeIDs = new Set();
142
140
  mergeEdges(prevEdges, nextEdges, nodeIDs);
143
141
  mergeEdges(_serverEdges, nextEdges, nodeIDs);
144
142
  } else {
145
143
  process.env.NODE_ENV !== "production" ? warning(false, 'Relay: Unexpected after cursor `%s`, edges must ' + 'be fetched from the end of the list (`%s`).', args.after, clientPageInfo && clientPageInfo.getValue(END_CURSOR)) : void 0;
146
144
  return;
147
- } // $FlowFixMe[prop-missing]
148
-
145
+ }
149
146
  } else if (args.before != null) {
150
147
  // Backward pagination from the start of the connection: prepend edges
151
- if (clientPageInfo && // $FlowFixMe[prop-missing]
152
- args.before === clientPageInfo.getValue(START_CURSOR)) {
148
+ if (clientPageInfo && args.before === clientPageInfo.getValue(START_CURSOR)) {
153
149
  var _nodeIDs = new Set();
154
150
 
155
151
  mergeEdges(_serverEdges, nextEdges, _nodeIDs);
@@ -176,19 +172,17 @@ function update(store, payload) {
176
172
 
177
173
 
178
174
  if (clientPageInfo && serverPageInfo) {
179
- // $FlowFixMe[prop-missing]
180
175
  if (args.after == null && args.before == null) {
181
176
  // The connection was refetched from the beginning/end: replace
182
177
  // page_info
183
- clientPageInfo.copyFieldsFrom(serverPageInfo); // $FlowFixMe[prop-missing]
178
+ clientPageInfo.copyFieldsFrom(serverPageInfo);
184
179
  } else if (args.before != null || args.after == null && args.last) {
185
180
  clientPageInfo.setValue(!!serverPageInfo.getValue(HAS_PREV_PAGE), HAS_PREV_PAGE);
186
181
  var startCursor = serverPageInfo.getValue(START_CURSOR);
187
182
 
188
183
  if (typeof startCursor === 'string') {
189
184
  clientPageInfo.setValue(startCursor, START_CURSOR);
190
- } // $FlowFixMe[prop-missing]
191
-
185
+ }
192
186
  } else if (args.after != null || args.before == null && args.first) {
193
187
  clientPageInfo.setValue(!!serverPageInfo.getValue(HAS_NEXT_PAGE), HAS_NEXT_PAGE);
194
188
  var endCursor = serverPageInfo.getValue(END_CURSOR);
@@ -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.
@@ -47,8 +47,7 @@ var DeleteEdgeHandler = {
47
47
 
48
48
  if (record == null) {
49
49
  return;
50
- } // $FlowFixMe[prop-missing]
51
-
50
+ }
52
51
 
53
52
  var connections = payload.handleArgs.connections;
54
53
  !(connections != null) ? process.env.NODE_ENV !== "production" ? invariant(false, 'MutationHandlers: Expected connection IDs to be specified.') : invariant(false) : void 0;
@@ -101,8 +100,7 @@ function edgeUpdater(insertFn) {
101
100
 
102
101
  if (record == null) {
103
102
  return;
104
- } // $FlowFixMe[prop-missing]
105
-
103
+ }
106
104
 
107
105
  var connections = payload.handleArgs.connections;
108
106
  !(connections != null) ? process.env.NODE_ENV !== "production" ? invariant(false, 'MutationHandlers: Expected connection IDs to be specified.') : invariant(false) : void 0;
@@ -205,8 +203,7 @@ function nodeUpdater(insertFn) {
205
203
 
206
204
  if (record == null) {
207
205
  return;
208
- } // $FlowFixMe[prop-missing]
209
-
206
+ }
210
207
 
211
208
  var _payload$handleArgs = payload.handleArgs,
212
209
  connections = _payload$handleArgs.connections,