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.
|
|
@@ -14,26 +14,30 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
14
14
|
|
|
15
15
|
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
|
|
16
16
|
|
|
17
|
+
var getOperation = require('../util/getOperation');
|
|
18
|
+
|
|
17
19
|
var RelayConcreteNode = require('../util/RelayConcreteNode');
|
|
18
20
|
|
|
19
21
|
var RelayFeatureFlags = require('../util/RelayFeatureFlags');
|
|
20
22
|
|
|
23
|
+
var cloneRelayHandleSourceField = require('./cloneRelayHandleSourceField');
|
|
24
|
+
|
|
25
|
+
var _require = require('./RelayConcreteVariables'),
|
|
26
|
+
getLocalVariables = _require.getLocalVariables;
|
|
27
|
+
|
|
21
28
|
var RelayModernRecord = require('./RelayModernRecord');
|
|
22
29
|
|
|
23
30
|
var RelayStoreReactFlightUtils = require('./RelayStoreReactFlightUtils');
|
|
24
31
|
|
|
25
32
|
var RelayStoreUtils = require('./RelayStoreUtils');
|
|
26
33
|
|
|
27
|
-
var
|
|
28
|
-
|
|
29
|
-
var getOperation = require('../util/getOperation');
|
|
34
|
+
var _require2 = require('./TypeID'),
|
|
35
|
+
generateTypeID = _require2.generateTypeID;
|
|
30
36
|
|
|
31
37
|
var invariant = require('invariant');
|
|
32
38
|
|
|
33
|
-
var
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
var CONDITION = RelayConcreteNode.CONDITION,
|
|
39
|
+
var ACTOR_CHANGE = RelayConcreteNode.ACTOR_CHANGE,
|
|
40
|
+
CONDITION = RelayConcreteNode.CONDITION,
|
|
37
41
|
CLIENT_COMPONENT = RelayConcreteNode.CLIENT_COMPONENT,
|
|
38
42
|
CLIENT_EXTENSION = RelayConcreteNode.CLIENT_EXTENSION,
|
|
39
43
|
DEFER = RelayConcreteNode.DEFER,
|
|
@@ -96,8 +100,7 @@ var RelayReferenceMarker = /*#__PURE__*/function () {
|
|
|
96
100
|
};
|
|
97
101
|
|
|
98
102
|
_proto._getVariableValue = function _getVariableValue(name) {
|
|
99
|
-
!this._variables.hasOwnProperty(name) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayReferenceMarker(): Undefined variable `%s`.', name) : invariant(false) : void 0;
|
|
100
|
-
|
|
103
|
+
!this._variables.hasOwnProperty(name) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayReferenceMarker(): Undefined variable `%s`.', name) : invariant(false) : void 0;
|
|
101
104
|
return this._variables[name];
|
|
102
105
|
};
|
|
103
106
|
|
|
@@ -107,6 +110,12 @@ var RelayReferenceMarker = /*#__PURE__*/function () {
|
|
|
107
110
|
selections.forEach(function (selection) {
|
|
108
111
|
/* eslint-disable no-fallthrough */
|
|
109
112
|
switch (selection.kind) {
|
|
113
|
+
case ACTOR_CHANGE:
|
|
114
|
+
// TODO: T89695151 Support multi-actor record sources in RelayReferenceMarker.js
|
|
115
|
+
_this._traverseLink(selection.linkedField, record);
|
|
116
|
+
|
|
117
|
+
break;
|
|
118
|
+
|
|
110
119
|
case LINKED_FIELD:
|
|
111
120
|
if (selection.plural) {
|
|
112
121
|
_this._traversePluralLink(selection, record);
|
|
@@ -117,7 +126,7 @@ var RelayReferenceMarker = /*#__PURE__*/function () {
|
|
|
117
126
|
break;
|
|
118
127
|
|
|
119
128
|
case CONDITION:
|
|
120
|
-
var conditionValue = _this._getVariableValue(selection.condition);
|
|
129
|
+
var conditionValue = Boolean(_this._getVariableValue(selection.condition));
|
|
121
130
|
|
|
122
131
|
if (conditionValue === selection.passingValue) {
|
|
123
132
|
_this._traverseSelections(selection.selections, record);
|
|
@@ -132,24 +141,25 @@ var RelayReferenceMarker = /*#__PURE__*/function () {
|
|
|
132
141
|
if (typeName != null && typeName === selection.type) {
|
|
133
142
|
_this._traverseSelections(selection.selections, record);
|
|
134
143
|
}
|
|
135
|
-
} else
|
|
144
|
+
} else {
|
|
136
145
|
var _typeName = RelayModernRecord.getType(record);
|
|
137
146
|
|
|
138
147
|
var typeID = generateTypeID(_typeName);
|
|
139
148
|
|
|
140
149
|
_this._references.add(typeID);
|
|
141
150
|
|
|
142
|
-
_this._traverseSelections(selection.selections, record);
|
|
143
|
-
} else {
|
|
144
151
|
_this._traverseSelections(selection.selections, record);
|
|
145
152
|
}
|
|
146
153
|
|
|
147
154
|
break;
|
|
148
|
-
// $FlowFixMe[incompatible-type]
|
|
149
155
|
|
|
150
156
|
case FRAGMENT_SPREAD:
|
|
157
|
+
var prevVariables = _this._variables;
|
|
158
|
+
_this._variables = getLocalVariables(_this._variables, selection.fragment.argumentDefinitions, selection.args);
|
|
159
|
+
|
|
151
160
|
_this._traverseSelections(selection.fragment.selections, record);
|
|
152
161
|
|
|
162
|
+
_this._variables = prevVariables;
|
|
153
163
|
break;
|
|
154
164
|
|
|
155
165
|
case LINKED_HANDLE:
|
|
@@ -184,13 +194,11 @@ var RelayReferenceMarker = /*#__PURE__*/function () {
|
|
|
184
194
|
|
|
185
195
|
case TYPE_DISCRIMINATOR:
|
|
186
196
|
{
|
|
187
|
-
|
|
188
|
-
var _typeName2 = RelayModernRecord.getType(record);
|
|
197
|
+
var _typeName2 = RelayModernRecord.getType(record);
|
|
189
198
|
|
|
190
|
-
|
|
199
|
+
var _typeID = generateTypeID(_typeName2);
|
|
191
200
|
|
|
192
|
-
|
|
193
|
-
}
|
|
201
|
+
_this._references.add(_typeID);
|
|
194
202
|
|
|
195
203
|
break;
|
|
196
204
|
}
|
|
@@ -245,9 +253,13 @@ var RelayReferenceMarker = /*#__PURE__*/function () {
|
|
|
245
253
|
var normalizationRootNode = operationLoader.get(operationReference);
|
|
246
254
|
|
|
247
255
|
if (normalizationRootNode != null) {
|
|
248
|
-
var
|
|
256
|
+
var operation = getOperation(normalizationRootNode);
|
|
257
|
+
var prevVariables = this._variables;
|
|
258
|
+
this._variables = getLocalVariables(this._variables, operation.argumentDefinitions, moduleImport.args);
|
|
259
|
+
|
|
260
|
+
this._traverseSelections(operation.selections, record);
|
|
249
261
|
|
|
250
|
-
this.
|
|
262
|
+
this._variables = prevVariables;
|
|
251
263
|
} // Otherwise, if the operation is not available, we assume that the data
|
|
252
264
|
// cannot have been processed yet and therefore isn't in the store to
|
|
253
265
|
// begin with.
|
|
@@ -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.
|
|
@@ -16,59 +16,67 @@ var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime
|
|
|
16
16
|
|
|
17
17
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
18
18
|
|
|
19
|
+
var _require = require('../multi-actor-environment/ActorUtils'),
|
|
20
|
+
ACTOR_IDENTIFIER_FIELD_NAME = _require.ACTOR_IDENTIFIER_FIELD_NAME,
|
|
21
|
+
getActorIdentifierFromPayload = _require.getActorIdentifierFromPayload;
|
|
22
|
+
|
|
23
|
+
var _require2 = require('../util/RelayConcreteNode'),
|
|
24
|
+
ACTOR_CHANGE = _require2.ACTOR_CHANGE,
|
|
25
|
+
CLIENT_COMPONENT = _require2.CLIENT_COMPONENT,
|
|
26
|
+
CLIENT_EXTENSION = _require2.CLIENT_EXTENSION,
|
|
27
|
+
CONDITION = _require2.CONDITION,
|
|
28
|
+
DEFER = _require2.DEFER,
|
|
29
|
+
FLIGHT_FIELD = _require2.FLIGHT_FIELD,
|
|
30
|
+
FRAGMENT_SPREAD = _require2.FRAGMENT_SPREAD,
|
|
31
|
+
INLINE_FRAGMENT = _require2.INLINE_FRAGMENT,
|
|
32
|
+
LINKED_FIELD = _require2.LINKED_FIELD,
|
|
33
|
+
LINKED_HANDLE = _require2.LINKED_HANDLE,
|
|
34
|
+
MODULE_IMPORT = _require2.MODULE_IMPORT,
|
|
35
|
+
SCALAR_FIELD = _require2.SCALAR_FIELD,
|
|
36
|
+
SCALAR_HANDLE = _require2.SCALAR_HANDLE,
|
|
37
|
+
STREAM = _require2.STREAM,
|
|
38
|
+
TYPE_DISCRIMINATOR = _require2.TYPE_DISCRIMINATOR;
|
|
39
|
+
|
|
19
40
|
var RelayFeatureFlags = require('../util/RelayFeatureFlags');
|
|
20
41
|
|
|
42
|
+
var _require3 = require('./ClientID'),
|
|
43
|
+
generateClientID = _require3.generateClientID,
|
|
44
|
+
isClientID = _require3.isClientID;
|
|
45
|
+
|
|
46
|
+
var _require4 = require('./RelayConcreteVariables'),
|
|
47
|
+
getLocalVariables = _require4.getLocalVariables;
|
|
48
|
+
|
|
21
49
|
var RelayModernRecord = require('./RelayModernRecord');
|
|
22
50
|
|
|
51
|
+
var _require5 = require('./RelayModernSelector'),
|
|
52
|
+
createNormalizationSelector = _require5.createNormalizationSelector;
|
|
53
|
+
|
|
54
|
+
var _require6 = require('./RelayStoreReactFlightUtils'),
|
|
55
|
+
REACT_FLIGHT_EXECUTABLE_DEFINITIONS_STORAGE_KEY = _require6.REACT_FLIGHT_EXECUTABLE_DEFINITIONS_STORAGE_KEY,
|
|
56
|
+
REACT_FLIGHT_TREE_STORAGE_KEY = _require6.REACT_FLIGHT_TREE_STORAGE_KEY,
|
|
57
|
+
REACT_FLIGHT_TYPE_NAME = _require6.REACT_FLIGHT_TYPE_NAME,
|
|
58
|
+
refineToReactFlightPayloadData = _require6.refineToReactFlightPayloadData;
|
|
59
|
+
|
|
60
|
+
var _require7 = require('./RelayStoreUtils'),
|
|
61
|
+
ROOT_ID = _require7.ROOT_ID,
|
|
62
|
+
ROOT_TYPE = _require7.ROOT_TYPE,
|
|
63
|
+
TYPENAME_KEY = _require7.TYPENAME_KEY,
|
|
64
|
+
getArgumentValues = _require7.getArgumentValues,
|
|
65
|
+
getHandleStorageKey = _require7.getHandleStorageKey,
|
|
66
|
+
getModuleComponentKey = _require7.getModuleComponentKey,
|
|
67
|
+
getModuleOperationKey = _require7.getModuleOperationKey,
|
|
68
|
+
getStorageKey = _require7.getStorageKey;
|
|
69
|
+
|
|
70
|
+
var _require8 = require('./TypeID'),
|
|
71
|
+
TYPE_SCHEMA_TYPE = _require8.TYPE_SCHEMA_TYPE,
|
|
72
|
+
generateTypeID = _require8.generateTypeID;
|
|
73
|
+
|
|
23
74
|
var areEqual = require("fbjs/lib/areEqual");
|
|
24
75
|
|
|
25
76
|
var invariant = require('invariant');
|
|
26
77
|
|
|
27
78
|
var warning = require("fbjs/lib/warning");
|
|
28
79
|
|
|
29
|
-
var _require = require('../util/RelayConcreteNode'),
|
|
30
|
-
CONDITION = _require.CONDITION,
|
|
31
|
-
CLIENT_COMPONENT = _require.CLIENT_COMPONENT,
|
|
32
|
-
CLIENT_EXTENSION = _require.CLIENT_EXTENSION,
|
|
33
|
-
DEFER = _require.DEFER,
|
|
34
|
-
FLIGHT_FIELD = _require.FLIGHT_FIELD,
|
|
35
|
-
FRAGMENT_SPREAD = _require.FRAGMENT_SPREAD,
|
|
36
|
-
INLINE_FRAGMENT = _require.INLINE_FRAGMENT,
|
|
37
|
-
LINKED_FIELD = _require.LINKED_FIELD,
|
|
38
|
-
LINKED_HANDLE = _require.LINKED_HANDLE,
|
|
39
|
-
MODULE_IMPORT = _require.MODULE_IMPORT,
|
|
40
|
-
SCALAR_FIELD = _require.SCALAR_FIELD,
|
|
41
|
-
SCALAR_HANDLE = _require.SCALAR_HANDLE,
|
|
42
|
-
STREAM = _require.STREAM,
|
|
43
|
-
TYPE_DISCRIMINATOR = _require.TYPE_DISCRIMINATOR;
|
|
44
|
-
|
|
45
|
-
var _require2 = require('./ClientID'),
|
|
46
|
-
generateClientID = _require2.generateClientID,
|
|
47
|
-
isClientID = _require2.isClientID;
|
|
48
|
-
|
|
49
|
-
var _require3 = require('./RelayModernSelector'),
|
|
50
|
-
createNormalizationSelector = _require3.createNormalizationSelector;
|
|
51
|
-
|
|
52
|
-
var _require4 = require('./RelayStoreReactFlightUtils'),
|
|
53
|
-
refineToReactFlightPayloadData = _require4.refineToReactFlightPayloadData,
|
|
54
|
-
REACT_FLIGHT_EXECUTABLE_DEFINITIONS_STORAGE_KEY = _require4.REACT_FLIGHT_EXECUTABLE_DEFINITIONS_STORAGE_KEY,
|
|
55
|
-
REACT_FLIGHT_TREE_STORAGE_KEY = _require4.REACT_FLIGHT_TREE_STORAGE_KEY,
|
|
56
|
-
REACT_FLIGHT_TYPE_NAME = _require4.REACT_FLIGHT_TYPE_NAME;
|
|
57
|
-
|
|
58
|
-
var _require5 = require('./RelayStoreUtils'),
|
|
59
|
-
getArgumentValues = _require5.getArgumentValues,
|
|
60
|
-
getHandleStorageKey = _require5.getHandleStorageKey,
|
|
61
|
-
getModuleComponentKey = _require5.getModuleComponentKey,
|
|
62
|
-
getModuleOperationKey = _require5.getModuleOperationKey,
|
|
63
|
-
getStorageKey = _require5.getStorageKey,
|
|
64
|
-
TYPENAME_KEY = _require5.TYPENAME_KEY,
|
|
65
|
-
ROOT_ID = _require5.ROOT_ID,
|
|
66
|
-
ROOT_TYPE = _require5.ROOT_TYPE;
|
|
67
|
-
|
|
68
|
-
var _require6 = require('./TypeID'),
|
|
69
|
-
generateTypeID = _require6.generateTypeID,
|
|
70
|
-
TYPE_SCHEMA_TYPE = _require6.TYPE_SCHEMA_TYPE;
|
|
71
|
-
|
|
72
80
|
/**
|
|
73
81
|
* Normalizes the results of a query and standard GraphQL response, writing the
|
|
74
82
|
* normalized records/fields into the given MutableRecordSource.
|
|
@@ -89,13 +97,14 @@ function normalize(recordSource, selector, response, options) {
|
|
|
89
97
|
|
|
90
98
|
var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
91
99
|
function RelayResponseNormalizer(recordSource, variables, options) {
|
|
100
|
+
this._actorIdentifier = options.actorIdentifier;
|
|
92
101
|
this._getDataId = options.getDataID;
|
|
93
102
|
this._handleFieldPayloads = [];
|
|
94
103
|
this._treatMissingFieldsAsNull = options.treatMissingFieldsAsNull;
|
|
95
104
|
this._incrementalPlaceholders = [];
|
|
96
105
|
this._isClientExtension = false;
|
|
97
106
|
this._isUnmatchedAbstractType = false;
|
|
98
|
-
this.
|
|
107
|
+
this._followupPayloads = [];
|
|
99
108
|
this._path = options.path ? (0, _toConsumableArray2["default"])(options.path) : [];
|
|
100
109
|
this._recordSource = recordSource;
|
|
101
110
|
this._variables = variables;
|
|
@@ -117,15 +126,14 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
117
126
|
errors: null,
|
|
118
127
|
fieldPayloads: this._handleFieldPayloads,
|
|
119
128
|
incrementalPlaceholders: this._incrementalPlaceholders,
|
|
120
|
-
|
|
129
|
+
followupPayloads: this._followupPayloads,
|
|
121
130
|
source: this._recordSource,
|
|
122
131
|
isFinal: false
|
|
123
132
|
};
|
|
124
133
|
};
|
|
125
134
|
|
|
126
135
|
_proto._getVariableValue = function _getVariableValue(name) {
|
|
127
|
-
!this._variables.hasOwnProperty(name) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayResponseNormalizer(): Undefined variable `%s`.', name) : invariant(false) : void 0;
|
|
128
|
-
|
|
136
|
+
!this._variables.hasOwnProperty(name) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayResponseNormalizer(): Undefined variable `%s`.', name) : invariant(false) : void 0;
|
|
129
137
|
return this._variables[name];
|
|
130
138
|
};
|
|
131
139
|
|
|
@@ -147,7 +155,7 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
147
155
|
break;
|
|
148
156
|
|
|
149
157
|
case CONDITION:
|
|
150
|
-
var conditionValue = this._getVariableValue(selection.condition);
|
|
158
|
+
var conditionValue = Boolean(this._getVariableValue(selection.condition));
|
|
151
159
|
|
|
152
160
|
if (conditionValue === selection.passingValue) {
|
|
153
161
|
this._traverseSelections(selection, record, data);
|
|
@@ -157,8 +165,12 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
157
165
|
|
|
158
166
|
case FRAGMENT_SPREAD:
|
|
159
167
|
{
|
|
168
|
+
var prevVariables = this._variables;
|
|
169
|
+
this._variables = getLocalVariables(this._variables, selection.fragment.argumentDefinitions, selection.args);
|
|
170
|
+
|
|
160
171
|
this._traverseSelections(selection.fragment, record, data);
|
|
161
172
|
|
|
173
|
+
this._variables = prevVariables;
|
|
162
174
|
break;
|
|
163
175
|
}
|
|
164
176
|
|
|
@@ -172,7 +184,7 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
172
184
|
if (_typeName === selection.type) {
|
|
173
185
|
this._traverseSelections(selection, record, data);
|
|
174
186
|
}
|
|
175
|
-
} else
|
|
187
|
+
} else {
|
|
176
188
|
var implementsInterface = data.hasOwnProperty(abstractKey);
|
|
177
189
|
|
|
178
190
|
var _typeName2 = RelayModernRecord.getType(record);
|
|
@@ -192,18 +204,6 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
192
204
|
if (implementsInterface) {
|
|
193
205
|
this._traverseSelections(selection, record, data);
|
|
194
206
|
}
|
|
195
|
-
} else {
|
|
196
|
-
// legacy behavior for abstract refinements: always normalize even
|
|
197
|
-
// if the type doesn't conform, but track if the type matches or not
|
|
198
|
-
// for determining whether response fields are expected to be present
|
|
199
|
-
var _implementsInterface = data.hasOwnProperty(abstractKey);
|
|
200
|
-
|
|
201
|
-
var parentIsUnmatchedAbstractType = this._isUnmatchedAbstractType;
|
|
202
|
-
this._isUnmatchedAbstractType = this._isUnmatchedAbstractType || !_implementsInterface;
|
|
203
|
-
|
|
204
|
-
this._traverseSelections(selection, record, data);
|
|
205
|
-
|
|
206
|
-
this._isUnmatchedAbstractType = parentIsUnmatchedAbstractType;
|
|
207
207
|
}
|
|
208
208
|
|
|
209
209
|
break;
|
|
@@ -211,26 +211,23 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
211
211
|
|
|
212
212
|
case TYPE_DISCRIMINATOR:
|
|
213
213
|
{
|
|
214
|
-
|
|
215
|
-
var _abstractKey = selection.abstractKey;
|
|
214
|
+
var _abstractKey = selection.abstractKey;
|
|
216
215
|
|
|
217
|
-
|
|
216
|
+
var _implementsInterface = data.hasOwnProperty(_abstractKey);
|
|
218
217
|
|
|
219
|
-
|
|
218
|
+
var _typeName3 = RelayModernRecord.getType(record);
|
|
220
219
|
|
|
221
|
-
|
|
220
|
+
var _typeID = generateTypeID(_typeName3);
|
|
222
221
|
|
|
223
|
-
|
|
222
|
+
var _typeRecord = this._recordSource.get(_typeID);
|
|
224
223
|
|
|
225
|
-
|
|
226
|
-
|
|
224
|
+
if (_typeRecord == null) {
|
|
225
|
+
_typeRecord = RelayModernRecord.create(_typeID, TYPE_SCHEMA_TYPE);
|
|
227
226
|
|
|
228
|
-
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
RelayModernRecord.setValue(_typeRecord, _abstractKey, _implementsInterface2);
|
|
227
|
+
this._recordSource.set(_typeID, _typeRecord);
|
|
232
228
|
}
|
|
233
229
|
|
|
230
|
+
RelayModernRecord.setValue(_typeRecord, _abstractKey, _implementsInterface);
|
|
234
231
|
break;
|
|
235
232
|
}
|
|
236
233
|
|
|
@@ -241,12 +238,17 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
241
238
|
var handleKey = getHandleStorageKey(selection, this._variables);
|
|
242
239
|
|
|
243
240
|
this._handleFieldPayloads.push({
|
|
241
|
+
/* $FlowFixMe[class-object-subtyping] added when improving typing
|
|
242
|
+
* for this parameters */
|
|
244
243
|
args: args,
|
|
245
244
|
dataID: RelayModernRecord.getDataID(record),
|
|
246
245
|
fieldKey: fieldKey,
|
|
247
246
|
handle: selection.handle,
|
|
248
247
|
handleKey: handleKey,
|
|
249
|
-
handleArgs: selection.handleArgs ?
|
|
248
|
+
handleArgs: selection.handleArgs ?
|
|
249
|
+
/* $FlowFixMe[class-object-subtyping] added when improving typing
|
|
250
|
+
* for this parameters */
|
|
251
|
+
getArgumentValues(selection.handleArgs, this._variables) : {}
|
|
250
252
|
});
|
|
251
253
|
|
|
252
254
|
break;
|
|
@@ -293,6 +295,11 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
293
295
|
|
|
294
296
|
break;
|
|
295
297
|
|
|
298
|
+
case ACTOR_CHANGE:
|
|
299
|
+
this._normalizeActorChange(node, selection, record, data);
|
|
300
|
+
|
|
301
|
+
break;
|
|
302
|
+
|
|
296
303
|
default:
|
|
297
304
|
selection;
|
|
298
305
|
!false ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayResponseNormalizer(): Unexpected ast kind `%s`.', selection.kind) : invariant(false) : void 0;
|
|
@@ -320,7 +327,8 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
320
327
|
label: defer.label,
|
|
321
328
|
path: (0, _toConsumableArray2["default"])(this._path),
|
|
322
329
|
selector: createNormalizationSelector(defer, RelayModernRecord.getDataID(record), this._variables),
|
|
323
|
-
typeName: RelayModernRecord.getType(record)
|
|
330
|
+
typeName: RelayModernRecord.getType(record),
|
|
331
|
+
actorIdentifier: this._actorIdentifier
|
|
324
332
|
});
|
|
325
333
|
}
|
|
326
334
|
};
|
|
@@ -346,7 +354,8 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
346
354
|
path: (0, _toConsumableArray2["default"])(this._path),
|
|
347
355
|
parentID: RelayModernRecord.getDataID(record),
|
|
348
356
|
node: stream,
|
|
349
|
-
variables: this._variables
|
|
357
|
+
variables: this._variables,
|
|
358
|
+
actorIdentifier: this._actorIdentifier
|
|
350
359
|
});
|
|
351
360
|
}
|
|
352
361
|
};
|
|
@@ -362,13 +371,16 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
362
371
|
RelayModernRecord.setValue(record, operationKey, operationReference !== null && operationReference !== void 0 ? operationReference : null);
|
|
363
372
|
|
|
364
373
|
if (operationReference != null) {
|
|
365
|
-
this.
|
|
374
|
+
this._followupPayloads.push({
|
|
375
|
+
kind: 'ModuleImportPayload',
|
|
376
|
+
args: moduleImport.args,
|
|
366
377
|
data: data,
|
|
367
378
|
dataID: RelayModernRecord.getDataID(record),
|
|
368
379
|
operationReference: operationReference,
|
|
369
380
|
path: (0, _toConsumableArray2["default"])(this._path),
|
|
370
381
|
typeName: typeName,
|
|
371
|
-
variables: this._variables
|
|
382
|
+
variables: this._variables,
|
|
383
|
+
actorIdentifier: this._actorIdentifier
|
|
372
384
|
});
|
|
373
385
|
}
|
|
374
386
|
};
|
|
@@ -409,7 +421,11 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
409
421
|
|
|
410
422
|
if (process.env.NODE_ENV !== "production") {
|
|
411
423
|
if (selection.kind === SCALAR_FIELD) {
|
|
412
|
-
this._validateConflictingFieldsWithIdenticalId(record, storageKey,
|
|
424
|
+
this._validateConflictingFieldsWithIdenticalId(record, storageKey, // When using `treatMissingFieldsAsNull` the conflicting validation raises a false positive
|
|
425
|
+
// because the value is set using `null` but validated using `fieldValue` which at this point
|
|
426
|
+
// will be `undefined`.
|
|
427
|
+
// Setting this to `null` matches the value that we actually set to the `fieldValue`.
|
|
428
|
+
null);
|
|
413
429
|
}
|
|
414
430
|
}
|
|
415
431
|
|
|
@@ -439,6 +455,64 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
439
455
|
}
|
|
440
456
|
};
|
|
441
457
|
|
|
458
|
+
_proto._normalizeActorChange = function _normalizeActorChange(parent, selection, record, data) {
|
|
459
|
+
var _field$concreteType;
|
|
460
|
+
|
|
461
|
+
var field = selection.linkedField;
|
|
462
|
+
!(typeof data === 'object' && data) ? process.env.NODE_ENV !== "production" ? invariant(false, '_normalizeActorChange(): Expected data for field `%s` to be an object.', field.name) : invariant(false) : void 0;
|
|
463
|
+
var responseKey = field.alias || field.name;
|
|
464
|
+
var storageKey = getStorageKey(field, this._variables);
|
|
465
|
+
var fieldValue = data[responseKey];
|
|
466
|
+
|
|
467
|
+
if (fieldValue == null) {
|
|
468
|
+
if (fieldValue === undefined) {
|
|
469
|
+
var isOptionalField = this._isClientExtension || this._isUnmatchedAbstractType;
|
|
470
|
+
|
|
471
|
+
if (isOptionalField) {
|
|
472
|
+
return;
|
|
473
|
+
} else if (!this._treatMissingFieldsAsNull) {
|
|
474
|
+
if (process.env.NODE_ENV !== "production") {
|
|
475
|
+
process.env.NODE_ENV !== "production" ? warning(false, 'RelayResponseNormalizer: Payload did not contain a value ' + 'for field `%s: %s`. Check that you are parsing with the same ' + 'query that was used to fetch the payload.', responseKey, storageKey) : void 0;
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
return;
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
RelayModernRecord.setValue(record, storageKey, null);
|
|
483
|
+
return;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
var actorIdentifier = getActorIdentifierFromPayload(fieldValue);
|
|
487
|
+
|
|
488
|
+
if (actorIdentifier == null) {
|
|
489
|
+
if (process.env.NODE_ENV !== "production") {
|
|
490
|
+
process.env.NODE_ENV !== "production" ? warning(false, 'RelayResponseNormalizer: Payload did not contain a value ' + 'for field `%s`. Check that you are parsing with the same ' + 'query that was used to fetch the payload. Payload is `%s`.', ACTOR_IDENTIFIER_FIELD_NAME, JSON.stringify(fieldValue, null, 2)) : void 0;
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
RelayModernRecord.setValue(record, storageKey, null);
|
|
494
|
+
return;
|
|
495
|
+
} // $FlowFixMe[incompatible-call]
|
|
496
|
+
|
|
497
|
+
|
|
498
|
+
var typeName = (_field$concreteType = field.concreteType) !== null && _field$concreteType !== void 0 ? _field$concreteType : this._getRecordType(fieldValue);
|
|
499
|
+
var nextID = this._getDataId( // $FlowFixMe[incompatible-call]
|
|
500
|
+
fieldValue, typeName) || RelayModernRecord.getLinkedRecordID(record, storageKey) || generateClientID(RelayModernRecord.getDataID(record), storageKey);
|
|
501
|
+
!(typeof nextID === 'string') ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayResponseNormalizer: Expected id on field `%s` to be a string.', storageKey) : invariant(false) : void 0;
|
|
502
|
+
RelayModernRecord.setActorLinkedRecordID(record, storageKey, actorIdentifier, nextID);
|
|
503
|
+
|
|
504
|
+
this._followupPayloads.push({
|
|
505
|
+
kind: 'ActorPayload',
|
|
506
|
+
data: fieldValue,
|
|
507
|
+
dataID: nextID,
|
|
508
|
+
path: [].concat((0, _toConsumableArray2["default"])(this._path), [responseKey]),
|
|
509
|
+
typeName: typeName,
|
|
510
|
+
variables: this._variables,
|
|
511
|
+
node: field,
|
|
512
|
+
actorIdentifier: actorIdentifier
|
|
513
|
+
});
|
|
514
|
+
};
|
|
515
|
+
|
|
442
516
|
_proto._normalizeFlightField = function _normalizeFlightField(parent, selection, record, data) {
|
|
443
517
|
var responseKey = selection.alias || selection.name;
|
|
444
518
|
var storageKey = getStorageKey(selection, this._variables);
|
|
@@ -457,14 +531,10 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
457
531
|
// Field not expected to exist regardless of whether the server is pruning null
|
|
458
532
|
// fields or not.
|
|
459
533
|
return;
|
|
460
|
-
} else
|
|
534
|
+
} else {
|
|
461
535
|
// Not optional and the server is not pruning null fields: field is expected
|
|
462
536
|
// to be present
|
|
463
|
-
|
|
464
|
-
process.env.NODE_ENV !== "production" ? warning(false, 'RelayResponseNormalizer: Payload did not contain a value ' + 'for field `%s: %s`. Check that you are parsing with the same ' + 'query that was used to fetch the payload.', responseKey, storageKey) : void 0;
|
|
465
|
-
}
|
|
466
|
-
|
|
467
|
-
return;
|
|
537
|
+
!this._treatMissingFieldsAsNull ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayResponseNormalizer: Payload did not contain a value for ' + 'field `%s: %s`. Check that you are parsing with the same ' + 'query that was used to fetch the payload.', responseKey, storageKey) : invariant(false) : void 0;
|
|
468
538
|
}
|
|
469
539
|
}
|
|
470
540
|
|
|
@@ -525,13 +595,16 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
525
595
|
var query = _step.value;
|
|
526
596
|
|
|
527
597
|
if (query.response.data != null) {
|
|
528
|
-
this.
|
|
598
|
+
this._followupPayloads.push({
|
|
599
|
+
kind: 'ModuleImportPayload',
|
|
600
|
+
args: null,
|
|
529
601
|
data: query.response.data,
|
|
530
602
|
dataID: ROOT_ID,
|
|
531
603
|
operationReference: query.module,
|
|
532
604
|
path: [],
|
|
533
605
|
typeName: ROOT_TYPE,
|
|
534
|
-
variables: query.variables
|
|
606
|
+
variables: query.variables,
|
|
607
|
+
actorIdentifier: this._actorIdentifier
|
|
535
608
|
});
|
|
536
609
|
}
|
|
537
610
|
|
|
@@ -554,13 +627,16 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
554
627
|
var fragment = _step2.value;
|
|
555
628
|
|
|
556
629
|
if (fragment.response.data != null) {
|
|
557
|
-
this.
|
|
630
|
+
this._followupPayloads.push({
|
|
631
|
+
kind: 'ModuleImportPayload',
|
|
632
|
+
args: null,
|
|
558
633
|
data: fragment.response.data,
|
|
559
634
|
dataID: fragment.__id,
|
|
560
635
|
operationReference: fragment.module,
|
|
561
636
|
path: [],
|
|
562
637
|
typeName: fragment.__typename,
|
|
563
|
-
variables: fragment.variables
|
|
638
|
+
variables: fragment.variables,
|
|
639
|
+
actorIdentifier: this._actorIdentifier
|
|
564
640
|
});
|
|
565
641
|
}
|
|
566
642
|
|
|
@@ -580,12 +656,12 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
580
656
|
};
|
|
581
657
|
|
|
582
658
|
_proto._normalizeLink = function _normalizeLink(field, record, storageKey, fieldValue) {
|
|
583
|
-
var _field$
|
|
659
|
+
var _field$concreteType2;
|
|
584
660
|
|
|
585
661
|
!(typeof fieldValue === 'object' && fieldValue) ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayResponseNormalizer: Expected data for field `%s` to be an object.', storageKey) : invariant(false) : void 0;
|
|
586
662
|
var nextID = this._getDataId( // $FlowFixMe[incompatible-variance]
|
|
587
663
|
fieldValue, // $FlowFixMe[incompatible-variance]
|
|
588
|
-
(_field$
|
|
664
|
+
(_field$concreteType2 = field.concreteType) !== null && _field$concreteType2 !== void 0 ? _field$concreteType2 : this._getRecordType(fieldValue)) || // Reuse previously generated client IDs
|
|
589
665
|
RelayModernRecord.getLinkedRecordID(record, storageKey) || generateClientID(RelayModernRecord.getDataID(record), storageKey);
|
|
590
666
|
!(typeof nextID === 'string') ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayResponseNormalizer: Expected id on field `%s` to be a string.', storageKey) : invariant(false) : void 0;
|
|
591
667
|
|
|
@@ -619,7 +695,7 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
619
695
|
var prevIDs = RelayModernRecord.getLinkedRecordIDs(record, storageKey);
|
|
620
696
|
var nextIDs = [];
|
|
621
697
|
fieldValue.forEach(function (item, nextIndex) {
|
|
622
|
-
var _field$
|
|
698
|
+
var _field$concreteType3;
|
|
623
699
|
|
|
624
700
|
// validate response data
|
|
625
701
|
if (item == null) {
|
|
@@ -632,7 +708,7 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
632
708
|
!(typeof item === 'object') ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayResponseNormalizer: Expected elements for field `%s` to be ' + 'objects.', storageKey) : invariant(false) : void 0;
|
|
633
709
|
var nextID = _this._getDataId( // $FlowFixMe[incompatible-variance]
|
|
634
710
|
item, // $FlowFixMe[incompatible-variance]
|
|
635
|
-
(_field$
|
|
711
|
+
(_field$concreteType3 = field.concreteType) !== null && _field$concreteType3 !== void 0 ? _field$concreteType3 : _this._getRecordType(item)) || prevIDs && prevIDs[nextIndex] || // Reuse previously generated client IDs:
|
|
636
712
|
generateClientID(RelayModernRecord.getDataID(record), storageKey, nextIndex);
|
|
637
713
|
!(typeof nextID === 'string') ? process.env.NODE_ENV !== "production" ? invariant(false, 'RelayResponseNormalizer: Expected id of elements of field `%s` to ' + 'be strings.', storageKey) : invariant(false) : void 0;
|
|
638
714
|
nextIDs.push(nextID);
|
|
@@ -671,9 +747,9 @@ var RelayResponseNormalizer = /*#__PURE__*/function () {
|
|
|
671
747
|
;
|
|
672
748
|
|
|
673
749
|
_proto._validateRecordType = function _validateRecordType(record, field, payload) {
|
|
674
|
-
var _field$
|
|
750
|
+
var _field$concreteType4;
|
|
675
751
|
|
|
676
|
-
var typeName = (_field$
|
|
752
|
+
var typeName = (_field$concreteType4 = field.concreteType) !== null && _field$concreteType4 !== void 0 ? _field$concreteType4 : this._getRecordType(payload);
|
|
677
753
|
var dataID = RelayModernRecord.getDataID(record);
|
|
678
754
|
process.env.NODE_ENV !== "production" ? warning(isClientID(dataID) && dataID !== ROOT_ID || RelayModernRecord.getType(record) === typeName, 'RelayResponseNormalizer: Invalid record `%s`. Expected %s to be ' + 'consistent, but the record was assigned conflicting types `%s` ' + 'and `%s`. The GraphQL server likely violated the globally unique ' + 'id requirement by returning the same id for different objects.', dataID, TYPENAME_KEY, RelayModernRecord.getType(record), typeName) : void 0;
|
|
679
755
|
}
|
|
@@ -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.
|
|
@@ -10,13 +10,13 @@
|
|
|
10
10
|
// flowlint ambiguous-object-type:error
|
|
11
11
|
'use strict';
|
|
12
12
|
|
|
13
|
-
var invariant = require('invariant');
|
|
14
|
-
|
|
15
13
|
var _require = require('./RelayModernRecord'),
|
|
16
14
|
getType = _require.getType;
|
|
17
15
|
|
|
18
|
-
// Reachable (client) executable definitions encountered while server component
|
|
16
|
+
var invariant = require('invariant'); // Reachable (client) executable definitions encountered while server component
|
|
19
17
|
// rendering
|
|
18
|
+
|
|
19
|
+
|
|
20
20
|
var REACT_FLIGHT_EXECUTABLE_DEFINITIONS_STORAGE_KEY = 'executableDefinitions';
|
|
21
21
|
var REACT_FLIGHT_TREE_STORAGE_KEY = 'tree';
|
|
22
22
|
var REACT_FLIGHT_TYPE_NAME = 'ReactFlightComponent';
|
|
@@ -31,13 +31,7 @@ function refineToReactFlightPayloadData(payload) {
|
|
|
31
31
|
|
|
32
32
|
function getReactFlightClientResponse(record) {
|
|
33
33
|
!(getType(record) === REACT_FLIGHT_TYPE_NAME) ? process.env.NODE_ENV !== "production" ? invariant(false, 'getReactFlightClientResponse(): Expected a ReactFlightComponentRecord, ' + 'got %s.', record) : invariant(false) : void 0;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
if (response != null) {
|
|
37
|
-
return response;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
return null;
|
|
34
|
+
return record[REACT_FLIGHT_TREE_STORAGE_KEY];
|
|
41
35
|
}
|
|
42
36
|
|
|
43
37
|
module.exports = {
|