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.
- package/ReactRelayContext.js +1 -1
- package/ReactRelayContext.js.flow +2 -2
- package/ReactRelayFragmentContainer.js.flow +8 -9
- package/ReactRelayLocalQueryRenderer.js.flow +11 -3
- package/ReactRelayLoggingContext.js.flow +3 -3
- package/ReactRelayPaginationContainer.js.flow +32 -25
- package/ReactRelayQueryFetcher.js.flow +1 -1
- package/ReactRelayQueryRenderer.js.flow +2 -2
- package/ReactRelayQueryRendererContext.js.flow +2 -2
- package/ReactRelayRefetchContainer.js.flow +17 -14
- package/ReactRelayTestMocker.js.flow +10 -10
- package/ReactRelayTypes.d.ts +377 -0
- package/ReactRelayTypes.js.flow +47 -43
- package/RelayContext.js.flow +3 -3
- package/__flowtests__/ReactRelayFragmentContainer-flowtest.js.flow +11 -11
- package/__flowtests__/ReactRelayPaginationContainer-flowtest.js.flow +5 -5
- package/__flowtests__/ReactRelayRefetchContainer-flowtest.js.flow +5 -5
- package/__flowtests__/RelayModern-flowtest.js.flow +32 -32
- package/__flowtests__/RelayModernFlowtest_users.graphql.js.flow +1 -1
- package/__flowtests__/__generated__/ReactRelayFragmentContainerFlowtest_viewer.graphql.js.flow +3 -4
- package/__flowtests__/__generated__/ReactRelayFragmentContainerFlowtest_viewer2.graphql.js.flow +3 -4
- package/__flowtests__/__generated__/ReactRelayPaginationContainerFlowtestQuery.graphql.js.flow +9 -10
- package/__flowtests__/__generated__/ReactRelayPaginationContainerFlowtest_viewer.graphql.js.flow +4 -5
- package/__flowtests__/__generated__/ReactRelayRefetchContainerFlowtestQuery.graphql.js.flow +9 -10
- package/__flowtests__/__generated__/ReactRelayRefetchContainerFlowtest_viewer.graphql.js.flow +4 -5
- package/__flowtests__/__generated__/RelayModernFlowtest_badref.graphql.js.flow +3 -4
- package/__flowtests__/__generated__/RelayModernFlowtest_notref.graphql.js.flow +3 -4
- package/__flowtests__/__generated__/RelayModernFlowtest_user.graphql.js.flow +3 -4
- package/__flowtests__/__generated__/RelayModernFlowtest_users.graphql.js.flow +5 -6
- package/buildReactRelayContainer.js.flow +5 -5
- package/getRootVariablesForFragments.js.flow +1 -1
- package/hooks.d.ts +89 -0
- package/hooks.js +1 -1
- package/hooks.js.flow +23 -8
- package/index.d.ts +9 -0
- package/index.js +1 -1
- package/index.js.flow +40 -14
- package/isRelayEnvironment.js.flow +1 -1
- package/jest-react/internalAct.js.flow +1 -1
- package/legacy.d.ts +143 -0
- package/legacy.js +1 -1
- package/legacy.js.flow +32 -13
- package/lib/ReactRelayFragmentContainer.js +1 -1
- package/lib/ReactRelayPaginationContainer.js +8 -8
- package/lib/ReactRelayRefetchContainer.js +8 -8
- package/lib/ReactRelayTestMocker.js +5 -5
- package/lib/hooks.js +18 -8
- package/lib/index.js +30 -14
- package/lib/legacy.js +26 -13
- package/lib/relay-hooks/legacy/useBlockingPaginationFragment.js +5 -5
- package/lib/relay-hooks/legacy/useRefetchableFragmentNode.js +34 -34
- package/lib/relay-hooks/loadEntryPoint.js +2 -2
- package/lib/relay-hooks/loadQuery.js +14 -14
- package/lib/relay-hooks/preloadQuery_DEPRECATED.js +10 -10
- package/lib/relay-hooks/readFragmentInternal.js +6 -6
- package/lib/relay-hooks/rsc/serverFetchQuery.js +20 -0
- package/lib/relay-hooks/rsc/serverPreloadQuery.js +31 -0
- package/lib/relay-hooks/rsc/serverReadFragment.js +15 -0
- package/lib/relay-hooks/rsc/useQueryFromServer.js +62 -0
- package/lib/relay-hooks/useFragmentInternal_CURRENT.js +49 -25
- package/lib/relay-hooks/useFragmentInternal_EXPERIMENTAL.js +81 -44
- package/lib/relay-hooks/useLazyLoadQueryNode.js +32 -19
- package/lib/relay-hooks/useMutation.js +6 -14
- package/lib/relay-hooks/useMutationAction_EXPERIMENTAL.js +26 -0
- package/lib/relay-hooks/usePreloadedQuery.js +52 -47
- package/lib/relay-hooks/useQueryLoader.js +2 -2
- package/lib/relay-hooks/useQueryLoader_EXPERIMENTAL.js +2 -2
- package/lib/relay-hooks/useRefetchableFragmentInternal.js +31 -31
- package/lib/rsc-client_EXPERIMENTAL.js +7 -0
- package/lib/rsc_EXPERIMENTAL.js +43 -0
- package/multi-actor/ActorChange.js.flow +1 -1
- package/package.json +3 -2
- package/relay-hooks/EntryPointContainer.react.d.ts +22 -0
- package/relay-hooks/EntryPointContainer.react.js.flow +6 -6
- package/relay-hooks/EntryPointTypes.flow.js.flow +106 -108
- package/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js.flow +23 -21
- package/relay-hooks/MatchContainer.d.ts +95 -0
- package/relay-hooks/MatchContainer.js.flow +17 -11
- package/relay-hooks/NestedRelayEntryPointBuilderUtils.js.flow +3 -9
- package/relay-hooks/ProfilerContext.d.ts +18 -0
- package/relay-hooks/QueryResource.js.flow +9 -9
- package/relay-hooks/RelayEnvironmentProvider.d.ts +16 -0
- package/relay-hooks/RelayEnvironmentProvider.js.flow +2 -2
- package/relay-hooks/__flowtests__/EntryPointTypes/EntryPointElementConfig-flowtest.js.flow +6 -6
- package/relay-hooks/__flowtests__/EntryPointTypes/ExtractQueryTypes-flowtest.js.flow +50 -3
- package/relay-hooks/__flowtests__/EntryPointTypes/NestedEntrypoints-flowtest.js.flow +9 -9
- package/relay-hooks/__flowtests__/__generated__/useFragmentFlowtest_user.graphql.js.flow +3 -4
- package/relay-hooks/__flowtests__/__generated__/useFragmentFlowtest_users.graphql.js.flow +5 -6
- package/relay-hooks/__flowtests__/useBlockingPaginationFragment-flowtest.js.flow +27 -32
- package/relay-hooks/__flowtests__/useFragment-flowtest.js.flow +25 -25
- package/relay-hooks/__flowtests__/usePaginationFragment-flowtest.js.flow +26 -32
- package/relay-hooks/__flowtests__/useRefetchableFragment-flowtest.js.flow +23 -30
- package/relay-hooks/__flowtests__/utils.js.flow +17 -17
- package/relay-hooks/getConnectionState.js.flow +2 -2
- package/relay-hooks/legacy/FragmentResource.js.flow +13 -13
- package/relay-hooks/legacy/useBlockingPaginationFragment.js.flow +28 -25
- package/relay-hooks/legacy/useFragmentNode.js.flow +4 -4
- package/relay-hooks/legacy/useRefetchableFragmentNode.js.flow +79 -81
- package/relay-hooks/loadEntryPoint.d.ts +14 -0
- package/relay-hooks/loadEntryPoint.js.flow +15 -13
- package/relay-hooks/loadQuery.d.ts +20 -0
- package/relay-hooks/loadQuery.js.flow +19 -19
- package/relay-hooks/preloadQuery_DEPRECATED.js.flow +16 -13
- package/relay-hooks/prepareEntryPoint_DEPRECATED.js.flow +7 -7
- package/relay-hooks/readFragmentInternal.js.flow +11 -11
- package/relay-hooks/rsc/serverFetchQuery.js.flow +31 -0
- package/relay-hooks/rsc/serverPreloadQuery.js.flow +69 -0
- package/relay-hooks/rsc/serverReadFragment.js.flow +33 -0
- package/relay-hooks/rsc/useQueryFromServer.js.flow +135 -0
- package/relay-hooks/useClientQuery.d.ts +16 -0
- package/relay-hooks/useClientQuery.js.flow +2 -2
- package/relay-hooks/useEntryPointLoader.d.ts +21 -0
- package/relay-hooks/useEntryPointLoader.js.flow +11 -11
- package/relay-hooks/useFragment.d.ts +36 -0
- package/relay-hooks/useFragment.js.flow +8 -8
- package/relay-hooks/useFragmentInternal.js.flow +1 -1
- package/relay-hooks/useFragmentInternal_CURRENT.js.flow +54 -22
- package/relay-hooks/useFragmentInternal_EXPERIMENTAL.js.flow +95 -46
- package/relay-hooks/useIsOperationNodeActive.js.flow +1 -1
- package/relay-hooks/useIsParentQueryActive.js.flow +5 -1
- package/relay-hooks/useLazyLoadQuery.d.ts +19 -0
- package/relay-hooks/useLazyLoadQuery.js.flow +14 -7
- package/relay-hooks/useLazyLoadQueryNode.js.flow +67 -28
- package/relay-hooks/useLoadMoreFunction.d.ts +56 -0
- package/relay-hooks/useLoadMoreFunction.js.flow +7 -6
- package/relay-hooks/useLoadMoreFunction_EXPERIMENTAL.js.flow +5 -5
- package/relay-hooks/useMemoVariables.js.flow +1 -1
- package/relay-hooks/useMutation.d.ts +36 -0
- package/relay-hooks/useMutation.js.flow +9 -17
- package/relay-hooks/useMutationAction_EXPERIMENTAL.js.flow +68 -0
- package/relay-hooks/usePaginationFragment.d.ts +33 -0
- package/relay-hooks/usePaginationFragment.js.flow +19 -11
- package/relay-hooks/usePrefetchableForwardPaginationFragment.js.flow +23 -18
- package/relay-hooks/usePrefetchableForwardPaginationFragment_EXPERIMENTAL.js.flow +23 -18
- package/relay-hooks/usePreloadedQuery.d.ts +17 -0
- package/relay-hooks/usePreloadedQuery.js.flow +119 -85
- package/relay-hooks/useQueryLoader.d.ts +33 -0
- package/relay-hooks/useQueryLoader.js.flow +28 -24
- package/relay-hooks/useQueryLoader_EXPERIMENTAL.js.flow +10 -10
- package/relay-hooks/useRefetchableFragment.d.ts +23 -0
- package/relay-hooks/useRefetchableFragment.js.flow +20 -11
- package/relay-hooks/useRefetchableFragmentInternal.js.flow +77 -79
- package/relay-hooks/useRelayEnvironment.d.ts +10 -0
- package/relay-hooks/useRelayLoggingContext.js.flow +1 -1
- package/relay-hooks/useSubscribeToInvalidationState.d.ts +19 -0
- package/relay-hooks/useSubscribeToInvalidationState.js.flow +1 -1
- package/relay-hooks/useSubscription.d.ts +14 -0
- package/relay-hooks/useSubscription.js.flow +1 -1
- package/rsc-client_EXPERIMENTAL.d.ts +17 -0
- package/rsc-client_EXPERIMENTAL.js +10 -0
- package/rsc-client_EXPERIMENTAL.js.flow +23 -0
- package/rsc_EXPERIMENTAL.d.ts +48 -0
- package/rsc_EXPERIMENTAL.js +10 -0
- 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
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
|
|
84
|
+
ConnectionHandler,
|
|
71
85
|
|
|
72
|
-
applyOptimisticMutation
|
|
73
|
-
commitLocalUpdate
|
|
74
|
-
commitMutation
|
|
75
|
-
graphql
|
|
76
|
-
readInlineData
|
|
77
|
-
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
|
|
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
package/index.js
CHANGED
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
|
|
114
|
+
ConnectionHandler,
|
|
90
115
|
QueryRenderer: ReactRelayQueryRenderer,
|
|
91
116
|
LocalQueryRenderer: ReactRelayLocalQueryRenderer,
|
|
92
117
|
|
|
93
|
-
MutationTypes
|
|
94
|
-
RangeOperations
|
|
118
|
+
MutationTypes,
|
|
119
|
+
RangeOperations,
|
|
95
120
|
|
|
96
121
|
ReactRelayContext,
|
|
97
122
|
|
|
98
|
-
applyOptimisticMutation
|
|
99
|
-
commitLocalUpdate
|
|
100
|
-
commitMutation
|
|
101
|
-
createFragmentContainer
|
|
102
|
-
createPaginationContainer
|
|
103
|
-
createRefetchContainer
|
|
104
|
-
fetchQuery_DEPRECATED
|
|
105
|
-
graphql
|
|
106
|
-
readInlineData
|
|
107
|
-
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
|
|
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:
|
|
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:
|
|
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
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
|
|
74
|
+
ConnectionHandler,
|
|
56
75
|
QueryRenderer: ReactRelayQueryRenderer,
|
|
57
76
|
LocalQueryRenderer: ReactRelayLocalQueryRenderer,
|
|
58
77
|
|
|
59
|
-
MutationTypes
|
|
60
|
-
RangeOperations
|
|
78
|
+
MutationTypes,
|
|
79
|
+
RangeOperations,
|
|
61
80
|
|
|
62
81
|
ReactRelayContext,
|
|
63
82
|
|
|
64
|
-
applyOptimisticMutation
|
|
65
|
-
commitLocalUpdate
|
|
66
|
-
commitMutation
|
|
67
|
-
createFragmentContainer
|
|
68
|
-
createPaginationContainer
|
|
69
|
-
createRefetchContainer
|
|
70
|
-
fetchQuery_DEPRECATED
|
|
71
|
-
graphql
|
|
72
|
-
readInlineData
|
|
73
|
-
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
|
-
|
|
67
|
-
|
|
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
|
};
|