react-relay 14.1.0 → 16.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.
- package/ReactRelayContainerUtils.js.flow +1 -0
- package/ReactRelayContext.js +1 -1
- package/ReactRelayContext.js.flow +1 -0
- package/ReactRelayFragmentContainer.js.flow +6 -2
- package/ReactRelayFragmentMockRenderer.js.flow +1 -0
- package/ReactRelayLocalQueryRenderer.js.flow +5 -3
- package/ReactRelayPaginationContainer.js.flow +21 -12
- package/ReactRelayQueryFetcher.js.flow +20 -10
- package/ReactRelayQueryRenderer.js.flow +15 -11
- package/ReactRelayQueryRendererContext.js.flow +1 -0
- package/ReactRelayRefetchContainer.js.flow +9 -5
- package/ReactRelayTestMocker.js.flow +3 -1
- package/ReactRelayTypes.js.flow +2 -0
- package/RelayContext.js.flow +1 -0
- package/__flowtests__/ReactRelayFragmentContainer-flowtest.js.flow +2 -1
- package/__flowtests__/ReactRelayPaginationContainer-flowtest.js.flow +1 -0
- package/__flowtests__/ReactRelayRefetchContainer-flowtest.js.flow +1 -0
- package/__flowtests__/RelayModern-flowtest.js.flow +1 -0
- package/__flowtests__/RelayModernFlowtest_badref.graphql.js.flow +1 -0
- package/__flowtests__/RelayModernFlowtest_notref.graphql.js.flow +1 -0
- package/__flowtests__/RelayModernFlowtest_user.graphql.js.flow +1 -0
- package/__flowtests__/RelayModernFlowtest_users.graphql.js.flow +1 -0
- package/__flowtests__/__generated__/ReactRelayFragmentContainerFlowtest_viewer.graphql.js.flow +3 -1
- package/__flowtests__/__generated__/ReactRelayFragmentContainerFlowtest_viewer2.graphql.js.flow +3 -1
- package/__flowtests__/__generated__/ReactRelayPaginationContainerFlowtestQuery.graphql.js.flow +4 -2
- package/__flowtests__/__generated__/ReactRelayPaginationContainerFlowtest_viewer.graphql.js.flow +3 -1
- package/__flowtests__/__generated__/ReactRelayRefetchContainerFlowtestQuery.graphql.js.flow +4 -2
- package/__flowtests__/__generated__/ReactRelayRefetchContainerFlowtest_viewer.graphql.js.flow +3 -1
- package/__flowtests__/__generated__/RelayModernFlowtest_badref.graphql.js.flow +4 -2
- package/__flowtests__/__generated__/RelayModernFlowtest_notref.graphql.js.flow +4 -2
- package/__flowtests__/__generated__/RelayModernFlowtest_user.graphql.js.flow +3 -1
- package/__flowtests__/__generated__/RelayModernFlowtest_users.graphql.js.flow +3 -1
- package/assertFragmentMap.js.flow +1 -0
- package/buildReactRelayContainer.js.flow +10 -6
- package/getRootVariablesForFragments.js.flow +1 -1
- package/hooks.js +1 -1
- package/hooks.js.flow +4 -0
- package/index.js +1 -1
- package/index.js.flow +4 -0
- package/isRelayEnvironment.js.flow +1 -0
- package/jest-react/enqueueTask.js.flow +1 -1
- package/jest-react/index.js.flow +1 -1
- package/jest-react/internalAct.js.flow +1 -1
- package/legacy.js +1 -1
- package/legacy.js.flow +1 -0
- package/lib/ReactRelayContainerUtils.js +0 -11
- package/lib/ReactRelayContext.js +1 -12
- package/lib/ReactRelayFragmentContainer.js +23 -122
- package/lib/ReactRelayFragmentMockRenderer.js +0 -12
- package/lib/ReactRelayLocalQueryRenderer.js +12 -41
- package/lib/ReactRelayPaginationContainer.js +45 -341
- package/lib/ReactRelayQueryFetcher.js +36 -111
- package/lib/ReactRelayQueryRenderer.js +29 -137
- package/lib/ReactRelayQueryRendererContext.js +0 -10
- package/lib/ReactRelayRefetchContainer.js +33 -166
- package/lib/ReactRelayTestMocker.js +18 -128
- package/lib/ReactRelayTypes.js +0 -9
- package/lib/RelayContext.js +0 -23
- package/lib/assertFragmentMap.js +0 -16
- package/lib/buildReactRelayContainer.js +7 -41
- package/lib/getRootVariablesForFragments.js +2 -19
- package/lib/hooks.js +3 -30
- package/lib/index.js +3 -39
- package/lib/isRelayEnvironment.js +1 -16
- package/lib/jest-react/enqueueTask.js +1 -25
- package/lib/jest-react/index.js +0 -1
- package/lib/jest-react/internalAct.js +2 -51
- package/lib/legacy.js +0 -20
- package/lib/multi-actor/ActorChange.js +0 -14
- package/lib/multi-actor/index.js +0 -10
- package/lib/multi-actor/useRelayActorEnvironment.js +2 -16
- package/lib/relay-hooks/EntryPointContainer.react.js +7 -23
- package/lib/relay-hooks/EntryPointTypes.flow.js +0 -10
- package/lib/relay-hooks/FragmentResource.js +130 -280
- package/lib/relay-hooks/HooksImplementation.js +0 -14
- package/lib/relay-hooks/InternalLogger.js +0 -11
- package/lib/relay-hooks/LRUCache.js +0 -39
- package/lib/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js +27 -65
- package/lib/relay-hooks/MatchContainer.js +9 -111
- package/lib/relay-hooks/NestedRelayEntryPointBuilderUtils.js +9 -0
- package/lib/relay-hooks/ProfilerContext.js +0 -14
- package/lib/relay-hooks/QueryResource.js +14 -149
- package/lib/relay-hooks/RelayEnvironmentProvider.js +3 -17
- package/lib/relay-hooks/SuspenseResource.js +2 -59
- package/lib/relay-hooks/loadEntryPoint.js +10 -45
- package/lib/relay-hooks/loadQuery.js +29 -169
- package/lib/relay-hooks/preloadQuery_DEPRECATED.js +8 -58
- package/lib/relay-hooks/prepareEntryPoint_DEPRECATED.js +6 -24
- package/lib/relay-hooks/react-cache/RelayReactCache.js +4 -20
- package/lib/relay-hooks/react-cache/getQueryResultOrFetchQuery_REACT_CACHE.js +13 -102
- package/lib/relay-hooks/react-cache/readFragmentInternal_REACT_CACHE.js +18 -75
- package/lib/relay-hooks/react-cache/useFragmentInternal_REACT_CACHE.js +79 -222
- package/lib/relay-hooks/react-cache/useFragment_REACT_CACHE.js +3 -27
- package/lib/relay-hooks/react-cache/useLazyLoadQuery_REACT_CACHE.js +11 -33
- package/lib/relay-hooks/react-cache/usePaginationFragment_REACT_CACHE.js +62 -85
- package/lib/relay-hooks/react-cache/usePreloadedQuery_REACT_CACHE.js +20 -63
- package/lib/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js +53 -179
- package/lib/relay-hooks/react-cache/useRefetchableFragment_REACT_CACHE.js +5 -27
- package/lib/relay-hooks/useBlockingPaginationFragment.js +58 -121
- package/lib/relay-hooks/useClientQuery.js +0 -21
- package/lib/relay-hooks/useEntryPointLoader.js +12 -100
- package/lib/relay-hooks/useFetchTrackingRef.js +6 -33
- package/lib/relay-hooks/useFragment.js +5 -32
- package/lib/relay-hooks/useFragmentNode.js +14 -55
- package/lib/relay-hooks/useIsMountedRef.js +2 -14
- package/lib/relay-hooks/useIsOperationNodeActive.js +6 -29
- package/lib/relay-hooks/useIsParentQueryActive.js +1 -15
- package/lib/relay-hooks/useLazyLoadQuery.js +2 -23
- package/lib/relay-hooks/useLazyLoadQueryNode.js +18 -63
- package/lib/relay-hooks/useLoadMoreFunction.js +44 -100
- package/lib/relay-hooks/useMemoOperationDescriptor.js +4 -23
- package/lib/relay-hooks/useMemoVariables.js +8 -43
- package/lib/relay-hooks/useMutation.js +6 -34
- package/lib/relay-hooks/usePaginationFragment.js +49 -89
- package/lib/relay-hooks/usePreloadedQuery.js +10 -54
- package/lib/relay-hooks/useQueryLoader.js +18 -116
- package/lib/relay-hooks/useRefetchableFragment.js +4 -30
- package/lib/relay-hooks/useRefetchableFragmentNode.js +58 -184
- package/lib/relay-hooks/useRelayEnvironment.js +2 -16
- package/lib/relay-hooks/useStaticFragmentNodeWarning.js +2 -20
- package/lib/relay-hooks/useSubscribeToInvalidationState.js +3 -28
- package/lib/relay-hooks/useSubscription.js +3 -22
- package/lib/relay-hooks/useUnsafeRef_DEPRECATED.js +12 -0
- package/multi-actor/ActorChange.js.flow +1 -1
- package/multi-actor/index.js.flow +1 -1
- package/multi-actor/useRelayActorEnvironment.js.flow +2 -2
- package/package.json +2 -2
- package/react-relay-hooks.js +2 -2
- package/react-relay-hooks.min.js +2 -2
- package/react-relay-legacy.js +2 -2
- package/react-relay-legacy.min.js +2 -2
- package/react-relay.js +2 -2
- package/react-relay.min.js +2 -2
- package/relay-hooks/EntryPointContainer.react.js.flow +6 -1
- package/relay-hooks/EntryPointTypes.flow.js.flow +23 -20
- package/relay-hooks/FragmentResource.js.flow +148 -34
- package/relay-hooks/HooksImplementation.js.flow +1 -1
- package/relay-hooks/InternalLogger.js.flow +1 -1
- package/relay-hooks/LRUCache.js.flow +1 -1
- package/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js.flow +19 -10
- package/relay-hooks/MatchContainer.js.flow +1 -1
- package/relay-hooks/NestedRelayEntryPointBuilderUtils.js.flow +51 -0
- package/relay-hooks/ProfilerContext.js.flow +1 -1
- package/relay-hooks/QueryResource.js.flow +25 -5
- package/relay-hooks/RelayEnvironmentProvider.js.flow +2 -2
- package/relay-hooks/SuspenseResource.js.flow +1 -1
- package/relay-hooks/__flowtests__/EntryPointTypes/EntryPointElementConfig-flowtest.js.flow +3 -1
- package/relay-hooks/__flowtests__/EntryPointTypes/NestedEntrypoints-flowtest.js.flow +9 -7
- package/relay-hooks/__flowtests__/__generated__/useFragmentFlowtest_user.graphql.js.flow +3 -1
- package/relay-hooks/__flowtests__/__generated__/useFragmentFlowtest_users.graphql.js.flow +3 -1
- package/relay-hooks/__flowtests__/useBlockingPaginationFragment-flowtest.js.flow +40 -33
- package/relay-hooks/__flowtests__/useFragment-flowtest.js.flow +1 -1
- package/relay-hooks/__flowtests__/usePaginationFragment-flowtest.js.flow +38 -32
- package/relay-hooks/__flowtests__/useRefetchableFragment-flowtest.js.flow +20 -18
- package/relay-hooks/__flowtests__/utils.js.flow +13 -2
- package/relay-hooks/loadEntryPoint.js.flow +15 -8
- package/relay-hooks/loadQuery.js.flow +32 -8
- package/relay-hooks/preloadQuery_DEPRECATED.js.flow +5 -6
- package/relay-hooks/prepareEntryPoint_DEPRECATED.js.flow +17 -10
- package/relay-hooks/react-cache/RelayReactCache.js.flow +1 -1
- package/relay-hooks/react-cache/getQueryResultOrFetchQuery_REACT_CACHE.js.flow +4 -4
- package/relay-hooks/react-cache/readFragmentInternal_REACT_CACHE.js.flow +5 -4
- package/relay-hooks/react-cache/useFragmentInternal_REACT_CACHE.js.flow +32 -14
- package/relay-hooks/react-cache/useFragment_REACT_CACHE.js.flow +4 -10
- package/relay-hooks/react-cache/useLazyLoadQuery_REACT_CACHE.js.flow +1 -1
- package/relay-hooks/react-cache/usePaginationFragment_REACT_CACHE.js.flow +39 -49
- package/relay-hooks/react-cache/usePreloadedQuery_REACT_CACHE.js.flow +1 -2
- package/relay-hooks/react-cache/useRefetchableFragmentInternal_REACT_CACHE.js.flow +29 -16
- package/relay-hooks/react-cache/useRefetchableFragment_REACT_CACHE.js.flow +17 -33
- package/relay-hooks/useBlockingPaginationFragment.js.flow +85 -58
- package/relay-hooks/useClientQuery.js.flow +3 -3
- package/relay-hooks/useEntryPointLoader.js.flow +10 -6
- package/relay-hooks/useFetchTrackingRef.js.flow +5 -4
- package/relay-hooks/useFragment.js.flow +2 -2
- package/relay-hooks/useFragmentNode.js.flow +7 -6
- package/relay-hooks/useIsMountedRef.js.flow +1 -1
- package/relay-hooks/useIsOperationNodeActive.js.flow +1 -1
- package/relay-hooks/useIsParentQueryActive.js.flow +1 -1
- package/relay-hooks/useLazyLoadQuery.js.flow +2 -2
- package/relay-hooks/useLazyLoadQueryNode.js.flow +2 -2
- package/relay-hooks/useLoadMoreFunction.js.flow +27 -16
- package/relay-hooks/useMemoOperationDescriptor.js.flow +3 -3
- package/relay-hooks/useMemoVariables.js.flow +13 -29
- package/relay-hooks/useMutation.js.flow +30 -13
- package/relay-hooks/usePaginationFragment.js.flow +55 -54
- package/relay-hooks/usePreloadedQuery.js.flow +47 -22
- package/relay-hooks/useQueryLoader.js.flow +78 -21
- package/relay-hooks/useRefetchableFragment.js.flow +65 -33
- package/relay-hooks/useRefetchableFragmentNode.js.flow +38 -17
- package/relay-hooks/useRelayEnvironment.js.flow +2 -2
- package/relay-hooks/useStaticFragmentNodeWarning.js.flow +3 -3
- package/relay-hooks/useSubscribeToInvalidationState.js.flow +2 -2
- package/relay-hooks/useSubscription.js.flow +1 -1
- package/relay-hooks/useUnsafeRef_DEPRECATED.js.flow +25 -0
- package/lib/readContext.js +0 -27
- package/readContext.js.flow +0 -29
|
@@ -1,58 +1,34 @@
|
|
|
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
|
-
* @emails oncall+relay
|
|
8
|
-
*
|
|
9
|
-
* @format
|
|
10
|
-
*/
|
|
11
1
|
'use strict';
|
|
12
2
|
|
|
13
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
|
14
|
-
|
|
15
4
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
16
|
-
|
|
17
5
|
var _require = require('./FragmentResource'),
|
|
18
|
-
|
|
19
|
-
|
|
6
|
+
getFragmentResourceForEnvironment = _require.getFragmentResourceForEnvironment;
|
|
20
7
|
var ProfilerContext = require('./ProfilerContext');
|
|
21
|
-
|
|
22
8
|
var _require2 = require('./QueryResource'),
|
|
23
|
-
|
|
24
|
-
|
|
9
|
+
getQueryResourceForEnvironment = _require2.getQueryResourceForEnvironment;
|
|
25
10
|
var useFragmentNode = require('./useFragmentNode');
|
|
26
|
-
|
|
27
11
|
var useIsMountedRef = require('./useIsMountedRef');
|
|
28
|
-
|
|
29
12
|
var useQueryLoader = require('./useQueryLoader');
|
|
30
|
-
|
|
31
13
|
var useRelayEnvironment = require('./useRelayEnvironment');
|
|
32
|
-
|
|
33
14
|
var invariant = require('invariant');
|
|
34
|
-
|
|
35
15
|
var _require3 = require('react'),
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
16
|
+
useCallback = _require3.useCallback,
|
|
17
|
+
useContext = _require3.useContext,
|
|
18
|
+
useReducer = _require3.useReducer;
|
|
40
19
|
var _require4 = require('relay-runtime'),
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
20
|
+
fetchQuery = _require4.__internal.fetchQuery,
|
|
21
|
+
createOperationDescriptor = _require4.createOperationDescriptor,
|
|
22
|
+
getFragmentIdentifier = _require4.getFragmentIdentifier,
|
|
23
|
+
getRefetchMetadata = _require4.getRefetchMetadata,
|
|
24
|
+
getSelector = _require4.getSelector,
|
|
25
|
+
getValueAtPath = _require4.getValueAtPath;
|
|
48
26
|
var warning = require("fbjs/lib/warning");
|
|
49
|
-
|
|
50
27
|
function reducer(state, action) {
|
|
51
28
|
switch (action.type) {
|
|
52
29
|
case 'refetch':
|
|
53
30
|
{
|
|
54
31
|
var _action$refetchEnviro;
|
|
55
|
-
|
|
56
32
|
return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, state), {}, {
|
|
57
33
|
fetchPolicy: action.fetchPolicy,
|
|
58
34
|
mirroredEnvironment: (_action$refetchEnviro = action.refetchEnvironment) !== null && _action$refetchEnviro !== void 0 ? _action$refetchEnviro : state.mirroredEnvironment,
|
|
@@ -62,7 +38,6 @@ function reducer(state, action) {
|
|
|
62
38
|
renderPolicy: action.renderPolicy
|
|
63
39
|
});
|
|
64
40
|
}
|
|
65
|
-
|
|
66
41
|
case 'reset':
|
|
67
42
|
{
|
|
68
43
|
return {
|
|
@@ -74,7 +49,6 @@ function reducer(state, action) {
|
|
|
74
49
|
renderPolicy: undefined
|
|
75
50
|
};
|
|
76
51
|
}
|
|
77
|
-
|
|
78
52
|
default:
|
|
79
53
|
{
|
|
80
54
|
action.type;
|
|
@@ -82,49 +56,42 @@ function reducer(state, action) {
|
|
|
82
56
|
}
|
|
83
57
|
}
|
|
84
58
|
}
|
|
85
|
-
|
|
86
59
|
function useRefetchableFragmentNode(fragmentNode, parentFragmentRef, componentDisplayName) {
|
|
87
60
|
var parentEnvironment = useRelayEnvironment();
|
|
88
|
-
|
|
89
61
|
var _getRefetchMetadata = getRefetchMetadata(fragmentNode, componentDisplayName),
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
identifierField = _getRefetchMetadata.identifierField;
|
|
93
|
-
|
|
62
|
+
refetchableRequest = _getRefetchMetadata.refetchableRequest,
|
|
63
|
+
fragmentRefPathInResponse = _getRefetchMetadata.fragmentRefPathInResponse;
|
|
94
64
|
var fragmentIdentifier = getFragmentIdentifier(fragmentNode, parentFragmentRef);
|
|
95
|
-
|
|
96
65
|
var _useReducer = useReducer(reducer, {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
66
|
+
fetchPolicy: undefined,
|
|
67
|
+
mirroredEnvironment: parentEnvironment,
|
|
68
|
+
mirroredFragmentIdentifier: fragmentIdentifier,
|
|
69
|
+
onComplete: undefined,
|
|
70
|
+
refetchEnvironment: null,
|
|
71
|
+
refetchQuery: null,
|
|
72
|
+
renderPolicy: undefined
|
|
73
|
+
}),
|
|
74
|
+
refetchState = _useReducer[0],
|
|
75
|
+
dispatch = _useReducer[1];
|
|
108
76
|
var fetchPolicy = refetchState.fetchPolicy,
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
77
|
+
mirroredEnvironment = refetchState.mirroredEnvironment,
|
|
78
|
+
mirroredFragmentIdentifier = refetchState.mirroredFragmentIdentifier,
|
|
79
|
+
onComplete = refetchState.onComplete,
|
|
80
|
+
refetchEnvironment = refetchState.refetchEnvironment,
|
|
81
|
+
refetchQuery = refetchState.refetchQuery,
|
|
82
|
+
renderPolicy = refetchState.renderPolicy;
|
|
115
83
|
var environment = refetchEnvironment !== null && refetchEnvironment !== void 0 ? refetchEnvironment : parentEnvironment;
|
|
116
84
|
var QueryResource = getQueryResourceForEnvironment(environment);
|
|
117
85
|
var FragmentResource = getFragmentResourceForEnvironment(environment);
|
|
118
86
|
var profilerContext = useContext(ProfilerContext);
|
|
119
87
|
var shouldReset = environment !== mirroredEnvironment || fragmentIdentifier !== mirroredFragmentIdentifier;
|
|
120
|
-
|
|
121
88
|
var _useQueryLoader = useQueryLoader(refetchableRequest),
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
89
|
+
queryRef = _useQueryLoader[0],
|
|
90
|
+
loadQuery = _useQueryLoader[1],
|
|
91
|
+
disposeQuery = _useQueryLoader[2];
|
|
126
92
|
var fragmentRef = parentFragmentRef;
|
|
127
|
-
|
|
93
|
+
var _getRefetchMetadata2 = getRefetchMetadata(fragmentNode, componentDisplayName),
|
|
94
|
+
identifierInfo = _getRefetchMetadata2.identifierInfo;
|
|
128
95
|
if (shouldReset) {
|
|
129
96
|
dispatch({
|
|
130
97
|
type: 'reset',
|
|
@@ -133,83 +100,38 @@ function useRefetchableFragmentNode(fragmentNode, parentFragmentRef, componentDi
|
|
|
133
100
|
});
|
|
134
101
|
disposeQuery();
|
|
135
102
|
} else if (refetchQuery != null && queryRef != null) {
|
|
136
|
-
// If refetch was called, we expect to have a refetchQuery and queryRef
|
|
137
|
-
// in state, since both state updates to set the refetchQuery and the
|
|
138
|
-
// queryRef occur simultaneously.
|
|
139
|
-
// In this case, we need to read the refetched query data (potentially
|
|
140
|
-
// suspending if it's in flight), and extract the new fragment ref
|
|
141
|
-
// from the query in order read the current @refetchable fragment
|
|
142
|
-
// with the updated fragment owner as the new refetchQuery.
|
|
143
|
-
// Before observing the refetch, record the current ID and typename
|
|
144
|
-
// so that, if we are refetching existing data on
|
|
145
|
-
// a field that implements Node, after refetching we
|
|
146
|
-
// can validate that the received data is consistent
|
|
147
103
|
var debugPreviousIDAndTypename;
|
|
148
|
-
|
|
149
104
|
if (process.env.NODE_ENV !== "production") {
|
|
150
|
-
debugPreviousIDAndTypename = debugFunctions.getInitialIDAndType(refetchQuery.request.variables, fragmentRefPathInResponse, environment);
|
|
105
|
+
debugPreviousIDAndTypename = debugFunctions.getInitialIDAndType(refetchQuery.request.variables, fragmentRefPathInResponse, identifierInfo === null || identifierInfo === void 0 ? void 0 : identifierInfo.identifierQueryVariableName, environment);
|
|
151
106
|
}
|
|
152
|
-
|
|
153
107
|
var handleQueryCompleted = function handleQueryCompleted(maybeError) {
|
|
154
108
|
onComplete && onComplete(maybeError !== null && maybeError !== void 0 ? maybeError : null);
|
|
155
|
-
};
|
|
156
|
-
|
|
157
|
-
// started. Otherwise, given that QueryResource.prepare
|
|
158
|
-
// always expects an observable we fall back to a new network
|
|
159
|
-
// observable. Note however that if loadQuery did not make a network
|
|
160
|
-
// request, we don't expect to make one here, unless the state of
|
|
161
|
-
// the cache has changed between the call to refetch and this
|
|
162
|
-
// render.
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
var fetchObservable = queryRef.source != null ? queryRef.source : fetchQuery(environment, refetchQuery); // Now wwe can we read the refetch query here using the
|
|
166
|
-
// queryRef provided from useQueryLoader. Note that the
|
|
167
|
-
// network request is started during the call to refetch,
|
|
168
|
-
// but if the refetch query is still in flight, we will suspend
|
|
169
|
-
// at this point:
|
|
170
|
-
|
|
109
|
+
};
|
|
110
|
+
var fetchObservable = queryRef.source != null ? queryRef.source : fetchQuery(environment, refetchQuery);
|
|
171
111
|
var queryResult = profilerContext.wrapPrepareQueryResource(function () {
|
|
172
112
|
return QueryResource.prepare(refetchQuery, fetchObservable, fetchPolicy, renderPolicy, {
|
|
173
113
|
error: handleQueryCompleted,
|
|
174
114
|
complete: function complete() {
|
|
175
|
-
// Validate that the type of the object we got back matches the type
|
|
176
|
-
// of the object already in the store
|
|
177
115
|
if (process.env.NODE_ENV !== "production") {
|
|
178
116
|
debugFunctions.checkSameTypeAfterRefetch(debugPreviousIDAndTypename, environment, fragmentNode, componentDisplayName);
|
|
179
117
|
}
|
|
180
|
-
|
|
181
118
|
handleQueryCompleted();
|
|
182
119
|
}
|
|
183
120
|
}, queryRef.fetchKey, profilerContext);
|
|
184
121
|
});
|
|
185
122
|
var queryData = FragmentResource.read(queryResult.fragmentNode, queryResult.fragmentRef, componentDisplayName).data;
|
|
186
|
-
!(queryData != null) ? process.env.NODE_ENV !== "production" ? invariant(false, 'Relay: Expected to be able to read refetch query response. ' + "If you're seeing this, this is likely a bug in Relay.") : invariant(false) : void 0;
|
|
187
|
-
// refetch query response the new fragment ref we need to use to read
|
|
188
|
-
// the fragment. The new fragment ref will point to the refetch query
|
|
189
|
-
// as its fragment owner.
|
|
190
|
-
|
|
123
|
+
!(queryData != null) ? process.env.NODE_ENV !== "production" ? invariant(false, 'Relay: Expected to be able to read refetch query response. ' + "If you're seeing this, this is likely a bug in Relay.") : invariant(false) : void 0;
|
|
191
124
|
var refetchedFragmentRef = getValueAtPath(queryData, fragmentRefPathInResponse);
|
|
192
125
|
fragmentRef = refetchedFragmentRef;
|
|
193
|
-
|
|
194
126
|
if (process.env.NODE_ENV !== "production") {
|
|
195
|
-
// Validate that the id of the object we got back matches the id
|
|
196
|
-
// we queried for in the variables.
|
|
197
|
-
// We do this during render instead of onComplete to make sure we are
|
|
198
|
-
// only validating the most recent refetch.
|
|
199
127
|
debugFunctions.checkSameIDAfterRefetch(debugPreviousIDAndTypename, fragmentRef, fragmentNode, componentDisplayName);
|
|
200
128
|
}
|
|
201
|
-
}
|
|
202
|
-
// If refetch was called, we read the fragment using the new computed
|
|
203
|
-
// fragment ref from the refetch query response; otherwise, we use the
|
|
204
|
-
// fragment ref passed by the caller as normal.
|
|
205
|
-
|
|
206
|
-
|
|
129
|
+
}
|
|
207
130
|
var _useFragmentNode = useFragmentNode(fragmentNode, fragmentRef, componentDisplayName),
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
var refetch = useRefetchFunction(componentDisplayName, dispatch, disposeQuery, fragmentData, fragmentIdentifier, fragmentNode, fragmentRefPathInResponse, identifierField, loadQuery, parentFragmentRef, refetchableRequest);
|
|
131
|
+
fragmentData = _useFragmentNode.data,
|
|
132
|
+
disableStoreUpdates = _useFragmentNode.disableStoreUpdates,
|
|
133
|
+
enableStoreUpdates = _useFragmentNode.enableStoreUpdates;
|
|
134
|
+
var refetch = useRefetchFunction(componentDisplayName, dispatch, disposeQuery, fragmentData, fragmentIdentifier, fragmentNode, fragmentRefPathInResponse, identifierInfo, loadQuery, parentFragmentRef, refetchableRequest);
|
|
213
135
|
return {
|
|
214
136
|
fragmentData: fragmentData,
|
|
215
137
|
fragmentRef: fragmentRef,
|
|
@@ -218,24 +140,19 @@ function useRefetchableFragmentNode(fragmentNode, parentFragmentRef, componentDi
|
|
|
218
140
|
enableStoreUpdates: enableStoreUpdates
|
|
219
141
|
};
|
|
220
142
|
}
|
|
221
|
-
|
|
222
|
-
function useRefetchFunction(componentDisplayName, dispatch, disposeQuery, fragmentData, fragmentIdentifier, fragmentNode, fragmentRefPathInResponse, identifierField, loadQuery, parentFragmentRef, refetchableRequest) {
|
|
143
|
+
function useRefetchFunction(componentDisplayName, dispatch, disposeQuery, fragmentData, fragmentIdentifier, fragmentNode, fragmentRefPathInResponse, identifierInfo, loadQuery, parentFragmentRef, refetchableRequest) {
|
|
223
144
|
var isMountedRef = useIsMountedRef();
|
|
224
|
-
var identifierValue = identifierField != null && fragmentData != null && typeof fragmentData === 'object' ? fragmentData[identifierField] : null;
|
|
145
|
+
var identifierValue = (identifierInfo === null || identifierInfo === void 0 ? void 0 : identifierInfo.identifierField) != null && fragmentData != null && typeof fragmentData === 'object' ? fragmentData[identifierInfo.identifierField] : null;
|
|
225
146
|
return useCallback(function (providedRefetchVariables, options) {
|
|
226
|
-
// Bail out and warn if we're trying to refetch after the component
|
|
227
|
-
// has unmounted
|
|
228
147
|
if (isMountedRef.current !== true) {
|
|
229
148
|
process.env.NODE_ENV !== "production" ? warning(false, 'Relay: Unexpected call to `refetch` on unmounted component for fragment ' + '`%s` in `%s`. It looks like some instances of your component are ' + 'still trying to fetch data but they already unmounted. ' + 'Please make sure you clear all timers, intervals, ' + 'async calls, etc that may trigger a fetch.', fragmentNode.name, componentDisplayName) : void 0;
|
|
230
149
|
return {
|
|
231
150
|
dispose: function dispose() {}
|
|
232
151
|
};
|
|
233
152
|
}
|
|
234
|
-
|
|
235
153
|
if (parentFragmentRef == null) {
|
|
236
154
|
process.env.NODE_ENV !== "production" ? warning(false, 'Relay: Unexpected call to `refetch` while using a null fragment ref ' + 'for fragment `%s` in `%s`. When calling `refetch`, we expect ' + "initial fragment data to be non-null. Please make sure you're " + 'passing a valid fragment ref to `%s` before calling ' + '`refetch`, or make sure you pass all required variables to `refetch`.', fragmentNode.name, componentDisplayName, componentDisplayName) : void 0;
|
|
237
155
|
}
|
|
238
|
-
|
|
239
156
|
var refetchEnvironment = options === null || options === void 0 ? void 0 : options.__environment;
|
|
240
157
|
var fetchPolicy = options === null || options === void 0 ? void 0 : options.fetchPolicy;
|
|
241
158
|
var renderPolicy = options === null || options === void 0 ? void 0 : options.UNSTABLE_renderPolicy;
|
|
@@ -243,48 +160,27 @@ function useRefetchFunction(componentDisplayName, dispatch, disposeQuery, fragme
|
|
|
243
160
|
var fragmentSelector = getSelector(fragmentNode, parentFragmentRef);
|
|
244
161
|
var parentVariables;
|
|
245
162
|
var fragmentVariables;
|
|
246
|
-
|
|
247
163
|
if (fragmentSelector == null) {
|
|
248
164
|
parentVariables = {};
|
|
249
165
|
fragmentVariables = {};
|
|
250
166
|
} else if (fragmentSelector.kind === 'PluralReaderSelector') {
|
|
251
167
|
var _fragmentSelector$sel, _fragmentSelector$sel2, _fragmentSelector$sel3, _fragmentSelector$sel4;
|
|
252
|
-
|
|
253
168
|
parentVariables = (_fragmentSelector$sel = (_fragmentSelector$sel2 = fragmentSelector.selectors[0]) === null || _fragmentSelector$sel2 === void 0 ? void 0 : _fragmentSelector$sel2.owner.variables) !== null && _fragmentSelector$sel !== void 0 ? _fragmentSelector$sel : {};
|
|
254
169
|
fragmentVariables = (_fragmentSelector$sel3 = (_fragmentSelector$sel4 = fragmentSelector.selectors[0]) === null || _fragmentSelector$sel4 === void 0 ? void 0 : _fragmentSelector$sel4.variables) !== null && _fragmentSelector$sel3 !== void 0 ? _fragmentSelector$sel3 : {};
|
|
255
170
|
} else {
|
|
256
171
|
parentVariables = fragmentSelector.owner.variables;
|
|
257
172
|
fragmentVariables = fragmentSelector.variables;
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
// variables from the original parent fragment owner.
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
var refetchVariables = (0, _objectSpread2["default"])((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, parentVariables), fragmentVariables), providedRefetchVariables); // If the query needs an identifier value ('id' or similar) and one
|
|
265
|
-
// was not explicitly provided, read it from the fragment data.
|
|
266
|
-
|
|
267
|
-
if (identifierField != null && !providedRefetchVariables.hasOwnProperty('id')) {
|
|
268
|
-
// @refetchable fragments are guaranteed to have an `id` selection
|
|
269
|
-
// if the type is Node, implements Node, or is @fetchable. Double-check
|
|
270
|
-
// that there actually is a value at runtime.
|
|
173
|
+
}
|
|
174
|
+
var refetchVariables = (0, _objectSpread2["default"])((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, parentVariables), fragmentVariables), providedRefetchVariables);
|
|
175
|
+
if (identifierInfo != null && !providedRefetchVariables.hasOwnProperty(identifierInfo.identifierQueryVariableName)) {
|
|
271
176
|
if (typeof identifierValue !== 'string') {
|
|
272
|
-
process.env.NODE_ENV !== "production" ? warning(false, 'Relay: Expected result to have a string ' + '`%s` in order to refetch, got `%s`.', identifierField, identifierValue) : void 0;
|
|
177
|
+
process.env.NODE_ENV !== "production" ? warning(false, 'Relay: Expected result to have a string ' + '`%s` in order to refetch, got `%s`.', identifierInfo.identifierField, identifierValue) : void 0;
|
|
273
178
|
}
|
|
274
|
-
|
|
275
|
-
refetchVariables.id = identifierValue;
|
|
179
|
+
refetchVariables[identifierInfo.identifierQueryVariableName] = identifierValue;
|
|
276
180
|
}
|
|
277
|
-
|
|
278
181
|
var refetchQuery = createOperationDescriptor(refetchableRequest, refetchVariables, {
|
|
279
182
|
force: true
|
|
280
|
-
});
|
|
281
|
-
// and update the querRef from useQueryLoader.
|
|
282
|
-
// Note the following:
|
|
283
|
-
// - loadQuery will dispose of any previously refetched queries.
|
|
284
|
-
// - We use the variables extracted off the OperationDescriptor
|
|
285
|
-
// so that they have been filtered out to include only the
|
|
286
|
-
// variables actually declared in the query.
|
|
287
|
-
|
|
183
|
+
});
|
|
288
184
|
loadQuery(refetchQuery.request.variables, {
|
|
289
185
|
fetchPolicy: fetchPolicy,
|
|
290
186
|
__environment: refetchEnvironment,
|
|
@@ -301,38 +197,24 @@ function useRefetchFunction(componentDisplayName, dispatch, disposeQuery, fragme
|
|
|
301
197
|
return {
|
|
302
198
|
dispose: disposeQuery
|
|
303
199
|
};
|
|
304
|
-
},
|
|
305
|
-
// - We know fragmentRefPathInResponse is static, so it can be omitted from
|
|
306
|
-
// deps
|
|
307
|
-
// - We know fragmentNode is static, so it can be omitted from deps.
|
|
308
|
-
// - fragmentNode and parentFragmentRef are also captured by including
|
|
309
|
-
// fragmentIdentifier
|
|
310
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
311
|
-
[fragmentIdentifier, dispatch, disposeQuery, identifierValue, loadQuery]);
|
|
200
|
+
}, [fragmentIdentifier, dispatch, disposeQuery, identifierValue, loadQuery]);
|
|
312
201
|
}
|
|
313
|
-
|
|
314
202
|
var debugFunctions;
|
|
315
|
-
|
|
316
203
|
if (process.env.NODE_ENV !== "production") {
|
|
317
204
|
debugFunctions = {
|
|
318
|
-
getInitialIDAndType: function getInitialIDAndType(memoRefetchVariables, fragmentRefPathInResponse, environment) {
|
|
205
|
+
getInitialIDAndType: function getInitialIDAndType(memoRefetchVariables, fragmentRefPathInResponse, identifierQueryVariableName, environment) {
|
|
319
206
|
var _require5 = require('relay-runtime'),
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
var id = memoRefetchVariables === null || memoRefetchVariables === void 0 ? void 0 : memoRefetchVariables.id;
|
|
323
|
-
|
|
207
|
+
Record = _require5.Record;
|
|
208
|
+
var id = memoRefetchVariables === null || memoRefetchVariables === void 0 ? void 0 : memoRefetchVariables[identifierQueryVariableName !== null && identifierQueryVariableName !== void 0 ? identifierQueryVariableName : 'id'];
|
|
324
209
|
if (fragmentRefPathInResponse.length !== 1 || fragmentRefPathInResponse[0] !== 'node' || id == null) {
|
|
325
210
|
return null;
|
|
326
211
|
}
|
|
327
|
-
|
|
328
212
|
var recordSource = environment.getStore().getSource();
|
|
329
213
|
var record = recordSource.get(id);
|
|
330
|
-
var typename = record
|
|
331
|
-
|
|
214
|
+
var typename = record == null ? null : Record.getType(record);
|
|
332
215
|
if (typename == null) {
|
|
333
216
|
return null;
|
|
334
217
|
}
|
|
335
|
-
|
|
336
218
|
return {
|
|
337
219
|
id: id,
|
|
338
220
|
typename: typename
|
|
@@ -340,16 +222,13 @@ if (process.env.NODE_ENV !== "production") {
|
|
|
340
222
|
},
|
|
341
223
|
checkSameTypeAfterRefetch: function checkSameTypeAfterRefetch(previousIDAndType, environment, fragmentNode, componentDisplayName) {
|
|
342
224
|
var _require6 = require('relay-runtime'),
|
|
343
|
-
|
|
344
|
-
|
|
225
|
+
Record = _require6.Record;
|
|
345
226
|
if (!previousIDAndType) {
|
|
346
227
|
return;
|
|
347
228
|
}
|
|
348
|
-
|
|
349
229
|
var recordSource = environment.getStore().getSource();
|
|
350
230
|
var record = recordSource.get(previousIDAndType.id);
|
|
351
231
|
var typename = record && Record.getType(record);
|
|
352
|
-
|
|
353
232
|
if (typename !== previousIDAndType.typename) {
|
|
354
233
|
process.env.NODE_ENV !== "production" ? warning(false, 'Relay: Call to `refetch` returned data with a different ' + '__typename: was `%s`, now `%s`, on `%s` in `%s`. ' + 'Please make sure the server correctly implements' + 'unique id requirement.', previousIDAndType.typename, typename, fragmentNode.name, componentDisplayName) : void 0;
|
|
355
234
|
}
|
|
@@ -358,18 +237,13 @@ if (process.env.NODE_ENV !== "production") {
|
|
|
358
237
|
if (previousIDAndTypename == null) {
|
|
359
238
|
return;
|
|
360
239
|
}
|
|
361
|
-
|
|
362
240
|
var _require7 = require('relay-runtime'),
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
241
|
+
ID_KEY = _require7.ID_KEY;
|
|
366
242
|
var resultID = refetchedFragmentRef[ID_KEY];
|
|
367
|
-
|
|
368
243
|
if (resultID != null && resultID !== previousIDAndTypename.id) {
|
|
369
244
|
process.env.NODE_ENV !== "production" ? warning(false, 'Relay: Call to `refetch` returned a different id, expected ' + '`%s`, got `%s`, on `%s` in `%s`. ' + 'Please make sure the server correctly implements ' + 'unique id requirement.', resultID, previousIDAndTypename.id, fragmentNode.name, componentDisplayName) : void 0;
|
|
370
245
|
}
|
|
371
246
|
}
|
|
372
247
|
};
|
|
373
248
|
}
|
|
374
|
-
|
|
375
249
|
module.exports = useRefetchableFragmentNode;
|
|
@@ -1,26 +1,12 @@
|
|
|
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
|
-
* @emails oncall+relay
|
|
8
|
-
*
|
|
9
|
-
* @format
|
|
10
|
-
*/
|
|
11
1
|
'use strict';
|
|
12
2
|
|
|
3
|
+
var ReactRelayContext = require('./../ReactRelayContext');
|
|
13
4
|
var invariant = require('invariant');
|
|
14
|
-
|
|
15
5
|
var _require = require('react'),
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
var ReactRelayContext = require('react-relay/ReactRelayContext');
|
|
19
|
-
|
|
6
|
+
useContext = _require.useContext;
|
|
20
7
|
function useRelayEnvironment() {
|
|
21
8
|
var context = useContext(ReactRelayContext);
|
|
22
9
|
!(context != null) ? process.env.NODE_ENV !== "production" ? invariant(false, 'useRelayEnvironment: Expected to have found a Relay environment provided by ' + 'a `RelayEnvironmentProvider` component. ' + 'This usually means that useRelayEnvironment was used in a ' + 'component that is not a descendant of a `RelayEnvironmentProvider`. ' + 'Please make sure a `RelayEnvironmentProvider` has been rendered somewhere ' + 'as a parent or ancestor of your component.') : invariant(false) : void 0;
|
|
23
10
|
return context.environment;
|
|
24
11
|
}
|
|
25
|
-
|
|
26
12
|
module.exports = useRelayEnvironment;
|
|
@@ -1,29 +1,11 @@
|
|
|
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
|
-
* @emails oncall+relay
|
|
8
|
-
*
|
|
9
|
-
* @format
|
|
10
|
-
*/
|
|
11
1
|
'use strict';
|
|
12
2
|
|
|
13
|
-
var
|
|
14
|
-
useRef = _require.useRef;
|
|
15
|
-
|
|
3
|
+
var useUnsafeRef_DEPRECATED = require('./useUnsafeRef_DEPRECATED');
|
|
16
4
|
var warning = require("fbjs/lib/warning");
|
|
17
|
-
|
|
18
5
|
function useStaticFragmentNodeWarning(fragmentNode, warningContext) {
|
|
19
6
|
if (process.env.NODE_ENV !== "production") {
|
|
20
|
-
|
|
21
|
-
// __DEV__ setting which shouldn't change. This allows us to only pay the
|
|
22
|
-
// cost of `useRef` in development mode to produce the warning.
|
|
23
|
-
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
24
|
-
var initialPropRef = useRef(fragmentNode.name);
|
|
7
|
+
var initialPropRef = useUnsafeRef_DEPRECATED(fragmentNode.name);
|
|
25
8
|
process.env.NODE_ENV !== "production" ? warning(initialPropRef.current === fragmentNode.name, 'Relay: The %s has to remain the same over the lifetime of a component. ' + 'Changing it is not supported and will result in unexpected behavior.', warningContext) : void 0;
|
|
26
9
|
}
|
|
27
10
|
}
|
|
28
|
-
|
|
29
11
|
module.exports = useStaticFragmentNodeWarning;
|
|
@@ -1,31 +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
|
-
* @emails oncall+relay
|
|
8
|
-
*
|
|
9
|
-
* @format
|
|
10
|
-
*/
|
|
11
1
|
'use strict';
|
|
12
2
|
|
|
13
3
|
var useRelayEnvironment = require('./useRelayEnvironment');
|
|
14
|
-
|
|
15
4
|
var _require = require('react'),
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* This hook subscribes a callback to the invalidation state of the given data
|
|
20
|
-
* ids.
|
|
21
|
-
* Any time the invalidation state of the given data ids changes, the provided
|
|
22
|
-
* callback will be called.
|
|
23
|
-
* If new ids or a new callback are provided, the subscription will be
|
|
24
|
-
* re-established and the previous one will be disposed.
|
|
25
|
-
* The subscription will automatically be disposed on unmount
|
|
26
|
-
*/
|
|
27
|
-
|
|
28
|
-
|
|
5
|
+
useEffect = _require.useEffect,
|
|
6
|
+
useRef = _require.useRef;
|
|
29
7
|
function useSubscribeToInvalidationState(dataIDs, callback) {
|
|
30
8
|
var environment = useRelayEnvironment();
|
|
31
9
|
var disposableRef = useRef(null);
|
|
@@ -37,9 +15,7 @@ function useSubscribeToInvalidationState(dataIDs, callback) {
|
|
|
37
15
|
disposableRef.current = disposable;
|
|
38
16
|
return function () {
|
|
39
17
|
return disposable.dispose();
|
|
40
|
-
};
|
|
41
|
-
// instead
|
|
42
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
18
|
+
};
|
|
43
19
|
}, [stableDataIDs, callback, environment]);
|
|
44
20
|
return {
|
|
45
21
|
dispose: function dispose() {
|
|
@@ -49,5 +25,4 @@ function useSubscribeToInvalidationState(dataIDs, callback) {
|
|
|
49
25
|
}
|
|
50
26
|
};
|
|
51
27
|
}
|
|
52
|
-
|
|
53
28
|
module.exports = useSubscribeToInvalidationState;
|
|
@@ -1,36 +1,17 @@
|
|
|
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
|
-
* @format
|
|
9
|
-
*/
|
|
10
1
|
'use strict';
|
|
11
2
|
|
|
12
3
|
var useRelayEnvironment = require('./useRelayEnvironment');
|
|
13
|
-
|
|
14
4
|
var _require = require('react'),
|
|
15
|
-
|
|
16
|
-
|
|
5
|
+
useEffect = _require.useEffect;
|
|
17
6
|
var _require2 = require('relay-runtime'),
|
|
18
|
-
|
|
19
|
-
|
|
7
|
+
requestSubscription = _require2.requestSubscription;
|
|
20
8
|
function useSubscription(config, requestSubscriptionFn) {
|
|
21
|
-
// N.B. this will re-subscribe every render if config or requestSubscriptionFn
|
|
22
|
-
// are not memoized.
|
|
23
|
-
// Please do not pass an object defined in-line.
|
|
24
9
|
var actualRequestSubscription = requestSubscriptionFn !== null && requestSubscriptionFn !== void 0 ? requestSubscriptionFn : requestSubscription;
|
|
25
10
|
var environment = useRelayEnvironment();
|
|
26
11
|
useEffect(function () {
|
|
27
|
-
// $FlowFixMe[method-unbinding] added when improving typing for this parameters
|
|
28
12
|
var _actualRequestSubscri = actualRequestSubscription(environment, config),
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
13
|
+
dispose = _actualRequestSubscri.dispose;
|
|
32
14
|
return dispose;
|
|
33
15
|
}, [environment, config, actualRequestSubscription]);
|
|
34
16
|
}
|
|
35
|
-
|
|
36
17
|
module.exports = useSubscription;
|
|
@@ -4,9 +4,9 @@
|
|
|
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.
|
|
6
6
|
*
|
|
7
|
-
* @emails oncall+relay
|
|
8
7
|
* @flow strict-local
|
|
9
8
|
* @format
|
|
9
|
+
* @oncall relay
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
12
|
'use strict';
|
|
@@ -16,9 +16,9 @@ import type {
|
|
|
16
16
|
IActorEnvironment,
|
|
17
17
|
} from 'relay-runtime/multi-actor-environment';
|
|
18
18
|
|
|
19
|
+
const ReactRelayContext = require('./../ReactRelayContext');
|
|
19
20
|
const invariant = require('invariant');
|
|
20
21
|
const {useContext} = require('react');
|
|
21
|
-
const ReactRelayContext = require('react-relay/ReactRelayContext');
|
|
22
22
|
|
|
23
23
|
function useRelayActorEnvironment(
|
|
24
24
|
actorIdentifier: ActorIdentifier,
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-relay",
|
|
3
3
|
"description": "A framework for building GraphQL-driven React applications.",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "16.0.0",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"graphql",
|
|
7
7
|
"relay",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"fbjs": "^3.0.2",
|
|
21
21
|
"invariant": "^2.2.4",
|
|
22
22
|
"nullthrows": "^1.1.1",
|
|
23
|
-
"relay-runtime": "
|
|
23
|
+
"relay-runtime": "16.0.0"
|
|
24
24
|
},
|
|
25
25
|
"peerDependencies": {
|
|
26
26
|
"react": "^16.9.0 || ^17 || ^18"
|