react-relay 20.1.1 → 21.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/ReactRelayContext.js +1 -1
  2. package/ReactRelayContext.js.flow +2 -2
  3. package/ReactRelayFragmentContainer.js.flow +8 -9
  4. package/ReactRelayLocalQueryRenderer.js.flow +11 -3
  5. package/ReactRelayLoggingContext.js.flow +3 -3
  6. package/ReactRelayPaginationContainer.js.flow +32 -25
  7. package/ReactRelayQueryFetcher.js.flow +1 -1
  8. package/ReactRelayQueryRenderer.js.flow +2 -2
  9. package/ReactRelayQueryRendererContext.js.flow +2 -2
  10. package/ReactRelayRefetchContainer.js.flow +17 -14
  11. package/ReactRelayTestMocker.js.flow +10 -10
  12. package/ReactRelayTypes.d.ts +377 -0
  13. package/ReactRelayTypes.js.flow +47 -43
  14. package/RelayContext.js.flow +3 -3
  15. package/__flowtests__/ReactRelayFragmentContainer-flowtest.js.flow +11 -11
  16. package/__flowtests__/ReactRelayPaginationContainer-flowtest.js.flow +5 -5
  17. package/__flowtests__/ReactRelayRefetchContainer-flowtest.js.flow +5 -5
  18. package/__flowtests__/RelayModern-flowtest.js.flow +32 -32
  19. package/__flowtests__/RelayModernFlowtest_users.graphql.js.flow +1 -1
  20. package/__flowtests__/__generated__/ReactRelayFragmentContainerFlowtest_viewer.graphql.js.flow +3 -4
  21. package/__flowtests__/__generated__/ReactRelayFragmentContainerFlowtest_viewer2.graphql.js.flow +3 -4
  22. package/__flowtests__/__generated__/ReactRelayPaginationContainerFlowtestQuery.graphql.js.flow +9 -10
  23. package/__flowtests__/__generated__/ReactRelayPaginationContainerFlowtest_viewer.graphql.js.flow +4 -5
  24. package/__flowtests__/__generated__/ReactRelayRefetchContainerFlowtestQuery.graphql.js.flow +9 -10
  25. package/__flowtests__/__generated__/ReactRelayRefetchContainerFlowtest_viewer.graphql.js.flow +4 -5
  26. package/__flowtests__/__generated__/RelayModernFlowtest_badref.graphql.js.flow +3 -4
  27. package/__flowtests__/__generated__/RelayModernFlowtest_notref.graphql.js.flow +3 -4
  28. package/__flowtests__/__generated__/RelayModernFlowtest_user.graphql.js.flow +3 -4
  29. package/__flowtests__/__generated__/RelayModernFlowtest_users.graphql.js.flow +5 -6
  30. package/buildReactRelayContainer.js.flow +5 -5
  31. package/getRootVariablesForFragments.js.flow +1 -1
  32. package/hooks.d.ts +89 -0
  33. package/hooks.js +1 -1
  34. package/hooks.js.flow +23 -8
  35. package/index.d.ts +9 -0
  36. package/index.js +1 -1
  37. package/index.js.flow +40 -14
  38. package/isRelayEnvironment.js.flow +1 -1
  39. package/jest-react/internalAct.js.flow +1 -1
  40. package/legacy.d.ts +143 -0
  41. package/legacy.js +1 -1
  42. package/legacy.js.flow +32 -13
  43. package/lib/ReactRelayFragmentContainer.js +1 -1
  44. package/lib/ReactRelayPaginationContainer.js +8 -8
  45. package/lib/ReactRelayRefetchContainer.js +8 -8
  46. package/lib/ReactRelayTestMocker.js +5 -5
  47. package/lib/hooks.js +18 -8
  48. package/lib/index.js +30 -14
  49. package/lib/legacy.js +26 -13
  50. package/lib/relay-hooks/legacy/useBlockingPaginationFragment.js +5 -5
  51. package/lib/relay-hooks/legacy/useRefetchableFragmentNode.js +34 -34
  52. package/lib/relay-hooks/loadEntryPoint.js +2 -2
  53. package/lib/relay-hooks/loadQuery.js +14 -14
  54. package/lib/relay-hooks/preloadQuery_DEPRECATED.js +10 -10
  55. package/lib/relay-hooks/readFragmentInternal.js +6 -6
  56. package/lib/relay-hooks/rsc/serverFetchQuery.js +20 -0
  57. package/lib/relay-hooks/rsc/serverPreloadQuery.js +31 -0
  58. package/lib/relay-hooks/rsc/serverReadFragment.js +15 -0
  59. package/lib/relay-hooks/rsc/useQueryFromServer.js +62 -0
  60. package/lib/relay-hooks/useFragmentInternal_CURRENT.js +49 -25
  61. package/lib/relay-hooks/useFragmentInternal_EXPERIMENTAL.js +81 -44
  62. package/lib/relay-hooks/useLazyLoadQueryNode.js +32 -19
  63. package/lib/relay-hooks/useMutation.js +6 -14
  64. package/lib/relay-hooks/useMutationAction_EXPERIMENTAL.js +26 -0
  65. package/lib/relay-hooks/usePreloadedQuery.js +52 -47
  66. package/lib/relay-hooks/useQueryLoader.js +2 -2
  67. package/lib/relay-hooks/useQueryLoader_EXPERIMENTAL.js +2 -2
  68. package/lib/relay-hooks/useRefetchableFragmentInternal.js +31 -31
  69. package/lib/rsc-client_EXPERIMENTAL.js +7 -0
  70. package/lib/rsc_EXPERIMENTAL.js +43 -0
  71. package/multi-actor/ActorChange.js.flow +1 -1
  72. package/package.json +3 -2
  73. package/relay-hooks/EntryPointContainer.react.d.ts +22 -0
  74. package/relay-hooks/EntryPointContainer.react.js.flow +6 -6
  75. package/relay-hooks/EntryPointTypes.flow.js.flow +106 -108
  76. package/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js.flow +23 -21
  77. package/relay-hooks/MatchContainer.d.ts +95 -0
  78. package/relay-hooks/MatchContainer.js.flow +17 -11
  79. package/relay-hooks/NestedRelayEntryPointBuilderUtils.js.flow +3 -9
  80. package/relay-hooks/ProfilerContext.d.ts +18 -0
  81. package/relay-hooks/QueryResource.js.flow +9 -9
  82. package/relay-hooks/RelayEnvironmentProvider.d.ts +16 -0
  83. package/relay-hooks/RelayEnvironmentProvider.js.flow +2 -2
  84. package/relay-hooks/__flowtests__/EntryPointTypes/EntryPointElementConfig-flowtest.js.flow +6 -6
  85. package/relay-hooks/__flowtests__/EntryPointTypes/ExtractQueryTypes-flowtest.js.flow +50 -3
  86. package/relay-hooks/__flowtests__/EntryPointTypes/NestedEntrypoints-flowtest.js.flow +9 -9
  87. package/relay-hooks/__flowtests__/__generated__/useFragmentFlowtest_user.graphql.js.flow +3 -4
  88. package/relay-hooks/__flowtests__/__generated__/useFragmentFlowtest_users.graphql.js.flow +5 -6
  89. package/relay-hooks/__flowtests__/useBlockingPaginationFragment-flowtest.js.flow +27 -32
  90. package/relay-hooks/__flowtests__/useFragment-flowtest.js.flow +25 -25
  91. package/relay-hooks/__flowtests__/usePaginationFragment-flowtest.js.flow +26 -32
  92. package/relay-hooks/__flowtests__/useRefetchableFragment-flowtest.js.flow +23 -30
  93. package/relay-hooks/__flowtests__/utils.js.flow +17 -17
  94. package/relay-hooks/getConnectionState.js.flow +2 -2
  95. package/relay-hooks/legacy/FragmentResource.js.flow +13 -13
  96. package/relay-hooks/legacy/useBlockingPaginationFragment.js.flow +28 -25
  97. package/relay-hooks/legacy/useFragmentNode.js.flow +4 -4
  98. package/relay-hooks/legacy/useRefetchableFragmentNode.js.flow +79 -81
  99. package/relay-hooks/loadEntryPoint.d.ts +14 -0
  100. package/relay-hooks/loadEntryPoint.js.flow +15 -13
  101. package/relay-hooks/loadQuery.d.ts +20 -0
  102. package/relay-hooks/loadQuery.js.flow +19 -19
  103. package/relay-hooks/preloadQuery_DEPRECATED.js.flow +16 -13
  104. package/relay-hooks/prepareEntryPoint_DEPRECATED.js.flow +7 -7
  105. package/relay-hooks/readFragmentInternal.js.flow +11 -11
  106. package/relay-hooks/rsc/serverFetchQuery.js.flow +31 -0
  107. package/relay-hooks/rsc/serverPreloadQuery.js.flow +69 -0
  108. package/relay-hooks/rsc/serverReadFragment.js.flow +33 -0
  109. package/relay-hooks/rsc/useQueryFromServer.js.flow +135 -0
  110. package/relay-hooks/useClientQuery.d.ts +16 -0
  111. package/relay-hooks/useClientQuery.js.flow +2 -2
  112. package/relay-hooks/useEntryPointLoader.d.ts +21 -0
  113. package/relay-hooks/useEntryPointLoader.js.flow +11 -11
  114. package/relay-hooks/useFragment.d.ts +36 -0
  115. package/relay-hooks/useFragment.js.flow +8 -8
  116. package/relay-hooks/useFragmentInternal.js.flow +1 -1
  117. package/relay-hooks/useFragmentInternal_CURRENT.js.flow +54 -22
  118. package/relay-hooks/useFragmentInternal_EXPERIMENTAL.js.flow +95 -46
  119. package/relay-hooks/useIsOperationNodeActive.js.flow +1 -1
  120. package/relay-hooks/useIsParentQueryActive.js.flow +5 -1
  121. package/relay-hooks/useLazyLoadQuery.d.ts +19 -0
  122. package/relay-hooks/useLazyLoadQuery.js.flow +14 -7
  123. package/relay-hooks/useLazyLoadQueryNode.js.flow +67 -28
  124. package/relay-hooks/useLoadMoreFunction.d.ts +56 -0
  125. package/relay-hooks/useLoadMoreFunction.js.flow +7 -6
  126. package/relay-hooks/useLoadMoreFunction_EXPERIMENTAL.js.flow +5 -5
  127. package/relay-hooks/useMemoVariables.js.flow +1 -1
  128. package/relay-hooks/useMutation.d.ts +36 -0
  129. package/relay-hooks/useMutation.js.flow +9 -17
  130. package/relay-hooks/useMutationAction_EXPERIMENTAL.js.flow +68 -0
  131. package/relay-hooks/usePaginationFragment.d.ts +33 -0
  132. package/relay-hooks/usePaginationFragment.js.flow +19 -11
  133. package/relay-hooks/usePrefetchableForwardPaginationFragment.js.flow +23 -18
  134. package/relay-hooks/usePrefetchableForwardPaginationFragment_EXPERIMENTAL.js.flow +23 -18
  135. package/relay-hooks/usePreloadedQuery.d.ts +17 -0
  136. package/relay-hooks/usePreloadedQuery.js.flow +119 -85
  137. package/relay-hooks/useQueryLoader.d.ts +33 -0
  138. package/relay-hooks/useQueryLoader.js.flow +28 -24
  139. package/relay-hooks/useQueryLoader_EXPERIMENTAL.js.flow +10 -10
  140. package/relay-hooks/useRefetchableFragment.d.ts +23 -0
  141. package/relay-hooks/useRefetchableFragment.js.flow +20 -11
  142. package/relay-hooks/useRefetchableFragmentInternal.js.flow +77 -79
  143. package/relay-hooks/useRelayEnvironment.d.ts +10 -0
  144. package/relay-hooks/useRelayLoggingContext.js.flow +1 -1
  145. package/relay-hooks/useSubscribeToInvalidationState.d.ts +19 -0
  146. package/relay-hooks/useSubscribeToInvalidationState.js.flow +1 -1
  147. package/relay-hooks/useSubscription.d.ts +14 -0
  148. package/relay-hooks/useSubscription.js.flow +1 -1
  149. package/rsc-client_EXPERIMENTAL.d.ts +17 -0
  150. package/rsc-client_EXPERIMENTAL.js +10 -0
  151. package/rsc-client_EXPERIMENTAL.js.flow +23 -0
  152. package/rsc_EXPERIMENTAL.d.ts +48 -0
  153. package/rsc_EXPERIMENTAL.js +10 -0
  154. package/rsc_EXPERIMENTAL.js.flow +90 -0
