react-relay 12.0.0 → 13.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +47 -0
  3. package/ReactRelayContainerUtils.js.flow +1 -1
  4. package/ReactRelayContext.js +2 -2
  5. package/ReactRelayContext.js.flow +3 -4
  6. package/ReactRelayFragmentContainer.js.flow +11 -17
  7. package/ReactRelayFragmentMockRenderer.js.flow +2 -2
  8. package/ReactRelayLocalQueryRenderer.js.flow +7 -8
  9. package/ReactRelayPaginationContainer.js.flow +30 -40
  10. package/ReactRelayQueryFetcher.js.flow +10 -11
  11. package/ReactRelayQueryRenderer.js.flow +16 -16
  12. package/ReactRelayQueryRendererContext.js.flow +1 -1
  13. package/ReactRelayRefetchContainer.js.flow +25 -33
  14. package/ReactRelayTestMocker.js.flow +17 -15
  15. package/ReactRelayTypes.js.flow +11 -11
  16. package/RelayContext.js.flow +4 -4
  17. package/__flowtests__/ReactRelayFragmentContainer-flowtest.js.flow +2 -3
  18. package/__flowtests__/ReactRelayPaginationContainer-flowtest.js.flow +2 -3
  19. package/__flowtests__/ReactRelayRefetchContainer-flowtest.js.flow +2 -3
  20. package/__flowtests__/RelayModern-flowtest.js.flow +79 -47
  21. package/__flowtests__/RelayModernFlowtest_badref.graphql.js.flow +6 -5
  22. package/__flowtests__/RelayModernFlowtest_notref.graphql.js.flow +6 -5
  23. package/__flowtests__/RelayModernFlowtest_user.graphql.js.flow +5 -4
  24. package/__flowtests__/RelayModernFlowtest_users.graphql.js.flow +5 -4
  25. package/__flowtests__/__generated__/ReactRelayFragmentContainerFlowtest_viewer.graphql.js.flow +14 -11
  26. package/__flowtests__/__generated__/ReactRelayFragmentContainerFlowtest_viewer2.graphql.js.flow +14 -11
  27. package/__flowtests__/__generated__/ReactRelayPaginationContainerFlowtestQuery.graphql.js.flow +14 -9
  28. package/__flowtests__/__generated__/ReactRelayPaginationContainerFlowtest_viewer.graphql.js.flow +14 -11
  29. package/__flowtests__/__generated__/ReactRelayRefetchContainerFlowtestQuery.graphql.js.flow +14 -9
  30. package/__flowtests__/__generated__/ReactRelayRefetchContainerFlowtest_viewer.graphql.js.flow +14 -11
  31. package/__flowtests__/__generated__/RelayModernFlowtest_badref.graphql.js.flow +16 -13
  32. package/__flowtests__/__generated__/RelayModernFlowtest_notref.graphql.js.flow +16 -13
  33. package/__flowtests__/__generated__/RelayModernFlowtest_user.graphql.js.flow +14 -11
  34. package/__flowtests__/__generated__/RelayModernFlowtest_users.graphql.js.flow +14 -11
  35. package/assertFragmentMap.js.flow +3 -3
  36. package/buildReactRelayContainer.js.flow +12 -11
  37. package/getRootVariablesForFragments.js.flow +3 -5
  38. package/hooks.js +2 -2
  39. package/hooks.js.flow +4 -6
  40. package/index.js +2 -2
  41. package/index.js.flow +5 -7
  42. package/isRelayEnvironment.js.flow +1 -1
  43. package/jest-react/enqueueTask.js.flow +2 -2
  44. package/jest-react/index.js.flow +1 -1
  45. package/jest-react/internalAct.js.flow +2 -4
  46. package/legacy.js +2 -2
  47. package/legacy.js.flow +1 -1
  48. package/lib/ReactRelayContainerUtils.js +1 -1
  49. package/lib/ReactRelayContext.js +1 -1
  50. package/lib/ReactRelayFragmentContainer.js +5 -5
  51. package/lib/ReactRelayFragmentMockRenderer.js +3 -3
  52. package/lib/ReactRelayLocalQueryRenderer.js +8 -9
  53. package/lib/ReactRelayPaginationContainer.js +19 -23
  54. package/lib/ReactRelayQueryFetcher.js +3 -3
  55. package/lib/ReactRelayQueryRenderer.js +5 -5
  56. package/lib/ReactRelayQueryRendererContext.js +1 -1
  57. package/lib/ReactRelayRefetchContainer.js +13 -15
  58. package/lib/ReactRelayTestMocker.js +8 -9
  59. package/lib/ReactRelayTypes.js +1 -1
  60. package/lib/RelayContext.js +4 -3
  61. package/lib/assertFragmentMap.js +3 -2
  62. package/lib/buildReactRelayContainer.js +8 -8
  63. package/lib/getRootVariablesForFragments.js +2 -3
  64. package/lib/hooks.js +6 -6
  65. package/lib/index.js +8 -8
  66. package/lib/isRelayEnvironment.js +1 -1
  67. package/lib/jest-react/enqueueTask.js +1 -1
  68. package/lib/jest-react/internalAct.js +3 -4
  69. package/lib/legacy.js +1 -1
  70. package/lib/multi-actor/ActorChange.js +3 -3
  71. package/lib/multi-actor/index.js +1 -1
  72. package/lib/multi-actor/useRelayActorEnvironment.js +3 -3
  73. package/lib/readContext.js +1 -1
  74. package/lib/relay-hooks/EntryPointContainer.react.js +4 -4
  75. package/lib/relay-hooks/EntryPointTypes.flow.js +1 -1
  76. package/lib/relay-hooks/FragmentResource.js +242 -46
  77. package/lib/relay-hooks/InternalLogger.js +1 -1
  78. package/lib/relay-hooks/LRUCache.js +1 -1
  79. package/lib/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js +5 -5
  80. package/lib/relay-hooks/MatchContainer.js +2 -2
  81. package/lib/relay-hooks/ProfilerContext.js +1 -1
  82. package/lib/relay-hooks/QueryResource.js +84 -5
  83. package/lib/relay-hooks/RelayEnvironmentProvider.js +1 -1
  84. package/lib/relay-hooks/SuspenseResource.js +130 -0
  85. package/lib/relay-hooks/loadEntryPoint.js +1 -1
  86. package/lib/relay-hooks/loadQuery.js +9 -10
  87. package/lib/relay-hooks/preloadQuery_DEPRECATED.js +25 -11
  88. package/lib/relay-hooks/prepareEntryPoint_DEPRECATED.js +1 -1
  89. package/lib/relay-hooks/useBlockingPaginationFragment.js +3 -3
  90. package/lib/relay-hooks/useEntryPointLoader.js +3 -3
  91. package/lib/relay-hooks/useFetchTrackingRef.js +3 -2
  92. package/lib/relay-hooks/useFragment.js +7 -7
  93. package/lib/relay-hooks/useFragmentNode.js +5 -5
  94. package/lib/relay-hooks/useIsMountedRef.js +1 -1
  95. package/lib/relay-hooks/useIsOperationNodeActive.js +3 -3
  96. package/lib/relay-hooks/useIsParentQueryActive.js +1 -1
  97. package/lib/relay-hooks/useLazyLoadQuery.js +4 -4
  98. package/lib/relay-hooks/useLazyLoadQueryNode.js +5 -5
  99. package/lib/relay-hooks/useLoadMoreFunction.js +8 -10
  100. package/lib/relay-hooks/useMemoOperationDescriptor.js +3 -3
  101. package/lib/relay-hooks/useMemoVariables.js +3 -3
  102. package/lib/relay-hooks/useMutation.js +18 -7
  103. package/lib/relay-hooks/usePaginationFragment.js +1 -1
  104. package/lib/relay-hooks/usePreloadedQuery.js +6 -6
  105. package/lib/relay-hooks/useQueryLoader.js +5 -5
  106. package/lib/relay-hooks/useRefetchableFragment.js +1 -1
  107. package/lib/relay-hooks/useRefetchableFragmentNode.js +11 -13
  108. package/lib/relay-hooks/useRelayEnvironment.js +3 -3
  109. package/lib/relay-hooks/useStaticFragmentNodeWarning.js +3 -3
  110. package/lib/relay-hooks/useSubscribeToInvalidationState.js +3 -2
  111. package/lib/relay-hooks/useSubscription.js +1 -1
  112. package/multi-actor/ActorChange.js.flow +4 -5
  113. package/multi-actor/index.js.flow +1 -1
  114. package/multi-actor/useRelayActorEnvironment.js.flow +6 -8
  115. package/package.json +3 -3
  116. package/react-relay-hooks.js +2 -2
  117. package/react-relay-hooks.min.js +3 -3
  118. package/react-relay-legacy.js +2 -2
  119. package/react-relay-legacy.min.js +3 -3
  120. package/react-relay.js +2 -2
  121. package/react-relay.min.js +3 -3
  122. package/readContext.js.flow +1 -1
  123. package/relay-hooks/EntryPointContainer.react.js.flow +9 -16
  124. package/relay-hooks/EntryPointTypes.flow.js.flow +19 -25
  125. package/relay-hooks/FragmentResource.js.flow +221 -35
  126. package/relay-hooks/InternalLogger.js.flow +1 -1
  127. package/relay-hooks/LRUCache.js.flow +1 -1
  128. package/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js.flow +33 -47
  129. package/relay-hooks/MatchContainer.js.flow +4 -3
  130. package/relay-hooks/ProfilerContext.js.flow +1 -1
  131. package/relay-hooks/QueryResource.js.flow +120 -18
  132. package/relay-hooks/RelayEnvironmentProvider.js.flow +10 -10
  133. package/relay-hooks/SuspenseResource.js.flow +115 -0
  134. package/relay-hooks/__flowtests__/EntryPointTypes/EntryPointElementConfig-flowtest.js.flow +5 -4
  135. package/relay-hooks/__flowtests__/EntryPointTypes/NestedEntrypoints-flowtest.js.flow +2 -2
  136. package/relay-hooks/__flowtests__/__generated__/useFragmentFlowtest_user.graphql.js.flow +59 -0
  137. package/relay-hooks/__flowtests__/__generated__/useFragmentFlowtest_users.graphql.js.flow +61 -0
  138. package/relay-hooks/__flowtests__/useBlockingPaginationFragment-flowtest.js.flow +11 -10
  139. package/relay-hooks/__flowtests__/useFragment-flowtest.js.flow +55 -32
  140. package/relay-hooks/__flowtests__/usePaginationFragment-flowtest.js.flow +11 -10
  141. package/relay-hooks/__flowtests__/useRefetchableFragment-flowtest.js.flow +11 -10
  142. package/relay-hooks/__flowtests__/utils.js.flow +21 -32
  143. package/relay-hooks/loadEntryPoint.js.flow +7 -13
  144. package/relay-hooks/loadQuery.js.flow +23 -24
  145. package/relay-hooks/preloadQuery_DEPRECATED.js.flow +30 -14
  146. package/relay-hooks/prepareEntryPoint_DEPRECATED.js.flow +7 -13
  147. package/relay-hooks/useBlockingPaginationFragment.js.flow +13 -14
  148. package/relay-hooks/useEntryPointLoader.js.flow +8 -11
  149. package/relay-hooks/useFetchTrackingRef.js.flow +3 -3
  150. package/relay-hooks/useFragment.js.flow +31 -62
  151. package/relay-hooks/useFragmentNode.js.flow +6 -8
  152. package/relay-hooks/useIsMountedRef.js.flow +1 -1
  153. package/relay-hooks/useIsOperationNodeActive.js.flow +4 -6
  154. package/relay-hooks/useIsParentQueryActive.js.flow +4 -5
  155. package/relay-hooks/useLazyLoadQuery.js.flow +14 -16
  156. package/relay-hooks/useLazyLoadQueryNode.js.flow +12 -14
  157. package/relay-hooks/useLoadMoreFunction.js.flow +20 -28
  158. package/relay-hooks/useMemoOperationDescriptor.js.flow +6 -8
  159. package/relay-hooks/useMemoVariables.js.flow +7 -7
  160. package/relay-hooks/useMutation.js.flow +27 -27
  161. package/relay-hooks/usePaginationFragment.js.flow +38 -47
  162. package/relay-hooks/usePreloadedQuery.js.flow +14 -20
  163. package/relay-hooks/useQueryLoader.js.flow +14 -17
  164. package/relay-hooks/useRefetchableFragment.js.flow +8 -9
  165. package/relay-hooks/useRefetchableFragmentNode.js.flow +23 -31
  166. package/relay-hooks/useRelayEnvironment.js.flow +3 -5
  167. package/relay-hooks/useStaticFragmentNodeWarning.js.flow +3 -4
  168. package/relay-hooks/useSubscribeToInvalidationState.js.flow +4 -7
  169. package/relay-hooks/useSubscription.js.flow +7 -8
