react-relay 17.0.0 → 18.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 +2 -2
- package/ReactRelayContext.js +1 -1
- package/ReactRelayContext.js.flow +1 -1
- package/ReactRelayFragmentContainer.js.flow +2 -2
- package/ReactRelayPaginationContainer.js.flow +2 -2
- package/ReactRelayQueryRenderer.js.flow +1 -1
- package/ReactRelayQueryRendererContext.js.flow +1 -1
- package/ReactRelayRefetchContainer.js.flow +2 -2
- package/ReactRelayTypes.js.flow +45 -18
- package/__flowtests__/ReactRelayFragmentContainer-flowtest.js.flow +2 -2
- package/buildReactRelayContainer.js.flow +5 -5
- package/hooks.js +1 -1
- package/index.js +1 -1
- package/legacy.js +1 -1
- package/lib/relay-hooks/loadEntryPoint.js +8 -5
- package/lib/relay-hooks/loadQuery.js +2 -14
- package/lib/relay-hooks/useEntryPointLoader.js +5 -8
- package/lib/relay-hooks/useFragment.js +4 -7
- package/lib/relay-hooks/useFragmentInternal.js +6 -484
- package/lib/relay-hooks/useFragmentInternal_CURRENT.js +483 -0
- package/lib/relay-hooks/useFragmentInternal_EXPERIMENTAL.js +520 -0
- package/lib/relay-hooks/useLazyLoadQuery.js +2 -5
- package/lib/relay-hooks/usePreloadedQuery.js +6 -9
- package/lib/relay-hooks/useQueryLoader.js +1 -3
- package/multi-actor/ActorChange.js.flow +1 -1
- package/package.json +3 -3
- package/react-relay-hooks.js +2 -2
- package/react-relay-hooks.min.js +2 -2
- package/react-relay-legacy.js +1 -1
- package/react-relay-legacy.min.js +1 -1
- package/react-relay.js +2 -2
- package/react-relay.min.js +2 -2
- package/relay-hooks/EntryPointTypes.flow.js.flow +35 -12
- package/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js.flow +8 -4
- package/relay-hooks/MatchContainer.js.flow +1 -1
- package/relay-hooks/ProfilerContext.js.flow +1 -1
- package/relay-hooks/__flowtests__/EntryPointTypes/ExtractQueryTypes-flowtest.js.flow +43 -0
- package/relay-hooks/loadEntryPoint.js.flow +10 -4
- package/relay-hooks/loadQuery.js.flow +4 -28
- package/relay-hooks/prepareEntryPoint_DEPRECATED.js.flow +4 -1
- package/relay-hooks/useEntryPointLoader.js.flow +3 -4
- package/relay-hooks/useFragment.js.flow +0 -5
- package/relay-hooks/useFragmentInternal.js.flow +19 -643
- package/relay-hooks/useFragmentInternal_CURRENT.js.flow +669 -0
- package/relay-hooks/useFragmentInternal_EXPERIMENTAL.js.flow +764 -0
- package/relay-hooks/useLazyLoadQuery.js.flow +0 -5
- package/relay-hooks/usePaginationFragment.js.flow +1 -1
- package/relay-hooks/usePreloadedQuery.js.flow +0 -5
- package/relay-hooks/useQueryLoader.js.flow +1 -2
@@ -30,7 +30,6 @@ import type {
|
|
30
30
|
} from 'relay-runtime';
|
31
31
|
|
32
32
|
const invariant = require('invariant');
|
33
|
-
const React = require('react');
|
34
33
|
const {
|
35
34
|
__internal: {fetchQueryDeduped},
|
36
35
|
Observable,
|
@@ -41,30 +40,19 @@ const {
|
|
41
40
|
getRequest,
|
42
41
|
getRequestIdentifier,
|
43
42
|
} = require('relay-runtime');
|
44
|
-
const warning = require('warning');
|
45
43
|
|
46
|
-
let RenderDispatcher = null;
|
47
44
|
let fetchKey = 100001;
|
48
45
|
|
49
|
-
hook useTrackLoadQueryInRender() {
|
50
|
-
if (RenderDispatcher === null) {
|
51
|
-
// Flow does not know of React internals (rightly so), but we need to
|
52
|
-
// ensure here that this function isn't called inside render.
|
53
|
-
RenderDispatcher =
|
54
|
-
// $FlowFixMe[prop-missing]
|
55
|
-
React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED
|
56
|
-
?.ReactCurrentDispatcher?.current;
|
57
|
-
}
|
58
|
-
}
|
59
|
-
|
60
46
|
type QueryType<T> =
|
61
47
|
T extends Query<infer V, infer D, infer RR>
|
62
48
|
? {
|
63
49
|
variables: V,
|
64
50
|
response: D,
|
65
51
|
rawResponse?: $NonMaybeType<RR>,
|
66
|
-
}
|
67
|
-
:
|
52
|
+
}
|
53
|
+
: [+t: T] extends [+t: PreloadableConcreteRequest<infer V>]
|
54
|
+
? V
|
55
|
+
: empty;
|
68
56
|
|
69
57
|
declare function loadQuery<
|
70
58
|
T,
|
@@ -87,17 +75,6 @@ function loadQuery<
|
|
87
75
|
options?: ?LoadQueryOptions,
|
88
76
|
environmentProviderOptions?: ?TEnvironmentProviderOptions,
|
89
77
|
): PreloadedQueryInner<TQuery, TEnvironmentProviderOptions> {
|
90
|
-
// This code ensures that we don't call loadQuery during render.
|
91
|
-
const CurrentDispatcher =
|
92
|
-
// $FlowFixMe[prop-missing]
|
93
|
-
React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED
|
94
|
-
?.ReactCurrentDispatcher?.current;
|
95
|
-
warning(
|
96
|
-
RenderDispatcher == null || CurrentDispatcher !== RenderDispatcher,
|
97
|
-
'Relay: `%s` should not be called inside a React render function.',
|
98
|
-
options?.__nameForWarning ?? 'loadQuery',
|
99
|
-
);
|
100
|
-
|
101
78
|
// Every time you call loadQuery, we will generate a new fetchKey.
|
102
79
|
// This will ensure that every query reference that is created and
|
103
80
|
// passed to usePreloadedQuery is independently evaluated,
|
@@ -407,5 +384,4 @@ function loadQuery<
|
|
407
384
|
|
408
385
|
module.exports = {
|
409
386
|
loadQuery,
|
410
|
-
useTrackLoadQueryInRender,
|
411
387
|
};
|
@@ -16,13 +16,15 @@ import type {
|
|
16
16
|
EntryPointComponent,
|
17
17
|
EnvironmentProviderOptions,
|
18
18
|
IEnvironmentProvider,
|
19
|
+
PreloadedQuery,
|
19
20
|
} from './EntryPointTypes.flow';
|
20
21
|
|
21
22
|
const preloadQuery = require('./preloadQuery_DEPRECATED');
|
22
23
|
|
23
24
|
function prepareEntryPoint<
|
24
25
|
TEntryPointParams: {...},
|
25
|
-
|
26
|
+
// $FlowExpectedError[unclear-type] Need any to make it supertype of all PreloadedQuery
|
27
|
+
TPreloadedQueries: {+[string]: PreloadedQuery<any>},
|
26
28
|
TPreloadedEntryPoints: {...},
|
27
29
|
TRuntimeProps: {...},
|
28
30
|
TExtraProps,
|
@@ -59,6 +61,7 @@ function prepareEntryPoint<
|
|
59
61
|
environmentProviderOptions,
|
60
62
|
);
|
61
63
|
|
64
|
+
// $FlowFixMe[incompatible-type]
|
62
65
|
preloadedQueries[queryPropName] = preloadQuery<OperationType, mixed>(
|
63
66
|
environment,
|
64
67
|
parameters,
|
@@ -17,10 +17,10 @@ import type {
|
|
17
17
|
EnvironmentProviderOptions,
|
18
18
|
IEnvironmentProvider,
|
19
19
|
PreloadedEntryPoint,
|
20
|
+
PreloadedQuery,
|
20
21
|
} from './EntryPointTypes.flow';
|
21
22
|
|
22
23
|
const loadEntryPoint = require('./loadEntryPoint');
|
23
|
-
const {useTrackLoadQueryInRender} = require('./loadQuery');
|
24
24
|
const useIsMountedRef = require('./useIsMountedRef');
|
25
25
|
const {useCallback, useEffect, useRef, useState} = require('react');
|
26
26
|
|
@@ -52,7 +52,8 @@ const initialNullEntryPointReferenceState = {kind: 'NullEntryPointReference'};
|
|
52
52
|
|
53
53
|
hook useLoadEntryPoint<
|
54
54
|
TEntryPointParams: {...},
|
55
|
-
|
55
|
+
// $FlowExpectedError[unclear-type] Need any to make it supertype of all PreloadedQuery
|
56
|
+
TPreloadedQueries: {+[string]: PreloadedQuery<any>},
|
56
57
|
TPreloadedEntryPoints: {...},
|
57
58
|
TRuntimeProps: {...},
|
58
59
|
TExtraProps,
|
@@ -102,8 +103,6 @@ hook useLoadEntryPoint<
|
|
102
103
|
* entry point references.
|
103
104
|
*/
|
104
105
|
|
105
|
-
useTrackLoadQueryInRender();
|
106
|
-
|
107
106
|
const initialEntryPointReferenceInternal =
|
108
107
|
options?.TEST_ONLY__initialEntryPointData?.entryPointReference ??
|
109
108
|
initialNullEntryPointReferenceState;
|
@@ -13,7 +13,6 @@
|
|
13
13
|
|
14
14
|
import type {Fragment, FragmentType, GraphQLTaggedNode} from 'relay-runtime';
|
15
15
|
|
16
|
-
const {useTrackLoadQueryInRender} = require('./loadQuery');
|
17
16
|
const useFragmentInternal = require('./useFragmentInternal');
|
18
17
|
const useStaticFragmentNodeWarning = require('./useStaticFragmentNodeWarning');
|
19
18
|
const {useDebugValue} = require('react');
|
@@ -49,10 +48,6 @@ declare hook useFragment<TFragmentType: FragmentType, TData>(
|
|
49
48
|
): ?TData;
|
50
49
|
|
51
50
|
hook useFragment(fragment: GraphQLTaggedNode, key: mixed): mixed {
|
52
|
-
// We need to use this hook in order to be able to track if
|
53
|
-
// loadQuery was called during render
|
54
|
-
useTrackLoadQueryInRender();
|
55
|
-
|
56
51
|
const fragmentNode = getFragment(fragment);
|
57
52
|
useStaticFragmentNodeWarning(fragmentNode, 'first argument of useFragment()');
|
58
53
|
const data = useFragmentInternal(fragmentNode, key, 'useFragment()');
|