react-relay 20.1.1 → 21.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/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 +31 -24
- 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.js.flow +18 -20
- 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 +24 -27
- 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 +4 -4
- package/getRootVariablesForFragments.js.flow +1 -1
- package/hooks.js +1 -1
- package/hooks.js.flow +23 -8
- 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.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.js.flow +6 -6
- package/relay-hooks/EntryPointTypes.flow.js.flow +61 -67
- package/relay-hooks/LazyLoadEntryPointContainer_DEPRECATED.react.js.flow +23 -21
- package/relay-hooks/MatchContainer.js.flow +12 -6
- package/relay-hooks/NestedRelayEntryPointBuilderUtils.js.flow +3 -9
- package/relay-hooks/QueryResource.js.flow +6 -6
- 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 +48 -1
- 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 +4 -4
- package/relay-hooks/getConnectionState.js.flow +2 -2
- package/relay-hooks/legacy/FragmentResource.js.flow +13 -13
- package/relay-hooks/legacy/useBlockingPaginationFragment.js.flow +24 -25
- package/relay-hooks/legacy/useFragmentNode.js.flow +4 -4
- package/relay-hooks/legacy/useRefetchableFragmentNode.js.flow +79 -81
- package/relay-hooks/loadEntryPoint.js.flow +15 -13
- package/relay-hooks/loadQuery.js.flow +18 -18
- package/relay-hooks/preloadQuery_DEPRECATED.js.flow +16 -13
- package/relay-hooks/prepareEntryPoint_DEPRECATED.js.flow +7 -7
- package/relay-hooks/readFragmentInternal.js.flow +9 -9
- 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.js.flow +2 -2
- package/relay-hooks/useEntryPointLoader.js.flow +11 -11
- package/relay-hooks/useFragment.js.flow +7 -7
- 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 +1 -1
- package/relay-hooks/useLazyLoadQuery.js.flow +10 -3
- package/relay-hooks/useLazyLoadQueryNode.js.flow +67 -28
- 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.js.flow +8 -16
- package/relay-hooks/useMutationAction_EXPERIMENTAL.js.flow +68 -0
- package/relay-hooks/usePaginationFragment.js.flow +15 -11
- package/relay-hooks/usePrefetchableForwardPaginationFragment.js.flow +19 -18
- package/relay-hooks/usePrefetchableForwardPaginationFragment_EXPERIMENTAL.js.flow +19 -18
- package/relay-hooks/usePreloadedQuery.js.flow +119 -85
- package/relay-hooks/useQueryLoader.js.flow +27 -23
- package/relay-hooks/useQueryLoader_EXPERIMENTAL.js.flow +10 -10
- package/relay-hooks/useRefetchableFragment.js.flow +16 -11
- package/relay-hooks/useRefetchableFragmentInternal.js.flow +77 -79
- package/relay-hooks/useRelayLoggingContext.js.flow +1 -1
- package/relay-hooks/useSubscribeToInvalidationState.js.flow +1 -1
- package/relay-hooks/useSubscription.js.flow +1 -1
- package/rsc-client_EXPERIMENTAL.js +10 -0
- package/rsc-client_EXPERIMENTAL.js.flow +23 -0
- package/rsc_EXPERIMENTAL.js +10 -0
- package/rsc_EXPERIMENTAL.js.flow +90 -0
package/lib/legacy.js
CHANGED
|
@@ -7,21 +7,34 @@ var ReactRelayPaginationContainer = require('./ReactRelayPaginationContainer');
|
|
|
7
7
|
var ReactRelayQueryRenderer = require('./ReactRelayQueryRenderer');
|
|
8
8
|
var ReactRelayRefetchContainer = require('./ReactRelayRefetchContainer');
|
|
9
9
|
var RelayRuntime = require('relay-runtime');
|
|
10
|
+
var ConnectionHandler = RelayRuntime.ConnectionHandler,
|
|
11
|
+
MutationTypes = RelayRuntime.MutationTypes,
|
|
12
|
+
RangeOperations = RelayRuntime.RangeOperations,
|
|
13
|
+
applyOptimisticMutation = RelayRuntime.applyOptimisticMutation,
|
|
14
|
+
commitLocalUpdate = RelayRuntime.commitLocalUpdate,
|
|
15
|
+
commitMutation = RelayRuntime.commitMutation,
|
|
16
|
+
fetchQuery_DEPRECATED = RelayRuntime.fetchQuery_DEPRECATED,
|
|
17
|
+
graphql = RelayRuntime.graphql,
|
|
18
|
+
readInlineData = RelayRuntime.readInlineData,
|
|
19
|
+
requestSubscription = RelayRuntime.requestSubscription;
|
|
20
|
+
var createFragmentContainer = ReactRelayFragmentContainer.createContainer;
|
|
21
|
+
var createPaginationContainer = ReactRelayPaginationContainer.createContainer;
|
|
22
|
+
var createRefetchContainer = ReactRelayRefetchContainer.createContainer;
|
|
10
23
|
module.exports = {
|
|
11
|
-
ConnectionHandler:
|
|
24
|
+
ConnectionHandler: ConnectionHandler,
|
|
12
25
|
QueryRenderer: ReactRelayQueryRenderer,
|
|
13
26
|
LocalQueryRenderer: ReactRelayLocalQueryRenderer,
|
|
14
|
-
MutationTypes:
|
|
15
|
-
RangeOperations:
|
|
27
|
+
MutationTypes: MutationTypes,
|
|
28
|
+
RangeOperations: RangeOperations,
|
|
16
29
|
ReactRelayContext: ReactRelayContext,
|
|
17
|
-
applyOptimisticMutation:
|
|
18
|
-
commitLocalUpdate:
|
|
19
|
-
commitMutation:
|
|
20
|
-
createFragmentContainer:
|
|
21
|
-
createPaginationContainer:
|
|
22
|
-
createRefetchContainer:
|
|
23
|
-
fetchQuery_DEPRECATED:
|
|
24
|
-
graphql:
|
|
25
|
-
readInlineData:
|
|
26
|
-
requestSubscription:
|
|
30
|
+
applyOptimisticMutation: applyOptimisticMutation,
|
|
31
|
+
commitLocalUpdate: commitLocalUpdate,
|
|
32
|
+
commitMutation: commitMutation,
|
|
33
|
+
createFragmentContainer: createFragmentContainer,
|
|
34
|
+
createPaginationContainer: createPaginationContainer,
|
|
35
|
+
createRefetchContainer: createRefetchContainer,
|
|
36
|
+
fetchQuery_DEPRECATED: fetchQuery_DEPRECATED,
|
|
37
|
+
graphql: graphql,
|
|
38
|
+
readInlineData: readInlineData,
|
|
39
|
+
requestSubscription: requestSubscription
|
|
27
40
|
};
|
|
@@ -75,10 +75,10 @@ function useBlockingPaginationFragment(fragmentInput, parentFragmentRef) {
|
|
|
75
75
|
}, [disposeFetchNext, disposeFetchPrevious, refetch]);
|
|
76
76
|
return {
|
|
77
77
|
data: fragmentData,
|
|
78
|
-
loadNext: loadNext,
|
|
79
|
-
loadPrevious: loadPrevious,
|
|
80
78
|
hasNext: hasNext,
|
|
81
79
|
hasPrevious: hasPrevious,
|
|
80
|
+
loadNext: loadNext,
|
|
81
|
+
loadPrevious: loadPrevious,
|
|
82
82
|
refetch: refetchPagination
|
|
83
83
|
};
|
|
84
84
|
}
|
|
@@ -102,6 +102,8 @@ function useLoadMore(args) {
|
|
|
102
102
|
};
|
|
103
103
|
var observer = {
|
|
104
104
|
complete: promiseResolve,
|
|
105
|
+
error: promiseResolve,
|
|
106
|
+
next: promiseResolve,
|
|
105
107
|
start: function start() {
|
|
106
108
|
disableStoreUpdates();
|
|
107
109
|
var promise = new Promise(function (resolve) {
|
|
@@ -112,9 +114,7 @@ function useLoadMore(args) {
|
|
|
112
114
|
});
|
|
113
115
|
requestPromiseRef.current = promise;
|
|
114
116
|
setRequestPromise(promise);
|
|
115
|
-
}
|
|
116
|
-
next: promiseResolve,
|
|
117
|
-
error: promiseResolve
|
|
117
|
+
}
|
|
118
118
|
};
|
|
119
119
|
var _useLoadMoreFunction = useLoadMoreFunction((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, loadMoreArgs), {}, {
|
|
120
120
|
observer: observer,
|
|
@@ -94,9 +94,9 @@ function useRefetchableFragmentNode(fragmentNode, parentFragmentRef, componentDi
|
|
|
94
94
|
identifierInfo = _getRefetchMetadata2.identifierInfo;
|
|
95
95
|
if (shouldReset) {
|
|
96
96
|
dispatch({
|
|
97
|
-
type: 'reset',
|
|
98
97
|
environment: environment,
|
|
99
|
-
fragmentIdentifier: fragmentIdentifier
|
|
98
|
+
fragmentIdentifier: fragmentIdentifier,
|
|
99
|
+
type: 'reset'
|
|
100
100
|
});
|
|
101
101
|
disposeQuery();
|
|
102
102
|
} else if (refetchQuery != null && queryRef != null) {
|
|
@@ -110,13 +110,13 @@ function useRefetchableFragmentNode(fragmentNode, parentFragmentRef, componentDi
|
|
|
110
110
|
var fetchObservable = queryRef.source != null ? queryRef.source : fetchQuery(environment, refetchQuery);
|
|
111
111
|
var queryResult = profilerContext.wrapPrepareQueryResource(function () {
|
|
112
112
|
return QueryResource.prepare(refetchQuery, fetchObservable, fetchPolicy, renderPolicy, {
|
|
113
|
-
error: handleQueryCompleted,
|
|
114
113
|
complete: function complete() {
|
|
115
114
|
if (process.env.NODE_ENV !== "production") {
|
|
116
115
|
debugFunctions.checkSameTypeAfterRefetch(debugPreviousIDAndTypename, environment, fragmentNode, componentDisplayName);
|
|
117
116
|
}
|
|
118
117
|
handleQueryCompleted();
|
|
119
|
-
}
|
|
118
|
+
},
|
|
119
|
+
error: handleQueryCompleted
|
|
120
120
|
}, queryRef.fetchKey, profilerContext);
|
|
121
121
|
});
|
|
122
122
|
var queryData = FragmentResource.read(queryResult.fragmentNode, queryResult.fragmentRef, componentDisplayName).data;
|
|
@@ -133,11 +133,11 @@ function useRefetchableFragmentNode(fragmentNode, parentFragmentRef, componentDi
|
|
|
133
133
|
enableStoreUpdates = _useFragmentNode.enableStoreUpdates;
|
|
134
134
|
var refetch = useRefetchFunction(componentDisplayName, dispatch, disposeQuery, fragmentData, fragmentIdentifier, fragmentNode, fragmentRefPathInResponse, identifierInfo, loadQuery, parentFragmentRef, refetchableRequest);
|
|
135
135
|
return {
|
|
136
|
+
disableStoreUpdates: disableStoreUpdates,
|
|
137
|
+
enableStoreUpdates: enableStoreUpdates,
|
|
136
138
|
fragmentData: fragmentData,
|
|
137
139
|
fragmentRef: fragmentRef,
|
|
138
|
-
refetch: refetch
|
|
139
|
-
disableStoreUpdates: disableStoreUpdates,
|
|
140
|
-
enableStoreUpdates: enableStoreUpdates
|
|
140
|
+
refetch: refetch
|
|
141
141
|
};
|
|
142
142
|
}
|
|
143
143
|
function useRefetchFunction(componentDisplayName, dispatch, disposeQuery, fragmentData, fragmentIdentifier, fragmentNode, fragmentRefPathInResponse, identifierInfo, loadQuery, parentFragmentRef, refetchableRequest) {
|
|
@@ -182,17 +182,17 @@ function useRefetchFunction(componentDisplayName, dispatch, disposeQuery, fragme
|
|
|
182
182
|
force: true
|
|
183
183
|
});
|
|
184
184
|
loadQuery(refetchQuery.request.variables, {
|
|
185
|
-
fetchPolicy: fetchPolicy,
|
|
186
185
|
__environment: refetchEnvironment,
|
|
187
|
-
__nameForWarning: 'refetch'
|
|
186
|
+
__nameForWarning: 'refetch',
|
|
187
|
+
fetchPolicy: fetchPolicy
|
|
188
188
|
});
|
|
189
189
|
dispatch({
|
|
190
|
-
type: 'refetch',
|
|
191
190
|
fetchPolicy: fetchPolicy,
|
|
192
191
|
onComplete: onComplete,
|
|
193
192
|
refetchEnvironment: refetchEnvironment,
|
|
194
193
|
refetchQuery: refetchQuery,
|
|
195
|
-
renderPolicy: renderPolicy
|
|
194
|
+
renderPolicy: renderPolicy,
|
|
195
|
+
type: 'refetch'
|
|
196
196
|
});
|
|
197
197
|
return {
|
|
198
198
|
dispose: disposeQuery
|
|
@@ -202,23 +202,16 @@ function useRefetchFunction(componentDisplayName, dispatch, disposeQuery, fragme
|
|
|
202
202
|
var debugFunctions;
|
|
203
203
|
if (process.env.NODE_ENV !== "production") {
|
|
204
204
|
debugFunctions = {
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
var id = memoRefetchVariables === null || memoRefetchVariables === void 0 ? void 0 : memoRefetchVariables[identifierQueryVariableName !== null && identifierQueryVariableName !== void 0 ? identifierQueryVariableName : 'id'];
|
|
209
|
-
if (fragmentRefPathInResponse.length !== 1 || fragmentRefPathInResponse[0] !== 'node' || id == null) {
|
|
210
|
-
return null;
|
|
205
|
+
checkSameIDAfterRefetch: function checkSameIDAfterRefetch(previousIDAndTypename, refetchedFragmentRef, fragmentNode, componentDisplayName) {
|
|
206
|
+
if (previousIDAndTypename == null || refetchedFragmentRef == null) {
|
|
207
|
+
return;
|
|
211
208
|
}
|
|
212
|
-
var
|
|
213
|
-
|
|
214
|
-
var
|
|
215
|
-
if (
|
|
216
|
-
|
|
209
|
+
var _require5 = require('relay-runtime'),
|
|
210
|
+
ID_KEY = _require5.ID_KEY;
|
|
211
|
+
var resultID = refetchedFragmentRef[ID_KEY];
|
|
212
|
+
if (resultID != null && resultID !== previousIDAndTypename.id) {
|
|
213
|
+
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;
|
|
217
214
|
}
|
|
218
|
-
return {
|
|
219
|
-
id: id,
|
|
220
|
-
typename: typename
|
|
221
|
-
};
|
|
222
215
|
},
|
|
223
216
|
checkSameTypeAfterRefetch: function checkSameTypeAfterRefetch(previousIDAndType, environment, fragmentNode, componentDisplayName) {
|
|
224
217
|
var _require6 = require('relay-runtime'),
|
|
@@ -233,16 +226,23 @@ if (process.env.NODE_ENV !== "production") {
|
|
|
233
226
|
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;
|
|
234
227
|
}
|
|
235
228
|
},
|
|
236
|
-
|
|
237
|
-
if (previousIDAndTypename == null || refetchedFragmentRef == null) {
|
|
238
|
-
return;
|
|
239
|
-
}
|
|
229
|
+
getInitialIDAndType: function getInitialIDAndType(memoRefetchVariables, fragmentRefPathInResponse, identifierQueryVariableName, environment) {
|
|
240
230
|
var _require7 = require('relay-runtime'),
|
|
241
|
-
|
|
242
|
-
var
|
|
243
|
-
if (
|
|
244
|
-
|
|
231
|
+
Record = _require7.Record;
|
|
232
|
+
var id = memoRefetchVariables === null || memoRefetchVariables === void 0 ? void 0 : memoRefetchVariables[identifierQueryVariableName !== null && identifierQueryVariableName !== void 0 ? identifierQueryVariableName : 'id'];
|
|
233
|
+
if (fragmentRefPathInResponse.length !== 1 || fragmentRefPathInResponse[0] !== 'node' || id == null) {
|
|
234
|
+
return null;
|
|
245
235
|
}
|
|
236
|
+
var recordSource = environment.getStore().getSource();
|
|
237
|
+
var record = recordSource.get(id);
|
|
238
|
+
var typename = record == null ? null : Record.getType(record);
|
|
239
|
+
if (typename == null) {
|
|
240
|
+
return null;
|
|
241
|
+
}
|
|
242
|
+
return {
|
|
243
|
+
id: id,
|
|
244
|
+
typename: typename
|
|
245
|
+
};
|
|
246
246
|
}
|
|
247
247
|
};
|
|
248
248
|
}
|
|
@@ -29,9 +29,9 @@ function loadEntryPoint(environmentProvider, entryPoint, entryPointParams) {
|
|
|
29
29
|
}
|
|
30
30
|
var environment = environmentProvider.getEnvironment(environmentProviderOptions);
|
|
31
31
|
preloadedQueries[queryPropName] = loadQuery(environment, parameters, variables, {
|
|
32
|
+
__nameForWarning: 'loadEntryPoint',
|
|
32
33
|
fetchPolicy: options === null || options === void 0 ? void 0 : options.fetchPolicy,
|
|
33
|
-
networkCacheConfig: options === null || options === void 0 ? void 0 : options.networkCacheConfig
|
|
34
|
-
__nameForWarning: 'loadEntryPoint'
|
|
34
|
+
networkCacheConfig: options === null || options === void 0 ? void 0 : options.networkCacheConfig
|
|
35
35
|
}, environmentProviderOptions);
|
|
36
36
|
});
|
|
37
37
|
}
|
|
@@ -44,15 +44,15 @@ function loadQuery(environment, preloadableRequest, variables, options, environm
|
|
|
44
44
|
return network.execute(params, variables, networkCacheConfig, undefined, undefined, undefined, undefined, checkOperation);
|
|
45
45
|
});
|
|
46
46
|
var _observable$subscribe = observable.subscribe({
|
|
47
|
+
complete: function complete() {
|
|
48
|
+
subject.complete();
|
|
49
|
+
},
|
|
47
50
|
error: function error(err) {
|
|
48
51
|
networkError = err;
|
|
49
52
|
subject.error(err);
|
|
50
53
|
},
|
|
51
54
|
next: function next(data) {
|
|
52
55
|
subject.next(data);
|
|
53
|
-
},
|
|
54
|
-
complete: function complete() {
|
|
55
|
-
subject.complete();
|
|
56
56
|
}
|
|
57
57
|
}),
|
|
58
58
|
unsubscribe = _observable$subscribe.unsubscribe;
|
|
@@ -69,14 +69,14 @@ function loadQuery(environment, preloadableRequest, variables, options, environm
|
|
|
69
69
|
var executeDeduped = function executeDeduped(operation, fetchFn) {
|
|
70
70
|
didMakeNetworkRequest = true;
|
|
71
71
|
var _fetchQueryDeduped$su = fetchQueryDeduped(environment, operation.request.identifier, fetchFn).subscribe({
|
|
72
|
+
complete: function complete() {
|
|
73
|
+
executionSubject.complete();
|
|
74
|
+
},
|
|
72
75
|
error: function error(err) {
|
|
73
76
|
executionSubject.error(err);
|
|
74
77
|
},
|
|
75
78
|
next: function next(data) {
|
|
76
79
|
executionSubject.next(data);
|
|
77
|
-
},
|
|
78
|
-
complete: function complete() {
|
|
79
|
-
executionSubject.complete();
|
|
80
80
|
}
|
|
81
81
|
});
|
|
82
82
|
unsubscribeFromExecution = _fetchQueryDeduped$su.unsubscribe;
|
|
@@ -154,9 +154,7 @@ function loadQuery(environment, preloadableRequest, variables, options, environm
|
|
|
154
154
|
isNetworkRequestCancelled = true;
|
|
155
155
|
};
|
|
156
156
|
return {
|
|
157
|
-
|
|
158
|
-
environment: environment,
|
|
159
|
-
environmentProviderOptions: environmentProviderOptions,
|
|
157
|
+
cancelNetworkRequest: cancelNetworkRequest,
|
|
160
158
|
dispose: function dispose() {
|
|
161
159
|
if (isDisposed) {
|
|
162
160
|
return;
|
|
@@ -165,19 +163,21 @@ function loadQuery(environment, preloadableRequest, variables, options, environm
|
|
|
165
163
|
cancelNetworkRequest();
|
|
166
164
|
isDisposed = true;
|
|
167
165
|
},
|
|
168
|
-
|
|
169
|
-
|
|
166
|
+
environment: environment,
|
|
167
|
+
environmentProviderOptions: environmentProviderOptions,
|
|
170
168
|
fetchKey: fetchKey,
|
|
169
|
+
fetchPolicy: fetchPolicy,
|
|
171
170
|
id: queryId,
|
|
172
171
|
get isDisposed() {
|
|
173
172
|
return isDisposed || isReleased;
|
|
174
173
|
},
|
|
174
|
+
kind: 'PreloadedQuery',
|
|
175
|
+
name: params.name,
|
|
176
|
+
networkCacheConfig: networkCacheConfig,
|
|
175
177
|
get networkError() {
|
|
176
178
|
return networkError;
|
|
177
179
|
},
|
|
178
|
-
|
|
179
|
-
networkCacheConfig: networkCacheConfig,
|
|
180
|
-
fetchPolicy: fetchPolicy,
|
|
180
|
+
releaseQuery: releaseQuery,
|
|
181
181
|
source: didMakeNetworkRequest ? returnedObservable : undefined,
|
|
182
182
|
variables: variables
|
|
183
183
|
};
|
|
@@ -45,17 +45,17 @@ function preloadQuery(environment, preloadableRequest, variables, options, envir
|
|
|
45
45
|
};
|
|
46
46
|
}) : null;
|
|
47
47
|
return {
|
|
48
|
-
kind: 'PreloadedQuery_DEPRECATED',
|
|
49
48
|
environment: environment,
|
|
50
49
|
environmentProviderOptions: environmentProviderOptions,
|
|
51
50
|
fetchKey: queryEntry.fetchKey,
|
|
52
51
|
fetchPolicy: queryEntry.fetchPolicy,
|
|
53
|
-
networkCacheConfig: options === null || options === void 0 ? void 0 : options.networkCacheConfig,
|
|
54
52
|
id: queryEntry.id,
|
|
53
|
+
kind: 'PreloadedQuery_DEPRECATED',
|
|
55
54
|
name: queryEntry.name,
|
|
55
|
+
networkCacheConfig: options === null || options === void 0 ? void 0 : options.networkCacheConfig,
|
|
56
56
|
source: source,
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
status: queryEntry.status,
|
|
58
|
+
variables: variables
|
|
59
59
|
};
|
|
60
60
|
}
|
|
61
61
|
function preloadQueryDeduped(environment, pendingQueries, preloadableRequest, variables, options) {
|
|
@@ -93,13 +93,13 @@ function preloadQueryDeduped(environment, pendingQueries, preloadableRequest, va
|
|
|
93
93
|
cacheKey: cacheKey,
|
|
94
94
|
fetchKey: fetchKey,
|
|
95
95
|
fetchPolicy: fetchPolicy,
|
|
96
|
-
kind: 'cache',
|
|
97
96
|
id: params.id,
|
|
97
|
+
kind: 'cache',
|
|
98
98
|
name: params.name,
|
|
99
99
|
status: {
|
|
100
100
|
cacheConfig: networkCacheConfig,
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
fetchTime: (_availability$fetchTi = availability === null || availability === void 0 ? void 0 : availability.fetchTime) !== null && _availability$fetchTi !== void 0 ? _availability$fetchTi : null,
|
|
102
|
+
source: 'cache'
|
|
103
103
|
}
|
|
104
104
|
};
|
|
105
105
|
if (!environment.isServer() && prevQueryEntry == null) {
|
|
@@ -116,13 +116,13 @@ function preloadQueryDeduped(environment, pendingQueries, preloadableRequest, va
|
|
|
116
116
|
cacheKey: cacheKey,
|
|
117
117
|
fetchKey: fetchKey,
|
|
118
118
|
fetchPolicy: fetchPolicy,
|
|
119
|
-
kind: 'network',
|
|
120
119
|
id: params.id,
|
|
120
|
+
kind: 'network',
|
|
121
121
|
name: params.name,
|
|
122
122
|
status: {
|
|
123
123
|
cacheConfig: networkCacheConfig,
|
|
124
|
-
|
|
125
|
-
|
|
124
|
+
fetchTime: null,
|
|
125
|
+
source: 'network'
|
|
126
126
|
},
|
|
127
127
|
subject: subject,
|
|
128
128
|
subscription: source["finally"](function () {
|
|
@@ -103,18 +103,18 @@ function getFragmentState(environment, fragmentSelector) {
|
|
|
103
103
|
};
|
|
104
104
|
} else {
|
|
105
105
|
return {
|
|
106
|
+
epoch: environment.getStore().getEpoch(),
|
|
106
107
|
kind: 'plural',
|
|
107
108
|
snapshots: fragmentSelector.selectors.map(function (s) {
|
|
108
109
|
return environment.lookup(s);
|
|
109
|
-
})
|
|
110
|
-
epoch: environment.getStore().getEpoch()
|
|
110
|
+
})
|
|
111
111
|
};
|
|
112
112
|
}
|
|
113
113
|
} else {
|
|
114
114
|
return {
|
|
115
|
+
epoch: environment.getStore().getEpoch(),
|
|
115
116
|
kind: 'singular',
|
|
116
|
-
snapshot: environment.lookup(fragmentSelector)
|
|
117
|
-
epoch: environment.getStore().getEpoch()
|
|
117
|
+
snapshot: environment.lookup(fragmentSelector)
|
|
118
118
|
};
|
|
119
119
|
}
|
|
120
120
|
}
|
|
@@ -175,8 +175,8 @@ function readFragmentInternal(environment, fragmentNode, fragmentRef, hookDispla
|
|
|
175
175
|
}
|
|
176
176
|
}
|
|
177
177
|
return {
|
|
178
|
-
|
|
179
|
-
|
|
178
|
+
clientEdgeQueries: clientEdgeQueries,
|
|
179
|
+
data: data
|
|
180
180
|
};
|
|
181
181
|
}
|
|
182
182
|
module.exports = readFragmentInternal;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _asyncToGenerator = require("@babel/runtime/helpers/asyncToGenerator").default;
|
|
4
|
+
var _require = require('relay-runtime'),
|
|
5
|
+
fetchQuery = _require.fetchQuery;
|
|
6
|
+
function serverFetchQuery(_x, _x2, _x3) {
|
|
7
|
+
return _serverFetchQuery.apply(this, arguments);
|
|
8
|
+
}
|
|
9
|
+
function _serverFetchQuery() {
|
|
10
|
+
_serverFetchQuery = _asyncToGenerator(function* (environment, query, variables) {
|
|
11
|
+
var observable = fetchQuery(environment, query, variables);
|
|
12
|
+
var result = yield observable.toPromise();
|
|
13
|
+
if (result == null) {
|
|
14
|
+
throw new Error('Unexpected null response from fetchQuery');
|
|
15
|
+
}
|
|
16
|
+
return result;
|
|
17
|
+
});
|
|
18
|
+
return _serverFetchQuery.apply(this, arguments);
|
|
19
|
+
}
|
|
20
|
+
module.exports = serverFetchQuery;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var invariant = require('invariant');
|
|
4
|
+
var _require = require('relay-runtime'),
|
|
5
|
+
createOperationDescriptor = _require.createOperationDescriptor,
|
|
6
|
+
getRequest = _require.getRequest;
|
|
7
|
+
function serverPreloadQuery(environment, query, variables) {
|
|
8
|
+
var _ref, _request$params$id;
|
|
9
|
+
var request = getRequest(query);
|
|
10
|
+
var operationDescriptor = createOperationDescriptor(request, variables);
|
|
11
|
+
var observable = environment.execute({
|
|
12
|
+
operation: operationDescriptor
|
|
13
|
+
});
|
|
14
|
+
var queryId = (_ref = (_request$params$id = request.params.id) !== null && _request$params$id !== void 0 ? _request$params$id : request.params.cacheID) !== null && _ref !== void 0 ? _ref : request.params.name;
|
|
15
|
+
var response = observable.toPromise().then(function (rawResponse) {
|
|
16
|
+
!(rawResponse != null) ? process.env.NODE_ENV !== "production" ? invariant(false, 'Unexpected null response from execute') : invariant(false) : void 0;
|
|
17
|
+
!!Array.isArray(rawResponse) ? process.env.NODE_ENV !== "production" ? invariant(false, '@defer is not yet supported in serverPreloadQuery') : invariant(false) : void 0;
|
|
18
|
+
return {
|
|
19
|
+
data: rawResponse.data,
|
|
20
|
+
errors: rawResponse.errors
|
|
21
|
+
};
|
|
22
|
+
});
|
|
23
|
+
return {
|
|
24
|
+
kind: 'PreloadedQueryRef',
|
|
25
|
+
queryId: queryId,
|
|
26
|
+
variables: variables,
|
|
27
|
+
_response: response,
|
|
28
|
+
fetchedAt: Date.now()
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
module.exports = serverPreloadQuery;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _asyncToGenerator = require("@babel/runtime/helpers/asyncToGenerator").default;
|
|
4
|
+
var _require = require('relay-runtime/experimental'),
|
|
5
|
+
waitForFragmentData = _require.waitForFragmentData;
|
|
6
|
+
function serverReadFragment(_x, _x2, _x3) {
|
|
7
|
+
return _serverReadFragment.apply(this, arguments);
|
|
8
|
+
}
|
|
9
|
+
function _serverReadFragment() {
|
|
10
|
+
_serverReadFragment = _asyncToGenerator(function* (environment, fragment, fragmentRef) {
|
|
11
|
+
return waitForFragmentData(environment, fragment, fragmentRef);
|
|
12
|
+
});
|
|
13
|
+
return _serverReadFragment.apply(this, arguments);
|
|
14
|
+
}
|
|
15
|
+
module.exports = serverReadFragment;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var usePreloadedQuery = require('../usePreloadedQuery');
|
|
5
|
+
var useRelayEnvironment = require('../useRelayEnvironment');
|
|
6
|
+
var _require = require('react'),
|
|
7
|
+
use = _require.use,
|
|
8
|
+
useMemo = _require.useMemo;
|
|
9
|
+
var _require2 = require('relay-runtime'),
|
|
10
|
+
__internal = _require2.__internal,
|
|
11
|
+
ROOT_TYPE = _require2.ROOT_TYPE,
|
|
12
|
+
createOperationDescriptor = _require2.createOperationDescriptor,
|
|
13
|
+
getRequest = _require2.getRequest;
|
|
14
|
+
var defaultGetDataID = __internal.defaultGetDataID,
|
|
15
|
+
normalizeResponse = __internal.normalizeResponse;
|
|
16
|
+
var committedRefs = new WeakSet();
|
|
17
|
+
var DEFAULT_STALE_MS = 30_000;
|
|
18
|
+
function useQueryFromServer(query, queryRef, options) {
|
|
19
|
+
var _options$staleThresho, _environment$_getData;
|
|
20
|
+
var environment = useRelayEnvironment();
|
|
21
|
+
var request = getRequest(query);
|
|
22
|
+
var threshold = (_options$staleThresho = options === null || options === void 0 ? void 0 : options.staleThresholdMs) !== null && _options$staleThresho !== void 0 ? _options$staleThresho : DEFAULT_STALE_MS;
|
|
23
|
+
var getDataID = (_environment$_getData = environment._getDataID) !== null && _environment$_getData !== void 0 ? _environment$_getData : defaultGetDataID;
|
|
24
|
+
var response = use(queryRef._response);
|
|
25
|
+
var isFresh = response.data != null && Date.now() - queryRef.fetchedAt <= threshold;
|
|
26
|
+
var shouldCommit = isFresh && !committedRefs.has(queryRef);
|
|
27
|
+
if (shouldCommit) {
|
|
28
|
+
var _environment$__log;
|
|
29
|
+
committedRefs.add(queryRef);
|
|
30
|
+
var operation = createOperationDescriptor(request, queryRef.variables);
|
|
31
|
+
var responsePayload = {
|
|
32
|
+
data: response.data,
|
|
33
|
+
errors: response.errors
|
|
34
|
+
};
|
|
35
|
+
var relayPayload = normalizeResponse(responsePayload, operation.root, ROOT_TYPE, {
|
|
36
|
+
getDataID: getDataID,
|
|
37
|
+
treatMissingFieldsAsNull: false,
|
|
38
|
+
deferDeduplicatedFields: false,
|
|
39
|
+
log: (_environment$__log = environment.__log) !== null && _environment$__log !== void 0 ? _environment$__log : null,
|
|
40
|
+
path: [],
|
|
41
|
+
shouldProcessClientComponents: false
|
|
42
|
+
}, false);
|
|
43
|
+
environment.getStore().publish(relayPayload.source);
|
|
44
|
+
}
|
|
45
|
+
var preloadedQuery = useMemo(function () {
|
|
46
|
+
var _request$params$id;
|
|
47
|
+
var isFreshAtMemo = response.data != null && Date.now() - queryRef.fetchedAt <= threshold;
|
|
48
|
+
var useStore = isFreshAtMemo || committedRefs.has(queryRef);
|
|
49
|
+
return {
|
|
50
|
+
kind: 'PreloadedQuery_DEPRECATED',
|
|
51
|
+
environment: environment,
|
|
52
|
+
fetchKey: queryRef.fetchedAt,
|
|
53
|
+
fetchPolicy: useStore ? 'store-or-network' : 'network-only',
|
|
54
|
+
id: (_request$params$id = request.params.id) !== null && _request$params$id !== void 0 ? _request$params$id : request.params.name,
|
|
55
|
+
name: request.params.name,
|
|
56
|
+
source: null,
|
|
57
|
+
variables: queryRef.variables
|
|
58
|
+
};
|
|
59
|
+
}, [environment, queryRef.fetchedAt, response.data, queryRef.variables, request.params.id, request.params.name, threshold]);
|
|
60
|
+
return usePreloadedQuery(query, preloadedQuery);
|
|
61
|
+
}
|
|
62
|
+
module.exports = useQueryFromServer;
|