@@ -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,15 +12,6 @@
12
12
  // flowlint ambiguous-object-type:error
13
13
 
14
14
  import type {LoadMoreFn} from '../useLoadMoreFunction';
15
- import usePaginationFragment from '../usePaginationFragment';
16
- import {
17
- fragmentInput,
18
- fragmentData,
19
- keyAnotherNonNullable,
20
- keyAnotherNullable,
21
- keyNonNullable,
22
- keyNullable,
23
- } from './utils';
24
15
  import type {
25
16
  FetchFn,
26
17
  NonNullableData,
@@ -31,6 +22,16 @@ import type {
31
22
  } from './utils';
32
23
  import type {IEnvironment, OperationType} from 'relay-runtime';
33
24
 
25
+ import usePaginationFragment from '../usePaginationFragment';
26
+ import {
27
+ fragmentData,
28
+ fragmentInput,
29
+ keyAnotherNonNullable,
30
+ keyAnotherNullable,
31
+ keyNonNullable,
32
+ keyNullable,
33
+ } from './utils';
34
+
34
35
  type ExpectedReturnType<
35
36
  TQuery: OperationType,
36
37
  TQueryVariables,
@@ -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,15 +11,6 @@
11
11
 
12
12
  // flowlint ambiguous-object-type:error
13
13
 
14
- import useRefetchableFragment from '../useRefetchableFragment';
15
- import {
16
- fragmentInput,
17
- keyAnotherNonNullable,
18
- keyAnotherNullable,
19
- keyNonNullable,
20
- keyNullable,
21
- fragmentData,
22
- } from './utils';
23
14
  import type {
24
15
  FetchFn,
25
16
  NonNullableData,
@@ -30,6 +21,16 @@ import type {
30
21
  } from './utils';
31
22
  import type {IEnvironment} from 'relay-runtime';
32
23
 
24
+ import useRefetchableFragment from '../useRefetchableFragment';
25
+ import {
26
+ fragmentData,
27
+ fragmentInput,
28
+ keyAnotherNonNullable,
29
+ keyAnotherNullable,
30
+ keyNonNullable,
31
+ keyNullable,
32
+ } from './utils';
33
+
33
34
  /* eslint-disable react-hooks/rules-of-hooks */
34
35
 
35
36
  // Nullability of returned data type is correct
@@ -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.
@@ -13,21 +13,26 @@
13
13
 
14
14
  'use strict';
15
15
 
16
- import type {
17
- Disposable,
18
- FragmentReference,
19
- GraphQLTaggedNode,
20
- } from 'relay-runtime';
16
+ import type {Disposable, Fragment, FragmentType} from 'relay-runtime';
21
17
 
22
- declare export var fragmentInput: GraphQLTaggedNode;
18
+ declare export var fragmentInput: Fragment<
19
+ Example_user$fragmentType,
20
+ Example_user$data,
21
+ >;
22
+
23
+ declare export opaque type Example_user$fragmentType: FragmentType;
24
+ export type Example_user$data = NonNullableData;
25
+ export type Example_user$key = {
26
+ +$data?: Example_user$data,
27
+ +$fragmentSpreads: Example_user$fragmentType,
28
+ ...
29
+ };
23
30
 
24
31
  export type NonNullableData = {|
25
32
  +id: string,
26
33
  +count: number,
27
34
  |};
28
-
29
35
  export type NullableData = ?NonNullableData;
30
-
31
36
  export type NonNullablePluralData = $ReadOnlyArray<NonNullableData>;
32
37
  export type NullablePluralData = ?$ReadOnlyArray<NonNullableData>;
33
38
 
@@ -36,44 +41,28 @@ export type AnotherNonNullableData = {|
36
41
  +friends: ?number,
37
42
  |};
38
43
 
39
- declare export var keyNonNullable: {
40
- +$data?: NonNullableData,
41
- +$fragmentRefs: FragmentReference,
42
- ...
43
- };
44
+ declare export var keyNonNullable: Example_user$key;
44
45
 
45
- declare export var keyNonNullablePlural: $ReadOnlyArray<{
46
- +$data?: NonNullablePluralData,
47
- +$fragmentRefs: FragmentReference,
48
- ...
49
- }>;
46
+ declare export var keyNonNullablePlural: $ReadOnlyArray<Example_user$key>;
50
47
 
51
- declare export var keyNullablePlural: ?$ReadOnlyArray<{
52
- +$data?: NonNullablePluralData,
53
- +$fragmentRefs: FragmentReference,
54
- ...
55
- }>;
48
+ declare export var keyNullablePlural: ?$ReadOnlyArray<Example_user$key>;
56
49
 
57
- declare export var keyNullable: ?{
58
- +$data?: NonNullableData,
59
- +$fragmentRefs: FragmentReference,
60
- ...
61
- };
50
+ declare export var keyNullable: ?Example_user$key;
62
51
 
63
52
  declare export var keyAnotherNonNullable: {
64
53
  +$data: AnotherNonNullableData,
65
- +$fragmentRefs: FragmentReference,
54
+ +$fragmentSpreads: FragmentType,
66
55
  ...
67
56
  };
68
57
 
69
58
  declare export var keyAnotherNullable: ?{
70
59
  +$data: AnotherNonNullableData,
71
- +$fragmentRefs: FragmentReference,
60
+ +$fragmentSpreads: FragmentType,
72
61
  ...
73
62
  };
74
63
 
75
64
  declare export var fragmentData: {
76
- +$refType: FragmentReference,
65
+ +$fragmentType: FragmentType,
77
66
  ...
78
67
  };
79
68
 
@@ -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
 
12
12
  'use strict';
13
13
 
14
- const {loadQuery} = require('./loadQuery');
15
-
16
14
  import type {
17
15
  EntryPoint,
18
16
  EntryPointComponent,
@@ -21,6 +19,8 @@ import type {
21
19
  PreloadedEntryPoint,
22
20
  } from './EntryPointTypes.flow';
23
21
 
22
+ const {loadQuery} = require('./loadQuery');
23
+
24
24
  function loadEntryPoint<
25
25
  TEntryPointParams: {...},
26
26
  TPreloadedQueries: {...},
@@ -51,12 +51,8 @@ function loadEntryPoint<
51
51
  if (queries != null) {
52
52
  const queriesPropNames = Object.keys(queries);
53
53
  queriesPropNames.forEach(queryPropName => {
54
- const {
55
- environmentProviderOptions,
56
- options,
57
- parameters,
58
- variables,
59
- } = queries[queryPropName];
54
+ const {environmentProviderOptions, options, parameters, variables} =
55
+ queries[queryPropName];
60
56
 
61
57
  const environment = environmentProvider.getEnvironment(
62
58
  environmentProviderOptions,
@@ -83,10 +79,8 @@ function loadEntryPoint<
83
79
  if (entryPointDescription == null) {
84
80
  return;
85
81
  }
86
- const {
87
- entryPoint: nestedEntryPoint,
88
- entryPointParams: nestedParams,
89
- } = entryPointDescription;
82
+ const {entryPoint: nestedEntryPoint, entryPointParams: nestedParams} =
83
+ entryPointDescription;
90
84
  preloadedEntryPoints[entryPointPropName] = loadEntryPoint(
91
85
  environmentProvider,
92
86
  nestedEntryPoint,
@@ -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,37 +11,35 @@
11
11
 
12
12
  'use strict';
13
13
 
14
- const React = require('react');
15
-
16
- const invariant = require('invariant');
17
- const warning = require('warning');
18
-
19
- const {
20
- PreloadableQueryRegistry,
21
- ReplaySubject,
22
- createOperationDescriptor,
23
- getRequest,
24
- getRequestIdentifier,
25
- Observable,
26
- RelayFeatureFlags,
27
- __internal: {fetchQueryDeduped},
28
- } = require('relay-runtime');
29
-
30
14
  import type {
15
+ LoadQueryOptions,
31
16
  PreloadableConcreteRequest,
32
17
  PreloadedQueryInner,
33
- LoadQueryOptions,
34
18
  } from './EntryPointTypes.flow';
35
19
  import type {
20
+ GraphQLResponse,
21
+ GraphQLTaggedNode,
36
22
  IEnvironment,
37
23
  OperationDescriptor,
38
24
  OperationType,
39
- GraphQLTaggedNode,
40
- GraphQLResponse,
41
25
  RequestIdentifier,
42
26
  RequestParameters,
43
27
  } from 'relay-runtime';
44
28
 
29
+ const invariant = require('invariant');
30
+ const React = require('react');
31
+ const {
32
+ Observable,
33
+ PreloadableQueryRegistry,
34
+ RelayFeatureFlags,
35
+ ReplaySubject,
36
+ __internal: {fetchQueryDeduped},
37
+ createOperationDescriptor,
38
+ getRequest,
39
+ getRequestIdentifier,
40
+ } = require('relay-runtime');
41
+ const warning = require('warning');
42
+
45
43
  let RenderDispatcher = null;
46
44
  let fetchKey = 100001;
47
45
 
@@ -59,7 +57,7 @@ function useTrackLoadQueryInRender() {
59
57
  function loadQuery<TQuery: OperationType, TEnvironmentProviderOptions>(
60
58
  environment: IEnvironment,
61
59
  preloadableRequest: GraphQLTaggedNode | PreloadableConcreteRequest<TQuery>,
62
- variables: $ElementType<TQuery, 'variables'>,
60
+ variables: TQuery['variables'],
63
61
  options?: ?LoadQueryOptions,
64
62
  environmentProviderOptions?: ?TEnvironmentProviderOptions,
65
63
  ): PreloadedQueryInner<TQuery, TEnvironmentProviderOptions> {
@@ -274,7 +272,8 @@ function loadQuery<TQuery: OperationType, TEnvironmentProviderOptions>(
274
272
  let cancelOnLoadCallback;
275
273
  let queryId;
276
274
  if (preloadableRequest.kind === 'PreloadableConcreteRequest') {
277
- const preloadableConcreteRequest: PreloadableConcreteRequest<TQuery> = (preloadableRequest: $FlowFixMe);
275
+ const preloadableConcreteRequest: PreloadableConcreteRequest<TQuery> =
276
+ (preloadableRequest: $FlowFixMe);
278
277
  ({params} = preloadableConcreteRequest);
279
278
 
280
279
  ({id: queryId} = params);
@@ -300,7 +299,6 @@ function loadQuery<TQuery: OperationType, TEnvironmentProviderOptions>(
300
299
  fetchPolicy === 'store-only' ? null : makeNetworkRequest(params);
301
300
  // $FlowFixMe[method-unbinding] added when improving typing for this parameters
302
301
  ({dispose: cancelOnLoadCallback} = PreloadableQueryRegistry.onLoad(
303
- // $FlowFixMe[incompatible-call]
304
302
  queryId,
305
303
  preloadedModule => {
306
304
  cancelOnLoadCallback();
@@ -319,7 +317,8 @@ function loadQuery<TQuery: OperationType, TEnvironmentProviderOptions>(
319
317
  ));
320
318
  }
321
319
  } else {
322
- const graphQlTaggedNode: GraphQLTaggedNode = (preloadableRequest: $FlowFixMe);
320
+ const graphQlTaggedNode: GraphQLTaggedNode =
321
+ (preloadableRequest: $FlowFixMe);
323
322
  const request = getRequest(graphQlTaggedNode);
324
323
  params = request.params;
325
324
  queryId = params.cacheID != null ? params.cacheID : params.id;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) Facebook, Inc. and its affiliates.
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
3
  *
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -13,15 +13,6 @@
13
13
 
14
14
  'use strict';
15
15
 
16
- const {
17
- createOperationDescriptor,
18
- getRequest,
19
- getRequestIdentifier,
20
- Observable,
21
- PreloadableQueryRegistry,
22
- ReplaySubject,
23
- } = require('relay-runtime');
24
-
25
16
  import type {
26
17
  PreloadableConcreteRequest,
27
18
  PreloadedQueryInner_DEPRECATED,
@@ -39,6 +30,16 @@ import type {
39
30
  Subscription,
40
31
  } from 'relay-runtime';
41
32
 
33
+ const {
34
+ Observable,
35
+ PreloadableQueryRegistry,
36
+ RelayFeatureFlags,
37
+ ReplaySubject,
38
+ createOperationDescriptor,
39
+ getRequest,
40
+ getRequestIdentifier,
41
+ } = require('relay-runtime');
42
+
42
43
  // Expire results by this delay after they resolve.
43
44
  const DEFAULT_PREFETCH_TIMEOUT = 30 * 1000; // 30 seconds
44
45
 
@@ -111,7 +112,23 @@ function preloadQuery<TQuery: OperationType, TEnvironmentProviderOptions>(
111
112
  }
112
113
  return () => {
113
114
  subscription?.unsubscribe();
114
- cleanup(pendingQueries, queryEntry);
115
+ if (environment.isServer()) {
116
+ return;
117
+ }
118
+ if (
119
+ RelayFeatureFlags.DELAY_CLEANUP_OF_PENDING_PRELOAD_QUERIES ===
120
+ true
121
+ ) {
122
+ setTimeout(() => {
123
+ // Clear the cache entry after the default timeout
124
+ // null-check for Flow
125
+ if (queryEntry != null) {
126
+ cleanup(pendingQueries, queryEntry);
127
+ }
128
+ }, DEFAULT_PREFETCH_TIMEOUT);
129
+ } else {
130
+ cleanup(pendingQueries, queryEntry);
131
+ }
115
132
  };
116
133
  })
117
134
  : null;
@@ -140,7 +157,8 @@ function preloadQueryDeduped<TQuery: OperationType>(
140
157
  let params;
141
158
  let query: ?ConcreteRequest;
142
159
  if (preloadableRequest.kind === 'PreloadableConcreteRequest') {
143
- const preloadableConcreteRequest: PreloadableConcreteRequest<TQuery> = (preloadableRequest: $FlowFixMe);
160
+ const preloadableConcreteRequest: PreloadableConcreteRequest<TQuery> =
161
+ (preloadableRequest: $FlowFixMe);
144
162
  params = preloadableConcreteRequest.params;
145
163
  query = params.id != null ? PreloadableQueryRegistry.get(params.id) : null;
146
164
  } else {
@@ -238,9 +256,7 @@ function preloadQueryDeduped<TQuery: OperationType>(
238
256
  } else {
239
257
  nextQueryEntry = prevQueryEntry;
240
258
  }
241
- // $FlowFixMe[incompatible-call]
242
259
  pendingQueries.set(cacheKey, nextQueryEntry);
243
- // $FlowFixMe[incompatible-return]
244
260
  return nextQueryEntry;
245
261
  }
246
262
 
@@ -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.
@@ -13,8 +13,6 @@
13
13
 
14
14
  'use strict';
15
15
 
16
- const preloadQuery = require('./preloadQuery_DEPRECATED');
17
-
18
16
  import type {
19
17
  EntryPoint,
20
18
  EntryPointComponent,
@@ -22,6 +20,8 @@ import type {
22
20
  IEnvironmentProvider,
23
21
  } from './EntryPointTypes.flow';
24
22
 
23
+ const preloadQuery = require('./preloadQuery_DEPRECATED');
24
+
25
25
  function prepareEntryPoint<
26
26
  TEntryPointParams: {...},
27
27
  TPreloadedQueries: {...},
@@ -51,12 +51,8 @@ function prepareEntryPoint<
51
51
  if (queries != null) {
52
52
  const queriesPropNames = Object.keys(queries);
53
53
  queriesPropNames.forEach(queryPropName => {
54
- const {
55
- environmentProviderOptions,
56
- options,
57
- parameters,
58
- variables,
59
- } = queries[queryPropName];
54
+ const {environmentProviderOptions, options, parameters, variables} =
55
+ queries[queryPropName];
60
56
 
61
57
  const environment = environmentProvider.getEnvironment(
62
58
  environmentProviderOptions,
@@ -79,10 +75,8 @@ function prepareEntryPoint<
79
75
  if (entryPointDescription == null) {
80
76
  return;
81
77
  }
82
- const {
83
- entryPoint: nestedEntryPoint,
84
- entryPointParams: nestedParams,
85
- } = entryPointDescription;
78
+ const {entryPoint: nestedEntryPoint, entryPointParams: nestedParams} =
79
+ entryPointDescription;
86
80
  preloadedEntryPoints[entryPointPropName] = prepareEntryPoint(
87
81
  environmentProvider,
88
82
  nestedEntryPoint,
@@ -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.
@@ -13,11 +13,20 @@
13
13
 
14
14
  'use strict';
15
15
 
16
- const invariant = require('invariant');
16
+ import type {LoadMoreFn, UseLoadMoreFunctionArgs} from './useLoadMoreFunction';
17
+ import type {RefetchFnDynamic} from './useRefetchableFragmentNode';
18
+ import type {
19
+ FragmentType,
20
+ GraphQLResponse,
21
+ GraphQLTaggedNode,
22
+ Observer,
23
+ OperationType,
24
+ } from 'relay-runtime';
25
+
17
26
  const useLoadMoreFunction = require('./useLoadMoreFunction');
18
27
  const useRefetchableFragmentNode = require('./useRefetchableFragmentNode');
19
28
  const useStaticFragmentNodeWarning = require('./useStaticFragmentNodeWarning');
20
-
29
+ const invariant = require('invariant');
21
30
  const {useCallback, useEffect, useRef, useState} = require('react');
22
31
  const {
23
32
  getFragment,
@@ -25,16 +34,6 @@ const {
25
34
  getPaginationMetadata,
26
35
  } = require('relay-runtime');
27
36
 
28
- import type {LoadMoreFn, UseLoadMoreFunctionArgs} from './useLoadMoreFunction';
29
- import type {RefetchFnDynamic} from './useRefetchableFragmentNode';
30
- import type {
31
- FragmentReference,
32
- GraphQLResponse,
33
- GraphQLTaggedNode,
34
- Observer,
35
- OperationType,
36
- } from 'relay-runtime';
37
-
38
37
  export type ReturnType<TQuery: OperationType, TKey, TFragmentData> = {|
39
38
  data: TFragmentData,
40
39
  loadNext: LoadMoreFn<TQuery>,
@@ -46,7 +45,7 @@ export type ReturnType<TQuery: OperationType, TKey, TFragmentData> = {|
46
45
 
47
46
  function useBlockingPaginationFragment<
48
47
  TQuery: OperationType,
49
- TKey: ?{+$data?: mixed, +$fragmentRefs: FragmentReference, ...},
48
+ TKey: ?{+$data?: mixed, +$fragmentSpreads: FragmentType, ...},
50
49
  >(
51
50
  fragmentInput: GraphQLTaggedNode,
52
51
  parentFragmentRef: TKey,
@@ -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.
@@ -13,12 +13,6 @@
13
13
 
14
14
  'use strict';
15
15
 
16
- const loadEntryPoint = require('./loadEntryPoint');
17
- const useIsMountedRef = require('./useIsMountedRef');
18
-
19
- const {useTrackLoadQueryInRender} = require('./loadQuery');
20
- const {useCallback, useEffect, useRef, useState} = require('react');
21
-
22
16
  import type {
23
17
  EntryPoint,
24
18
  EntryPointComponent,
@@ -27,6 +21,11 @@ import type {
27
21
  PreloadedEntryPoint,
28
22
  } from './EntryPointTypes.flow';
29
23
 
24
+ const loadEntryPoint = require('./loadEntryPoint');
25
+ const {useTrackLoadQueryInRender} = require('./loadQuery');
26
+ const useIsMountedRef = require('./useIsMountedRef');
27
+ const {useCallback, useEffect, useRef, useState} = require('react');
28
+
30
29
  type UseEntryPointLoaderHookReturnType<
31
30
  TEntryPointParams: {...},
32
31
  TPreloadedQueries: {...},
@@ -121,10 +120,8 @@ function useLoadEntryPoint<
121
120
  const [entryPointReference, setEntryPointReference] = useState<
122
121
  PreloadedEntryPoint<TEntryPointComponent> | NullEntryPointReference,
123
122
  >(initialEntryPointReferenceInternal);
124
- const [
125
- entryPointParams,
126
- setEntryPointParams,
127
- ] = useState<TEntryPointParams | null>(initialEntryPointParamsInternal);
123
+ const [entryPointParams, setEntryPointParams] =
124
+ useState<TEntryPointParams | null>(initialEntryPointParamsInternal);
128
125
 
129
126
  const disposeEntryPoint = useCallback(() => {
130
127
  if (isMountedRef.current) {
@@ -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.
@@ -13,10 +13,10 @@
13
13
 
14
14
  'use strict';
15
15
 
16
- const {useCallback, useEffect, useRef} = require('react');
17
-
18
16
  import type {Subscription} from 'relay-runtime';
19
17
 
18
+ const {useCallback, useEffect, useRef} = require('react');
19
+
20
20
  /**
21
21
  * This hook returns a mutable React ref that holds the value of whether a
22
22
  * fetch request is in flight. The reason this is a mutable ref instead of