package/hooks.d.ts ADDED
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ export {
9
+ EntryPoint,
10
+ EntryPointComponent,
11
+ EntryPointProps,
12
+ EnvironmentProviderOptions,
13
+ IEnvironmentProvider,
14
+ JSResourceReference,
15
+ LoadQueryOptions,
16
+ PreloadedEntryPoint,
17
+ PreloadedQuery,
18
+ PreloadFetchPolicy,
19
+ PreloadOptions,
20
+ PreloadProps,
21
+ PreloadQueryStatus,
22
+ ThinNestedEntryPointParams,
23
+ ThinQueryParams,
24
+ VariablesOf,
25
+ } from './ReactRelayTypes';
26
+
27
+ export {
28
+ DataID,
29
+ DeclarativeMutationConfig,
30
+ Disposable,
31
+ FetchPolicy,
32
+ GraphQLTaggedNode,
33
+ // RelayRuntime has two environment exports: one interface, one concrete.
34
+ IEnvironment as Environment,
35
+ MutationType,
36
+ MutationTypes,
37
+ NormalizationSelector,
38
+ OperationDescriptor,
39
+ RangeOperation,
40
+ RangeOperations,
41
+ ReaderSelector,
42
+ RelayContext,
43
+ Snapshot,
44
+ Variables,
45
+ } from 'relay-runtime';
46
+ export { MatchContainerProps, MatchPointer } from './relay-hooks/MatchContainer';
47
+ export { ProfilerContextType } from './relay-hooks/ProfilerContext';
48
+ export { Direction, LoadMoreFn } from './relay-hooks/useLoadMoreFunction';
49
+ export { UseMutationConfig } from './relay-hooks/useMutation';
50
+ export { UseQueryLoaderLoadQueryOptions } from './relay-hooks/useQueryLoader';
51
+ export { RefetchableOptions as RefetchOptions, RefetchFn, RefetchFnDynamic } from './ReactRelayTypes';
52
+
53
+ // /**
54
+ // * The public interface for Relay Hooks.
55
+ // */
56
+
57
+ export { graphql } from 'relay-runtime';
58
+
59
+ export { ConnectionHandler } from 'relay-runtime';
60
+
61
+ export { applyOptimisticMutation } from 'relay-runtime';
62
+ export { commitLocalUpdate } from 'relay-runtime';
63
+ export { commitMutation } from 'relay-runtime';
64
+
65
+ export { readInlineData } from 'relay-runtime';
66
+ export { requestSubscription } from 'relay-runtime';
67
+
68
+ export { EntryPointContainer } from './relay-hooks/EntryPointContainer.react';
69
+ export { RelayEnvironmentProvider } from './relay-hooks/RelayEnvironmentProvider';
70
+
71
+ export { ProfilerContext } from './relay-hooks/ProfilerContext';
72
+
73
+ export { fetchQuery } from 'relay-runtime';
74
+
75
+ export { loadEntryPoint } from './relay-hooks/loadEntryPoint';
76
+ export { loadQuery } from './relay-hooks/loadQuery';
77
+
78
+ export { useClientQuery } from './relay-hooks/useClientQuery';
79
+ export { useEntryPointLoader } from './relay-hooks/useEntryPointLoader';
80
+ export { useFragment } from './relay-hooks/useFragment';
81
+ export { useLazyLoadQuery } from './relay-hooks/useLazyLoadQuery';
82
+ export { useMutation } from './relay-hooks/useMutation';
83
+ export { usePaginationFragment } from './relay-hooks/usePaginationFragment';
84
+ export { usePreloadedQuery } from './relay-hooks/usePreloadedQuery';
85
+ export { useQueryLoader } from './relay-hooks/useQueryLoader';
86
+ export { useRefetchableFragment } from './relay-hooks/useRefetchableFragment';
87
+ export { useRelayEnvironment } from './relay-hooks/useRelayEnvironment';
88
+ export { useSubscribeToInvalidationState } from './relay-hooks/useSubscribeToInvalidationState';
89
+ export { useSubscription } from './relay-hooks/useSubscription';
package/hooks.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Relay v20.1.1
2
+ * Relay v21.0.1
3
3
  *
