relay-runtime 11.0.2 → 13.0.0-rc.2
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/README.md +67 -0
- package/handlers/RelayDefaultHandlerProvider.js.flow +3 -3
- package/handlers/connection/ConnectionHandler.js.flow +9 -18
- package/handlers/connection/ConnectionInterface.js.flow +1 -1
- package/handlers/connection/MutationHandlers.js.flow +8 -12
- package/index.js +1 -1
- package/index.js.flow +57 -35
- package/lib/handlers/RelayDefaultHandlerProvider.js +1 -1
- package/lib/handlers/connection/ConnectionHandler.js +13 -19
- package/lib/handlers/connection/ConnectionInterface.js +1 -1
- package/lib/handlers/connection/MutationHandlers.js +4 -7
- package/lib/index.js +59 -44
- package/lib/multi-actor-environment/ActorIdentifier.js +12 -2
- package/lib/multi-actor-environment/ActorSpecificEnvironment.js +64 -20
- package/lib/multi-actor-environment/ActorUtils.js +27 -0
- package/lib/multi-actor-environment/MultiActorEnvironment.js +324 -61
- package/lib/multi-actor-environment/MultiActorEnvironmentTypes.js +1 -1
- package/lib/multi-actor-environment/index.js +6 -2
- package/lib/mutations/RelayDeclarativeMutationConfig.js +5 -2
- package/lib/mutations/RelayRecordProxy.js +4 -3
- package/lib/mutations/RelayRecordSourceMutator.js +4 -3
- package/lib/mutations/RelayRecordSourceProxy.js +13 -5
- package/lib/mutations/RelayRecordSourceSelectorProxy.js +19 -6
- package/lib/mutations/applyOptimisticMutation.js +7 -7
- package/lib/mutations/commitLocalUpdate.js +1 -1
- package/lib/mutations/commitMutation.js +15 -11
- package/lib/mutations/readUpdatableQuery_EXPERIMENTAL.js +242 -0
- package/lib/mutations/validateMutation.js +11 -6
- package/lib/network/ConvertToExecuteFunction.js +3 -2
- package/lib/network/RelayNetwork.js +4 -3
- package/lib/network/RelayNetworkTypes.js +1 -1
- package/lib/network/RelayObservable.js +1 -1
- package/lib/network/RelayQueryResponseCache.js +22 -6
- package/lib/network/wrapNetworkWithLogObserver.js +79 -0
- package/lib/query/GraphQLTag.js +3 -2
- package/lib/query/PreloadableQueryRegistry.js +1 -1
- package/lib/query/fetchQuery.js +7 -6
- package/lib/query/fetchQueryInternal.js +1 -1
- package/lib/query/fetchQuery_DEPRECATED.js +3 -2
- package/lib/store/ClientID.js +8 -2
- package/lib/store/DataChecker.js +124 -55
- package/lib/store/OperationExecutor.js +489 -215
- package/lib/store/RelayConcreteVariables.js +27 -9
- package/lib/store/RelayExperimentalGraphResponseHandler.js +153 -0
- package/lib/store/RelayExperimentalGraphResponseTransform.js +391 -0
- package/lib/store/RelayModernEnvironment.js +100 -120
- package/lib/store/RelayModernFragmentSpecResolver.js +53 -27
- package/lib/store/RelayModernOperationDescriptor.js +3 -2
- package/lib/store/RelayModernRecord.js +48 -13
- package/lib/store/RelayModernSelector.js +15 -9
- package/lib/store/RelayModernStore.js +56 -23
- package/lib/store/RelayOperationTracker.js +34 -24
- package/lib/store/RelayOptimisticRecordSource.js +1 -1
- package/lib/store/RelayPublishQueue.js +35 -11
- package/lib/store/RelayReader.js +257 -72
- package/lib/store/RelayRecordSource.js +88 -4
- package/lib/store/RelayRecordState.js +1 -1
- package/lib/store/RelayReferenceMarker.js +34 -22
- package/lib/store/RelayResponseNormalizer.js +172 -96
- package/lib/store/RelayStoreReactFlightUtils.js +5 -11
- package/lib/store/RelayStoreSubscriptions.js +15 -10
- package/lib/store/RelayStoreTypes.js +1 -1
- package/lib/store/RelayStoreUtils.js +13 -8
- package/lib/store/ResolverCache.js +213 -0
- package/lib/store/ResolverFragments.js +10 -6
- package/lib/store/StoreInspector.js +1 -1
- package/lib/store/TypeID.js +1 -1
- package/lib/store/ViewerPattern.js +1 -1
- package/lib/store/cloneRelayHandleSourceField.js +6 -5
- package/lib/store/cloneRelayScalarHandleSourceField.js +6 -5
- package/lib/store/createFragmentSpecResolver.js +1 -1
- package/lib/store/createRelayContext.js +5 -3
- package/lib/store/defaultGetDataID.js +1 -1
- package/lib/store/defaultRequiredFieldLogger.js +1 -1
- package/lib/store/hasOverlappingIDs.js +1 -1
- package/lib/store/isRelayModernEnvironment.js +1 -1
- package/lib/store/normalizeRelayPayload.js +1 -1
- package/lib/store/readInlineData.js +7 -3
- package/lib/subscription/requestSubscription.js +32 -34
- package/lib/util/JSResourceTypes.flow.js +1 -1
- package/lib/util/NormalizationNode.js +1 -1
- package/lib/util/ReaderNode.js +1 -1
- package/lib/util/RelayConcreteNode.js +3 -1
- package/lib/util/RelayDefaultHandleKey.js +1 -1
- package/lib/util/RelayError.js +1 -1
- package/lib/util/RelayFeatureFlags.js +10 -7
- package/lib/util/RelayProfiler.js +1 -1
- package/lib/util/RelayReplaySubject.js +22 -7
- package/lib/util/RelayRuntimeTypes.js +1 -7
- package/lib/util/StringInterner.js +71 -0
- package/lib/util/createPayloadFor3DField.js +1 -1
- package/lib/util/deepFreeze.js +1 -1
- package/lib/util/generateID.js +1 -1
- package/lib/util/getAllRootVariables.js +29 -0
- package/lib/util/getFragmentIdentifier.js +16 -8
- package/lib/util/getOperation.js +3 -2
- package/lib/util/getPaginationMetadata.js +41 -0
- package/lib/util/getPaginationVariables.js +66 -0
- package/lib/util/getPendingOperationsForFragment.js +55 -0
- package/lib/util/getRefetchMetadata.js +36 -0
- package/lib/util/getRelayHandleKey.js +3 -3
- package/lib/util/getRequestIdentifier.js +3 -3
- package/lib/util/getValueAtPath.js +51 -0
- package/lib/util/isEmptyObject.js +2 -2
- package/lib/util/isPromise.js +1 -1
- package/lib/util/isScalarAndEqual.js +1 -1
- package/lib/util/recycleNodesInto.js +1 -1
- package/lib/util/registerEnvironmentWithDevTools.js +26 -0
- package/lib/util/reportMissingRequiredFields.js +1 -1
- package/lib/util/resolveImmediate.js +1 -1
- package/lib/util/stableCopy.js +1 -1
- package/lib/util/withDuration.js +31 -0
- package/multi-actor-environment/ActorIdentifier.js.flow +18 -2
- package/multi-actor-environment/ActorSpecificEnvironment.js.flow +94 -58
- package/multi-actor-environment/ActorUtils.js.flow +33 -0
- package/multi-actor-environment/MultiActorEnvironment.js.flow +366 -93
- package/multi-actor-environment/MultiActorEnvironmentTypes.js.flow +88 -23
- package/multi-actor-environment/index.js.flow +3 -1
- package/mutations/RelayDeclarativeMutationConfig.js.flow +33 -27
- package/mutations/RelayRecordProxy.js.flow +5 -6
- package/mutations/RelayRecordSourceMutator.js.flow +5 -7
- package/mutations/RelayRecordSourceProxy.js.flow +20 -11
- package/mutations/RelayRecordSourceSelectorProxy.js.flow +23 -8
- package/mutations/applyOptimisticMutation.js.flow +14 -15
- package/mutations/commitLocalUpdate.js.flow +2 -2
- package/mutations/commitMutation.js.flow +36 -47
- package/mutations/readUpdatableQuery_EXPERIMENTAL.js.flow +318 -0
- package/mutations/validateMutation.js.flow +27 -17
- package/network/ConvertToExecuteFunction.js.flow +3 -3
- package/network/RelayNetwork.js.flow +5 -6
- package/network/RelayNetworkTypes.js.flow +1 -1
- package/network/RelayObservable.js.flow +2 -2
- package/network/RelayQueryResponseCache.js.flow +35 -22
- package/network/wrapNetworkWithLogObserver.js.flow +99 -0
- package/package.json +2 -2
- package/query/GraphQLTag.js.flow +11 -11
- package/query/PreloadableQueryRegistry.js.flow +5 -3
- package/query/fetchQuery.js.flow +19 -19
- package/query/fetchQueryInternal.js.flow +7 -10
- package/query/fetchQuery_DEPRECATED.js.flow +7 -7
- package/relay-runtime.js +2 -2
- package/relay-runtime.min.js +2 -2
- package/store/ClientID.js.flow +15 -4
- package/store/DataChecker.js.flow +142 -60
- package/store/OperationExecutor.js.flow +575 -320
- package/store/RelayConcreteVariables.js.flow +28 -9
- package/store/RelayExperimentalGraphResponseHandler.js.flow +121 -0
- package/store/RelayExperimentalGraphResponseTransform.js.flow +470 -0
- package/store/RelayModernEnvironment.js.flow +91 -115
- package/store/RelayModernFragmentSpecResolver.js.flow +56 -32
- package/store/RelayModernOperationDescriptor.js.flow +13 -8
- package/store/RelayModernRecord.js.flow +68 -12
- package/store/RelayModernSelector.js.flow +25 -15
- package/store/RelayModernStore.js.flow +67 -32
- package/store/RelayOperationTracker.js.flow +60 -44
- package/store/RelayOptimisticRecordSource.js.flow +3 -3
- package/store/RelayPublishQueue.js.flow +74 -32
- package/store/RelayReader.js.flow +319 -100
- package/store/RelayRecordSource.js.flow +73 -7
- package/store/RelayRecordState.js.flow +1 -1
- package/store/RelayReferenceMarker.js.flow +41 -27
- package/store/RelayResponseNormalizer.js.flow +204 -86
- package/store/RelayStoreReactFlightUtils.js.flow +5 -12
- package/store/RelayStoreSubscriptions.js.flow +20 -12
- package/store/RelayStoreTypes.js.flow +200 -41
- package/store/RelayStoreUtils.js.flow +25 -12
- package/store/ResolverCache.js.flow +249 -0
- package/store/ResolverFragments.js.flow +16 -20
- package/store/StoreInspector.js.flow +3 -3
- package/store/TypeID.js.flow +2 -2
- package/store/ViewerPattern.js.flow +3 -3
- package/store/cloneRelayHandleSourceField.js.flow +6 -7
- package/store/cloneRelayScalarHandleSourceField.js.flow +6 -7
- package/store/createFragmentSpecResolver.js.flow +4 -5
- package/store/createRelayContext.js.flow +4 -4
- package/store/defaultGetDataID.js.flow +1 -1
- package/store/defaultRequiredFieldLogger.js.flow +1 -1
- package/store/hasOverlappingIDs.js.flow +1 -1
- package/store/isRelayModernEnvironment.js.flow +1 -1
- package/store/normalizeRelayPayload.js.flow +7 -8
- package/store/readInlineData.js.flow +8 -9
- package/subscription/requestSubscription.js.flow +55 -51
- package/util/JSResourceTypes.flow.js.flow +1 -1
- package/util/NormalizationNode.js.flow +11 -4
- package/util/ReaderNode.js.flow +25 -2
- package/util/RelayConcreteNode.js.flow +5 -1
- package/util/RelayDefaultHandleKey.js.flow +1 -1
- package/util/RelayError.js.flow +1 -1
- package/util/RelayFeatureFlags.js.flow +23 -15
- package/util/RelayProfiler.js.flow +1 -1
- package/util/RelayReplaySubject.js.flow +10 -10
- package/util/RelayRuntimeTypes.js.flow +70 -3
- package/util/StringInterner.js.flow +69 -0
- package/util/createPayloadFor3DField.js.flow +4 -4
- package/util/deepFreeze.js.flow +1 -1
- package/util/generateID.js.flow +1 -1
- package/util/getAllRootVariables.js.flow +36 -0
- package/util/getFragmentIdentifier.js.flow +28 -16
- package/util/getOperation.js.flow +3 -3
- package/util/getPaginationMetadata.js.flow +69 -0
- package/util/getPaginationVariables.js.flow +108 -0
- package/util/getPendingOperationsForFragment.js.flow +62 -0
- package/util/getRefetchMetadata.js.flow +76 -0
- package/util/getRelayHandleKey.js.flow +2 -3
- package/util/getRequestIdentifier.js.flow +4 -4
- package/util/getValueAtPath.js.flow +46 -0
- package/util/isEmptyObject.js.flow +2 -1
- package/util/isPromise.js.flow +1 -1
- package/util/isScalarAndEqual.js.flow +1 -1
- package/util/recycleNodesInto.js.flow +1 -1
- package/util/registerEnvironmentWithDevTools.js.flow +33 -0
- package/util/reportMissingRequiredFields.js.flow +1 -1
- package/util/resolveImmediate.js.flow +2 -2
- package/util/stableCopy.js.flow +1 -1
- package/util/withDuration.js.flow +32 -0
- package/lib/store/RelayRecordSourceMapImpl.js +0 -107
- package/lib/store/RelayStoreSubscriptionsUsingMapByID.js +0 -318
- package/store/RelayRecordSourceMapImpl.js.flow +0 -91
- package/store/RelayStoreSubscriptionsUsingMapByID.js.flow +0 -283
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
3
|
*
|
|
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.
|
|
@@ -12,15 +12,18 @@
|
|
|
12
12
|
|
|
13
13
|
'use strict';
|
|
14
14
|
|
|
15
|
-
const invariant = require('invariant');
|
|
16
|
-
const stableCopy = require('../util/stableCopy');
|
|
17
|
-
|
|
18
15
|
import type {Variables} from '../util/RelayRuntimeTypes';
|
|
19
|
-
import type {
|
|
16
|
+
import type {
|
|
17
|
+
GraphQLResponse,
|
|
18
|
+
GraphQLSingularResponse,
|
|
19
|
+
} from './RelayNetworkTypes';
|
|
20
|
+
|
|
21
|
+
const stableCopy = require('../util/stableCopy');
|
|
22
|
+
const invariant = require('invariant');
|
|
20
23
|
|
|
21
24
|
type Response = {
|
|
22
25
|
fetchTime: number,
|
|
23
|
-
payload:
|
|
26
|
+
payload: GraphQLResponse,
|
|
24
27
|
...
|
|
25
28
|
};
|
|
26
29
|
|
|
@@ -55,7 +58,7 @@ class RelayQueryResponseCache {
|
|
|
55
58
|
this._responses.clear();
|
|
56
59
|
}
|
|
57
60
|
|
|
58
|
-
get(queryID: string, variables: Variables): ?
|
|
61
|
+
get(queryID: string, variables: Variables): ?GraphQLResponse {
|
|
59
62
|
const cacheKey = getCacheKey(queryID, variables);
|
|
60
63
|
this._responses.forEach((response, key) => {
|
|
61
64
|
if (!isCurrent(response.fetchTime, this._ttl)) {
|
|
@@ -63,23 +66,33 @@ class RelayQueryResponseCache {
|
|
|
63
66
|
}
|
|
64
67
|
});
|
|
65
68
|
const response = this._responses.get(cacheKey);
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
69
|
+
if (response == null) {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
if (Array.isArray(response.payload)) {
|
|
73
|
+
return response.payload.map(
|
|
74
|
+
payload =>
|
|
75
|
+
// $FlowFixMe[incompatible-cast]
|
|
76
|
+
({
|
|
77
|
+
...payload,
|
|
78
|
+
extensions: {
|
|
79
|
+
...payload.extensions,
|
|
80
|
+
cacheTimestamp: response.fetchTime,
|
|
81
|
+
},
|
|
82
|
+
}: GraphQLSingularResponse),
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
// $FlowFixMe[incompatible-cast]
|
|
86
|
+
return ({
|
|
87
|
+
...response.payload,
|
|
88
|
+
extensions: {
|
|
89
|
+
...response.payload.extensions,
|
|
90
|
+
cacheTimestamp: response.fetchTime,
|
|
91
|
+
},
|
|
92
|
+
}: GraphQLSingularResponse);
|
|
76
93
|
}
|
|
77
94
|
|
|
78
|
-
set(
|
|
79
|
-
queryID: string,
|
|
80
|
-
variables: Variables,
|
|
81
|
-
payload: GraphQLSingularResponse,
|
|
82
|
-
): void {
|
|
95
|
+
set(queryID: string, variables: Variables, payload: GraphQLResponse): void {
|
|
83
96
|
const fetchTime = Date.now();
|
|
84
97
|
const cacheKey = getCacheKey(queryID, variables);
|
|
85
98
|
this._responses.delete(cacheKey); // deletion resets key ordering
|
|
@@ -0,0 +1,99 @@
|
|
|
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
|
+
* @flow
|
|
8
|
+
* @format
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
// flowlint ambiguous-object-type:error
|
|
12
|
+
|
|
13
|
+
'use strict';
|
|
14
|
+
import type ActorSpecificEnvironment from '../multi-actor-environment/ActorSpecificEnvironment';
|
|
15
|
+
import type RelayModernEnvironment from '../store/RelayModernEnvironment';
|
|
16
|
+
import type {RequestParameters} from '../util/RelayConcreteNode';
|
|
17
|
+
import type {CacheConfig, Variables} from '../util/RelayRuntimeTypes';
|
|
18
|
+
import type {
|
|
19
|
+
GraphQLResponse,
|
|
20
|
+
INetwork,
|
|
21
|
+
UploadableMap,
|
|
22
|
+
} from './RelayNetworkTypes';
|
|
23
|
+
import type RelayObservable from './RelayObservable';
|
|
24
|
+
import type {Subscription} from './RelayObservable';
|
|
25
|
+
|
|
26
|
+
const generateID = require('../util/generateID');
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Wraps the network with logging to ensure that network requests are
|
|
30
|
+
* always logged. Relying on each network callsite to be wrapped is
|
|
31
|
+
* untenable and will eventually lead to holes in the logging.
|
|
32
|
+
* NOTE: This function takes an environment instance, because Relay
|
|
33
|
+
* devtools will mutate the `env.__log` method, and the devtools rely
|
|
34
|
+
* on it to receive network events.
|
|
35
|
+
*/
|
|
36
|
+
function wrapNetworkWithLogObserver(
|
|
37
|
+
env: RelayModernEnvironment | ActorSpecificEnvironment,
|
|
38
|
+
network: INetwork,
|
|
39
|
+
): INetwork {
|
|
40
|
+
return {
|
|
41
|
+
execute(
|
|
42
|
+
params: RequestParameters,
|
|
43
|
+
variables: Variables,
|
|
44
|
+
cacheConfig: CacheConfig,
|
|
45
|
+
uploadables?: ?UploadableMap,
|
|
46
|
+
): RelayObservable<GraphQLResponse> {
|
|
47
|
+
const networkRequestId = generateID();
|
|
48
|
+
const logObserver = {
|
|
49
|
+
start: (subscription: Subscription) => {
|
|
50
|
+
env.__log({
|
|
51
|
+
name: 'network.start',
|
|
52
|
+
networkRequestId,
|
|
53
|
+
params,
|
|
54
|
+
variables,
|
|
55
|
+
cacheConfig,
|
|
56
|
+
});
|
|
57
|
+
},
|
|
58
|
+
next: (response: GraphQLResponse) => {
|
|
59
|
+
env.__log({
|
|
60
|
+
name: 'network.next',
|
|
61
|
+
networkRequestId,
|
|
62
|
+
response,
|
|
63
|
+
});
|
|
64
|
+
},
|
|
65
|
+
error: (error: Error) => {
|
|
66
|
+
env.__log({
|
|
67
|
+
name: 'network.error',
|
|
68
|
+
networkRequestId,
|
|
69
|
+
error,
|
|
70
|
+
});
|
|
71
|
+
},
|
|
72
|
+
complete: () => {
|
|
73
|
+
env.__log({
|
|
74
|
+
name: 'network.complete',
|
|
75
|
+
networkRequestId,
|
|
76
|
+
});
|
|
77
|
+
},
|
|
78
|
+
unsubscribe: () => {
|
|
79
|
+
env.__log({
|
|
80
|
+
name: 'network.unsubscribe',
|
|
81
|
+
networkRequestId,
|
|
82
|
+
});
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
const logRequestInfo = (info: mixed) => {
|
|
86
|
+
env.__log({
|
|
87
|
+
name: 'network.info',
|
|
88
|
+
networkRequestId,
|
|
89
|
+
info,
|
|
90
|
+
});
|
|
91
|
+
};
|
|
92
|
+
return network
|
|
93
|
+
.execute(params, variables, cacheConfig, uploadables, logRequestInfo)
|
|
94
|
+
.do(logObserver);
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
module.exports = wrapNetworkWithLogObserver;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "relay-runtime",
|
|
3
3
|
"description": "A core runtime for building GraphQL-driven applications.",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "13.0.0-rc.2",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"graphql",
|
|
7
7
|
"relay"
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"repository": "facebook/relay",
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"@babel/runtime": "^7.0.0",
|
|
15
|
-
"fbjs": "^3.0.
|
|
15
|
+
"fbjs": "^3.0.2",
|
|
16
16
|
"invariant": "^2.2.4"
|
|
17
17
|
},
|
|
18
18
|
"directories": {
|
package/query/GraphQLTag.js.flow
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
3
|
*
|
|
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.
|
|
@@ -12,26 +12,26 @@
|
|
|
12
12
|
|
|
13
13
|
'use strict';
|
|
14
14
|
|
|
15
|
-
const RelayConcreteNode = require('../util/RelayConcreteNode');
|
|
16
|
-
|
|
17
|
-
const invariant = require('invariant');
|
|
18
|
-
const warning = require('warning');
|
|
19
|
-
|
|
20
15
|
import type {
|
|
21
16
|
ReaderFragment,
|
|
22
|
-
ReaderRefetchableFragment,
|
|
23
|
-
ReaderPaginationFragment,
|
|
24
17
|
ReaderInlineDataFragment,
|
|
18
|
+
ReaderPaginationFragment,
|
|
19
|
+
ReaderRefetchableFragment,
|
|
25
20
|
} from '../util/ReaderNode';
|
|
26
21
|
import type {ConcreteRequest} from '../util/RelayConcreteNode';
|
|
27
22
|
|
|
23
|
+
const RelayConcreteNode = require('../util/RelayConcreteNode');
|
|
24
|
+
const invariant = require('invariant');
|
|
25
|
+
const warning = require('warning');
|
|
26
|
+
|
|
28
27
|
// The type of a graphql`...` tagged template expression.
|
|
29
28
|
export type GraphQLTaggedNode =
|
|
30
29
|
| ReaderFragment
|
|
30
|
+
| ReaderInlineDataFragment
|
|
31
31
|
| ConcreteRequest
|
|
32
32
|
| {
|
|
33
33
|
// This is this case when we `require()` a generated ES6 module
|
|
34
|
-
default: ReaderFragment | ConcreteRequest,
|
|
34
|
+
default: ReaderFragment | ReaderInlineDataFragment | ConcreteRequest,
|
|
35
35
|
...
|
|
36
36
|
};
|
|
37
37
|
|
|
@@ -39,7 +39,7 @@ export type GraphQLTaggedNode =
|
|
|
39
39
|
* Runtime function to correspond to the `graphql` tagged template function.
|
|
40
40
|
* All calls to this function should be transformed by the plugin.
|
|
41
41
|
*/
|
|
42
|
-
function graphql(strings: Array<string>):
|
|
42
|
+
function graphql(strings: Array<string>): any {
|
|
43
43
|
invariant(
|
|
44
44
|
false,
|
|
45
45
|
'graphql: Unexpected invocation at runtime. Either the Babel transform ' +
|
|
@@ -51,7 +51,7 @@ function graphql(strings: Array<string>): GraphQLTaggedNode {
|
|
|
51
51
|
|
|
52
52
|
function getNode(
|
|
53
53
|
taggedNode: GraphQLTaggedNode,
|
|
54
|
-
): ReaderFragment | ConcreteRequest {
|
|
54
|
+
): ReaderFragment | ReaderInlineDataFragment | ConcreteRequest {
|
|
55
55
|
let node = taggedNode;
|
|
56
56
|
if (typeof node === 'function') {
|
|
57
57
|
node = (node(): ReaderFragment | ConcreteRequest);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
3
|
*
|
|
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.
|
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
|
|
12
12
|
'use strict';
|
|
13
13
|
|
|
14
|
-
import type {ConcreteRequest
|
|
14
|
+
import type {ConcreteRequest} from '../util/RelayConcreteNode';
|
|
15
|
+
import type {Disposable} from '../util/RelayRuntimeTypes';
|
|
15
16
|
|
|
16
17
|
type Callback = (concreteRequest: ConcreteRequest) => void;
|
|
17
18
|
|
|
@@ -60,6 +61,7 @@ class PreloadableQueryRegistry {
|
|
|
60
61
|
}
|
|
61
62
|
}
|
|
62
63
|
|
|
63
|
-
const preloadableQueryRegistry: PreloadableQueryRegistry =
|
|
64
|
+
const preloadableQueryRegistry: PreloadableQueryRegistry =
|
|
65
|
+
new PreloadableQueryRegistry();
|
|
64
66
|
|
|
65
67
|
module.exports = preloadableQueryRegistry;
|
package/query/fetchQuery.js.flow
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
3
|
*
|
|
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.
|
|
@@ -13,27 +13,27 @@
|
|
|
13
13
|
|
|
14
14
|
'use strict';
|
|
15
15
|
|
|
16
|
-
const RelayObservable = require('../network/RelayObservable');
|
|
17
|
-
|
|
18
|
-
const fetchQueryInternal = require('./fetchQueryInternal');
|
|
19
|
-
const invariant = require('invariant');
|
|
20
|
-
const reportMissingRequiredFields = require('../util/reportMissingRequiredFields');
|
|
21
|
-
|
|
22
|
-
const {
|
|
23
|
-
createOperationDescriptor,
|
|
24
|
-
} = require('../store/RelayModernOperationDescriptor');
|
|
25
|
-
const {getRequest} = require('./GraphQLTag');
|
|
26
|
-
|
|
27
16
|
import type {
|
|
28
|
-
CacheConfig,
|
|
29
|
-
FetchQueryFetchPolicy,
|
|
30
|
-
GraphQLTaggedNode,
|
|
31
17
|
IEnvironment,
|
|
32
18
|
OperationDescriptor,
|
|
33
|
-
OperationType,
|
|
34
19
|
Snapshot,
|
|
20
|
+
} from '../store/RelayStoreTypes';
|
|
21
|
+
import type {
|
|
22
|
+
CacheConfig,
|
|
23
|
+
FetchQueryFetchPolicy,
|
|
24
|
+
OperationType,
|
|
35
25
|
VariablesOf,
|
|
36
|
-
} from '
|
|
26
|
+
} from '../util/RelayRuntimeTypes';
|
|
27
|
+
import type {GraphQLTaggedNode} from './GraphQLTag';
|
|
28
|
+
|
|
29
|
+
const RelayObservable = require('../network/RelayObservable');
|
|
30
|
+
const {
|
|
31
|
+
createOperationDescriptor,
|
|
32
|
+
} = require('../store/RelayModernOperationDescriptor');
|
|
33
|
+
const reportMissingRequiredFields = require('../util/reportMissingRequiredFields');
|
|
34
|
+
const fetchQueryInternal = require('./fetchQueryInternal');
|
|
35
|
+
const {getRequest} = require('./GraphQLTag');
|
|
36
|
+
const invariant = require('invariant');
|
|
37
37
|
|
|
38
38
|
/**
|
|
39
39
|
* Fetches the given query and variables on the provided environment,
|
|
@@ -120,7 +120,7 @@ function fetchQuery<TQuery: OperationType>(
|
|
|
120
120
|
fetchPolicy?: FetchQueryFetchPolicy,
|
|
121
121
|
networkCacheConfig?: CacheConfig,
|
|
122
122
|
|}>,
|
|
123
|
-
): RelayObservable
|
|
123
|
+
): RelayObservable<TQuery['response']> {
|
|
124
124
|
const queryNode = getRequest(query);
|
|
125
125
|
invariant(
|
|
126
126
|
queryNode.params.operationKind === 'query',
|
|
@@ -165,7 +165,7 @@ function fetchQuery<TQuery: OperationType>(
|
|
|
165
165
|
function getNetworkObservable<TQuery: OperationType>(
|
|
166
166
|
environment: IEnvironment,
|
|
167
167
|
operation: OperationDescriptor,
|
|
168
|
-
): RelayObservable
|
|
168
|
+
): RelayObservable<TQuery['response']> {
|
|
169
169
|
return fetchQueryInternal
|
|
170
170
|
.fetchQuery(environment, operation)
|
|
171
171
|
.map(() => environment.lookup(operation.fragment));
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
3
|
*
|
|
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.
|
|
@@ -12,11 +12,6 @@
|
|
|
12
12
|
|
|
13
13
|
'use strict';
|
|
14
14
|
|
|
15
|
-
const Observable = require('../network/RelayObservable');
|
|
16
|
-
const RelayReplaySubject = require('../util/RelayReplaySubject');
|
|
17
|
-
|
|
18
|
-
const invariant = require('invariant');
|
|
19
|
-
|
|
20
15
|
import type {GraphQLResponse} from '../network/RelayNetworkTypes';
|
|
21
16
|
import type {Subscription} from '../network/RelayObservable';
|
|
22
17
|
import type {
|
|
@@ -26,6 +21,10 @@ import type {
|
|
|
26
21
|
} from '../store/RelayStoreTypes';
|
|
27
22
|
import type {RequestIdentifier} from '../util/getRequestIdentifier';
|
|
28
23
|
|
|
24
|
+
const Observable = require('../network/RelayObservable');
|
|
25
|
+
const RelayReplaySubject = require('../util/RelayReplaySubject');
|
|
26
|
+
const invariant = require('invariant');
|
|
27
|
+
|
|
29
28
|
type RequestCacheEntry = {|
|
|
30
29
|
+identifier: RequestIdentifier,
|
|
31
30
|
+subject: RelayReplaySubject<GraphQLResponse>,
|
|
@@ -307,10 +306,8 @@ function getObservableForActiveRequest(
|
|
|
307
306
|
function getRequestCache(
|
|
308
307
|
environment: IEnvironment,
|
|
309
308
|
): Map<RequestIdentifier, RequestCacheEntry> {
|
|
310
|
-
const cached: ?Map<
|
|
311
|
-
|
|
312
|
-
RequestCacheEntry,
|
|
313
|
-
> = requestCachesByEnvironment.get(environment);
|
|
309
|
+
const cached: ?Map<RequestIdentifier, RequestCacheEntry> =
|
|
310
|
+
requestCachesByEnvironment.get(environment);
|
|
314
311
|
if (cached != null) {
|
|
315
312
|
return cached;
|
|
316
313
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Copyright (c)
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
3
|
*
|
|
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.
|
|
@@ -12,15 +12,15 @@
|
|
|
12
12
|
|
|
13
13
|
'use strict';
|
|
14
14
|
|
|
15
|
+
import type {IEnvironment} from '../store/RelayStoreTypes';
|
|
16
|
+
import type {CacheConfig, OperationType} from '../util/RelayRuntimeTypes';
|
|
17
|
+
import type {GraphQLTaggedNode} from './GraphQLTag';
|
|
18
|
+
|
|
15
19
|
const {
|
|
16
20
|
createOperationDescriptor,
|
|
17
21
|
} = require('../store/RelayModernOperationDescriptor');
|
|
18
22
|
const {getRequest} = require('./GraphQLTag');
|
|
19
23
|
|
|
20
|
-
import type {IEnvironment} from '../store/RelayStoreTypes';
|
|
21
|
-
import type {CacheConfig, OperationType} from '../util/RelayRuntimeTypes';
|
|
22
|
-
import type {GraphQLTaggedNode} from './GraphQLTag';
|
|
23
|
-
|
|
24
24
|
/**
|
|
25
25
|
* A helper function to fetch the results of a query. Note that results for
|
|
26
26
|
* fragment spreads are masked: fields must be explicitly listed in the query in
|
|
@@ -30,9 +30,9 @@ import type {GraphQLTaggedNode} from './GraphQLTag';
|
|
|
30
30
|
function fetchQuery_DEPRECATED<T: OperationType>(
|
|
31
31
|
environment: IEnvironment,
|
|
32
32
|
taggedNode: GraphQLTaggedNode,
|
|
33
|
-
variables:
|
|
33
|
+
variables: T['variables'],
|
|
34
34
|
cacheConfig?: ?CacheConfig,
|
|
35
|
-
): Promise
|
|
35
|
+
): Promise<T['response']> {
|
|
36
36
|
const query = getRequest(taggedNode);
|
|
37
37
|
if (query.params.operationKind !== 'query') {
|
|
38
38
|
throw new Error('fetchQuery: Expected query operation');
|