relay-runtime 11.0.1 → 13.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/handlers/RelayDefaultHandlerProvider.js.flow +2 -2
- package/handlers/connection/ConnectionHandler.js.flow +8 -17
- package/handlers/connection/MutationHandlers.js.flow +7 -11
- package/index.js +1 -1
- package/index.js.flow +60 -36
- package/lib/handlers/RelayDefaultHandlerProvider.js +1 -1
- package/lib/handlers/connection/ConnectionHandler.js +13 -19
- package/lib/handlers/connection/MutationHandlers.js +4 -7
- package/lib/index.js +58 -43
- package/lib/multi-actor-environment/ActorIdentifier.js +33 -0
- package/lib/multi-actor-environment/ActorSpecificEnvironment.js +152 -0
- package/lib/multi-actor-environment/ActorUtils.js +27 -0
- package/lib/multi-actor-environment/MultiActorEnvironment.js +419 -0
- package/lib/multi-actor-environment/MultiActorEnvironmentTypes.js +11 -0
- package/lib/multi-actor-environment/index.js +21 -0
- package/lib/mutations/RelayDeclarativeMutationConfig.js +4 -1
- package/lib/mutations/RelayRecordProxy.js +3 -2
- package/lib/mutations/RelayRecordSourceMutator.js +3 -2
- package/lib/mutations/RelayRecordSourceProxy.js +12 -4
- package/lib/mutations/RelayRecordSourceSelectorProxy.js +18 -5
- package/lib/mutations/applyOptimisticMutation.js +6 -6
- package/lib/mutations/commitMutation.js +14 -10
- package/lib/mutations/readUpdatableQuery_EXPERIMENTAL.js +238 -0
- package/lib/mutations/validateMutation.js +10 -5
- package/lib/network/ConvertToExecuteFunction.js +2 -1
- package/lib/network/RelayNetwork.js +3 -2
- package/lib/network/RelayQueryResponseCache.js +21 -5
- package/lib/network/wrapNetworkWithLogObserver.js +79 -0
- package/lib/query/GraphQLTag.js +3 -2
- package/lib/query/fetchQuery.js +6 -5
- package/lib/query/fetchQueryInternal.js +1 -1
- package/lib/query/fetchQuery_DEPRECATED.js +2 -1
- package/lib/store/ClientID.js +7 -1
- package/lib/store/DataChecker.js +123 -54
- package/lib/store/{RelayModernQueryExecutor.js → OperationExecutor.js} +518 -200
- package/lib/store/RelayConcreteVariables.js +26 -8
- package/lib/store/RelayExperimentalGraphResponseHandler.js +153 -0
- package/lib/store/RelayExperimentalGraphResponseTransform.js +391 -0
- package/lib/store/RelayModernEnvironment.js +175 -240
- package/lib/store/RelayModernFragmentSpecResolver.js +52 -26
- package/lib/store/RelayModernOperationDescriptor.js +2 -1
- package/lib/store/RelayModernRecord.js +47 -12
- package/lib/store/RelayModernSelector.js +14 -8
- package/lib/store/RelayModernStore.js +56 -28
- package/lib/store/RelayOperationTracker.js +34 -24
- package/lib/store/RelayPublishQueue.js +41 -13
- package/lib/store/RelayReader.js +288 -48
- package/lib/store/RelayRecordSource.js +87 -3
- package/lib/store/RelayReferenceMarker.js +34 -22
- package/lib/store/RelayResponseNormalizer.js +211 -110
- package/lib/store/RelayStoreReactFlightUtils.js +4 -10
- package/lib/store/RelayStoreSubscriptions.js +14 -9
- package/lib/store/RelayStoreUtils.js +12 -7
- package/lib/store/ResolverCache.js +213 -0
- package/lib/store/ResolverFragments.js +61 -0
- package/lib/store/cloneRelayHandleSourceField.js +5 -4
- package/lib/store/cloneRelayScalarHandleSourceField.js +5 -4
- package/lib/store/createRelayContext.js +4 -2
- package/lib/store/readInlineData.js +6 -2
- package/lib/subscription/requestSubscription.js +34 -25
- package/lib/util/RelayConcreteNode.js +3 -0
- package/lib/util/RelayFeatureFlags.js +10 -4
- package/lib/util/RelayProfiler.js +17 -187
- package/lib/util/RelayReplaySubject.js +22 -7
- package/lib/util/RelayRuntimeTypes.js +0 -6
- package/lib/util/StringInterner.js +71 -0
- package/lib/util/getFragmentIdentifier.js +15 -7
- package/lib/util/getOperation.js +2 -1
- 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 +2 -2
- package/lib/util/getRequestIdentifier.js +2 -2
- package/lib/util/getValueAtPath.js +51 -0
- package/lib/util/isEmptyObject.js +1 -1
- package/lib/util/registerEnvironmentWithDevTools.js +26 -0
- package/lib/util/withDuration.js +31 -0
- package/multi-actor-environment/ActorIdentifier.js.flow +43 -0
- package/multi-actor-environment/ActorSpecificEnvironment.js.flow +225 -0
- package/multi-actor-environment/ActorUtils.js.flow +33 -0
- package/multi-actor-environment/MultiActorEnvironment.js.flow +506 -0
- package/multi-actor-environment/MultiActorEnvironmentTypes.js.flow +261 -0
- package/multi-actor-environment/index.js.flow +26 -0
- package/mutations/RelayDeclarativeMutationConfig.js.flow +32 -26
- package/mutations/RelayRecordProxy.js.flow +4 -5
- package/mutations/RelayRecordSourceMutator.js.flow +4 -6
- package/mutations/RelayRecordSourceProxy.js.flow +19 -10
- package/mutations/RelayRecordSourceSelectorProxy.js.flow +22 -7
- package/mutations/applyOptimisticMutation.js.flow +13 -14
- package/mutations/commitLocalUpdate.js.flow +1 -1
- package/mutations/commitMutation.js.flow +35 -46
- package/mutations/readUpdatableQuery_EXPERIMENTAL.js.flow +309 -0
- package/mutations/validateMutation.js.flow +26 -16
- package/network/ConvertToExecuteFunction.js.flow +2 -2
- package/network/RelayNetwork.js.flow +4 -5
- package/network/RelayNetworkTypes.js.flow +5 -4
- package/network/RelayObservable.js.flow +1 -1
- package/network/RelayQueryResponseCache.js.flow +34 -21
- package/network/wrapNetworkWithLogObserver.js.flow +100 -0
- package/package.json +3 -2
- package/query/GraphQLTag.js.flow +9 -9
- package/query/PreloadableQueryRegistry.js.flow +2 -1
- package/query/fetchQuery.js.flow +11 -13
- package/query/fetchQueryInternal.js.flow +6 -9
- package/query/fetchQuery_DEPRECATED.js.flow +6 -6
- package/relay-runtime.js +2 -2
- package/relay-runtime.min.js +2 -2
- package/store/ClientID.js.flow +14 -3
- package/store/DataChecker.js.flow +141 -59
- package/store/{RelayModernQueryExecutor.js.flow → OperationExecutor.js.flow} +605 -303
- package/store/RelayConcreteVariables.js.flow +27 -8
- package/store/RelayExperimentalGraphResponseHandler.js.flow +124 -0
- package/store/RelayExperimentalGraphResponseTransform.js.flow +475 -0
- package/store/RelayModernEnvironment.js.flow +173 -240
- package/store/RelayModernFragmentSpecResolver.js.flow +55 -31
- package/store/RelayModernOperationDescriptor.js.flow +12 -7
- package/store/RelayModernRecord.js.flow +67 -11
- package/store/RelayModernSelector.js.flow +24 -14
- package/store/RelayModernStore.js.flow +66 -36
- package/store/RelayOperationTracker.js.flow +59 -43
- package/store/RelayOptimisticRecordSource.js.flow +2 -2
- package/store/RelayPublishQueue.js.flow +79 -34
- package/store/RelayReader.js.flow +351 -73
- package/store/RelayRecordSource.js.flow +72 -6
- package/store/RelayReferenceMarker.js.flow +40 -26
- package/store/RelayResponseNormalizer.js.flow +258 -99
- package/store/RelayStoreReactFlightUtils.js.flow +4 -11
- package/store/RelayStoreSubscriptions.js.flow +19 -11
- package/store/RelayStoreTypes.js.flow +209 -43
- package/store/RelayStoreUtils.js.flow +24 -11
- package/store/ResolverCache.js.flow +249 -0
- package/store/ResolverFragments.js.flow +121 -0
- package/store/StoreInspector.js.flow +2 -2
- package/store/TypeID.js.flow +1 -1
- package/store/ViewerPattern.js.flow +2 -2
- package/store/cloneRelayHandleSourceField.js.flow +5 -6
- package/store/cloneRelayScalarHandleSourceField.js.flow +5 -6
- package/store/createFragmentSpecResolver.js.flow +3 -4
- package/store/createRelayContext.js.flow +3 -3
- package/store/normalizeRelayPayload.js.flow +6 -7
- package/store/readInlineData.js.flow +7 -8
- package/subscription/requestSubscription.js.flow +53 -41
- package/util/NormalizationNode.js.flow +10 -3
- package/util/ReaderNode.js.flow +38 -2
- package/util/RelayConcreteNode.js.flow +5 -0
- package/util/RelayFeatureFlags.js.flow +24 -10
- package/util/RelayProfiler.js.flow +22 -194
- package/util/RelayReplaySubject.js.flow +9 -9
- package/util/RelayRuntimeTypes.js.flow +72 -3
- package/util/StringInterner.js.flow +69 -0
- package/util/createPayloadFor3DField.js.flow +3 -3
- package/util/getFragmentIdentifier.js.flow +27 -15
- package/util/getOperation.js.flow +2 -2
- package/util/getPaginationMetadata.js.flow +72 -0
- package/util/getPaginationVariables.js.flow +108 -0
- package/util/getPendingOperationsForFragment.js.flow +62 -0
- package/util/getRefetchMetadata.js.flow +79 -0
- package/util/getRelayHandleKey.js.flow +1 -2
- package/util/getRequestIdentifier.js.flow +3 -3
- package/util/getValueAtPath.js.flow +46 -0
- package/util/isEmptyObject.js.flow +1 -0
- package/util/registerEnvironmentWithDevTools.js.flow +33 -0
- package/util/resolveImmediate.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
package/lib/query/fetchQuery.js
CHANGED
|
@@ -17,18 +17,17 @@ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/obje
|
|
|
17
17
|
|
|
18
18
|
var RelayObservable = require('../network/RelayObservable');
|
|
19
19
|
|
|
20
|
-
var
|
|
21
|
-
|
|
22
|
-
var invariant = require("fbjs/lib/invariant");
|
|
20
|
+
var _require = require('../store/RelayModernOperationDescriptor'),
|
|
21
|
+
createOperationDescriptor = _require.createOperationDescriptor;
|
|
23
22
|
|
|
24
23
|
var reportMissingRequiredFields = require('../util/reportMissingRequiredFields');
|
|
25
24
|
|
|
26
|
-
var
|
|
27
|
-
createOperationDescriptor = _require.createOperationDescriptor;
|
|
25
|
+
var fetchQueryInternal = require('./fetchQueryInternal');
|
|
28
26
|
|
|
29
27
|
var _require2 = require('./GraphQLTag'),
|
|
30
28
|
getRequest = _require2.getRequest;
|
|
31
29
|
|
|
30
|
+
var invariant = require('invariant');
|
|
32
31
|
/**
|
|
33
32
|
* Fetches the given query and variables on the provided environment,
|
|
34
33
|
* and de-dupes identical in-flight requests.
|
|
@@ -106,6 +105,8 @@ var _require2 = require('./GraphQLTag'),
|
|
|
106
105
|
* ```
|
|
107
106
|
* NOTE: When using .toPromise(), the request cannot be cancelled.
|
|
108
107
|
*/
|
|
108
|
+
|
|
109
|
+
|
|
109
110
|
function fetchQuery(environment, query, variables, options) {
|
|
110
111
|
var _options$fetchPolicy;
|
|
111
112
|
|
|
@@ -14,7 +14,7 @@ var Observable = require('../network/RelayObservable');
|
|
|
14
14
|
|
|
15
15
|
var RelayReplaySubject = require('../util/RelayReplaySubject');
|
|
16
16
|
|
|
17
|
-
var invariant = require(
|
|
17
|
+
var invariant = require('invariant');
|
|
18
18
|
|
|
19
19
|
var WEAKMAP_SUPPORTED = typeof WeakMap === 'function';
|
|
20
20
|
var requestCachesByEnvironment = WEAKMAP_SUPPORTED ? new WeakMap() : new Map();
|
|
@@ -15,12 +15,13 @@ var _require = require('../store/RelayModernOperationDescriptor'),
|
|
|
15
15
|
|
|
16
16
|
var _require2 = require('./GraphQLTag'),
|
|
17
17
|
getRequest = _require2.getRequest;
|
|
18
|
-
|
|
19
18
|
/**
|
|
20
19
|
* A helper function to fetch the results of a query. Note that results for
|
|
21
20
|
* fragment spreads are masked: fields must be explicitly listed in the query in
|
|
22
21
|
* order to be accessible in the result object.
|
|
23
22
|
*/
|
|
23
|
+
|
|
24
|
+
|
|
24
25
|
function fetchQuery_DEPRECATED(environment, taggedNode, variables, cacheConfig) {
|
|
25
26
|
var query = getRequest(taggedNode);
|
|
26
27
|
|
package/lib/store/ClientID.js
CHANGED
|
@@ -10,10 +10,16 @@
|
|
|
10
10
|
// flowlint ambiguous-object-type:error
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
+
var RelayFeatureFlags = require('../util/RelayFeatureFlags');
|
|
14
|
+
|
|
15
|
+
var _require = require('../util/StringInterner'),
|
|
16
|
+
intern = _require.intern;
|
|
17
|
+
|
|
13
18
|
var PREFIX = 'client:';
|
|
14
19
|
|
|
15
20
|
function generateClientID(id, storageKey, index) {
|
|
16
|
-
var
|
|
21
|
+
var internedId = RelayFeatureFlags.STRING_INTERN_LEVEL <= 0 ? id : intern(id, RelayFeatureFlags.MAX_DATA_ID_LENGTH);
|
|
22
|
+
var key = internedId + ':' + storageKey;
|
|
17
23
|
|
|
18
24
|
if (index != null) {
|
|
19
25
|
key += ':' + index;
|
package/lib/store/DataChecker.js
CHANGED
|
@@ -15,39 +15,43 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
15
15
|
|
|
16
16
|
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
|
|
17
17
|
|
|
18
|
-
var RelayConcreteNode = require('../util/RelayConcreteNode');
|
|
19
|
-
|
|
20
|
-
var RelayFeatureFlags = require('../util/RelayFeatureFlags');
|
|
21
|
-
|
|
22
|
-
var RelayModernRecord = require('./RelayModernRecord');
|
|
23
|
-
|
|
24
18
|
var RelayRecordSourceMutator = require('../mutations/RelayRecordSourceMutator');
|
|
25
19
|
|
|
26
20
|
var RelayRecordSourceProxy = require('../mutations/RelayRecordSourceProxy');
|
|
27
21
|
|
|
28
|
-
var
|
|
22
|
+
var getOperation = require('../util/getOperation');
|
|
29
23
|
|
|
30
|
-
var
|
|
24
|
+
var RelayConcreteNode = require('../util/RelayConcreteNode');
|
|
25
|
+
|
|
26
|
+
var RelayFeatureFlags = require('../util/RelayFeatureFlags');
|
|
27
|
+
|
|
28
|
+
var _require = require('./ClientID'),
|
|
29
|
+
isClientID = _require.isClientID;
|
|
31
30
|
|
|
32
31
|
var cloneRelayHandleSourceField = require('./cloneRelayHandleSourceField');
|
|
33
32
|
|
|
34
33
|
var cloneRelayScalarHandleSourceField = require('./cloneRelayScalarHandleSourceField');
|
|
35
34
|
|
|
36
|
-
var
|
|
35
|
+
var _require2 = require('./RelayConcreteVariables'),
|
|
36
|
+
getLocalVariables = _require2.getLocalVariables;
|
|
37
37
|
|
|
38
|
-
var
|
|
38
|
+
var RelayModernRecord = require('./RelayModernRecord');
|
|
39
39
|
|
|
40
|
-
var
|
|
41
|
-
|
|
40
|
+
var _require3 = require('./RelayRecordState'),
|
|
41
|
+
EXISTENT = _require3.EXISTENT,
|
|
42
|
+
UNKNOWN = _require3.UNKNOWN;
|
|
43
|
+
|
|
44
|
+
var RelayStoreReactFlightUtils = require('./RelayStoreReactFlightUtils');
|
|
45
|
+
|
|
46
|
+
var RelayStoreUtils = require('./RelayStoreUtils');
|
|
42
47
|
|
|
43
|
-
var
|
|
44
|
-
|
|
45
|
-
UNKNOWN = _require2.UNKNOWN;
|
|
48
|
+
var _require4 = require('./TypeID'),
|
|
49
|
+
generateTypeID = _require4.generateTypeID;
|
|
46
50
|
|
|
47
|
-
var
|
|
48
|
-
generateTypeID = _require3.generateTypeID;
|
|
51
|
+
var invariant = require('invariant');
|
|
49
52
|
|
|
50
|
-
var
|
|
53
|
+
var ACTOR_CHANGE = RelayConcreteNode.ACTOR_CHANGE,
|
|
54
|
+
CONDITION = RelayConcreteNode.CONDITION,
|
|
51
55
|
CLIENT_COMPONENT = RelayConcreteNode.CLIENT_COMPONENT,
|
|
52
56
|
CLIENT_EXTENSION = RelayConcreteNode.CLIENT_EXTENSION,
|
|
53
57
|
DEFER = RelayConcreteNode.DEFER,
|
|
@@ -76,11 +80,11 @@ var ROOT_ID = RelayStoreUtils.ROOT_ID,
|
|
|
76
80
|
* If all records are present, returns `true`, otherwise `false`.
|
|
77
81
|
*/
|
|
78
82
|
|
|
79
|
-
function check(
|
|
83
|
+
function check(getSourceForActor, getTargetForActor, defaultActorIdentifier, selector, handlers, operationLoader, getDataID, shouldProcessClientComponents) {
|
|
80
84
|
var dataID = selector.dataID,
|
|
81
85
|
node = selector.node,
|
|
82
86
|
variables = selector.variables;
|
|
83
|
-
var checker = new DataChecker(
|
|
87
|
+
var checker = new DataChecker(getSourceForActor, getTargetForActor, defaultActorIdentifier, variables, handlers, operationLoader, getDataID, shouldProcessClientComponents);
|
|
84
88
|
return checker.check(node, dataID);
|
|
85
89
|
}
|
|
86
90
|
/**
|
|
@@ -89,21 +93,45 @@ function check(source, target, selector, handlers, operationLoader, getDataID, s
|
|
|
89
93
|
|
|
90
94
|
|
|
91
95
|
var DataChecker = /*#__PURE__*/function () {
|
|
92
|
-
function DataChecker(
|
|
93
|
-
|
|
96
|
+
function DataChecker(getSourceForActor, getTargetForActor, defaultActorIdentifier, variables, handlers, operationLoader, getDataID, shouldProcessClientComponents) {
|
|
97
|
+
this._getSourceForActor = getSourceForActor;
|
|
98
|
+
this._getTargetForActor = getTargetForActor;
|
|
99
|
+
this._getDataID = getDataID;
|
|
100
|
+
this._source = getSourceForActor(defaultActorIdentifier);
|
|
101
|
+
this._mutatorRecordSourceProxyCache = new Map();
|
|
102
|
+
|
|
103
|
+
var _this$_getMutatorAndR = this._getMutatorAndRecordProxyForActor(defaultActorIdentifier),
|
|
104
|
+
mutator = _this$_getMutatorAndR[0],
|
|
105
|
+
recordSourceProxy = _this$_getMutatorAndR[1];
|
|
106
|
+
|
|
94
107
|
this._mostRecentlyInvalidatedAt = null;
|
|
95
108
|
this._handlers = handlers;
|
|
96
109
|
this._mutator = mutator;
|
|
97
110
|
this._operationLoader = operationLoader !== null && operationLoader !== void 0 ? operationLoader : null;
|
|
98
|
-
this._recordSourceProxy =
|
|
111
|
+
this._recordSourceProxy = recordSourceProxy;
|
|
99
112
|
this._recordWasMissing = false;
|
|
100
|
-
this._source = source;
|
|
101
113
|
this._variables = variables;
|
|
102
114
|
this._shouldProcessClientComponents = shouldProcessClientComponents;
|
|
103
115
|
}
|
|
104
116
|
|
|
105
117
|
var _proto = DataChecker.prototype;
|
|
106
118
|
|
|
119
|
+
_proto._getMutatorAndRecordProxyForActor = function _getMutatorAndRecordProxyForActor(actorIdentifier) {
|
|
120
|
+
var tuple = this._mutatorRecordSourceProxyCache.get(actorIdentifier);
|
|
121
|
+
|
|
122
|
+
if (tuple == null) {
|
|
123
|
+
var target = this._getTargetForActor(actorIdentifier);
|
|
124
|
+
|
|
125
|
+
var mutator = new RelayRecordSourceMutator(this._getSourceForActor(actorIdentifier), target);
|
|
126
|
+
var recordSourceProxy = new RelayRecordSourceProxy(mutator, this._getDataID);
|
|
127
|
+
tuple = [mutator, recordSourceProxy];
|
|
128
|
+
|
|
129
|
+
this._mutatorRecordSourceProxyCache.set(actorIdentifier, tuple);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
return tuple;
|
|
133
|
+
};
|
|
134
|
+
|
|
107
135
|
_proto.check = function check(node, dataID) {
|
|
108
136
|
this._traverse(node, dataID);
|
|
109
137
|
|
|
@@ -117,8 +145,7 @@ var DataChecker = /*#__PURE__*/function () {
|
|
|
117
145
|
};
|
|
118
146
|
|
|
119
147
|
_proto._getVariableValue = function _getVariableValue(name) {
|
|
120
|
-
!this._variables.hasOwnProperty(name) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayAsyncLoader(): Undefined variable `%s`.', name) : invariant(false) : void 0;
|
|
121
|
-
|
|
148
|
+
!this._variables.hasOwnProperty(name) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayAsyncLoader(): Undefined variable `%s`.', name) : invariant(false) : void 0;
|
|
122
149
|
return this._variables[name];
|
|
123
150
|
};
|
|
124
151
|
|
|
@@ -128,6 +155,8 @@ var DataChecker = /*#__PURE__*/function () {
|
|
|
128
155
|
|
|
129
156
|
_proto._getDataForHandlers = function _getDataForHandlers(field, dataID) {
|
|
130
157
|
return {
|
|
158
|
+
/* $FlowFixMe[class-object-subtyping] added when improving typing for
|
|
159
|
+
* this parameters */
|
|
131
160
|
args: field.args ? getArgumentValues(field.args, this._variables) : {},
|
|
132
161
|
// Getting a snapshot of the record state is potentially expensive since
|
|
133
162
|
// we will need to merge the sink and source records. Since we do not create
|
|
@@ -279,8 +308,13 @@ var DataChecker = /*#__PURE__*/function () {
|
|
|
279
308
|
|
|
280
309
|
break;
|
|
281
310
|
|
|
311
|
+
case ACTOR_CHANGE:
|
|
312
|
+
_this2._checkActorChange(selection.linkedField, dataID);
|
|
313
|
+
|
|
314
|
+
break;
|
|
315
|
+
|
|
282
316
|
case CONDITION:
|
|
283
|
-
var conditionValue = _this2._getVariableValue(selection.condition);
|
|
317
|
+
var conditionValue = Boolean(_this2._getVariableValue(selection.condition));
|
|
284
318
|
|
|
285
319
|
if (conditionValue === selection.passingValue) {
|
|
286
320
|
_this2._traverseSelections(selection.selections, dataID);
|
|
@@ -290,16 +324,16 @@ var DataChecker = /*#__PURE__*/function () {
|
|
|
290
324
|
|
|
291
325
|
case INLINE_FRAGMENT:
|
|
292
326
|
{
|
|
293
|
-
var
|
|
327
|
+
var _abstractKey = selection.abstractKey;
|
|
294
328
|
|
|
295
|
-
if (
|
|
329
|
+
if (_abstractKey == null) {
|
|
296
330
|
// concrete type refinement: only check data if the type exactly matches
|
|
297
331
|
var typeName = _this2._mutator.getType(dataID);
|
|
298
332
|
|
|
299
333
|
if (typeName === selection.type) {
|
|
300
334
|
_this2._traverseSelections(selection.selections, dataID);
|
|
301
335
|
}
|
|
302
|
-
} else
|
|
336
|
+
} else {
|
|
303
337
|
// Abstract refinement: check data depending on whether the type
|
|
304
338
|
// conforms to the interface/union or not:
|
|
305
339
|
// - Type known to _not_ implement the interface: don't check the selections.
|
|
@@ -307,25 +341,22 @@ var DataChecker = /*#__PURE__*/function () {
|
|
|
307
341
|
// - Unknown whether the type implements the interface: don't check the selections
|
|
308
342
|
// and treat the data as missing; we do this because the Relay Compiler
|
|
309
343
|
// guarantees that the type discriminator will always be fetched.
|
|
310
|
-
var
|
|
344
|
+
var _recordType = _this2._mutator.getType(dataID);
|
|
311
345
|
|
|
312
|
-
!(
|
|
313
|
-
var typeID = generateTypeID(recordType);
|
|
346
|
+
!(_recordType != null) ? process.env.NODE_ENV !== "production" ? invariant(false, 'DataChecker: Expected record `%s` to have a known type', dataID) : invariant(false) : void 0;
|
|
314
347
|
|
|
315
|
-
var
|
|
348
|
+
var _typeID = generateTypeID(_recordType);
|
|
316
349
|
|
|
317
|
-
|
|
350
|
+
var _implementsInterface = _this2._mutator.getValue(_typeID, _abstractKey);
|
|
351
|
+
|
|
352
|
+
if (_implementsInterface === true) {
|
|
318
353
|
_this2._traverseSelections(selection.selections, dataID);
|
|
319
|
-
} else if (
|
|
354
|
+
} else if (_implementsInterface == null) {
|
|
320
355
|
// unsure if the type implements the interface: data is
|
|
321
356
|
// missing so don't bother reading the fragment
|
|
322
357
|
_this2._handleMissing();
|
|
323
358
|
} // else false: known to not implement the interface
|
|
324
359
|
|
|
325
|
-
} else {
|
|
326
|
-
// legacy behavior for abstract refinements: always check even
|
|
327
|
-
// if the type doesn't conform
|
|
328
|
-
_this2._traverseSelections(selection.selections, dataID);
|
|
329
360
|
}
|
|
330
361
|
|
|
331
362
|
break;
|
|
@@ -365,11 +396,14 @@ var DataChecker = /*#__PURE__*/function () {
|
|
|
365
396
|
_this2._traverseSelections(selection.selections, dataID);
|
|
366
397
|
|
|
367
398
|
break;
|
|
368
|
-
// $FlowFixMe[incompatible-type]
|
|
369
399
|
|
|
370
400
|
case FRAGMENT_SPREAD:
|
|
401
|
+
var prevVariables = _this2._variables;
|
|
402
|
+
_this2._variables = getLocalVariables(_this2._variables, selection.fragment.argumentDefinitions, selection.args);
|
|
403
|
+
|
|
371
404
|
_this2._traverseSelections(selection.fragment.selections, dataID);
|
|
372
405
|
|
|
406
|
+
_this2._variables = prevVariables;
|
|
373
407
|
break;
|
|
374
408
|
|
|
375
409
|
case CLIENT_EXTENSION:
|
|
@@ -381,24 +415,21 @@ var DataChecker = /*#__PURE__*/function () {
|
|
|
381
415
|
break;
|
|
382
416
|
|
|
383
417
|
case TYPE_DISCRIMINATOR:
|
|
384
|
-
|
|
385
|
-
var _abstractKey = selection.abstractKey;
|
|
418
|
+
var abstractKey = selection.abstractKey;
|
|
386
419
|
|
|
387
|
-
|
|
420
|
+
var recordType = _this2._mutator.getType(dataID);
|
|
388
421
|
|
|
389
|
-
|
|
422
|
+
!(recordType != null) ? process.env.NODE_ENV !== "production" ? invariant(false, 'DataChecker: Expected record `%s` to have a known type', dataID) : invariant(false) : void 0;
|
|
423
|
+
var typeID = generateTypeID(recordType);
|
|
390
424
|
|
|
391
|
-
|
|
425
|
+
var implementsInterface = _this2._mutator.getValue(typeID, abstractKey);
|
|
392
426
|
|
|
393
|
-
|
|
427
|
+
if (implementsInterface == null) {
|
|
428
|
+
// unsure if the type implements the interface: data is
|
|
429
|
+
// missing
|
|
430
|
+
_this2._handleMissing();
|
|
431
|
+
} // else: if it does or doesn't implement, we don't need to check or skip anything else
|
|
394
432
|
|
|
395
|
-
if (_implementsInterface == null) {
|
|
396
|
-
// unsure if the type implements the interface: data is
|
|
397
|
-
// missing
|
|
398
|
-
_this2._handleMissing();
|
|
399
|
-
} // else: if it does or doesn't implement, we don't need to check or skip anything else
|
|
400
|
-
|
|
401
|
-
}
|
|
402
433
|
|
|
403
434
|
break;
|
|
404
435
|
|
|
@@ -446,8 +477,12 @@ var DataChecker = /*#__PURE__*/function () {
|
|
|
446
477
|
|
|
447
478
|
if (normalizationRootNode != null) {
|
|
448
479
|
var operation = getOperation(normalizationRootNode);
|
|
480
|
+
var prevVariables = this._variables;
|
|
481
|
+
this._variables = getLocalVariables(this._variables, operation.argumentDefinitions, moduleImport.args);
|
|
449
482
|
|
|
450
483
|
this._traverse(operation, dataID);
|
|
484
|
+
|
|
485
|
+
this._variables = prevVariables;
|
|
451
486
|
} else {
|
|
452
487
|
// If the fragment is not available, we assume that the data cannot have been
|
|
453
488
|
// processed yet and must therefore be missing.
|
|
@@ -515,6 +550,40 @@ var DataChecker = /*#__PURE__*/function () {
|
|
|
515
550
|
}
|
|
516
551
|
};
|
|
517
552
|
|
|
553
|
+
_proto._checkActorChange = function _checkActorChange(field, dataID) {
|
|
554
|
+
var storageKey = getStorageKey(field, this._variables);
|
|
555
|
+
|
|
556
|
+
var record = this._source.get(dataID);
|
|
557
|
+
|
|
558
|
+
var tuple = record != null ? RelayModernRecord.getActorLinkedRecordID(record, storageKey) : record;
|
|
559
|
+
|
|
560
|
+
if (tuple == null) {
|
|
561
|
+
if (tuple === undefined) {
|
|
562
|
+
this._handleMissing();
|
|
563
|
+
}
|
|
564
|
+
} else {
|
|
565
|
+
var _actorIdentifier = tuple[0],
|
|
566
|
+
linkedID = tuple[1];
|
|
567
|
+
var prevSource = this._source;
|
|
568
|
+
var prevMutator = this._mutator;
|
|
569
|
+
var prevRecordSourceProxy = this._recordSourceProxy;
|
|
570
|
+
|
|
571
|
+
var _this$_getMutatorAndR2 = this._getMutatorAndRecordProxyForActor(_actorIdentifier),
|
|
572
|
+
mutator = _this$_getMutatorAndR2[0],
|
|
573
|
+
recordSourceProxy = _this$_getMutatorAndR2[1];
|
|
574
|
+
|
|
575
|
+
this._source = this._getSourceForActor(_actorIdentifier);
|
|
576
|
+
this._mutator = mutator;
|
|
577
|
+
this._recordSourceProxy = recordSourceProxy;
|
|
578
|
+
|
|
579
|
+
this._traverse(field, linkedID);
|
|
580
|
+
|
|
581
|
+
this._source = prevSource;
|
|
582
|
+
this._mutator = prevMutator;
|
|
583
|
+
this._recordSourceProxy = prevRecordSourceProxy;
|
|
584
|
+
}
|
|
585
|
+
};
|
|
586
|
+
|
|
518
587
|
_proto._checkFlightField = function _checkFlightField(field, dataID) {
|
|
519
588
|
var storageKey = getStorageKey(field, this._variables);
|
|
520
589
|
|