4
4
  * Copyright (c) Meta Platforms, Inc. and affiliates.
5
5
  *
package/hooks.js.flow CHANGED
@@ -11,6 +11,8 @@
11
11
 
12
12
  'use strict';
13
13
 
14
+ /* eslint relay-internal/esm-compatible-cjs: error */
15
+
14
16
  const EntryPointContainer = require('./relay-hooks/EntryPointContainer.react');
15
17
  const loadEntryPoint = require('./relay-hooks/loadEntryPoint');
16
18
  const {loadQuery} = require('./relay-hooks/loadQuery');
@@ -20,6 +22,7 @@ const useEntryPointLoader = require('./relay-hooks/useEntryPointLoader');
20
22
  const useFragment = require('./relay-hooks/useFragment');
21
23
  const useLazyLoadQuery = require('./relay-hooks/useLazyLoadQuery');
22
24
  const useMutation = require('./relay-hooks/useMutation');
25
+ const useMutationAction_EXPERIMENTAL = require('./relay-hooks/useMutationAction_EXPERIMENTAL');
23
26
  const usePaginationFragment = require('./relay-hooks/usePaginationFragment');
24
27
  const usePreloadedQuery = require('./relay-hooks/usePreloadedQuery');
25
28
  const useQueryLoader = require('./relay-hooks/useQueryLoader');
@@ -62,26 +65,37 @@ export type {
62
65
  FetchPolicy,
63
66
  } from 'relay-runtime';
64
67
 
68
+ const {
69
+ ConnectionHandler,
70
+ applyOptimisticMutation,
71
+ commitLocalUpdate,
72
+ commitMutation,
73
+ graphql,
74
+ readInlineData,
75
+ requestSubscription,
76
+ fetchQuery,
77
+ } = RelayRuntime;
78
+
65
79
  /**
66
80
  * The public interface for Relay Hooks.
67
81
  * This will eventually become the main public interface for react-relay.
68
82
  */
69
83
  module.exports = {
70
- ConnectionHandler: RelayRuntime.ConnectionHandler,
84
+ ConnectionHandler,
71
85
 
72
- applyOptimisticMutation: RelayRuntime.applyOptimisticMutation,
73
- commitLocalUpdate: RelayRuntime.commitLocalUpdate,
74
- commitMutation: RelayRuntime.commitMutation,
75
- graphql: RelayRuntime.graphql,
76
- readInlineData: RelayRuntime.readInlineData,
77
- requestSubscription: RelayRuntime.requestSubscription,
86
+ applyOptimisticMutation,
87
+ commitLocalUpdate,
88
+ commitMutation,
89
+ graphql,
90
+ readInlineData,
91
+ requestSubscription,
78
92
 
79
93
  EntryPointContainer: EntryPointContainer,
80
94
  RelayEnvironmentProvider: RelayEnvironmentProvider,
81
95
 
82
96
  ProfilerContext: ProfilerContext,
83
97
 
84
- fetchQuery: RelayRuntime.fetchQuery,
98
+ fetchQuery,
85
99
 
86
100
  loadQuery: loadQuery,
87
101
  loadEntryPoint: loadEntryPoint,
@@ -91,6 +105,7 @@ module.exports = {
91
105
  useEntryPointLoader: useEntryPointLoader,
92
106
  useQueryLoader: useQueryLoader,
93
107
  useMutation: useMutation,
108
+ useMutationAction_EXPERIMENTAL: useMutationAction_EXPERIMENTAL,
94
109
  usePaginationFragment: usePaginationFragment,
95
110
  usePreloadedQuery: usePreloadedQuery,
96
111
  useRefetchableFragment: useRefetchableFragment,
package/index.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ export * from './hooks';
9
+ export * from './legacy';
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Relay v20.1.1
2
+ * Relay v21.0.1
3
3
  *
4
4
  * Copyright (c) Meta Platforms, Inc. and affiliates.
5
5
  *
package/index.js.flow CHANGED
@@ -9,8 +9,14 @@
9
9
  * @oncall relay
10
10
  */
11
11
 
12
+ /**
13
+ * LLM/AI Agent: Relay documentation is available in node_modules/relay-runtime/llm-docs/
14
+ */
15
+
12
16
  'use strict';
13
17
 
18
+ /* eslint relay-internal/esm-compatible-cjs: error */
19
+
14
20
  const ReactRelayContext = require('./ReactRelayContext');
15
21
  const ReactRelayFragmentContainer = require('./ReactRelayFragmentContainer');
16
22
  const ReactRelayLocalQueryRenderer = require('./ReactRelayLocalQueryRenderer');
@@ -27,6 +33,7 @@ const useEntryPointLoader = require('./relay-hooks/useEntryPointLoader');
27
33
  const useFragment = require('./relay-hooks/useFragment');
28
34
  const useLazyLoadQuery = require('./relay-hooks/useLazyLoadQuery');
29
35
  const useMutation = require('./relay-hooks/useMutation');
36
+ const useMutationAction_EXPERIMENTAL = require('./relay-hooks/useMutationAction_EXPERIMENTAL');
30
37
  const usePaginationFragment = require('./relay-hooks/usePaginationFragment');
31
38
  const usePrefetchableForwardPaginationFragment = require('./relay-hooks/usePrefetchableForwardPaginationFragment');
32
39
  const usePreloadedQuery = require('./relay-hooks/usePreloadedQuery');
@@ -80,31 +87,49 @@ export type {
80
87
  FetchPolicy,
81
88
  } from 'relay-runtime';
82
89
 
90
+ const {
91
+ ConnectionHandler,
92
+ MutationTypes,
93
+ RangeOperations,
94
+ applyOptimisticMutation,
95
+ commitLocalUpdate,
96
+ commitMutation,
97
+ fetchQuery_DEPRECATED,
98
+ graphql,
99
+ readInlineData,
100
+ requestSubscription,
101
+ fetchQuery,
102
+ } = RelayRuntime;
103
+
104
+ const createFragmentContainer = ReactRelayFragmentContainer.createContainer;
105
+ const createPaginationContainer = ReactRelayPaginationContainer.createContainer;
106
+ const createRefetchContainer = ReactRelayRefetchContainer.createContainer;
107
+
83
108
  /**
84
109
  * The public interface to react-relay.
85
110
  * Currently contains both Relay Hooks and legacy Container APIs.
86
111
  * Will eventually only export the interface from ./hooks.js.
87
112
  */
88
113
  module.exports = {
89
- ConnectionHandler: RelayRuntime.ConnectionHandler,
114
+ ConnectionHandler,
90
115
  QueryRenderer: ReactRelayQueryRenderer,
91
116
  LocalQueryRenderer: ReactRelayLocalQueryRenderer,
92
117
 
93
- MutationTypes: RelayRuntime.MutationTypes,
94
- RangeOperations: RelayRuntime.RangeOperations,
118
+ MutationTypes,
119
+ RangeOperations,
95
120
 
96
121
  ReactRelayContext,
97
122
 
98
- applyOptimisticMutation: RelayRuntime.applyOptimisticMutation,
99
- commitLocalUpdate: RelayRuntime.commitLocalUpdate,
100
- commitMutation: RelayRuntime.commitMutation,
101
- createFragmentContainer: ReactRelayFragmentContainer.createContainer,
102
- createPaginationContainer: ReactRelayPaginationContainer.createContainer,
103
- createRefetchContainer: ReactRelayRefetchContainer.createContainer,
104
- fetchQuery_DEPRECATED: RelayRuntime.fetchQuery_DEPRECATED,
105
- graphql: RelayRuntime.graphql,
106
- readInlineData: RelayRuntime.readInlineData,
107
- requestSubscription: RelayRuntime.requestSubscription,
123
+ applyOptimisticMutation,
124
+ commitLocalUpdate,
125
+ commitMutation,
126
+ createFragmentContainer,
127
+ createPaginationContainer,
128
+ createRefetchContainer,
129
+ fetchQuery_DEPRECATED,
130
+ graphql,
131
+ readInlineData,
132
+ requestSubscription,
108
133
 
109
134
  // Relay Hooks
110
135
  EntryPointContainer: EntryPointContainer,
@@ -112,7 +137,7 @@ module.exports = {
112
137
 
113
138
  ProfilerContext: ProfilerContext,
114
139
 
115
- fetchQuery: RelayRuntime.fetchQuery,
140
+ fetchQuery,
116
141
 
117
142
  loadQuery: loadQuery,
118
143
  loadEntryPoint: loadEntryPoint,
@@ -123,6 +148,7 @@ module.exports = {
123
148
  useEntryPointLoader: useEntryPointLoader,
124
149
  useQueryLoader: useQueryLoader,
125
150
  useMutation: useMutation,
151
+ useMutationAction_EXPERIMENTAL: useMutationAction_EXPERIMENTAL,
126
152
  usePaginationFragment: usePaginationFragment,
127
153
  usePreloadedQuery: usePreloadedQuery,
128
154
  useRefetchableFragment: useRefetchableFragment,
@@ -15,7 +15,7 @@
15
15
  * Determine if a given value is an object that implements the `Environment`
16
16
  * interface defined in `RelayEnvironmentTypes`.
17
17
  */
18
- function isRelayEnvironment(environment: mixed): boolean {
18
+ function isRelayEnvironment(environment: unknown): boolean {
19
19
  return (
20
20
  typeof environment === 'object' &&
21
21
  environment !== null &&
@@ -30,7 +30,7 @@ const Scheduler = require('scheduler/unstable_mock');
30
30
  interface Thenable<+R> {
31
31
  then<U>(
32
32
  onFulfill: (value: R) => void | Thenable<U> | U,
33
- onReject: (error: mixed) => void | Thenable<U> | U,
33
+ onReject: (error: unknown) => void | Thenable<U> | U,
34
34
  ): void | Thenable<U>;
35
35
  }
36
36
 
package/legacy.d.ts ADDED
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import {MappedFragmentProps, RelayPaginationProp, RelayProp, RelayRefetchProp} from './ReactRelayTypes';
9
+ import * as React from 'react';
10
+ import {
11
+ _FragmentRefs,
12
+ _RefType,
13
+ CacheConfig,
14
+ FetchPolicy,
15
+ GraphQLTaggedNode,
16
+ IEnvironment,
17
+ OperationType,
18
+ PageInfo,
19
+ RelayContext,
20
+ Variables,
21
+ } from 'relay-runtime';
22
+
23
+ export { FragmentRef, RelayPaginationProp, RelayProp, RelayRefetchProp } from './ReactRelayTypes';
24
+
25
+ export {
26
+ DataID,
27
+ DeclarativeMutationConfig,
28
+ Disposable,
29
+ FetchPolicy,
30
+ GraphQLTaggedNode,
31
+ // RelayRuntime has two environment exports: one interface, one concrete.
32
+ IEnvironment as Environment,
33
+ MutationType,
34
+ NormalizationSelector,
35
+ OperationDescriptor,
36
+ RangeOperation,
37
+ ReaderSelector,
38
+ RelayContext,
39
+ Snapshot,
40
+ Variables,
41
+ } from 'relay-runtime';
42
+
43
+ /**
44
+ * Legacy react-relay exports.
45
+ * Should prefer using interface defined in ./hooks.js
46
+ */
47
+ export { ConnectionHandler } from 'relay-runtime';
48
+ export interface QueryRendererProps<TOperation extends OperationType> {
49
+ environment: IEnvironment;
50
+ query: GraphQLTaggedNode | null | undefined;
51
+ render: (renderProps: {
52
+ error: Error | null;
53
+ props: TOperation['response'] | null;
54
+ retry: (() => void) | null;
55
+ }) => React.ReactNode;
56
+ variables: TOperation['variables'];
57
+ }
58
+ declare class ReactRelayQueryRenderer<TOperation extends OperationType> extends React.Component<
59
+ {
60
+ cacheConfig?: CacheConfig | null | undefined;
61
+ fetchPolicy?: FetchPolicy | undefined;
62
+ } & QueryRendererProps<TOperation>
63
+ > {}
64
+ export { ReactRelayQueryRenderer as QueryRenderer };
65
+
66
+ declare class ReactRelayLocalQueryRenderer<TOperation extends OperationType> extends React.Component<
67
+ QueryRendererProps<TOperation>
68
+ > {}
69
+ export { ReactRelayLocalQueryRenderer as LocalQueryRenderer };
70
+
71
+ export { MutationTypes } from 'relay-runtime';
72
+ export { RangeOperations } from 'relay-runtime';
73
+
74
+ export const ReactRelayContext: React.Context<RelayContext | null>;
75
+
76
+ export { applyOptimisticMutation } from 'relay-runtime';
77
+ export { commitLocalUpdate } from 'relay-runtime';
78
+ export { commitMutation } from 'relay-runtime';
79
+
80
+ export type ContainerProps<Props> = MappedFragmentProps<Pick<Props, Exclude<keyof Props, 'relay'>>>;
81
+ export type RelayProps<Props> = ContainerProps<Props>; // TODO: validate this
82
+ export type Container<Props> = React.ComponentType<
83
+ ContainerProps<Props> & { componentRef?: ((ref: any) => void) | undefined }
84
+ >;
85
+
86
+ // TODO: validate the bellow three
87
+ export type RelayFragmentContainer<TComponent extends React.ElementType> = React.ComponentType<
88
+ ContainerProps<React.ComponentPropsWithoutRef<TComponent>>
89
+ >;
90
+
91
+ export type RelayPaginationContainer<TComponent extends React.ElementType> = React.ComponentType<
92
+ ContainerProps<React.ComponentPropsWithoutRef<TComponent>>
93
+ >;
94
+
95
+ export type RelayRefetchContainer<TComponent extends React.ElementType> = React.ComponentType<
96
+ ContainerProps<React.ComponentPropsWithoutRef<TComponent>>
97
+ >;
98
+
99
+ type PropsWithoutRelay<C extends keyof React.JSX.IntrinsicElements | React.JSXElementConstructor<any>> =
100
+ React.JSX.LibraryManagedAttributes<C, Omit<React.ComponentProps<C>, 'relay'>>;
101
+
102
+ export function createFragmentContainer<
103
+ C extends React.ComponentType<React.ComponentProps<C> & { relay?: RelayProp | undefined }>,
104
+ >(Component: C, fragmentSpec: Record<string, GraphQLTaggedNode>): Container<PropsWithoutRelay<C>>;
105
+
106
+ export { fetchQuery_DEPRECATED } from 'relay-runtime';
107
+
108
+ export { graphql } from 'relay-runtime';
109
+ export { readInlineData } from 'relay-runtime';
110
+ export { requestSubscription } from 'relay-runtime';
111
+
112
+ export function createPaginationContainer<
113
+ C extends React.ComponentType<React.ComponentProps<C> & { relay: RelayPaginationProp }>,
114
+ >(
115
+ Component: C,
116
+ fragmentSpec: Record<string, GraphQLTaggedNode>,
117
+ connectionConfig: ConnectionConfig<PropsWithoutRelay<C>>,
118
+ ): Container<PropsWithoutRelay<C>>;
119
+
120
+ export function createRefetchContainer<
121
+ C extends React.ComponentType<React.ComponentProps<C> & { relay: RelayRefetchProp }>,
122
+ >(
123
+ Component: C,
124
+ fragmentSpec: Record<string, GraphQLTaggedNode>,
125
+ refetchQuery: GraphQLTaggedNode,
126
+ ): Container<PropsWithoutRelay<C>>;
127
+
128
+ export interface ConnectionConfig<Props = object> {
129
+ direction?: 'backward' | 'forward' | undefined;
130
+ getConnectionFromProps?: ((props: Props) => ConnectionData | null | undefined) | undefined;
131
+ getFragmentVariables?: ((prevVars: Variables, totalCount: number) => Variables) | undefined;
132
+ getVariables: (
133
+ props: Props,
134
+ paginationInfo: { count: number; cursor?: string | null | undefined },
135
+ fragmentVariables: Variables,
136
+ ) => Variables;
137
+ query: GraphQLTaggedNode;
138
+ }
139
+
140
+ interface ConnectionData {
141
+ edges?: readonly any[] | null | undefined;
142
+ pageInfo?: Partial<PageInfo> | null | undefined;
143
+ }
package/legacy.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Relay v20.1.1
2
+ * Relay v21.0.1
3
3
  *
4
4
  * Copyright (c) Meta Platforms, Inc. and affiliates.
5
5
  *
package/legacy.js.flow CHANGED
@@ -11,6 +11,8 @@
11
11
 
12
12
  'use strict';
13
13
 
14
+ /* eslint relay-internal/esm-compatible-cjs: error */
15
+
14
16
  const ReactRelayContext = require('./ReactRelayContext');
15
17
  const ReactRelayFragmentContainer = require('./ReactRelayFragmentContainer');
16
18
  const ReactRelayLocalQueryRenderer = require('./ReactRelayLocalQueryRenderer');
@@ -47,28 +49,45 @@ export type {
47
49
  FetchPolicy,
48
50
  } from 'relay-runtime';
49
51
 
52
+ const {
53
+ ConnectionHandler,
54
+ MutationTypes,
55
+ RangeOperations,
56
+ applyOptimisticMutation,
57
+ commitLocalUpdate,
58
+ commitMutation,
59
+ fetchQuery_DEPRECATED,
60
+ graphql,
61
+ readInlineData,
62
+ requestSubscription,
63
+ } = RelayRuntime;
64
+
65
+ const createFragmentContainer = ReactRelayFragmentContainer.createContainer;
66
+ const createPaginationContainer = ReactRelayPaginationContainer.createContainer;
67
+ const createRefetchContainer = ReactRelayRefetchContainer.createContainer;
68
+
50
69
  /**
51
70
  * Legacy react-relay exports.
52
71
  * Should prefer using interface defined in ./hooks.js
53
72
  */
54
73
  module.exports = {
55
- ConnectionHandler: RelayRuntime.ConnectionHandler,
74
+ ConnectionHandler,
56
75
  QueryRenderer: ReactRelayQueryRenderer,
57
76
  LocalQueryRenderer: ReactRelayLocalQueryRenderer,
58
77
 
59
- MutationTypes: RelayRuntime.MutationTypes,
60
- RangeOperations: RelayRuntime.RangeOperations,
78
+ MutationTypes,
79
+ RangeOperations,
61
80
 
62
81
  ReactRelayContext,
63
82
 
64
- applyOptimisticMutation: RelayRuntime.applyOptimisticMutation,
65
- commitLocalUpdate: RelayRuntime.commitLocalUpdate,
66
- commitMutation: RelayRuntime.commitMutation,
67
- createFragmentContainer: ReactRelayFragmentContainer.createContainer,
68
- createPaginationContainer: ReactRelayPaginationContainer.createContainer,
69
- createRefetchContainer: ReactRelayRefetchContainer.createContainer,
70
- fetchQuery_DEPRECATED: RelayRuntime.fetchQuery_DEPRECATED,
71
- graphql: RelayRuntime.graphql,
72
- readInlineData: RelayRuntime.readInlineData,
73
- requestSubscription: RelayRuntime.requestSubscription,
83
+ applyOptimisticMutation,
84
+ commitLocalUpdate,
85
+ commitMutation,
86
+ createFragmentContainer,
87
+ createPaginationContainer,
88
+ createRefetchContainer,
89
+ fetchQuery_DEPRECATED,
90
+ graphql,
91
+ readInlineData,
92
+ requestSubscription,
74
93
  };
@@ -59,8 +59,8 @@ function createContainerWithFragments(Component, fragments) {
59
59
  resolver = createFragmentSpecResolver(relayContext, containerName, fragments, nextProps, rootIsQueryRenderer);
60
60
  return {
61
61
  data: resolver.resolve(),
62
- prevPropsContext: relayContext,
63
62
  prevProps: nextProps,
63
+ prevPropsContext: relayContext,
64
64
  relayProp: getRelayProp(relayContext.environment),
65
65
  resolver: resolver
66
66
  };
@@ -77,8 +77,8 @@ function findConnectionMetadata(fragments) {
77
77
  }
78
78
  function toObserver(observerOrCallback) {
79
79
  return typeof observerOrCallback === 'function' ? {
80
- error: observerOrCallback,
81
80
  complete: observerOrCallback,
81
+ error: observerOrCallback,
82
82
  unsubscribe: function unsubscribe(subscription) {
83
83
  typeof observerOrCallback === 'function' && observerOrCallback();
84
84
  }
@@ -173,9 +173,9 @@ function createContainerWithFragments(Component, fragments, connectionConfig) {
173
173
  _this._resolver = createFragmentSpecResolver(relayContext, containerName, fragments, props, rootIsQueryRenderer, _this._handleFragmentDataUpdate);
174
174
  }
175
175
  _this.state = {
176
+ contextForChildren: relayContext,
176
177
  data: _this._resolver.resolve(),
177
178
  prevContext: relayContext,
178
- contextForChildren: relayContext,
179
179
  relayProp: _this._buildRelayProp(relayContext),
180
180
  resolverGeneration: 0
181
181
  };
@@ -217,8 +217,8 @@ function createContainerWithFragments(Component, fragments, connectionConfig) {
217
217
  }
218
218
  this.setState(function (prevState) {
219
219
  return {
220
- prevContext: relayContext,
221
220
  contextForChildren: relayContext,
221
+ prevContext: relayContext,
222
222
  relayProp: _this2._buildRelayProp(relayContext),
223
223
  resolverGeneration: prevState.resolverGeneration + 1
224
224
  };
@@ -258,11 +258,11 @@ function createContainerWithFragments(Component, fragments, connectionConfig) {
258
258
  };
259
259
  _proto._buildRelayProp = function _buildRelayProp(relayContext) {
260
260
  return {
261
+ environment: relayContext.environment,
261
262
  hasMore: this._hasMore,
262
263
  isLoading: this._isLoading,
263
264
  loadMore: this._loadMore,
264
- refetchConnection: this._refetchConnection,
265
- environment: relayContext.environment
265
+ refetchConnection: this._refetchConnection
266
266
  };
267
267
  };
268
268
  _proto._rerenderIfStoreHasChanged = function _rerenderIfStoreHasChanged() {
@@ -373,10 +373,10 @@ function createContainerWithFragments(Component, fragments, connectionConfig) {
373
373
  var nextData = _this3._resolver.resolve();
374
374
  if (!areEqual(prevData, nextData)) {
375
375
  _this3.setState({
376
- data: nextData,
377
376
  contextForChildren: {
378
377
  environment: _this3.props.__relayContext.environment
379
- }
378
+ },
379
+ data: nextData
380
380
  }, complete);
381
381
  } else {
382
382
  complete();
@@ -401,8 +401,8 @@ function createContainerWithFragments(Component, fragments, connectionConfig) {
401
401
  });
402
402
  });
403
403
  })["do"]({
404
- error: cleanup,
405
404
  complete: cleanup,
405
+ error: cleanup,
406
406
  unsubscribe: cleanup
407
407
  }).subscribe(observer || {});
408
408
  this._refetchSubscription = this._isARequestInFlight ? refetchSubscription : null;
@@ -63,8 +63,8 @@ function createContainerWithFragments(Component, fragments, taggedNode) {
63
63
  cacheConfig.metadata = options === null || options === void 0 ? void 0 : options.metadata;
64
64
  }
65
65
  var observer = typeof observerOrCallback === 'function' ? {
66
- next: observerOrCallback,
67
- error: observerOrCallback
66
+ error: observerOrCallback,
67
+ next: observerOrCallback
68
68
  } : observerOrCallback || {};
69
69
  var query = getRequest(taggedNode);
70
70
  var operation = createOperationDescriptor(query, fetchVariables, cacheConfig);
@@ -76,10 +76,10 @@ function createContainerWithFragments(Component, fragments, taggedNode) {
76
76
  _this.state.resolver.setVariables(fragmentVariables, operation.request.node);
77
77
  _this.setState(function (latestState) {
78
78
  return {
79
- data: latestState.resolver.resolve(),
80
79
  contextForChildren: {
81
80
  environment: _this.props.__relayContext.environment
82
- }
81
+ },
82
+ data: latestState.resolver.resolve()
83
83
  };
84
84
  }, function () {
85
85
  observer.next && observer.next();
@@ -98,10 +98,10 @@ function createContainerWithFragments(Component, fragments, taggedNode) {
98
98
  return Observable.create(function (sink) {
99
99
  return _this.setState(function (latestState) {
100
100
  return {
101
- data: latestState.resolver.resolve(),
102
101
  contextForChildren: {
103
102
  environment: _this.props.__relayContext.environment
104
- }
103
+ },
104
+ data: latestState.resolver.resolve()
105
105
  };
106
106
  }, function () {
107
107
  sink.next();
@@ -129,11 +129,11 @@ function createContainerWithFragments(Component, fragments, taggedNode) {
129
129
  _this._refetchSubscription = null;
130
130
  var resolver = createFragmentSpecResolver(relayContext, containerName, fragments, props, rootIsQueryRenderer);
131
131
  _this.state = {
132
+ contextForChildren: relayContext,
132
133
  data: resolver.resolve(),
133
134
  localVariables: null,
134
135
  prevProps: props,
135
136
  prevPropsContext: relayContext,
136
- contextForChildren: relayContext,
137
137
  relayProp: getRelayProp(relayContext.environment, _this._refetch),
138
138
  resolver: resolver
139
139
  };
@@ -168,11 +168,11 @@ function createContainerWithFragments(Component, fragments, taggedNode) {
168
168
  if (prevState.prevPropsContext.environment !== relayContext.environment || !areEqual(prevRootVariables, nextRootVariables) || !areEqual(prevIDs, nextIDs)) {
169
169
  resolver = createFragmentSpecResolver(relayContext, containerName, fragments, nextProps, rootIsQueryRenderer);
170
170
  return {
171
+ contextForChildren: relayContext,
171
172
  data: resolver.resolve(),
172
173
  localVariables: null,
173
174
  prevProps: nextProps,
174
175
  prevPropsContext: relayContext,
175
- contextForChildren: relayContext,
176
176
  relayProp: getRelayProp(relayContext.environment, prevState.relayProp.refetch),
177
177
  resolver: resolver
178
178
  };